From 21247fb642afe7e07c75022807ad5d12ee6fbc39 Mon Sep 17 00:00:00 2001 From: iacore <74560659+iacore@users.noreply.github.com> Date: Mon, 9 Oct 2023 23:40:17 +0000 Subject: [PATCH 001/245] cleanup: remove TargetingDoll-related code (#20866) --- .gitignore | 1 + Content.Client/CombatMode/CombatModeSystem.cs | 12 ----- Content.Client/Stylesheets/StyleNano.cs | 24 ---------- .../Targeting/UI/TargetingDoll.xaml | 8 ---- .../Targeting/UI/TargetingDoll.xaml.cs | 44 ------------------- .../CombatMode/CombatModeComponent.cs | 4 -- .../Events/CombatModeSystemMessages.cs | 19 -------- .../CombatMode/SharedCombatModeSystem.cs | 10 ----- Content.Shared/Targeting/TargetingZone.cs | 26 ----------- 9 files changed, 1 insertion(+), 147 deletions(-) delete mode 100644 Content.Client/Targeting/UI/TargetingDoll.xaml delete mode 100644 Content.Client/Targeting/UI/TargetingDoll.xaml.cs delete mode 100644 Content.Shared/CombatMode/Events/CombatModeSystemMessages.cs delete mode 100644 Content.Shared/Targeting/TargetingZone.cs diff --git a/.gitignore b/.gitignore index 42c93e1fc35603..2dd5912047c6ee 100644 --- a/.gitignore +++ b/.gitignore @@ -162,6 +162,7 @@ PublishScripts/ # NuGet v3's project.json files produces more ignoreable files *.nuget.props *.nuget.targets +.nuget/ # Microsoft Azure Build Output csx/ diff --git a/Content.Client/CombatMode/CombatModeSystem.cs b/Content.Client/CombatMode/CombatModeSystem.cs index 9fccfd173e8ea6..69f149c310a95b 100644 --- a/Content.Client/CombatMode/CombatModeSystem.cs +++ b/Content.Client/CombatMode/CombatModeSystem.cs @@ -1,7 +1,6 @@ using Content.Client.Hands.Systems; using Content.Shared.CCVar; using Content.Shared.CombatMode; -using Content.Shared.Targeting; using Robust.Client.Graphics; using Robust.Client.Input; using Robust.Client.Player; @@ -44,11 +43,6 @@ public override void Shutdown() base.Shutdown(); } - private void OnTargetingZoneChanged(TargetingZone obj) - { - EntityManager.RaisePredictiveEvent(new CombatModeSystemMessages.SetTargetZoneMessage(obj)); - } - public bool IsInCombatMode() { var entity = _playerManager.LocalPlayer?.ControlledEntity; @@ -65,12 +59,6 @@ public override void SetInCombatMode(EntityUid entity, bool value, CombatModeCom UpdateHud(entity); } - public override void SetActiveZone(EntityUid entity, TargetingZone zone, CombatModeComponent? component = null) - { - base.SetActiveZone(entity, zone, component); - UpdateHud(entity); - } - private void UpdateHud(EntityUid entity) { if (entity != _playerManager.LocalPlayer?.ControlledEntity || !Timing.IsFirstTimePredicted) diff --git a/Content.Client/Stylesheets/StyleNano.cs b/Content.Client/Stylesheets/StyleNano.cs index a61eef97b8cc3f..2ef5a63ac7311b 100644 --- a/Content.Client/Stylesheets/StyleNano.cs +++ b/Content.Client/Stylesheets/StyleNano.cs @@ -4,7 +4,6 @@ using Content.Client.Examine; using Content.Client.PDA; using Content.Client.Resources; -using Content.Client.Targeting.UI; using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Controls.FancyTree; using Content.Client.Verbs.UI; @@ -1148,29 +1147,6 @@ public StyleNano(IResourceCache resCache) : base(resCache) new StyleProperty(Label.StylePropertyFont, notoSansDisplayBold14), }), - // Targeting doll - - new StyleRule( - new SelectorElement(typeof(TextureButton), new[] {TargetingDoll.StyleClassTargetDollZone}, null, - new[] {TextureButton.StylePseudoClassNormal}), new[] - { - new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorDefault), - }), - - new StyleRule( - new SelectorElement(typeof(TextureButton), new[] {TargetingDoll.StyleClassTargetDollZone}, null, - new[] {TextureButton.StylePseudoClassHover}), new[] - { - new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorHovered), - }), - - new StyleRule( - new SelectorElement(typeof(TextureButton), new[] {TargetingDoll.StyleClassTargetDollZone}, null, - new[] {TextureButton.StylePseudoClassPressed}), new[] - { - new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorPressed), - }), - // NanoHeading new StyleRule( diff --git a/Content.Client/Targeting/UI/TargetingDoll.xaml b/Content.Client/Targeting/UI/TargetingDoll.xaml deleted file mode 100644 index f50ddfe448b51d..00000000000000 --- a/Content.Client/Targeting/UI/TargetingDoll.xaml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/Content.Client/Targeting/UI/TargetingDoll.xaml.cs b/Content.Client/Targeting/UI/TargetingDoll.xaml.cs deleted file mode 100644 index 5425e6b6a4877e..00000000000000 --- a/Content.Client/Targeting/UI/TargetingDoll.xaml.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Content.Shared.Targeting; -using Robust.Client.AutoGenerated; -using Robust.Client.UserInterface.Controls; -using Robust.Client.UserInterface.XAML; - -namespace Content.Client.Targeting.UI; - -[GenerateTypedNameReferences] -public sealed partial class TargetingDoll : BoxContainer -{ - public static readonly string StyleClassTargetDollZone = "target-doll-zone"; - - - private TargetingZone _activeZone = TargetingZone.Middle; - - public event Action? OnZoneChanged; - public TargetingDoll() - { - RobustXamlLoader.Load(this); - } - - public TargetingZone ActiveZone - { - get => _activeZone; - set - { - if (_activeZone == value) - { - return; - } - - _activeZone = value; - OnZoneChanged?.Invoke(value); - - UpdateButtons(); - } - } - private void UpdateButtons() - { - ButtonHigh.Pressed = _activeZone == TargetingZone.High; - ButtonMedium.Pressed = _activeZone == TargetingZone.Middle; - ButtonLow.Pressed = _activeZone == TargetingZone.Low; - } -} diff --git a/Content.Shared/CombatMode/CombatModeComponent.cs b/Content.Shared/CombatMode/CombatModeComponent.cs index 6696f8af806d6b..124a682d5c762e 100644 --- a/Content.Shared/CombatMode/CombatModeComponent.cs +++ b/Content.Shared/CombatMode/CombatModeComponent.cs @@ -1,6 +1,5 @@ using Content.Shared.MouseRotator; using Content.Shared.Movement.Components; -using Content.Shared.Targeting; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -49,8 +48,5 @@ public sealed partial class CombatModeComponent : Component /// [DataField, AutoNetworkedField] public bool ToggleMouseRotator = true; - - [ViewVariables(VVAccess.ReadWrite), DataField("activeZone"), AutoNetworkedField] - public TargetingZone ActiveZone; } } diff --git a/Content.Shared/CombatMode/Events/CombatModeSystemMessages.cs b/Content.Shared/CombatMode/Events/CombatModeSystemMessages.cs deleted file mode 100644 index 819a449349f978..00000000000000 --- a/Content.Shared/CombatMode/Events/CombatModeSystemMessages.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Content.Shared.Targeting; -using Robust.Shared.Serialization; - -namespace Content.Shared.CombatMode -{ - public static class CombatModeSystemMessages - { - [Serializable, NetSerializable] - public sealed class SetTargetZoneMessage : EntityEventArgs - { - public SetTargetZoneMessage(TargetingZone targetZone) - { - TargetZone = targetZone; - } - - public TargetingZone TargetZone { get; } - } - } -} diff --git a/Content.Shared/CombatMode/SharedCombatModeSystem.cs b/Content.Shared/CombatMode/SharedCombatModeSystem.cs index 0b57840addd5a7..5fe763370fdb0c 100644 --- a/Content.Shared/CombatMode/SharedCombatModeSystem.cs +++ b/Content.Shared/CombatMode/SharedCombatModeSystem.cs @@ -2,7 +2,6 @@ using Content.Shared.MouseRotator; using Content.Shared.Movement.Components; using Content.Shared.Popups; -using Content.Shared.Targeting; using Robust.Shared.Network; using Robust.Shared.Timing; @@ -89,15 +88,6 @@ public virtual void SetInCombatMode(EntityUid entity, bool value, CombatModeComp SetMouseRotatorComponents(entity, value); } - public virtual void SetActiveZone(EntityUid entity, TargetingZone zone, - CombatModeComponent? component = null) - { - if (!Resolve(entity, ref component)) - return; - - component.ActiveZone = zone; - } - private void SetMouseRotatorComponents(EntityUid uid, bool value) { if (value) diff --git a/Content.Shared/Targeting/TargetingZone.cs b/Content.Shared/Targeting/TargetingZone.cs deleted file mode 100644 index 733563d7e49127..00000000000000 --- a/Content.Shared/Targeting/TargetingZone.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Robust.Shared.Serialization; - -namespace Content.Shared.Targeting -{ - /// - /// Zones the player can target for attacks. - /// - [Serializable, NetSerializable] - public enum TargetingZone - { - /// - /// Torso/arm area. - /// - Middle, - - /// - /// Legs/groin area. - /// - Low, - - /// - /// Go for the head. - /// - High - } -} From eb833335d924ce792a1e3086d09240cdd228a642 Mon Sep 17 00:00:00 2001 From: Vasilis Date: Tue, 10 Oct 2023 01:42:53 +0200 Subject: [PATCH 002/245] Github actions script to update ingame credits for contributors (#20345) --- .github/workflows/update-credits.yml | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/update-credits.yml diff --git a/.github/workflows/update-credits.yml b/.github/workflows/update-credits.yml new file mode 100644 index 00000000000000..09844f4c19d15a --- /dev/null +++ b/.github/workflows/update-credits.yml @@ -0,0 +1,32 @@ +name: Update Contrib and Patreons in credits + +on: + workflow_dispatch: + schedule: + - cron: 0 0 * * 0 + +jobs: + get_credits: + runs-on: ubuntu-latest + # Hey there fork dev! If you like to include your own contributors in this then you can probably just change this to your own repo + # Do this in dump_github_contributors.ps1 too into your own repo + if: github.repository == 'space-wizards/space-station-14' + + steps: + - uses: actions/checkout@v3.6.0 + with: + ref: master + + - name: Get this week's Contributors + shell: pwsh + run: Tools/dump_github_contributors.ps1 > Resources/Credits/GitHub.txt + + # TODO + #- name: Get this week's Patreons + # run: Tools/script2dumppatreons > Resources/Credits/Patrons.yml + + - name: Commit new credit files + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Update Credits + commit_author: PJBot From e7a453e022e03cd7105fc0d852952bc9c7b3eb92 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 9 Oct 2023 19:43:57 -0400 Subject: [PATCH 003/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3302e69ee2ca68..908c31cf7b5169 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Emisse - changes: - - {message: Bounty payouts x10, type: Tweak} - id: 4479 - time: '2023-08-07T21:41:57.0000000+00:00' - author: hord-brayden changes: - {message: Added Syringe Support for Chemical Analysis Goggles, type: Fix} @@ -2951,3 +2946,9 @@ Entries: maint corridor.', type: Add} id: 4978 time: '2023-10-09T15:22:57.0000000+00:00' +- author: Vasilis + changes: + - {message: Contributors are automatically updated now once a week in the credits + section., type: Add} + id: 4979 + time: '2023-10-09T23:42:53.0000000+00:00' From ad17adfb63a933f3258b745741267c72ee9a3e55 Mon Sep 17 00:00:00 2001 From: brainfood1183 <113240905+brainfood1183@users.noreply.github.com> Date: Tue, 10 Oct 2023 00:49:42 +0100 Subject: [PATCH 004/245] Polymorph Artifact Effect (#20660) Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> --- .../Components/PolyArtifactComponent.cs | 30 ++++++++++++++ .../Effects/Systems/PolyArtifactSystem.cs | 41 +++++++++++++++++++ .../en-US/xenoarchaeology/artifact-hints.ftl | 1 + Resources/Prototypes/Polymorphs/polymorph.yml | 34 +++++++++++++++ .../XenoArch/Effects/normal_effects.yml | 17 +++++++- 5 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PolyArtifactComponent.cs create mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyArtifactSystem.cs diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PolyArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PolyArtifactComponent.cs new file mode 100644 index 00000000000000..8edeb77a67b79f --- /dev/null +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PolyArtifactComponent.cs @@ -0,0 +1,30 @@ +using Robust.Shared.Audio; +using Content.Shared.Polymorph; +using Robust.Shared.Prototypes; + +namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; + +/// +/// Artifact polymorphs surrounding entities when triggered. +/// +[RegisterComponent] +public sealed partial class PolyArtifactComponent : Component +{ + /// + /// The polymorph effect to trigger. + /// + [DataField] + public ProtoId PolymorphPrototypeName = "ArtifactMonkey"; + + /// + /// range of the effect. + /// + [DataField] + public float Range = 2f; + + /// + /// Sound to play on polymorph. + /// + [DataField] + public SoundSpecifier PolySound = new SoundPathSpecifier("/Audio/Weapons/Guns/Gunshots/Magic/staff_animation.ogg"); +} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyArtifactSystem.cs new file mode 100644 index 00000000000000..d192e928d8f1f8 --- /dev/null +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyArtifactSystem.cs @@ -0,0 +1,41 @@ +using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; +using Content.Server.Xenoarchaeology.XenoArtifacts.Events; +using Content.Shared.Humanoid; +using Content.Server.Polymorph.Systems; +using Content.Shared.Mobs.Systems; +using Content.Shared.Polymorph; + +namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; + +public sealed class PolyArtifactSystem : EntitySystem +{ + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly MobStateSystem _mob = default!; + [Dependency] private readonly PolymorphSystem _poly = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + + /// + /// On effect trigger polymorphs targets in range. + /// + public override void Initialize() + { + SubscribeLocalEvent(OnActivate); + } + + /// + /// Provided target is alive and is not a zombie, polymorphs the target. + /// + private void OnActivate(EntityUid uid, PolyArtifactComponent component, ArtifactActivatedEvent args) + { + var xform = Transform(uid); + foreach (var comp in _lookup.GetComponentsInRange(xform.Coordinates, component.Range)) + { + var target = comp.Owner; + if (_mob.IsAlive(target)) + { + _poly.PolymorphEntity(target, component.PolymorphPrototypeName); + _audio.PlayPvs(component.PolySound, uid); + } + } + } +} diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl index 1da33c3232b6ad..48a6f49408c347 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl @@ -18,6 +18,7 @@ artifact-effect-hint-soap = Lubricated surface artifact-effect-hint-communication = Long-distance communication artifact-effect-hint-phasing = Structural phasing artifact-effect-hint-sentience = Neurological activity +artifact-effect-hint-polymorph = Transmogrificational activity # the triggers should be more obvious than the effects # gives people an idea of what to do: don't be too specific (i.e. no "welders") diff --git a/Resources/Prototypes/Polymorphs/polymorph.yml b/Resources/Prototypes/Polymorphs/polymorph.yml index fe4f80811f80d6..c710d83ceccb50 100644 --- a/Resources/Prototypes/Polymorphs/polymorph.yml +++ b/Resources/Prototypes/Polymorphs/polymorph.yml @@ -102,3 +102,37 @@ transferName: true revertOnDeath: true + +# this is the monkey polymorph for artifact. +- type: polymorph + id: ArtifactMonkey + entity: MobMonkey + forced: true + transferName: true + allowRepeatedMorphs: true + inventory: Transfer + revertOnCrit: true + revertOnDeath: true + duration: 20 + +- type: polymorph + id: ArtifactCluwne + entity: MobCluwne + forced: true + transferName: true + transferHumanoidAppearance: true + inventory: None + revertOnDeath: true + revertOnCrit: true + duration: 30 + +- type: polymorph + id: ArtifactLizard + entity: MobLizard + forced: true + transferName: true + transferHumanoidAppearance: true + inventory: None + revertOnDeath: true + revertOnCrit: true + duration: 20 diff --git a/Resources/Prototypes/XenoArch/Effects/normal_effects.yml b/Resources/Prototypes/XenoArch/Effects/normal_effects.yml index 8deeebcc55c473..040f688403c51d 100644 --- a/Resources/Prototypes/XenoArch/Effects/normal_effects.yml +++ b/Resources/Prototypes/XenoArch/Effects/normal_effects.yml @@ -1,4 +1,4 @@ -- type: artifactEffect +- type: artifactEffect id: EffectBadFeeling targetDepth: 0 effectHint: artifact-effect-hint-mental @@ -405,6 +405,21 @@ components: - type: EmpArtifact +- type: artifactEffect + id: EffectPolyMonkey + targetDepth: 2 + effectHint: artifact-effect-hint-polymorph + components: + - type: PolyArtifact + +- type: artifactEffect + id: EffectPolyLizard + targetDepth: 2 + effectHint: artifact-effect-hint-polymorph + components: + - type: PolyArtifact + polymorphPrototypeName: ArtifactLizard + - type: artifactEffect id: EffectHealAll targetDepth: 3 From 4ea05ccfb82b19e7079cbcd4da82b53e11efa8f4 Mon Sep 17 00:00:00 2001 From: Fluffiest Floofers Date: Tue, 10 Oct 2023 04:05:18 +0200 Subject: [PATCH 005/245] Job Spawner icons cleanup (#20872) * icons * minor fixes * another minor fix --- .../Entities/Markers/Spawners/jobs.yml | 54 +++++++++------ .../Markers/jobs.rsi/atmospherics.png | Bin 1071 -> 978 bytes .../Textures/Markers/jobs.rsi/bartender.png | Bin 942 -> 978 bytes .../Textures/Markers/jobs.rsi/botanist.png | Bin 927 -> 1009 bytes Resources/Textures/Markers/jobs.rsi/boxer.png | Bin 734 -> 1056 bytes .../Textures/Markers/jobs.rsi/captain.png | Bin 1028 -> 1112 bytes .../Textures/Markers/jobs.rsi/cargo_tech.png | Bin 923 -> 872 bytes Resources/Textures/Markers/jobs.rsi/ce.png | Bin 1144 -> 1132 bytes .../Textures/Markers/jobs.rsi/centcom.png | Bin 6917 -> 977 bytes .../Textures/Markers/jobs.rsi/chaplain.png | Bin 902 -> 807 bytes Resources/Textures/Markers/jobs.rsi/chef.png | Bin 1006 -> 880 bytes .../Textures/Markers/jobs.rsi/chemist.png | Bin 1035 -> 944 bytes Resources/Textures/Markers/jobs.rsi/clown.png | Bin 921 -> 896 bytes Resources/Textures/Markers/jobs.rsi/cmo.png | Bin 1136 -> 955 bytes .../Textures/Markers/jobs.rsi/cyborg.png | Bin 736 -> 434 bytes .../Textures/Markers/jobs.rsi/detective.png | Bin 965 -> 1031 bytes .../Textures/Markers/jobs.rsi/doctor.png | Bin 1109 -> 899 bytes .../Textures/Markers/jobs.rsi/engineer.png | Bin 1035 -> 1121 bytes .../Textures/Markers/jobs.rsi/ertengineer.png | Bin 1210 -> 1064 bytes .../Markers/jobs.rsi/ertengineereva.png | Bin 1103 -> 932 bytes .../Textures/Markers/jobs.rsi/ertjanitor.png | Bin 1122 -> 1049 bytes .../Markers/jobs.rsi/ertjanitoreva.png | Bin 1209 -> 983 bytes .../Textures/Markers/jobs.rsi/ertleader.png | Bin 1161 -> 1021 bytes .../Markers/jobs.rsi/ertleadereva.png | Bin 1158 -> 969 bytes .../Textures/Markers/jobs.rsi/ertmedical.png | Bin 1128 -> 1029 bytes .../Markers/jobs.rsi/ertmedicaleva.png | Bin 1185 -> 935 bytes .../Textures/Markers/jobs.rsi/ertsecurity.png | Bin 1128 -> 1010 bytes .../Markers/jobs.rsi/ertsecurityeva.png | Bin 1245 -> 902 bytes Resources/Textures/Markers/jobs.rsi/hop.png | Bin 945 -> 948 bytes Resources/Textures/Markers/jobs.rsi/hos.png | Bin 1020 -> 1034 bytes .../Textures/Markers/jobs.rsi/janitor.png | Bin 905 -> 987 bytes .../Textures/Markers/jobs.rsi/lawyer.png | Bin 855 -> 849 bytes .../Textures/Markers/jobs.rsi/librarian.png | Bin 748 -> 893 bytes .../Markers/jobs.rsi/medicalintern.png | Bin 0 -> 831 bytes Resources/Textures/Markers/jobs.rsi/meta.json | 63 +++++++++++------- Resources/Textures/Markers/jobs.rsi/mime.png | Bin 764 -> 795 bytes .../Textures/Markers/jobs.rsi/musician.png | Bin 707 -> 821 bytes .../Textures/Markers/jobs.rsi/paramedic.png | Bin 1143 -> 922 bytes .../Textures/Markers/jobs.rsi/passenger.png | Bin 840 -> 805 bytes .../Textures/Markers/jobs.rsi/prisoner.png | Bin 828 -> 930 bytes .../Markers/jobs.rsi/psychologist.png | Bin 720 -> 812 bytes Resources/Textures/Markers/jobs.rsi/qm.png | Bin 1082 -> 911 bytes Resources/Textures/Markers/jobs.rsi/rd.png | Bin 1046 -> 916 bytes .../Textures/Markers/jobs.rsi/reporter.png | Bin 881 -> 802 bytes .../Markers/jobs.rsi/researchassistant.png | Bin 0 -> 800 bytes .../Markers/jobs.rsi/salvagespecialist.png | Bin 0 -> 881 bytes .../Textures/Markers/jobs.rsi/scientist.png | Bin 982 -> 878 bytes .../Markers/jobs.rsi/security_cadet.png | Bin 1117 -> 889 bytes .../Markers/jobs.rsi/security_officer.png | Bin 1001 -> 1044 bytes .../Markers/jobs.rsi/seniorengineer.png | Bin 1272 -> 1098 bytes .../Markers/jobs.rsi/seniorofficer.png | Bin 1056 -> 1041 bytes .../Markers/jobs.rsi/seniorphysician.png | Bin 1083 -> 990 bytes .../Markers/jobs.rsi/seniorresearcher.png | Bin 1195 -> 957 bytes .../Markers/jobs.rsi/serviceworker.png | Bin 0 -> 861 bytes .../Markers/jobs.rsi/technicalassistant.png | Bin 0 -> 952 bytes .../Textures/Markers/jobs.rsi/warden.png | Bin 1079 -> 1149 bytes .../Textures/Markers/jobs.rsi/zookeeper.png | Bin 4175 -> 931 bytes 57 files changed, 74 insertions(+), 43 deletions(-) create mode 100644 Resources/Textures/Markers/jobs.rsi/medicalintern.png create mode 100644 Resources/Textures/Markers/jobs.rsi/researchassistant.png create mode 100644 Resources/Textures/Markers/jobs.rsi/salvagespecialist.png create mode 100644 Resources/Textures/Markers/jobs.rsi/serviceworker.png create mode 100644 Resources/Textures/Markers/jobs.rsi/technicalassistant.png diff --git a/Resources/Prototypes/Entities/Markers/Spawners/jobs.yml b/Resources/Prototypes/Entities/Markers/Spawners/jobs.yml index 62945a0ed8859b..1e0ef876a0e559 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/jobs.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/jobs.yml @@ -73,7 +73,7 @@ - type: Sprite layers: - state: green - - state: miner + - state: salvagespecialist # Civilian @@ -96,6 +96,10 @@ components: - type: SpawnPoint job_id: TechnicalAssistant + - type: Sprite + layers: + - state: green + - state: technicalassistant - type: entity id: SpawnPointMedicalIntern @@ -104,6 +108,10 @@ components: - type: SpawnPoint job_id: MedicalIntern + - type: Sprite + layers: + - state: green + - state: medicalintern - type: entity id: SpawnPointSecurityCadet @@ -124,6 +132,10 @@ components: - type: SpawnPoint job_id: ResearchAssistant + - type: Sprite + layers: + - state: green + - state: researchassistant - type: entity id: SpawnPointServiceWorker @@ -132,6 +144,10 @@ components: - type: SpawnPoint job_id: ServiceWorker + - type: Sprite + layers: + - state: green + - state: serviceworker - type: entity id: SpawnPointBartender @@ -246,24 +262,24 @@ parent: SpawnPointJobBase name: musician components: - - type: SpawnPoint - job_id: Musician - - type: Sprite - layers: - - state: green - - state: musician + - type: SpawnPoint + job_id: Musician + - type: Sprite + layers: + - state: green + - state: musician - type: entity id: SpawnPointBoxer parent: SpawnPointJobBase name: boxer components: - - type: SpawnPoint - job_id: Boxer - - type: Sprite - layers: - - state: green - - state: boxer + - type: SpawnPoint + job_id: Boxer + - type: Sprite + layers: + - state: green + - state: boxer - type: entity id: SpawnPointBorg @@ -349,12 +365,12 @@ parent: SpawnPointJobBase name: atmospherics components: - - type: SpawnPoint - job_id: AtmosphericTechnician - - type: Sprite - layers: - - state: green - - state: atmospherics + - type: SpawnPoint + job_id: AtmosphericTechnician + - type: Sprite + layers: + - state: green + - state: atmospherics # Medical diff --git a/Resources/Textures/Markers/jobs.rsi/atmospherics.png b/Resources/Textures/Markers/jobs.rsi/atmospherics.png index b25133c96d03d88433a010761c1036b3ef3e2d08..3f95cfd233ffa25ad106ebc3bcb7bcf0f35f35c4 100644 GIT binary patch delta 957 zcmV;u148_-2+{|TBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zbV)=(RCwC#S4&8gQ561emXw7vrXpqI_`s4#q#Ue;Ii^AhCYf#o7bUGU3tP1cH$f06 zrVD9NL6MtK(M1+0zN)Ew6p2XUn3D$ioY4|f^!A_Y|Bv(g8h;TYm{wCk<_1&@+~&r9>N z=VlR986*>tp6oW-R;v!z;CyUxG&}(pYyGW)lkBQ@O=7Lzr{VqxZj^BN1%h9{tkN}B zLzJ9$ZBAX{S6Ts#3<3}Gm^MccmIhW(B7!PJL1%pL3(j70F-T8#WUomVh%y)C0q;wN z9N%7|(tlel7M1MOOZMcqp8Mdo0<^1QuRKvsMOG*vAYkE~lNlOj<;ySGk-e+krh(|E zbd0YD)obxK>3mBUjwJ`VqV(vkl(mDa`fVzKE9VLc-7st&kmgoiZmEJfs1A*96LCkn zl(}zm#O_lvPB?vvB&5`bgu*}c2zu(8w1Hykb$=ifgEbSVczO)e-V?Z+9f`we7F;?6 z1nTw)TMAD0l(Z&LJmdHcPu+gl`>gn69m3?FdBJVtGq{lKDfsZ{But@R!k+9Flhy!= z>G7fY(d=6+Cd$YSdpz)cb`Hc9BKcZUFj}oscv$(7x%#;M=v@yIDntno(kZ-2MnIC4 zv44@@Ump^>l7x!X-_3H1bx24^j}y_^R2hWicGdhbT1p-A%SZhG|AK#-Ky&rR);0eu zudQ1S*R=}l`fNObHM^kaagl)H#=c(|8yRsL#>U19-qqdBjz>g@^_G?vr{6(8KV}X& zAfPz>YW~)bpu4k^r=_Qhzy^as6-)_E>o%k(JF?fT0z}Wg*;h15NJwDy_4O<2vV!#j f58PGYuK)u8>CF3|Rxnh|00000NkvXXu0mjf6*JXH delta 1051 zcmV+$1myeD2d@Z_BYy+-NklyO-Ni<6vuyW9CdunL>XJ8of!+2fY?GY+DeOU z>7t-5wZw!FYC&u_X%Z)^6jvf{nzoBF&Ljvanl2Jb8kD#(g+iN&B^`vAfFz2fgWnT< zGk!nk^W82UGa@z4Jhh9`KV0s;=iPJ8|D1Qu<--3R(q5DX27g`?JINawMh)9Dq;TU# zg-}%ui^YU2o6_<~L}O(oNl8hrVG^dyN4CReGZPNSi9|HQ;RKP0hN8qNDalQf{8tEE zzI;SjEG8lmjX=K!fT|_|2=r?#F2(_{Sd7J#_31NbCZw5}D8pBx0Q~yRBLEa7PSqFr zjQyl%!zj!~4u22zsuUKO$;~mLSxO1?Yb>d8jwNb0pMQl9kN_fZ;6csSU@+$Hk@7b?N=t?%UkE_er`lPM&;}wOvC5nm(=+0LAOe zobA4ymR~wuN9a%y9~|FAmQ98TWL*R9HpJY#zJBS|0DnK6`;gDim(b&WN?A>S+M^XH zN;2zUQplqeNvnjH*Wf`0~_*Zq(Zc$}DuXX0)GO7nB`C>hNIs6C5^uy!V1c ztoS?LX@7u8{~-YG4uI6*fwE&+nS~4)NTput@Br}cgP#F#7Ovs2!AzL+eC^bI@O#s` zqNA0rZ{hsK-F;-tz?}hb%dK3PYQyLANsVv&aM+;k_y~p0x48KI2o4+k9+#l2Rk|?M zhFfms&OjF7XCe?(;FlqNuCA#Cmq*Oc>oxHHntxtr(x5&M{#FStkEpJx-KMuM0+SEz zBqqyPd|b+{zEPS2Jpjo0HblLiSy3-BI<0p=Q=o@ieWNTsE+sKp#^ghLMgqJ3pHJVg z3wx1;XhK7cCE2tUQ>>~)4j-meMAGN(tqSag1#Bb|6of;_c{!-DBx)?l_2Jq5)j%|% zk$-PCp~jL-OodsCYCQOBfvKe!b@h2nEyY+2tx^4o%yVWlYD~Y3^rN79k3Msx?EjW}OlSt7I%-%&?dk7bPBFy4IqWg)_d)a<)TdY>8x>hK?MdD4!3 zR}n&pt#ufI%VU^;;WuFlBV!;*k~A{5SAPrpBydpp?-98Bj4Sq8@=P%FC?zz<;Lvta zP+?29IcJza)_vM{^QHi3ZfT*Ys0e`R>1oO7bP9mw{Mva%AY)N0t<--m;P14t&5Ff}#BP{(SuLZPI93#JPPP?oE6 zZTi`X&~WXKC&%%od#DGDM@%%z+Vq z@jDW)cf&9{Ju-bkFb z+_L~CTQ8GVzgyx{5*ibgc&BC>uK3S;=?c%40V$Lw^UApCF*^#(n-arG}la+fqUK z>Kz9kpZ0N49}AApOZXK3uE=R@Y>WqkLEdUKa+k}6oxHQNlepXMrgrQ{y+Y?F8-)PC zNku|K^Yin(r>BRw#bP0j?IOuR6b(Q$F0Kv@VG)9lRKzxMm*gPw0VwDahC(5jnVFH~ zdYulsyMMdE@Anf&StQg${gT82T*ctvpk#b@c2??BDwW`LI*E&f{R0C7q>tlp1Mtl% z$_*D67m1IKj4mBE$)OWeDQL1D6#`-$x$;TDthU>zF4=iTlNSJsarBW&4Tie?i zva-B9>$o!mc+$~E{HgsWe10*W;a+I8uC`V(E`Jj0p}u^4(a}&-Un_i#>G-mH5@FxE~PnayUdP$;0Hq9Pp$4-cifct-+(0F#f&m-OZZASVQX*|2yA zFn<%q3|VwV5y0uExa3JG8b3NZqBBQ+`Xc_dtoZb5|H-uc%m8rv|NkG8Y$QI%a>9#< zrQ`qvf5t=;e8Nx3RyeyC8{Lr z&}A@pM0FG0$@Y*31b6TKpXd3#|GW3@6}+pFzJE_o-@m7yw||bKpT;92J^+6G?GL7> zg3N_yD3_}&eD$5}dbSdb<_|JY0GJEU@buZ=)L#7CH-yuU*l7OI#0MBIjQEE+$v-!* z+YMU)4>C`f3(s)1RE1I%fUCfV*FwAm%H^tUfB`#Vcljmda+S!pKd{{#VfF4W=5e`P zjD@l+~h!k!yIk|aGEjhfBjbf%%uM3*iUnlK$OAfnNzB^P=+u)Vzv zz}niH1Ak6uy0i1BOS7}{$aKKa8F}Xd$Y!&A8EBBrX1m6X`~If$H|5y|`1)fn05>D! zY$n!CI~7GiQ50&mDvF};=U=~@Ih%=f{bppmEB|d_>1#OZJ1vyY=h@oY;`7hGFt24E zKLlN8&vCl+NBy5N>htpK@VS-Jy`OH`A(?5U_ zc7JDk;Q$vAeFHe1w)V3Z4{%Xodm4?#+0Cb>X=s{uxd4GcKtDJ*0Ko6}o8$F*9RO8T zOVi;Jm9eogL{VgDXoy0gpr_MmOAwYs!C>&r vcfDS(Q>j!OUawd8`Of|&D-;TrYQF+t))Ig9KDU_P00000NkvXXu0mjf#^lL` diff --git a/Resources/Textures/Markers/jobs.rsi/botanist.png b/Resources/Textures/Markers/jobs.rsi/botanist.png index 8e8137721440629e281e05cf9d6beb6c550d2c8a..3cec3fc7dc9c1597371b8d5169e3b6b9f3c59a56 100644 GIT binary patch delta 988 zcmV<210(#O2k{4xBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zlSxEDRCwCNS6xU{K@>idk-KH>Zmx+DySnK^keVopxG33=5J^9l*bhkc7Kvo+Lsp0n z6(ZP!zW9(*m~3JR>5G!0l9Z;IC1$Lyx|ZQjy4MtUBbn}*{eO2?L-%eT7|xuZx!<`n zXU@5oP)cDlX$x#JZF&G(*D~sAAGyd8=Wc>jDrIx(basR%Z9T5pZ~zQ6KG{u2 zS0s*ACN55f9`AR+6CoJ)xy4N{iA<#uiG*+*XHh6(0lM0~4B(ezN|bR>+S6+XC!r^S zjyBji>UGWSlz)G7;%U7gNq8zK5PoxuY;Nv*?!s+)pWOn3!9W!X1sUt^VPMPiCYbmz zz&OgNk2sP{d=>zL=jP^81VJ#rT_TY0S2B*WGA@>EWCzHam5{hTGcA7)ZF=((%w@~K z{hV_oV4w{AZ}`D+^;u|qFhy2mtuQ-);CrLQY@V(?&woH|17#$%qo3eMfDaA7D1+?> zMSQjCg^&Xx2D(kMgK?Bmk9PE1PZ0kMK$PA`o4yV@6w(-YQmkR1Y2_yvM;Y}tLVsK* zSRsm$$>8zr8pz5_cL{<~1K7bAdzV04Qx7r0G8mW~_dW^J?gX=~M{paNIlj7>lK}iX z9FA7mUw^XGuDbRx6Nakipz;1B@#+ZXyO$s(@)(%vqg@|_ptj*e=!gEe&g&ysoc;qN z(+jRjKG{H=t+MB4J$aa`}(u|dUcs4h!unBh5jsGjj}bx@Z*b#^?vMp ztQ&&(|NNL>!B&>axNI1IHfxRvW6YuQD+uzyAsC9D*;jV!?I%nYpn6O?IYAvnO2 z=xwd7pvXDQ=93E)DvC`|mt9MD%jF~`ELFf#KZH1f!Tx@FCL;sXYBdyTI~kZWp^SR8 zqaXSU@=>a*wEP=ZjT${VrKYBmmX;Qew#%VXwoMUN*8VsAE5HDWVXhgmW$nEH0000< KMNUMnLSTZXn%W8g delta 906 zcmV;519klI2cHL!BYy*CNklyUr1DW6vsa|f;$qkjcgc0PBSiCaLSCyhgw{$ zETyIG!6kakqKC5V#gNFr2a)YTSg0A8AR>GzkRj;LLx>qHxiQqHW8qpikXe!ZQ!@QA z9V$-`_v$#VIrmQ4OJ6w5+~4n>b3VV{nctZoeD6}SaVjX^B!BZg2W~&iD%P^Ek$iT1 zsR8CEmuX4+{Ap*2ZHVP|9p*|=6z6)<^0e)oUN6>YhM}dd!@1V7%KFz27Nk8hI zm?a2HjVO?t%f(Y|xH(|-0#_iF^rrEwX&Sn&bMaIgfz`S6jSN}|z4#7PHsr~nGyCWp z=>_2Au|8uWSqiQ|%95pNetjdo96GblQYkW);Prz^wr;2(d1IpjbGlu!G-Y#?ys=T) zx}k#C4}T^zg$6Q|U}Ee817mN~#_n8Si+B6tK^OAN3Sj8MI6ne8fDc5|G-E>TN?&J5{{_S5i2sfp4t66Vnq^;s6ug2C^6nI2Y>OUPVN_|#7quQ92Cm#3Y#TmMiRq{ zgYrM049Z-Be=^(~H=B9XF0(WieCEjZzu|1M#hz`*7J%w4ORZAvN*O?++n8TU0Dz;H zLk7e=J9;@}J2_-|DXp$=;rYK)wEr=xR5s*^+wZ{W7WQR(2PV1~KINYq&m>zrki#I) z{(nkuu@hq-cxJZU90o})6~NU@nq6F^v1)fL~ML=3?h8*7r$i!f*0E!v~jJ((^AKMB$J;Wv5_tbd;M+CN}ca zE}aEt=HPtxN@C(kZmvAaQWgL?udlD?N}+ ztYejU^|u$g&yS&|%!!enUX*Rqjt{6_I6Xe7AAbUg_khPAfIg50y@tUT;KJ%#iG3LvC>G`Dr+ir^j}k26>_c_G$H#0j$~sU0q%H^Fj^J6wNdw zE`OYJ&26l;s)}bTs~?>A3k&$Zt&KIEt>Rf)kv*}F-?p-ZnoyqamPSNQz&i2h_$o6q z%=e2Omxzpn;E~6JmX|gbIUme*4avC+B7qzaibX)USOgInNJ?MD{XxeBtur$$mOLf5 zA;Gk$v3-7iO_t*%P4`&>xGJj(;4*bSuVt5B&enXx$~~8k)t_#01Ay6K;v; z`JSNM+1UxlnTwJZa|jlz6^?(0c}{LFtJs~DybSa?9Q@nrYLu6kM;jAqtJPR*dQh>52eDX? zuYZ7g^P+eYp+b8oJ?J4|J$Ue_h@~Ljy;&7e&;b>+>QQS-t2Hs2+HTWLCY$Wc#_=!_ za>*ubm0tEaJ}}SoexB#^{V=sOP2J3hZff@)Ko6h?&;vmK^?!WyWe8;pExeA?X=?ly?7Jv;`X)tG`{fTv4SW_txqCQ~48@*ZDl{;j>MVUK zEgZu8U3zo{m>y1y&F6-PV$J!hrkd5X57ZNT#9M#@d*EeySc%?A;;7-#&&N=#1 z!$&x#(ndFc4K*+sLOG4|8OvGWe8vZ=wYTmV(cU>=Ie#kM5|{cqr7JNjomKH@-5Yzi zy9XoqbCW4I1c>nX?tbMett@x%V3i-+HRQfsgX$xR)vVBN*K{H-w>v)nYtdKpx&DFJ z1uWuK#Mc8bi?`3V)FNsTM;EwXb>DN1mU=yLaWR)&UDn77li$sG@9SCLH(G`pE1JWJ zBly+E0)OlZa57D6{pgGNt*As5p}kaSF0}kS(-dK8xvhDj;e|7oe1dGLFoym3I8AHE zH}Qe4BAmeQml@x|;e=yXcs|QbVa9^I=(ua3-^E`l(ZPusEMOZ0ZB=giz)x z^C{Nlx8s@N#408_)%zb^$vuUWc<%qQ;(z1m5J1X8rHh9#P)|J4&b?G}YKzTp2w;7L tb#|LxL-YR(;6~!6{}1#4dH_9ue*n>Q0Hvb1_>KSo002ovPDHLkV1khbW%d97 diff --git a/Resources/Textures/Markers/jobs.rsi/captain.png b/Resources/Textures/Markers/jobs.rsi/captain.png index f32f53e4625bc7577f8bc0a5542757f5e9d534f8..9b9b6cd9a992a7ae2385634b4e098a0424a6f78b 100644 GIT binary patch delta 1092 zcmV-K1iSl$2-paaBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# z`bk7VRCwC7S8Yg?SrmS*h7760BomdJ%}zNB3l5tYuI6Oq1}*htDWOP{j6htlAX+vv z@L!8XyFvYl=)<;IV=eo+6qu=5nU%#lw2R|fX*soPI*g;tDt~%=&l%ros?p}-^}yxc zd(L_9`Fifh3n?W&)n+2uSv;dKoOP+qLll&-<0Kn)Jh~VdkK6Z%Xx560#`w4~9kol3 z@tk^^tBz>ufb+_6Zo#CxSBHeb9#}1lkdbNOp60|4^?l44uw>_RpR}P$Qq6ByP9oty z7qV`aC?#-mPk(dblbrPUgT9AhWgsjJn9XK+IP*6oA1qd8CdBpLgsvCJyB7}~{E_F@ zuLtUZ(~91qZnMO)EP;;J7&9>9?|Pdri|yYxh|XUpQ~H%K!gt z!KBBBfzBrwYrBqky$);34zNypd%Ktu2ZU)A^p;$S1u$r;f)%*CwGmy;*NlVU6HyZk zlsziu#ebQUNNMY(mmT3=jhy79r+EfwZ+pL7!(;uOT8@^sqDoWC*Kt-nt4sa*f8B!j z`cFcW3{c&JjZ^B$7-2zeYDq{=MEZ;uEkQ_8si`MpAKektrQqnN9gg`fpeQ_>s`;!} zQ_j(cT4f2Cce}67$L8?DrJd}Qwl*s)!=!3_3SJV{_ z$n9Hga9Af}1L4Z_G?|j5L(eNW`d<$UefBoVh*yl0Bkx5&&G&TtF47hmW%^E6`LdM>!-S9iUdS0mC#gu{MZx6}wg-aM<)Cb@BrwRx7 zEq_3Jzq}ze!1sM!6ws%Bt#V`j{D6`8S6xV&uY-5YhsniO#z2#gUyEvaZd|GO91(L+y!*Yz7>-;1Hj!+#*LtT@1)i z9YkT@1$@+=&6ayl49%#2Vs8qpyF0{(uYY4r-vcU9z%Yn&QwO~A+@s%4n- zXSvoCkpqP4Smc^yV5XW!i-m|V@b8<^kcLzq$u)JL``j<|5Jk&VFNOvO8EmIpcEMmU zu)Mjs86_npJa)U?$SXaiG{_XAQLHs5L3zMxQ-Z%84!OCo5H_0)O^uCgESP9cd_9tr z9_efHBy*nk|J&K0xkD-y6cmW2rlydx9iJQcK(g%GH>(401sDMBnL~myY*xqs0000< KMNUMnLSTaJj2QX= delta 1007 zcmV01Ao|(ak6_V1#slv&-v)u zK>%*f4kr~WC7H=nJQalMhXDxH50m1lFiHLE1Y+pwwe#$;n{@TslMMkRkOI4>Qla`` zE=;D<_WK(f>~-m9DSvo{>ekAH(qU1dKOJBvH-*unLspUKV1 z=C?ooHdOz0IFVTNowMR2spfc?Jq9n0oy!1Q$O(i+s_mE z=@-*}&)r$v_fiKnB?WvV7ni3;S-d#3J&Vxc^-Ds*V1H1CVaRj*q%w=j{1%n0FX_b(R#cz7;QB z0l?*Q0e_I0okM!$5}DaKFuK+s8)p^q3Ha(n&b|#n=f3-z*|GDybLK~8$Ig@WV%bKr zIr}WBU|oTUHZ!OBg$GDWOQWmTPFh+T`Gp7mahw&T#xpiP*+xS{26GcD?0IChZ+?EB z%)E!lEH34XY1m&}daM6S(=Xio9{Ijh&Yk;}#(#-K=&Zv`w@p%p!sF?h>9)x*3>k(Y zhu1HM*RQ^Iv)oMEdY{eah%Z-Fvluu9RV|d==p!19a@S)|0dRSG6oAExLm+|8hG7`& z*}a>OKm7!%TEJNXou$cdNHg6wg~!t+Wr(U~1p)z8S67>Ff9gc4`q~ka00ja8flMDO z3V&>ls%G)rr~rb&pzzfRU!8W9?9kE2?E=gz7z}E?&t^zWo>*Dl!cHx-Y}>hJU%HZT z6(n~ibQXfMkmbQwZLxN;NcvF9rT)L)|8oM{g#Rgl^|Eg<4VKZ^h*{&|@pJ*){@mD@ z_`jm%lIiW~5kTw9HRSGEb^BmOw%VfA&1mNO4N?DA4*EpuM$Kk`!53(A4Cl z4(&y;iEE2&I0Nc^Bn;ac3K4b0jDy$X;O7<>#ULK+a zPxn8i-17JJ;%nVQlcBSe(CY$vAjg!`hKd;o27??NW<#5S0h6Se9JeVYOsCWQF#8Az29zU> zhP_l=O@9fD_`0BO^fmPv=i1BY^@1b>12TBx!A;HH?xub21C*SevF2NVUMF%BMGKjj zoLQ#k#?}H~fWse2Te2e(9~)Jd+gI-olkw%kl=kwmSDluSS`CawdU=Oy@&`xspq&Hp{As!9(hCMfoHLEGzau#@f0)-muY z7E99x1_#OK^HF$eii61mYuIree(<+sQ<|K}Ki%U6)zqoCx0i*(Vbg2p58AmHc`laz cH~b^O08)a3xGCvNcmMzZ07*qoM6N<$g0Ebgod5s; delta 901 zcmV;01A6@E2AczF=!iC7{`C7YivnyNOkIf5)=s%ap6J>&Y(;! z8sa51r7aok7Fx1tX%`JH3AisV33v!(a3Ee9YAA*@GzAYWB!i2FVp80p)c6pF+==*% zX+ZG>$*!xs4&n~kO?-DsLWca8d-~qJ@B6*~>3urE>n^32MSo|m9F)6bbCuPea>ZUm z@x9_fibU-dQTr4o4_)x%V-GIT{-;wvsuPhN*j*f8^3Vm;zMh^ybbu%A&Q3r1rMTnz zq%BcY_~2@^M-dso)AW14?zr}TOO>=V#x7k9rLAGBq06@PM zV|wr!$#_49Gk=356bc1~iV2K-oPU|y7cug2hKdOag#xX)cW@ks zQmGUgB9sG;<6xR50JU0;uV>!&A%=bmY1hmHfDmhNu? zaB5iF5jRZ}UDrdo5a__h#)b!@K*xcLpZy7dk&pZLc@B8@dFz7o#$J=QZDZT^Gv}A? zZ!%O&M1Niv8esV7o18dy1j|`x_-IAWRF?p_d&lL}u;x2poLR;&3;<>?SLFVbMlN%J z#pM;geI5W$11Svv%d+_D!^eQi@4q!M>sx&KjRjJ&q;&eg{`XHZkkYW6^)RV}0o-N_ zEt#NZuaZuunf)V&Wm)8MImX7uSp0hu>-cfr+#q--tqyj*pK&HQ~g>gtFIM bnB4yXsfA!CoGG0e00000NkvXXu0mjfcHFx7 diff --git a/Resources/Textures/Markers/jobs.rsi/ce.png b/Resources/Textures/Markers/jobs.rsi/ce.png index ec40156f1f56eedc067192e265ac9427e4e0eeb3..5721c2864669949686526aec95a7ead898488d49 100644 GIT binary patch delta 1112 zcmV-e1gHD>2ZhV_e#>CeSQwLTjl_k*H~+_`@b(!PIVfM7v;7iL8s#q<;l@ER?i1^z_WRy>~BU zyN~W=lF6KzGv~~A=ggUN!5Bj%9E>V#hl5T;x~JIp{{W!C8T(z-a@9J+%sYZq*7Z=yA!Mo7}hUY6GkM`OJtzMgnm#|&s`^4>$34XG#? zeHG&dpU~9;>@mq1h>)TJknw_9YTz*p%!IkwKk$q1XMYr}FF<_aGJH8(iBt7UQSsSz ziTNVmGwKWwh{3i_X2>=nIne;iJC$-BxZRT59ep;X|LSt`?EFmDR)MWFoez0# zqpGS()tehn2O8H&Cu%?DM{<%$F=e3RB4AkK6o1uyq_~tRK{B^yA|)k7WW;mR6A0{b zN>l^1F6JZn?#6D;^0*wWYG9?{y81j~OsoYme_ad!s`pu`@nCf5AqMwZS(5uQ55lk8 zjdR#_$R2nND+9+e__>3*jOkdP{xo>Q(x(XNt^?^9x#Y((e;Y;;6LIB45uW7MD<`fA zpMR&4mJ7L>2Pc05t;;ohJoUS{?~~pk{^I?H=|BG#a(Ln~cD}qs$k9jB$WC7&KUCZ= z09uDuOeqy_Kv9LXJgrgZr$gupFI*GzFPWBdcf2BGp?~cty1TpK?H^Eei#ZctI9q_9oY4I(2u2j# z!SB2RLOnGNFDd}NNH+k=ufu`D{I!b;fX+T>*X)qHVAGik1w)BYy-xNkl88NTYu8O70 zmMx+}3yd|JK)XhNgy@77t5HVw8)6`byRaKx z@LaX~_Qx4Fsdeu;V9$2;zR&x<&-eR%-sjyp?|~&)!J9|LQh(x?M7(YdA|)k7tXqRv ziV(wM$bael8Gx-DW9S*40$|7XoqYVsN4oKJlS`5$yk75u9q@X+LXxCK?L_EegcO}9 zCNuk}>TKUh(TQS?9WPuAl=c$bnccDDg+xU~`RCkjHy@Ur^85cwDblYX(yt)K+e*cF zTdBz1!h&|Zt$$R^uhE06N$LJ!6*TqNC)pFel~u-YuFop}YTK0_E^KQB;D?Rcur-|l zKiF`qxUb=Uet)2!_7z2Hw@noN`5Nzi-G2nYca4{IVTNd3SW|#7M}s*U z%IXJ6G{ggtXo#n*evtXOngV@?P?La~0>t5yfBRvfu=c!z#|}eTCsB>lA|QCZsuARZ?TC$=HzZ{h@Kj0436d=SQmE3Bza?59AW@Qr2 zX~^Dd=Jxb&tX9D zl|^}ZITnkBu}i0k@r|%7?kSR1dHCKD>5qfDfC2*UfXn4VmL%pp9x7WDuJ);EePEu! z;cx)pa5&hsD<6QXea%$1D9m|0$dZK1@`T6-+ zEPoaN_8cq&AkJ(i#$+PWXbeiONdUl<%f-0U$+r*Buy4y7s(`qc{EyS=Bq=G0SMtjk zcRHEUkhvxScDvm$rzp%R3U<5Q0PxjMCzx;NpI|Y8Ea=zppCBpQ5@1wq8_qV6mY&9s zXD6txuKv%MK&JUy0Ps#&HbOwLc#*pL4u3lA7pbf7Kv5LZpWTJe=hFkHU%;IV`Y#w5=x1P{ zf5F(b@d;pp!GX)V$w9}JtiHBZ08|ua5F4q6o#_*X%*_S?AbA9@pQ;7m`HYOa`(0m9 zRZ$^?5JH}u6g}PDV)uH)JaOh`gV?ycYcS(5eEfRpnrY1c(`Ry*UU+kgqts!bdPqp6q6dv&lhP#?R=Q&f9{e zsNEIf2@@{|rDXs^4{nGN4VqeYsI3kP9Bci$Ghi$&m%p6$JbyB@Yi)bXIR2qjU;>iU zyqt;ASK6HcVSkkGcN2nuVF6X>iO?A_@T`0aor?z8nDsi7(9^lj49td5YhAC@dh4Zh zt*9Q!!^hyfmxq&OEfMtSZl0NrphWs21GE323T|Jyh|T+~sH>}k$N3mieu<#JwBLuN z`w`5{%rFYo6|t%Sj7Q3)p=X`!*INgIKjz_i?ZVvic7NznlVCl435h6!^Ndr%hTaGSair z)!iv6EXL`ysslL8op0Zfi%Fjk-@IP9O>TLv$W?@Gxw$Z8XJdTKix)fywE?K=gwi>% zt`nW;?|<(XP6(>adIcsq&66JKYu1W|u>z&6va%BHyF0~~6DD2(1yCJ?`a?LlMEdwP zEO$!0La#uhDv-Z^Fmg`eG+MBWSzw6W6V%^^jVhZQK6pWnOqL42v zEX3qVpVra(b@c(8&BlHQgGkovF*iStiHQlh+<#U=xIA-mahKE4Q<$y$ZJ&=G6h7At@bO`@CXr4~9-7ZE-N(!@-l`+CJ!m{P^ux@y5O#6JS zIs@+p2C%odSRo^x#t=Xt9R>ySRJ dQv-hl7yxNYwAzckG^_vs002ovPDHLkV1iERQ4rNQ$md;l}YKYq{WbKd8i=bY#He$R8xd*(e8alk~6k!~j)0D#dzU)!9Z zd7(l>MR=a|^IIS&T2Fo3vjEUPAI_KF!){i&O-F~4 zyFM+PA~G`YI=h(|!&SO&>QTPCk-_)EufAR$_P^)WS&n<(xc0b9Z9IQIrKFh}L&FfK zFKZ?r$dIGOv+Z4QT}|!qsDwrkoq#7`p(#1ecXpK@29^R;RQBw~P(KH-^X>FB0Arkt zk=hl8XP(qbJPZrG0>gMm?=_?eWCI$0ky@ERLl+j9k|1OO(kOvL!!ai;I3NxjgfG2s z2Z1R|iT*HPcZ-i5mKF_ow>yVx1J`{Zzxm)*9bh8`*jx;2lt8yQkTS4#(Fa9O0H%qB zz8KIj04cNZ5K%zs4;mo5rH5X`yf5arFT_t7K}1>HQ%JY z;?(~>N^j)}J$?n=zPrZ2sniC+hBagLiquZJJ};B8J3{NG=u5#i{PB??v1JOiA$d@A zQVr%GEuL+EjN+4_FpG^hW&{VoT$xAZTM-(HK-b{mW*_{l`l?=8TMf7z#>_P|#*;~+%IYbTsweXoN1D`1k@6r~O3iwj?T&oC;V`GGHvEw^oQWYz ze3kl?tk(p1Uxl-o?KX^-*OxZGYRPM*51&&#vqdTFuEkVVuFSnrYREb%%!eJ+vNflqBx{!adwSG~vGim8=uiSh2K4;f7vtsa#f+=&Mtyq|3wh~+VfZ?SG`n9%zW|AAt`hk-GaJ-99$CBl`wgL(&w%V)=f z1fxu@_G?^qmQsq+QwigV%!wXWHV8E00(2Fs|N zBNi76b**GAusO7EQw~g7a9f~q_GO3VqOv_K)$a$`u0~MVRvT5DBJZ1}Jv@pn zujQpb##M4&jL(fRFZAai`5K{zjXf96A<7a~;bqrUb92&_kh1$_txL@3Z@H*bV-viV zZhM>1j*Dc)&j(x`WSbQo5#`R5Gb)vKKJ1no7awPnr=Mq*r#DrhP&l2Hl3AfsX1g53 zq*=FL_^_}ZDynH~%D6?3#XuHa7KgE_@?xPxu3H9odYQJ*i_=*%38~MI1g08!WDWXO zjDOj6QF7IC)%{D>q8@_{RSAOtRUbps4waYkULGoN$-2JZ%#ilg8psUCSjYI`E77H` zD)%~cf6-;Wexmj;Rsic>>t1_Lh)Rf0$k2GwcqYl*xHMBVbDz;Zqq@d7jdvS66Xlat zrMqOtlgE?0l82r+96EnU44sXB>TFOvdMML&23>wSn8$@ePq*x@k>!CPNrDucZ z!>>gcUT% zwp7<6-MR5+_x96`#pHQ?He9v3=8F zlVW3V%5ayG1fo#k^r`1VE7S8~BPk>FSbxq0$$EQF-}I)cg^(oZIdr7)j?_1+PNwmTXmM4ev%CM(~)-=_8E&Zhnj|m-iKTDVrfSR(eG^ z=SH~^qtQUJawz8w_d?}q zxpUU5rpA5hmiH|eEWcPP%(M+WcI;X@-8#eVU;at%V@ID|Ic`<$)$=|pn3ZvdONaBa z!Ey;sy)YtoVkvIf-M+xY-D|pzqK#senx6^XRr&mX34|LGhY1(!Ujl{A;6n{1J^Z0BV6%=C>~ zYv<&k--=$}Pt3RFRBV0s&s)Aa(K~UuJq9(`d_5&LEN%8?ZQx5O79#wW*=3$47Xkpxm_l=z_+y zW)E^8tV7*yt-pJ=|I$f}PuhHIzaEY%B)EAkdNGO_xiu;=sv(pybSibPnv&9p`kB>< zl`LfQ@n)e^&b7O14TYQ>k^xH{Q(aB139aezbMY}R+%IITPGY9G9`w~#)$%-lbzWBb z$il(p=}Mn|ANcIOA!gIj3%r*^@UEX9E?Tr?Eyr-h#Na6@66RNq$%^+uAD_qc&5Z%@ z69gbI7=X`sf}Q~2XDI+C9RN^H0D#lu=FykB0I*0IXlq)YhXG!ep;>^(F`QfxsbP z91aJ@$H&21e+gKapC>v%cBp@|vMBuc3lD!ehA^>xP;ejv#C_(fqsQm~iY+MB9vh<+q9?!bH z%auT^2LOC5o-7jIB|riv&U6ETb;Q3^hy)-TnIy>H1B8H(u(PuhwUiX$hxQL?X=x$W zrlzKdz)-fxm2YNXefEEVi@x}}1pfxmrTNF+fJl&$1+p_h0w-nQp9nx1fX1zp_@_aC zv3-+3AO`@KPBVg$`W2x6;`j6u)BKkpq$WfT>L0eJ1w4BxK~T`|rzENWpY%7EKtn?V zzqYyx80hK2r==w@IXSt$2mTtYs;Y`;Qdd_8bTl+zVQ~>`p`ZX54Cb3}!#6VkMTEe& zv#|lfe~Ux{kZofYy1Kre2T&h;*DgpA1tR@D`7Qw{!1TwD#0)@n2z=u{Ak|43z>ba* zGXRYxN4~iPPylEdAPuFG_*M|=qzwt#NkYm5;TsdS(TCLkZ~D6gHaf1qmVX${7wJJE z{o>al9)uH+K;Wz4`?VkYCKMqAh6*Gb>nDFVZRYu71R#Wm02KHxz##o!-Z<`0gZ`yK)=3Bj6%-^~ya_ThGXo|j2p8`S^6Rg^0!~g&Kp01~LgNYJ z$T|(RCwC#S3!spVHAGiF>uFvQ|``3^J6DH$i;SA87$2v!O<;gnL zPEM@$JCcMq!haOLHb1j*_r*gK=kh;R1=mAA=(Vaq-fV0#W8Yg};Qg~#jN=^T(d9+r zXcZU|Hyz1~QD zTt{lPT6!dAjsP0RlOZ)44U;kc%5hU0{3r7O P015yANkvXXu0mjf&**qr delta 880 zcmV-$1CRWt28IWaBYy);NkljAieMV{P@1l`@D|?x4=(7BDb*zQ2%L=XS>Mne|~!YTYuzuwu{6vJr7VU7G-jr zW;b{6SwSA$e<-ocV>b;YjYzRrly!nWRn(S<`GQq;OOXx_4Rcr?>;4nqD0EOPjOvWDwT@N zvY(s4B+BJ7^?DuCG^y2UY*n7{`okGpl_%6{H4MX`UVpDsE|;^q1TxeBfa|(q7zV@P z5P-$S#cMk8+Vb);zVFj&weIE?xUMVtd_EaFj)UiUc>Q;1nuhkdAvul%Kp2MP^Lbp? z&2$^)ZbY_iv$L~<+4(|B(==?`p4U}6fq3^}7%~_PuB=UFWfFtIV6H5rW*`ned8W-~ z6Vo(r)PHZaT1reJ3l?TAZfX(xWf`A|hlJV*3 zDTr{QD3nSibTx;rs(c)cv$#$tFp7i)RpGDE7=OocSX)~Iz_P4F=lSQS<2ZERbkS86 zT~!I9bP_WOGRz*al*X_#NMng=~ltQ5(0EI$9 zOw*LNjfV8PT@ev^QLSeFHP6I!Z*T8Lhx_~c%B;04zW)Y`!lal#fTp diff --git a/Resources/Textures/Markers/jobs.rsi/chef.png b/Resources/Textures/Markers/jobs.rsi/chef.png index f8eae67a886addb0d0a881b4c4da914e28633f7d..61ec06f3c946d70efc4f2f6c96d22c4fa707c0de 100644 GIT binary patch delta 858 zcmV-g1Eu`#2k-`vBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# z5=lfsRCwCNSHEvkQ4~J6F%Dt^3JeZXS|#aXqP4itlmruprol=zE`sUcuIWGE3~>;XCKYQF2Cc-w4%U`}#5f2wP-SuO`o8;eU*YzZAAj=DlN`>y=iK|g?;h?w z?>@#kr~fHKy$nt!le|Uvv(voO9j`_Z;cmAFL#CKuJXn!sKG*;VD%K82?ph_?pq;NP)^$*#7G5eX2u=RRfcX-Yd zymEq8-JdlME*UO;LJOt?Y!rPg@5zqD%V!d%;sCN2`{^y^sC+w?Q>^O(8<88 zun_4V*eNKN%iQDfu+Q)EG(LNaDwPVoN!$|_efWJBr`W&<09*s(*AtHfXyL^Za-A9$ z7Jc}uM}~W^YN&(e9O8^fq7K;K1nNSse#8ncO z5YShyiv&|u_v_M3qHh8cT&~WH0DNm}YkV(Ddn7s$=xP(9^rq8kqg}1;w8UL5r}0j} zxNb{z$3lcvL?RIbT)un&*iJAW^N;}4tiDQdE|(K_VPQcW!)9=q3HYF~Sd83mHv@4w zudg~#D1Q_v5C{mXO7q_!+cNd-=Jk|;+Y_hBJG4W0uU$f$O8~iIbuU0ZJy_(9kx_DM z^Dy6%x1rs6O#27*?v#Yia> zZJc$r4m4Lo#ML>S>HuqZD`u?q1OY&v_k#qdK!07JW%q&RoenEijScKpoXKPiAY?*j zLnUI_t=LQ&jRx6lHd8=Ja9|mbvbD7(!2EtcgGC?2{z(QlHa7P8c6WD$4xE5?FBICz zXBh$QEaRd{ueA@7@71a}PdDf1$>DH__{z!(MWa!@0M%;rFqNX2>1lr4g=jOSe;Yn7)l3J4LLrvTW=&%^ kybe*2eDm$U4gUx*0HEF-`k^T89{>OV07*qoM6N<$g7SfvasU7T delta 985 zcmV;~119|N2JQ!tBYy+6NklLZi9KY++xx9De8AbADgWxxe!}7yeHO27?ld#eYOZ^2%T^D6fS?K9suo z8>KkK zH*b($Ti2hmn>R`(P*NWNc>1|3ufDsxTY|x$;iG6M11^_KU@r?Nei`F-TQdMZeA3K` z@XuuJeSLlU`-ein<#LJF>&?;G-?8!axCX#iVGXj~;==wM3(v0~1e6Y00h~LlD^*g%F?RKM- zGF*xS37AYK91aI=x0^s9kn>@AJf0j0aDD0yfj~gH-EM3)TcN!R6PTO(ou;NH=I7^M zvibe~9DkYPH~)YSo6oSYuwaP9zL=gE6WMw!j~;3=JuxOur&A_}LozuW(&vEex}l*# zoKB}qPmIZ~_08A1bAonVH$g z`+pD!h}vakWr^s@GDie7O+zV#h+s0A^v-9r17>0PIvyApP$G(tKWe4Ez8<9%KA%r1 zrKqc`qqVgafWg7RqUv7KNOqVgdLD>Iqc7<)nGBf{=fa{0B$G*!$z(xYF)&=OpYGlj zfNw5ermCt6fYsGiWwlxbU}Iy0?{D1#pi<-F#lt)Q0Kw5w5fMqJQgVNGRxB2aWH+{2 ztzxlQc>@j&4XJ}{Mq>XBnA+Qh*$s-p00000NkvXX Hu0mjfOJ?gp diff --git a/Resources/Textures/Markers/jobs.rsi/chemist.png b/Resources/Textures/Markers/jobs.rsi/chemist.png index d983b91c58bbe590711ca890faaaf1bd45c8c26b..40e22e5cd26d17e1091062d24cfdf8ee3405c0b7 100644 GIT binary patch delta 923 zcmV;M17!S*2(Sl`BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zQb|NXRCwCNSKmuhaTGsaiwcak$_OEwKd>}tAroakn6Y{ZdRY@n>ZJmUX~Ncv|3Dy& zCZq^GWG}r0(Nm8#xR<$=s6!LC5>iLxLzcUhkU@Rh`MU46yMNue>vo3+F6W-}J>UB| zJNJA)=Z;WHVK=1;c3E~kfxX);F1{F++0ES^(ChW=o@Tu}k`&a5L?UlL?kPC|2HIiI z^U<8fN!dge6rV1?0!o5l()&Q3Uw76)bvhl9Bx%cW(gZLmmYKlM%q=mr%fLzfWuVKi z(i;7XZ$z5><$pwJza~w1cVry?NE_^abN0DRbAQE7!JS7>=;MLgWMyiaf&KmQ8@|je zFpW0)n=jZ&#S%bpOaeg=Y|o(sP}5{!8f`lV6)jsPSY0c>Vj9cJoJxHOaLWx1%K$~oRGfIM!|KAQ~P{|p(X(i zfDh-I`BtWw&i3;J)h1B12k>ELdo4uV)vUxQsKd4qu=Wfvo$bdsjL%M@tR_T&$Oj49 zPV1n`Zv+4EC|Iplw&v>YVH$1p<2uG+JnmD=Yy~e~QeM{FQoCF(%9zt;sk>p5LddhJQqoZmm&2Kyuo;-EJ5h9E4CPlowxn ze19?l6H6koqyZIUN!f>q(F@{+0QTxGxaPYG@pxSM*oMP|?>TkLOEjZm+6z<=1j@D9 zY^HsEeT;rNMVCUws;40~9@kiYpU(%;Xf#bkYL8vXpJWKi1;J5TTU%u(pyJ~=x4ieg z_kW0zZztn;$NvkEc=+()g0{B^;b@jXp>kKe2MSTMl25Z9SbRFns90F~1>e`!(t*j( zE~Xb^F>g>U6mna9v%U42*-LAJ;Js<29=Q x%CqH!Vvxh(Ab~(YaqULEo}Gqb75Fc}02HbC!0Bk!hS>lB002ovPDHLkV1mGC!XW?v delta 1014 zcmVzPe>eB9LGPi?(QKiv9UWEs;nX<+buZ+JeY%V z4<^zL(L>2zN-ycb+ya3rh8FbDgHBy~(GZn3CAXOEN_vRUA{4bWZYoHSj)&lQXzDtm zv00J2v+l2l)zyt@cSh~0Ul`uJ@B97U`_AvrTNeKBP!8kN*MD3kuX3OM@cW_mavkRI z%9EY~uJWYkwW5w)Kwoo}_)EP!e`x{m<8K)Np1-v4mwFE+!f^zCQa>m-e0SXCox<(J z_`&QZZ)E0q=a-MDuQ-o)`7!B=^ZYgWnEA}F%*<^%7GOI9`@?Hu@*??=$+z$EBKZ&# z^R;$%;HYx@nt!Y0!R#h)x; z=K>f$>j6CYOTA9E0~{7%Cv;HI zG|hG)78M|aNc;T`48wprzz;s3kFBuAdSx|RVGW+k1ekjnqQhj^9xQXqqNhT3Q%Yb$^{iB7t&!udqU)5SC?8Q&WRwS%gBNyuETAC6P!luj|FO25fXeB9Yje%;bhM zfdFR$0Y15Qjc@MW&5`%^)_48N%F2!=;Jdya-tv0c%xqI%UM8>xz|`a<4HquZ*w_d_ zxvC;NDXK3olb^r+niK94*3;>t0&KOR*X6?NDt`e$zp3+HFbKfJ#02H43L+>&yS62G zT`o2=+jh1tE+CT?+%AQ5cAHz5IthLpB=}Vjbx@_cx*GWcmC)3knCX*r}a;LxFb}iUS!5^kcS65d7 kH~aJ{0R6Xb7tEdFZ$ZYZqZX;r-2eap07*qoM6N<$f@&@DdjJ3c diff --git a/Resources/Textures/Markers/jobs.rsi/clown.png b/Resources/Textures/Markers/jobs.rsi/clown.png index 994a291f68d728a58985df7f98d86cc83b54a217..c9c792006657238b7ffb00f57848e366b152ef31 100644 GIT binary patch delta 874 zcmV-w1C{)l2Y?5VBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zB1uF+RCwCNR!wLVQ4pS2Qc0*<*CwKnLk%dF+>Ge0DR{|2@zCDVgLw23s5e2Z2p$Rw zy?9XY)ZCIo(L)f##G^!y1}dZy0{%2@tRZC4!t>4BeVfhZ?SI?duHeArZD!`pd^2x$ z_7O@c{7;Igl!Oqz{Kmd>mg#s61rXr|Y=6(UVzJ_85*{M{DP<=T9`N{xx=%yu4 zkQ-3U#UQ$I082{;L)Nf8Z}f^O7XeZ>sicoRe#F$_#CLu`~ctqOjE3a9fSzZ z<+v5bL8t(DzJ}-wOAghcPb@dmW+E~2pA)k~ds!t8KM5DiV>Mmob$!gFEL;iOXf*uS zP-HJM%!6)aIYymHqZ(#lUbS3|F6%l8H3>yVBaTq!WRonr1p@!%2#T^&Dk`Ad7Zkwd zr;p&=)qi=|X|`c&yUC)ifNORo!xavt6K7M9NG0L(n|A=WR>C*o^o+)SQ&28PU@`uO zRbbp^5gV~Q3G*yC+9T-DpJSxo`+YbvJq16vn}AcW%u0<6Sz@t}p&spqpuNd;6c=ML zDvp6Wyz>xFb-SJpe`p%)KfcGG-`~D#yb*%|34c6_#q|5GX`J~a^vU);#t3(xgq}Ts zSvT0a>yYm;K54&zF#f`LmS2my;Fkj33HKB_4Bjz0E`WsT0sI_`c|PkHy&Z+axBz6% z0US)qtH0NM!2VG=>HzYQ@kKM}YsTjt!$(ZTPyp=T1wSQ~&3@kiYPFiuc{`UI@szAo zh+|Bq@{!GEy_--KC_m86IWa7^U50i+fKAAPKfls|etG~G^mWLm*DXN#bQ<7UMxGjz zbG_*U_u+o@gZ`X=q(>m8pI?$?>P60}_*Z}d0Pw%=w(;w^zW@LL07*qoM6N<$g6>G5 A*#H0l delta 899 zcmV-}1AP2|2bl+uBYy*6Nklp*|3PF(WRhXtHcaeI?p+(m;-8Rc~ zrlt5i%+6$XvODwJG~$ED%)H<4z4v|pelr9AGbxizyI0WjvL(<%Vz-r6pcGhv{raCKZr?=q%DT% zTRU##!2RSl07?bUgX^9=zSpD#sQ~&JDVEEKC_oTV6w75Jy_cqHwJLST5fKr8VL^m) za21idSe8{3+O4i#4~& z*DLQu@=J4@oLI}ruU~!3)e9dVe(eD+F5i^Nd0V6=Vrwn!b~|EQYmu7BBQ-GSS0>L5mEI-WKg&e=#e**U1Q~*XzI5slGSbms$+im{2 za5>08hZTSb^4;g$+io+KA7*T1hzBjt#B_EE+-EPyzjBnVZ5Mm(Gfs`a#vi}e!F|k; zr;kt{dC zCjdCH)(CVnCZR6?0cjQr(kv82z?kDYSqD;P368f~G=QCi{1Na*?0FQ}0ww@@Wa_{G zl1}^47Vxmc$3h?mlvQ4~L~L@ULuoJeTRZ;SfDAHr1>TC_k4`bCta5Tp7bf3UJ3i2i|! z%q;gqLM;f13Q2;X5*tgLW~h`&NmHk0h3INaqYUEqK6iWD+kcnlzC825<#W%u=iYPP zx%ZrVpTHQSrKDxF#I)oNB!nBZwOsY%b>*i?tyc3slkJ@#642>%2F=Hum>u9ox9$v* zv4Df);RQdXiN5$F5Q<>T_0}9DR}~nTN~IE9E|*)dzL4luN1P7K`nrNv?`K@d-cM}o zu@@n?J?~)RmwyYP<|}dts~b)9+x3I@=il7-LrK19S#bRNE!K4Mm@wYk$Bq5@{);~M zzvBoVa^0St!lF3<<8T5-U~GBn3ex0hIfB>f3x!xBAcU)gp6v3H{@MfP=;@-NbEV{R zeDfW^wAHlnVk@O>+d;jj4hR8UTqY_!@ zCA~ILPk)ld<-pvhahiKL9^?>048*vc4>vC+2dsySQQc^IbdsF*Vy3gdrfSjHjqV1j z-d;t>g`Q z(1+8C)B)6a8D!w=z;ypj%!+q%-ryaAT&wpLT^|_wM>9`%(aP$nX`v@ia?km=F z#{%mtK0aU$ns-h-Ss*RqPN{y<4@|r71revrPbtH&m-9E<$GoWrKr?c@@jaTZm-z@sUYLNKR!T^rCuX{<8(rmHI|J3t4Ap zCx1g<{9 delta 1116 zcmV-i1f%=A2k;1xBYy-pNkl1wg--tSzfJV$%i$ngVGbs&{q%@(X z@uyCq3(dGlLN^Uv2uVSxn?kGUB1NKP(E$U3-85;VVkwCTO^BGf5wnnZry(CteC^2}hu?yt>ZH+Byr1D`e|ZH9i?6C zRaM1evBbR}ad~EHY?C`rvH|EhQ^TOn$g0VTE-i&sla)c8k)AU(0Nixo;{e&W^zg%GU$QaU_L>ek(`oUn19V?0EWCF&Ye2JS0MK;4Ih2mK@wg6LOo0L~pF*Xy#JJhf7OEX>oy1Tn0`T*Xc ze#T~klvh^8wG}ZPxc67`hg}ymJNK3yCQX;gz(NLTx=i+#9oFVQ?7ExH=hEcv~hKei7DB@ObipCPJ5Aq$Phm`2dg4rzO|x^_mEe&-dJQ6S|Q6;Zh^szy8prq-W#qK+ht;6LPSJ5J33_2 z?UqTmTjuBIwRUGmNAgAZPq^Lg=kkv{9)27ch_JlGV2E0T2?+>?!*q6bMsRa;a~h{8 z3LiBzBy>59dvafIuK?JaY!v2fgnc_M%E|qT0L+Ahvln{-sI%FU{!`i#m+f{D5moU| zPs`}Yh#W6PHWQ!RugLLIWOQUi{L|ASB68Vo|MzZ008@TH&CShP|L6ywZ#2fgV0Z0j i>;|s)_ir5>1AhY2MAyXu$5KfE0000VtuN48Wj$v-TBG#S2dt$B>F! zS1#WcJ1ii;dcj!2Wu5Qm|Mzc6?wxqa?z;1#O_Aq33jSpLaCW$~k73bkv9?)L8n)$1 zB#B&N=G?hdu3@X0YUKiUp=YO4r-kz$kT_uZ#X)TOPbroTV4OrWmS6Xnn6}3cTiiXwoy*O|A<*@`SDAdmbb`?cFaP4mdKI;Vst E07_cCd;kCd delta 723 zcmV;^0xbQq1K|~9 zYGVjq>|_ggFeXDV8AYL+AbW;R9kK_!wS)f#(?xR=0)-%wCWMRu^Ab142st&_gE}aB zjT|S|bDOET?VWUY-<|IJp5Vn^?0>gc^9Gt`DY$<=J^emcu7B6_7T(x+&+Y9my4?27j#{p`mEpYv#^j>%BKWC z(^6!NoIL+HI|JZdF7#y#gN_i-2Ouh{>pJ~@f2!}X>HISQx~^l}HUQ0L6M%ZX4nVuz zR!yf)!*aPC0Dlt1<>h6p_`$(}Qch(6`FuXeE-yd$))~X#{NjR>lauEIV49^s(^9hF zo24ZHeqLWoK%O^N(t-t*;+0Ab&l_XgHXR{wT^HAN=?Fo+UdQvsR4TOxD*4v{OtTae z3aj*bS22IFSfp4i#(cfr6@|iTVi1W&HJMD)QrNZ~V}C)r-Ny6AvA86kA`yUcxg6NG z&0sK~)oMuwz#kSs$OOx>NT<^@o6SUwNUQ^c!2lrymSxG#C(W`fgb)~pkutqarv-5BtR3`D{1U5G} zW1VNSD*$wa!1sOmp6~loinG}jMx!CV@5ORFW;2&?clRSZJD=ovd;5dr`F)FYVsGzr zEVk8ZJ()kz4m27yG%ZE7x(0-r0O5s{x#N7~t4vnc(6khdMlDI|*%LTAI>K=rNyWp% z!>RAx@ANU+DgzKgkk98Q6HAMJPM+fYJmM595EXf@_}@rcR|54IniK#4002ovPDHLk FV1k|pQThM? diff --git a/Resources/Textures/Markers/jobs.rsi/detective.png b/Resources/Textures/Markers/jobs.rsi/detective.png index 73d944a0a712a206741fe5acecbec56f155e4379..b2dc8ef4d26c9ce6b8c46a2ee9d0e81bfb82d245 100644 GIT binary patch delta 1010 zcmV9YI$x+8&F-03ku zaymS&cRV|k4S$Q}serytb@4itu^Ts=ZbWxaI;vs@NVb+N!rkLG%vo(gb#*m-j{6V{d93eg zxe4#H&Y3I2l9Cd!xw%>JmKTfPU)u3=Bn02{E_{8`f`3^HQdn@)#v&n60*cF!f)fb} zLcu6##u5V$Zph0Orc#E&-)=%dh^;w%_9HeotQS*1xv{!vCu%Ay`CRR_Yk1jq2Z0PD z91eFJk;!ga#Tlp%U*{`*8gQYh#}8e)p0$C`9*(Q4t4r)cB8C&Gd{L5$idEv4r4Wk? zmx*Sxk$)?V$xibmauR=ApLEhgNQ+smR(L$oUFzoonjB5EN=JV{t4(J8U;y~s>0~&< zQ*4{fCa7`6sJ?J}g@mz9;VMQ`0YhtzLCII`=p z!6_5wMFB=af7!-tGDBr|WEot17F~&}K@*{s$4k6Y1y_3;z1F!e%A2E`h zaD*Rly;tWd{xKXxvQC45+l7V(Ck%#pEZFPU0j@MAJIxbLBCX0*+;iy+11#HP6{_;* zi+}S|Cg%Jl6vmZ~FM`}>va49}TR=htwiTxG@tf{%SdlZAj~_e^Fan9Z1qpo*$OE&} z-v6E3IpjIf;KtKrQ+21Qb2Tt*xz0wOXyX!E6?(C6#P)yM$Hx94DNC zS57C6*3`t=XiRq1e}YIoL-aml{nFA>o@DpQpM*f6SOOlzHiL|sdjvspQP|-)~qy*kRYJ*0jfzRiQy$w1Yg27H%4BVX zPVBZ&NbD?_9S&x*qu^Tm9F+M+XUbMBev75WeopWE~ z|K=s9?dm^^B`j_vZ@8){9lWrxAOJqR^aiaSg^DHiwLOnN=bA*TY~alMGboC}PUUaZ z);4^>7aZSj*?%9{4Gz+62|S8Nwj|(k3x0VLF_fx)3ZJ~AGxxS++fVRzb!Y^vvPT_j>0MZ$eNJLn|awf^EJsk0P$g4foLW&1V zSVSTbR~M5Mfr+pt`bw+LIGrtG7zUZ6UJSz^oh>@PzJJmx6Jbr7L_-1-VNIM0_7U)T zG5sc%umCVk6IE3)O%ni1SeSm3fX~aRV4pMzDFp&PuhUQOrU7VgZ-1z@?T^MEih#X( zfW?&!05nZIFxIx)ak45jR3PBx1^Q~LF`t&i<*&>^poAmehqbLdp!LLg70(|Ps87H^2x7UzB-D^|V zb#b(#!zuRmYh%pKFOkV)7#J8}baa$tGD#+rA%7GK@%p)E`S|nisLe?v5_RWjcyHU% zClU$8J{9R~5x=z!z|8l5II$C9jcD9ZYI7RZmwq^Ek7PPqWPGGdYOT!aCpwA!)Jd(+ zJ~1+I^%&J6wN_@mVE#AiY_^R2WArH23nribxT8EE(HvYUQ2Xe(@zsO00@1jkbd>Up zkAIXIQtv(F8&dBvK2oNmly|lNt_avjt(9Hb8^P5U+}){gcc;?O<_6LVT#v=X<*7MJ z&2c>zJJhe*fw(q3ErbxFu(c(U%gbVH5OHx>5das56)`r5 zNG>mn!q%1$LWpbA)6yiQwjft1FgZEtj47Xg^J=wodkXEs6*Skz8GX@irB7vkwTl}Vgksb#TdchZzQpz-^kDW-kOpqh9}pA< zrI5Z9WdwmlJ@yjVQnE{B*{7%^=qAz2YVBsx2gG!LXZPOqUVrbd-o0xc7|zU@Gjqck9NkqaEaQI=L_B-JMVfJdsE&SdTS%JHSTk{R?E$ zkT~hF&?!w1+mC=5!C3Nrc!Ate6OayvLnM>QlwfBq(a@kx2j((eQC6ojF3Ouo#vW)K z@`*=-QaQOWTYq1WBs|sAM}Lw(xc~d@T^(2D%T@&^uili`&YTb*UkdejjlrneFn@-8zFtAE0Gq-9POlP-u61l= zt`g>*(z4 z)Qo3cXMZxkWCt!Z?gzS2eDV|e(lzyhPwahoo#^~+^7~USWm7|qw&p`$mvmNCQc2|w zybXm(Lex4orJr-;bGw;~c%06)v@i#4cdX|IJ?O*ff>Z%;9`&A>npA!qv&uU^o#Blo z%;U3jR9Cry^;s|Nv~366ts%yJgcAMK6Ptcx!GAA5&WsIf(6lvnJ|yZU3@oGfC{k3E zdKVPl-``Ko&CL{2#y19H8gRK=+n4+>S^5!0TQ2JO*w|RA{NBVkIn`49Z@*%X$D?6I zzGUe+HsZSqPDa_XJjW^lc#J5AacB|1DVPJ$Vmbi-Q%L7(ZOcJM3S<_{fMn5)888($Z3$G1WNa zn1>$p3l;&;omj$DDG&&Va5!u_cdXpW)v#Cu{s}Muok{tRNWJsz00000NkvXXu0mjf DF!imw delta 1089 zcmV-H1it%&2h|9WBYy-ONkl*7O z36(K%J+!9|b`WHz3ZB-o%QVHqK%0WFLPtF~aY&&;@iH|B<3;3seKWOrQ(0z~DK=_d zP1I)xmlw0P=8u$J_CWake&0O5=lSM&zQ5o52L8AI*pxyyUVm$LNqRm!@k_yR3fg$B z*(FtHOU!kAJ6SM^yf>wjpLrQJvA;gJP%w$2e4MXet~Qh3t$hZ--P&iIc^RhaYzfyd zS4)-!sR^F^#`d0z;&h zA^>}K52Yo==4a3D0bpry5mi<55@JpSd_JFCayS6+dcD|eHumfuPM<1b&+fryv*Go6 z0l4IF;Pd%%CXtnZ&*zg{U0oQ4!Ns~d91aH-iv^p_#((7I;b^f~a5x-XtgFK?3~qIG zuudc2FFg!e*u?7eP z0xW16S6f?iszTNZgmj%iAV5z~kEw2#%S9@c!e+CPN~LhQT&90dPmdA^1PJMRw$K2a z%H|LZ27k?Y`V`dF*Hc$t&zCoE^237%0BD+KexKe~Sy_290&_ooPxXiIv$2!PxaX&* zrf6(x;>wjP090A6sHzGaJ}=g$hNvigkGU7GvJ%Kigz57RP*hw@gWV3mDY zHHiRx(cXTn5RWA=G#gdcwv$9(yfPm&!r^7}=h_->w;M%Ka5|lQ-qyym)&hx7+FL>@-{QS*SMe}YFH z&1@zT`J_1B?%cT}A|i%iNMB!{0QB|siGN`jA|f*A_sjE0M4m??vazvY&IkSe!bSLR zi$o%C#ltHrJRKj;D0xkF^|2z%i$F4&WN>gW16yBTH!(#~_^P8LuQ#HcokvGT%rZ7M zHUdy}{=5>8#ROn_dfN1DYi}?3pVAxcet*A+h{R(tnVp%D(UB2JCyvKrGCDFMvpO>~ z5|711MC5*df6i}2Ikn*Tc%0j}Z)ae0^YZ}o-@BKw&e#41dWi3Tec0db00000NkvXX Hu0mjfgRl{k diff --git a/Resources/Textures/Markers/jobs.rsi/engineer.png b/Resources/Textures/Markers/jobs.rsi/engineer.png index d561f3de462833bc11da7da914ab95b67852687a..353144650a5cec997ee9c2570bc8540637864ed5 100644 GIT binary patch delta 1101 zcmV-T1hV^!2;m5jBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$ z14%?dRCwCNR$ok$R}}w!EgC>s@edm+SS{-2vJS9_nv7;qlBooZFU!XTUYQL0>xFBMsu2KRKDSt(+)$;BBZu^zuaP-e- zJjwmeIlp`EJ?A_3-g7TBO+z|uGWw_@Jl$?6jLHu8Ox=*zvo9_JL5olxAOJxQe3*(ufPFxQnb^KIIkT+F;OKY7;*}mKa z=gL>{$>crox{vHQgJ&OE$wy=R2Ae9en z5nl_2Zw27A&coKhMhsc~QqPvs4nXrbG^IvWx(~N#R)5Wb*ux0={C}gVWGl?C4B*{MvNv(;{v#;#+3Aaw7361U8m zg`?ZoO8LXinDXo~H)ILueA~OLq)cZFLMQ5aA8D_^(0?0_;kCL3^fm|3UKB*NzzftMERW0> zZHUQnIcMN@PrS*CD1pU%U6b0T;;G|u3gEMiEv#-B^aU_{+lQarXYux3FV4SJhqCsI zNxN_JmjRE2kT24|qX~_RZ78vo;pXpc#*|_f8o-9Tr$_Kjqy&+{5tu99#QeTX2nvo7 z4Sx$P1=6-yIHx^>HslmULk}?BGDBvd!#9BN<1xwa+>c`YhUtq`dc2yT(7K6ZOXM1Uu@)*-tyU`^7kpH)IJoDgV+kZxL1x^~3#F|3-go zT#ZXmIJ*>~V6Ps8V#prgg~BwSYY)OUKLB4}SnwjrNjg8*?oHz4>0Csle+3u-fo-e| T@l_l500000NkvXXu0mjfHpnDr delta 1014 zcmV0TJhWGIYHa2RxDbPSz-Ef#GVu0xn2Y`A_){0+2h@lGMaw49nHaa1ODui|=w@&0Vg59r8QCAC< z6;M}e=($3&>X?4IkKP7%Wi>3vVM7TIw0peTwc;E2*?L~fjsQJnil{8GQ~$|HuFn+E z=3Gk2p;vm)mVXkQoR4IcGp7;g@dZ4|NdP>_N%Z(aE@`qOV4fZzHm6fuWM^bdqqxXU zY)%KDvcOJHnUd8-wA8Nj;@VOIfVK}$r0m!IXE5!ikJV9Fo|k#D&@Lw@UVIrxNWI8%&-GAhmE+r5CCYbhjV+OxCs>5_;xuZ5}V(rb>GU~z@XvRSZ^h(fmJVy+4^&P z4gHIPr+)!(m+L4pL}H}mrHi4IAHeJ1!rAwrqkHulYj)tqWms+n%~?t?7?hq*22o`2 z5u)7POm|fXMTX#Ecw+!bbC$B)YQ$N=ssyHfgYSPbWJA+V`dSbZwJHE@Rhhn5WtF}b zL_^cgjJUO6Tg_Nk-N|-u4fiLfiO%WVl&4XEl7Au@I)Hb84j6u6k*)4RZptcq#8%qX zX0|-`D1+fKpf`5{CggHQYP}GNGh1e(>*zLI{7Bc)ZGd2Q-UcMuT<$d(z)|uD(K($_Er$N*GQZxNMw?CG+igdiO)wMHX{aut)Mg|4_wPbF>6{51I^8Rc zYJU?9hQ~N`x>o|2|6>V&=)*!^MA%8Pz6IF?qw2^;?99Axs&(KuR~iycYZ? z`dUa84qiYAAy(Eggw@wC9Xb6W0SJXbk|Ze<&Nah23FHg^I{{1YfQe6aH^WELL&mv% z$HVPA(El}r^d#^gD*{<{K=s%NjVC$Su5V=QA8c0$jVDn(S)C_40>}1ygh}GR$ff&P zg(b?z_It$PecJ&@Cg$l6+|96m{zHV9e2-(Zmzi7Q{5Rv49wAEvYFrz+czKW-*G9%B keox7Cdw<|=hTSUu0$(zZsT{E^pa1{>07*qoM6N<$f+&vd2LJ#7 diff --git a/Resources/Textures/Markers/jobs.rsi/ertengineer.png b/Resources/Textures/Markers/jobs.rsi/ertengineer.png index 629bc8078a9e8abebf7543da88f9ff7018285cdb..c6fbb1a540a51c324c154da41c66131c8909fdbe 100644 GIT binary patch delta 1043 zcmV+u1nm2|38)B=B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o000BZ zNkln6&U545J?Xf^so>SEcB2NK@ozB zuRRp(K140;t`zi;Jw!bT!5C2znUWOQFOl|-3FRu3LCodtBQsmg~wD?6$6_*z=(|w zsO@LJYP`O_p5@9}6{f6{jKyM%gt@J>UfFkSc?c+5cg{0TQ6KJE!~K3Q&=cx~iN?;L zXKvw8_sVR60e`uHb3^z`IX0(Q8UXI!UZw-_g+oq9sko{K(i z^C>Xt!&{^MG1O|wCIw_buGlG{OxF`lUKzfMnehaMBTvxmZbC*u4*YlaqrAKvU7|~1 zaD^O@gAceIsJCv*vMm7=7nEVw?N~R5!KeKW{ffHJ2$Qt)~ zOEErfZ1~gu$MY6_tI{qR0Ww}&8_*+->02?tMol8)ic$fO$Hg|kbYj^_=ytoM0kdJ8 zj3p9NR--q8T^#KQyd~_M@=YHU25ncfjNE zNQcAm8Tt@AuowalA9k|?UayxwN@!4hNZWzBx_>%3J2Qj)yga;5BoN%8!T0YJv_sk0 z*q&qQoj7^ilH1zakeic(cM}s>rRPmB7!=D&LNZ=dT#O>_X}IwBdEjmnE?xf5(xFSp z=ku}b|ICTVXR+c$6UQqx%89cW^{#ecwRnm$)uUCra9NBXuDqSn?{K~Yfa?CfMH zFMr-V1(TaCnMluEL+fq53uN

2I6D%Y)h2*5S6s_cZLbc30raq0+yscaC?4L8{ zI}oRjRLP1m1A*@Tv3YvbH;~C^J@frY>uuQr`Y1)|TKf~WkG@9Nqt^>`eru>e?&=c6 zUcE4#5Vqui{sLy0JMO(g`8o~HhvPbTGAA;5$GskFoH(sp3Vjk_0ByqK9D8tAYzzPZ N002ovPDHLkV1ne>{h9y( delta 1190 zcmV;X1X=s22)YT7B!2;OQb$4nuFf3k000DZNklD3Kkd4ABZ=j=T1^M1eI^M5?=`!++n?<3~GJ84#eg0OENx>)ygEVHAHW@KapfYz#g<~~f$ zT@OH1lnsCkS0=l6e-IIN*dVvtEhp=p*z9}E=z(hk|A=!q9Cy7B-Eh;^UKAETYza=( zt1Pc8CV!*C3jzgei-?VlB_}7BO|QSfikw_x9S#cCt~2LkRG#IzQkXj&6resz>)tqDZv?CL;75P{mP&%*IWCg4Q9N_K4tp6oILecLeA zaIc*%<}+~hZECX)l3ia&QsRM-SqNQ%-a0%B*MGp(I_xoa5SaDEY(zj^sPfW_FO#}Z z1q}afi?PQ*uLsY9wb1JcNfELWe)8cFmJ~p%wt!Wujj!wKGD>i|;S}0Ajp5-T6lDTk zT^(at5jgsN8&9X4r{M^=)`ZmX?{@qUBH|Dc*bCSy}@pcRViu$q8|^`ufS-S)-iV`GTY*#D8(V zTQ|{MJ8JIFv0Q-UnQ>IL{%$Jo?i-|AA0lu5qn!8YR^Y4&kYgogepk$o=ewVJOi_7B z@l2i;jcabWjum1ET;021aS|>EP2zo*4&#V|q-) zA|ev-QF$9Fj~n1VeJH4EY`nW~a39R406v|T%aN7iFZjRSpIoqZeE1Cl0g^N+W^d7Vjf*8S~r(Oa{ zMj6plAQes!LfuRCpgu$@V-KY_$pw?U^`Ogvd+N5|ncwYBMSpkOot|+y_dDPDcFya#&H8B*}R9csvGlsZ`3Cu!`uu4ya>8d&*(Fv$NAI(uEUnQaFM2 z?rVd!A>i)0xXZZH>7NocExyJEY%!E0fpjrDQT`$k$J;Gk!r=0AmAP3CJ?LW{*4KnU zWV!@(#^@B;M`jsfaEu{8wC@6>9|BYaD#nNMT~Icva>qmM7sTU{Oi**jaMTO{&`NSJRCM%?It*+#yBhgBy^iM~`YXTyuVlsp8n)*P00000Ne4wvM6N<$g6B@bN&o-= delta 1082 zcmV-A1jYNL2hRwQB!2;OQb$4nuFf3k000CDNkl?CW8YNrGiF6X?wszWtW(n|a=6o`3hx_rd?R4YSOY*k=&S z^5>M*BHP7!cstGyJbw_QJI{f82QgmEb3hIvh!hI>SX8`+qB*xDlWAvpWf}6YvN|uX zEYqIZgJq^7D-l`&)38JYs?{1XAa6spR`cg-Z3D@a6zuRygnrO8EU}#ereSS*dm})> zE?}7{q7aCj1Am!xhDXM8?4>(k@dFdwJ<>|SE&$P@5SoA>n1+Q26v-j1e|?D@nzRP{ z56le16fL32?NdmHtdIHAh^Fac8dhZYk;_I)Xi_;>W!_m|OBu(f8F`1q0<40wQ)~;Gk*+I`d&T~iAX5PjHIy%R8dqs z&n4ZKVgAl-R7J)0yiKT%V~4`tvJ)no4T;BXcSu`YY>}rzU>pdL3nhe&Obl+jQTw(a@ zAhffE3vThr9M8q?=) zFn1XqKhxMp!?WP^Y%|K7f}*JCy3R%8Hk<%HhIr!X;JM|gH*ks$i}n)VOkM_{t9t=+S~U8K>cs_N5YJBADFqj#L%84W_}0PP2kl%5U}d~QDC-j zKfQ-Y4*BaV?vY9{)E!SMOsoV#2<}s z1 As{jB1 diff --git a/Resources/Textures/Markers/jobs.rsi/ertjanitor.png b/Resources/Textures/Markers/jobs.rsi/ertjanitor.png index 7d548c26c6d9fd38945d414606e8fc5a7dc1600a..04b805c2c2805c4f0fb6ccab365366b4e7cea536 100644 GIT binary patch delta 1027 zcmV+e1pNEr2$=|wB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o000BK zNklg;J_z?d;>dwtqm7(pQ~iGy8UDIy2wQ z&Ta{%6#geAL?cWH*>%)8Nz~CK?Z<15YUPytlu`%FzJ`}x2=2IZjFPAV{ zrdy@CNCs-4aXSTA>A^yyPaV%8uv)9H-#YD{5kTX0b%tQ1?qDh=nNg9@ILGNhqfs%NTb+ox2y=3Br~tEI9F6&W>(an) zT*v)zd0A=ze=OL5U~O%U8A14kNDCN8qsZsxlx#mOT>+e$V@NoiP9jSYE-fuVVqzkj z+wC?f-+xvsNZjLbgHowteL$sB$#V)Y`rO=HSXfv9zuyn)LmH^AHbg`o&Jh8W!#e@> z5CyE|eLHY6?*W{@QVU(r%9*sPnFiV%&fv$H{sC^#peCHDgiIM2bYjJJ|Z7n}jD zDviy(>G{&S*XNU`54h&%Va8^I;qN@SX5A96zTU{V)8&C0T{@FRIh2>B5w*6q5{v>z zPk&Dj!+AL%yt$Bf-ffeA||4(UZ9+`^jE{Mv3 ztgI}W5v&QU?&Ksz=zZ|p4|rNugN3)axEPfK`+AVD0$W>UM-KTv`(F?b+EWU;ySo{; z^cf?BPtWjYfIj1FX?hgyzGeJAALl^`BAMv0BDIel`Pd-+YcEuL$jp+hlZL z;!zuLr|Y5T#|nervP;D69pc4fq?iVLKL+29@*sf5uU!sB9}d5mj;b&e+B=N2;phO7 xB?TA-!raytx>_~b?Q(Bk<1k0)?S=jbFaX;M=E<`ig3AB^002ovPDHLkV1l@U>L&mI delta 1101 zcmV-T1hV^?2;vBkB!2;OQb$4nuFf3k000CWNklj&Opnb0-K6s5+f4=-D0K*4>Pd2#e^q)HX{09_TtP~)G;PQAOi=CIZ7EL zFo-E=MjI#4;=;0Jija(Pd}wJQ8v6S&eeyo^{(k3o&-Z-$J%8t(d*S~+l&v`JFRc+- zdkH^ube`N2mQJffX=#ldd9OYayQ`}YfL+0WjE=TzCZWlpbYG1eIbILZ|BtXrSNCNA z+&yiKj&*3l)TBVF?L`nF?YXC;1O!A1>F&Oa$z;+32WU`WS5~Pw_LSl7X~Sd=2Z{37jn(1fCEK!_d#+1U=}=Y!;AJEE}!lx-i=>->`9zC&cDor=jK zrUKq!P;?CxI*X!4ft{Jp0?`>+1q7$F2u0V3_ka4TDh)O#u+T%`Z5K&N$yhC^AcECu z0fhGUR_r-;zH4s<1dBBl0IMaHq@-j5?;M0XeK84adKTE64|%wgd`*2jFRwt#UVEKuLmrF` z-!L_@Li!6~5e548p2GX{VNIB-kK?rRjUN*nOIdG_~LLLsPykwQP*Aw;bi4Y+5ii zT}mA}(Py`3ojqF%%EqB71qO2o26G7_FcWHs%=kjW8+Mdn*ioXHfNBN0o00F&T}A{# zN^HeHZ#Kvy&J(t%e1_+zGv0S^%dA~4_yr6K;QkOJLYR88V9p(L#f Td(7G000000NkvXXu0mjfdrSa1 diff --git a/Resources/Textures/Markers/jobs.rsi/ertjanitoreva.png b/Resources/Textures/Markers/jobs.rsi/ertjanitoreva.png index 24312247a8456c2c4c77fb14980fac552bf12cba..26d17fb0710afb622551d00b3a1ae03d1f1ad507 100644 GIT binary patch delta 961 zcmV;y13vt@3D*aZB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o000Ad zNkl(|;Lrcgr(A&OPTlXXp3( zz9TTkU?*W0>@e)O1AG3p8FY0d(fY;M@xo!!K9I2_F7a>=yKW@7^b14&N6%$WKNqyi~A_Ok5;;8H?^v}L|~9d6ZH)*LA_ z0{A|t?1ANE(tlD{$0B|YeG5mdNx0wH27`~Etw)b*Im=Cm^|oAXUHcyIftf?c36paY zANP&S$Z~cHJR>6l8hQHt7koQVK|I7rBR{sf3S+{UkhN2=l@lii2iZ`4Jy;}qXnr1g zT3W#C^$HoCLp(BDt&L!->0)}lo>p;jG3)SpSzvZn=6~V$cK#n%+9g2a7wjf5o6STQ z6cj+|(h_~UJsw&g-^58S>m|VGG?gxx7_Eko^eZYVf^awtU7ela_xp*~>2y#It$=d+ zn4SfLK_M$mh{n+X8k&ZO#53uh6PC)5MB_ep2=%g-0gMhK7DbV;AM9W-7$6i15qA6S zB!`BT@_(uw;L&ryKgAvx9v-GhmB9HN{_0^Cgp5mYEWe%7o0w_@UQ>*k8@%s$CpRVM zqa4bk9_p*gz?WDXXuu%h^=NtIXiyW1P*W=ToAoZL?*Xf!8{A-Lmut)5{lqGqKe1QB zA|#>#_*p1IRcW5Ga17;n!>Y;vrqFW61h3r9)PHRA3$xI?(hr{&8VJK~Nob`O`tr`f z;r;taCr?`iKJhkOvA&i{=TmnKF_mZ>yBd$&=dWQ{{1K7yscTlk3yaHex*}gbnkbKY zsISTaY$$Hr>2y*PF8vmPJm~b}GgP>1bs&9E{$i6eC6&`TuP! zpPUNF4Tc!$oQ&nEP6c$g(~Ad+n;7Z7Zb+-^Rc8Q=Ve=^gX>uyp8Q6H`Dj%tIU%!kq zfRheBK6oQ4Ur7G)As_d*I}xSj0H274Mmq1&)RPL3kNY$cr8$gjs{}mtiTnVBW8qCD jn2ZLJUd?pjj{pMz$}i{$Z~s})00000NkvXXu0mjfw9(E6vuxXNZM|g zna;=S2S%kc58g~$5@M(o+Rbq>)3Fni_Pwe*@8;fj&%OWizklca?|ldUZ!2hiH6U#} z65>|_($<_1zb_yw#d^%@2A}GeLoKh;yxGgZ?ZY&0@-le)FbEP$4BP%w0zTC*jrH3| zrBamYkdg^X(=Z_uG&D3Kh{O{yOC(Ga@Tqj#VX!IEH9uTSpZzt1lBw@eL&3iD6zh|r%tz?wB{NF?KyFjrYw z+z@KOUS3XrdOy3`=Xv`}VORS+{ptPK?d6u8gM|pRw|{j=IC7Imb8~pAJjCL|1)F|H z2f(NLXb3fOw(E1#xTY3*>r`31I25eM(S5F9&$hJ_iG+&~6Ul@r>}6Bnty4vDC_qkM z2M@Fmj)s|R>)`PZK4h}3gGeOID+gOxSfn_ds9x2S98G9Ia4OEiS6WX2Ff~2JM0$d$ z=_v$Ar+?E(o}|<1G<_SEB;c*}in2iggt@s#IruzqC=le{y=g*$V4h~qFgG^`A~+PK zkh+x3qCHL9n-~}x;CbZ|>Jy(W=YMGeiP<;! zg=17yRN!*C0B}`SfwmcOy^%4PNTp~!+=_lj$1n`ClNpj)a!DV{J{GSXX%ly)i%2w5c=49nrHyE|6Yrf6 zUDxUA=~@=w)N8eG?>7SR!=RhN1L%+445SVaIxcN-hnXoQ*0YmYvXfZ=`Y)Sz4kjb8=Qy^m%hx&CIZQAR#Nluh zozk(vK`;>Hqs|!TFZZ+i9rKlzDFQXsHBwU5!=<5iHp!{t5a-96};lpK{lIV{2qaZHv9MVEZ6=7MmEg_sf=^C00000NkvXXu0mjf D$LK>} diff --git a/Resources/Textures/Markers/jobs.rsi/ertleader.png b/Resources/Textures/Markers/jobs.rsi/ertleader.png index ec540ef750234d8392a75605444c9a9d43fb5991..3c510e68aec5586e87234336af34cbad0402f36c 100644 GIT binary patch delta 999 zcmV{ZpaJ5682M~4YU=@{)l#UGwzQO%=lgAWk5-VczJJ0bo86tAc{BUlnc01u zAP97tRCW|$j^p-i?P2c7yHOvQT$m`$ z5diX~|BMUB<$osnG*+YovE8iZ=4QG)xUq{rd%K*xUN0>zE$!?+rf?QWw7HUNPZyra zV~N~?TPRr;AkxJ^6W#^~D7%)TVE79?u{IvVH3Ihrq#1H$}gRt|jc z$AsD|ZmKrcQperLY)yooWAGo5xcw?2QYxP=oWI0`jekZ1Ed~~3zSH5NwYA)VfBiOB zpmb2BJv0I^-rnvOcN!Is!q1FK1mis4Kvt`X+5FduqJz+4u?RVsbH-sTmD-RS=HO#J zUtW?v|8;p^a0Ls&MEAN z0Gta17deN+!9EH!P#=!%Kxb#Cu$9fy8NHs?Q-3M)`+hLKgh0Wyv5i0jUr&`46%?*AqROy3eo83C>baXb;F%x0E;hkljjE&y$$Q>51DDe@;Q2OWDKh;e{y!Foxb z<@vOpOt6$ge`5ayr~YG-Pa2Kp6^u_RkE1iW)|^r*MD zfQLEwiX-s-%?s%rNZsAtaz4H8@0XoGk6^h(k{tA)ugH4vdkHcCUc6(GG{io#3d7bHZz*cC>oay%)~7; zAfN(EQLc$dTib1v2Oosr9;hA2R?ZI6V$@P2AK zw;*3Ovj(q~)X5v~ychj$y73DD**>4#>uxfggeikr!Dk%5Ig*5@61G#!*UwjKJ4r;`qvn!hvU)AZP6Wp0u5v;@BY_-z2T9r~Ij zOX7IYKTdZ~vuS@OdH{|dt``tAO{cp4G}ZN|iHnOv(|`1c{FuoOFoD34!$;-XwX2MW z!?-itJh^o#DvK+s#@pv5K~bnEujG^Z!~g9RxYJL{=+1)xBq$1+rcv-a(VwR2Bq$01 z4|g8Koqp0V67w!1ciNXyd~r8|AV5}T7I*I6;m*1OR;RD#{)78)w~Oq|Y`S~y0m9~s zd!PpK_J4mkFA~OjUs=%LPEv@+6inT}smOBmi8l6$tQi%_&3#qvIG80e9LL zQhZ@IH+P-FVmkvUNMs*88XLuKkLS_YD9i|Fu{Ch>btt~D2X-Oe{=G3#h>3t8csqSy zJHsm*i$JD%2<+c?fQg9-4(vNH9bEtsiZ&Kuv41tt*X1{aLhKTRZZWp+15}5D6jurW zBO@aKe176M@$q(!pEw@j4+D_mO2Of9F!s^=5Neq>ftc`ARaD8;}TcgiE($)iDwOLu^N?|-4#%i;1x$*MCO8}tQ6?CUF@+H`;R>B#DAk2DN zt$)^Nd7QeF1iM0{VPcYj`+(r{jiG58iHXYyg@UZjUrSzYK7|_!Y4x0j7&S_1ipR+d+a zrs?$l*2DI#+iAbuj`PSl`nm#SgJ{(-kB z3B-;j(Lbw2B~?|W^wknkRaI0~m1jIvRi!M#H|x_h0_~k0tjo>+8w7#%x%sqpb#0i9 zZ7u;_)1#*w93Gk_8yFsnR%WK25i&G}x~9pRm(~FA_;G-TqocFr!BB`7latZ3$WG`L z@dpBi_JJX#)K#f-PBk$R#vce+REH{wsyfG}e{jH%@4o=oN2P4SI8x*Q0000dJrO@B+=n2nu~%)XiTcIN$N z-pq?)+cs?{HPJScua?P*qR3}W(~MVuL z2a21ahau~jMStzVc4{7IrqcToS$T_m&wX_F>Wz)NFM5nXp-|vF6b#W~ev$n5{G4Mf z^!;|f-LO-zwzft+Jw0S34GOh~Xtpp*AtS^MLq0!0Pm{`|Lb(Pxkk99pmX;P9jtFO9 z6g1_VqE7aym6U4d)_LxGFMZ$>i;quIJRYZ1DkXKx;eTb$JM~Tq3{BA7Xu@?}aOD7u zx2jQU>)J^NK3<_@GP&ja@CZv#<0q|}Gt!B_Ip8V;O)t+;Skp+SaavkhqDUlyaNty+ z3Q{l_Bvn;OXU4bkqT5T&DzfA=kW^0+3SNj^ zgSsY$5ChJCu(6P5vss0$vs+_PDzkN-gaAqCXuUG#PVP)R=lr_rKwn>a!NF79h@i2=e)$YJ^q7bFSm!1bRUJS=;br2y>-sm& z1H0NtVJkm<&Tx*gQ;+#rhxMNI0-pKm9=kWZPo8zeUvSWz{)L^G?;93*Qi=t&o_R)w z7=KJ(mPu#C?yT!$>}NF5*lW4Uk`j#xMgcK6#*qKF{{<+!BEi5{T@)No9Dp&C-2>w0 z$Obvakk?Xx{uu#o?03>RZ_1TUHRMWGS#q6C%Grn-f&gwsyRT>XCB)ewMR|rCdU190 z6ajQW4G>SPH=h72wUxv#B&;)bVOMOvn=B$!QwRj~Wp##16>tN7wBA~-VuF4NFaRhQ V)fG^BHXi^0002ovPDHLkV1gD{z_9=T delta 1137 zcmV-%1djX32ZjldB!2;OQb$4nuFf3k000C)Nkl7%g5XXPE5#`V(ZsiBPFDs5E`7zOnLT-uOA6~uuP5)@LYTu^UFRZ5faacL@X;6h?M zapE{lxB#`I-L+3KiBk!wLW+mOI-4|6oOJ~!M)L04_vZcQKY#P)&3lIbyLg^tlCDPu zp!#MC?|2M=OeXDMofYHQJSWjZr`40jA`p&9xx7vw&_Ziw&gn1d5!P#o*Ai$UvoPlxx8XVv40cHO z%e`1d!|79%Hgd~Z0M=ZFen-4+6??}--oN~T1Ofqa%YRu^rOo-}ma_x`0Rn*l06k;w zv(OdWo-vVE%nwPXW_T;{Hn(nlL;26LGhQg{79BktAs!##7wrp{u6T~bcSRr^>U+#1 zMb#);Ch>Sb$>falymE{dvRS6U&F7@}wy#A5vfgYCp({S+;eL}G|U zVrZA7qJI$%=|?Vwt8J+5@vu;MfB>dx0D@_n2v8{Gp+*xx(=@E&!Kmz)x)BJ4bWs$| z0p9D5j7|{@c2FIiI&{9OXoQZ4Lfr^d-nYUYZ@@gbLx1ZGT+s2Zm`-DC99sb6;p|-6jRPk|X%; z^wl#_e;0IL6Vdv?^Z9vHO(UI30bjmEJolj_y) zu#%9wdiZv%8v)-$pKV;#xOaD&bAxBt+^9I7elieqyx-iYu(?s;?BE&hO;4k$8lG$C z@qbR#k3d}li`k4vRW*Xa4ggkGegnXN%8$nf^9xx#KEZ#gnVmGXb%bEB9Zl89X6x62 zhU#`l@CA9Xvl9SKZNsz-=e;ApuC9__`@=PEL&x!ncYen)l{!bUXkSN+*!R0SF<{ia zUk%@g)HrMzw$bHLk7xTrMw%38ZnMX&WPf9Lu1~{9KiWGGfrl3OCUwAmKeX7bR8rIZ zHwmoXM2?*X@05;}gt#^ASP<-QD`|W0ozgjW8dh$)BjIWZWX~gR4%cdY4POMyG>OYF z0BI4Zy1$pYBOtJH+qRjWJGjWjl0~s(Ip6ocb!Xf)fv$J)bbTtKUI%URGL~ghDryy- z@zz!aRkaT-^TG{=QgHv{qc0<_3G{S_BvQNtldu~33codYKxZ{_1AxwnOK5+4C@ zC1QaZ?J#4cz{MnN0C5$_Q72O;h&ip-*-Jw zbeU|-#xw)rh9z-21*y#JnfE!ZEQHDH|4R1^w5Mcy2s;I z*4ybMMSli^0m{qM^K(G2*K4y2F#FQdQktEerAQ<~MTJJHt+gf1JW-+o@WY9Sai{{Y ztiH7*l>U!#+kqhAYdUOZU;uJG%YE=m9H;huuBOriU1qKHP$m4Yj zCX=a|5ov-ywXf2eKyyZa?FZ-DIC`3 z9GID&rk`%Nv>l{d$K{I43kELzGeN4e2Mk4W!$S+0xG%}geU64`&1qB5xSHc9)otdGFzYn4j!fsiV zfHyZcmr?@TdXR8{g%{C{J5t_NdgjWnPfkV!+1^J1NbN&B_LeQ zKA(>|ySnIXQxlhR|u? delta 1107 zcmV-Z1g!go2#!-16#(iNc_1KbbLIlcEC8*om$2LIW+09AfFrk502Gz%#^*hwJ6T{Y z%QAMm9a)wM27g-&VVlZ8s5?NBYd1&V+K%K~&xfwt>>K|TVSNyQ{cnCss3)M5#2^_8 zKxl}9qx+RIi0mLt4Z`p&A6XS?{w6D-ZZn^>gfYy`-6?|grBINsBm58m!0~PimoFPj zy-KF0;NXG7N-Fa6VRTG+M#dmNPk9i$cJQ#NDKHeR>VMehZ)bXX8i1d^{#cXe>~d@G ziHV666+Oa{Bkvi)j;pjO>!es=IW~_sJ~18@B-v`!cvH9QxYAn_7e8hbZp=C%Tx~T# z4FLY~0;;QPIDNW_!oqE2W@HiyUB~Bd2VigYbDTPLlA<#m3P3U9N?+_C3{8R8)d)b6 z1wx?#0DroIopc2|BN|HC2L`SIf^Ui&DQT<4$UH6@z{ac-!sV^S>uO|VtR8?hmWSrJ z(`n&)WUL;q3rgB*5w2MQ(B1cZ)J(+8K<|&r7He5)(VgjA!rw_K?4%V*0Q5xcW6|Pc zc&m+}m!E}OZSx#ttjz!c4#yTM_Eh3-sSF{ zJKUFS+ zuI%;4Me#W|y`3`vc>g>`$-S>=@(o*;bANHiC-nU6HjHcPGz2x-v&aoiNP7=Razhi! zm27sNhEXzgBNCB$N9Y@p#zXIce~oOmR8h8Lm$2DVh0T^KRG#{%GBcQ_OVAPMz?tWq z$8+X6appPc2y~c*Ggbn7TDkz3nNgarKh)2hYofA_ysP^1&7pthR%}m87dbhbwM_N! z@Ne9>@yk4&(a})=RtmcSNr1P Z{{?}2k-Fi+OML(U002ovPDHLkV1gc`A|?O; diff --git a/Resources/Textures/Markers/jobs.rsi/ertmedicaleva.png b/Resources/Textures/Markers/jobs.rsi/ertmedicaleva.png index f5633c2b7dbf5dacf44aac84a3a8aafdc8d2aed1..a9f9b92e28f8a082574ea5d76ce33398d6b44779 100644 GIT binary patch delta 913 zcmV;C18)4G38x2;B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0009? zNkl8L{%w?Y>wI2D(!DMfH` zXz0=@&?3#+Y#rB>3@@+{M@_y@Bi=qyZi5c zC0Ul~f5Igr!jdFiI368HhEHP|#A=_9x7@)%5rujJlsMTsztyX!I z%VqT&{8t~|cYg$L&6~uQiV1F>kSd6iUV?6L}WPjG7*8nI7 zM5ECj<=q1SIU@$>N&xEdaf^xJa*4DY~lc5ekKPE}PAgkVkp`SF_WVgp-q#yrEDG5XRJtMLJRp z%_?4i;(u=Wp*`UD`}y?P5GNCgT`m`YBOKk|-7>=1d_FG??1AOwWsd3A))s}sVF}>? ze|>#jmFZT>4M=gjvQ8H3OmD{`#{Kvsd60O$UiJb`pI>^w$}L{43N+@h~*Yea9J)2Fv9>ipBC1%IV9pSI))ho9v$nauDWh{xl6zi~=V zw#K2->GnGK$qmK_hb_8)`wFjt9OSVM>xVJ`2_=-LQmNByZk_d5;KY{>eFl&dMqvHW zg{Y^jKAV>V-+xo)?qv!cUFWL?MZbP_UOyY(%96Gen`S_FiA^Sxe9w`Tu~_HbhwEy@ z0Dr^X5Kt@@)usasx?dwQtr=+n1x6$ou%3crN+A+TS65ei_=47x^+Ugkp$y5VeJN{= z8reUiekB*lsJHtK>;WX0(%HBoYI^}_@G)=XF{0Z5)OWZTkB&ql(N_k1%tKCeO;bZ4 nT#t;`x*Ih3gLK3{0t^6=#$o-p%98Q`015yANkvXXu0mjfzTda- delta 1165 zcmV;81akYQ2cZd&B!2;OQb$4nuFf3k000DANkl&u6%V`MD{ZidIh><%6F2eS&*y#KAAj>M{NF6C56Z3LZ-FPR z56VX4ZR$1ozOe(mntD0Vzi;dSfB+Pno00znAgvF|aAuftd8NfyF0U}08E!VE7l=^8 zW{DLg&KIXnx7B>`(KGx;_vtY*>J1!i>3< z=Vxr*U_9Xefq%=~pE7)au7n!_KtR_95QGv|i@StHp9}$>t``fvSafYb>h*g>qg#kM zO95X^AD~{p2S7Bs1*aHp{(Axd=!++0WalV3D;wy~n8SR3V-|orcUOCg8CpCwd028* zmU_KTf4>&+EiV^|Mxy{Y#lq7En3^~&IXlbVx5l`7?SBgOdcEQCR@>^GRbQLd2QZBc zUtc^QDt1>9R<3U7A2+t z;MS@j_!Tfs@6<~sl2leJ_4*YLbRAT&#XfLpliA)F_qR6#cL<~l7LXDlsWO)$&SHejS2$NsS0g7 z3szBdBZXr*9+0V%*3y_p2FuR1=mjth69CJ$aEb-;iw;9ubpY%|2XkAxZLaoHAP@b( z>uZoqBmppu45neSchB2?;$$M}`#pQu60ec|CgkXaoV)?t6l@HSf7x_1=%!vCof15{U$=s-mhYrR8GBb0GA& zEz@txsPhlA`X;9SdJ%xT)hcmSW#!kofcD45+fV;%cyrPAH^j%Eegb%d^BR_IdCT^(vAH!ju-E6Vw`w|Bmw(SO zY@a5weVWMT*B5b0MNGp$c}Z!}DKQ1pFfa`Rr&MI~Ym00@5^jfe6>0t6JR3vao&Un6 zi;V2pNv&1`ptxL$X#FWsVlifK+yLPH_a*?a@;1fg(i0&<{V%Zdw)dXT`pMUuTdR>@ f$oh$Uv3~)`hWImlc%F&?0000JV7wZl zM-xLl>OuVrtXhZ%VibuDMtwCAq}A6#rL?7w(z@>K<2_m-e1G*7CfUsH?97|p-_FeL zBa~9uP1>^+WkSfhtvgA!yc^?oRxJnucXUM*;fWw{nJ9`R+Tj9_bXVJ}1?5lAEwE4$C=oCPW^%_{BA)LpHw zQh)|%&9VR^odp_w8h-|*c^Tr#&v4s$9SjY1(ERoiw6?awC>bR%S)&Ee$@jb*h_6Oy z%gF#VHMBs_wOf3SK~FgRTO_hxCB&2}rz3}tapi^v8-Gm4rZlxcPy<-osuov1L{ zsM2m40d(Ho9bh|6v!jS|rz)XyL1+V)%g%lNzlf@X(CKti1!l!LI+Nu^t>GBuIA5-> zOAO%0SOJ23KF^&X{K`)KoTF3Zl4RramU=S?jl4Y5WHL!~3BtL#IWQOuydR5AYv;|1 zpT;wpG=JD^c3ubUcDp`VfV=m2JdjGIpin44qr(MVU4e?7mvck__3%zWJ469vdD~eK zCWIbj{0D1inXdPMk1OL&R~5~Sa{jUSG~wG=E)PZ0yNdJ~fu+M6R1zCou_#HMvpnpv`1od@wkj>>_4~v^{I83TaLv-HQ z)CA2wAC%Z)EEWq3$`llf1sIgGoZ}efIFEX$k9NA%f!UcE2!&olU*CDiX0w`n=tPIs zM>)=;9_s5-h=zxU2||wzDH{E$T=o7IXm3Btc5LJv$K~^?4chB^7kJ$JsnKL$@Y;Dn zDt|A<*<2cmOC|U%{i@AffV5bU!DzBV>Q7P&I{rRjae&!^^EG{zm(xN%$8#R}j{O(x z`j1IDnM|ggTL3F2ycLT@@UuL}n-QBT!#>Kfujt#2T0T7*8qyYl9LFlDdT59Cy1WPQqgBH4KOkPsk|e>s!9h6P)5AHE+wBI2!=dS? z#$RsgS+?N<*b5k}tggr7aZQE~j$AHRF_u~7Q*}@u?KVUI1Q-Ar%H-@1N8BO+0000< KMNUMnLSTXn6x@mc delta 1107 zcmV-Z1g!h=2j~cpB!2;OQb$4nuFf3k000CcNkl6vsc)@~~YRT4Cw# zthEVX(1isJNNo90fi9XfEVi*&2wPs-RGX>|hNKVm5730-lRlbMG&X^NP=gQ9lwZqI zT-s8~T2au}GHd~3s4bYZ<@hkmwgl6iK@(p*$>h$Qd(QWK?|*mZp1JV9{l})PC#j<1 zm^_}U0PP*0t_v&9baC%7dAI%plt{VG&Tar+(liMMzcx+6RD#$0w!Bw=ifHvndgr$~ ziTf z;dDODjHVGBF@LVY2E$ZE_-Q;qp=Tcx6TNhNqp|n39s2z_jiR#sAc7!Fo^pfRjGW98ZrAw?Pt5B;aM z5#jI*`T2#>cmb5S2D*xy@LcfWcAbeyBBlbNi=f1vrnJNZtTY-SD=Qm8$a3qWi0&^f z@u0+=CUh|tvJnFF-DpQ@NlZ*4H8l-@)D(SeZ+~y4Ais$Ajy4eVd4ZIaG!mamLOW6m z^Ib6sJh2gFlsshl!2`A?q|w^e0s>Q0lOS;U@+GFeY+xay6oAReNdVf~T6i`!jpU>S zHpFe@TJt|q0AWi)0uHAN5sCf&KCD(NAS`5*0D{$O#Xr~=eLbqGvLzuQ=IUcA5W!<+ zT7ScCcM$r1oW*x zMLYGm&TpOP5W@=e_xC6(g;tu5Zi2}2x)m^GHe0fI_g09_mMk_~vaI-Yzc=bLW5&OM zhy{iN?8@7@%C{?TCxPK1vry&;sH!u%x*w+|SIs^CtU8>gR4{ZVR8^;BXTJ!*>`d+3 z{Cex=s`>ff=6GiN4z_Kxuef9;tQp#lhJw=5pI@`8KknRNCafv8q-04&1x Z_FsV9thoo-i$4GW002ovPDHLkV1i8KB4q#o diff --git a/Resources/Textures/Markers/jobs.rsi/ertsecurityeva.png b/Resources/Textures/Markers/jobs.rsi/ertsecurityeva.png index 7e5450a302cb41899bba857158394238c4f66092..bfc5c0677ae6ebea93b75d455d62499749eb1898 100644 GIT binary patch delta 879 zcmV-#1CadP35ExdB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0009h zNklRl4t`GvHA_NNBAnmE1dZj4Lj>(n>M>mVt?NsMqUcS(a?ITFvW&{$lm*Kl@+E_aO%M51Sr> zoN0&Ri8u{U4u8|Zrvq|qha&GH^zz=L_S5h8*#gaGQ{q%2MLYHmMPEfF##qhgd7cj} z3tFufrPFD$UR#ukr)aCWMJX#K1%qyyCatq|MzsMcVB0nu85!YFL@5KIfQ`rojfpQT zu;cPp&wIeCNVnUG1m$u$+T7gq=z9};5|35Kq>^p<*?*-j1dag+pB8vwVWCa95{y>2 zZOPa7QfwFoU!0#O7<+ej7h{UY<5VaVB*qwh%!3d7eNzCNC4|{Uk)elTa~;OV$J@r3 z2Os!@DiJ6MlgT7}D~k=VTN9);fFTrg2-f*~RzRIz%L1C6ot6D!vFOn|(cE>g0y}XQ zlo;b_fq&uK8NmyM)QSCyDSD++VF*OEZkls;Vhh|A!KF49JFBZ#3Wu3>kUSmMZTBM! zR)laBRQkyg6F!qmz7<#5o(mCNfZQ)kP015~So=t^Sd1LUk@)$a-*i7R?2Uo1Os@dzd7fXIxaj3NOsz2BYxNsh^OU4HR>kLu@V9~) zU*30pq=Mn7*6BhLRQ_EwrOc{3<{B;N{%9xqFEHHzRe@^$uOAZ#E4eqG4j7j-r3U(E z1ZZJ;0a69Yuhc-EWd4$?-vvQ$zn)%1+oHsx#_Q!+m0{2^ANEBQ$O7_3Bm^vq{?p}U zx+7B151`+4-C&f1x@1?Ca%=>~rV7yy8L*(5Rj>?!~N002ovPDHLk FV1f}mo>c$< delta 1225 zcmV;)1UCDI2i*yfB!2;OQb$4nuFf3k000D+Nkl?{8CO6vsap-ykn2gpu8D zt&6ga_1A58cbR~`G5k^!ql}4&Y|cgh2NUBP5&i)aH9>+*Q4>({jr+wLl^9sNu3fty z{0LpU-CLMJNMxgla(vO-vNGD;65e>;JWro{b5m42T=z2Qw#F6EPYRF`65j*|v2%0FlxA-*|IV3z0~e=H`~- znpotvKDUkYfBXi(rOTJN3T&!20Q|YuC}!)x&FEe>s>+IUoqag^>%iFIh{c^W`=%ktBWgIDa>` zTN+4P3E4mR3m3x|0eGjyQyzi}Rd5yL8DQ6r-Q2!)3xI{i1prpBeyT`lsVpuoTKd&E z)_*zx7(6$~WuU1HR#^f*uU{0!NuASK4F7lEe@jC{15Tw5x64gBlg4f7(wQ`dF-K}9 z#r`)Akg=j+7;~6elSDF69RYyut{!pMyNk(}&ZH}u7bTG#U-jV!9|;KQOoo$RpD2s7 z;!XJSo>yeUh8h4SrzY67b2p>W2pelQVt*KOC`!KG4b$q3Oq0aK!%zD#S+O4w@}*_{ zpzG+zbODDnorT54VitUQZm76tvt4w%qHDV7nl97%yG8y5nX*_-S@VA^-Q**-=N0A3 z7s%z$^FU$&dObb?@OpgW_4s6R34!U)?2}lrEgw39Jo`LsdI35-KBj>q2fLTq9e+94 z%_OkTtK95g63279Ldip6RrSe n)?8+j&1Sg*jF$9@D<{E!iSYWAtP%P200000NkvXXu0mjfvCT~o diff --git a/Resources/Textures/Markers/jobs.rsi/hop.png b/Resources/Textures/Markers/jobs.rsi/hop.png index 5c9b2f05c1b5d4c8a92e96069dcb705d97746db5..f8cc9dc402a14e48fe44335dea1df7d45cc77ce5 100644 GIT binary patch delta 927 zcmV;Q17Q5I2eb!}BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zR!KxbRCwCdS4~J%Q561OOe*+aPH9B`faWHHEE#BMN~0hP69;PHq9T+a7gI!K(5`_9 zbQ6Rd-9!`#8EC567qFQWkdnA}lCRGLqYCIs68W~C}fNXvE<_|Y8IS4lC6g2a| zbZ2Y$;%Fam_!J*5ylusv8q4;2aw-HtfP5*EFE(3ZTR_aw+SKb7u(_eFX1CjcgU4C3 zUeCHjQMu6^rhiL}@5^V3{9Hc9`P6i3lO|(+99EVBvVM~ z1P982!Tvu?LQn8?pKFAzjN7DqC^!!`+wJe)@wGG8?@NrIha<{Iq8(~Iu(`6v`;F08 zK|QVed_EWq232*f%7Egk6T;lkFjw~Lrx#yGKJlLBrhkUJ@Or%%7#I-#8V<-tO!xM) z{G;W_$;ju5iPS1qR0W|VXTQhe;r&8iSJ0eSgNpOH4y6Xj%3;38P-EdrU-*^dYy)45 zWJEjz6y<=k`xvWmyK(V~RV=#=vHX&eUjGm-aWCC`8%Rk7ylZ@)_=sNY&}v7XVXU*J8RM0BfS~c+_G(9zZ@HTFKFWd(VbjL#buo9kZw%MiD*vifqdEl zQNZnGGCniJoJW&W4MbCxY62d(U0<*~Q_V_Rdw)a;osd^QAdzz7C!;k90pWa7W~%4`S8y51z1;jH^GQZ)fCJ=G z8kbzVC2&kokgS0+@o*qM5Cu{wDACOWzYqQ36AHzeeh&n>o-#co1ZrtV!jhz%ZmY1| zw0}21Bl-^wh!*bz^FWtS>=T4t^-$d2!lBqPvx=p~MP5%&@0hVSO{%m;@kgYsN%~9r zzRGa(NvAlv!FJ{32&Td`MNq6L1d|gJthTNWMxzmrUw+`q0*U6dPW!}1{F;0ZOm|4{ z{PWr6h)k80m4eM?i?~-`kj33pd^PsJ;TUfL1^^4SEcr2Sou2>z002ovPDHLkV1gHB Bw66dF delta 924 zcmV;N17rNO2eAi`BYy*UNkl`p^}!NlKF3S)0RlxZM+a(fu)Lx^3oFr|bc)`vQV%wTW}RKte02`;ra zrCC}yKHTk^ur|3jEr?&Z+~2=*e&2h}_jm8P@E=1lZE^Cf9Dg`>?+4TVY^FDV`861E zJv&#c0*F}>7E=TO?%vWit5vC7P3Udz-ZJf~H=H~x371P2LBA3%m+&cHA;zkI~yiO=-An%~sdg_f2K z`!%ltpuW>&c7OB|0JEc)sP8m;abuo9B%4+CMA)o1=(pRr_uw!3?KU>+4faIX6Z0}K z9f3$TtJKs619lrPKJR3}Zlk6)h-9;h!)i56z!c)~xGaLGsw#^hUws^H>n}&6vK)#N%-(m&@E7dB%GyEiSU&%04CE@0EDl!M8H7U z%@J7p`I(`~)axDl2ifh1jvu3xzYpK|C=aV!)ciqNy8mRt<%U0hXC?Nv7KPmB;Pq-Y zGeH?~I(W(T9EG(C(}hD2c#7d62LR>reTts9^ndZm^b}l8fCxoJi~Pvx6ATYIcv#&s z;<|eZ>N`z_2JF<-21TozQ1e&3KVBnbc>uL4p->3##024Rn4;B9O>MN1?uM>{NzDWW zVEXbm%D$>Dv>ZEM01A1f&E~KK+R*Y+0<==BwLUcX@@Yj+^?+UnUY}R=c8})1H(rqlTHgjayG`XA8rQnZB yg}J#oy+8T>1+7uIh-c~(JU}*=GxJP3{uKc$eP?Dfmae`40000&}B+c7GLQmo9OV*Lm}1=FPmB zdGodu!!YnaK`m8~q9}e&@7~XQ9i0miJR6xI0&)*TNmbw+K;t%g7x)7{o)?YGK`fpi zPRMoOpAndNa$7_TjiXV7@ehw-dgLjzo*!T-Gs8N{JAwLi=Y`x-Kp$*g*LW}#BC9daMOrrebRf)eQ<1p+krwi|r4!=j zdunST8jbR6`tmY`~8$+HNY8HN={M@ zaHq%6;;Fe)A`Y_=ShshrrUUh`9yaRwoGXo=8BRN|k#A(0F-81*p~P4I>~- z3Cf}Ts?*B!f$;1s!Apx7NG4Kn^}Yp)v^uyxKTmKfnI`MV7s}`CfYa%ulI#P612=DL zI|1={oagt|@8jpVj(pL2oEPcl#u55+vWh*Y!HrU zibYszb_-BYy+KNklJ5J1xLBHcMaZ%&1TTnpue@f(--cfmv$M0J zJ4+|}oD|;}pMM6RP$+O-{++KEuUj#|`*|19Xw;Di$6o=!#+@%XH+Ytxe)*NHyGzs? zd))otdj|XZSzB9kvu~Nq;OBbF>F+3CJuXGMNmDq5!bi z&e1ds?)>&PO~YWZodZBo6f&6%nPqH?=(=HKSr(yCh}D~QB3Ehv7=}U9Fc=L4sFX^a z85&|}Xb6DR4<0VX&attvL7`CS%5QrKX6E-S2Tp>bD9p_7*`)-!e1_)R>$*<0T18b= z03=DGVt*LN>Qz<6_$wa@g#bi17rHv2>pGgIkv}h8 zdjd2~vtrYMkKV~XvexYX=eW~w>Jo%PArAKU8TNPpgrX>@s> z3c9X~=ccFmqgJD@zn?;(aH@c=4h(xdjQah!-G6RWRmJUgcQ}yW-UcB^r_)ydsNZjj z?h0FXL8W|n_XmSPn$0FRmfK8UREWn{n45b8H4@>exj6;~23TKTx9aWSR0k4?gsa|Y zP;WE<$5LdPm6a9J=``_p99fnDFvlbkiLU2>?VD?Ia#DD`UH~ek z5`O>-z5t)>9LA%80C4!#342aqI5ycmrNNs@#lNy5w>%{%3E zyaW$YDK11J9k~mU2oF*zr&P`ac)ech?O<~Gd`I8W_R%^!uyqo8y z2LkNw?lLwuhR^2%U~_X*=(=v}EU;BHF)?xMt!lLzx~{t8Ln-1MdTexWvg4}lQe1C6yHg&o;qyu-qd(J)Q zo^#K6@7z6x5CWS?TVRuE+jq0i?dDwT?vaP?4Ui{U@u|2RYud6XB|*D+}e0G*r7W`a)8+19KbkfSZ6 zhL)*qJR5E04yJPiP2h}Ht7tQOL^Tzg7fL$0Z<$TD5{B;AP@+E-EJ41BTan`z>jADxtSa|{5H7%iDzUf0Xp~0y1_AQ zkJj4l27i`iL9JF(L>{TzWv6q4+xjdtk(m5o@oev3yFB>;&F;I!8tH! zGO0f5#ez;TfReMxHiumN?!-xEn z_kZIn+Q@bp@jOpVCX@KeVFMCgNeskhv!PCUE~Djy&e56B1^?Ucf}~1-sYUATHc6B# zYHUm*86uV{nG&q)KVf-UY~DAJSf17|BmMp=ii2OAFg>+&QzDkd);>?l7(k@0(pKE* zou}#VUFF0rtb-k|!zr;#hW-jL04(LWD@-r~F#rGn07*qoM6N<$g5iA2IRF3v delta 883 zcmV-(1C0FJ2Z;xeBYy)>NklkJx)d+1kOz(4%wf~9L%{|YOhYG88VX4|hN40YbxbIvCE;?!LJ{a(DFR7$ zJZQ-4pxjZlu60u4X6YY}@7;Uf_ulW`eV;hN|9ZnxhFz#m&wq(+AKbq^bRN&E7C-KO z5DiRj7i<6gwc{K6@N?kRI^nMP%oS0m=R^*x!e{i1>hzqbGgk)g#6Yh=L4h+PwAyVR zFKq+xcxjtfyA5YXy7AKlupw&o2Hw$8?*IA#@8~GCdSj^Kg9CWF(=T6J#OL$!b~J*| z=jHOX#h&=70e^h*&Nz5H+$-K^&wE!k{#=p*^B%1`N1xLA~QIxUGr!hrys;)z6}3wW_8`6=Bs#E6^X zvu9J(jx6v&EEXda3Xx1E0Z1m3ghC-=u^63BhuV?F?0?x5pvzak>3w&mt36OVve;`H z0GOu9#>NJkrZG7=iKb~7hJk6C0PHo5F04zP2#}xB<(xn66o+mHY?Vr-WBq$ggLD2k zZeB&-4jgvc0NCv`O_QairJgy_Xw>O|JcLa02TzZUwOTD_3D#(y=}WGY-^}bGRv~CEQ?GgTE%`s2F}Kiz%+K>euW_+EJHJfiOSP7T0%Ucq`^>FXOru8+$P zH*9VQz^99g`2BtWDwT>74u=Jx*=+Ld_3Hq9eD&(<{eQ5zzAhpnwf%kB-PsXURmCnG z4u?fmRoUIyk=p*gh=^>iue<&taz(nbvT|&~)zwwyq?nuBe*%;BfgMOi3A|CBY@F0jcLH~pvdeoCA zp;Eml^=QaRkshTVNYQEwX;MNE64Gp~A(qzX{$4WM-6W<>cYi}J4kYtt-pu~y&6|1q zR!AwSozy{XrnU#*X*9X{_Nh%Cx&4Uze!m(^%ialtzzc;!jX!)&9e@Izn5xmqs=}$r z!e+F+>^uYY2w?i!hZ?5vixj;39O3Wb&QK z5!B}UMQN;D)PM7Lr3i0E2WVgarN+NMzp-)Fx2y}I(Ws2a<07@RtiTR;OO#ppsyJlm zN3KtamIVNC1OX6$b^5#%7#>s{^59rRoF)UJ(Mee8E|UU*fHGcKSfIDBzp@?hcImNJ=)fi|o-Wau0DIm!T5mCxrXolcv&_4Rcd|NeSh&BM-`Ek{Mz z-`_78yjUzMT`(9_9CCW}J_R?Po2%ylA+ujLn-z{T05IdH9)yQ7$nL{c6P)$1<6s?c z!OYAIEq|}BP%IX!2}ot*?nj%<1bg_w-%$WJyd~<%eN#QZG5196721tKpWV?+aMr^P z_V9zhD{n*XY_IVjw&_Zx5CH#HgK#Q1qlwB ziS5ckyKod=J=duWR(>1`W3{F+cZ0S1xd?f?Mt|=;7RMdM4GkjaJu=i=PEvB`4{aax znmvw{BmK;|6PkS&G<_ptaHJi83|@T_x^gM~7jX?#&IaiufdAhG$8G_Nua(r)jmX-D z+;a7Fu62RY&$wu+EBR0;Y(8mkZ(z{&rb&j`_$9pGcmW42_aKUxTd?)1pxQ? zG&GwIL4X+CI$sG^xKaaH1=`Mf+}3N$>iLtb9`sj$0RVB9m2j)zb*BIT002ovPDHLk FV1ixfjwS#A delta 833 zcmV-H1HSyx2G<6VBYy)PNklyO=uHA6vuyw;x^WjwnU>C14Y+LT2Z&si=rT2 z(t~&s66r~Vh~hz_PzZt|h#w$$P!aSZSnwoxQ@m8Xl_*$ZHDK6S!C)j=?P@GZ$3s5W zZM2z<_T>LEnK$#^`^}r3nZW-pS36Gkrap*;w$Z`$ZN+lzbboK^gP1i6Hrpz1Pumb~ zr^x|Kqljq~8}?i_!>m#GZDsx`fa39x%VzKg`x-XWDB=(HVH!mgkH=|#X8=FGe+M8^ zN;3YigQH4@@rNBmN=e(e6FJ(mo6o02eZ>ov%Vy~Gc5`gkpre?MDzGqk|BDBUj>~Ad zQwON77JwaxtbgBa%25Skv6ujwwxHgxk1q*8EEW^Gt`kq(Xj*kHn<1XKfv)S0A>;tG zsJQiR69A#oOM?9&fX1;4_J;_SUIK9I-6qhY(h#iyw5Y(RHM***l6{ln#J-)jR#jEY z$EQg{$bSR*>RC^x)A)mZtWXrbj_hWIqTmnqkxr*=^M7QuIDi%v;Ijo)Rh7|GN0>Oiy(NIuO}M7l3xKZcq&oIn1KP=Iav?~$ zs+GTb{(lMpm#$rq3Eg@Nj9C-!s!l!?3{uKA!u~X&nY)CSJ%!|T!r?HXfdNKFMo1~! znxI>$Zg@OYs9?54Be6pKaZU*{;fG{Erium}VK%+1X)Jv~h>muo=Oll%RC zUOKJa%+`-@0r`7CYEmE&XsWAeniL8JS65e;@OqoC-I?1TpcqqN700000 LNkvXXu0mjfKr53Q diff --git a/Resources/Textures/Markers/jobs.rsi/librarian.png b/Resources/Textures/Markers/jobs.rsi/librarian.png index 34b91369510ef4de98b94b936b69a32320024521..c15516afd610ac47e9ad4c0ac2c88cec1e18f2c4 100644 GIT binary patch delta 870 zcmV-s1DX8n1^ot)B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0009Y zNkl45*8V~WZ_E`TQ!UXFHN1YnI>+|Y^}xDJ>T|ScYp7OhWDz_fxGja^PRKb z`Of+7`MygirLdW_1vZ&BJ%EyxCZ)a}mF)6%fyH8BW13exA`|j>JYL|BK5Gtuf$nW7 z&{56C$;m`z6bb6jKruqF#PDE&UT8Q>1wkN*L?WwjGy%LH(iuQxk zFN~v%de@N_vTgw&cxPuPMGyqrYTgDr>T4NCxz^o8){+6TQYXCoVp=74JZ@mdxA$EI z@2(m}-!~G43-7wwxcB6+DiGh%Dq}K$;Fa}eMZR>-4}U}5cNph{^E^mHOP~dBYiomB zpF;2~I?6c8YYk%65@^AZzI|PQ*NOcwH}@N?Rudc&-a>QZcaV~z$_C3}SPAeC(?26B z9cDmjyD~V=qn%-!khI%qMNJ&$qZU<)c|d((H+aQ>O2>)&(fhN+kPPtM&9i`@jW=H^ z;9ReL3x9NPLcaQrW7Uj*zCH_;PqMo9!PWhAl|Z`JgN+Af!&49+3&Vr6ewdN28&Y!o46Ct25_C}BDzmQ!CE2zW`VBIdFUk-Y<&8BGdLBiY-6&t zi_9K_HlzgD=Szj{ECWc_a^OfyOG^b0x61~t^M5|@rt%c=1Rk;)^~mYBYcha@rQmKu*70={7^R2CH zwf+75gs*zt1K2$fBO@LUTe;Gl24esDcR?}2x@&8XvdLuHm;fdxCku4=L8ARAG2}Fq zTVF9=G})EhStlxni;D|TQc?=B=_skLs-c-o8p_I+?+jz(VL~SYycO%u0D_y%f=Y)$ wAaU^g`CPEXkP_f3iq(C!eSv=eLVpDq09rbh>V(Vgu>b%707*qoM6N<$g1*w9zW@LL delta 724 zcmV;_0xSLf2J8ipB!2;OQb$4nuFf3k0007}NklW_J7~7Q%<7_fshxG)F(5!Ssfb< z2r&EwANiM1t{g*6lxVEJ-8bM`VxE$KA6(!%ij{rDus#?70CoO{Wk1~rfEH;*E9`oxBKq^6pO_kouVjE6vYt$ zbH{$z*q{IqUswRgaR!Ww=Xq*Ctgfs803OWEIZb}1pDN3#6s45Xk|fc+OokFdsF9fG zc}fVOdzlO^NfM=$(&bc&`Eklby12M_YQSVN>H50H6;g) zX(I_mC6;{NBEu`OPlloI@{VAM{vyp1}S_gW0#UD%*8= z8Y~tI^||8RF;P$#i^aP6IH%(T2y`q^=i{1C9tD_B8cd*E>oSK|1-lHTtvflU#gqrZ?Y|O?dms9Q-Z)qW;e3H!3ap zyLJk0J$}KT-MPUw78VI?cl!@~`?NwDZS=dw1FUNaAUGz0APCmie-Nx^9Hh~9ct=?$ z6=02+uzI>=i9{mY z=Tm7E9LG4*P60keC=`+x#Z9J^cs#DMrE!eMd9Cb+rWKH$TH4*pD%fncmf||5;zS}r ztzA*h!%B3Vz=Mek$Zn8d`-*+;%FRO>#G`ocD!~0$a@^$jh}{1&_lR4DoG{=#g?EEF zOo(S47lq$t@VnilSw0U>XJ$yFoD>dG!#Iq`q)nk>R#(~C;bHQNCqbTf+-hYPhmI0|xUNkbe+8?{%ly*R6am}q zb`_Wej(!}+IE*)~0w}N7i@HI*p>O~I002ov JPDHLkV1f^8gfRdB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Markers/jobs.rsi/meta.json b/Resources/Textures/Markers/jobs.rsi/meta.json index 2401b27be7d0d5..bca3be1df847cd 100644 --- a/Resources/Textures/Markers/jobs.rsi/meta.json +++ b/Resources/Textures/Markers/jobs.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/e71d6c4fba5a51f99b81c295dcaec4fc2f58fb19/icons/mob/screen1.dmi, librarian by Peptide. cburn and cluwne made by brainfood1183 (github). brigmed made by PuroSlavKing (Github)", + "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/e71d6c4fba5a51f99b81c295dcaec4fc2f58fb19/icons/mob/screen1.dmi | cburn and cluwne made by brainfood1183 (github). brigmed made by PuroSlavKing (Github)", "size": { "x": 32, "y": 32 @@ -13,9 +13,6 @@ { "name": "ai" }, - { - "name": "passenger" - }, { "name": "atmospherics" }, @@ -28,6 +25,9 @@ { "name": "boxer" }, + { + "name": "brigmedic" + }, { "name": "captain" }, @@ -55,6 +55,9 @@ { "name": "clown" }, + { + "name": "cluwne" + }, { "name": "chef" }, @@ -67,6 +70,9 @@ { "name": "detective" }, + { + "name": "doctor" + }, { "name": "ertengineer" }, @@ -97,6 +103,9 @@ { "name": "ertsecurityeva" }, + { + "name": "engineer" + }, { "name": "geneticist" }, @@ -113,13 +122,19 @@ "name": "lawyer" }, { - "name": "doctor" + "name": "librarian" + }, + { + "name": "medicalintern" }, { "name": "mime" }, { - "name": "zookeeper" + "name": "miner" + }, + { + "name": "musician" }, { "name": "reporter" @@ -127,6 +142,9 @@ { "name": "paramedic" }, + { + "name": "passenger" + }, { "name": "prisoner" }, @@ -140,52 +158,49 @@ "name": "rd" }, { - "name": "roboticist" + "name": "researchassistant" }, { - "name": "scientist" + "name": "roboticist" }, { - "name": "security_cadet" + "name": "salvagespecialist" }, { - "name": "security_officer" + "name": "scientist" }, { - "name": "brigmedic" + "name": "security_cadet" }, { - "name": "miner" + "name": "security_officer" }, { - "name": "engineer" + "name": "serviceworker" }, { - "name": "virologist" + "name": "seniorengineer" }, { - "name": "librarian" + "name": "seniorresearcher" }, { - "name": "warden" - }, - { - "name": "cluwne" + "name": "seniorphysician" }, { - "name": "musician" + "name": "seniorofficer" }, { - "name": "seniorengineer" + "name": "technicalassistant" }, { - "name": "seniorresearcher" + "name": "virologist" }, { - "name": "seniorphysician" + "name": "warden" }, { - "name": "seniorofficer" + "name": "zookeeper" } ] } diff --git a/Resources/Textures/Markers/jobs.rsi/mime.png b/Resources/Textures/Markers/jobs.rsi/mime.png index a051ff5117f1ac0d25f05ef58a7efa31bbcc37a8..c9bd4e88c137d09623adc11595df3f91aa0228d2 100644 GIT binary patch delta 772 zcmV+f1N;2^1)BztBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! zy-7qtRCwCdS3QUmK@@&-S_+YHk}6S)m9vZ&FHN{Cu}LduB{o*pHn!OmHX>SC*k~hG zVmw%q(BrqxToTDHAb$eK56yOK z0z$0<`5V`6$E$#`vMT2LXA5HIl=uyfv1a#3ufT94QUw;Gmg?&y`9~agZ5uXm?qKyc z-Q-}~w!f6Q<$nZv;O9Pj2X}Z6j{s-UY|D>bJ;ZHVa2jMdE=IU zo|hs67!HRVK``8`3KoF5UPjWBFp@Y_yVObW( zL*TzZIeh#5D{qiYdRo_gLgSNlQ~)A4k~L9LQaMPrM1LrL5JVCHD5#7l6Zv!O0|UJh zaRJDkOOgO|()AvQDF7lhA$7ZKJSpo#64|M8tOrpYcTua=e8JW3_t`2SarZ!eC~@>= ziCn{)Ww9s~Q0)?V4g{4mu$dzG%?#jjp&)`+t5tZtzRssrfJ#qxWKVwid_MjM$+yu6 zip3(d+kb7!;3hi6mh_oSM%a^I>?ZuPw+G|hUHCj0zz74rEtQ16)oMWrd734aCTn@L zBe3aoI{p!)QYqH$c13dH)r7L-D$zRGkv;hlpXj>)cj<{Luj*!f7leKjg4W5*jp-}7 zUKOt2`zfFOa|4jcf^@S0Sb$@u{|kUTcR5ef$9?`W`4>G9`XK5*c>u;RSGO)6;(vGw{1Mzcd(UZX6(wU4rmNa&K6PTWwLK4Md5#RUQUXqc=62td> z6^lhAF*!NelR(ec@z*FKm&*}`A^ZFL+^p5OnOL^~5;eymo6RylK29!|<7*W4bl#J| z!Ox#Gzkh${^VSwo6mfWX$ZKQR-Q8tpXNOv?hUa-?W@flx410TfL{UT-hK!Akr6SN1 zzV9oMe&zFd#bbOybxF6)=^=KWB$AYtZm2kx0Ew^VwCMLEvfF|44_#{X^*SB~{x1Ug ze7BGMS8A*A;;4y2@lS+6+T|sn;b*%S%hCk7FvP3kwT>-EeVn(K&7{&ECHN X@`t*kA8%~{00000NkvXXu0mjfr|)Iu diff --git a/Resources/Textures/Markers/jobs.rsi/musician.png b/Resources/Textures/Markers/jobs.rsi/musician.png index 2ef8ec312d53b1990b043e70ea58bb129dae6f78..7f82c6add76de851b4a78b086619f8347f3c550d 100644 GIT binary patch delta 799 zcmV+)1K|9_1+@l{BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! z*GWV{RCwBA{Qv(y!$1Nih5-fx?f@2ilDF6NqwrNj3K;|h1i<{etyP}A3s6_6W^NG z$MFB*888Ni>Z3>he_lEW3hw`sl9K;{;&3)d9H{<3Og#vL_2V%ggo%yn6Ymp3vze{~C|d=R5NSRSN~YKc%-K<2-+xF*BXm)B8z2Xhc83P8R`7J~tp zzPBHqFj6H1V5u8dD8R(ga{TEki*o096_-I4v0sB%Y9H#g4oEZ8wA{Jvfz#ai6iR) zVVE9@8YJk3NQ$X}G0f-4g%r$T#8^yriwHT(A%CZIn4{>{Dh62&%Jal#x6yt9)f_;m zD5h%1gxDgMl5~K#HoQH*A6yiJn&gTKN^pf=zIe*E|W#<&1Bd15Le d5EuXmFaYwGr5g3xynp}z002ovPDHLkV1i%IZlVAH delta 684 zcmV;d0#p692EzrABYy&lNklJ&=%@YmsmK* zP{fu%7OPMvw+zLpNZo2Z7soE*5GgGbshfdP5v5m)C$y1t3DPErOaDN@Dn5tuLhf?8 zq-hEc`M_J=zu))1@ArG}piP?wn3_n5^jKV+#okK2zyPVl0DtpyOZ+_ei~VvXbj?ZW zsL?N`CQ>4m7y#gFzR2Bscj&s%L93kz5>O71S^CW6bVeB&x0O#{3TGz5A6&L77G~38 zYh|XT`QUdzsc3-mp0U5T-4YQePN?j=H)5w)!q7F|zM468QZ}`CVKyy#qdI@O zZer*f7cX5_Du2fSKD=M6S{EetTr&bX%^|)Y!H%;|QP(`e2K!A850B`L4l_Tu1Q1%j zwaPFQ>(;QcTUf^G`Nis@O)lq%{k?4=t3_2K0E{LRb@ysY0DufOnoQt0>p0H3r(cRV zGXWrvBFYW(0Nv0$l_5opCKI7|N23CSWm)AWJLOTRYJa5cLV7GNM#k-ilRI=`Utga9 za9!6kPm0K9vkDxSCcx^V&FzOz%au`?l(pWHz$&N+94Jf%mO^$5%MA9LbSD#h^i@VZ zsvL;LVj`Ez)f|^tmL;SRI4;3Xa|i(4&^#{mMs^I3e zC5pPn)PF=uY~)Kw0YTIhAdjIE*LAA``}wwOV(8Ev$)n#-W9S+`+}8l)Hn)iNTqQjg z7t)2W&4S9NZg$JW1ITWk$IvypBl+^U{}{r`Pzh*tkr&ai6W-uY9zU;|-_%>s2-i9b z0IY44JpI2_4f{o={4uAx32Px;@N?yQoXP2o$0f;@{$To%KeZBn@HTD!3;qGzQ7a~m S@z00=0000YCAgb=iuvV}HTHa&pYP?MuC?)r^&r|U_rR&!q{zMbR}pu^z^@`ulw17OmE;vk&} z*f^fCFpsU)Y<=~nE|BkJvrFn~EeuZQT)6jGJi1aXS^Ec=Y-x6ZzPuY| z#29*ANwKtU0e~DqfCOYQ@o|)pu4Tkno1Z7GWd)>Anb32(WVzGaB90aurX%r7fK3~n74VWn?!O#lQg6c;f`56~{p+z>u_?)wVltTo>#Y5Z z7%N2?M5yO8N4NkE)m#%87#*uyX4TJWZ)o10Q9Dk_5P5QLJ@&(9O= zngVDlEkt%B+t?KPLO0$=W^x_H8)t}aK9%jtN^<1>r?zIHPEDi4v}DwV=ww2ibv%@Q z&5=GMgHf{CsI{??5wcIUjT`J>kD#NHijn8Hs(*HnV|>hYP8VkJL=^F?5pvgYbss-YFvB-_plV#CFK=1L4>v<;I z^jfUzQwtz_``pjYp4KqAeQJtvK3Pu-g_UHbl#RO;gZ!JNO9KA?FWArkRw^>9Ej|%l z%YA3RPIC*Vi&_A#w92WtYkZ!*&&+4?EaLA#9)oIbDCYae|jb_fmQmM2V*sY}u zS_Z|t&WbdbUPxmZ2&1reAcI~B=Ps@7N?{iX%9aVENTKYaEhejIYb(PsLV98(X_lap z^pDf(-d!AWG-bxbx{LkbaQMFWJ@4T99xvQhz8X+>Fe%6wY~5JBl^0 z+yS;S%_L{`>d+cgxEZmPLFEoDe_H|OSG9ZmH6)hd-hRytG^l&~k;JkVU!Px$487;vYq@5;__tl zTllNBn5_&Q;(tE_c-GqwfXO>V@1^Si^j^A7=EcjrcquBWU7)S-RNr-WRlLiea|^s@ zuHn^ROIW_`#{8u8dL?xrr}RRGs$CT{?%PY%t_so%nXQy59l+!9$owiCXta}>&*;~I zMmzJXP+MDD(nqKy0FTEbEiEkoRQ7h#WVd258ELXxsekP41mOL5(p!SqREna=dJPT^ zirMLsm5EzocDiJ6a8M4_p~n?P***wGQN-+YiK?ois%joYYinzsc`nE7bZsAm+3AwQ zojqc9y2R)6=|&hQ^{V7Nyk-%!T0$N89;i$oYqA1kXRADh03C9wJN)`{0dGV4j zzv|Y83hfQ`qKXppWGa8vW(IEg&W3dhEZ)rEIsNO?%R%LNziR`ROMfDy4 zKCs($bN9e6>^2(n=C=&spU4;{lWTi@YJYl?#g!%IrXLy>SC&XkPXZ8&$941S>S`S# z7LUIjKq<;*GWgG(0DTJ@^B!azlz6>9Rt8pS7%5ilL9b0I$Wyf zo^Ee1`EXiL*Sua45lJPJGCnpY!-0V0j8n;^3B| zLW1C>;2{Swhr}2QUP>#GG)0WGRe}(#nx__22y4D=_VwlEnSZ9~wz)X)*qzzgo!Ob$ z@9i?qISrBy(12;+4jk$>Sb1`%jrUxeA-ml!`rME^)+Ds`dc9*l=Jf4=FnVFUL&i;o z)8bj1(#OT!N5G0;Oe^I(N;aW_zC3)q#go6F@imyi%q5 z>IA>L@PA(4tvUCS-X(8y`|t>z9&zE{pauzX*0HEnYRsXA9`xa~5-0}FAGRHBMqq`C z#UkZ$IZ!#Q%4}zBuqNh=1)BdUsWXR?yrpT=(Qa^E?YEe!2RS zzOJu}13eWE>#w6ip+KQfh~%s2Q7T2T>1lq_;b51BkEw&=w@XX>>f|K(d_KxI5zqVt z0}naIp$B~>m(ogV^KJNet!}C0_xo8spSK*lK4ceQH|{8PXGV_ N00>D%PDHLkV1mxaf%^ae delta 818 zcmV-21I_%U2FM1GBYy)ANklzO-K}B7{`BOLBX~))Ph92Sci#F22atYQ@3pq zmZ+O39g1l{s#65w!G!3Pure)r2tAg_;$p2JYO>d|2wp1ltvFDM_XY1D;(Ie(EF}ATYoK46()6L=iY|E_>mv? zRS=2w_z`47;CKsc0Oy_z0r31vKO0huM$|||ia_9eUA{X9xbSp{16u7oDk7&~U1|>R z-R%bm*JhkIMIdl=tG|ES+AQ{~3Kj|l$!4?K=wal;r_a3T{hosJ<24f3-$(C+ND75Q zK~{UR+nfR+nSVb{z_Kjq?CfOUof|)#eR=SR#l=PP`TU>h0?V?*_k92sy6tUe!M*SM zSe6y39F+*zwk?@V27p{HhiRHDblapShgj&gF-?wf~^c^(rJ6CsIU^*nEzoGSJt z5IlXoQNu98>y?$2UH4trC7n(yrJ`X3DwPTVK{!3nqo=0_fY#R5P%el-AQ$L0!k#ry zDwQaeN=k<6F*7rxthXnDo7vNx?P#O?<}GX4(=zs~_EeQhCCoiQS63J9?d49DifJ1ll5r>(7x;o)J*wB4%Oah&klwrw28(du=6nLs^u4yB#7;D5RQb$MAt wL@V+mBg$VyN=yd^26i<#I5?>7b*5tb8&jiDItoV5g8%>k07*qoM6N<$g3YUkCIA2c diff --git a/Resources/Textures/Markers/jobs.rsi/prisoner.png b/Resources/Textures/Markers/jobs.rsi/prisoner.png index 35383af8cb4b8fdf7e86a45af8deb5ef0ec3c6be..c4103ddb5fb533a541e77c590d0953fe39ca7ab4 100644 GIT binary patch delta 909 zcmV;819JSl2BHU$BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zL`g(JRCwC#S6@g|Q5gT-{vi}?`6q;;ZN_?PL0v0wqP2p+3MK|YD6$@c$R4r>iJ+&V zhtM9Bf}li*ASe=wpkZqcj9T7FO)46=8QF`v?kd5GINk4TyMNo=mYeRHFP)cjzdz^v ze&@U2`OY~4V+>2#mSKt8k`q`lmoaqjsz$aRIRm57$iG?IzY~;3y)4UF<7v!-32@L| zby+%=kvIui&^UdRijP39Mqsg^CrfXzIhes<5Mr@dT(L<6{JtUyd`o=_rfT#&d#r*B z=0jkSM`};{(0@}OQ&ukI8m~(d&iI4)8JpqXKVIL}^hy1q?SlUPe%8^^A&d`89PIbk zS$qz>V31M>xRh=8}U37wJzo6V+3579ZHtabuw6dD=;OP@JoR0QtQ!{`hK zl?aJwD~7=3gLYWE&S7%w6XeFd?8(h`Pz0uDfyNq&0C)r*JO|d7#FO&Cg)U~aRH343 zBb^QUoQ70rfT~mkl-3@~9f6|?IQbK4U5;a_^M9)ht061p_M#=CHNLxs8jDsXhsP8G zA}1k-btuIjZgp{oEyvq=a&5K#eX`L|JPFgs^|Njk2Ti9oI~y55MA zz$>Q}z-YYxRi-7f=(l15O`d!s2@?O`1^V1}u1S_A zB!6Ctbt9ncXS!%&F#H|SsVTmpTU{>xI`aGd@Or&yX=&lUZnqnKy}kSdEG;h=>Md&u zD#Zo;g7>4Ntg)#HwY9bI3=CvF!AK@O*~yRmb-9#=dgE`y+YvdZlf&Tke_uKG~00RK7E`!h*ecXQl00001KIqd2fPN5BYy(}Nkl_-;&_f`k_2h#gvZM(^uVM;;hMSnN98L{HQO4=vdN;33 z@9tFyzc9`@zrWw}(#Dqv`WHs1$H(z0T`>_(T$qi zEKK+BTyLkyl3hgqZm|~rLt6SZ&R)8}qB22lZIkJEmM##Dga)h0!Q@5MG@T_|*rhE6inEg64B$6`haw8h<#@D_{ zn2JEdhiN=d3n-MpT@=@QhLa~@Xml|7K@ta(nIhTF1c?~wKIbw z8EU)Nf_5xBbb48qQ4~cdYsm}(p!pe9!LSQP_jWy+`G15K`pB1{WN+8?;R*sZ!I<6m zh-z1|+!ymR!jS~L*Q@AI6!P-&NQp+(3M>ONs=lHEobMevpZxS4zDSjH%*-ImGB9AB z!0UUZ%d=4cl5f0$}E=<#@xu0&Gz!0(k6+S=OUf{a#1q5v;= k8y{_j3}A53)TT821Bt~&agM^K^8f$<07*qoM6N<$f(vShZU6uP diff --git a/Resources/Textures/Markers/jobs.rsi/psychologist.png b/Resources/Textures/Markers/jobs.rsi/psychologist.png index 3c6339791bd91d89c829433eee6db08f9574d263..31af5230d74fd649f02ca8acd57c85f4bb5477a7 100644 GIT binary patch delta 790 zcmV+x1L^$G1*`^;BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! z&PhZ;RCwC#S50UWK@@&drBMuSN^3%LXi~Mkc}aqoKn)6>^kC47M|;qdsJRJ(CvT~s zClBpikccR`DY1})Vg(UAG^Cq~2#LgQG-@K~IB&AEne4{wrhnO(iw}nP=H!mzT)at92gi*Ow-IeEp7d+@pT} z#3C6P01S>GFbD?QwSN!H913%e`*1u)cJc&Bze%WfmqD3KhI+kTE}vNl82X1B70w%t z2BgzzVk%m9x&VWxQYkJ6gFy%cIsmp=|8JGcMocpZyMMO&>ym^2W(xCSZP!ze_D=qv z$FKt+f~%@Zh1_g5`9c6f7J<=D24M%lQ4!+f&1SQPJn8Z9g(PH=0<@FTG29>$c^AQ* z658waVjal{<>|e;(+tq-D|vEk z&WqP{cT#}CXBGCXp>%Ygzjt%~Eu!1B!Mc UL=Rb2p8x;=07*qoM6N<$f`c%7{r~^~ delta 697 zcmV;q0!IC;2G9kNBYy&yNkl_dv ziO3&d=|++A2N+myC|egMX8(aMSzw6TNNf}-wWVeW9UKrA#LEnSATKISGG4JV=LR6h$~`d zaBacMaeaD1kCzv;w}!AiUS7oh4q`!&inh0gSmZO8 z4(FUyRmGQ2A13DBef*63`+Kz8?ZuQN=bTK_B-1p>b=}Ao5K%bCIiLSlaL(x|Fvgx7 zpQ{K#E>=fG{eB-o5J(9Kf*|6T zNWkHG9ZRV@9JO|^Tl$;LfA@I&dACG3YVBYtb%(?C`hTAK1Q`#MWs@~*47p}oepkpZZI4UVcRy| zpPoR|b!fVdk@@4<*iuKP_{ps9AEX##luoCS&*uREuIq+2062~V+qP5VK8Xd4gE2tcmO)r?d*|AnZ-4Hoo4zF;c$|0dJ?H&? z@AuBR?>#~(h2^vaSY}I%HGvQUC(807WNUcdLl&dvyaYUrSHi}E^)v%F<|IParuCuu z!B4}S6q%imIZIMN*j6YzkDy2by{rv%#&j=cuWo zj(m1?GO$12e!|yxZsu`}^FnbUi5md~M-m8vV5`=y26e8Mc^qp^MzR0@;F)t^lMl&Nlsv?c!c}r5DyStkmQseT+nztwdH>=8V zcY~2W9|Zf$Y5mh{vLyK3qxIabr>QzUWau-&<7iXnU4Xp~ppQ@jU~?Ea8iHdyl2)V* z`O79KZnqx-88DKxfjxVJ!2q=-CD77h0Jqx>et*9oh5|#PQhg!;BO?*)S70kfN%1`I z@ELOCU@_fQls#wsE9U^*y6Yg)oQ1aH1r@-HNXNb2G3Ik~(j(^P%2D)-DBq+Df#V%> zGC2QVKg+q?oWzR#FIag$Che}s-ohfBU5Ifb(CeLyYEBUXVn4I3_;vpzj0FO$p|75` zf^sHhy33qSC)}vn$1ljwK2f7H5BYy+|NklJxEBSd_om3cPrq~SIltfM{LVSQdoTRYGL$l@(|^+7)FG7BkAG(GGE+Ft#cMzC%J~6i3di|=a*j+s%k#&c)9O+mK(*OMYAcPo%!Dk< z^!E00?czDrzI3i#S71e&Q>9$JH$JS#VXvan^bEgeH#zaFjr`7^tZ(G_`MVVgPj+-& zOI_Ed)6*iHW;?Ct8)@*=s{OwvS6Ld(lG;k^t_ivhVSi1l59yx;8a!{YzWImR-{7fb z<<&`qu?gaOJnA?D;c!?alS#^rMy`&;sCU=kuvw{h*KlEm#_P6nc{oayrIO3TQM_&|*Qd7u2nK^hA`#6HhXO<*5fKOkkYyPFuh)y; zXHy}(ZhvdB?ezj6%QAsLKr@7<49K!fJYL+~L?Xf0Gu8NgHePuBWBfiF6)z8vNF)G= z$KxvOQv*aI5g|#E8XQnp3NSl63&3B$4DIQU$Kyznq$vxBW+0c#DKG{oX5f?4j{$Hx zo$5Fx1IjpM-eEfM8m3YyQmK?CN2Sg?5a4X%34c!cUSwr0!`a4uF?{Df0C(pzG@q(b z$G!dO9eh3?0OQeq;jmXx@2+8f`61sv4S*tt%?dy=ndGC_%mCb9+yGNCI6|;&C>B76 zy%~qi%F0?si)#&MU^`EhrIPiH9Co{%$u%e6+$%7-=A^s3o7UD=e11P|ZEd_+_Zv5V z9DmvaeWBfS;6XgJZjVR%1wcpN6@zjsb}JMLsrH3-6ED^7FtT(SfDimLJXkgH)x^$! z#yNBgI{L2cne1}8R9lv1rlzLU_O0kUYGAF>{Yj<-mSvexC}dFVQdJTFpcbdyMXD6( zdL09MQob9eR1n<&%8O}tKuMBtxm?^@_%w`gIPK=5FoaGT1i+&$L2q;nfX=S2lK&O=)s0w82q8o!ofZpo zbK*=LLJ1r?X%J`X5DRm2B9l%FA%wUQi)sEM(zFF@nGA!2gKE3^{ehyfIE44z&mZvu gKTS;NS(B=N0oF#RgR6DIumAu607*qoM6N<$f`+61LI3~& diff --git a/Resources/Textures/Markers/jobs.rsi/rd.png b/Resources/Textures/Markers/jobs.rsi/rd.png index bfcd188b59fb06c35e00d3817b851c4e68d3729f..0074397c711dff7d1def3e38de5c037c4447566f 100644 GIT binary patch delta 894 zcmV-^1A+XO2$TnqBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zHc3Q5RCwCNS4~J%Q4~H`N&<)8Xlf9WKQy6>7NQt7!&K8Ms33IFqK)oibm2s_$fXlX z_-2u7+e8!?Eh?BzgAR%*SwxbOp;Kg$$~03771nLOJ9Ec*Z-1WSIP=U89_OBO&wc0I zbM86sKE^qx-9!QHGIrg8J((uwhI|^{*4jl@t5uA7O72(;ppi%yPn2Rfl!lKb=TyVI7Xfl|m13xx~tg=yKoK>A89(t0b zkk35}^4QLq(SLeV4&lujPQRmTV*Km%0}Yk(9jgLw^t7f`UD?<`rTZ(z9E`_!mP-U!rcRist|UfBNBP9$E9&v| z(GhA+%HPvCb*tCucvC$&91f;CwC1FsU%f5fKW*w9u5Q8J#a~N z(%wY&K*0l;haU7za{w=^r84p`uLv;!+M=EyPV0iE%Ap7SY@OKBfeKZjSy~n^edrh_ z)i*$PyIsr`(mp}KLymdqK_Ba~?QEMq$fpE$BzZ|sQM-l*g`Px0p3%mZWjHoACUWbe zZq`p52Y(Ur^J=}I@&E$RtMDmYrX{aF@O(Td9wQ*^y}i8} zVay*#;t`Q&!0B{qA_cq~RJpafhRSLx@NF=s43z`LgqO;lO9X>KO+*0bK_5<=QU&Pq zg-Q`c7UnfO-7Er94^HImz|nS(`1l}{7|WeXV}E|XKg}t*29I2ma~bMeF}?+O08qEv zohH+_;;qUsr%S2a@yyH&>7(*rZ^d5g zDyML)GM2uriFwG%i;JivRw=WgCE`1sg77AHzi^Is!fjv6vGZ(X=KL8As-hK-EUZ#^ zWp{zUr1YL6u^HmjmezW&3PR(Zd68Rg_i1reJIvI zErq!X)yX=gb~s;$dzc16R>7xm_avHH=r&=0x`&Bu6k&8ILw6ZQMpM=prL9+1qt0dZ zPcliorr#d2+?m;$KbyYnyxjAh@89qH&Ua2u;Qua$bSD;`yMH2L`uwf#wAV>_Vr*lh z(zlqp)&jIFdbsL6EO@y}|Gh}M!OT*g$gts2=4?s-(!A)R`I&ENE zdmo~pg&xs*Hh-In=1vS`u(25dprW}`@82_k7J7smi{5@%_zfSu`3v)fHvwopn~fVw z$`DBb$g(W1i&g+;>}G<&Ac5X-xKl=;cbs4_$c)_#z;)4zEXzql97tyKw)S>ZRi%^= zC$V74&!OLW6;9ly-+7h%{CslJfDo#x($?M%AnbN~!hbiB5CA|`Ri-?iogH_|;Ap(* ziQ{&WU0oo{vN&H;!<5H^qA0q3ad9!KoVXp|1{6hM%H!dDO-)j+NcaY(yG>ETd@}Hk(Z!?{GK_ilQ*>^(I;xNWuj!mrK{9Q4pfGxR_Uqi+QKHnNJ3y zxnO{w*nb`+E|-hEyu5!0;Qp!y>vI-XHZ&T`tzu>}YX4z;oQl(@sjRF7pg@vnp$CA* za;xx<-{AQy6YkYeLV%>gFe}qYR;Cev_r2#hT2cbQ*w`2ak_1BVG4I8VUD?o*S$g+^ zq_Ny8^0PBBAIQMB8sg=uCcbkN>EXC0uaRrd#eYQzHx^F49?cbojYB{*MZZwsr*}B~ z)O~h!!Hr3up|RX5VtPjvqH{>%LTxR6zn`}*USyO}ef%lR9J7Y`)Ds1`T&8f>XHNeH zwo6Axhma(R*Q%?5XmpH>j8IiorMslRt(0TdaNNARKJ%_Okn*qL_VDs<(~}Lme@arB z5Pu*L2p~xks;cU?lD|$q?e)gl_XGf7c6K)I>vTE|fS&ErDK3%*a5|laOBY@dZ&V-V z;ldxd+`j>^=KGeDr4lb4dX~{S56t^7+>fQmTql z2KfHRg&ns0bL-rnORp+U8enK}PyqC`*Lw3}_TPt$Jcz!BUxR{oKOCg)5~8lYKJCA1 zPn2tYeL@H!mY0^qamNS*Ao|0H4;cDE zddPMF*ith)46*-c2?xq&L{aqUEaf494S+2BczGX&IKQsbe}8^{e#VaH?C zB?=7_r&%s|^ytxlIXOAThiA@$E&KcF2g9>-*T6K04-!{(wqvB313;GN=jZ+(uOWD`|GO* zjA)6LI=KL3IUBDC!>`Y8!2JH;Y`C0kOEs7V$%E`fcLc>D0J9vN*nkdrasLXK-6pHf zQ1$pGm@T2G!+@*?<_JO|z(lOiVF1JiS;oc11?GcjWPi(HYGBbtwL}Q=)!$#=@u~sI z!=i{Pxd1)h|Ni_6_aUFS5||C5VZMjSgVYln3Isy{=4)7-!uTKyCb6(0EXSdaatHjx zUBWT5bCacy=xlhtBM(%%F}%L_gyF;ed;bk9CSh2@%*Kf#c57bWe*r}$22mv$P~AYC z+K^vZ5PwK25fuU;%R%Zvj;2Z!fXaC`er`|*z zRKy5M)gWKPEW^eIB|>C9gbE^(>jLBg=jX>)4D9@3C}jnybphFpQc$onGBFXI-KgpS zSe%1=3rh#1{Q|l<09SC68x15k%dr))#1^|GJAVL}pTR}(!TVnr-o1GP&rdcsHemYN zjT;PF8X92skt0XoIZsGLgwbA+hp3{Ms3^E`<;wrS;9#)Dva+(smccCtiG$=p>OktL z(j>b*AJR8m^56qjMNUpmjQjTO!zve}AOJ3qR1@*{4FLiS0PO9 delta 858 zcmV-g1Eu_;2Jr@vB!2;OQb$4nuFf3k0009kNkl~)SwXm|g zNo*P@jROHgD89OeJ?7fR|3EH1`w(cz!Sq&~s|Yb6A(ukHsxLWIHxbnrV+2ho^q^ZH zin6k6yfm9u*>-vuW-O_xc2= zW$M^klq3LijwF8jwMPct0G+VQFbelPf4c(^BO2fNk3(NutxK zN-zxdynoy6T1k>%+eXRFFF}$d1M4iy$g)fmsG8^P8(YAuA0N_s(WZNNB)qT4dA6o#RFB;QvtNg-p$;dzVoHib82!Jnc+<&yfFwE`hIF7BK9^TP=ENe7{(cBh7 z@`hokkLCN2rYUh855&w9FxG8o+cvgslcuTuKQ4>}SeEs#H&L^}^tgSHfYZcS0*1%$ z@cL8*{8zol?SsO*-dFSfiz=_{hhgl!U9IXFu)MqsKzRPV6?ZxUU}tAX`+j--df|`L zkyE%=sR$v2h&vszx4SF0t5un+a diff --git a/Resources/Textures/Markers/jobs.rsi/researchassistant.png b/Resources/Textures/Markers/jobs.rsi/researchassistant.png new file mode 100644 index 0000000000000000000000000000000000000000..50a5a75e411602f4a48dcd9457bc9de28ed70fe6 GIT binary patch literal 800 zcmV+*1K<3KP)=+TqGgoNaxtwdUuV8FCu48f|q z^#>K}xNq!kW;dJccC$4XA1pKP&6|C1-p@C?gi;Elq%jyVjog9pL5q#$MI9fWn+HJ< z*qm~?BMRXtNm9>#+~e2*X7t=lkBk}$XO|~Br8ld?N5G8Gn7mf#k$cW0smJ3XvMm1< zoQeTFD-Y?w=kAmQrgg^2Rb7hqo+u8mO?_P*(L>}egi!;R4F5n4`w^}WF;#Zqsr~}h6@Jf=5;^HmMh zzB|wlV(mijP@m;y(CiehZQ(%U!6Jj=Qu7OZ+}hF<6Nv;H#d@7Yrly!&X-RG0QLmR= z2p(oo9KJq3d-6gEEHmu)`*p@t<0!{<)I)vOB7pR8Lo!uLCX=L4D44EYn-ti! eY!!h&0t^6L`(TLqb)!lE00007hmNq68JK3W61Su}CV2trioL zCP+h4)FdUK1sV67IO*ia=BHb8@xkny_hx3lZ)V=izGa+qs-w{w28L2+JuH} z^SD`6OMn3WTgjK+hAaH}wH6K?fAuI^RDUJ!M=ARh;N>23w_Y2gP-O&q7520{AfqNVk=QK0ST@OfB@RRb69BD zs#HRv>@Bz(zD0vWV|uNT+J`%-9pprdH``~+z+oC08lZf_RTGf22RLNbza*CW*^`BW zzTGEwi*`v?kO))Z6bxf(Gw9 zm**a$68R@tF~BifmBj!5f^|2OECF|BUqW zEUsdt zLf(nepW(6z$XWPiV*0F8V!5GJ$=D{EnDuA3r<~bCehV-F$A{3bZqpJl00000NkvXX Hu0mjfv#prs literal 0 HcmV?d00001 diff --git a/Resources/Textures/Markers/jobs.rsi/scientist.png b/Resources/Textures/Markers/jobs.rsi/scientist.png index ac4849ba6902cf35b3ae487c04d5ea5291afd422..6a9bd40eff783520ac7d077b607f04e7466950bc 100644 GIT binary patch delta 856 zcmV-e1E>7f2kr)tBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# z5J^NqRCwCNR!wLVK@@&d#Dj_(HN8k;+CrrfEJ#a56QV>ff*0Lh0$%jmDkL8DXeAz+ z9PC*yUIabqAqNdMBv^}8tfdVG+A3BLt-A3Ctf*tYNhZx^H-A6vZp{b7oA)#O-n@D9 zW*O(4T8TDlF#=6T0SKo90fUTJ6;6p~ zI-_?})-zxRILp6I8sy5sAXgNH<@5QXU|%26WXfUy-`1wg)30;RI!+T`d|0NC=N_kc zVduO`THVA&hEMiV{?nJW z0^GBU#vV=6;ekWs_xo8@(Kf8=nxhh|k$O5#nP#)J_pLB2o;1!l^HGNzh6;>|oz)5Df!x z#T3fYviRtI{}YPE$H?dN37t9^DrTg>Lk>OcV2^dpcD9-W=P7|5NnTP_RdqZl>?BI^ zx;`3S!+%UBBhEHXSJ@~P3k>HB`BC3-LBUJF&J|a?3^O3@(P&iX+;p9Z zzUcr)P8~saqviScnDYl(F(a}D0)c=oQ^1>BG4AN>qV_Hq-UfSGF&Yg%Dt9iCN~Lre z0bmDv1Z~SLK%d8b*B0h=JFS%gX@?*z2eAJ_M1MR!NG0ZSr_xy>kuU@$*I>vswzgu~ zjzNcph77VzX~kw&6PTNuqw1{u*S}(~*K0U}O?{55(|b8`k(tTX^Bk``186+eT~0hg z4H}MZ0n|$OMvq}#zvX7Fxn8@rTm!k=anXv$7rxWym6ft#;kQfB*=&{_=;`65-?j3( z-BC^_JJz{F^pEcIVe3bbotfchR8=^3yWKix(mCYN!w&YgWdOLdsF@lCgF%)|CQWtc iIvnCQG|Ip~0R{j}9BjSEa;(w-0000D%NU6*snn0fV-<3-2G{$VjU%r?(XsM#w7qA z-nc||caK-84A+*P+ZJGZaAILilzImr)zz|{+2Kq>J%8-yN$+Io=nL46SJmXk!kT>k zNu#lU@p7}O;CX;d>fVDs^UM-LR@;Z*wr|@51$E)R83)BKI zDfiJd&9Vqn0U<*2B;Y{TbuO|`D|NVBF1%WvwtK^PwSPP=my1^FxX3=buJa_|AVkQL z2vY%BElWRetNH1%@201xk8!t}pVI&C-rp9WX`0;Z>A^GOq5lxSwY3Gn=;&z09-tra z%y_uj(_^U>rWIICB#6i3`0*Rl?eqC47K=1BHBl@U@%enlc|ZP|cs$N(B4HL9fDg?M zEG{k@&wnKs?DMtP%cov1-`%;x&r?$XOz|samz3{0ola8$CsyD}0}S`Jal7?AvGAYe zoPYKVfR2t10NjdV+=+!Xx!ro6;odf`G??bMW<$5rfl}`P;QPdveAd!ZN*0Til8X@L z0RT$91Gm$`@0+i!gf?$Mc6SfQ=~KLTxyg0)4S(OZVA%28y>o;Ju~_pX%Y?YD>ZEs^ zxSb^t=^blMI1#b1Cgt+0sw&ZFRDMe&BpQuMXJ@AX#z$3EIeNzomjAa^RTV{1_^P`b zD7j;9ZjP?5E~6#C%+8Wdrx_U;u^iX-3&~-7B@R7XwcSye&OjNtTn2SYAw(B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0009U zNkla$!mN*5uGQR=Nj$R=C z<&~j9YUa%#*MHueWm|7c5}ptFXkCem`L9ns7OnettqMY+5by8rXY-?D0!&>=Q266# zp<%-xINQi}jR3$w0w4e@F56F@-(s<7^QhqFN zCg8zxI(g*=mAkw&{C<$7C9ORK0Dic_PfO7#eUC&034dJxe#q}9kJn4z79tiB+Y!j= z2<{aZ^OqAJXmWB=fI#k_YNmaXQ)meMc#b&4+tLYj@S6v$VJ$5!)T`;fJ{!11<%#Q*;Vg$R=5Z$p=XfdMf}OG|lu zT^)zU(0yjV9-GVWW8}R96H`-kx2?_MgAKp!N1)X+@%d3PZ*6TgwxqMG%OC*_TNgbJ z>szqimR5`(4Fm#W9*e~&qIJTD?d{ai)Fd>-uYHoa-EJd3HvXE~(u#4RIGs)khr^q9 sgCtQr9=F(uM8b$cd@dIeYUQd@i5Q^8VP7erQs znp0Ow4+YVXFsrb-n`jzL#)+9YuLsRECdN#ZZND(gyx;G=-+%8r-}m0{JxK_`{|RsP zV^)%yF_9j;L6VXXf>}utp8~1^CcBqAmzCg|zuVR(3$bUKY;7yzOf30DN_iPWO{_mN0ML{t?3!!T-- zb82s!L<4~a1%K+0(shc(B0itbv6-gHt8BKNybe6=4#?;8Xpf)pOuNtLKmN=!?LOM$ zC*Mj5{cey?gLXv8xCD0!f zf2=;G$LHhK>kNYfVGPsc-8&!g;X$7Iw8t z`J(tjh!X{xL8{w=nx={6s@#Zw`8czp<6*RgGz?>wD6I5e5<_Azaj z@pwF_s(;E4+b@|fSNJ-;ak8+ks=%$W+ael$hdTuWUDpAK$Ky=fWjeb$n6}Hr<8c6V zU1#&yW~$T6qv5D4C0cI7!JXGUKPb}I=V$0`1zp$4X0uLGfb3}zQdO0W)E1*1?#s)C z1Rf1X#Z;%4`ErGCc3x7h95p1Zg|6!??C0THkbkL8FPx}wVNGaBb-r9-VL!*;`JAMl zo&(LGsw&I*jI^+yW4>Hz6&h%vz~-Sz(lniRbq!dSg)GaCy;=#Yet?Dj8~|Tkg}`5t z>)4eFy?#F*luDwzyZa1@D(2?q7#SHsRaFKC286e(i$bx8$J@Hnx9rjD_Y(?-2?5X7 z)_<^Vn`|cI_?WUu$ReTluAUSQI3v|&~+VERY|AQOioUs zkB%~Y?;f%&v$efVPgj?lut1ANm`Effqg28ul}IEKlAZ}WvS@BfrQeW`7y^j?X;NXzZ+IDR}H*i%4d_JET8yf>)Z*PyCogDxy%R!Q= zf2}AAp->2b_4Rd3({yzsaz!8<4mWfv6bhK8Dao=d0)aro*i0tlioic@l5hR-JU-3< O0000e#`qJBsEH7NnpjOxqA?!4NJ8SzMU8s$ z=VGFwQ4b!B5Kmq-B;M@7pAbyc81W~fMoVa_q*6;;D6KZMFn{hF+@%XhTe`$YhPUs{ zoBh6dGxKIEFvjpdMW0KsApMb4RXHZH_Ii7GCj*;30y4PMS%+{qqWCNpGagle$s{x* z;Ay+A20!IsB_$>f?(z5(zbFFa=b7D0s3o4ql4q2 z-#TY!2|}R|2Y*t5O(l!g0IxdoBrue=0V~&H%jRvg*-&%fC=SJqaEnIx{C)iS;DgJw z1nQX&Wu8z$uCphJ$K$wVh~d)CYUMe-e^yR`%jIJ3hi;+VW@l{&>o5{c!2jkG?(M08 zuA~SHZ^g%s;D#10|dUH!j5@%I|n1s?@#Y5;N+)% ziqm`vR<2mhF2gqz7&BlF=RtuKxZsMAR{M1izXO}K#nh_vyQLIE`{FmZ$I-O`{ zNfgf2aeqy=EIlKm*fvL>HHnO;pd=8)+gKb%qXEOo1os7lK@}+33W3p4ICKTt97CD~ z&E|13g_b}c%$CwALDQu@G5~2e@+@F13qoEQAaHtVU*Lxz5y+UX;T_;BQ=a;`a;BFF>aG4aEd3=njFL7 z!8i&{2CUeB81?nrIfyK+tClOzK79O$(U0 t!DQmU2h#0?bZg2n6rasSMDj;~0RYZ6-EHiT8pZ$s002ovPDHLkV1g1q>O%kk delta 980 zcmV;_11tQL2yO-~zF6owxgyEQgbVgnf)QwD(?VN4Ryc7du? zu)vLA(JZ=R%gR5ZS+%SDfgr;ljXz+lgc&Bx;M+xn zYnKXpOxsQ0&FG$U?>Wz$d+(Wn|GQl6EQ-hDBGB1c8|$a1{m0LK;BfB6z!*YWv$HJfRgl#Y&^ zhH|cWJT9WqsQ78SDCU3ozTp{-MnyXnaI^&%vMh@Sx9&3+v3YRoK9*(Gd|&!}jvyRu zK`xhbh2@ACvw!yScXjf7t;jw3CdTP0=XRBk_xAYNG~2ojjue(7qH?$;Du-KQa&l6H z<%r|bU&s+{DwPtMOora$w;TriHG98qP!35)D!b=ZX1t!3A)4NT zj|wH$PIS7u0`y12sH#e-RH`KfD3wY8D2l@F-T}iMt>5k|0UnNyiy5znRm~=HU;pUrSneT4)vU^@-w^}8wRd`a!|2yA;zmwBs|0uxYHzy6x{}kY_ zt=38Fy%vDd9}_58ynnCBpPhD6A9KgHk^iX z1`rGeYj1b(>Q#fUeq2AV6}8j}gTbJP#Z6)W93LN3C=?p}l}ZI!mI;O4{~c{_ZwpP+ zTDqbwO&S;&xb#-KuA^z1OOhnf-Q9g@O+MdRkN5-0KcK|DdMbU?qLpPH3;VRpjEv=;K(!R^vd+yubZGW2S^py_WJ@?#u&ikDA z+isvMO!VhvVxx5+@_hvnL%eGsss-@k+@T)H9S-To z%CUTtgqtO9IV-HIf7+^@1Is{KW_AQQ5g(UYbATp8e3cDg`@$U?9qKMYQ)`Iadfwh` zUNbY7Ycv`b2!90Rfk{T7=I#IkXb*KIVtQTPpvgr=VkItKvti}pECo#_6OI)w=hB0QCC8rGeG1N1d({{4neA&suM`M&SdOY8Go{W9UkF_4~aPwJbuF&teZax zfe)>r4LEKLD(=_Ae`*U#Ya&arx5KH=86a}soD$JLQk)}5gN<|&nkPHemw+CcBkw=V znrnbDNe*I|W~4yUXP9IIvWq5&UIQ=~4E$W|f{3wEsSu=x3QPh?4;Qj0Kh>&0tJPxd zEd%nUOn*O-Hk`9lT8i;NO7;|7YVZJ^K!#mD`N%FkT?@b8uRsJ6J zd(CvZp~dY(iO0<=Y*!=_!29ql@;8=;uIb(Dl|G%62~+e))TiRb&AaMsLaKE@k2jSc zG5q6Ayory;wF5=84<)P;HWM@>1QI#fQ_!lE;rGBNQSWUYH|pH)(f+MdU}NidELl2C zV1LVpc9`^W@xFLIi?Cswf zwF7m&pM#r$*{QLD#5g?x4c-nhMo2o1)4ZwyNc9ZvmHz`A+&Yufn-huSSzCl1=`>FB zWGBi`@*{s$mVh2gZ>dR{j4c0K*qm>>*%YprhPbiG2sFP62EkO>19YKKny*(kLoPqw v2X|AugrfzL1o3+HLuH(>FBcKXZvh4Xmqg+WG&rSW00000NkvXXu0mjf_sRW~ delta 1252 zcmV1z*B!3BTNLh0L01m_e01m_fl`9S#000E4NkluUR?j}vmLapeFS_hWPJhmM&*l05&U0>g;eR&O zSO#r*84)S}GBzJ!Q!D8#+3ey&T?L=LHLO~MK_r`9_%2i^0+QX?vhJu@>{%QUcRGRH z4+F7Q#qnl1YCZ};{nv|S`;{Gmu(;C+-#VeQ512Nj<1pBf0H5QKT$joKI(mo1Pn*8r zZeJ(ydSfJCB7b?QavVaM^ESQ<6;B`FnA#4`3YzqbSg`RL>IoAG_7CNr%~z1-tXCWX zMH@!cS;b2m_2^em0Kk2C9+^vP0O;G(&*grJ|7;VAI;&9SI8~C(E;I%cce-2ArDo!9 zcN6|rDy|6NQHV#|#v%?dPD$tOMNZ0h9~2sci8!qxl7BP?6Z>|3Bl2dYj{tjW0HwJI z@2nyKin~gPiPuI_aaRcdvn&>rLdXIr%|$GKl0Kderh2G(RK^lrwQ43$YsSW)yzq`gu-AG6sk3qsaCkd&0f zveRbr7k|Q~Iw!6NMUVo<7p72oxrW#{iA!}(0G6FLGktmzJv}{gT#o{+oDX zg8BE&0L;j-G9xFn9tU=o44b*D-UUG6JI6>f!>`8>Yd?>E(xL*C))r%JDaLsnKJuW- zU${v8P`(#{dxJjiYeF**3j=sO9#!KGL_#w3Uw@A}Jz$hQ&~_7!xI=l^vMt%%8}vnH zJ|oA`Ae--~5YH+g6d%agI~lRsoQz*O02$5T`W| z6MwIj<5nKP3bwLme;(C`_hB~1;J^ET`sN$7^$zmd>v6R84sx^GPfmIQ0E2;U)Z=vo z2mG=CqAtOSogb6YW@P)pop?I$^T%x?&&J*dpu7JbCExXq7~{K8q2l3NG1m8C2;jsC zA)22NKYg`aESnc6a%Y-EZEbBNFDok(4S%k)B6p@Kl9XyhU4nvw0@eDh3wUw%cmVR| z767n(%?2C}2QBVK&YX3ze9Z>R4;+ZJE3r{;!m_ywt5i@IXH&WRY!<#fRCG&a3 z!eNtj3O=p6qx!yP@X6NmNdO>pz8|f-edB7RtQsSpyvHajU+7XZIbXAjz_pW1HGgT5 z#z9v@gG$QF5_c}2qwHjWdT&rMK-36GHoK5)b}?~U9>D=WmNYf>-XPYDM4DOy05r7* zux2Du?+s!}Q}m++JSGB3S@}Ypkccidli+}#;DDb(({Vrx1aMxtHLSn$$}KEuYNndB zd|8+!HtuRr{%7>hH4Y2k?dt?!-CguESThpQ8=qrtkB?fHZ-k@w-k3_lB#FMxKNUf! z|7~;m+ug&yn_2@@*L0Ge;-$I6PkM@u=8n)+8_uh1ev8znr|9Hp1MoN4?%cru(*rgD O0000vc;C`k|MelgPmA$DcH!G&9AYvbAkx)zaE@bGm2Tx!$X$*MHp&56qr9XU^>R&6zuA z?q!^F%%zx(1~SIf{t-ZBeO(!n{a_Zuj82jS2s~BeZ`KeAhQPELXnk;1XA}79Kz|^h zlk{0(6X)9tPK34v_RX2Pl@st|rS(sUYf`|STF0k`@IC|Gfz{S2?Ri)Iq;bo-?c8Fq zuz`UPbRjK{6^{yb}Gqf^9gvdmC3)&Ze3l zat6dx?r@;2t1Uhx8R?n4uit}3 z-XBOS+>hejTX5;&3)I}ck6vpG;$jo{E(#T&&0f#hGxzH|jj4FC^(1LWuDkADxAm8m31lPyKY(L9S;sbNvg5UpScPG&kJAI#AP{X9E7)G{`28)!z&*#wfmiAK1%`PAl?G%fEUMXi5f+i zb~e8J1#lnOIcEQ~=_XGPQUI1j*v&e|fleR_eAuLhj@vtJt?JW*6mQtt%u-s%`yj5k z`b0-ZhY(y6?|-;@G-G_l)h8yKZi?zGM`5$#Ec|}16)uxZCh6=*Fp_`oo-w{wxNJ2y zV4(;6e!mEZ!_w5N6Jq^fGvt!a(rZ7bJ}hp8(qe~hTe~`upR&9QOjjTr4oiN&Urgku zB-=!{3b3)iSt6O}t|_@C0RW1k;PraN%FG;Fw`3Jy>wlK4uFTBg^?F4h5U|_>rd0<5 z0kN>KfV-`YOP`K-Tm?o%gf93_xGdgI+~`DPN&OB0n+I-Q0kE<>(6+z z&U|Z~D&TfcuNbViGr#f!a~m6^4$EJev=W-8k;}XU`7DF=cIfF9cYb+zYClw!I=@#W zlGz~=iAai~oa(D63X6JNiez?}-z!$52C7tG{eQPzwB6nE+~|Q~v54LNS7@>+9m}Y$@i^zNRh`uU$YTT(;)Wy$4IG z!{K0Y;d>ko2VWKc;4^yzxm*s1!@-Xae&V|A-4i$EX{g!*X;CWW?3pEXc=#&0T&`>j zU4QH?k8`;k!^2mZJ+q`%##O_q6`1+`zVu0>PoxjuKaU?j17Pgq>t&w{p3(#D?zgjL z`=fnLHR7uYuyld6yE}xDT-WvTy4&q8i`dkYmN+e4Mi)Hik0g&qqete3{a+JMiD)#+ z>guXwh^Q4c3;3t-{}WKzd}h|G!Sq37;D7J_b7Rfra#dsdcZ;qiC?*xueQmphxyN=~O!KO*wUSb)ERCd_GSmlaZWGr)X|&J`od-$4znn365}+2d*P)i2wiq07*qoL2!wZqt1#QphojGAv`AN z;CN{gAT-q+hZOh zf9!cD!>*hN>3@rI2v0Y)z#rE!R7ew zJAm7^K(qNh6y)cETCFBQhgO^jTx)2eGZ|~Ds4+CkHGia$?=L6n79758V$cAto&z+x zUXn;L2RM#$C@-1=I9b-dLfXd=`{OfLTLk$izg#Dly#?nV4TDOhf`-OsiV-rivMKiG zqgP8UEU4%P`bKeiRK>6+RZlMF${NIU0r~2VZDl#J8-vDf!Pi06Vu=qPS);U=LecIZA>mt27nAnEVOf=H_TDPZ$jR@2I2WDU_F&1NSRx zHJNDCw&QW&F+G0dI-00001ljxE2fGN6B!3BTNLh0L01m_e01m_fl`9S#000B+Nkln-T_Xmc!ymMWSSOW>anTwnuwX)@v~(#_J~mArFKX*b7(MOAm4E-_TXwz;g6YO02~>i^xhqLB2N4HW~L3k8j-9|Ih_&-uVlFm!4_kyZFm#=X?FT zCLsB=cVlrz>VM4ujMSUC8;hs;cSXRv{a=a6xDSAp=rTolh5Ru&MNwWME74^j@k(}0 zz?t{oN=>uat!eh?3o(_Ku}5D>?ACPFH_loBfYpACO%7qLa%UMW9 z`2Bvl;_--xNS|v!B)lYdf^#C_rGzaaS3Dl^`~6u>MSoQtXy_UgMNt3<1OfoKMlQ0~ zP=ssbVj8a~3JqO@szqcJ(9ks~Wru44D7V>A6os1VN&w#bv>Sk$>Pi$vq1 z{v4&L9lg8=@YqgAxjnUlPj1xF_ZJuOYGDi(m2i`b}6ciVxaUV_B@}+%( zO1qw$(<=aMF0FIKqrPs&4kYpO(*vm`IEjN}W2`s#;01Up!TEl<37&SfWwYCs_qhhr z-s=fxyJkBso0?e#*HoD0g{sGxU07v)aeob;KccCrFiXkfk5cx8j%$-4eEvvQHM9ON zm|a-Siq8bqV*nr=T_YS_%gF7D0MDgM0&u*w6@$U>FT2j)c}4(Yu^2;xg8*{0sVS%5 zwEN<;+btp@;ZR5>eLm6YbYihs1i)gkh)$=INuN)`p^%7(oOZia?}$_>?dBarHK~Lo>{Wa4>#^sc9-I&P zB%uUB3B4`I2b((fK}lBH$l1`jY!+m;Rkq62ZRf80`R&^u_kX!>c;IsGJ@?#u&iUPY z&iy_@DTU1>U7?DE5UGD0E=XRFz@Rj-kzh!ni?{=5yax75@`5D= z@jXz-`f>QicopoHqe7JH%`IKU9f7&go)$S8_Jas3{~h2Ifnd`3gEhgs32pDdGJIsw z&cYPTg!?k)^?wH)RIk^QSS*$j>}voR_ZI1ZEXYY1LwM<{aChoX)SU)8|48Do*B%Hy z@zP}EB-{F2RHo*_oHvfZ@7N0K|C$_3<6N$m3U=Uz@h`m|DkI_N6U^A3uRme&#T&+P zjB@h{J1JQmK;w}}gw`ZJ5QMt+NCQ-FuVr&+JUJ#CL4P1`?#hb~lF#R(E}IDVr;b7F z^Ov;?xU&jc4?P9JX9b(hmbPfU+EDNjbh~b|olaF=gx=vPW|TJ^qg<}1=^emLg|1F` zHvW>0Md1fCx<$X0aU3JzJnE@(0wK!PxN%N+1e~9PTePXEiE+7{6L%ut{@7Hdq19>y zS5GhFNPo_j)~s?>l+QbP^w{SSV*gHMm^z(K#2(e0k<#%ZkWk=95NL~#w&E!R= zqoX53rmTXR79u6w)6>(SM5Sck1KFs)zCPm!O8Oit;pN3iDO2+tt8&0%vCxW&3RqoT zWq)J8-%n7c)9IkRyd2{3I0OQL(tHnW`mY%$j8aL7M1nQV9Y~f{R*J_$-(h)aiD7xU zy&Vh&1DhWm9fh{Gwp0O%M&a(j07HF8bv0==Zqu$52mF3|*6GCWJ@5<#y{tfTVN3$w991h~~c(Tr2svtA4%V=)T{~Z1kU;w!EmJ(K#rGfwe002ov JPDHLkV1he{#ZCYK delta 1175 zcmV;I1Zexc2dfE?B!3BTNLh0L01m_e01m_fl`9S#000DCNklBW!8|9>CF;m0z~x640f@LfmvBh3`x}`Y?%?vghrx}#fx1S zi5K+3#gI%%YX(bP6yqd@K$%G8LRx`Bce*}a)VJ%QADrS6|9?r7zVCCM=lQ?S*Lx29 z&(Lx;soXHzp3lqD*(0U%48>7 z$uP~j_FS3l8Gn8r&HXEVHKX+UI}&HN+L-jtTePh}l)jo#nmr8wGx?CJ83u@Uy`Ts(0FfKcTRbQHSKL$SoKqtL}E`|AK) zJaL7vUpMGyLq-D1h;r_{a6TdPIm2`my0Dd6=qPmIbA|z!n!bzk!g&LUuwTzgAaDDI z{XqVEwtuob^iT}j-aOtq(wA`l#4Ax2u37oBa+;N~Cy4}CSRJXu>2>hxCx?l}bgHYX zIexqWEwG30e*6XiWp91<@f2lpNjZ z>mFy9rY4($+wIn#tvhJg>v47&ob5D@O|_xIXP>$$Dk?(Pb;F+3YQ<)=vAMaKi+?#_ zhZ@NFG69m`j?C!i6agUZDWlOS(P$J%y+I!vfv?8K1mMjxXDBNxOYCoKYyc1p2KoH@ zbpUB;YkNE|rwYSELn0!w5(vnhsVTAB?NU`$B>+`bRbsc><<8WUtONogA~HNQWcuU8 p6jPVWmDb>;OP924GBdXS0qkKnk`Tu{B!U0{002ovPDHLkV1g(_M`Zv2 diff --git a/Resources/Textures/Markers/jobs.rsi/serviceworker.png b/Resources/Textures/Markers/jobs.rsi/serviceworker.png new file mode 100644 index 0000000000000000000000000000000000000000..b10b5ae46cf41714c60fc72fb7f785e1e3807cb7 GIT binary patch literal 861 zcmV-j1ETziP)8!PmX zwrWc*p4tk5q=pEd6ltp`4H6Gt(8KTth*EEt4b1c?`qHPk{Vh^vT2LPJap5-=9o zXe6nPJa?wub+a3r&l1pq$IP2IvomjYX5M>@a}NCk1N0gC?tpQ>#q^W=b@PddvjJNloz^>KqEk7rFRJ(-+I=^tyU{5l}ft| z#}vTJwJsg_{)c3v)9^reqZnsnmw@MV|9><8?8=?qYs^UNNqPk&%&xe3VB$41lghw_AqE zWRkEpyAcY7f=*tRll8jl1DQ+)u6vw>+lfFky_OwVoIXSN?zM}s`S2cB=Y%=}>VJ-M zD6iJIL8_xnM96+MbZsq&87 z?d<%x1+VG7`30$s4L-N90Mac85-TgZCm7C=kLxIh@;$kfrlY%W!&pviDCG0`SR#>V nxOQXAMkP8C*#B+#TYv!oF)v#)3^Rbl00000NkvXXu0mjf!vu@H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Markers/jobs.rsi/technicalassistant.png b/Resources/Textures/Markers/jobs.rsi/technicalassistant.png new file mode 100644 index 0000000000000000000000000000000000000000..b3156bfe01969d5528cb175b2f0fd8e88ecaefcf GIT binary patch literal 952 zcmV;p14sOcP)7asyeDf)MDCuSR5E?`j6qQB<=}R;ykPx8fFk?)Ml>RckZ~K`!;Kvej*+CcJ4X%-1|G{-0z<6j8IBpH)#*-GAR==?&|7d+-kMb zl;mVlzr4B%Hk*y$xU8&9J_p9yo1}`gA_i`;SU{mri0WW4$n@Na@b&qXwcE=;eo3h~ zet7pOi#!krfY0X>^*WsnP~XzhLWK;3oR}Px{|JWccF^bKKu=GPL_abz0tE#HY+j^e z#Q^=?+jPLcF(i63n2U-SSZQl3(+Lp3f1C8o6KQ4B*SA(P%`}@Fb(&>-Fy3 zEuaI%)O0Zv68ZFeQyY94cgz7|9wbJikyR~^$0J)EApfd_gh*}`paWX17ShwxqipBr z=fUlEgTvvFEQ(cWpymkU;uH}gY9OuzawyzGG&~Dfe&ey*avhj)X`$v0m)vouRl05)4%FA& zfc!J1u;84AdY6;F?0bV<0o-d?f!nuKqTPkdF5&k$8#|h->46*rq!}_{?0vU9l~8^7 zpzv#enT{p6-;@hK_b)-iRX1e7xWGd;N7bPQ1;NoCotC8~Tk|bLk~#$zT~4q&-QW-W zW_bTW-s- z=-{1?EKdL3|AJk2Afbk&0UC?gWvgE5;8Brn$3s77Q8F;QZQVl-YoS!}b0000l3 z+(}%SjATTB^M73}&n#~XT$}1M#(6mj8S<_79Y^<(UbOFY|APZp(iJZcXBB}Qy@zK1 z^DiQ|WP@yvKm9_gPdtOx)EICGucqzQ+FCWZHR92hljwZy0PeWWk&<2dDS~(3dL8F2 zhXopjm8Iqzk_8WX?fBrpUaYEi!{Kls{N)Mh82gt_^?xEbG`w@u)OdR2_zsKy^Q^>Vhq;Xe6y`tBF|I7kKQ5HGjbUM-2)`okF7i3>V1^W8>(9zMc z$bsvnxh@APD=S55X(?JFleoOS2~AB+@caE(^PwNd9Cl1iO<`&)>}a1RaI3; zBogqchJSXcM*TeOD)*TbtS>4;Sy`F1`EMtdorXKtt`k0=4{>4NgqZaJQwo`%Qc!4t_j^z`&d&M|ShZK@vivvne?2x!Jhg@uKP zL?Y5?d3m|y91~wke_3f*S5_`InN9dM9>-USB!95_rqoI`qVaUBbLMw&4qH&2FE7#M zM&PLW(Idf&3J)Py%BC45*D%VdM}0%iz{ZESp}O-;$w{nuG^iQXwnW1yUuxbBZ^7=` zb#OWJu%We)eX;#ur(C7B^7IIh0)YU|cOMpo&I**O^KMn=8&Zl3N{ZC~3e?R0fnhb( zcz^h`m1{f{3Q0MQQ-5kaWK0?+ev83eU`6$gU9dgWD2>n~t9Emmp7WHQOZqm^P-$7C{znU6lkC-E3gzx3?iFR1oCieYyFQ?k{TC;LBmw&Ia9 zpJROfPgLaQ;JvynxHIr+Dr3$}gp_RW0)O2vqKn=}+%tGq8Xt(wO3pFy8zJ2eXmao{q1m1H6KH0WC$uDPJ)MSX6k}+(+Nfz%(LGc{aso(Tn9;O{2lVLD};2^Tn3U zn*}+WhNa`0ZZ_X%(|rccjgI2Eefu&nj)@z72Gkk=5gd~J=H}*9NZ#)1N;yH!v0_G= z9_MksA*Glfb-7%!AB{#aF)@Lc4;@0C+bubX&#~g-;*@^$n?P32vgI42j#AKw z7?~yLg&T7q451fiWrbe#Za3ZCt_B+#m@o#y7!IN0#o$<}Y1zeKm8~^&L}W)JL2FHL zCb+}&+l5U?W@pZE$Q}qe=l%1%&-b41dq4P}A=yp1=xq=H&40n6f^BTSx)7gqS5I2bU@QI5sSr86opBLMC<+eLVxi|hlHXi#9}ctO|!KJED0D> z+r;STD5|QGNF)I0bh+?&JaoET03;F#R8?hkbd)i*&9aEH?HW_t#LaJ}kZ#}MqeByb z{{DV+T`$Ch!(kQ{766#6bRxd^oT(3QGHtAu<+s!U>GmA}R8<8al}Zr~hw=OUgu`J{ zsZ@zSAAfI&`!r{_*Dv1l)By04`4>;BodC47v`|-9M<$ag{BLe<0&pd3^0w0fz|7u0 zkG7Jh*09upnZ13cja4bX!hBJnAOem%Fm0?#Gkg11Xv+)e7#ZTNucCB}9N+zhVVo#h zEGF;&XWnTzwLPIwNE{s=Qd3<`?%)8o+l^ru1b>6ULQw!+*9imysH#dXm&5IHv7gOS zQCZ2-($c9l9OV?&R9Dl`*hmBLWO*4OM9H_;bsdBtE*;moa`|#0H+OJQj=sDAfR{Tv zlCK((Y#0UntbmIn9RaI;xlek~a1}i9gPD7!P09aaDk~B>d z6@L{KI2;a~PA8E_gx=oXLae4~M59ruIOjhL$fNj3J`eZt{-YmRJ3Qiz$_l>gzRsKa zB4F+46~oqT2(UUhz}1J3Svx#pJpQY+c6h|qhmTnu9I#7uHUUoO@i2Oj&C%`kiwD_U ziTzv!tPe-j(yUy0T)I%ANp4Q3|Wucy;r=?!7q93M@@RMNve1 zdpiKTySr>{ZI$>lnG9a9m-_m801}CWNT<`5W`U(3zu$jiRoQHobUH1`vMg$AYaCDH dB$L*L(cf?ZsL2OoaU=i$002ovPDHLkV1gm93LO9d diff --git a/Resources/Textures/Markers/jobs.rsi/zookeeper.png b/Resources/Textures/Markers/jobs.rsi/zookeeper.png index 12eb1144235b7c31ce50d15b71f65842875411e7..689697366268bd6a99c47b2132106e938e58a120 100644 GIT binary patch delta 910 zcmV;919AM%AfpG6BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU# zMM*?KRCwCNSItXQQ4~L~?2BqN9XF*jYMIcYC`E!~W-bmDi2N=o({OYUH>u4yMVZL${qA^g_dTZZHGl6(2Zr;`$9w1Fp8LCZ zG{zWNp-3cRkOP4LbzM8hn%W;|ki+4ywE6vhvPwCW1w~)oVtQ~Y+qau1v8vXx`BqLg z!K(rXrJP^n=Dc6mmmY8a=Oi{{GEO||ls`d<#Uw4v%o+S3Lyu)Kzi+z(<<&mU_j{{2 zZ@YYwhCj{_;eV&ld~#XN2A`|gfU`?*z2!7t>s;5)w075?eCfmI!Ba`}w#Q}y$v=-* zJD+Pe28P&0_ev^4$r)l(&m`w9@9v@U6FyB=pR_pxW~whNpkIma{CR2Qp@9p%qeG}t zEEZ!Pk4KyCAK<}O7Jt(0;0MkjL(i*UuLKZ07z{E5L4UA~uC3(W>*XA>x2iHL9MCc$ zp{5zX3D5!f96eM|iTSTmpIfkt-i$n<$~p8AYVsKL#4bYiUzSOy{izk;h3 ztI(__VSjrUi0VZER16th$m#SV2`fusc^its>JPsoaTi^nVg|>*HJtZk zr+@l8z64Iwe^0>D3`C;eXkl)Sk;_A)eN$9ZQ$u-m6%-j8qXTt~l+b;8dwXfs&hp)E z&0o61xekntj zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3#ravVDjg#Ysta|G@nj{|NIbAvhld|;PkNp{$J zp6L!ZyGykI$V4V+xBv6+UGU6=*M)P ze{nw7zoqr%cNU7V3inIV#hpU(eEPUb%!vp%oa|prYJa<*jgyIv?HRVBQ$!T)?aA?DL@9gqA73A8c+P6) z?0d4ynkyx%Pg3C(!Yd3;9F#QO%PMc-U*Wslcjw)B%p{2A{PctO3_V0DdqNH?XgFct zb%sfZIqoQ|G0vFov6dwEI4=O%-Y%Rdsiy@NF-_1*9FFg?g!|lnA2&nu%dfzhF>teR zk$v9oYfsZ54`aofK4D+ZkZbi zsvoagj1qouD;ds?rSQ)F)ha>Oa|24mvkSq51OmQ>R6-42Vw4c5V*?*0@|bcQ!Oaj# ziHj($KPuqR4LqA`B;0djiLb**3_z4rlK@Rm3RpQ8=p(r~IHV<&TuP}$N-Mo+O*Pk2 zYn5tRrII8|kt!lhx@b!+x6*2p)>?1cV^4H{FTHl@t@p0VLzO!#S1V_zjyTfDql`La zw9$u7=ri*yvrd_9_NgnbXOw~U%JDFN;~he>z3Vi-+G|hNhhCj>XFkCfxfbLvzrdFN4^qjyR^q%a8P^wnnS?c|jP!nULj$~MZDP!^V~ zQpcuZh}cMJwM`9(TfMqnN*;5r+GirMxjWCQUXNX~!XAUfx{#dAaZ2(tpPY6Wdc#_% zVzY1VyP5oHecfp6MM=}r*;wEcwLHMocI(9tfjK(n+C$>-b@bRW*d(oaZ=(gMx;jc6 z(oKc4;jOS~_mN{-QODqhq3ZHF#qZPO4n@;EHEkJI@LO04yj++jLTjv71fo52{?b-L zE>sxS+Lv6+`hK&z-<%-p(vT)ACr$yNDye`WJX}HpEE-0@tO}?NNS9(ioE;ZkF+$y$ zt|2^HWub`G?-~nv1j?ZB!48n`WavUjpyot0-C6tKN;JCM>5)&1rFc1>$m4fI-26_}d{p^sP#!R(PLxDDTRc;jE(mK1R0 zv7^7_=jxSJ79!He=nN4E2q2b`3dr@m8>r<8s?q2jbZqIm;XQ2fT=N6Y`Vk%XM_hjg z>sT)tv(&bieZq>p%&c?kYSz+Q+K5zp0u*8uNO+)`6OSX|(ryM_3SNyr?xD%)B>Gh7 zZfZnBmZ7KVhSGaXE*omO>aKN_2c+GYbH28l`{(_MxB-uZv+9{hA$p%ub7JuzkP>V# zptNu(jMxqsLSvJf0XfOf92IKLlD2{ls@8X-Uke_i4TFTmdBI!F5z9CQ?nXokqQb^7 zMu_Ou9wda0i=Rb$z%SZ5Fd}UVxc4b;Gej7v&jxYMoJ<`&=M7}DwhNN~!|Fa9kbxbw zzV7N70{1+`0)-9($;DG%4Fv*w3OLiejE$lUqj=B~Hbm*6LRkBNIS*R$Q6o8UN+Xysj*A4NvNh)tYzvR$n~mJsn3<9qMlTA711^I_;m)F zj$cJ7-rUT)C0V0Cem-Kp)0}_Nw>a&{C=*r_+di$20MLXqO;P+2g6OysW8YF1_|PjD zY`VP2f(w=^VF!oEPl~|DssYoj8w%SMYusg~jQkn_mX1cTH-Z(lLI7?&dqBLc?Ttt9 zAf{%HAUtOQUrZJiSt?`4@)CAQFxMoK;xQfgJWTg|f#-Txcd{^f;h*IgI<(r04+SS` z-{g=F8yDf4!b7?Rz+{H7XQ`#M0UQxcg$mdzvS+T!L}G(aF&8Woac^|pFgJGsoi?mT z^B{ef%}7KtqpJxEBhk7GGd7rvn1-vBu78K<{R z%w(=yTyHBpqDIv3nG$gG_-+4CZVsT#mgRoOj@UI!EPL0JK{hg#M0%n!w3rH%*~%HH zvS&z*qgJH1?1gK4PTm#oLaJf9IG9;lU=8kC27j7gJ; zOimn!b>1eHHIb2I1%#=R5n1X)NquEJfx|@(lGM4R(Q{>SCWOWoLCxoWLmf;l@X}pn z2Chy(Hn1|jJ#&S*$~Sw>U(5c~d_3)?c&PUYq(Q+Lk(jxn*$EpL&m5gsH>j7{jhHfr z?F##$G`v*>MPnNCyLWnPM6!i^%Y<1;yFiy^K%9WsR{k9B#OlSgBQqaChxQOaLT}&C z=F{qamKL%rW~CVaq#-Q5i9{6J;28Q;o)d6lwbnSv(4WagqxBw4Q#6}RS0;m%bTYP1 zvx6;|vNOPHng;Y_t|u+@njW`dgE_z{-Tq8WQu|+L=G{-3(X)_9gMGe9fjx=Qh)!Tb z2iNJhvd&$Ys7&&@L!`qxbmg&bxJyF5gW<{^`0bcQO2;NTwwh(rvDUfUIusHt&K$@PjdEKUy8%Yea*={HoCylWLSum495GW;*7&bkPB{MtG zm8+VqGm7-b^7I$rx$ipQG;24mBHPh3z67?@Jew^vG}Y;lt$dLnelj5@cC!(uBLHX% zD%JLE*aO@5CBDyNd){J}${@--X(m=8!e(1lbHhc4_msojQZZcAN2!$kUm)k$yuw6= z;tS?l7V~2F^JQ79Wkc=Pnta&VclTcy#ldzP-Z$F-000JJOGiWi{{a60|De66lK=n! z32;bRa{vG?BLDy{BLR4&KXw2B00(qQO+^Rh3K9i63Fg;vyZ`_N@kvBMR9M5cmtAZe zR~5&9cV>3iyY_x~*WYpKu45-@oTgD#Pcn;77GoS4Y+!_v0cMI{p^YJi-lCNVcvZ9UyDuMcH4~P5)?LElHCy|#^N&G zn?JX2Pc!woXD&RoYXIK-`4@YmQak(JT;VMtWsb)*?tPt} z8eY9k8_CE>ih)*|p`j!JA-)}wp6KD8!-s>rl7@OK^7ok5jgf`wiieVlwk}ahVHP~P zhr8$-AHDd6Cr?^;1%Pd@{?sc=dJF^20I3x9sDlEGs7693uvh)eFMj-TcP9Y!?Hcyy zhRzDlola{I=mAFD03i?pbYGHeM)bmMdtj|X_uQ?eKkix@{@~@~$%s&=^_F|;ZlZqV>N?2O8DU=*WM|v=#+Dos@OlNk=Kn9rU%f?wQ z*cj4B3PsKL$&aNFLi|UB<6|jI-$x0BzHV`Q)g}xjQmUCPKb-@xn*pZX;-5Jc5pte?s#LzS}0}MQ(kraz- z4yzlA)ZkIxnVlyLnnWWpBGk}~7@8)K$Zb`ck7Pgy>L)(&IJJ_8RcZ0q$Rp&3;}kYp zER~xS&4AuyoRS%^RB|b7v=|>r@Tq}^sg-@IYaYj^KLb$TaV31}_=NuH@ndatxL$p4 zRI^w)GMPi$g1ua5FgBV**EB#e`#}|%V)Q`f=n4`pu3R?W`0b5w$35Zs-!FvcSr7ov zJ#%PC*8~T~Gnh3Gr4+@IOD^3-L>Khu;#^xW5vcI_@1NUtpJ8_DO2zy0RV*ikrJ}?8x6eS+mxN6) z(h>wT-Oa09M?!Ci5YTWXMwhrd3|OwjthF)vB1CdgYPHP@XV%;3*$8?rO4V#rcfz~F zfcT#Rq5j|IR`5Fw!L}JVH1_a`p*`c2OD^S-L&e|xU-6(+bSW2IhDXP_KmW*yU7d_( zPJbyGG=ftHhYp_hy%v|R&hdvo|AnKukT*YQh{yLQ)$E4O@y|cX^n+8xySkV!&wneC zNxt&+ul}TQ#|+eqjkH(cbSxUhFmxvF-OGKGd9p+K&3SP+&wZ15Ci8nSbe&i%id&Z7 zE-$ZVc0~h5I@%2MC>L+s*c`=#;P69-&~+W&exJSv9$-+{S#=uRwoEi3FcNXlwQY^+ Z{|0NE)2)_VO4tAZ002ovPDHLkV1iA04$%Mr From 46d189084499a0e390bd5877aabbf6167ec6d81e Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Mon, 9 Oct 2023 23:32:34 -0400 Subject: [PATCH 006/245] Fix fast kudzu (#20875) --- .../Spreader/SpreaderGridComponent.cs | 6 ++---- Content.Server/Spreader/SpreaderSystem.cs | 20 ++++--------------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/Content.Server/Spreader/SpreaderGridComponent.cs b/Content.Server/Spreader/SpreaderGridComponent.cs index 102678a251c395..401b7d49165657 100644 --- a/Content.Server/Spreader/SpreaderGridComponent.cs +++ b/Content.Server/Spreader/SpreaderGridComponent.cs @@ -1,10 +1,8 @@ -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; - namespace Content.Server.Spreader; [RegisterComponent] public sealed partial class SpreaderGridComponent : Component { - [DataField("nextUpdate", customTypeSerializer:typeof(TimeOffsetSerializer))] - public TimeSpan NextUpdate = TimeSpan.Zero; + [DataField] + public float UpdateAccumulator = SpreaderSystem.SpreadCooldownSeconds; } diff --git a/Content.Server/Spreader/SpreaderSystem.cs b/Content.Server/Spreader/SpreaderSystem.cs index 4cd575cbd4a36d..d61cf303d6bde6 100644 --- a/Content.Server/Spreader/SpreaderSystem.cs +++ b/Content.Server/Spreader/SpreaderSystem.cs @@ -9,7 +9,6 @@ using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; using Robust.Shared.Random; -using Robust.Shared.Timing; using Robust.Shared.Utility; namespace Content.Server.Spreader; @@ -19,13 +18,10 @@ namespace Content.Server.Spreader; /// public sealed class SpreaderSystem : EntitySystem { - [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IRobustRandom _robustRandom = default!; - private static readonly TimeSpan SpreadCooldown = TimeSpan.FromSeconds(SpreadCooldownSeconds); - ///

/// Cached maximum number of updates per spreader prototype. This is applied per-grid. /// @@ -36,7 +32,7 @@ public sealed class SpreaderSystem : EntitySystem /// private Dictionary> _gridUpdates = new(); - private const float SpreadCooldownSeconds = 1; + public const float SpreadCooldownSeconds = 1; [ValidatePrototypeId] private const string IgnoredTag = "SpreaderIgnore"; @@ -47,8 +43,6 @@ public override void Initialize() SubscribeLocalEvent(OnAirtightChanged); SubscribeLocalEvent(OnGridInit); - SubscribeLocalEvent(OnGridUnpaused); - SubscribeLocalEvent(OnTerminating); SetupPrototypes(); _prototype.PrototypesReloaded += OnPrototypeReload; @@ -87,11 +81,6 @@ private void OnAirtightChanged(ref AirtightChanged ev) } } - private void OnGridUnpaused(EntityUid uid, SpreaderGridComponent component, ref EntityUnpausedEvent args) - { - component.NextUpdate += args.PausedTime; - } - private void OnGridInit(GridInitializeEvent ev) { EnsureComp(ev.EntityUid); @@ -111,19 +100,18 @@ private void OnTerminating(EntityUid uid, EdgeSpreaderComponent component, ref E /// public override void Update(float frameTime) { - var curTime = _timing.CurTime; - // Check which grids are valid for spreading var spreadGrids = EntityQueryEnumerator(); _gridUpdates.Clear(); while (spreadGrids.MoveNext(out var uid, out var grid)) { - if (grid.NextUpdate > curTime) + grid.UpdateAccumulator -= frameTime; + if (grid.UpdateAccumulator > 0) continue; _gridUpdates[uid] = _prototypeUpdates.ShallowClone(); - grid.NextUpdate += SpreadCooldown; + grid.UpdateAccumulator += SpreadCooldownSeconds; } if (_gridUpdates.Count == 0) From 80e7f125576755cb24d35046703f134ca25b4f08 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 9 Oct 2023 23:33:38 -0400 Subject: [PATCH 007/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 908c31cf7b5169..5578b105368f25 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: hord-brayden - changes: - - {message: Added Syringe Support for Chemical Analysis Goggles, type: Fix} - id: 4480 - time: '2023-08-07T22:46:05.0000000+00:00' - author: deltanedas changes: - {message: Uplink codes no longer contain sharp notes., type: Remove} @@ -2952,3 +2947,9 @@ Entries: section., type: Add} id: 4979 time: '2023-10-09T23:42:53.0000000+00:00' +- author: EmoGarbage404 + changes: + - {message: 'Fixed kudzu, foam, smoke, and puddles spreading at extremely high rates.', + type: Fix} + id: 4980 + time: '2023-10-10T03:32:34.0000000+00:00' From 2c8a97fe023ec4ddc14b00ef072597a611a6a0d3 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Mon, 9 Oct 2023 23:34:41 -0400 Subject: [PATCH 008/245] Revert "Revert "Reenable kudzu."" (#20876) --- .../Botany/Systems/MutationSystem.cs | 7 +++--- Resources/Prototypes/GameRules/events.yml | 24 +++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/Content.Server/Botany/Systems/MutationSystem.cs b/Content.Server/Botany/Systems/MutationSystem.cs index 94a450ebeffb14..672139fbca2dec 100644 --- a/Content.Server/Botany/Systems/MutationSystem.cs +++ b/Content.Server/Botany/Systems/MutationSystem.cs @@ -37,7 +37,7 @@ public void MutateSeed(ref SeedData seed, float severity) } // Add up everything in the bits column and put the number here. - const int totalbits = 265; + const int totalbits = 270; // Tolerances (55) MutateFloat(ref seed.NutrientConsumption , 0.05f, 1.2f, 5, totalbits, severity); @@ -69,8 +69,7 @@ public void MutateSeed(ref SeedData seed, float severity) MutateBool(ref seed.Sentient , true , 10, totalbits, severity); MutateBool(ref seed.Ligneous , true , 10, totalbits, severity); MutateBool(ref seed.Bioluminescent, true , 10, totalbits, severity); - // Kudzu disabled until superkudzu bug is fixed - // MutateBool(ref seed.TurnIntoKudzu , true , 10, totalbits, severity); + MutateBool(ref seed.TurnIntoKudzu , true , 10, totalbits, severity); MutateBool(ref seed.CanScream , true , 10, totalbits, severity); seed.BioluminescentColor = RandomColor(seed.BioluminescentColor, 10, totalbits, severity); @@ -119,7 +118,7 @@ public SeedData Cross(SeedData a, SeedData b) CrossBool(ref result.Sentient, a.Sentient); CrossBool(ref result.Ligneous, a.Ligneous); CrossBool(ref result.Bioluminescent, a.Bioluminescent); - // CrossBool(ref result.TurnIntoKudzu, a.TurnIntoKudzu); + CrossBool(ref result.TurnIntoKudzu, a.TurnIntoKudzu); CrossBool(ref result.CanScream, a.CanScream); CrossGasses(ref result.ExudeGasses, a.ExudeGasses); diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 927aea0973fb6f..e15d65b5089167 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -132,18 +132,18 @@ startDelay: 20 - type: GasLeakRule -#- type: entity -# id: KudzuGrowth -# parent: BaseGameRule -# noSpawn: true -# components: -# - type: StationEvent -# earliestStart: 15 -# minimumPlayers: 15 -# weight: 5 -# startDelay: 50 -# duration: 240 -# - type: KudzuGrowthRule +- type: entity + id: KudzuGrowth + parent: BaseGameRule + noSpawn: true + components: + - type: StationEvent + earliestStart: 15 + minimumPlayers: 15 + weight: 5 + startDelay: 50 + duration: 240 + - type: KudzuGrowthRule - type: entity id: MeteorSwarm From c35a018cad95f967e26a269e22b16a6d0eb92737 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 9 Oct 2023 23:35:45 -0400 Subject: [PATCH 009/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5578b105368f25..f755401597e84c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: deltanedas - changes: - - {message: Uplink codes no longer contain sharp notes., type: Remove} - id: 4481 - time: '2023-08-08T00:16:49.0000000+00:00' - author: TotallyLemon changes: - {message: 'Nanotrasen''s R&D department have improved the RPED''s design, allowing @@ -2953,3 +2948,8 @@ Entries: type: Fix} id: 4980 time: '2023-10-10T03:32:34.0000000+00:00' +- author: EmoGarbage404 + changes: + - {message: Reenabled Kudzu (again) (for real this time), type: Add} + id: 4981 + time: '2023-10-10T03:34:41.0000000+00:00' From 6f8c2b7e52d47678f54b3dc9f3ae13829bbd62ec Mon Sep 17 00:00:00 2001 From: Slava0135 <40753025+Slava0135@users.noreply.github.com> Date: Tue, 10 Oct 2023 09:32:10 +0300 Subject: [PATCH 010/245] Use conditions to store progress for Ninja objectives (#20254) * TryGetObjectiveComp * helper function to get objective * store N of jacked doors in condition * store called in threat bool in condition * store techs in steal research condition * fix access * remove unused transform system * use popup from shared system * fix formatting * condition => obj everywhere * i fogror to remove downloaded nodes from role * change signature * use query * View Variables * spider charge detonated => condition --- .../Ninja/Systems/NinjaGlovesSystem.cs | 10 ++---- .../Ninja/Systems/SpaceNinjaSystem.cs | 36 +++++++------------ .../Ninja/Systems/SpiderChargeSystem.cs | 5 +-- .../Components/DoorjackConditionComponent.cs | 5 ++- .../SpiderChargeConditionComponent.cs | 5 ++- .../StealResearchConditionComponent.cs | 5 ++- .../Components/TerrorConditionComponent.cs | 8 ++++- .../Systems/NinjaConditionsSystem.cs | 31 +++++----------- Content.Server/Roles/NinjaRoleComponent.cs | 24 ------------- Content.Shared/Mind/SharedMindSystem.cs | 27 ++++++++++++++ .../Ninja/Systems/SharedSpaceNinjaSystem.cs | 8 ++--- 11 files changed, 76 insertions(+), 88 deletions(-) diff --git a/Content.Server/Ninja/Systems/NinjaGlovesSystem.cs b/Content.Server/Ninja/Systems/NinjaGlovesSystem.cs index 119aaa74347375..d84a7287751737 100644 --- a/Content.Server/Ninja/Systems/NinjaGlovesSystem.cs +++ b/Content.Server/Ninja/Systems/NinjaGlovesSystem.cs @@ -1,16 +1,10 @@ using Content.Server.Communications; -using Content.Server.DoAfter; using Content.Server.Mind; using Content.Server.Ninja.Events; -using Content.Server.Power.Components; -using Content.Server.Roles; +using Content.Server.Objectives.Components; using Content.Shared.Communications; -using Content.Shared.DoAfter; -using Content.Shared.Interaction.Components; -using Content.Shared.Interaction.Events; using Content.Shared.Ninja.Components; using Content.Shared.Ninja.Systems; -using Content.Shared.Popups; using Content.Shared.Research.Components; using Content.Shared.Toggleable; @@ -94,7 +88,7 @@ private void EnableGloves(EntityUid uid, NinjaGlovesComponent comp, EntityUid us EnsureComp(user); // prevent calling in multiple threats by toggling gloves after - if (_mind.TryGetRole(user, out var role) && !role.CalledInThreat) + if (_mind.TryGetObjectiveComp(user, out var obj) && !obj.CalledInThreat) { var hacker = EnsureComp(user); var rule = _ninja.NinjaRule(user); diff --git a/Content.Server/Ninja/Systems/SpaceNinjaSystem.cs b/Content.Server/Ninja/Systems/SpaceNinjaSystem.cs index 0cc3aea2662f21..8f19850c70cdea 100644 --- a/Content.Server/Ninja/Systems/SpaceNinjaSystem.cs +++ b/Content.Server/Ninja/Systems/SpaceNinjaSystem.cs @@ -1,12 +1,8 @@ using Content.Server.Administration.Commands; using Content.Server.Communications; using Content.Server.Chat.Managers; -using Content.Server.StationEvents.Components; using Content.Server.GameTicking; -using Content.Server.GameTicking.Rules; using Content.Server.GameTicking.Rules.Components; -using Content.Server.Ghost.Roles.Events; -using Content.Server.Objectives; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.PowerCell; @@ -23,16 +19,12 @@ using Content.Shared.Ninja.Components; using Content.Shared.Ninja.Systems; using Content.Shared.Popups; -using Content.Shared.Roles; -using Content.Shared.PowerCell.Components; using Content.Shared.Rounding; using Robust.Shared.Audio; -using Robust.Shared.GameObjects; -using Robust.Shared.Physics.Components; using Robust.Shared.Player; using Robust.Shared.Random; using System.Diagnostics.CodeAnalysis; -using System.Linq; +using Content.Server.Objectives.Components; namespace Content.Server.Ninja.Systems; @@ -57,8 +49,6 @@ public sealed class SpaceNinjaSystem : SharedSpaceNinjaSystem [Dependency] private readonly RoleSystem _role = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedMindSystem _mind = default!; - [Dependency] private readonly SharedPopupSystem _popup = default!; - [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly StealthClothingSystem _stealthClothing = default!; public override void Initialize() @@ -85,12 +75,12 @@ public override void Update(float frameTime) /// private int Download(EntityUid uid, List ids) { - if (!_mind.TryGetRole(uid, out var role)) + if (!_mind.TryGetObjectiveComp(uid, out var obj)) return 0; - var oldCount = role.DownloadedNodes.Count; - role.DownloadedNodes.UnionWith(ids); - var newCount = role.DownloadedNodes.Count; + var oldCount = obj.DownloadedNodes.Count; + obj.DownloadedNodes.UnionWith(ids); + var newCount = obj.DownloadedNodes.Count; return newCount - oldCount; } @@ -124,7 +114,7 @@ public void SetSuitPowerAlert(EntityUid uid, SpaceNinjaComponent? comp = null) if (GetNinjaBattery(uid, out _, out var battery)) { - var severity = ContentHelpers.RoundToLevels(MathF.Max(0f, battery.CurrentCharge), battery.MaxCharge, 8); + var severity = ContentHelpers.RoundToLevels(MathF.Max(0f, battery.CurrentCharge), battery.MaxCharge, 8); _alerts.ShowAlert(uid, AlertType.SuitPower, (short) severity); } else @@ -205,7 +195,7 @@ private void UpdateNinja(EntityUid uid, SpaceNinjaComponent ninja, float frameTi if (ninja.Suit == null) return; - float wattage = _suit.SuitWattage(ninja.Suit.Value); + float wattage = Suit.SuitWattage(ninja.Suit.Value); SetSuitPowerAlert(uid, ninja); if (!TryUseCharge(uid, wattage * frameTime)) @@ -225,11 +215,11 @@ private void OnDoorjack(EntityUid uid, SpaceNinjaComponent comp, ref EmaggedSome return; // this popup is serverside since door emag logic is serverside (power funnies) - _popup.PopupEntity(Loc.GetString("ninja-doorjack-success", ("target", Identity.Entity(args.Target, EntityManager))), uid, uid, PopupType.Medium); + Popup.PopupEntity(Loc.GetString("ninja-doorjack-success", ("target", Identity.Entity(args.Target, EntityManager))), uid, uid, PopupType.Medium); // handle greentext - if (_mind.TryGetRole(uid, out var role)) - role.DoorsJacked++; + if (_mind.TryGetObjectiveComp(uid, out var obj)) + obj.DoorsJacked++; } /// @@ -242,14 +232,14 @@ private void OnResearchStolen(EntityUid uid, SpaceNinjaComponent comp, ref Resea ? Loc.GetString("ninja-research-steal-fail") : Loc.GetString("ninja-research-steal-success", ("count", gained), ("server", args.Target)); - _popup.PopupEntity(str, uid, uid, PopupType.Medium); + Popup.PopupEntity(str, uid, uid, PopupType.Medium); } private void OnThreatCalledIn(EntityUid uid, SpaceNinjaComponent comp, ref ThreatCalledInEvent args) { - if (_mind.TryGetRole(uid, out var role)) + if (_mind.TryGetObjectiveComp(uid, out var obj)) { - role.CalledInThreat = true; + obj.CalledInThreat = true; } } } diff --git a/Content.Server/Ninja/Systems/SpiderChargeSystem.cs b/Content.Server/Ninja/Systems/SpiderChargeSystem.cs index 3ffc2a8ff35259..6f3c3b3f9df852 100644 --- a/Content.Server/Ninja/Systems/SpiderChargeSystem.cs +++ b/Content.Server/Ninja/Systems/SpiderChargeSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Explosion.EntitySystems; using Content.Server.Mind; +using Content.Server.Objectives.Components; using Content.Server.Popups; using Content.Server.Roles; using Content.Server.Sticky.Events; @@ -69,10 +70,10 @@ private void OnStuck(EntityUid uid, SpiderChargeComponent comp, EntityStuckEvent /// private void OnExplode(EntityUid uid, SpiderChargeComponent comp, TriggerEvent args) { - if (comp.Planter == null || !_mind.TryGetRole(comp.Planter.Value, out var role)) + if (comp.Planter == null || !_mind.TryGetObjectiveComp(comp.Planter.Value, out var obj)) return; // assumes the target was destroyed, that the charge wasn't moved somehow - role.SpiderChargeDetonated = true; + obj.SpiderChargeDetonated = true; } } diff --git a/Content.Server/Objectives/Components/DoorjackConditionComponent.cs b/Content.Server/Objectives/Components/DoorjackConditionComponent.cs index 714a70d8b974c2..470680ae6d7540 100644 --- a/Content.Server/Objectives/Components/DoorjackConditionComponent.cs +++ b/Content.Server/Objectives/Components/DoorjackConditionComponent.cs @@ -1,4 +1,5 @@ using Content.Server.Objectives.Systems; +using Content.Shared.Ninja.Systems; namespace Content.Server.Objectives.Components; @@ -6,7 +7,9 @@ namespace Content.Server.Objectives.Components; /// Objective condition that requires the player to be a ninja and have doorjacked at least a random number of airlocks. /// Requires to function. /// -[RegisterComponent, Access(typeof(NinjaConditionsSystem))] +[RegisterComponent, Access(typeof(NinjaConditionsSystem), typeof(SharedSpaceNinjaSystem))] public sealed partial class DoorjackConditionComponent : Component { + [DataField("doorsJacked"), ViewVariables(VVAccess.ReadWrite)] + public int DoorsJacked; } diff --git a/Content.Server/Objectives/Components/SpiderChargeConditionComponent.cs b/Content.Server/Objectives/Components/SpiderChargeConditionComponent.cs index 4fbe8572cddf2e..1c6f22ed57cbcf 100644 --- a/Content.Server/Objectives/Components/SpiderChargeConditionComponent.cs +++ b/Content.Server/Objectives/Components/SpiderChargeConditionComponent.cs @@ -1,3 +1,4 @@ +using Content.Server.Ninja.Systems; using Content.Server.Objectives.Systems; namespace Content.Server.Objectives.Components; @@ -5,7 +6,9 @@ namespace Content.Server.Objectives.Components; /// /// Requires that the player is a ninja and blew up their spider charge at its target location. /// -[RegisterComponent, Access(typeof(NinjaConditionsSystem))] +[RegisterComponent, Access(typeof(NinjaConditionsSystem), typeof(SpiderChargeSystem))] public sealed partial class SpiderChargeConditionComponent : Component { + [DataField("spiderChargeDetonated"), ViewVariables(VVAccess.ReadWrite)] + public bool SpiderChargeDetonated; } diff --git a/Content.Server/Objectives/Components/StealResearchConditionComponent.cs b/Content.Server/Objectives/Components/StealResearchConditionComponent.cs index 736a2e74b66cf6..26710ed7cc7f02 100644 --- a/Content.Server/Objectives/Components/StealResearchConditionComponent.cs +++ b/Content.Server/Objectives/Components/StealResearchConditionComponent.cs @@ -1,4 +1,5 @@ using Content.Server.Objectives.Systems; +using Content.Shared.Ninja.Systems; namespace Content.Server.Objectives.Components; @@ -6,7 +7,9 @@ namespace Content.Server.Objectives.Components; /// Objective condition that requires the player to be a ninja and have stolen at least a random number of technologies. /// Requires to function. /// -[RegisterComponent, Access(typeof(NinjaConditionsSystem))] +[RegisterComponent, Access(typeof(NinjaConditionsSystem), typeof(SharedSpaceNinjaSystem))] public sealed partial class StealResearchConditionComponent : Component { + [DataField("downloadedNodes"), ViewVariables(VVAccess.ReadWrite)] + public HashSet DownloadedNodes = new(); } diff --git a/Content.Server/Objectives/Components/TerrorConditionComponent.cs b/Content.Server/Objectives/Components/TerrorConditionComponent.cs index c94e3b424d0d90..acd3218ad4de12 100644 --- a/Content.Server/Objectives/Components/TerrorConditionComponent.cs +++ b/Content.Server/Objectives/Components/TerrorConditionComponent.cs @@ -1,11 +1,17 @@ using Content.Server.Objectives.Systems; +using Content.Shared.Ninja.Systems; namespace Content.Server.Objectives.Components; /// /// Requires that the player is a ninja and has called in a threat. /// -[RegisterComponent, Access(typeof(NinjaConditionsSystem))] +[RegisterComponent, Access(typeof(NinjaConditionsSystem), typeof(SharedSpaceNinjaSystem))] public sealed partial class TerrorConditionComponent : Component { + /// + /// Whether the comms console has been hacked + /// + [DataField("calledInThreat"), ViewVariables(VVAccess.ReadWrite)] + public bool CalledInThreat; } diff --git a/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs b/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs index 8e03ef201dd184..eaf97e97e01204 100644 --- a/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs +++ b/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs @@ -2,7 +2,6 @@ using Content.Server.Objectives.Components; using Content.Server.Warps; using Content.Shared.Objectives.Components; -using Robust.Shared.GameObjects; namespace Content.Server.Objectives.Systems; @@ -31,22 +30,16 @@ public override void Initialize() private void OnDoorjackGetProgress(EntityUid uid, DoorjackConditionComponent comp, ref ObjectiveGetProgressEvent args) { - args.Progress = DoorjackProgress(args.MindId, _number.GetTarget(uid)); + args.Progress = DoorjackProgress(comp, _number.GetTarget(uid)); } - private float DoorjackProgress(EntityUid mindId, int target) + private float DoorjackProgress(DoorjackConditionComponent comp, int target) { // prevent divide-by-zero if (target == 0) return 1f; - if (!TryComp(mindId, out var role)) - return 0f; - - if (role.DoorsJacked >= target) - return 1f; - - return (float) role.DoorsJacked / (float) target; + return MathF.Min(comp.DoorsJacked / (float) target, 1f); } // spider charge @@ -58,7 +51,7 @@ private void OnSpiderChargeAfterAssign(EntityUid uid, SpiderChargeConditionCompo private void OnSpiderChargeGetProgress(EntityUid uid, SpiderChargeConditionComponent comp, ref ObjectiveGetProgressEvent args) { - args.Progress = TryComp(args.MindId, out var role) && role.SpiderChargeDetonated ? 1f : 0f; + args.Progress = comp.SpiderChargeDetonated ? 1f : 0f; } private string SpiderChargeTitle(EntityUid mindId) @@ -79,28 +72,20 @@ private string SpiderChargeTitle(EntityUid mindId) private void OnStealResearchGetProgress(EntityUid uid, StealResearchConditionComponent comp, ref ObjectiveGetProgressEvent args) { - args.Progress = StealResearchProgress(args.MindId, _number.GetTarget(uid)); + args.Progress = StealResearchProgress(comp, _number.GetTarget(uid)); } - private float StealResearchProgress(EntityUid mindId, int target) + private float StealResearchProgress(StealResearchConditionComponent comp, int target) { // prevent divide-by-zero if (target == 0) return 1f; - if (!TryComp(mindId, out var role)) - return 0f; - - if (role.DownloadedNodes.Count >= target) - return 1f; - - return (float) role.DownloadedNodes.Count / (float) target; + return MathF.Min(comp.DownloadedNodes.Count / (float) target, 1f); } - // terror - private void OnTerrorGetProgress(EntityUid uid, TerrorConditionComponent comp, ref ObjectiveGetProgressEvent args) { - args.Progress = TryComp(args.MindId, out var role) && role.CalledInThreat ? 1f : 0f; + args.Progress = comp.CalledInThreat ? 1f : 0f; } } diff --git a/Content.Server/Roles/NinjaRoleComponent.cs b/Content.Server/Roles/NinjaRoleComponent.cs index aa9e1cfa3286b6..dcc55d0fb4347f 100644 --- a/Content.Server/Roles/NinjaRoleComponent.cs +++ b/Content.Server/Roles/NinjaRoleComponent.cs @@ -8,33 +8,9 @@ namespace Content.Server.Roles; [RegisterComponent] public sealed partial class NinjaRoleComponent : AntagonistRoleComponent { - /// - /// Number of doors that have been doorjacked, used for objective - /// - [DataField("doorsJacked")] - public int DoorsJacked; - - /// - /// Research nodes that have been downloaded, used for objective - /// - [DataField("downloadedNodes")] - public HashSet DownloadedNodes = new(); - /// /// Warp point that the spider charge has to target /// [DataField("spiderChargeTarget")] public EntityUid? SpiderChargeTarget; - - /// - /// Whether the spider charge has been detonated on the target, used for objective - /// - [DataField("spiderChargeDetonated")] - public bool SpiderChargeDetonated; - - /// - /// Whether the comms console has been hacked, used for objective - /// - [DataField("calledInThreat")] - public bool CalledInThreat; } diff --git a/Content.Shared/Mind/SharedMindSystem.cs b/Content.Shared/Mind/SharedMindSystem.cs index b7cd30e9621962..be11d8a2ad4c85 100644 --- a/Content.Shared/Mind/SharedMindSystem.cs +++ b/Content.Shared/Mind/SharedMindSystem.cs @@ -292,6 +292,33 @@ public bool TryRemoveObjective(EntityUid mindId, MindComponent mind, int index) return true; } + public bool TryGetObjectiveComp(EntityUid uid, [NotNullWhen(true)] out T? objective) where T : Component + { + if (TryGetMind(uid, out var mindId, out var mind) && TryGetObjectiveComp(mindId, out objective, mind)) + { + return true; + } + objective = default; + return false; + } + + public bool TryGetObjectiveComp(EntityUid mindId, [NotNullWhen(true)] out T? objective, MindComponent? mind = null) where T : Component + { + if (Resolve(mindId, ref mind)) + { + var query = GetEntityQuery(); + foreach (var uid in mind.AllObjectives) + { + if (query.TryGetComponent(uid, out objective)) + { + return true; + } + } + } + objective = default; + return false; + } + public bool TryGetSession(EntityUid? mindId, [NotNullWhen(true)] out ICommonSession? session) { session = null; diff --git a/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs b/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs index d8ff07c27aa359..fbcb4efe484825 100644 --- a/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs +++ b/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs @@ -11,8 +11,8 @@ namespace Content.Shared.Ninja.Systems; /// public abstract class SharedSpaceNinjaSystem : EntitySystem { - [Dependency] protected readonly SharedNinjaSuitSystem _suit = default!; - [Dependency] protected readonly SharedPopupSystem _popup = default!; + [Dependency] protected readonly SharedNinjaSuitSystem Suit = default!; + [Dependency] protected readonly SharedPopupSystem Popup = default!; public override void Initialize() { @@ -74,7 +74,7 @@ private void OnNinjaAttacked(EntityUid uid, SpaceNinjaComponent comp, AttackedEv { if (comp.Suit != null && TryComp(comp.Suit, out var stealthClothing) && stealthClothing.Enabled) { - _suit.RevealNinja(comp.Suit.Value, uid, null, stealthClothing); + Suit.RevealNinja(comp.Suit.Value, uid, null, stealthClothing); } } @@ -83,7 +83,7 @@ private void OnNinjaAttacked(EntityUid uid, SpaceNinjaComponent comp, AttackedEv /// private void OnShotAttempted(EntityUid uid, SpaceNinjaComponent comp, ref ShotAttemptedEvent args) { - _popup.PopupClient(Loc.GetString("gun-disabled"), uid, uid); + Popup.PopupClient(Loc.GetString("gun-disabled"), uid, uid); args.Cancel(); } } From 764a0a15c1f96faf680900d4b9f5f74e152004fc Mon Sep 17 00:00:00 2001 From: GoodWheatley <109803540+GoodWheatley@users.noreply.github.com> Date: Tue, 10 Oct 2023 10:03:19 -0400 Subject: [PATCH 011/245] Fix species speeds (#20890) * Fix diona speed * Fix lizard speed --- Resources/Prototypes/Body/Parts/diona.yml | 6 ------ Resources/Prototypes/Body/Parts/reptilian.yml | 8 +------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/Resources/Prototypes/Body/Parts/diona.yml b/Resources/Prototypes/Body/Parts/diona.yml index 357cf7947b0fe1..5257512aaab688 100644 --- a/Resources/Prototypes/Body/Parts/diona.yml +++ b/Resources/Prototypes/Body/Parts/diona.yml @@ -62,9 +62,6 @@ components: - type: Sprite state: "l_leg" - - type: MovementBodyPart - walkSpeed : 1.5 - sprintSpeed : 3.5 - type: entity id: RightLegDiona @@ -76,9 +73,6 @@ - type: BodyPart partType: Leg symmetry: Right - - type: MovementBodyPart - walkSpeed : 1.5 - sprintSpeed : 3.5 - type: entity id: LeftFootDiona diff --git a/Resources/Prototypes/Body/Parts/reptilian.yml b/Resources/Prototypes/Body/Parts/reptilian.yml index 22ab7aeb525b31..a299636352a660 100644 --- a/Resources/Prototypes/Body/Parts/reptilian.yml +++ b/Resources/Prototypes/Body/Parts/reptilian.yml @@ -90,9 +90,6 @@ - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "l_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - type: entity id: RightLegReptilian @@ -102,9 +99,6 @@ - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "r_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - type: entity id: LeftFootReptilian @@ -122,4 +116,4 @@ components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_foot" \ No newline at end of file + state: "r_foot" From 55f058f3d6e3fea17ac3325cc2c5d240983e9277 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Oct 2023 10:04:24 -0400 Subject: [PATCH 012/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f755401597e84c..23e1073e792ee2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: TotallyLemon - changes: - - {message: 'Nanotrasen''s R&D department have improved the RPED''s design, allowing - it to quickly install parts into in-progress machine frames.', type: Add} - id: 4482 - time: '2023-08-08T00:26:25.0000000+00:00' - author: Doru991 changes: - {message: 'Due to Nanotrasen choosing a new seed supplier, most plants consume @@ -2953,3 +2947,8 @@ Entries: - {message: Reenabled Kudzu (again) (for real this time), type: Add} id: 4981 time: '2023-10-10T03:34:41.0000000+00:00' +- author: GoodWheatley + changes: + - {message: Dionas are actually the same speed as other species now., type: Fix} + id: 4982 + time: '2023-10-10T14:03:20.0000000+00:00' From 6abb55088c5f56adfa2df00d4be12f0113a85beb Mon Sep 17 00:00:00 2001 From: potato1234_x <79580518+potato1234x@users.noreply.github.com> Date: Wed, 11 Oct 2023 02:55:30 +1000 Subject: [PATCH 013/245] CuraDrobe + Misc Librarian Stuff (#19469) * sprites * stuff * jumpsuit sprites * jumpskirt sprites * fix 2 * CLOTHING FIX 2 IM LOSING MY MIND * contrast 2 * update 239 --- .../advertisements/vending/curadrobe.ftl | 2 ++ .../Advertisements/curadrobe.yml | 5 +++ .../VendingMachines/Inventories/curadrobe.yml | 14 ++++++++ .../Entities/Clothing/Eyes/glasses.yml | 16 +++++++++ .../Entities/Clothing/Uniforms/jumpskirts.yml | 22 +++++++++++++ .../Entities/Clothing/Uniforms/jumpsuits.yml | 13 +++++++- .../Service/vending_machine_restock.yml | 1 + .../Structures/Machines/vending_machines.yml | 26 +++++++++++++++ .../Roles/Jobs/Civilian/librarian.yml | 5 +-- .../jamjar.rsi/equipped-EYES-hamster.png | Bin 0 -> 7979 bytes .../Eyes/Glasses/jamjar.rsi/equipped-EYES.png | Bin 0 -> 292 bytes .../Clothing/Eyes/Glasses/jamjar.rsi/icon.png | Bin 0 -> 322 bytes .../Eyes/Glasses/jamjar.rsi/inhand-left.png | Bin 0 -> 189 bytes .../Eyes/Glasses/jamjar.rsi/inhand-right.png | Bin 0 -> 191 bytes .../Eyes/Glasses/jamjar.rsi/meta.json | 30 +++++++++++++++++ .../equipped-INNERCLOTHING-monkey.png | Bin 0 -> 7639 bytes .../curator.rsi/equipped-INNERCLOTHING.png | Bin 0 -> 597 bytes .../Uniforms/Jumpskirt/curator.rsi/icon.png | Bin 0 -> 362 bytes .../Jumpskirt/curator.rsi/inhand-left.png | Bin 0 -> 421 bytes .../Jumpskirt/curator.rsi/inhand-right.png | Bin 0 -> 429 bytes .../Uniforms/Jumpskirt/curator.rsi/meta.json | 30 +++++++++++++++++ .../equipped-INNERCLOTHING-monkey.png | Bin 0 -> 7642 bytes .../librarian.rsi/equipped-INNERCLOTHING.png | Bin 0 -> 606 bytes .../Uniforms/Jumpskirt/librarian.rsi/icon.png | Bin 0 -> 353 bytes .../Jumpskirt/librarian.rsi/inhand-left.png | Bin 0 -> 425 bytes .../Jumpskirt/librarian.rsi/inhand-right.png | Bin 0 -> 435 bytes .../Jumpskirt/librarian.rsi/meta.json | 30 +++++++++++++++++ .../equipped-INNERCLOTHING-monkey.png | Bin 0 -> 7693 bytes .../curator.rsi/equipped-INNERCLOTHING.png | Bin 0 -> 658 bytes .../Uniforms/Jumpsuit/curator.rsi/icon.png | Bin 0 -> 353 bytes .../Jumpsuit/curator.rsi/inhand-left.png | Bin 0 -> 421 bytes .../Jumpsuit/curator.rsi/inhand-right.png | Bin 0 -> 429 bytes .../Uniforms/Jumpsuit/curator.rsi/meta.json | 30 +++++++++++++++++ .../equipped-INNERCLOTHING-monkey.png | Bin 20477 -> 7693 bytes .../librarian.rsi/equipped-INNERCLOTHING.png | Bin 661 -> 675 bytes .../Uniforms/Jumpsuit/librarian.rsi/icon.png | Bin 469 -> 346 bytes .../Jumpsuit/librarian.rsi/inhand-left.png | Bin 497 -> 425 bytes .../Jumpsuit/librarian.rsi/inhand-right.png | Bin 559 -> 435 bytes .../Uniforms/Jumpsuit/librarian.rsi/meta.json | 2 +- .../VendingMachines/curadrobe.rsi/broken.png | Bin 0 -> 443 bytes .../VendingMachines/curadrobe.rsi/meta.json | 31 ++++++++++++++++++ .../curadrobe.rsi/normal-unshaded.png | Bin 0 -> 1971 bytes .../VendingMachines/curadrobe.rsi/off.png | Bin 0 -> 318 bytes .../VendingMachines/curadrobe.rsi/panel.png | Bin 0 -> 190 bytes 44 files changed, 251 insertions(+), 6 deletions(-) create mode 100644 Resources/Locale/en-US/advertisements/vending/curadrobe.ftl create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Advertisements/curadrobe.yml create mode 100644 Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/equipped-EYES-hamster.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/equipped-EYES.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/equipped-INNERCLOTHING-monkey.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/equipped-INNERCLOTHING-monkey.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/equipped-INNERCLOTHING-monkey.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/broken.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/normal-unshaded.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/panel.png diff --git a/Resources/Locale/en-US/advertisements/vending/curadrobe.ftl b/Resources/Locale/en-US/advertisements/vending/curadrobe.ftl new file mode 100644 index 00000000000000..d749574697314b --- /dev/null +++ b/Resources/Locale/en-US/advertisements/vending/curadrobe.ftl @@ -0,0 +1,2 @@ +advertisement-curadrobe-1 = Glasses for your eyes and literature for your soul, CuraDrobe has it all! +advertisement-curadrobe-2 = Impress & enthrall your library guests with CuraDrobe's extended line of pens! diff --git a/Resources/Prototypes/Catalog/VendingMachines/Advertisements/curadrobe.yml b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/curadrobe.yml new file mode 100644 index 00000000000000..71cc1230b2a082 --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Advertisements/curadrobe.yml @@ -0,0 +1,5 @@ +- type: advertisementsPack + id: CuraDrobeAds + advertisements: + - advertisement-curadrobe-1 + - advertisement-curadrobe-2 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml new file mode 100644 index 00000000000000..b083c62ed56391 --- /dev/null +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml @@ -0,0 +1,14 @@ +- type: vendingMachineInventory + id: CuraDrobeInventory + startingInventory: + BooksBag: 1 + HandLabeler: 2 + ClothingEyesGlasses: 2 + ClothingEyesGlassesJamjar: 2 + ClothingUniformJumpsuitCurator: 3 + ClothingUniformJumpskirtCurator: 3 + ClothingUniformJumpsuitLibrarian: 3 + ClothingUniformJumpskirtLibrarian: 3 + ClothingShoesBootsLaceup: 2 + ClothingHeadsetService: 2 + diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml index c97290fdaaace8..2323db881e810a 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml @@ -80,6 +80,22 @@ - HamsterWearable - WhitelistChameleon +- type: entity + parent: ClothingEyesBase + id: ClothingEyesGlassesJamjar + name: jamjar glasses + description: Also known as Virginity Protectors. + components: + - type: Sprite + sprite: Clothing/Eyes/Glasses/jamjar.rsi + - type: Clothing + sprite: Clothing/Eyes/Glasses/jamjar.rsi + - type: VisionCorrection + - type: Tag + tags: + - HamsterWearable + - WhitelistChameleon + - type: entity parent: ClothingEyesBase id: ClothingEyesGlassesOutlawGlasses diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index bbfec42bea9fb3..d0eeb5b64b9f99 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -537,6 +537,28 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpskirt/Color/maroon.rsi +- type: entity + parent: ClothingUniformSkirtBase + id: ClothingUniformJumpskirtLibrarian + name: librarian jumpskirt + description: A cosy green jumper fit for a curator of books. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/librarian.rsi + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/librarian.rsi + +- type: entity + parent: ClothingUniformSkirtBase + id: ClothingUniformJumpskirtCurator + name: sensible skirt + description: It's sensible. Too sensible... + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/curator.rsi + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/curator.rsi + - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtPerformer diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index 8d3bee7b1908ab..5e857141b858aa 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -767,6 +767,17 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/librarian.rsi +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitCurator + name: sensible suit + description: It's sensible. Too sensible... + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/curator.rsi + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/curator.rsi + - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitLawyerRed @@ -1157,7 +1168,7 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitCossack - name: Cossack suit + name: cossack suit description: the good old pants and brigantine. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml b/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml index 3324e7d2c31621..6ada51176c9c17 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml @@ -135,6 +135,7 @@ - SecDrobeInventory - ViroDrobeInventory - WinterDrobeInventory + - CuraDrobeInventory - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 3e8f6a9b6b19e3..8e06d23ee76e03 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -1614,6 +1614,32 @@ - type: AccessReader access: [["Chemistry"]] +- type: entity + parent: VendingMachine + id: VendingMachineCuraDrobe + name: CuraDrobe + description: A lowstock vendor only capable of vending clothing for curators and librarians. + components: + - type: VendingMachine + pack: CuraDrobeInventory + offState: off + brokenState: broken + normalState: normal-unshaded + - type: Advertise + pack: CuraDrobeAds + - type: Sprite + sprite: Structures/Machines/VendingMachines/curadrobe.rsi + layers: + - state: "off" + map: ["enum.VendingMachineVisualLayers.Base"] + - state: "off" + map: ["enum.VendingMachineVisualLayers.BaseUnshaded"] + shader: unshaded + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: AccessReader + access: [["Service"]] + - type: entity parent: VendingMachine id: VendingMachineAtmosDrobe diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml index 8a3e2adaa377a4..68d075f89fc63c 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml @@ -19,10 +19,7 @@ id: LibrarianPDA ears: ClothingHeadsetService pocket1: d10Dice - belt: BooksBag pocket2: HandLabeler # for making named bestsellers - inhand: - right hand: BriefcaseBrownFilled - innerclothingskirt: ClothingUniformJumpskirtColorLightBrown + innerclothingskirt: ClothingUniformJumpskirtLibrarian satchel: ClothingBackpackSatchelLibrarianFilled duffelbag: ClothingBackpackDuffelLibrarianFilled diff --git a/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/equipped-EYES-hamster.png b/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/equipped-EYES-hamster.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7042d3df9158df1629cace61d8b46e5f8831ee GIT binary patch literal 7979 zcmd^EU5H#s74B?wSrY~pmhoR`dj)mZny#N)_f|DCy_uPwY({pnvy)jf5k%`&)t$Ly zrf=JQlj-C^*If`6L0MK1#Xnf|!H0-X3ZkwcxFGoAA3;<^9~4#$z9f=JJok6*OlIPw zGp@mH`tMeq^VO+yPMtcZ>iNZ!kB=RB`;l6$Ha35vvjo4#lFtK&;rlD!{nV@Qb7-*i z_)P86&)@l1czDC=^ulzl_MOiiy`kO+&+lG*VtMZ7&6}5gb^W;?{&ReM{PgM5$G>{@ z&CmS+I>*Mwe)`87@aGTL-jgsNjh9ZI0^YX?1Fr}SAH*L}MhcBdMD|Nf5}_0UW;PV)u4 z(3`bu;fafVd+OrJWqt9imZtGod+f;MumuPkHdgiF#(HK(nwyP!N)n%) zYD_01)>jr5>$6ec*7<~sG7wqJ{&wvHP+&|*J?I5H#a9X*+kS|Z4xPE6VoQ82q@6tLN``J)EzvWf#fh9JJ9{G z7l%=|p1>+UIu}nhK;mpF8@&>{JIM6~nrjYKuSq6wGPRV@=#s8?uD_m2V06>2+YQ@| z2S7_o+TL0eM}xI!59qRc+W?^Ag@tmAU1izWD2EutbLU|ixmI?i9xPwz+2)cRMCbb2 z&YcG_A1-Dyh?ne^Quo0QE+(7FvID|m(9}G6TNXx4q(jr%5)^B#ETs@R zTme=i)*v6lmv${Ck~soPJpwHAn1=%?k#%*D!3xbe(vGx(2F9h-9|6`;)Zjo_BpqsV z*nm+K5MLRJ9gDFu0xTCk5iZ5ZdX95&(t3s&<`V_5n&-N;pcCy0Pf;2uM(7CAN~5jC zE(P6M@8G1B*08__MBhq3hqZ(t-!m`=%4EPtF_|U~=fc&nHL+X?iniHwVa!N6SPy>SHi}%i?T@4}6$o8D{FN6^#l4Z_Z#wiU^Gi@!dd6 z!ITTz&MoXk&X5BaBLnarnS)ha3F0Dbak>pzqy!`q;2_{L5;G>jl-V#9upPrZ*$<&S zQtK6pWFCo$Jq_B|+@Qb*t+amWss6wwnf+9wNbQSyC(C?+JS`4dN+(56TPF#%g@v}QwGbrZ$vMJX?Y6)9 zX3!P(UEw#^Z1;AFc!rWv?aDuhf_PK)?er?-srxAoGQjO@Rpebf|1On1Q0GThHPh0y zN=QUG#0<}MFcR8uksK`|6 zqkiwt@NNPe6taeD79gnLIpTo>Wt~Gj1oeh1B$qhAP}bksUXlg4*Y|q58=Dvc7SK$> zexo5#C6JfFMkC;hdk*F{@Z2(WxPutC>oM7DzQ6ykH=lB07havGWYr*4%2){qX&Cqq zu`LOIWh^Z4D;U)=4nEI0kU)1&&+u**)&7c|I}UXJCyOfc#%hgI6ihqIp`z-`cGcs_ z_Meoh;N`a~fuNXy+lp2tS`|g;euLc(_N}FqL!11pe9tm;e+Pk?oE5NJ28!;s5Y2|z z1*RCPP<>}h$7Sg`nOx_zpo)cZE6uUma2|L|TZxqRtRzM0`nk07^eBc`lO*3cW3_ub z4b1W zGDvD_7Y-3pj-4I5u$|e9t=@A5Zac>1H4<+W!YJyd%+e-H1w(owyc z2R{4C&;IqHqgRf;^w7*Fet+bXH=bWTTzls5mG*;wy6@_XUwg~3Z@l>Dk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~u2Ka=y{{R1f-PPaC`+kawiiU@WyUqJ9*1Q)e$;-=o{NW!U$6wS z9u>FY1X=(=2iP4F`c88@sXV)IubOMZ*I!KmW?nxY`tOltU=RYLhADiLIp&MssGjs3 P=l}*!S3j3^P6O>_%)r2R7=#&*=dVZs3QqQPaSXBWe>>qIAG0EdOQCGx z)BpB6n6I2znS1H=xtEr9N`Y^@t8#8%%YiQCRe^HXX7gWqz-Ra1?k8Ek`2p2k{}Zm5QWQS;QC2yk++@Os_l=sFVGAAR$18#jo@A&=Q>)&qyDe!dlb6Mw<&;$UZU`T%e literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/inhand-right.png b/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..b02a6b8528882e34c02cf6d49c3e873a49b63708 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=ZJsWUAr*7p-a5#8$bg6Sg3m?Q zIlRWWAIiLCARZRx!yHugw;tbAs;#pz}GF(a>?-z!hA?A3j+YA;AX&;@6+br#4T(ZZ0u(irUM@j$Q^q$t`@QmAdiFVv)n0HN(>Nd~v$M1ID!$vx z?b^OXv@%r%qEsmYnuG!(p`m6iTWHgrX2NyuH0$ zubp#n>`;QrNxt*WzW19q@6G(?&705nZ|PmJ?51U@RBA=v=HdYS-X8odT?F6X_|a!x zho3fYptmb^_~##Z4IUN`7fOXx>Zym9U!Y6ic|-r5gFW^wx8zo>`u6vJ_*i@UnKNf{ zcT6DC)%%HqpIg6v>#Q4qQ06{O*UO_7z z4PXQQ51O-?bVJ17k;@c<9@9gm{&crn<7v4=K@2NuTGcxQSyd(V!)byAIg7=th!GJD z2^$hgH$NHZE}ibIS++4y+|=w2o^qKH->(|k?8L-G$AsA7)`qi!uIpJ$vV1w~`KEsp*dSxeQnw4y9a;u`6EFU*NfHomR6#2M&hT5VTk< zR~@U3HY~7MmXGo>ulOFw3bAZ;#PwZo#GM5?em$)NaB-;=_tDapayjn8^Lxf&7)`IV zl=cR9Re5%Rd+u0`@t$!ob6qqV&mZ7ZPMw1~h{wvlW6z=+yqPvAUUy~@4c>&JjgSZN z?*tbZ-8D{qw>IdyqxohnCoFiixE zFc}nNLzE3cy$uTn#tDc}avDO(wH$j_gdid;ArTJ>#1J$?CP{>ZE2G;Tb!%V{&x@VeR?RJRiY^-qW^$pzxCa67 z;;=LqQWqUgG&LJXoxHF~>*~^Fu}2bht*cuokgkFvD>5z=bcJlvIF@%svPcLK z7=}U22bL1s(p4Sl0@s?pHQ^C_Dw>4IimnRtfaL<`nnD}aHeu;iu$EhrMW|*6PPm$| zTqJ@ifwi{WoM4oy1W}nwRI@Z&5au&)xy=<>mnafdYKOknbqyn3qq?k$s>Z1`58v8E zAfg7ol@yp|jpabG4L-3kmqn2g)tncsOb8Yg0@iBHd3$Bn0{3=Uuy9Qio6NEWL~X7k zOO|Y;>n03aF)@=giEDz~V%T9*l2(#rH9H>#+eE2k^i@2c0$KGH^MN4_7-C5#tTzt+ zrz*@AB580E== zr4RxuGwdb-Hlv%5)Evmc=x9PB7)Rhxl`)Mm*+RBz%g7QX8JQAzm1#hJf+%rarBMeh zU}ki**$Mc3SAu^V`PEjwGtm_Dc_T@x(wfJE^dXmt@`os?3b$7fZ)6|_WkF_@XTh$` z!MW2~BSS)+riOEA+~zjk5IUjW5`JQYS1z~PhbRrHminG+`xCUr3&XG(&Lsm00jH}a zkz36C1v=ZKDw;0q*v4>n zxU#(@B)GTtdRjUZ^1c94aN0dn>GO5H7f%H|tqKY+JnMX{*v$$Z$x*;pkS^O>E z-~Zd2PrR@r4>nV>BnibfCJ3QH1OJBG0{V-&Fv3q@B>TAfdCpZKx@&rb3t3b|g;PA0 zHKbC^5fmW^(o7Y2kDC%PRnwGh5{2vv5{LgUs^C1ckig9C6ne!wP|M2W{~p_gG?6@f zMkm>s=hWyp9;Q2+g1juK8Up=X?raLDOsG{Gi5VYN2j;p9%}}4>xF)pKtd!1LADCO^ zF0?ZNc1cI>LMsGe7cF3-t|HeLr+ggO1UiFaz5(S0I0rY9-#pX>FKLUB8gGVzYQgAO zqa>gb44oE4y^mHLKM#!8Fl0t^tP|Wigyr$Aa1+M!iY$vz zo0{1?UB2I`^UuU6TkX1TtVK{S1b$;_5OA5b9;V_mloHqN54CK@#4h97k_zj{h_^& ze(`SXR7k^QH?8yG> zCjT^koW7_Zxb6A_FE2g$%~el+|G~)+hg_V9N$e)5e+&cC|yzN5#C4S!p7YV~^$q#nQS zJdW-_qI2)dmgt_< zLl0=V#k+S-)<3)R@cpmj>!1AYuOEN+a2wj!v!!^r>r?mt3siy^p#T5? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..f4943098c5e2507ff4d710453b277a80bf913c44 GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e1o(uw7RkviUAe7YMdjVQcedW;?y(COYiQ&Z*XtTN#Ysw*%F9RkShrMW zFPz?$5$z4sRN|fV5l9J?1o;L3M+FQIlw&1p0tQ)gQkXb}e!I(mydtV!JA3iEfZs7~j`KG5`}>ugH8LSwOXJr!fr*orT#Qt`&uACOY{GDrf!D#3 z;os8ok6oJ4NB$n(zu3QPt*=U7Xj9Kb*&C%|=IM|5FMXAof2DlG%q51U3=29GN*y-o zGi3b!A(nXM$C8P9`CL-LatE$;S~ne2|M;ok&AL3lk9`Y1dcOSRkm)0FfVYJK%T0tMyvD^zZ9<-KEn%2M62{d;pz6LZZXwjWX( ba{s?myYY6HROfqOlrea^`njxgN@xNAFEjp_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0142dcbeeb895de4999d76905b94de6f38f630c1 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik#1AIbUi{#{%uH3eI_3FhM8t>k{v-K`_k6oBoT(4{7)UKiuCn;GfFCXb+ zof+lbQklJQdKXaN@`ZoRfs|lLkYDhBG{B&`c4iV#lC!`gvY3H^?;r>>?wFYU7AUyb z)5S5w!vAgmYrbX$9yfd4xEmV3{`v3jzjbEP8QtGIQ@|K%(Gg>==&Smg)^>bP0l+XkK7afvo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ee3cd2212413f7433373f53270656a589bdc3e GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e1o(uw21-aQUAb+shQ_;h?`*xxb&Z_dV;8oosMrb#c{-S6M0>YXW-pxH zWpAdHCNB@vbmwx3H;@u23Gxg6j|vzbD91_yu3r#+OXGq~T!D=Is;y5GSsuQu1^Sl3)78&qol`;+07-k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e1o(uw21-aQUAb+shQ_;h?`*xxb&Z_dV;8oosMrb#rOC^CI+$ccd$&|( zFPz?GZ>9y*H2Vd+A&?R%3Gxg6j|vzbD91_y%|V_lkx&F-e~-QL!z zcOflxe{D0TkAPt#r_y<$3!67A;?`NW^2I672I)lC@T^^HV-=<=*C zJrkxvSMi9L;ESSq0U;%=@e#onS)agTe~DWM4f D0o|ie literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/meta.json new file mode 100644 index 00000000000000..0a48ac3e373c8b --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/curator.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/47718914e47c6fbf23d6dc97f073a9daa11b23cb and modified by potato1234x (github) for ss14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-INNERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-INNERCLOTHING-monkey", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/equipped-INNERCLOTHING-monkey.png new file mode 100644 index 0000000000000000000000000000000000000000..2462daf587c5c64b8494674bee55e9c2fee37239 GIT binary patch literal 7642 zcmeHMeQX>@6~8tKjgux2B4}tR*t83lj(GT}*+)&-V!?LVqOhEkLfnCesXQ|)Uv+14WC)M%XuU~{WO{K0al~ii+ z^5E~9)PoPLNTpU@aQg@Rf$oha^9s$>_AK69EtEhym1-C}F{jUPUn z7F@eEy;%-R$J3GU=#ii znlovkCgN{vP3M9hg@Nu~q1`KUL1|VI!>T4|Mzg4BnylR}5G*PgEM+8&h-Avxl!;LP zq@g=OXerx{*_ZFEcLz_c=^@`QnVHPk*jV$J)a;c9GooP_8B8*SAdo)c3Z)pkSgHF9JeR4`QbugX!O&`gHjCv-Bjw?m z1vbm@VP4=xzXGyiEL$4#e6KR(O#>ajp40)jxVt;hmnYFik{^FzFW+ zQ&LP(`y>`kj1v%{d5rTxUj3nGI5>wPog(MLYl9Lf&ec05eGr~y9#wa#3 z9j{!Ve%39}L7piU2U{`|jj>!jt;}|B*eioUJS(+i8Z|f2$$M-hn8~>!;}r-%B@Rn{ zA+^!LL{q(S*v*QadRv>JNFB0d=xyy{jJT-N+sMN3#Z-<(Ly~oDuvx$w+?E`RYslh;6~gLV6p^LbmPmmw9V%uC&4T(#97O=L&s3qA9>C|C$Sea3zD-t0@WEci9 z8(2yl+t3VTh+MDx)`CaysbmqNsD>ua0+x%M>ng2TTZg4rz*=t0Hlex`IN?gda*2qR z4AweIeS%S{5kwU(Q{C1bQJl@ZX8>+YPon5>32Pj2O;*Er=uA-%lMSxJ>QV`T zl^J%E0Grayr^_znV01Vk5sV{nsK%Jim|`PGa};DtvVtrbyvlSSKT(poq0y*=1~5}P z>T&}<-=5&#T7I>Oe=*S%^LZ^vD$#O<2kAp=I?5lSq$=EALA;iMn3M&XRh9+2HV5ZU zYK;sDb?O@K#c`Y2cthxfdPDfJAzr-HZXcr5q#Ej1JjWlSWu6;^&2T0eNC-GtEs5M< z=FidD6*@X=S4+%LIn@nB6j-5}Dr2NGTR|$2j3TR+sM%T+#hJPq(jqZPtb$}--WqAY zi!P35BO9W{L2hR=kr7eD)f*69)3GEu1X;w8k%nRS&~3;gbdH%OSq?KCCmPM=1w`t{ z*bHJKz87P{yy7S?&ybUV?Nzz!j)&<^XONc#RYRbkOPx*OlnJ$JGcn_%>cC8Qp(*MU99M_7>y^@J>jN{Z+=X@~ zz%J^@n`?z2?4kio)K%pA{DhC=nm|iX%r~LD0O#OZ@|%Ua;6-gQQtiz^P%Ri9sg(pY zg5i@9gYUXx^7UlJEtghIzMiZ&p?7D|^|QcuHAAK}$2!5SLs%Z)1UF$kt15~FwW+Di zljVEeDjy!myHFml1mvK~b&aVn8mMiVPA%~wR0|hI;<~C9iLe#!!r%#_6giouk8T(^boR^3<}dun`A_Zs?H>*< zyHK6C^5&(VyY^Uh_urPDzH7k`o`2@+PE}Odkp_i{K@FTzY-c4JME<3vF13lM$ z?Zmi0UcK*y^G)AxvV^^l{%+oe-fK^Pd;j6JUpjGIeR1pi&IT8v>pOb#kGFk({9igb B88!d_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..56b96469654a0c76c4926361836daaedd7c30d83 GIT binary patch literal 606 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e2l#}zGQ_cLTe_6HOzhpecjb1r3q9P$o0RJF@||>bKdkj<@MmJp;?m>=AP|>i?x|#zHvU7!~Ej&yNbF4-_LLy>_6UqwC+RovDt}-nmHA{ zL~Dh9@b&(W^SLa-P|tWkBlOE+q5JcW2+KWe*;LkWk@3N@dNgOd|DR~L*!burwMWOb9No@y%?X*7a`w>sC9h4-T`Au%bBSRo z!vi6|R}BgC83Mk2)V;H!aM?sXYu4VCA_p#Y$~ivv$&u^3Y8n~*M$qJ($SiiR`i7R*VAf0SAu i;N<~w+CH|N+uZjzKFA;-cKQ^%3DUx_B80bm{Pgg&ebxsLQ0C7x-Gynhq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..9feaebdb55a104eaa0ec59dfdc73ffcf1cd1c044 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e2l#}zGQ_cLTe?)dN$K6Ycjb1r++|`;y1ENJ+!-=CKdkjX*{-8!VC3iH zwZBF+DJiL$#EUe4jvTI6A3pSEhbipA}VO(FIs z*QfF^O?cbT;#AS*aNJx&I6&mFcAQ@KCO$D0g@8!+^qot-_^nKtDLIAHVZ)kK&DTXj z4L%IpPpLlNmGWxAn&!IGE!;5&b{t?m^Oj}T&RnJocfuO8@+LEwZJ!g*I6L~>dj{QH x;f873xb?ua8CQw7biL#DErAPm?oGIDxBACd^?6_ZI{|&m;OXk;vd$@?2>`CitiS*O literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/librarian.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..6b8fccf1f47aa2e8242a03b3db30eee46060e119 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e2l#}zGQ_cLTe?)dN$K6Ycjb1r++|`;y1ENJ+!-=CKdkjX*{-8!VC3iH zwZBF+DJiL?DvlZM=8h3L_py-Y zpyKRsgJ+pMG4ubQnwI$Xw2|I~7n^+_urN)!yPW^r-nraz<PTCTck_Ye1ffAQi|r%tup zJcvl^vOAvIwrJ7Tq4iHa{$T%?Z(b_j0OGHD$9KZdT(5iOs*mEIMEk*4Uxqicipy7* z6N%ZM_Wv3Z-+5wQA~FA6r>EEJ&8^T)H{V1p*I-SRd=aD*iRPu1A~n}DFKMtor_ho* zec**u(y>}nw@W#kE4HzIXZhw5TeW#*kGXlhsadI|={b$f6&(=r%%jOlexOj+D=n!i zunzzG&0H#374g=$q%wYw$=+O7vdt~Aq|_uM6U$0c(VBQkQAFj7NrHKa!vZH@LPYSwACYwu^t#@ZTYTdz8ORC@ViaN&)4h}XA3QcaQkK;8><1pa}K_G$3Lj{jk zP@%jq0I9)bS=lT(MbB{yNgtLP?nbXA1r`TG$rmH+Lb>KI@Elj6MUHR6{?Mv|mKn(v zH~*sdr%pf}#3NajGzFim)j zFzMkXU66EMxe@a^#xaOMauh<&wH$jWL=X@bk$`)6qVuXQkvKw3ax?<04~u$qLKtz` z2*omW+b!j(mv-{Bk8#C9Uo$t-7|BJ`N^f%q+!7eX(n2#=uepv+)-^Z!GdWW*Ss4OQ zj>1w~NUgLl)>La8aMFB-+S;l~Lc1tvYHJ&xA*~r%k|mtUXfo+gn>l~kfneBaH9WPp zfJQ9WbS!Bvm$n=L9K$r9>7HC6>hmSreGRCIM>+CN%`hL@Kq-8mwqiq)GxI zgf}q^VluFl*p{YfNaLAW^Q{4o;8VdMM3Oayp9C!98B=9iwYCOJFMzeo5-mbi+jqi+ zgk=KZ4H2xhrP>6eR3V5;Or)x%+B`p*dCP1jOPWZLpin#Tt){6MX)4tuMNm{mtx5RS zCOi>T@U1ArEUPXDif!p^7YGq?(q5WFQ$ylnq|7lrV}Dbv2|#yq{S4 z$-KBG)czP<9L+|vpBDOf-X}Tnb zXYr4HfB$c9KGDJsJy=W0;v^K=7$bx#4g4E!^XV_*!Vo`(5%1%|=Q$UI=q~CJPGwOM z1y1o)QjtP2Lr{buNHrATJ!Xi+Pz*z|Nf@&8NF4sZsQmNHR01=xQ|Ni`Ky@pR|9fl~ z&_w+38J=Xvo>Rl)c#!UN_<5OMH3a%O*Vz3Ri4oq|x8lyhKaW!bGRw*5~ zJ}|M$U0`Pn?5vL5sa6PrF6zL9U4^dCj`%pL2{ik~d>zUQa1O2}ziFrop4Ap1Rp0db z)q;VI)slchFnl=P|E?*(PoMdbbuFFAa=WHDpY4q~qT@1m*Ena1+MT zvLp#mn;P3ZTE5Gvuz}vJ1Lg6uPY$wJ(-`}rj@s(+)M76JwP0byuB)n%2wLGT44xob z;YFPP6kX=A0^H!0;HvJsM}GHLxPt8J%w~Femz~^sv~Vc-sg9G6dLL~4+dW6WI`_71 z_doWf{J!gVT)*|L*M;BAU-3@c57sqq-PicQ)q7^I?cBb|8GdZ5-f9m!F=dBr_5cNL!b^Utif_sr=T+2MB%cn5#+LtDy*u}x=}Ue&ci+qf z-}`+lcjnS9J05>4bChpbcgf*96NegJn*P3bO~Y%apExm`U(&hqThlwXynbx|M|j=W z4!?2CoB7!*z0>4cb=Hid2Ohd~&#^haZ!Vwt?1$4D+h2V4^FLX%*}p^WY+sq(+q&+) Fe*tWBFfjlC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..1112b8ad75da1640be2c326d24da0a40d6e8c6d0 GIT binary patch literal 658 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e2l#}z7RkviUAe7YMdjVQcedW;?y(COYiQ&Z*XtTN#Ysw*%F73PSYSNkEMXO$D8S^_9U7_N_^3ikdEK^0sk<$2aeXzO{y9>wut(f4M^}8>!Uf57(Yw{+ z3z|$eUX@?^m+izK9)Tx1mopDZlrb{CX891s{NnSQ8}-ME!&tt~Z@BZH?ZH`t#Iz>2 zIDh$1|B8*yZ&r&jZJZeX$@78xi9dh*d}f#?#{X%W@|oLV$288F4<5gfJ;3{n=YLw^ z%GoEH=6^3f;3VwXeRS!x(%7&08&5I5`~JJDUYdblQ?}vWLgt7SdI=A6XEoUVpU?QC zsr1J6b@Q3!0;Ileef_*)dkF&{Ln(tDuftdQq<+n4m;VpH-#!M`9a(>eEYi|TqEO9mE^ z@89Z#ZZMW;U0%H3Ua;orXND>F(lSG@a;h$fogG^0#G0`!Ld(QLpKk{v-K`_k6oBoT(4{7)UKiuCn;GfFCXb+ zoe}NbQklJQdRL&U8BlA*4Qej%VNXMsm#F#`kNeh_A~U=3CQ z3QqHMaSXBWf7>6;cUXak#oSOuv9t2d|4p$P@)25R8E-kBNRxC}VDq7wX~UY=yAH@m zi3wQjuRMNha+he?^SgG!3Q7-n*M95iVLHB17D)3rJ%}ubzwx!FN4M#OrqCI4AODA| zoZ`*b2vj)#&}!)}R=eZ%_{qL|wkvy_dK#Dv{aUA(WO*4k=4YIXJj?C&<3xPLXN4)B Zm~!6O27j*(NC&!*!PC{xWt~$(697NPieLZ$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ee3cd2212413f7433373f53270656a589bdc3e GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e1o(uw21-aQUAb+shQ_;h?`*xxb&Z_dV;8oosMrb#c{-S6M0>YXW-pxH zWpAdHCNB@vbmwx3H;@u23Gxg6j|vzbD91_yu3r#+OXGq~T!D=Is;y5GSsuQu1^Sl3)78&qol`;+07-k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e1o(uw21-aQUAb+shQ_;h?`*xxb&Z_dV;8oosMrb#rOC^CI+$ccd$&|( zFPz?GZ>9y*H2Vd+A&?R%3Gxg6j|vzbD91_y%|V_lkx&F-e~-QL!z zcOflxe{D0TkAPt#r_y<$3!67A;?`NW^2I672I)lC@T^^HV-=<=*C zJrkxvSMi9L;ESSq0U;%=@e#onS)agTe~DWM4f D0o|ie literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/meta.json new file mode 100644 index 00000000000000..0a48ac3e373c8b --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/curator.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/47718914e47c6fbf23d6dc97f073a9daa11b23cb and modified by potato1234x (github) for ss14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-INNERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-INNERCLOTHING-monkey", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/equipped-INNERCLOTHING-monkey.png index 066cdfe77df77d13c7902ca854c584a0825d330a..7f424f1d8829494abe553cc8f1a324bb201358be 100644 GIT binary patch delta 2256 zcmcImc}x^%6rVjfc3~H=B70c6B2p1%caEK%na#qw%K~Bm381ki7G_`;*UEzI)Phm* zAoYl-^lP=IwW5hlno`gv9?{sEYK)D=+NL&XQY>1Vwjy}jdUw7(1Z`R&P3Mn!?|bup z?|bj}eedl)+$n2!Y|*zW5CqwAaMcw_$O7esZlwFn#NVZbvd&fFLXdr%;~sEP(t281 zab-T@Qy~?|o{tWstWFym8hRr)$Bm-9W)#LPnZWaWbIa1w;+bZQklb%B&srl1tyo@K z@p$BeQNTDX5G^@MVa+j9fi((+J3w{wuzGn| zy`#%eJq_uM4ns1*gXm!G=9t-`AerFPn6M?&>=kSjYvoXq=DaA53$-ZAG8oD-981w8 z%?MoWv)RPQMzXPZDT2UA8zI3NY7}s1Y~h4qLPCK4kq45Mt}<(I+$)e6EuaEzwSg+t zG#IvBRhJ#v*bzd`@CC$%rj`*06g-{^VKI!*@(mtxn1ShtxDwEm|W; zikl482JPIGNMLx-BguLa!yLgoJv^YAGBJLh@-&?J%J80wo) z^M!1Y4j=AQfa`*jc7ZN!)EA^&@IG@vPU`C5bs+RUD0b=%P#o0^0+GJ77lLh^B*_G7YuF@AGH0^+P7Rg zXYCp=v%V)|Q%2j(3*r`_tC#S%n+s?lbz> zd-eWDDL>O`Hx3(L^(!-feJk+o!V{<4J1HGTJ@!sBsYuXAd>WlHktFB#DdIoME5s!WRVnWwSzL}fex_4F&dTFrA_Q}Kp zzc{LNGIznUm(Na~r}l0(o{C-EqPlfaenVpeY2cGJ~|%c`T# zE<}#YPAcw;2HE+m?_U|H&nzl^S5dI?0@HusF;@NN*^B*Rls-wkN~AI>W#5sFFiiS?ryNROD*cT>itoHp$F5Ga&&v z0)i|ch=72|AtIN^p|H3Z0fXQL$mJsekwfu7iNSyf>dIEnk(q=Erh~5QzMl8ys{a4) zuloMK{`#x>y`GVtHlS_zU%~+ZZBvpHGSK(K%DZ(a`h3~)*lF|?W>3y`0&qu11u-AGbY_@qvBpPLm+g+yS)}-= zN0?MR)!rZGS(3*&;IMINnc}#7k(Z+Sn8M>qj0m6*x&&QGVS&|YEQybD;~LR#rCA@P zbBnn0d226e+z({=rA4ya>d4VZ`DDE{n~oQ*Z^dt;iK06{Q%eeR;=KXsz?9suHztcQ_mlPvOB9|nctG)D57BxxjhBf$k? z1W4A$Koe0CTtcHz0%ZemB+)3_9EF0*WGNJKq26xIjnn%Z10-w1)7aluU~`~uK@%0H z57r!1E5RlfDf6SRRfJCD3}=9okgMDopr4Rix7Bx{z+&>`AIT=fya^k_8ZizhBL}f4m1fvQERVRc};V7j$J;Dd^ zN6_!@o0un9bD?C?`?}+6s6U+lWsh+zhf|bHVrG)3F&3xMGA*HkfP=WmQf67?W!X2r zCU}g>#BrnIG(vNlt2W=+tYe@duVJp|-gCqzt z&u|bLn(DNmJM(}Qvi^kjFH&`DiAEeeG^Pac!~2%JKXMJM%@aO$y&i3tlz=4TPA$KZ zL6sz1n{jMSk=KY~>GwfOH zlavxgIoCpSD!<;Hl5Z}uQM0D=#ux?ufaWf;|{DmT@3&WX3KWF z+jNhWATWMwK0hS*=?>VH$0j?)^AR;^?I( zluxf};N|+N*|$~=yj)+^ubE}FxJ;ziTD|4~E#-XObND+9-BW@l1H(}0+^BwYeT{TW z2`m_%U_pn!PUXbGKznuSUkIw0-H>9y1+SuK+63JFaXZG-ita6;+gkeC`&t1$bJruk z&xe0RzYo3}RWqWBT#YV`E>#Su64s(iqe~S7s)V)Z(&$pffGS}vx-_~}F`!CVi!O~W zRSc*S)}l+JOBDmEgth3>=u*XiDq$_UG`dtVph{SaE{!f#45$*;qD!Mo6$7e-wdm65 zQpJEOVJ*5ex>PZsN?407jV@ITs1nwqOQTB_1FD3z=+fv?#egbdExI(iR574RSc@)= zE>#Su64s(iqe~S7s)V)Z(&$pffGXizMpwB1Nm0;>9uHNFo&$Aa+g0V6Q#vs@BNc#g zF#wc40l@Ve==%ZyMK}Ooj|RZF7=X^Ud876v0njo!C82L-$;pc&h9=)PAo7Hx7K*VPMZWTi={2#x?^XrRcd?I?w^!Cw>=k%<}cZb|7+Dek(ApYU81Emiu(C z{QJboxSdz_uLTcp8ue!NlC7(pRhJ^Cn&$Tm-8ga6if61_SDc!7ZRw}In-9NqaYE0d ziTS&(mBuE%adA+}lBzF9T&j7$OG%q4_gpYciVN*qloQ(ZiNk}=>>7FW#ys=FJyKFgGUNCM}mi! z|8l945B+F+=67d4S&6x(Z`VD|o*SRjp{Ar`#oeQy>R$eF)$X~`|GM+c>H}d1^PZIH zRS#{OcKCd=H~K&Nx7_CYk90YHb>=hdkJD4O-(M5~9ymUK!1(aIB(fhuG+nd%OAo zy1V)QSreC5orp$X;Oyl-Kcy|~{O{haxJN@nIvDOMFc$1BCVoCP^3sXo5jl&xWx%)E zeK2XmkAeZB{>zZW?r7VId$g7X8TA`p+Ehl zZtCig$R|Ux7YdP~dujlkH>cHy=TE*@{SzOvbMuh3$JVW1-?Osf+33pGk0)hiO|vXH zT-0UBn!Xi9i`Rr@Wpz39%e0GIk5m+OSqQr=OX~;{hDNx)ey|7&I~nub;C@+IdzMRN z_VMq_Hhq&GF)evs!fVwLAgo2Ry+xpnsNcV2O<3x&7c3*@?7FY~a=4JarT450>oxy^WHu>b@7_#)^1q0uE(sm z(>~VUQ`#>^KmUE*{P!2M1Z%50?~M3m_l(b0?49#+YtRDtLc>R7NBP2<;|NWzcnT5 z?TO=8lyn4NeO7+?TEREHPETJp^yt0MfBt;4Mf2};4Ib4JEGasWC6pHr9<}dt>7|Q& z>B)8}D?bQJem2CFwjwFdv9jQ@f!(n6SJoEQUIJwhI8LiKD(L zA3o`+i8YTd+ED)V_wRo7Tz31)o>z8X|AGUpssX+#1D2lYY#;V*PV%L*RUun{y2JWN z$i$kXWhV!|8eUl~%|2xTryu)asXhAWtYJTI6b^L;eRf~Hv?Fcxz-BMJ5&OilqWkw8 z1sf-onbu;@4(!%x*13K=+IFs^7||fKiV^Yd1eJXwXE6B4I9U%JlS$o z?2LWpM`Z i1!@gGK0Z!NN@8MSczJqIP*5%~G5`PoN((~s0000JbW%=J z|NsC0|NsC0|NsC0|NsC0|Nj88ecT8D000SaNLh0L01m(a0Dlg^0czHX2><{A)Ja4^ zR9Hvtmfe!VAPh!RTDAT_weSD1`+X2s0)?G%o!PzUQE5ZM5$#2g^_T2|T|ho65E(EI z(vpgZa}J}%kt`4=<8+utTy@5xt2ycndELwLD5r56PrT8&983cj$NX#cn(~4jq#K=m zk=Cmq%Vz>7M}L_QGe);5aG0ln*IK|l_m1^P{Lab{^G`vZ{}$k%VZoUNF|s`Kz~-Mf zm&+vONKC#ExNBLEfjsu!5!{eGBY)GlA^G@M!_M|1kEPvW_@^*fn}3Y;7Xr+%(8MvICpWV(!`aoeY!4 z71Mw;i!>&M0Gn{q7Q}Q%fVPic;bx61W@dR((3n^OTPMy48dvb}Pbas#`nu27I_71e5C3xWQ0Gh20y)72_ytCv27y^#~8g0PSK``sB zV14x0Cxh*LR)E&qY^{;HpcE9nx1=tp1imjQyZeTq)!ZZen|p$?`PWnxR`3RYEm+qt Xx!M9Kr2^t500000NkvXXu0mjfsHi1s delta 623 zcmZ3?I+b;TVSP@3Pl)TRt%E~(z8EpC)9J_d|YB^bgM2$E6xWvG~pi&a#7tHX#{y#zRbxB+a0|Vo7PZ!6K zh}O5$0{ags2((1%s$OlsrBr1a=K1sg|Br09p6E?nIKBFl-d(NG^zX?Uo!vpvIUn;B zHyz#~yl~f>@6`{hRIOuQ%f73;JEP%M0?)(anza|-NN$1SYf@i4*wG?J|+FrQ@*TbKOn6y>7>&cZ1b2!i#g&;ibL!5 z=Mv`XYCj}DYzkFudCyRD`pER=ngsdfnMu2MFw{sYOcr6#J)-_)+6(oGeADM>ED+zQ zWXrte+AZUIG7oar2i8UB+L<-!INxd6*;P;bi8pFXaqh!c}5^>aBUP z%Jt0Q_g{3k-FQ^X#G5H0^7poTlN4Lsfq;!0yYHCzU)X-5(bj&^0&PjjEVdQwC)Dcq zMKBm7x)?XOZB=KV!D1j7Ao)(g%wN;QKmUVMds@SdUABFat;sTeiWw&o87}yGDOGLS z_DsPqMIvElt98U3Lx&=^<~s);&C`9DH&yEHS zPkFBbqy$TX{DS|Z0S48z^)r)zvYZ7Tk;M!QeEUI|(SkJ?q-C#Xg45B_Eh4ag@F&?f$uN_a9b`r>sAMEUyJH9h?btAA_f> KpUXO@geCwQbaK+s#X(muXz0)!38cym z#hOqD;Zg{py%Hw-o8J5TJomf@L_|bHh)_wos3cuo*Ine0Be$%nTr{P{A!;HfD&B7Pz^Werfb;AYu3ugO0P@8qynArd33Rvrriqu21RlS3 z(Cz*pkyydO+7tG&9T29D?FnKca0}Ya9vs^ko4YgLcuklJ$2R_i1(@xyl62QMK4F;( zpYq0Bf8WN5`hPqg{Sbc6CxzgjaCp%ug_IUYwtCOSc{%}mAJ~BR^^=@FggfVDdFHCm zYifC5_g4Izm*6d!!mI=qVj$Pbz%ms$wgJaBP|JhYmZ>1u$}H9Z0F(v=Sf&EYRB(A! z%xfqN!Y!C4NGS!SbS@(i5fT5FUqzp*h8QE>3;+NC07*qoM6N<$g3Hv-7ytkO diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/inhand-left.png index 48053d29482bd32d1a8c266f0d9ca8e484adc18d..9feaebdb55a104eaa0ec59dfdc73ffcf1cd1c044 100644 GIT binary patch delta 410 zcmey!ypnl>WIZzj1H;_yjcNS%G}x0G|+7 zhB%gOOP7i_DZP95uH4R+yG+bUS9hU@J3}VthqeAE+jaB|jQo7O_SdK;B_&l$ zVzmtdQi3Hxe!>6I0E6n<`k6^USlH9QW)e53*Icmh?c2)bzRbU7 zozv*4X?ZNowWoi%j|0=JTYAQqm%W_BskO+%#6E4+auti)7n?%tP3o^tL_t(|obB1MO2beX z1>h4Y(y6pi2#8ZN>f{qBI4bBCm)6CHaB;|+bju`yyLNRE9GqeVitn z3T<3*k7~XykpKW73KIap{mJos390S1($S!fC`{1U`dE2vHqf>+4Pr9xYj5{2u@jJWe)s$HXi(38vm(%|>sQ!L z4LX4?Qqi8!jejkz^&HfJ#=2tx2%mtX_cKIcg6#(vQJ7%=ZFlt{-Prm!v}Nln5)GhQ zt>R+y6ae6U9%|1M33LhZcR&yX@O@w82}uX4A{syt1oP|Ra40rYDo_>umtaP(*RxdD zMU@dK5fKp)5fKp)5gAONBP^vFTMMCrw6wpQ%am=6{aeQ!9NgSm+3#oFVxC#Xo`6|< z3;=CsTA3GVkIf4}xIH#600o^oUbGon3*kE6=o28(9vdBiM0;#>0DyjbY;*u@kBLav Y7j`1f&FHbBp8x;=07*qoM6N<$f?&DSod5s; diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/inhand-right.png index b026a2421e9ef8dab15374db3256ffcca29a7110..6b8fccf1f47aa2e8242a03b3db30eee46060e119 100644 GIT binary patch delta 420 zcmZ3_vYB~;WIZzj1H;_yjcNS%G}x0G|+7 zhB%gOOP7i_DZP95uH4R+yG+bUS9hU@J3}VthqeAE+jaB|jQo7O_SdK;B_&l$ zVzmtdQi3Hxe!>6I0E6n<`k6^USOT9bE;)bNKcLSUJYD@<);T3K0RTUXu~Gm4 delta 545 zcmV++0^a?z1Fr;-8Gi-<0063Kaozv`00DDSM?wIu&K&6g00HSqL_t(|obB2@OT$nU z2H-a$B`(E6AyCAj8Fg}XQE;rNTU}Zge}s!e7k@{$PNKML7Y7%?!6~L-DW!oxOO|30 z;-INl8*h?+nUwdL(%gQWd(P<{dI}H`5fKp)5fKp)0HB<8QGd?5{~gA}0`{=vcT=n6 zT}@9z)6>3du}zFmTz-2H`6d7WEYkr1+#T)@-!yZ!9M6qIC|V`|9phI*WJMcIKsoDL zrUO)MWzcV;xb=*eC%9TA?{?d(uuKP;TyIwUn21=klKz>9LBA<|&7U10I=TJ%xZ7SG zC%)P7DcbpE1Am&HMo`g~NA6T@Mfzbu>oMV9G<)QE(hexJj$xS&)*gzmOb0u!o70SO zdaAY}EsSJcngCT*ahf^;02JT$CJAwFq82Ui3@{7>wOTC^Z4X2*nlu51VGOT3oz8@z z%}~{4;l9@i{O)@qbwHtYoScz)NRbkts%j!f<}zcQ0ZAK~%LJbR j0&(&Ra2onbM9KF7V%^Q{WWyQ200000NkvXXu0mjfj=l08 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/meta.json index 2e1a43d61a055d..0a48ac3e373c8b 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/librarian.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Based on blacksuit from paradisestation at commit https://github.com/ParadiseSS13/Paradise/commit/4daf5d1a1b45fc3fcc4fd9703222159e6c1f38c8, modified by Peptide, monkey made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/47718914e47c6fbf23d6dc97f073a9daa11b23cb and modified by potato1234x (github) for ss14", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/broken.png b/Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..dc955af7f898563df382fcf283997636432cecb9 GIT binary patch literal 443 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijq1AIbUEew?=bXGN0=LEY4ES%MypAji6D&p;8YHy)gm=!&5dPjh#)w_4^ zt}K@+4&qEqNN{s=n>uwWPlB zSEK+1-*~z>hFJJdop_tC*?`Ac@#!SB+X;XEA3vANzG&@t1MYyOGBWD2eM=fwO*vIA z!dayCJ1!<}gk`A0M&XEyKR+9e%l$0|1ESjn5N_ljHnoRwOuIhMGx zFjb!kc(;gOvT)*of|VjKt}x!NyX@BZU6t$2ZQtMjB|EelR!#ZzeRL7CAE#egtA~caOW<+k*p?<1aWm0TT!O+1vf@Sh>4B_Le`j zOh!b@i8M_FH5`qgpln98(n-a%@ozva%`ks6|1+~0|D$h@JHi=vZg2Pd_IaM~eV_0B z-W8Votgz4tp$LM6we&hGAQ z;X(TXe>idYjpLa;k9sq+$6$K$=#MS6jqB;wSKILZFKz_)ANqFH-EArKp4QX5Tc>9& zpVU11$dUYGD>LGfQtq@{ZaNzeUs}9{inyQ9-dEqy)!8y`PQ;|rBOv@vXhUasWXz(N zv$qci*H2#Kig+-iLOst6mYpr*P5P+LDY?HSu;mB3>t9%!WZe<@@Ym8M+)Tq zd3Do``mhRnRpxbd|I7BexVGcetmus94gaj|8G9fSdwfy-?~c8xxT>%;E}>%O>U{@C zK50*V@LSiqYj<9c(k|Wn=*<1|NtwTrCui;urM%QJe znZEGk^Y-;g?yp0-8fWd-j_4?8`#5`Vf5)Pe$=lDSJ+*G$`N`Y)f4&w!+dOCgxfD4% zdSS=WUFEq8AK%OCn|x7pqf* z%7Tv<kPm0#l|>1dfbYnJl{v1W{dGt*TB`iISb57=|H8HKA7H5P^GYT{2sPyF8JDB0d=t z@NkmgmIcv;DzdCqtdxxyjAJlBr`v2EQg?ZLK0rr^8rDrvDw1$Im8iXFkDO5j$-Y>g zi}n=Nx&cuDJYuE9fs88Pk|X_eo*Ux2DR0p%g{jQ=f5clu=H5R@OTs*9_r|RD(K)p3-V7bAiJZu%< zG2bLt#=7hP9$Hv0gD~Mad!kFEZCakz<9s5Wh-+*#jk8uxhifSf&;W{M5=q9-_lP#R znw7v*JIoFy0n5Xi1RCq}EzXauE(3}wBs`rY{4qt8)}W>gi8O{1!}3TbltVc@w`AgZ zHVop19p=GC;bp^40Y{MMZ$8RssDS|&G(dvwY4QgHO|Z3f<(Q@x6=&W4`FQAla%8Zj z`~87|LxnL>6}6V6*wIALiN1xa`x-`^&kGDIdne?l&NI{ELvlM}IybJ~HY2|0Tv|*^ z{pB57w_oVp5Rr_$*mCgFxn-kbr+l;SN>b@pNl4^~)??`p&xI8}4g641m{68>Z!WUx z$r^d9I^g^6tv5WPmWgWK7BOEAIMu(&mU>b0z51q{zypC&M?5hC0*J>iz?;0=WhN literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/off.png b/Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/off.png new file mode 100644 index 0000000000000000000000000000000000000000..06e2276e4e03a59894713e831687c2141fd115d0 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikd1AIbUEew?=bXGN0=PaDnou3gYEGpvdV*2jgyDQ6Oii0?V-2)O665QO} zrcRv-)KNcq&NLv!UlQaO{2v7{T)8u2AyA65z$3Dlfr0NZ2s0kfUy%aR=IP=XV&VUG zq9<2_0gtQolEB-ye#?hjEjYX2!MWCcA*RZ|EJCmYYOLsV@&sUPdhH0;G?Y|JR?9@uGM}aqoEelepc}lrlyVxEmPDd tX}wWjHQ};L-Tr1K!H{1ou10%VGAJ#Q>HhjVBo^ot22WQ%mvv4FO#tPxc2fWV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/panel.png b/Resources/Textures/Structures/Machines/VendingMachines/curadrobe.rsi/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..0032751ff4ffedd3d0ecc00eaf4e0ab459929e9f GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJR!TD@E@bvU_NvA($#wnr(!Xc+! zxY-SW0LU@E^H5*bg578Khv|+_lg$sW*?jCvdBeJOdWZj3DYB`nt4B%rOPnz=`)6-p h#&6~hvQUMA!DX(Lkd@zrT|fshc)I$ztaD0e0svz&KxzO0 literal 0 HcmV?d00001 From 57e1d642acd3f14e995cef8f832f3a5b7cf08a87 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Oct 2023 12:56:34 -0400 Subject: [PATCH 014/245] 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 23e1073e792ee2..a7b487bd90a419 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Doru991 - changes: - - {message: 'Due to Nanotrasen choosing a new seed supplier, most plants consume - nutrients much faster.', type: Tweak} - - {message: Composting produce into trays actually works now., type: Fix} - id: 4483 - time: '2023-08-08T00:29:59.0000000+00:00' - author: Ilya246 changes: - {message: Fix radiator transfer rate in high-pressure environments., type: Fix} @@ -2952,3 +2945,11 @@ Entries: - {message: Dionas are actually the same speed as other species now., type: Fix} id: 4982 time: '2023-10-10T14:03:20.0000000+00:00' +- author: Potato1234_x + changes: + - {message: Added the CuraDrobe., type: Add} + - {message: Added the sensible suit and skirt., type: Add} + - {message: Fixed the librarian not having their own jumpskirt., type: Fix} + - {message: Resprited the librarian jumpsuit., type: Tweak} + id: 4983 + time: '2023-10-10T16:55:31.0000000+00:00' From b4d734d7c576616f04ba8ee2fdb26109de07c7d3 Mon Sep 17 00:00:00 2001 From: Whisper <121047731+QuietlyWhisper@users.noreply.github.com> Date: Tue, 10 Oct 2023 14:02:46 -0400 Subject: [PATCH 015/245] organs edible to lizards, and make their food contents uncooked proteins (#20882) * organs edible to lizards, and make their food contents uncooked proteins * npc mobs avoid eating brains for player QOL --- Resources/Prototypes/Body/Organs/Animal/animal.yml | 9 ++++++--- Resources/Prototypes/Body/Organs/arachnid.yml | 9 ++++++--- Resources/Prototypes/Body/Organs/diona.yml | 6 +++--- Resources/Prototypes/Body/Organs/dwarf.yml | 2 +- Resources/Prototypes/Body/Organs/human.yml | 13 ++++++++++--- Resources/Prototypes/Body/Organs/moth.yml | 2 +- Resources/Prototypes/Body/Organs/rat.yml | 2 +- Resources/Prototypes/Body/Organs/reptilian.yml | 2 +- Resources/Prototypes/Body/Organs/slime.yml | 4 ++-- 9 files changed, 31 insertions(+), 18 deletions(-) diff --git a/Resources/Prototypes/Body/Organs/Animal/animal.yml b/Resources/Prototypes/Body/Organs/Animal/animal.yml index db7793210b556f..083d596152a047 100644 --- a/Resources/Prototypes/Body/Organs/Animal/animal.yml +++ b/Resources/Prototypes/Body/Organs/Animal/animal.yml @@ -14,11 +14,14 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: FlavorProfile flavors: - chicken # everything kinda tastes like chicken + - type: Tag + tags: + - Meat - type: entity @@ -49,7 +52,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: entity @@ -68,7 +71,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: Stomach - type: Metabolizer diff --git a/Resources/Prototypes/Body/Organs/arachnid.yml b/Resources/Prototypes/Body/Organs/arachnid.yml index 3ec991af865f3f..b4eb11b623be6c 100644 --- a/Resources/Prototypes/Body/Organs/arachnid.yml +++ b/Resources/Prototypes/Body/Organs/arachnid.yml @@ -19,8 +19,11 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 + - type: Tag + tags: + - Meat - type: entity id: OrganArachnidStomach @@ -40,7 +43,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: Metabolizer updateFrequency: 1.5 @@ -77,7 +80,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: entity diff --git a/Resources/Prototypes/Body/Organs/diona.yml b/Resources/Prototypes/Body/Organs/diona.yml index 482ec42927bda6..282bb224d81bdc 100644 --- a/Resources/Prototypes/Body/Organs/diona.yml +++ b/Resources/Prototypes/Body/Organs/diona.yml @@ -19,7 +19,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: FlavorProfile flavors: @@ -46,7 +46,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: Brain - type: InputMover @@ -87,7 +87,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: Stomach - type: Metabolizer diff --git a/Resources/Prototypes/Body/Organs/dwarf.yml b/Resources/Prototypes/Body/Organs/dwarf.yml index afe2c66b26ba44..8da0cb1666f92f 100644 --- a/Resources/Prototypes/Body/Organs/dwarf.yml +++ b/Resources/Prototypes/Body/Organs/dwarf.yml @@ -29,7 +29,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: Stomach - type: Metabolizer diff --git a/Resources/Prototypes/Body/Organs/human.yml b/Resources/Prototypes/Body/Organs/human.yml index 1ece318f1d9ca4..6abf168a9e75ba 100644 --- a/Resources/Prototypes/Body/Organs/human.yml +++ b/Resources/Prototypes/Body/Organs/human.yml @@ -18,11 +18,14 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: FlavorProfile flavors: - people + - type: Tag + tags: + - Meat - type: entity id: OrganHumanBrain @@ -39,6 +42,10 @@ - type: InputMover - type: Examiner - type: BlockMovement + - type: BadFood + - type: Tag + tags: + - Meat - type: entity id: OrganHumanEyes @@ -111,7 +118,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: entity @@ -148,7 +155,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: Stomach # The stomach metabolizes stuff like foods and drinks. diff --git a/Resources/Prototypes/Body/Organs/moth.yml b/Resources/Prototypes/Body/Organs/moth.yml index a19c6a4ee337bc..55fb517c552a20 100644 --- a/Resources/Prototypes/Body/Organs/moth.yml +++ b/Resources/Prototypes/Body/Organs/moth.yml @@ -14,7 +14,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: Metabolizer maxReagents: 3 diff --git a/Resources/Prototypes/Body/Organs/rat.yml b/Resources/Prototypes/Body/Organs/rat.yml index fb93012d97ba45..9d1352c72f5e9b 100644 --- a/Resources/Prototypes/Body/Organs/rat.yml +++ b/Resources/Prototypes/Body/Organs/rat.yml @@ -18,7 +18,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 - type: Sprite state: stomach diff --git a/Resources/Prototypes/Body/Organs/reptilian.yml b/Resources/Prototypes/Body/Organs/reptilian.yml index 83139f3eca0715..b2233a92070674 100644 --- a/Resources/Prototypes/Body/Organs/reptilian.yml +++ b/Resources/Prototypes/Body/Organs/reptilian.yml @@ -16,5 +16,5 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 diff --git a/Resources/Prototypes/Body/Organs/slime.yml b/Resources/Prototypes/Body/Organs/slime.yml index e6ce18b335d255..a532c1223a3fdb 100644 --- a/Resources/Prototypes/Body/Organs/slime.yml +++ b/Resources/Prototypes/Body/Organs/slime.yml @@ -27,7 +27,7 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 @@ -63,5 +63,5 @@ food: maxVol: 5 reagents: - - ReagentId: Nutriment + - ReagentId: UncookedAnimalProteins Quantity: 5 From 660ee13b8995cdd4cfa8c61d6ceecf78f7e2029e Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Oct 2023 14:03:53 -0400 Subject: [PATCH 016/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a7b487bd90a419..5f9db50390b725 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Ilya246 - changes: - - {message: Fix radiator transfer rate in high-pressure environments., type: Fix} - id: 4484 - time: '2023-08-08T08:16:23.0000000+00:00' - author: chromiumboy changes: - {message: Access readers can now be programmed using the access configurator., @@ -2953,3 +2948,10 @@ Entries: - {message: Resprited the librarian jumpsuit., type: Tweak} id: 4983 time: '2023-10-10T16:55:31.0000000+00:00' +- author: Whisper + changes: + - {message: Lizards can eat organs again!, type: Fix} + - {message: Organs now contain uncooked proteins instead of edible nutriment. Animals + will be able to consume this., type: Tweak} + id: 4984 + time: '2023-10-10T18:02:47.0000000+00:00' From 83062e39b041fdad8d936f0acc681e6c6eecb6c5 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 11 Oct 2023 08:33:04 +1100 Subject: [PATCH 017/245] Fix shuttle planet FTL overlapping markers (#20887) --- Content.Server/Parallax/BiomeSystem.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Content.Server/Parallax/BiomeSystem.cs b/Content.Server/Parallax/BiomeSystem.cs index d54293f5683e16..ab66a48b97995c 100644 --- a/Content.Server/Parallax/BiomeSystem.cs +++ b/Content.Server/Parallax/BiomeSystem.cs @@ -553,6 +553,9 @@ private void LoadChunk( foreach (var node in nodes) { + if (modified.Contains(node)) + continue; + // Need to ensure the tile under it has loaded for anchoring. if (TryGetBiomeTile(node, component.Layers, component.Noise, grid, out var tile)) { From 8e77faf71ec2e8b67ed3dfb896fafb4574919106 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 11 Oct 2023 08:33:17 +1100 Subject: [PATCH 018/245] Fix salvage faction non-determinism (#20886) --- Content.Shared/Salvage/SharedSalvageSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Shared/Salvage/SharedSalvageSystem.cs b/Content.Shared/Salvage/SharedSalvageSystem.cs index 918b18f8dfd4ec..e5124ab4d03c99 100644 --- a/Content.Shared/Salvage/SharedSalvageSystem.cs +++ b/Content.Shared/Salvage/SharedSalvageSystem.cs @@ -48,6 +48,7 @@ public SalvageMission GetMission(SalvageDifficultyPrototype difficulty, int seed var air = GetBiomeMod(biome.ID, rand, ref modifierBudget); var dungeon = GetBiomeMod(biome.ID, rand, ref modifierBudget); var factionProtos = _proto.EnumeratePrototypes().ToList(); + factionProtos.Sort((x, y) => string.Compare(x.ID, y.ID, StringComparison.Ordinal)); var faction = factionProtos[rand.Next(factionProtos.Count)]; var mods = new List(); From 1b90732e33bb32763380a77d03d058a05087153a Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Oct 2023 17:34:21 -0400 Subject: [PATCH 019/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5f9db50390b725..811836b71bc2b6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,16 +1,4 @@ Entries: -- author: chromiumboy - changes: - - {message: Access readers can now be programmed using the access configurator., - type: Add} - id: 4485 - time: '2023-08-08T18:30:46.0000000+00:00' -- author: Slava0135 - changes: - - {message: Stun batons and bolas can now be thrown to deal stamina damage. Stun - batons no longer show the damage effect when stunning., type: Fix} - id: 4486 - time: '2023-08-08T20:19:31.0000000+00:00' - author: PJB3005 changes: - {message: Better nuke sprite from /vg/., type: Tweak} @@ -2955,3 +2943,15 @@ Entries: will be able to consume this., type: Tweak} id: 4984 time: '2023-10-10T18:02:47.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Fix shuttles sometimes clipping planet marker entities such as ore., + type: Fix} + id: 4985 + time: '2023-10-10T21:33:04.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Fix expedition faction sometimes not aligning with the mission faction., + type: Fix} + id: 4986 + time: '2023-10-10T21:33:18.0000000+00:00' From 425e49bbc857c7a4c4a0025a8e71e6589a946d88 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 11 Oct 2023 08:35:50 +1100 Subject: [PATCH 020/245] Fix salvage mission biome seed (#20885) --- Content.Server/Parallax/BiomeSystem.cs | 3 +++ Content.Shared/Parallax/Biomes/BiomeComponent.cs | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Content.Server/Parallax/BiomeSystem.cs b/Content.Server/Parallax/BiomeSystem.cs index ab66a48b97995c..a9d78afa865e20 100644 --- a/Content.Server/Parallax/BiomeSystem.cs +++ b/Content.Server/Parallax/BiomeSystem.cs @@ -107,6 +107,9 @@ private void OnBiomeStartup(EntityUid uid, BiomeComponent component, ComponentSt private void OnBiomeMapInit(EntityUid uid, BiomeComponent component, MapInitEvent args) { + if (component.Seed != -1) + return; + SetSeed(component, _random.Next()); } diff --git a/Content.Shared/Parallax/Biomes/BiomeComponent.cs b/Content.Shared/Parallax/Biomes/BiomeComponent.cs index 7e373db6e01dd5..0fe21821728856 100644 --- a/Content.Shared/Parallax/Biomes/BiomeComponent.cs +++ b/Content.Shared/Parallax/Biomes/BiomeComponent.cs @@ -15,7 +15,7 @@ public sealed partial class BiomeComponent : Component [ViewVariables(VVAccess.ReadWrite), DataField("seed")] [AutoNetworkedField] - public int Seed; + public int Seed = -1; /// /// The underlying entity, decal, and tile layers for the biome. From 6f2f0b492fef81d5967573f3a59f967b82674c50 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Tue, 10 Oct 2023 16:46:47 -0600 Subject: [PATCH 021/245] Bagel Update (#20896) * bagel update * bagel update --- Resources/Maps/bagel.yml | 588 ++++++++++++++++++++++++--------------- 1 file changed, 357 insertions(+), 231 deletions(-) diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml index f9f593407d413f..72ee490cc13dba 100644 --- a/Resources/Maps/bagel.yml +++ b/Resources/Maps/bagel.yml @@ -6413,7 +6413,8 @@ entities: -2,-2: 0: 65535 -2,-1: - 0: 61439 + 0: 61407 + 1: 32 2,-3: 0: 63280 2,-2: @@ -6567,7 +6568,8 @@ entities: -5,-1: 0: 65535 -5,0: - 0: 65535 + 0: 65279 + 1: 256 -5,1: 0: 65535 -5,2: @@ -6587,7 +6589,8 @@ entities: 1,-5: 0: 3311 2,-8: - 0: 65535 + 2: 1 + 0: 65534 2,-5: 0: 65535 3,-8: @@ -6638,19 +6641,19 @@ entities: 0: 65535 5,-8: 0: 32767 - 1: 32768 + 3: 32768 5,-7: 0: 65399 - 1: 136 + 3: 136 5,-6: 0: 65535 5,-5: 0: 65535 6,-8: 0: 36863 - 1: 28672 + 3: 28672 6,-7: - 1: 119 + 3: 119 0: 65416 6,-6: 0: 65535 @@ -6679,7 +6682,8 @@ entities: 6,-2: 0: 65535 7,-4: - 0: 65535 + 0: 65503 + 1: 32 7,-3: 0: 65535 7,-2: @@ -7251,7 +7255,8 @@ entities: 4,-12: 0: 65535 -12,1: - 0: 65535 + 0: 32767 + 1: 32768 -12,2: 0: 65535 -10,3: @@ -7534,10 +7539,10 @@ entities: 0: 34944 -7,-13: 0: 2184 - 2: 9984 + 4: 9984 -6,-13: 0: 36232 - 2: 512 + 4: 512 -5,-13: 0: 36744 -2,-20: @@ -7574,7 +7579,7 @@ entities: 0: 65535 -8,11: 0: 64719 - 2: 816 + 4: 816 -7,8: 0: 65535 -7,9: @@ -7594,7 +7599,8 @@ entities: 2,4: 0: 65535 3,4: - 0: 65535 + 0: 65519 + 1: 16 3,5: 0: 61439 0,-21: @@ -7607,15 +7613,15 @@ entities: 0: 65535 -12,10: 0: 62451 - 2: 3072 - 3: 12 + 4: 3072 + 5: 12 -11,10: - 2: 256 + 4: 256 0: 65278 - 3: 1 + 5: 1 -11,11: 0: 52478 - 2: 1 + 4: 1 -10,10: 0: 65535 -10,8: @@ -7632,7 +7638,7 @@ entities: 0: 65535 -9,11: 0: 63359 - 2: 2176 + 4: 2176 -8,12: 0: 48063 -7,12: @@ -7802,7 +7808,8 @@ entities: 9,3: 0: 65535 10,3: - 0: 65535 + 0: 32767 + 6: 32768 11,3: 0: 65535 13,2: @@ -7834,7 +7841,7 @@ entities: -1,11: 0: 65535 -5,12: - 2: 30515 + 4: 30515 0: 35020 -5,13: 0: 65535 @@ -7852,7 +7859,7 @@ entities: 0: 65535 -4,12: 0: 17 - 2: 65518 + 4: 65518 -4,13: 0: 65535 -4,14: @@ -7860,7 +7867,7 @@ entities: -4,15: 0: 61951 -3,12: - 2: 13107 + 4: 13107 0: 52428 -3,13: 0: 65535 @@ -7892,13 +7899,13 @@ entities: 0: 65535 -7,14: 0: 8191 - 2: 57344 + 4: 57344 -7,15: - 2: 238 + 4: 238 0: 65297 -6,12: 0: 4369 - 2: 61166 + 4: 61166 -6,13: 0: 65535 -6,14: @@ -8185,7 +8192,7 @@ entities: 0: 65535 -7,-12: 0: 44544 - 2: 34 + 4: 34 -6,-10: 0: 39144 13,-14: @@ -8211,7 +8218,7 @@ entities: 17,-8: 0: 29457 17,-7: - 3: 1 + 5: 1 0: 4990 17,-6: 0: 4593 @@ -8339,14 +8346,14 @@ entities: 0: 35771 -12,8: 0: 62451 - 4: 12 - 5: 3072 + 7: 12 + 8: 3072 -12,9: 0: 62451 - 2: 3084 + 4: 3084 -12,11: 0: 8947 - 2: 12 + 4: 12 -12,12: 0: 8751 -12,13: @@ -8540,11 +8547,11 @@ entities: -13,7: 0: 39327 -11,8: - 4: 1 + 7: 1 0: 65278 - 5: 256 + 8: 256 -11,9: - 2: 257 + 4: 257 0: 65278 1,12: 0: 63897 @@ -8566,8 +8573,8 @@ entities: 0: 65497 -13,12: 0: 53199 - 5: 48 - 4: 12288 + 8: 48 + 7: 12288 -13,13: 0: 61727 -18,4: @@ -9060,8 +9067,8 @@ entities: 0: 255 -14,12: 0: 32639 - 5: 128 - 4: 32768 + 8: 128 + 7: 32768 -14,13: 0: 31 -17,12: @@ -9077,9 +9084,9 @@ entities: -3,-20: 0: 28672 -8,-13: - 2: 3840 + 4: 3840 -9,-13: - 2: 3584 + 4: 3584 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -9096,6 +9103,36 @@ entities: - 0 - 0 - 0 + - volume: 2500 + temperature: 293.14996 + moles: + - 20.078888 + - 75.53487 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 21.596506 + - 81.243996 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 235 moles: @@ -9141,6 +9178,21 @@ entities: - 0 - 0 - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 21.806608 + - 82.03439 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.15 moles: @@ -13977,6 +14029,23 @@ entities: - pos: 5.5,23.5 parent: 60 type: Transform +- proto: AmePart + entities: + - uid: 16550 + components: + - pos: 8.452343,23.559658 + parent: 60 + type: Transform + - uid: 17676 + components: + - pos: 8.561718,23.497158 + parent: 60 + type: Transform + - uid: 18546 + components: + - pos: 8.671093,23.403408 + parent: 60 + type: Transform - proto: AnalysisComputerCircuitboard entities: - uid: 9455 @@ -57815,15 +57884,6 @@ entities: - pos: 31.52947,14.40356 parent: 60 type: Transform - - uid: 17299 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingBackpackSatchelLeather entities: - uid: 4702 @@ -57854,17 +57914,6 @@ entities: - pos: 19.497345,-45.396423 parent: 60 type: Transform -- proto: ClothingBeltMercWebbing - entities: - - uid: 18546 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingBeltMilitaryWebbing entities: - uid: 9121 @@ -57947,17 +57996,6 @@ entities: - pos: 14.470102,-43.56056 parent: 60 type: Transform -- proto: ClothingEyesGlassesMercenary - entities: - - uid: 17676 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingEyesGlassesSunglasses entities: - uid: 2252 @@ -58107,17 +58145,6 @@ entities: - pos: 35.520084,-27.379148 parent: 60 type: Transform -- proto: ClothingHandsGlovesMercFingerless - entities: - - uid: 17674 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingHandsGlovesNitrile entities: - uid: 4119 @@ -58153,17 +58180,6 @@ entities: - pos: -56.55667,-23.491457 parent: 60 type: Transform -- proto: ClothingHeadBandMerc - entities: - - uid: 17463 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingHeadBandRed entities: - uid: 1405 @@ -58216,17 +58232,6 @@ entities: - pos: -38.320274,19.65635 parent: 60 type: Transform -- proto: ClothingHeadHatBeretMerc - entities: - - uid: 19043 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingHeadHatBowlerHat entities: - uid: 8020 @@ -58514,17 +58519,6 @@ entities: - pos: 29.516983,-1.2031906 parent: 60 type: Transform -- proto: ClothingHeadHelmetMerc - entities: - - uid: 19162 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingHeadHelmetRiot entities: - uid: 1866 @@ -58689,17 +58683,6 @@ entities: - pos: 46.643196,3.6000824 parent: 60 type: Transform -- proto: ClothingMaskGasMerc - entities: - - uid: 19163 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingMaskNeckGaiter entities: - uid: 927 @@ -58766,6 +58749,13 @@ entities: - pos: -47.5,-26.5 parent: 60 type: Transform +- proto: ClothingNeckCloakTrans + entities: + - uid: 7082 + components: + - pos: -40.498245,-36.02266 + parent: 60 + type: Transform - proto: ClothingNeckHeadphones entities: - uid: 7861 @@ -58799,6 +58789,83 @@ entities: - pos: -11.221505,22.789167 parent: 60 type: Transform +- proto: ClothingNeckMantleCap + entities: + - uid: 16678 + components: + - flags: InContainer + type: MetaData + - parent: 1964 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingNeckMantleCE + entities: + - uid: 17299 + components: + - flags: InContainer + type: MetaData + - parent: 15403 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingNeckMantleCMO + entities: + - uid: 17463 + components: + - flags: InContainer + type: MetaData + - parent: 7044 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingNeckMantleHOP + entities: + - uid: 5207 + components: + - flags: InContainer + type: MetaData + - parent: 6235 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingNeckMantleHOS + entities: + - uid: 17672 + components: + - flags: InContainer + type: MetaData + - parent: 5933 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingNeckMantleQM + entities: + - uid: 16058 + components: + - flags: InContainer + type: MetaData + - parent: 13099 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingNeckMantleRD + entities: + - uid: 17673 + components: + - flags: InContainer + type: MetaData + - parent: 8197 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage - proto: ClothingNeckNonBinaryPin entities: - uid: 13569 @@ -59053,17 +59120,6 @@ entities: - canCollide: False type: Physics - type: InsideEntityStorage -- proto: ClothingOuterHardsuitSalvage - entities: - - uid: 5207 - components: - - flags: InContainer - type: MetaData - - parent: 13099 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingOuterHardsuitSyndicate entities: - uid: 8071 @@ -59122,17 +59178,6 @@ entities: - pos: 59.42158,-46.288704 parent: 60 type: Transform -- proto: ClothingOuterVestWebMerc - entities: - - uid: 17672 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingShoesBootsJack entities: - uid: 846 @@ -59169,17 +59214,6 @@ entities: - pos: -22.454462,29.447395 parent: 60 type: Transform -- proto: ClothingShoesBootsMercFilled - entities: - - uid: 17673 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingShoesBootsWork entities: - uid: 23663 @@ -59376,17 +59410,6 @@ entities: - pos: 37.53859,15.558934 parent: 60 type: Transform -- proto: ClothingUniformJumpsuitMercenary - entities: - - uid: 16678 - components: - - flags: InContainer - type: MetaData - - parent: 16058 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - proto: ClothingUniformJumpsuitOperative entities: - uid: 8069 @@ -60594,11 +60617,6 @@ entities: type: Transform - proto: CrateEngineeringAMEJar entities: - - uid: 7082 - components: - - pos: -3.5,33.5 - parent: 60 - type: Transform - uid: 16061 components: - pos: 6.5,23.5 @@ -61301,54 +61319,6 @@ entities: - pos: -4.5,-28.5 parent: 60 type: Transform -- proto: CrateWeaponSecure - entities: - - uid: 16058 - components: - - name: mercenary's stash - type: MetaData - - pos: 56.5,-17.5 - parent: 60 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14957 - moles: - - 1.8856695 - - 7.0937095 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 18546 - - 17676 - - 17674 - - 17673 - - 17672 - - 17463 - - 17299 - - 16678 - - 19043 - - 19162 - - 19163 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer - proto: CrayonBox entities: - uid: 6700 @@ -106478,6 +106448,35 @@ entities: - pos: -6.5,-2.5 parent: 60 type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 16678 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer - proto: LockerChemistryFilled entities: - uid: 2529 @@ -106533,6 +106532,35 @@ entities: - pos: 12.5,17.5 parent: 60 type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 17299 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer - proto: LockerChiefMedicalOfficerFilledHardsuit entities: - uid: 7044 @@ -106540,6 +106568,35 @@ entities: - pos: 29.5,-14.5 parent: 60 type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 17463 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer - proto: LockerDetectiveFilled entities: - uid: 7640 @@ -107079,8 +107136,8 @@ entities: immutable: False temperature: 293.1496 moles: - - 1.6495836 - - 6.2055764 + - 1.877957 + - 7.0646954 - 0 - 0 - 0 @@ -107097,6 +107154,7 @@ entities: showEnts: False occludes: True ents: + - 5207 - 4641 paper_label: !type:ContainerSlot showEnts: False @@ -107110,6 +107168,35 @@ entities: - pos: -19.5,2.5 parent: 60 type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 17672 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer - proto: LockerMedicalFilled entities: - uid: 241 @@ -107168,8 +107255,8 @@ entities: immutable: False temperature: 293.1496 moles: - - 1.877957 - - 7.0646954 + - 1.8962268 + - 7.133425 - 0 - 0 - 0 @@ -107186,7 +107273,7 @@ entities: showEnts: False occludes: True ents: - - 5207 + - 16058 paper_label: !type:ContainerSlot showEnts: False occludes: True @@ -107199,6 +107286,35 @@ entities: - pos: -44.5,7.5 parent: 60 type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 17673 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer - proto: LockerSalvageSpecialistFilled entities: - uid: 215 @@ -107853,7 +107969,7 @@ entities: entities: - uid: 7003 components: - - pos: 44.487556,-48.458042 + - pos: 56.487034,-17.432411 parent: 60 type: Transform - proto: MaterialReclaimer @@ -115167,6 +115283,11 @@ entities: - pos: -20.5,5.5 parent: 60 type: Transform + - uid: 19043 + components: + - pos: 8.5,23.5 + parent: 60 + type: Transform - uid: 19131 components: - pos: 20.5,19.5 @@ -124427,7 +124548,7 @@ entities: - pos: 0.5,47.5 parent: 60 type: Transform - - uid: 16550 + - uid: 19162 components: - pos: -5.5,33.5 parent: 60 @@ -124599,6 +124720,11 @@ entities: - pos: 4.5,34.5 parent: 60 type: Transform + - uid: 17674 + components: + - pos: -3.5,33.5 + parent: 60 + type: Transform - uid: 17946 components: - name: GravGenSMES From ab75941bc0b6ef154a267235dcd477836557312a Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Tue, 10 Oct 2023 16:46:54 -0600 Subject: [PATCH 022/245] box update (#20897) --- Resources/Maps/box.yml | 219 +++++++++++++++++++++++++++++------------ 1 file changed, 155 insertions(+), 64 deletions(-) diff --git a/Resources/Maps/box.yml b/Resources/Maps/box.yml index ecf1095cba4dfe..9a31f100920634 100644 --- a/Resources/Maps/box.yml +++ b/Resources/Maps/box.yml @@ -6000,7 +6000,8 @@ entities: -8,-8: 0: 65535 -8,-7: - 0: 65535 + 0: 61439 + 1: 4096 -8,-6: 0: 65535 -8,-5: @@ -6082,7 +6083,8 @@ entities: 2,-7: 0: 65535 2,-6: - 0: 65535 + 0: 65519 + 1: 16 2,-5: 0: 65535 3,-8: @@ -6104,7 +6106,8 @@ entities: -3,-8: 0: 65535 -3,-7: - 0: 65535 + 2: 1 + 0: 65534 -3,-6: 0: 65535 -3,-5: @@ -6271,21 +6274,21 @@ entities: 0: 65535 6,-12: 0: 16179 - 1: 204 - 2: 49152 + 3: 204 + 4: 49152 6,-11: 0: 65331 - 2: 204 + 4: 204 6,-10: 0: 65535 6,-9: 0: 65535 7,-12: - 1: 17 + 3: 17 0: 61422 - 2: 4096 + 4: 4096 7,-11: - 2: 17 + 4: 17 0: 65518 7,-10: 0: 65535 @@ -6541,7 +6544,7 @@ entities: 0: 52462 8,0: 0: 65527 - 3: 8 + 5: 8 8,1: 0: 65295 8,2: @@ -6549,7 +6552,7 @@ entities: 8,3: 0: 65535 9,0: - 3: 15 + 5: 15 0: 65520 9,1: 0: 65487 @@ -6558,7 +6561,7 @@ entities: 9,3: 0: 32767 10,0: - 3: 1 + 5: 1 0: 65534 10,1: 0: 65535 @@ -6902,7 +6905,7 @@ entities: 0: 65535 8,-1: 0: 30591 - 3: 34944 + 5: 34944 9,-4: 0: 65535 9,-3: @@ -6911,7 +6914,7 @@ entities: 0: 65535 9,-1: 0: 15 - 3: 65520 + 5: 65520 10,-4: 0: 65535 10,-3: @@ -6920,7 +6923,7 @@ entities: 0: 65535 10,-1: 0: 61167 - 3: 4368 + 5: 4368 11,-4: 0: 65535 11,-3: @@ -7221,10 +7224,10 @@ entities: 0: 65535 3,-14: 0: 16383 - 2: 49152 + 4: 49152 3,-13: 0: 65331 - 2: 204 + 4: 204 8,-12: 0: 65535 8,-11: @@ -7393,7 +7396,7 @@ entities: 0: 65535 20,-5: 0: 29431 - 2: 8 + 4: 8 21,-8: 0: 65535 21,-7: @@ -7582,7 +7585,7 @@ entities: 0: 65535 13,-13: 0: 65501 - 2: 34 + 4: 34 14,-16: 0: 65535 14,-15: @@ -7641,16 +7644,16 @@ entities: 0: 65535 21,-4: 0: 13104 - 2: 52416 + 4: 52416 21,-3: 0: 12595 - 2: 204 + 4: 204 21,-2: 0: 13105 - 2: 52416 + 4: 52416 21,-1: 0: 51 - 2: 204 + 4: 204 16,-19: 0: 63244 16,-18: @@ -7751,7 +7754,7 @@ entities: 0: 65535 4,-17: 0: 34959 - 4: 30576 + 6: 30576 5,-20: 0: 62813 5,-19: @@ -7780,9 +7783,9 @@ entities: 0: 65535 4,-14: 0: 61439 - 2: 4096 + 4: 4096 4,-13: - 2: 17 + 4: 17 0: 65518 5,-16: 0: 65535 @@ -7796,26 +7799,26 @@ entities: 0: 65518 6,-15: 0: 16383 - 2: 49152 + 4: 49152 6,-14: 0: 16179 - 2: 49356 + 4: 49356 6,-13: 0: 16179 - 2: 204 - 1: 49152 + 4: 204 + 3: 49152 7,-16: 0: 39305 7,-15: 0: 61433 - 2: 4096 + 4: 4096 7,-14: - 2: 4113 + 4: 4113 0: 61422 7,-13: - 2: 17 + 4: 17 0: 61422 - 1: 4096 + 3: 4096 -4,-20: 0: 65504 -4,-19: @@ -7958,7 +7961,7 @@ entities: 0: 65535 3,-17: 0: 34959 - 5: 30576 + 7: 30576 0,-24: 0: 65416 0,-23: @@ -8451,6 +8454,36 @@ entities: - 0 - 0 - 0 + - volume: 2500 + temperature: 293.14996 + moles: + - 20.078888 + - 75.53487 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 24.680622 + - 92.84615 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.15 moles: @@ -13886,6 +13919,23 @@ entities: - pos: -9.5,-72.5 parent: 8364 type: Transform +- proto: AmePart + entities: + - uid: 27762 + components: + - pos: -12.607154,-72.37925 + parent: 8364 + type: Transform + - uid: 27763 + components: + - pos: -12.466529,-72.50425 + parent: 8364 + type: Transform + - uid: 27764 + components: + - pos: -12.294654,-72.62925 + parent: 8364 + type: Transform - proto: AmplifierSubspaceStockPart entities: - uid: 16364 @@ -13897,7 +13947,7 @@ entities: entities: - uid: 16368 components: - - pos: -8.99259,-39.184814 + - pos: -8.826363,-39.400078 parent: 8364 type: Transform - proto: AnomalyScanner @@ -50529,6 +50579,11 @@ entities: - pos: -32.5,20.5 parent: 8364 type: Transform + - uid: 13323 + components: + - pos: -36.5,20.5 + parent: 8364 + type: Transform - uid: 13328 components: - pos: -39.5,20.5 @@ -56828,26 +56883,11 @@ entities: - pos: 65.5,16.5 parent: 8364 type: Transform - - uid: 13323 - components: - - pos: -33.5,20.5 - parent: 8364 - type: Transform - uid: 13324 components: - pos: -34.5,20.5 parent: 8364 type: Transform - - uid: 13325 - components: - - pos: -35.5,20.5 - parent: 8364 - type: Transform - - uid: 13326 - components: - - pos: -36.5,20.5 - parent: 8364 - type: Transform - uid: 13327 components: - pos: -37.5,20.5 @@ -70775,6 +70815,11 @@ entities: - 0 - 0 type: EntityStorage + - uid: 13325 + components: + - pos: -4.5,-33.5 + parent: 8364 + type: Transform - uid: 26622 components: - pos: 7.5,-59.5 @@ -71740,7 +71785,7 @@ entities: entities: - uid: 16349 components: - - pos: -9.94314,-39.65799 + - pos: -10.591988,-38.696953 parent: 8364 type: Transform - proto: d10Dice @@ -81805,7 +81850,7 @@ entities: entities: - uid: 16354 components: - - pos: -8.945715,-39.591064 + - pos: -10.388863,-38.431328 parent: 8364 type: Transform - proto: FireAlarm @@ -122455,6 +122500,24 @@ entities: - pos: 8.5,-22.5 parent: 8364 type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage - proto: LockerChemistryFilled entities: - uid: 18772 @@ -123084,8 +123147,8 @@ entities: immutable: False temperature: 293.1496 moles: - - 5.001885 - - 18.816614 + - 2.146141 + - 8.073578 - 0 - 0 - 0 @@ -123273,6 +123336,24 @@ entities: - pos: -31.5,-24.5 parent: 8364 type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage - proto: LockerResearchDirectorFilledHardsuit entities: - uid: 15814 @@ -124073,7 +124154,7 @@ entities: entities: - uid: 16355 components: - - pos: -8.245951,-39.650208 + - pos: -10.435738,-39.009453 parent: 8364 type: Transform - proto: MedicalBed @@ -124242,12 +124323,12 @@ entities: entities: - uid: 16356 components: - - pos: -8.652201,-39.009583 + - pos: -10.498238,-39.353203 parent: 8364 type: Transform - uid: 16357 components: - - pos: -8.807449,-39.33577 + - pos: -10.310738,-39.540703 parent: 8364 type: Transform - uid: 21185 @@ -132247,6 +132328,11 @@ entities: - pos: -13.5,-37.5 parent: 8364 type: Transform + - uid: 16113 + components: + - pos: -12.5,-72.5 + parent: 8364 + type: Transform - uid: 16396 components: - pos: 7.5,-46.5 @@ -142070,6 +142156,11 @@ entities: - pos: -50.5,23.5 parent: 8364 type: Transform + - uid: 13326 + components: + - pos: -3.5,-33.5 + parent: 8364 + type: Transform - uid: 15809 components: - name: Telecomms SMES @@ -142110,6 +142201,11 @@ entities: - pos: 34.5,-91.5 parent: 8364 type: Transform + - uid: 27765 + components: + - pos: -9.5,-64.5 + parent: 8364 + type: Transform - proto: SMESMachineCircuitboard entities: - uid: 12457 @@ -147134,11 +147230,6 @@ entities: - pos: -28.5,-55.5 parent: 8364 type: Transform - - uid: 16113 - components: - - pos: -4.5,-33.5 - parent: 8364 - type: Transform - uid: 16114 components: - pos: -5.5,-33.5 @@ -150071,7 +150162,7 @@ entities: entities: - uid: 16366 components: - - pos: -9.281598,-39.498627 + - pos: -8.560738,-38.931328 parent: 8364 type: Transform - proto: TrashBag From edbfef22d6913361e09cc45b44995940ea3cae63 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 11 Oct 2023 10:41:11 +1100 Subject: [PATCH 023/245] Climbing refactor (#20516) --- .../DragDropHelper.cs | 2 +- .../DragDropSystem.cs | 13 +- .../Movement/Systems/ClimbSystem.cs | 33 -- .../Systems/Actions/ActionUIController.cs | 2 +- .../Tests/Climbing/ClimbingTest.cs | 4 +- Content.Server/Climbing/ClimbSystem.cs | 476 ----------------- Content.Server/Interaction/DragDropSystem.cs | 8 + .../Interaction/InteractionSystem.cs | 41 -- .../BiomassReclaimerSystem.cs | 4 +- Content.Server/Medical/CryoPodSystem.cs | 2 +- .../Medical/MedicalScannerSystem.cs | 2 +- .../NPC/Pathfinding/PathfindingSystem.Grid.cs | 1 + .../NPC/Systems/NPCSteeringSystem.Context.cs | 1 + .../Systems/NPCSteeringSystem.Obstacles.cs | 4 +- .../NPC/Systems/NPCSteeringSystem.cs | 5 +- .../ActionBlocker/ActionBlockerSystem.cs | 2 +- Content.Shared/Climbing/ClimbingComponent.cs | 27 - .../{ => Components}/BonkableComponent.cs | 4 +- .../{ => Components}/ClimbableComponent.cs | 9 +- .../Climbing/Components/ClimbingComponent.cs | 36 ++ .../Components/GlassTableComponent.cs | 4 +- .../Climbing/Events/ClimbedOnEvent.cs | 7 + .../Climbing/Events/EndClimbEvent.cs | 5 +- .../Climbing/Events/StartClimbEvent.cs | 7 + Content.Shared/Climbing/SharedClimbSystem.cs | 34 -- .../Climbing/{ => Systems}/BonkSystem.cs | 17 +- .../Climbing/Systems/ClimbSystem.cs | 486 ++++++++++++++++++ Content.Shared/DoAfter/SharedDoAfterSystem.cs | 14 +- .../DragDrop/SharedDragDropSystem.cs | 47 +- .../Interaction/SharedInteractionSystem.cs | 1 + 30 files changed, 637 insertions(+), 661 deletions(-) rename Content.Client/{DragDrop => Interaction}/DragDropHelper.cs (99%) rename Content.Client/{DragDrop => Interaction}/DragDropSystem.cs (97%) delete mode 100644 Content.Client/Movement/Systems/ClimbSystem.cs delete mode 100644 Content.Server/Climbing/ClimbSystem.cs create mode 100644 Content.Server/Interaction/DragDropSystem.cs delete mode 100644 Content.Shared/Climbing/ClimbingComponent.cs rename Content.Shared/Climbing/{ => Components}/BonkableComponent.cs (90%) rename Content.Shared/Climbing/{ => Components}/ClimbableComponent.cs (84%) create mode 100644 Content.Shared/Climbing/Components/ClimbingComponent.cs rename {Content.Server => Content.Shared}/Climbing/Components/GlassTableComponent.cs (90%) create mode 100644 Content.Shared/Climbing/Events/ClimbedOnEvent.cs create mode 100644 Content.Shared/Climbing/Events/StartClimbEvent.cs delete mode 100644 Content.Shared/Climbing/SharedClimbSystem.cs rename Content.Shared/Climbing/{ => Systems}/BonkSystem.cs (88%) create mode 100644 Content.Shared/Climbing/Systems/ClimbSystem.cs diff --git a/Content.Client/DragDrop/DragDropHelper.cs b/Content.Client/Interaction/DragDropHelper.cs similarity index 99% rename from Content.Client/DragDrop/DragDropHelper.cs rename to Content.Client/Interaction/DragDropHelper.cs index d8286ee7054056..ce5e08207c27fa 100644 --- a/Content.Client/DragDrop/DragDropHelper.cs +++ b/Content.Client/Interaction/DragDropHelper.cs @@ -1,7 +1,7 @@ using Robust.Client.Input; using Robust.Shared.Map; -namespace Content.Client.DragDrop; +namespace Content.Client.Interaction; /// /// Helper for implementing drag and drop interactions. diff --git a/Content.Client/DragDrop/DragDropSystem.cs b/Content.Client/Interaction/DragDropSystem.cs similarity index 97% rename from Content.Client/DragDrop/DragDropSystem.cs rename to Content.Client/Interaction/DragDropSystem.cs index a8c1a06686e437..66571a9d27f778 100644 --- a/Content.Client/DragDrop/DragDropSystem.cs +++ b/Content.Client/Interaction/DragDropSystem.cs @@ -1,3 +1,4 @@ +using System.Numerics; using Content.Client.CombatMode; using Content.Client.Gameplay; using Content.Client.Outline; @@ -7,7 +8,6 @@ using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Popups; -using JetBrains.Annotations; using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Input; @@ -20,15 +20,13 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; -using System.Numerics; using DrawDepth = Content.Shared.DrawDepth.DrawDepth; -namespace Content.Client.DragDrop; +namespace Content.Client.Interaction; /// /// Handles clientside drag and drop logic /// -[UsedImplicitly] public sealed class DragDropSystem : SharedDragDropSystem { [Dependency] private readonly IStateManager _stateManager = default!; @@ -45,8 +43,6 @@ public sealed class DragDropSystem : SharedDragDropSystem [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; - private ISawmill _sawmill = default!; - // how often to recheck possible targets (prevents calling expensive // check logic each update) private const float TargetRecheckInterval = 0.25f; @@ -110,7 +106,6 @@ public sealed class DragDropSystem : SharedDragDropSystem public override void Initialize() { base.Initialize(); - _sawmill = Logger.GetSawmill("drag_drop"); UpdatesOutsidePrediction = true; UpdatesAfter.Add(typeof(SharedEyeSystem)); @@ -263,7 +258,7 @@ private void StartDrag() return; } - _sawmill.Warning($"Unable to display drag shadow for {ToPrettyString(_draggedEntity.Value)} because it has no sprite component."); + Log.Warning($"Unable to display drag shadow for {ToPrettyString(_draggedEntity.Value)} because it has no sprite component."); } private bool UpdateDrag(float frameTime) @@ -392,7 +387,7 @@ private bool OnUseMouseUp(in PointerInputCmdHandler.PointerInputCmdArgs args) } // tell the server about the drop attempt - RaiseNetworkEvent(new DragDropRequestEvent(GetNetEntity(_draggedEntity.Value), GetNetEntity(entity))); + RaisePredictiveEvent(new DragDropRequestEvent(GetNetEntity(_draggedEntity.Value), GetNetEntity(entity))); EndDrag(); return true; } diff --git a/Content.Client/Movement/Systems/ClimbSystem.cs b/Content.Client/Movement/Systems/ClimbSystem.cs deleted file mode 100644 index 003b478b30dd51..00000000000000 --- a/Content.Client/Movement/Systems/ClimbSystem.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Content.Client.Interactable; -using Content.Shared.Climbing; -using Content.Shared.DragDrop; - -namespace Content.Client.Movement.Systems; - -public sealed class ClimbSystem : SharedClimbSystem -{ - [Dependency] private readonly InteractionSystem _interactionSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnCanDragDropOn); - } - - protected override void OnCanDragDropOn(EntityUid uid, ClimbableComponent component, ref CanDropTargetEvent args) - { - base.OnCanDragDropOn(uid, component, ref args); - - if (!args.CanDrop) - return; - - var user = args.User; - var target = uid; - var dragged = args.Dragged; - bool Ignored(EntityUid entity) => entity == target || entity == user || entity == dragged; - - args.CanDrop = _interactionSystem.InRangeUnobstructed(user, target, component.Range, predicate: Ignored) - && _interactionSystem.InRangeUnobstructed(user, dragged, component.Range, predicate: Ignored); - args.Handled = true; - } -} diff --git a/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs b/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs index bb83e370fe4309..b2ff36d05c37db 100644 --- a/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs +++ b/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs @@ -3,9 +3,9 @@ using System.Runtime.InteropServices; using Content.Client.Actions; using Content.Client.Construction; -using Content.Client.DragDrop; using Content.Client.Gameplay; using Content.Client.Hands; +using Content.Client.Interaction; using Content.Client.Outline; using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Systems.Actions.Controls; diff --git a/Content.IntegrationTests/Tests/Climbing/ClimbingTest.cs b/Content.IntegrationTests/Tests/Climbing/ClimbingTest.cs index f6bcc6e12916a3..d8d3086520eba8 100644 --- a/Content.IntegrationTests/Tests/Climbing/ClimbingTest.cs +++ b/Content.IntegrationTests/Tests/Climbing/ClimbingTest.cs @@ -1,8 +1,8 @@ #nullable enable using Content.IntegrationTests.Tests.Interaction; -using Content.Server.Climbing; -using Content.Shared.Climbing; using Robust.Shared.Maths; +using ClimbingComponent = Content.Shared.Climbing.Components.ClimbingComponent; +using ClimbSystem = Content.Shared.Climbing.Systems.ClimbSystem; namespace Content.IntegrationTests.Tests.Climbing; diff --git a/Content.Server/Climbing/ClimbSystem.cs b/Content.Server/Climbing/ClimbSystem.cs deleted file mode 100644 index e9d25f361f2af0..00000000000000 --- a/Content.Server/Climbing/ClimbSystem.cs +++ /dev/null @@ -1,476 +0,0 @@ -using System.Numerics; -using Content.Server.Body.Systems; -using Content.Server.Climbing.Components; -using Content.Server.Interaction; -using Content.Server.Popups; -using Content.Server.Stunnable; -using Content.Shared.ActionBlocker; -using Content.Shared.Body.Components; -using Content.Shared.Body.Part; -using Content.Shared.Buckle.Components; -using Content.Shared.Climbing; -using Content.Shared.Climbing.Events; -using Content.Shared.Damage; -using Content.Shared.DoAfter; -using Content.Shared.DragDrop; -using Content.Shared.GameTicking; -using Content.Shared.Hands.Components; -using Content.Shared.IdentityManagement; -using Content.Shared.Physics; -using Content.Shared.Popups; -using Content.Shared.Verbs; -using JetBrains.Annotations; -using Robust.Server.GameObjects; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Collision.Shapes; -using Robust.Shared.Physics.Components; -using Robust.Shared.Physics.Dynamics; -using Robust.Shared.Physics.Events; -using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; - -namespace Content.Server.Climbing; - -[UsedImplicitly] -public sealed class ClimbSystem : SharedClimbSystem -{ - [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; - [Dependency] private readonly AudioSystem _audio = default!; - [Dependency] private readonly BodySystem _bodySystem = default!; - [Dependency] private readonly DamageableSystem _damageableSystem = default!; - [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; - [Dependency] private readonly FixtureSystem _fixtureSystem = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly InteractionSystem _interactionSystem = default!; - [Dependency] private readonly StunSystem _stunSystem = default!; - [Dependency] private readonly SharedPhysicsSystem _physics = default!; - - private const string ClimbingFixtureName = "climb"; - private const int ClimbingCollisionGroup = (int) (CollisionGroup.TableLayer | CollisionGroup.LowImpassable); - - private readonly Dictionary> _fixtureRemoveQueue = new(); - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(Reset); - SubscribeLocalEvent>(AddClimbableVerb); - SubscribeLocalEvent(OnClimbableDragDrop); - - SubscribeLocalEvent(OnDoAfter); - SubscribeLocalEvent(OnClimbEndCollide); - SubscribeLocalEvent(OnBuckleChange); - - SubscribeLocalEvent(OnGlassClimbed); - } - - protected override void OnCanDragDropOn(EntityUid uid, ClimbableComponent component, ref CanDropTargetEvent args) - { - base.OnCanDragDropOn(uid, component, ref args); - - if (!args.CanDrop) - return; - - string reason; - var canVault = args.User == args.Dragged - ? CanVault(component, args.User, uid, out reason) - : CanVault(component, args.User, args.Dragged, uid, out reason); - - if (!canVault) - _popupSystem.PopupEntity(reason, args.User, args.User); - - args.CanDrop = canVault; - args.Handled = true; - } - - private void AddClimbableVerb(EntityUid uid, ClimbableComponent component, GetVerbsEvent args) - { - if (!args.CanAccess || !args.CanInteract || !_actionBlockerSystem.CanMove(args.User)) - return; - - if (!TryComp(args.User, out ClimbingComponent? climbingComponent) || climbingComponent.IsClimbing) - return; - - // TODO VERBS ICON add a climbing icon? - args.Verbs.Add(new AlternativeVerb - { - Act = () => TryClimb(args.User, args.User, args.Target, out _, component), - Text = Loc.GetString("comp-climbable-verb-climb") - }); - } - - private void OnClimbableDragDrop(EntityUid uid, ClimbableComponent component, ref DragDropTargetEvent args) - { - // definitely a better way to check if two entities are equal - // but don't have computer access and i have to do this without syntax - if (args.Handled || args.User != args.Dragged && !HasComp(args.User)) - return; - TryClimb(args.User, args.Dragged, uid, out _, component); - } - - public bool TryClimb(EntityUid user, - EntityUid entityToMove, - EntityUid climbable, - out DoAfterId? id, - ClimbableComponent? comp = null, - ClimbingComponent? climbing = null) - { - id = null; - - if (!Resolve(climbable, ref comp) || !Resolve(entityToMove, ref climbing)) - return false; - - // Note, IsClimbing does not mean a DoAfter is active, it means the target has already finished a DoAfter and - // is currently on top of something.. - if (climbing.IsClimbing) - return true; - - var args = new DoAfterArgs(EntityManager, user, comp.ClimbDelay, new ClimbDoAfterEvent(), entityToMove, target: climbable, used: entityToMove) - { - BreakOnTargetMove = true, - BreakOnUserMove = true, - BreakOnDamage = true - }; - - _audio.PlayPvs(comp.StartClimbSound, climbable); - _doAfterSystem.TryStartDoAfter(args, out id); - return true; - } - - private void OnDoAfter(EntityUid uid, ClimbingComponent component, ClimbDoAfterEvent args) - { - if (args.Handled || args.Cancelled || args.Args.Target == null || args.Args.Used == null) - return; - - Climb(uid, args.Args.User, args.Args.Used.Value, args.Args.Target.Value, climbing: component); - - args.Handled = true; - } - - private void Climb(EntityUid uid, EntityUid user, EntityUid instigator, EntityUid climbable, bool silent = false, ClimbingComponent? climbing = null, - PhysicsComponent? physics = null, FixturesComponent? fixtures = null, ClimbableComponent? comp = null) - { - if (!Resolve(uid, ref climbing, ref physics, ref fixtures, false)) - return; - - if (!Resolve(climbable, ref comp)) - return; - - if (!ReplaceFixtures(climbing, fixtures)) - return; - - climbing.IsClimbing = true; - Dirty(climbing); - - _audio.PlayPvs(comp.FinishClimbSound, climbable); - MoveEntityToward(uid, climbable, physics, climbing); - // we may potentially need additional logic since we're forcing a player onto a climbable - // there's also the cases where the user might collide with the person they are forcing onto the climbable that i haven't accounted for - - RaiseLocalEvent(uid, new StartClimbEvent(climbable), false); - RaiseLocalEvent(climbable, new ClimbedOnEvent(uid, user), false); - - if (silent) - return; - if (user == uid) - { - var othersMessage = Loc.GetString("comp-climbable-user-climbs-other", ("user", Identity.Entity(uid, EntityManager)), - ("climbable", climbable)); - uid.PopupMessageOtherClients(othersMessage); - - var selfMessage = Loc.GetString("comp-climbable-user-climbs", ("climbable", climbable)); - uid.PopupMessage(selfMessage); - } - else - { - var othersMessage = Loc.GetString("comp-climbable-user-climbs-force-other", ("user", Identity.Entity(user, EntityManager)), - ("moved-user", Identity.Entity(uid, EntityManager)), ("climbable", climbable)); - user.PopupMessageOtherClients(othersMessage); - - var selfMessage = Loc.GetString("comp-climbable-user-climbs-force", ("moved-user", Identity.Entity(uid, EntityManager)), - ("climbable", climbable)); - user.PopupMessage(selfMessage); - } - } - - /// - /// Replaces the current fixtures with non-climbing collidable versions so that climb end can be detected - /// - /// Returns whether adding the new fixtures was successful - private bool ReplaceFixtures(ClimbingComponent climbingComp, FixturesComponent fixturesComp) - { - var uid = climbingComp.Owner; - - // Swap fixtures - foreach (var (name, fixture) in fixturesComp.Fixtures) - { - if (climbingComp.DisabledFixtureMasks.ContainsKey(name) - || fixture.Hard == false - || (fixture.CollisionMask & ClimbingCollisionGroup) == 0) - continue; - - climbingComp.DisabledFixtureMasks.Add(name, fixture.CollisionMask & ClimbingCollisionGroup); - _physics.SetCollisionMask(uid, name, fixture, fixture.CollisionMask & ~ClimbingCollisionGroup, fixturesComp); - } - - if (!_fixtureSystem.TryCreateFixture( - uid, - new PhysShapeCircle(0.35f), - ClimbingFixtureName, - collisionLayer: (int) CollisionGroup.None, - collisionMask: ClimbingCollisionGroup, - hard: false, - manager: fixturesComp)) - { - return false; - } - - return true; - } - - private void OnClimbEndCollide(EntityUid uid, ClimbingComponent component, ref EndCollideEvent args) - { - if (args.OurFixtureId != ClimbingFixtureName - || !component.IsClimbing - || component.OwnerIsTransitioning) - return; - - foreach (var fixture in args.OurFixture.Contacts.Keys) - { - if (fixture == args.OtherFixture) - continue; - // If still colliding with a climbable, do not stop climbing - if (HasComp(args.OtherEntity)) - return; - } - - StopClimb(uid, component); - } - - private void StopClimb(EntityUid uid, ClimbingComponent? climbing = null, FixturesComponent? fixtures = null) - { - if (!Resolve(uid, ref climbing, ref fixtures, false)) - return; - - foreach (var (name, fixtureMask) in climbing.DisabledFixtureMasks) - { - if (!fixtures.Fixtures.TryGetValue(name, out var fixture)) - { - continue; - } - - _physics.SetCollisionMask(uid, name, fixture, fixture.CollisionMask | fixtureMask, fixtures); - } - climbing.DisabledFixtureMasks.Clear(); - - if (!_fixtureRemoveQueue.TryGetValue(uid, out var removeQueue)) - { - removeQueue = new Dictionary(); - _fixtureRemoveQueue.Add(uid, removeQueue); - } - - if (fixtures.Fixtures.TryGetValue(ClimbingFixtureName, out var climbingFixture)) - removeQueue.Add(ClimbingFixtureName, climbingFixture); - - climbing.IsClimbing = false; - climbing.OwnerIsTransitioning = false; - var ev = new EndClimbEvent(); - RaiseLocalEvent(uid, ref ev); - Dirty(climbing); - } - - /// - /// Checks if the user can vault the target - /// - /// The component of the entity that is being vaulted - /// The entity that wants to vault - /// The object that is being vaulted - /// The reason why it cant be dropped - /// - public bool CanVault(ClimbableComponent component, EntityUid user, EntityUid target, out string reason) - { - if (!_actionBlockerSystem.CanInteract(user, target)) - { - reason = Loc.GetString("comp-climbable-cant-interact"); - return false; - } - - if (!HasComp(user) - || !TryComp(user, out BodyComponent? body) - || !_bodySystem.BodyHasPartType(user, BodyPartType.Leg, body) - || !_bodySystem.BodyHasPartType(user, BodyPartType.Foot, body)) - { - reason = Loc.GetString("comp-climbable-cant-climb"); - return false; - } - - if (!_interactionSystem.InRangeUnobstructed(user, target, component.Range)) - { - reason = Loc.GetString("comp-climbable-cant-reach"); - return false; - } - - reason = string.Empty; - return true; - } - - /// - /// Checks if the user can vault the dragged entity onto the the target - /// - /// The climbable component of the object being vaulted onto - /// The user that wants to vault the entity - /// The entity that is being vaulted - /// The object that is being vaulted onto - /// The reason why it cant be dropped - /// - public bool CanVault(ClimbableComponent component, EntityUid user, EntityUid dragged, EntityUid target, - out string reason) - { - if (!_actionBlockerSystem.CanInteract(user, dragged) || !_actionBlockerSystem.CanInteract(user, target)) - { - reason = Loc.GetString("comp-climbable-cant-interact"); - return false; - } - - if (!HasComp(dragged)) - { - reason = Loc.GetString("comp-climbable-cant-climb"); - return false; - } - - bool Ignored(EntityUid entity) => entity == target || entity == user || entity == dragged; - - if (!_interactionSystem.InRangeUnobstructed(user, target, component.Range, predicate: Ignored) - || !_interactionSystem.InRangeUnobstructed(user, dragged, component.Range, predicate: Ignored)) - { - reason = Loc.GetString("comp-climbable-cant-reach"); - return false; - } - - reason = string.Empty; - return true; - } - - public void ForciblySetClimbing(EntityUid uid, EntityUid climbable, ClimbingComponent? component = null) - { - Climb(uid, uid, uid, climbable, true, component); - } - - private void OnBuckleChange(EntityUid uid, ClimbingComponent component, ref BuckleChangeEvent args) - { - if (!args.Buckling) - return; - StopClimb(uid, component); - } - - private void OnGlassClimbed(EntityUid uid, GlassTableComponent component, ClimbedOnEvent args) - { - if (TryComp(args.Climber, out var physics) && physics.Mass <= component.MassLimit) - return; - - _damageableSystem.TryChangeDamage(args.Climber, component.ClimberDamage, origin: args.Climber); - _damageableSystem.TryChangeDamage(uid, component.TableDamage, origin: args.Climber); - _stunSystem.TryParalyze(args.Climber, TimeSpan.FromSeconds(component.StunTime), true); - - // Not shown to the user, since they already get a 'you climb on the glass table' popup - _popupSystem.PopupEntity( - Loc.GetString("glass-table-shattered-others", ("table", uid), ("climber", Identity.Entity(args.Climber, EntityManager))), args.Climber, - Filter.PvsExcept(args.Climber), true); - } - - /// - /// Moves the entity toward the target climbed entity - /// - public void MoveEntityToward(EntityUid uid, EntityUid target, PhysicsComponent? physics = null, ClimbingComponent? climbing = null) - { - if (!Resolve(uid, ref physics, ref climbing, false)) - return; - - var from = Transform(uid).WorldPosition; - var to = Transform(target).WorldPosition; - var (x, y) = (to - from).Normalized(); - - if (MathF.Abs(x) < 0.6f) // user climbed mostly vertically so lets make it a clean straight line - to = new Vector2(from.X, to.Y); - else if (MathF.Abs(y) < 0.6f) // user climbed mostly horizontally so lets make it a clean straight line - to = new Vector2(to.X, from.Y); - - var velocity = (to - from).Length(); - - if (velocity <= 0.0f) - return; - - // Since there are bodies with different masses: - // mass * 10 seems enough to move entity - // instead of launching cats like rockets against the walls with constant impulse value. - _physics.ApplyLinearImpulse(uid, (to - from).Normalized() * velocity * physics.Mass * 10, body: physics); - _physics.SetBodyType(uid, BodyType.Dynamic, body: physics); - climbing.OwnerIsTransitioning = true; - _actionBlockerSystem.UpdateCanMove(uid); - - // Transition back to KinematicController after BufferTime - climbing.Owner.SpawnTimer((int) (ClimbingComponent.BufferTime * 1000), () => - { - if (climbing.Deleted) - return; - - _physics.SetBodyType(uid, BodyType.KinematicController); - climbing.OwnerIsTransitioning = false; - _actionBlockerSystem.UpdateCanMove(uid); - }); - } - - public override void Update(float frameTime) - { - foreach (var (uid, fixtures) in _fixtureRemoveQueue) - { - if (!TryComp(uid, out var physicsComp) - || !TryComp(uid, out var fixturesComp)) - { - continue; - } - - foreach (var fixture in fixtures) - { - _fixtureSystem.DestroyFixture(uid, fixture.Key, fixture.Value, body: physicsComp, manager: fixturesComp); - } - } - - _fixtureRemoveQueue.Clear(); - } - - private void Reset(RoundRestartCleanupEvent ev) - { - _fixtureRemoveQueue.Clear(); - } - -} - -/// -/// Raised on an entity when it is climbed on. -/// -public sealed class ClimbedOnEvent : EntityEventArgs -{ - public EntityUid Climber; - public EntityUid Instigator; - - public ClimbedOnEvent(EntityUid climber, EntityUid instigator) - { - Climber = climber; - Instigator = instigator; - } -} - -/// -/// Raised on an entity when it successfully climbs on something. -/// -public sealed class StartClimbEvent : EntityEventArgs -{ - public EntityUid Climbable; - - public StartClimbEvent(EntityUid climbable) - { - Climbable = climbable; - } -} diff --git a/Content.Server/Interaction/DragDropSystem.cs b/Content.Server/Interaction/DragDropSystem.cs new file mode 100644 index 00000000000000..9a4c26e3f95907 --- /dev/null +++ b/Content.Server/Interaction/DragDropSystem.cs @@ -0,0 +1,8 @@ +using Content.Shared.DragDrop; + +namespace Content.Server.Interaction; + +public sealed class DragDropSystem : SharedDragDropSystem +{ + +} diff --git a/Content.Server/Interaction/InteractionSystem.cs b/Content.Server/Interaction/InteractionSystem.cs index c39c086960dfe5..a612b738400a20 100644 --- a/Content.Server/Interaction/InteractionSystem.cs +++ b/Content.Server/Interaction/InteractionSystem.cs @@ -32,8 +32,6 @@ public override void Initialize() { base.Initialize(); - SubscribeNetworkEvent(HandleDragDropRequestEvent); - SubscribeLocalEvent(HandleUserInterfaceRangeCheck); } @@ -58,45 +56,6 @@ public override bool CanAccessViaStorage(EntityUid user, EntityUid target) return _uiSystem.SessionHasOpenUi(container.Owner, StorageComponent.StorageUiKey.Key, actor.PlayerSession); } - #region Drag drop - - private void HandleDragDropRequestEvent(DragDropRequestEvent msg, EntitySessionEventArgs args) - { - var dragged = GetEntity(msg.Dragged); - var target = GetEntity(msg.Target); - - if (Deleted(dragged) || Deleted(target)) - return; - - var user = args.SenderSession.AttachedEntity; - - if (user == null || !_actionBlockerSystem.CanInteract(user.Value, target)) - return; - - // must be in range of both the target and the object they are drag / dropping - // Client also does this check but ya know we gotta validate it. - if (!InRangeUnobstructed(user.Value, dragged, popup: true) - || !InRangeUnobstructed(user.Value, target, popup: true)) - { - return; - } - - var dragArgs = new DragDropDraggedEvent(user.Value, target); - - // trigger dragdrops on the dropped entity - RaiseLocalEvent(dragged, ref dragArgs); - - if (dragArgs.Handled) - return; - - var dropArgs = new DragDropTargetEvent(user.Value, dragged); - - // trigger dragdrops on the target entity (what you are dropping onto) - RaiseLocalEvent(GetEntity(msg.Target), ref dropArgs); - } - - #endregion - private void HandleUserInterfaceRangeCheck(ref BoundUserInterfaceCheckRangeEvent ev) { if (ev.Player.AttachedEntity is not { } user) diff --git a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs index 40637c5362b936..45f8d2ed98325d 100644 --- a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs +++ b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs @@ -1,6 +1,5 @@ using System.Numerics; using Content.Server.Body.Components; -using Content.Server.Climbing; using Content.Server.Construction; using Content.Server.Fluids.EntitySystems; using Content.Server.Materials; @@ -9,6 +8,7 @@ using Content.Shared.Audio; using Content.Shared.CCVar; using Content.Shared.Chemistry.Components; +using Content.Shared.Climbing.Events; using Content.Shared.Construction.Components; using Content.Shared.Database; using Content.Shared.DoAfter; @@ -160,7 +160,7 @@ private void OnAfterInteractUsing(EntityUid uid, BiomassReclaimerComponent compo }); } - private void OnClimbedOn(EntityUid uid, BiomassReclaimerComponent component, ClimbedOnEvent args) + private void OnClimbedOn(EntityUid uid, BiomassReclaimerComponent component, ref ClimbedOnEvent args) { if (!CanGib(uid, args.Climber, component)) { diff --git a/Content.Server/Medical/CryoPodSystem.cs b/Content.Server/Medical/CryoPodSystem.cs index ddd29d26a2c90f..98f8e305b631b7 100644 --- a/Content.Server/Medical/CryoPodSystem.cs +++ b/Content.Server/Medical/CryoPodSystem.cs @@ -7,7 +7,6 @@ using Content.Server.Body.Systems; using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Chemistry.EntitySystems; -using Content.Server.Climbing; using Content.Server.Medical.Components; using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; @@ -32,6 +31,7 @@ using Robust.Server.GameObjects; using Robust.Shared.Timing; using Content.Server.Temperature.Components; +using Content.Shared.Climbing.Systems; namespace Content.Server.Medical; diff --git a/Content.Server/Medical/MedicalScannerSystem.cs b/Content.Server/Medical/MedicalScannerSystem.cs index 57ca815cb7bbb0..d4694e8fb8dac6 100644 --- a/Content.Server/Medical/MedicalScannerSystem.cs +++ b/Content.Server/Medical/MedicalScannerSystem.cs @@ -1,4 +1,3 @@ -using Content.Server.Climbing; using Content.Server.Cloning; using Content.Server.Medical.Components; using Content.Shared.Destructible; @@ -13,6 +12,7 @@ using Content.Shared.DeviceLinking.Events; using Content.Server.Power.EntitySystems; using Content.Shared.Body.Components; +using Content.Shared.Climbing.Systems; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Robust.Server.Containers; diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs index 95d267f7d73f75..72d6606c910920 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs @@ -18,6 +18,7 @@ using Robust.Shared.Physics.Events; using Robust.Shared.Timing; using Robust.Shared.Utility; +using ClimbableComponent = Content.Shared.Climbing.Components.ClimbableComponent; namespace Content.Server.NPC.Pathfinding; diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs index 920db537dfed0b..6507f24edf648c 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs @@ -10,6 +10,7 @@ using Content.Shared.Physics; using Robust.Shared.Map; using Robust.Shared.Physics.Components; +using ClimbingComponent = Content.Shared.Climbing.Components.ClimbingComponent; namespace Content.Server.NPC.Systems; diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs index 87deec9ea9dcb5..70d1e89bc4fea3 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs @@ -9,6 +9,8 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Utility; +using ClimbableComponent = Content.Shared.Climbing.Components.ClimbableComponent; +using ClimbingComponent = Content.Shared.Climbing.Components.ClimbingComponent; namespace Content.Server.NPC.Systems; @@ -132,7 +134,7 @@ private SteeringObstacleStatus TryHandleFlags(EntityUid uid, NPCSteeringComponen { return SteeringObstacleStatus.Completed; } - else if (climbing.OwnerIsTransitioning) + else if (climbing.NextTransition != null) { return SteeringObstacleStatus.Continuing; } diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.cs index 0fa28f6af795b8..61b43df6f0023f 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.cs @@ -1,21 +1,19 @@ -using System.Linq; using System.Numerics; using System.Threading; using System.Threading.Tasks; using Content.Server.Administration.Managers; -using Content.Server.Climbing; using Content.Server.DoAfter; using Content.Server.Doors.Systems; using Content.Server.NPC.Components; using Content.Server.NPC.Events; using Content.Server.NPC.Pathfinding; using Content.Shared.CCVar; +using Content.Shared.Climbing.Systems; using Content.Shared.CombatMode; using Content.Shared.Interaction; using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; using Content.Shared.NPC; -using Content.Shared.NPC; using Content.Shared.NPC.Events; using Content.Shared.Physics; using Content.Shared.Weapons.Melee; @@ -28,7 +26,6 @@ using Robust.Shared.Player; using Robust.Shared.Players; using Robust.Shared.Random; -using Robust.Shared.Threading; using Robust.Shared.Timing; using Robust.Shared.Utility; using Content.Shared.Prying.Systems; diff --git a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs index 93aa5dd9099f30..d2b12a4b2925f5 100644 --- a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs +++ b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs @@ -47,7 +47,7 @@ public bool UpdateCanMove(EntityUid uid, InputMoverComponent? component = null) RaiseLocalEvent(uid, ev); if (component.CanMove == ev.Cancelled) - Dirty(component); + Dirty(uid, component); component.CanMove = !ev.Cancelled; return !ev.Cancelled; diff --git a/Content.Shared/Climbing/ClimbingComponent.cs b/Content.Shared/Climbing/ClimbingComponent.cs deleted file mode 100644 index cd443af6aad9fd..00000000000000 --- a/Content.Shared/Climbing/ClimbingComponent.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Climbing; - -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -public sealed partial class ClimbingComponent : Component -{ - /// - /// Whether the owner is climbing on a climbable entity. - /// - [ViewVariables, AutoNetworkedField] - public bool IsClimbing { get; set; } - - /// - /// Whether the owner is being moved onto the climbed entity. - /// - [ViewVariables, AutoNetworkedField] - public bool OwnerIsTransitioning { get; set; } - - /// - /// We'll launch the mob onto the table and give them at least this amount of time to be on it. - /// - public const float BufferTime = 0.3f; - - [ViewVariables] - public Dictionary DisabledFixtureMasks { get; } = new(); -} diff --git a/Content.Shared/Climbing/BonkableComponent.cs b/Content.Shared/Climbing/Components/BonkableComponent.cs similarity index 90% rename from Content.Shared/Climbing/BonkableComponent.cs rename to Content.Shared/Climbing/Components/BonkableComponent.cs index afffe1ff991fdb..cc85e1c5626f0b 100644 --- a/Content.Shared/Climbing/BonkableComponent.cs +++ b/Content.Shared/Climbing/Components/BonkableComponent.cs @@ -2,13 +2,13 @@ using Robust.Shared.Audio; using Robust.Shared.GameStates; -namespace Content.Shared.Climbing; +namespace Content.Shared.Climbing.Components; /// /// Makes entity do damage and stun entities with ClumsyComponent /// upon DragDrop or Climb interactions. /// -[RegisterComponent, NetworkedComponent, Access(typeof(BonkSystem))] +[RegisterComponent, NetworkedComponent, Access(typeof(Systems.BonkSystem))] public sealed partial class BonkableComponent : Component { /// diff --git a/Content.Shared/Climbing/ClimbableComponent.cs b/Content.Shared/Climbing/Components/ClimbableComponent.cs similarity index 84% rename from Content.Shared/Climbing/ClimbableComponent.cs rename to Content.Shared/Climbing/Components/ClimbableComponent.cs index 7ad289348ab974..1a924e5c3052a3 100644 --- a/Content.Shared/Climbing/ClimbableComponent.cs +++ b/Content.Shared/Climbing/Components/ClimbableComponent.cs @@ -1,11 +1,12 @@ -using Content.Shared.CCVar; -using Content.Shared.Damage; using Content.Shared.Interaction; using Robust.Shared.Audio; using Robust.Shared.GameStates; -namespace Content.Shared.Climbing +namespace Content.Shared.Climbing.Components { + /// + /// Indicates this entity can be vaulted on top of. + /// [RegisterComponent, NetworkedComponent] public sealed partial class ClimbableComponent : Component { @@ -18,7 +19,7 @@ public sealed partial class ClimbableComponent : Component /// The time it takes to climb onto the entity. /// [DataField("delay")] - public float ClimbDelay = 0.8f; + public float ClimbDelay = 1.5f; /// /// Sound to be played when a climb is started. diff --git a/Content.Shared/Climbing/Components/ClimbingComponent.cs b/Content.Shared/Climbing/Components/ClimbingComponent.cs new file mode 100644 index 00000000000000..9738c0cee9ba1d --- /dev/null +++ b/Content.Shared/Climbing/Components/ClimbingComponent.cs @@ -0,0 +1,36 @@ +using System.Numerics; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.Climbing.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ClimbingComponent : Component +{ + /// + /// Whether the owner is climbing on a climbable entity. + /// + [AutoNetworkedField, DataField] + public bool IsClimbing; + + /// + /// Whether the owner is being moved onto the climbed entity. + /// + [AutoNetworkedField, DataField(customTypeSerializer:typeof(TimeOffsetSerializer))] + public TimeSpan? NextTransition; + + /// + /// Direction to move when transition. + /// + [AutoNetworkedField, DataField] + public Vector2 Direction; + + /// + /// How fast the entity is moved when climbing. + /// + [DataField] + public float TransitionRate = 5f; + + [AutoNetworkedField, DataField] + public Dictionary DisabledFixtureMasks = new(); +} diff --git a/Content.Server/Climbing/Components/GlassTableComponent.cs b/Content.Shared/Climbing/Components/GlassTableComponent.cs similarity index 90% rename from Content.Server/Climbing/Components/GlassTableComponent.cs rename to Content.Shared/Climbing/Components/GlassTableComponent.cs index 009fba91f44aae..d191793adf47a1 100644 --- a/Content.Server/Climbing/Components/GlassTableComponent.cs +++ b/Content.Shared/Climbing/Components/GlassTableComponent.cs @@ -1,13 +1,13 @@ using Content.Shared.Damage; -namespace Content.Server.Climbing.Components; +namespace Content.Shared.Climbing.Components; /// /// Glass tables shatter and stun you when climbed on. /// This is a really entity-specific behavior, so opted to make it /// not very generalized with regards to naming. /// -[RegisterComponent, Access(typeof(ClimbSystem))] +[RegisterComponent, Access(typeof(Systems.ClimbSystem))] public sealed partial class GlassTableComponent : Component { /// diff --git a/Content.Shared/Climbing/Events/ClimbedOnEvent.cs b/Content.Shared/Climbing/Events/ClimbedOnEvent.cs new file mode 100644 index 00000000000000..8b0484d5d68e26 --- /dev/null +++ b/Content.Shared/Climbing/Events/ClimbedOnEvent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Climbing.Events; + +/// +/// Raised on an entity when it is climbed on. +/// +[ByRefEvent] +public readonly record struct ClimbedOnEvent(EntityUid Climber, EntityUid Instigator); diff --git a/Content.Shared/Climbing/Events/EndClimbEvent.cs b/Content.Shared/Climbing/Events/EndClimbEvent.cs index 12eaac236d79c9..6963cabf301e75 100644 --- a/Content.Shared/Climbing/Events/EndClimbEvent.cs +++ b/Content.Shared/Climbing/Events/EndClimbEvent.cs @@ -4,7 +4,4 @@ namespace Content.Shared.Climbing.Events; /// Raised on an entity when it ends climbing. /// [ByRefEvent] -public readonly record struct EndClimbEvent -{ - -} +public readonly record struct EndClimbEvent; diff --git a/Content.Shared/Climbing/Events/StartClimbEvent.cs b/Content.Shared/Climbing/Events/StartClimbEvent.cs new file mode 100644 index 00000000000000..3563a39bb82ebd --- /dev/null +++ b/Content.Shared/Climbing/Events/StartClimbEvent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Climbing.Events; + +/// +/// Raised on an entity when it successfully climbs on something. +/// +[ByRefEvent] +public readonly record struct StartClimbEvent(EntityUid Climbable); diff --git a/Content.Shared/Climbing/SharedClimbSystem.cs b/Content.Shared/Climbing/SharedClimbSystem.cs deleted file mode 100644 index 12b84bbb7eaf48..00000000000000 --- a/Content.Shared/Climbing/SharedClimbSystem.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Content.Shared.DoAfter; -using Content.Shared.DragDrop; -using Content.Shared.Movement.Events; -using Robust.Shared.Serialization; - -namespace Content.Shared.Climbing; - -public abstract partial class SharedClimbSystem : EntitySystem -{ - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(HandleMoveAttempt); - } - - private static void HandleMoveAttempt(EntityUid uid, ClimbingComponent component, UpdateCanMoveEvent args) - { - if (component.LifeStage > ComponentLifeStage.Running) - return; - - if (component.OwnerIsTransitioning) - args.Cancel(); - } - - protected virtual void OnCanDragDropOn(EntityUid uid, ClimbableComponent component, ref CanDropTargetEvent args) - { - args.CanDrop = HasComp(args.Dragged); - } - - [Serializable, NetSerializable] - protected sealed partial class ClimbDoAfterEvent : SimpleDoAfterEvent - { - } -} diff --git a/Content.Shared/Climbing/BonkSystem.cs b/Content.Shared/Climbing/Systems/BonkSystem.cs similarity index 88% rename from Content.Shared/Climbing/BonkSystem.cs rename to Content.Shared/Climbing/Systems/BonkSystem.cs index eda392fa31f5c9..6ded524b19d90d 100644 --- a/Content.Shared/Climbing/BonkSystem.cs +++ b/Content.Shared/Climbing/Systems/BonkSystem.cs @@ -1,17 +1,18 @@ -using Content.Shared.Interaction; -using Content.Shared.Stunnable; using Content.Shared.CCVar; +using Content.Shared.Climbing.Components; using Content.Shared.Damage; using Content.Shared.DoAfter; using Content.Shared.DragDrop; -using Robust.Shared.Configuration; -using Content.Shared.Popups; using Content.Shared.IdentityManagement; +using Content.Shared.Interaction; using Content.Shared.Interaction.Components; +using Content.Shared.Popups; +using Content.Shared.Stunnable; +using Robust.Shared.Configuration; using Robust.Shared.Player; using Robust.Shared.Serialization; -namespace Content.Shared.Climbing; +namespace Content.Shared.Climbing.Systems; public sealed partial class BonkSystem : EntitySystem { @@ -30,7 +31,7 @@ public override void Initialize() SubscribeLocalEvent(OnBonkDoAfter); } - private void OnBonkDoAfter(EntityUid uid, BonkableComponent component, BonkDoAfterEvent args) + private void OnBonkDoAfter(EntityUid uid, Components.BonkableComponent component, BonkDoAfterEvent args) { if (args.Handled || args.Cancelled || args.Args.Target == null) return; @@ -41,7 +42,7 @@ private void OnBonkDoAfter(EntityUid uid, BonkableComponent component, BonkDoAft } - public bool TryBonk(EntityUid user, EntityUid bonkableUid, BonkableComponent? bonkableComponent = null) + public bool TryBonk(EntityUid user, EntityUid bonkableUid, Components.BonkableComponent? bonkableComponent = null) { if (!Resolve(bonkableUid, ref bonkableComponent, false)) return false; @@ -71,7 +72,7 @@ public bool TryBonk(EntityUid user, EntityUid bonkableUid, BonkableComponent? bo } - private void OnDragDrop(EntityUid uid, BonkableComponent component, ref DragDropTargetEvent args) + private void OnDragDrop(EntityUid uid, Components.BonkableComponent component, ref DragDropTargetEvent args) { if (args.Handled || !HasComp(args.Dragged)) return; diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs new file mode 100644 index 00000000000000..4e25fa4ac0d777 --- /dev/null +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -0,0 +1,486 @@ +using System.Numerics; +using Content.Shared.ActionBlocker; +using Content.Shared.Body.Components; +using Content.Shared.Body.Part; +using Content.Shared.Body.Systems; +using Content.Shared.Buckle.Components; +using Content.Shared.Climbing.Components; +using Content.Shared.Climbing.Events; +using Content.Shared.Damage; +using Content.Shared.DoAfter; +using Content.Shared.DragDrop; +using Content.Shared.Hands.Components; +using Content.Shared.IdentityManagement; +using Content.Shared.Interaction; +using Content.Shared.Movement.Events; +using Content.Shared.Movement.Systems; +using Content.Shared.Physics; +using Content.Shared.Popups; +using Content.Shared.Stunnable; +using Content.Shared.Verbs; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Collision.Shapes; +using Robust.Shared.Physics.Components; +using Robust.Shared.Physics.Controllers; +using Robust.Shared.Physics.Events; +using Robust.Shared.Physics.Systems; +using Robust.Shared.Player; +using Robust.Shared.Serialization; +using Robust.Shared.Timing; + +namespace Content.Shared.Climbing.Systems; + +public sealed partial class ClimbSystem : VirtualController +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; + [Dependency] private readonly DamageableSystem _damageableSystem = default!; + [Dependency] private readonly FixtureSystem _fixtureSystem = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedBodySystem _bodySystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedPhysicsSystem _physics = default!; + [Dependency] private readonly SharedStunSystem _stunSystem = default!; + [Dependency] private readonly SharedTransformSystem _xformSystem = default!; + + private const string ClimbingFixtureName = "climb"; + private const int ClimbingCollisionGroup = (int) (CollisionGroup.TableLayer | CollisionGroup.LowImpassable); + + private EntityQuery _fixturesQuery; + private EntityQuery _xformQuery; + + public override void Initialize() + { + base.Initialize(); + + _fixturesQuery = GetEntityQuery(); + _xformQuery = GetEntityQuery(); + + SubscribeLocalEvent(OnMoveAttempt); + SubscribeLocalEvent(OnParentChange); + SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent(OnClimbEndCollide); + SubscribeLocalEvent(OnBuckleChange); + SubscribeLocalEvent(OnClimbableUnpaused); + + SubscribeLocalEvent(OnCanDragDropOn); + SubscribeLocalEvent>(AddClimbableVerb); + SubscribeLocalEvent(OnClimbableDragDrop); + + SubscribeLocalEvent(OnGlassClimbed); + } + + private void OnClimbableUnpaused(EntityUid uid, ClimbingComponent component, ref EntityUnpausedEvent args) + { + if (component.NextTransition == null) + return; + + component.NextTransition = component.NextTransition.Value + args.PausedTime; + Dirty(uid, component); + } + + public override void UpdateBeforeSolve(bool prediction, float frameTime) + { + base.UpdateBeforeSolve(prediction, frameTime); + + var query = EntityQueryEnumerator(); + var curTime = _timing.CurTime; + + // Move anything still climb in the specified direction. + while (query.MoveNext(out var uid, out var comp)) + { + if (comp.NextTransition == null) + continue; + + if (comp.NextTransition < curTime) + { + FinishTransition(uid, comp); + continue; + } + + var xform = _xformQuery.GetComponent(uid); + _xformSystem.SetLocalPositionNoLerp(uid, xform.LocalPosition + comp.Direction * frameTime, xform); + } + } + + private void FinishTransition(EntityUid uid, ClimbingComponent comp) + { + // TODO: Validate climb here + comp.NextTransition = null; + _actionBlockerSystem.UpdateCanMove(uid); + Dirty(uid, comp); + + // Stop if necessary. + if (!_fixturesQuery.TryGetComponent(uid, out var fixtures) || + !IsClimbing(uid, fixtures)) + { + StopClimb(uid, comp); + return; + } + } + + /// + /// Returns true if entity currently has a valid vault. + /// + private bool IsClimbing(EntityUid uid, FixturesComponent? fixturesComp = null) + { + if (!_fixturesQuery.Resolve(uid, ref fixturesComp) || !fixturesComp.Fixtures.TryGetValue(ClimbingFixtureName, out var climbFixture)) + return false; + + foreach (var contact in climbFixture.Contacts.Values) + { + var other = uid == contact.EntityA ? contact.EntityB : contact.EntityA; + + if (HasComp(other)) + { + return true; + } + } + + return false; + } + + private void OnMoveAttempt(EntityUid uid, ClimbingComponent component, UpdateCanMoveEvent args) + { + // Can't move when transition. + if (component.NextTransition != null) + args.Cancel(); + } + + private void OnParentChange(EntityUid uid, ClimbingComponent component, ref EntParentChangedMessage args) + { + if (component.NextTransition != null) + { + StopClimb(uid, component); + } + } + + private void OnCanDragDropOn(EntityUid uid, ClimbableComponent component, ref CanDropTargetEvent args) + { + if (args.Handled) + return; + + var canVault = args.User == args.Dragged + ? CanVault(component, args.User, uid, out _) + : CanVault(component, args.User, args.Dragged, uid, out _); + + args.CanDrop = canVault; + args.Handled = true; + } + + private void AddClimbableVerb(EntityUid uid, ClimbableComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || !_actionBlockerSystem.CanMove(args.User)) + return; + + if (!TryComp(args.User, out ClimbingComponent? climbingComponent) || climbingComponent.IsClimbing) + return; + + // TODO VERBS ICON add a climbing icon? + args.Verbs.Add(new AlternativeVerb + { + Act = () => TryClimb(args.User, args.User, args.Target, out _, component), + Text = Loc.GetString("comp-climbable-verb-climb") + }); + } + + private void OnClimbableDragDrop(EntityUid uid, ClimbableComponent component, ref DragDropTargetEvent args) + { + // definitely a better way to check if two entities are equal + // but don't have computer access and i have to do this without syntax + if (args.Handled || args.User != args.Dragged && !HasComp(args.User)) + return; + + TryClimb(args.User, args.Dragged, uid, out _, component); + } + + public bool TryClimb( + EntityUid user, + EntityUid entityToMove, + EntityUid climbable, + out DoAfterId? id, + ClimbableComponent? comp = null, + ClimbingComponent? climbing = null) + { + id = null; + + if (!Resolve(climbable, ref comp) || !Resolve(entityToMove, ref climbing)) + return false; + + // Note, IsClimbing does not mean a DoAfter is active, it means the target has already finished a DoAfter and + // is currently on top of something.. + if (climbing.IsClimbing) + return true; + + var args = new DoAfterArgs(EntityManager, user, comp.ClimbDelay, new ClimbDoAfterEvent(), + entityToMove, + target: climbable, + used: entityToMove) + { + BreakOnTargetMove = true, + BreakOnUserMove = true, + BreakOnDamage = true + }; + + _audio.PlayPredicted(comp.StartClimbSound, climbable, user); + return _doAfterSystem.TryStartDoAfter(args, out id); + } + + private void OnDoAfter(EntityUid uid, ClimbingComponent component, ClimbDoAfterEvent args) + { + if (args.Handled || args.Cancelled || args.Args.Target == null || args.Args.Used == null) + return; + + Climb(uid, args.Args.User, args.Args.Target.Value, climbing: component); + args.Handled = true; + } + + private void Climb(EntityUid uid, EntityUid user, EntityUid climbable, bool silent = false, ClimbingComponent? climbing = null, + PhysicsComponent? physics = null, FixturesComponent? fixtures = null, ClimbableComponent? comp = null) + { + if (!Resolve(uid, ref climbing, ref physics, ref fixtures, false)) + return; + + if (!Resolve(climbable, ref comp)) + return; + + if (!ReplaceFixtures(uid, climbing, fixtures)) + return; + + var xform = _xformQuery.GetComponent(uid); + var (worldPos, worldRot) = _xformSystem.GetWorldPositionRotation(xform); + var worldDirection = _xformSystem.GetWorldPosition(climbable) - worldPos; + var distance = worldDirection.Length(); + var parentRot = (worldRot - xform.LocalRotation); + // Need direction relative to climber's parent. + var localDirection = (-parentRot).RotateVec(worldDirection); + + climbing.IsClimbing = true; + var climbDuration = TimeSpan.FromSeconds(distance / climbing.TransitionRate); + climbing.NextTransition = _timing.CurTime + climbDuration; + + climbing.Direction = localDirection.Normalized() * climbing.TransitionRate; + Dirty(uid, climbing); + + _audio.PlayPredicted(comp.FinishClimbSound, climbable, user); + _actionBlockerSystem.UpdateCanMove(uid); + + var startEv = new StartClimbEvent(climbable); + var climbedEv = new ClimbedOnEvent(uid, user); + RaiseLocalEvent(uid, ref startEv); + RaiseLocalEvent(climbable, ref climbedEv); + + if (silent) + return; + + string selfMessage; + string othersMessage; + + if (user == uid) + { + othersMessage = Loc.GetString("comp-climbable-user-climbs-other", + ("user", Identity.Entity(uid, EntityManager)), + ("climbable", climbable)); + + selfMessage = Loc.GetString("comp-climbable-user-climbs", ("climbable", climbable)); + } + else + { + othersMessage = Loc.GetString("comp-climbable-user-climbs-force-other", + ("user", Identity.Entity(user, EntityManager)), + ("moved-user", Identity.Entity(uid, EntityManager)), ("climbable", climbable)); + + selfMessage = Loc.GetString("comp-climbable-user-climbs-force", ("moved-user", Identity.Entity(uid, EntityManager)), + ("climbable", climbable)); + } + + _popupSystem.PopupEntity(othersMessage, uid, Filter.PvsExcept(user, entityManager: EntityManager), true); + _popupSystem.PopupClient(selfMessage, uid, user); + } + + /// + /// Replaces the current fixtures with non-climbing collidable versions so that climb end can be detected + /// + /// Returns whether adding the new fixtures was successful + private bool ReplaceFixtures(EntityUid uid, ClimbingComponent climbingComp, FixturesComponent fixturesComp) + { + // Swap fixtures + foreach (var (name, fixture) in fixturesComp.Fixtures) + { + if (climbingComp.DisabledFixtureMasks.ContainsKey(name) + || fixture.Hard == false + || (fixture.CollisionMask & ClimbingCollisionGroup) == 0) + { + continue; + } + + climbingComp.DisabledFixtureMasks.Add(name, fixture.CollisionMask & ClimbingCollisionGroup); + _physics.SetCollisionMask(uid, name, fixture, fixture.CollisionMask & ~ClimbingCollisionGroup, fixturesComp); + } + + if (!_fixtureSystem.TryCreateFixture( + uid, + new PhysShapeCircle(0.35f), + ClimbingFixtureName, + collisionLayer: (int) CollisionGroup.None, + collisionMask: ClimbingCollisionGroup, + hard: false, + manager: fixturesComp)) + { + return false; + } + + return true; + } + + private void OnClimbEndCollide(EntityUid uid, ClimbingComponent component, ref EndCollideEvent args) + { + if (args.OurFixtureId != ClimbingFixtureName + || !component.IsClimbing + || component.NextTransition != null) + { + return; + } + + foreach (var fixture in args.OurFixture.Contacts.Keys) + { + if (fixture == args.OtherFixture) + continue; + + // If still colliding with a climbable, do not stop climbing + if (HasComp(args.OtherEntity)) + return; + } + + StopClimb(uid, component); + } + + private void StopClimb(EntityUid uid, ClimbingComponent? climbing = null, FixturesComponent? fixtures = null) + { + if (!Resolve(uid, ref climbing, ref fixtures, false)) + return; + + foreach (var (name, fixtureMask) in climbing.DisabledFixtureMasks) + { + if (!fixtures.Fixtures.TryGetValue(name, out var fixture)) + { + continue; + } + + _physics.SetCollisionMask(uid, name, fixture, fixture.CollisionMask | fixtureMask, fixtures); + } + + climbing.DisabledFixtureMasks.Clear(); + _fixtureSystem.DestroyFixture(uid, ClimbingFixtureName, manager: fixtures); + climbing.IsClimbing = false; + climbing.NextTransition = null; + var ev = new EndClimbEvent(); + RaiseLocalEvent(uid, ref ev); + Dirty(uid, climbing); + } + + /// + /// Checks if the user can vault the target + /// + /// The component of the entity that is being vaulted + /// The entity that wants to vault + /// The object that is being vaulted + /// The reason why it cant be dropped + public bool CanVault(ClimbableComponent component, EntityUid user, EntityUid target, out string reason) + { + if (!_actionBlockerSystem.CanInteract(user, target)) + { + reason = Loc.GetString("comp-climbable-cant-interact"); + return false; + } + + if (!HasComp(user) + || !TryComp(user, out BodyComponent? body) + || !_bodySystem.BodyHasPartType(user, BodyPartType.Leg, body) + || !_bodySystem.BodyHasPartType(user, BodyPartType.Foot, body)) + { + reason = Loc.GetString("comp-climbable-cant-climb"); + return false; + } + + if (!_interactionSystem.InRangeUnobstructed(user, target, component.Range)) + { + reason = Loc.GetString("comp-climbable-cant-reach"); + return false; + } + + reason = string.Empty; + return true; + } + + /// + /// Checks if the user can vault the dragged entity onto the the target + /// + /// The climbable component of the object being vaulted onto + /// The user that wants to vault the entity + /// The entity that is being vaulted + /// The object that is being vaulted onto + /// The reason why it cant be dropped + /// + public bool CanVault(ClimbableComponent component, EntityUid user, EntityUid dragged, EntityUid target, + out string reason) + { + if (!_actionBlockerSystem.CanInteract(user, dragged) || !_actionBlockerSystem.CanInteract(user, target)) + { + reason = Loc.GetString("comp-climbable-cant-interact"); + return false; + } + + if (!HasComp(dragged)) + { + reason = Loc.GetString("comp-climbable-cant-climb"); + return false; + } + + bool Ignored(EntityUid entity) => entity == target || entity == user || entity == dragged; + + if (!_interactionSystem.InRangeUnobstructed(user, target, component.Range, predicate: Ignored) + || !_interactionSystem.InRangeUnobstructed(user, dragged, component.Range, predicate: Ignored)) + { + reason = Loc.GetString("comp-climbable-cant-reach"); + return false; + } + + reason = string.Empty; + return true; + } + + public void ForciblySetClimbing(EntityUid uid, EntityUid climbable, ClimbingComponent? component = null) + { + Climb(uid, uid, climbable, true, component); + } + + private void OnBuckleChange(EntityUid uid, ClimbingComponent component, ref BuckleChangeEvent args) + { + if (!args.Buckling) + return; + StopClimb(uid, component); + } + + private void OnGlassClimbed(EntityUid uid, GlassTableComponent component, ref ClimbedOnEvent args) + { + if (TryComp(args.Climber, out var physics) && physics.Mass <= component.MassLimit) + return; + + _damageableSystem.TryChangeDamage(args.Climber, component.ClimberDamage, origin: args.Climber); + _damageableSystem.TryChangeDamage(uid, component.TableDamage, origin: args.Climber); + _stunSystem.TryParalyze(args.Climber, TimeSpan.FromSeconds(component.StunTime), true); + + // Not shown to the user, since they already get a 'you climb on the glass table' popup + _popupSystem.PopupEntity( + Loc.GetString("glass-table-shattered-others", ("table", uid), ("climber", Identity.Entity(args.Climber, EntityManager))), args.Climber, + Filter.PvsExcept(args.Climber), true); + } + + [Serializable, NetSerializable] + private sealed partial class ClimbDoAfterEvent : SimpleDoAfterEvent + { + } +} diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.cs index 691d9a47582459..382ecb5a9a52c6 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.cs @@ -43,7 +43,7 @@ private void OnUnpaused(EntityUid uid, DoAfterComponent component, ref EntityUnp doAfter.CancelledTime = doAfter.CancelledTime.Value + args.PausedTime; } - Dirty(component); + Dirty(uid, component); } private void OnStateChanged(EntityUid uid, DoAfterComponent component, MobStateChangedEvent args) @@ -55,7 +55,7 @@ private void OnStateChanged(EntityUid uid, DoAfterComponent component, MobStateC { InternalCancel(doAfter, component); } - Dirty(component); + Dirty(uid, component); } /// @@ -63,10 +63,12 @@ private void OnStateChanged(EntityUid uid, DoAfterComponent component, MobStateC /// private void OnDamage(EntityUid uid, DoAfterComponent component, DamageChangedEvent args) { - if (!args.InterruptsDoAfters || !args.DamageIncreased || args.DamageDelta == null) + // If we're applying state then let the server state handle the do_after prediction. + // This is to avoid scenarios where a do_after is erroneously cancelled on the final tick. + if (!args.InterruptsDoAfters || !args.DamageIncreased || args.DamageDelta == null || GameTiming.ApplyingState) return; - var delta = args.DamageDelta?.Total; + var delta = args.DamageDelta.GetTotal(); var dirty = false; foreach (var doAfter in component.DoAfters.Values) @@ -79,7 +81,7 @@ private void OnDamage(EntityUid uid, DoAfterComponent component, DamageChangedEv } if (dirty) - Dirty(component); + Dirty(uid, component); } private void RaiseDoAfterEvents(DoAfter doAfter, DoAfterComponent component) @@ -254,7 +256,7 @@ public bool TryStartDoAfter(DoAfterArgs args, [NotNullWhen(true)] out DoAfterId? comp.DoAfters.Add(doAfter.Index, doAfter); EnsureComp(args.User); - Dirty(comp); + Dirty(args.User, comp); args.Event.DoAfter = doAfter; return true; } diff --git a/Content.Shared/DragDrop/SharedDragDropSystem.cs b/Content.Shared/DragDrop/SharedDragDropSystem.cs index 7f1f6c23f73ddb..24c79015d82217 100644 --- a/Content.Shared/DragDrop/SharedDragDropSystem.cs +++ b/Content.Shared/DragDrop/SharedDragDropSystem.cs @@ -1,6 +1,51 @@ -namespace Content.Shared.DragDrop; +using Content.Shared.ActionBlocker; +using Content.Shared.Interaction; + +namespace Content.Shared.DragDrop; public abstract class SharedDragDropSystem : EntitySystem { + [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; + [Dependency] private readonly SharedInteractionSystem _interaction = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeAllEvent(OnDragDropRequestEvent); + } + + private void OnDragDropRequestEvent(DragDropRequestEvent msg, EntitySessionEventArgs args) + { + var dragged = GetEntity(msg.Dragged); + var target = GetEntity(msg.Target); + + if (Deleted(dragged) || Deleted(target)) + return; + + var user = args.SenderSession.AttachedEntity; + + if (user == null || !_actionBlockerSystem.CanInteract(user.Value, target)) + return; + + // must be in range of both the target and the object they are drag / dropping + // Client also does this check but ya know we gotta validate it. + if (!_interaction.InRangeUnobstructed(user.Value, dragged, popup: true) + || !_interaction.InRangeUnobstructed(user.Value, target, popup: true)) + { + return; + } + + var dragArgs = new DragDropDraggedEvent(user.Value, target); + + // trigger dragdrops on the dropped entity + RaiseLocalEvent(dragged, ref dragArgs); + + if (dragArgs.Handled) + return; + + var dropArgs = new DragDropTargetEvent(user.Value, dragged); + // trigger dragdrops on the target entity (what you are dropping onto) + RaiseLocalEvent(GetEntity(msg.Target), ref dropArgs); + } } diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index d79a892c711229..4a9a43ca2c2b4f 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Administration.Managers; using Content.Shared.CombatMode; using Content.Shared.Database; +using Content.Shared.DragDrop; using Content.Shared.Hands; using Content.Shared.Hands.Components; using Content.Shared.Input; From 969fd334dc9afcc79ba7f64d9f382047d950b035 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Oct 2023 19:42:16 -0400 Subject: [PATCH 024/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 811836b71bc2b6..d0a8f897c5d81f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: PJB3005 - changes: - - {message: Better nuke sprite from /vg/., type: Tweak} - id: 4487 - time: '2023-08-08T21:55:41.0000000+00:00' - author: Nairodian changes: - {message: Changed random maintenance loot spawns to be more diverse., type: Tweak} @@ -2955,3 +2950,10 @@ Entries: type: Fix} id: 4986 time: '2023-10-10T21:33:18.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Vaulting tables is now predicted., type: Fix} + - {message: Fix buckle sound not playing., type: Fix} + - {message: Buckling is now predicted., type: Fix} + id: 4987 + time: '2023-10-10T23:41:12.0000000+00:00' From 088832a29582f634cbacc049c853acad1ea2e775 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Wed, 11 Oct 2023 13:27:14 +1100 Subject: [PATCH 025/245] Update engine to v166.0.0 (#20899) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index a8ddd837c847f7..7095a58685f607 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit a8ddd837c847f7cd8e71ae4926418a992b6ff4a3 +Subproject commit 7095a58685f60707b38edfc4689b658a5bd21a92 From 6db534ef86765e12b56ac0880158d3d0a0ba226b Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Wed, 11 Oct 2023 03:55:53 +0100 Subject: [PATCH 026/245] uncloak ninja after attacking (#20892) * raise MeleeAttackEvent on the user after swinging * add disable bool to RevealNinja * uncloak ninja after attacking --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Ninja/Systems/SharedNinjaSuitSystem.cs | 5 ++++- .../Ninja/Systems/SharedSpaceNinjaSystem.cs | 15 ++++++++++++++- .../Weapons/Melee/Events/MeleeAttackEvent.cs | 7 +++++++ .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 3 +++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 Content.Shared/Weapons/Melee/Events/MeleeAttackEvent.cs diff --git a/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs b/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs index 6bcd3432a91c3a..473e29cc943df8 100644 --- a/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs +++ b/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs @@ -96,7 +96,7 @@ protected virtual void NinjaEquippedSuit(EntityUid uid, NinjaSuitComponent comp, /// /// Force uncloaks the user and disables suit abilities. /// - public void RevealNinja(EntityUid uid, EntityUid user, NinjaSuitComponent? comp = null, StealthClothingComponent? stealthClothing = null) + public void RevealNinja(EntityUid uid, EntityUid user, bool disable = true, NinjaSuitComponent? comp = null, StealthClothingComponent? stealthClothing = null) { if (!Resolve(uid, ref comp, ref stealthClothing)) return; @@ -104,6 +104,9 @@ public void RevealNinja(EntityUid uid, EntityUid user, NinjaSuitComponent? comp if (!StealthClothing.SetEnabled(uid, user, false, stealthClothing)) return; + if (!disable) + return; + // previously cloaked, disable abilities for a short time _audio.PlayPredicted(comp.RevealSound, uid, user); // all abilities check for a usedelay on the ninja diff --git a/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs b/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs index fbcb4efe484825..522f29fe420f71 100644 --- a/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs +++ b/Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs @@ -19,6 +19,7 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent(OnNinjaAttacked); + SubscribeLocalEvent(OnNinjaAttack); SubscribeLocalEvent(OnShotAttempted); } @@ -74,7 +75,19 @@ private void OnNinjaAttacked(EntityUid uid, SpaceNinjaComponent comp, AttackedEv { if (comp.Suit != null && TryComp(comp.Suit, out var stealthClothing) && stealthClothing.Enabled) { - Suit.RevealNinja(comp.Suit.Value, uid, null, stealthClothing); + Suit.RevealNinja(comp.Suit.Value, uid, true, null, stealthClothing); + } + } + + /// + /// Handle revealing ninja if cloaked when attacking. + /// Only reveals, there is no cooldown. + /// + private void OnNinjaAttack(EntityUid uid, SpaceNinjaComponent comp, ref MeleeAttackEvent args) + { + if (comp.Suit != null && TryComp(comp.Suit, out var stealthClothing) && stealthClothing.Enabled) + { + Suit.RevealNinja(comp.Suit.Value, uid, false, null, stealthClothing); } } diff --git a/Content.Shared/Weapons/Melee/Events/MeleeAttackEvent.cs b/Content.Shared/Weapons/Melee/Events/MeleeAttackEvent.cs new file mode 100644 index 00000000000000..9530b0e6552c49 --- /dev/null +++ b/Content.Shared/Weapons/Melee/Events/MeleeAttackEvent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Weapons.Melee.Events; + +/// +/// Event raised on the user after attacking with a melee weapon, regardless of whether it hit anything. +/// +[ByRefEvent] +public record struct MeleeAttackEvent(EntityUid Weapon); diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index ebe1a21e679ca3..4259706ba867b5 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -426,6 +426,9 @@ private bool AttemptAttack(EntityUid user, EntityUid weaponUid, MeleeWeaponCompo DoLungeAnimation(user, weapon.Angle, GetCoordinates(attack.Coordinates).ToMap(EntityManager, TransformSystem), weapon.Range, animation); } + var attackEv = new MeleeAttackEvent(weaponUid); + RaiseLocalEvent(user, ref attackEv); + weapon.Attacking = true; return true; } From ef233cf0fecf5c618d6b91acfeee03eb119ad501 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Oct 2023 22:56:57 -0400 Subject: [PATCH 027/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d0a8f897c5d81f..6ab83496c3f41b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Nairodian - changes: - - {message: Changed random maintenance loot spawns to be more diverse., type: Tweak} - id: 4488 - time: '2023-08-09T00:47:35.0000000+00:00' - author: Whisper changes: - {message: Temporarily disable the Wheelchair Bound trait until its vehicle code @@ -2957,3 +2952,8 @@ Entries: - {message: Buckling is now predicted., type: Fix} id: 4987 time: '2023-10-10T23:41:12.0000000+00:00' +- author: deltanedas + changes: + - {message: Ninja uncloak after attacking with melee weapons., type: Tweak} + id: 4988 + time: '2023-10-11T02:55:54.0000000+00:00' From 9bcf67753a62cfd36762c761cd3584b041bc2df7 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 10 Oct 2023 20:06:24 -0700 Subject: [PATCH 028/245] Replace string data fields with LocId where relevant (#20883) --- .../SolutionContainerVisualsComponent.cs | 39 ++++++++----------- .../SolutionContainerVisualsSystem.cs | 2 +- .../Tests/VendingMachineRestockTest.cs | 15 ++++--- .../Components/SolutionSpikerComponent.cs | 12 +++--- .../CommunicationsConsoleComponent.cs | 25 ++++++------ .../CommunicationsConsoleSystem.cs | 14 +++---- .../Forensics/Components/FiberComponent.cs | 6 +-- Content.Server/Nuke/NukeLabelComponent.cs | 4 +- Content.Server/Nuke/NukeLabelSystem.cs | 2 +- .../NukeOps/WarDeclaratorComponent.cs | 18 ++++----- Content.Server/NukeOps/WarDeclaratorSystem.cs | 4 +- .../Nutrition/Components/FoodComponent.cs | 8 ++-- .../Nutrition/Components/OpenableComponent.cs | 4 +- .../Nutrition/EntitySystems/CreamPieSystem.cs | 4 +- .../Nutrition/EntitySystems/FoodSystem.cs | 10 ++--- .../Components/CargoGiftsRuleComponent.cs | 26 ++++++------- .../StationEvents/Events/CargoGiftsRule.cs | 3 +- .../Storage/Components/PickRandomComponent.cs | 10 ++--- .../Components/TabletopGameComponent.cs | 11 +++--- .../UserInterface/ActivatableUIComponent.cs | 19 +++++---- Content.Server/Wires/WiresComponent.cs | 10 ++--- .../Bed/Sleep/SleepEmitSoundComponent.cs | 10 ++--- .../CartridgeLoader/CartridgeComponent.cs | 2 +- .../Reaction/ReactionMixerComponent.cs | 6 +-- .../PartAssemblyConstructionGraphStep.cs | 9 ++--- .../Examine/ExamineSystemShared.Group.cs | 8 ++-- .../Examine/GroupExamineComponent.cs | 34 ++++++++-------- .../Implants/Components/RattleComponent.cs | 12 +++--- Content.Shared/Materials/MaterialPrototype.cs | 21 +++++----- .../AnimalHusbandry/ReproductiveComponent.cs | 33 ++++++++-------- .../Mobs/Cyborgs/base_borg_chassis.yml | 2 +- .../Entities/Mobs/Player/admin_ghost.yml | 2 +- .../Instruments/instruments_structures.yml | 4 +- .../Entities/Objects/Specific/Mech/mechs.yml | 4 +- .../Entities/Structures/Dispensers/booze.yml | 4 +- .../Entities/Structures/Dispensers/chem.yml | 4 +- .../Entities/Structures/Dispensers/soda.yml | 4 +- .../Structures/Doors/Airlocks/access.yml | 10 ++--- .../Doors/Airlocks/base_structureairlocks.yml | 6 +-- .../Structures/Doors/Airlocks/highsec.yml | 6 +-- .../Structures/Doors/Airlocks/shuttle.yml | 2 +- .../Structures/Doors/Firelocks/firelock.yml | 4 +- .../Doors/Windoors/base_structurewindoors.yml | 4 +- .../Structures/Machines/Computers/arcades.yml | 8 ++-- .../Structures/Machines/Medical/cryo_pod.yml | 4 +- .../Structures/Machines/anomaly_equipment.yml | 12 +++--- .../Entities/Structures/Machines/bombs.yml | 4 +- .../Structures/Machines/chem_master.yml | 4 +- .../Structures/Machines/cloning_machine.yml | 4 +- .../Structures/Machines/fatextractor.yml | 4 +- .../Structures/Machines/gravity_generator.yml | 4 +- .../Entities/Structures/Machines/lathe.yml | 8 ++-- .../Machines/material_reclaimer.yml | 4 +- .../Structures/Machines/medical_scanner.yml | 4 +- .../Entities/Structures/Machines/research.yml | 2 +- .../Structures/Machines/telecomms.yml | 4 +- .../Structures/Machines/vending_machines.yml | 4 +- .../Structures/Piping/Atmospherics/unary.yml | 4 +- .../Power/Generation/PA/control_box.yml | 4 +- .../Power/Generation/portable_generator.yml | 4 +- .../Entities/Structures/Power/apc.yml | 4 +- .../Entities/Structures/Power/chargers.yml | 2 +- .../Entities/Structures/Power/smes.yml | 4 +- .../Entities/Structures/Power/substation.yml | 4 +- .../Structures/Wallmounts/air_alarm.yml | 4 +- .../Structures/Wallmounts/fire_alarm.yml | 4 +- .../Structures/Wallmounts/intercom.yml | 4 +- .../Wallmounts/surveillance_camera.yml | 2 +- .../Entities/Structures/hydro_tray.yml | 4 +- 69 files changed, 265 insertions(+), 286 deletions(-) diff --git a/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsComponent.cs b/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsComponent.cs index 5fd44fe2853f79..5b8ae937665f03 100644 --- a/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsComponent.cs +++ b/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsComponent.cs @@ -1,11 +1,4 @@ -using System; using Content.Shared.Chemistry; -using JetBrains.Annotations; -using Robust.Client.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Maths; -using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Utility; namespace Content.Client.Chemistry.Visualizers @@ -13,40 +6,40 @@ namespace Content.Client.Chemistry.Visualizers [RegisterComponent] public sealed partial class SolutionContainerVisualsComponent : Component { - [DataField("maxFillLevels")] + [DataField] public int MaxFillLevels = 0; - [DataField("fillBaseName")] + [DataField] public string? FillBaseName = null; - [DataField("layer")] - public SolutionContainerLayers FillLayer = SolutionContainerLayers.Fill; - [DataField("baseLayer")] + [DataField] + public SolutionContainerLayers Layer = SolutionContainerLayers.Fill; + [DataField] public SolutionContainerLayers BaseLayer = SolutionContainerLayers.Base; - [DataField("overlayLayer")] + [DataField] public SolutionContainerLayers OverlayLayer = SolutionContainerLayers.Overlay; - [DataField("changeColor")] + [DataField] public bool ChangeColor = true; - [DataField("emptySpriteName")] + [DataField] public string? EmptySpriteName = null; - [DataField("emptySpriteColor")] + [DataField] public Color EmptySpriteColor = Color.White; - [DataField("metamorphic")] + [DataField] public bool Metamorphic = false; - [DataField("metamorphicDefaultSprite")] + [DataField] public SpriteSpecifier? MetamorphicDefaultSprite; - [DataField("metamorphicNameFull")] - public string MetamorphicNameFull = "transformable-container-component-glass"; + [DataField] + public LocId MetamorphicNameFull = "transformable-container-component-glass"; /// /// Which solution of the SolutionContainerManagerComponent to represent. /// If not set, will work as default. /// - [DataField("solutionName")] + [DataField] public string? SolutionName; - [DataField("initialName")] + [DataField] public string InitialName = string.Empty; - [DataField("initialDescription")] + [DataField] public string InitialDescription = string.Empty; } } diff --git a/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsSystem.cs b/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsSystem.cs index 7c518b4a617112..44a24595bacc5c 100644 --- a/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsSystem.cs +++ b/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsSystem.cs @@ -41,7 +41,7 @@ protected override void OnAppearanceChange(EntityUid uid, SolutionContainerVisua if (args.Sprite == null) return; - if (!args.Sprite.LayerMapTryGet(component.FillLayer, out var fillLayer)) + if (!args.Sprite.LayerMapTryGet(component.Layer, out var fillLayer)) return; // Currently some solution methods such as overflowing will try to update appearance with a diff --git a/Content.IntegrationTests/Tests/VendingMachineRestockTest.cs b/Content.IntegrationTests/Tests/VendingMachineRestockTest.cs index 7e1de7d0c888af..49fee976317fea 100644 --- a/Content.IntegrationTests/Tests/VendingMachineRestockTest.cs +++ b/Content.IntegrationTests/Tests/VendingMachineRestockTest.cs @@ -1,18 +1,17 @@ #nullable enable using System.Collections.Generic; -using Robust.Shared.GameObjects; -using Robust.Shared.Map; -using Robust.Shared.Prototypes; -using Content.Server.Storage.Components; using Content.Server.VendingMachines; +using Content.Server.Wires; using Content.Shared.Cargo.Prototypes; using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; -using Content.Shared.VendingMachines; -using Content.Shared.Wires; -using Content.Server.Wires; using Content.Shared.Prototypes; using Content.Shared.Storage.Components; +using Content.Shared.VendingMachines; +using Content.Shared.Wires; +using Robust.Shared.GameObjects; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; namespace Content.IntegrationTests.Tests { @@ -96,7 +95,7 @@ public sealed class VendingMachineRestockTest : EntitySystem name: Test Ramen components: - type: Wires - LayoutId: Vending + layoutId: Vending - type: VendingMachine pack: TestInventory - type: Sprite diff --git a/Content.Server/Chemistry/Components/SolutionSpikerComponent.cs b/Content.Server/Chemistry/Components/SolutionSpikerComponent.cs index 63b6ebefcc60bf..1fad6c9a3e8112 100644 --- a/Content.Server/Chemistry/Components/SolutionSpikerComponent.cs +++ b/Content.Server/Chemistry/Components/SolutionSpikerComponent.cs @@ -7,24 +7,24 @@ public sealed partial class SolutionSpikerComponent : Component /// The source solution to take the reagents from in order /// to spike the other solution container. /// - [DataField("sourceSolution")] + [DataField] public string SourceSolution { get; private set; } = string.Empty; /// /// If spiking with this entity should ignore empty containers or not. /// - [DataField("ignoreEmpty")] + [DataField] public bool IgnoreEmpty { get; private set; } /// /// What should pop up when spiking with this entity. /// - [DataField("popup")] - public string Popup { get; private set; } = "spike-solution-generic"; + [DataField] + public LocId Popup { get; private set; } = "spike-solution-generic"; /// /// What should pop up when spiking fails because the container was empty. /// - [DataField("popupEmpty")] - public string PopupEmpty { get; private set; } = "spike-solution-empty-generic"; + [DataField] + public LocId PopupEmpty { get; private set; } = "spike-solution-empty-generic"; } diff --git a/Content.Server/Communications/CommunicationsConsoleComponent.cs b/Content.Server/Communications/CommunicationsConsoleComponent.cs index e7b5f20cf39258..82a4a94539775f 100644 --- a/Content.Server/Communications/CommunicationsConsoleComponent.cs +++ b/Content.Server/Communications/CommunicationsConsoleComponent.cs @@ -1,6 +1,5 @@ using Content.Server.UserInterface; using Content.Shared.Communications; -using Robust.Server.GameObjects; using Robust.Shared.Audio; namespace Content.Server.Communications @@ -21,41 +20,41 @@ public sealed partial class CommunicationsConsoleComponent : SharedCommunication /// If a Fluent ID isn't found, just uses the raw string /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("title", required: true)] - public string AnnouncementDisplayName = "comms-console-announcement-title-station"; + [DataField(required: true)] + public LocId Title = "comms-console-announcement-title-station"; /// /// Announcement color /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("color")] - public Color AnnouncementColor = Color.Gold; + [DataField] + public Color Color = Color.Gold; /// /// Time in seconds between announcement delays on a per-console basis /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("delay")] - public int DelayBetweenAnnouncements = 90; + [DataField] + public int Delay = 90; /// /// Can call or recall the shuttle /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("canShuttle")] - public bool CanCallShuttle = true; + [DataField] + public bool CanShuttle = true; /// /// Announce on all grids (for nukies) /// - [DataField("global")] - public bool AnnounceGlobal = false; + [DataField] + public bool Global = false; /// /// Announce sound file path /// - [DataField("sound")] - public SoundSpecifier AnnouncementSound = new SoundPathSpecifier("/Audio/Announcements/announce.ogg"); + [DataField] + public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Announcements/announce.ogg"); public PlayerBoundUserInterface? UserInterface => Owner.GetUIOrNull(CommunicationsConsoleUiKey.Key); } diff --git a/Content.Server/Communications/CommunicationsConsoleSystem.cs b/Content.Server/Communications/CommunicationsConsoleSystem.cs index b7ad536816a95c..e2a96335d019a3 100644 --- a/Content.Server/Communications/CommunicationsConsoleSystem.cs +++ b/Content.Server/Communications/CommunicationsConsoleSystem.cs @@ -188,7 +188,7 @@ private bool CanCallOrRecall(CommunicationsConsoleComponent comp) // Calling shuttle checks if (_roundEndSystem.ExpectedCountdownEnd is null) - return comp.CanCallShuttle; + return comp.CanShuttle; // Recalling shuttle checks var recallThreshold = _cfg.GetCVar(CCVars.EmergencyRecallTurningPoint); @@ -256,27 +256,27 @@ private void OnAnnounceMessage(EntityUid uid, CommunicationsConsoleComponent com } } - comp.AnnouncementCooldownRemaining = comp.DelayBetweenAnnouncements; + comp.AnnouncementCooldownRemaining = comp.Delay; UpdateCommsConsoleInterface(uid, comp); var ev = new CommunicationConsoleAnnouncementEvent(uid, comp, msg, message.Session.AttachedEntity); RaiseLocalEvent(ref ev); // allow admemes with vv - Loc.TryGetString(comp.AnnouncementDisplayName, out var title); - title ??= comp.AnnouncementDisplayName; + Loc.TryGetString(comp.Title, out var title); + title ??= comp.Title; msg += "\n" + Loc.GetString("comms-console-announcement-sent-by") + " " + author; - if (comp.AnnounceGlobal) + if (comp.Global) { - _chatSystem.DispatchGlobalAnnouncement(msg, title, announcementSound: comp.AnnouncementSound, colorOverride: comp.AnnouncementColor); + _chatSystem.DispatchGlobalAnnouncement(msg, title, announcementSound: comp.Sound, colorOverride: comp.Color); if (message.Session.AttachedEntity != null) _adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(message.Session.AttachedEntity.Value):player} has sent the following global announcement: {msg}"); return; } - _chatSystem.DispatchStationAnnouncement(uid, msg, title, colorOverride: comp.AnnouncementColor); + _chatSystem.DispatchStationAnnouncement(uid, msg, title, colorOverride: comp.Color); if (message.Session.AttachedEntity != null) _adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(message.Session.AttachedEntity.Value):player} has sent the following station announcement: {msg}"); diff --git a/Content.Server/Forensics/Components/FiberComponent.cs b/Content.Server/Forensics/Components/FiberComponent.cs index 766ad979b66d23..2086c958702162 100644 --- a/Content.Server/Forensics/Components/FiberComponent.cs +++ b/Content.Server/Forensics/Components/FiberComponent.cs @@ -7,10 +7,10 @@ namespace Content.Server.Forensics [RegisterComponent] public sealed partial class FiberComponent : Component { - [DataField("fiberMaterial")] - public string FiberMaterial = "fibers-synthetic"; + [DataField] + public LocId FiberMaterial = "fibers-synthetic"; - [DataField("fiberColor")] + [DataField] public string? FiberColor; } } diff --git a/Content.Server/Nuke/NukeLabelComponent.cs b/Content.Server/Nuke/NukeLabelComponent.cs index a8e4786888cfca..aea54e95dae47a 100644 --- a/Content.Server/Nuke/NukeLabelComponent.cs +++ b/Content.Server/Nuke/NukeLabelComponent.cs @@ -9,6 +9,6 @@ namespace Content.Server.Nuke; [RegisterComponent] public sealed partial class NukeLabelComponent : Component { - [DataField("prefix")] public string NukeLabel = "nuke-label-nanotrasen"; - [DataField("serialLength")] public int SerialLength = 6; + [DataField] public LocId Prefix = "nuke-label-nanotrasen"; + [DataField] public int SerialLength = 6; } diff --git a/Content.Server/Nuke/NukeLabelSystem.cs b/Content.Server/Nuke/NukeLabelSystem.cs index b9416ee27924a0..39f0b1ca770748 100644 --- a/Content.Server/Nuke/NukeLabelSystem.cs +++ b/Content.Server/Nuke/NukeLabelSystem.cs @@ -16,7 +16,7 @@ public override void Initialize() private void OnMapInit(EntityUid uid, NukeLabelComponent nuke, MapInitEvent args) { - var label = Loc.GetString(nuke.NukeLabel, ("serial", _nuke.GenerateRandomNumberString(nuke.SerialLength))); + var label = Loc.GetString(nuke.Prefix, ("serial", _nuke.GenerateRandomNumberString(nuke.SerialLength))); var meta = MetaData(uid); _metaData.SetEntityName(uid, $"{meta.EntityName} ({label})", meta); } diff --git a/Content.Server/NukeOps/WarDeclaratorComponent.cs b/Content.Server/NukeOps/WarDeclaratorComponent.cs index 1a1f9116c603aa..15279ee13cabcb 100644 --- a/Content.Server/NukeOps/WarDeclaratorComponent.cs +++ b/Content.Server/NukeOps/WarDeclaratorComponent.cs @@ -12,37 +12,37 @@ public sealed partial class WarDeclaratorComponent : Component /// Custom war declaration message. If empty, use default. /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("message")] + [DataField] public string Message; /// /// Permission to customize message text /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("allowEditingMessage")] + [DataField] public bool AllowEditingMessage = true; [ViewVariables(VVAccess.ReadWrite)] - [DataField("maxMessageLength")] + [DataField] public int MaxMessageLength = 512; /// /// War declarement text color /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("color")] - public Color DeclarementColor = Color.Red; + [DataField] + public Color Color = Color.Red; /// /// War declarement sound file path /// - [DataField("sound")] - public SoundSpecifier DeclarementSound = new SoundPathSpecifier("/Audio/Announcements/war.ogg"); + [DataField] + public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Announcements/war.ogg"); /// /// Fluent ID for the declarement title /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("title")] - public string DeclarementTitle = "comms-console-announcement-title-nukie"; + [DataField] + public LocId Title = "comms-console-announcement-title-nukie"; } diff --git a/Content.Server/NukeOps/WarDeclaratorSystem.cs b/Content.Server/NukeOps/WarDeclaratorSystem.cs index 2df2cb34832bd3..dcf6c28d4345a7 100644 --- a/Content.Server/NukeOps/WarDeclaratorSystem.cs +++ b/Content.Server/NukeOps/WarDeclaratorSystem.cs @@ -76,9 +76,9 @@ private void OnActivated(EntityUid uid, WarDeclaratorComponent component, WarDec { message = Loc.GetString("war-declarator-default-message"); } - var title = Loc.GetString(component.DeclarementTitle); + var title = Loc.GetString(component.Title); - _nukeopsRuleSystem.DeclareWar(args.Session.AttachedEntity.Value, message, title, component.DeclarementSound, component.DeclarementColor); + _nukeopsRuleSystem.DeclareWar(args.Session.AttachedEntity.Value, message, title, component.Sound, component.Color); if (args.Session.AttachedEntity != null) _adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(args.Session.AttachedEntity.Value):player} has declared war with this text: {message}"); diff --git a/Content.Server/Nutrition/Components/FoodComponent.cs b/Content.Server/Nutrition/Components/FoodComponent.cs index 0f696d36946519..af7435213215ca 100644 --- a/Content.Server/Nutrition/Components/FoodComponent.cs +++ b/Content.Server/Nutrition/Components/FoodComponent.cs @@ -1,10 +1,8 @@ using Content.Server.Body.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Nutrition.EntitySystems; using Content.Shared.FixedPoint; using Robust.Shared.Audio; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Nutrition.Components; @@ -17,8 +15,8 @@ public sealed partial class FoodComponent : Component [DataField] public SoundSpecifier UseSound = new SoundPathSpecifier("/Audio/Items/eatfood.ogg"); - [DataField("trash")] - public EntProtoId? TrashPrototype; + [DataField] + public EntProtoId? Trash; [DataField] public FixedPoint2? TransferAmount = FixedPoint2.New(5); @@ -55,7 +53,7 @@ public sealed partial class FoodComponent : Component /// The localization identifier for the eat message. Needs a "food" entity argument passed to it. /// [DataField] - public string EatMessage = "food-nom"; + public LocId EatMessage = "food-nom"; /// /// How long it takes to eat the food personally. diff --git a/Content.Server/Nutrition/Components/OpenableComponent.cs b/Content.Server/Nutrition/Components/OpenableComponent.cs index 5164ed21ec56b9..63efd5209625a8 100644 --- a/Content.Server/Nutrition/Components/OpenableComponent.cs +++ b/Content.Server/Nutrition/Components/OpenableComponent.cs @@ -28,7 +28,7 @@ public sealed partial class OpenableComponent : Component /// Text shown when examining and its open. /// [DataField, ViewVariables(VVAccess.ReadWrite)] - public string ExamineText = "drink-component-on-examine-is-opened"; + public LocId ExamineText = "drink-component-on-examine-is-opened"; /// /// The locale id for the popup shown when IsClosed is called and closed. Needs a "owner" entity argument passed to it. @@ -36,7 +36,7 @@ public sealed partial class OpenableComponent : Component /// It's still generic enough that you should change it if you make openable non-drinks, i.e. unwrap it first, peel it first. /// [DataField, ViewVariables(VVAccess.ReadWrite)] - public string ClosedPopup = "drink-component-try-use-drink-not-open"; + public LocId ClosedPopup = "drink-component-try-use-drink-not-open"; /// - Dictionary SenderKeys { get; } + Dictionary SenderKeys { get; } /// /// Tracks which entities a player was attached to while sending messages. /// - Dictionary> SenderEntities { get; } + Dictionary> SenderEntities { get; } void Initialize(); @@ -30,7 +28,7 @@ public interface IChatManager void DispatchServerMessage(ICommonSession player, string message, bool suppressLog = false); - void TrySendOOCMessage(IPlayerSession player, string message, OOCChatType type); + void TrySendOOCMessage(ICommonSession player, string message, OOCChatType type); void SendHookOOC(string sender, string message); void SendAdminAnnouncement(string message); @@ -47,8 +45,8 @@ void ChatMessageToMany(ChatChannel channel, string message, string wrappedMessag void ChatMessageToAll(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0, int? senderKey = null); - bool MessageCharacterLimit(IPlayerSession player, string message); + bool MessageCharacterLimit(ICommonSession player, string message); - void DeleteMessagesBy(IPlayerSession player); + void DeleteMessagesBy(ICommonSession player); } } diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 455d34c907f565..3315f61c2fb597 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -7,7 +7,6 @@ using Content.Server.Administration.Managers; using Content.Server.Chat.Managers; using Content.Server.GameTicking; -using Content.Server.Players; using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Shared.ActionBlocker; @@ -18,6 +17,7 @@ using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Mobs.Systems; +using Content.Shared.Players; using Content.Shared.Radio; using Robust.Server.GameObjects; using Robust.Server.Player; @@ -26,7 +26,6 @@ using Robust.Shared.Console; using Robust.Shared.Network; using Robust.Shared.Player; -using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Replays; @@ -147,7 +146,7 @@ public void TrySendInGameICMessage( InGameICChatType desiredType, bool hideChat, bool hideLog = false, IConsoleShell? shell = null, - IPlayerSession? player = null, string? nameOverride = null, + ICommonSession? player = null, string? nameOverride = null, bool checkRadioPrefix = true, bool ignoreActionBlocker = false) { @@ -172,7 +171,7 @@ public void TrySendInGameICMessage( ChatTransmitRange range, bool hideLog = false, IConsoleShell? shell = null, - IPlayerSession? player = null, + ICommonSession? player = null, string? nameOverride = null, bool checkRadioPrefix = true, bool ignoreActionBlocker = false @@ -253,7 +252,7 @@ public void TrySendInGameOOCMessage( InGameOOCChatType type, bool hideChat, IConsoleShell? shell = null, - IPlayerSession? player = null + ICommonSession? player = null ) { if (!CanSendInGame(message, shell, player)) @@ -547,7 +546,7 @@ private void SendEntityEmote( } // ReSharper disable once InconsistentNaming - private void SendLOOC(EntityUid source, IPlayerSession player, string message, bool hideChat) + private void SendLOOC(EntityUid source, ICommonSession player, string message, bool hideChat) { var name = FormattedMessage.EscapeText(Identity.Name(source, EntityManager)); @@ -571,7 +570,7 @@ private void SendLOOC(EntityUid source, IPlayerSession player, string message, b _adminLogger.Add(LogType.Chat, LogImpact.Low, $"LOOC from {player:Player}: {message}"); } - private void SendDeadChat(EntityUid source, IPlayerSession player, string message, bool hideChat) + private void SendDeadChat(EntityUid source, ICommonSession player, string message, bool hideChat) { var clients = GetDeadChatClients(); var playerName = Name(source); @@ -628,13 +627,13 @@ private MessageRangeCheckResult MessageRangeCheck(ICommonSession session, ICChat initialResult = MessageRangeCheckResult.Full; break; case ChatTransmitRange.GhostRangeLimit: - initialResult = (data.Observer && data.Range < 0 && !_adminManager.IsAdmin((IPlayerSession) session)) ? MessageRangeCheckResult.HideChat : MessageRangeCheckResult.Full; + initialResult = (data.Observer && data.Range < 0 && !_adminManager.IsAdmin(session)) ? MessageRangeCheckResult.HideChat : MessageRangeCheckResult.Full; break; case ChatTransmitRange.HideChat: initialResult = MessageRangeCheckResult.HideChat; break; case ChatTransmitRange.NoGhosts: - initialResult = (data.Observer && !_adminManager.IsAdmin((IPlayerSession) session)) ? MessageRangeCheckResult.Disallowed : MessageRangeCheckResult.Full; + initialResult = (data.Observer && !_adminManager.IsAdmin(session)) ? MessageRangeCheckResult.Disallowed : MessageRangeCheckResult.Full; break; } var insistHideChat = data.HideChatOverride ?? false; @@ -666,7 +665,7 @@ private void SendInVoiceRange(ChatChannel channel, string message, string wrappe /// /// Returns true if the given player is 'allowed' to send the given message, false otherwise. /// - private bool CanSendInGame(string message, IConsoleShell? shell = null, IPlayerSession? player = null) + private bool CanSendInGame(string message, IConsoleShell? shell = null, ICommonSession? player = null) { // Non-players don't have to worry about these restrictions. if (player == null) @@ -694,7 +693,7 @@ private string SanitizeInGameICMessage(EntityUid source, string message, out str { var newMessage = message.Trim(); newMessage = SanitizeMessageReplaceWords(newMessage); - + if (capitalize) newMessage = SanitizeMessageCapital(newMessage); if (capitalizeTheWordI) diff --git a/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs b/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs index 8cbdd82f079c51..7485c0e9016338 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs @@ -2,6 +2,7 @@ using Content.Shared.Chemistry.Reagent; using Robust.Server.Player; using Robust.Shared.Enums; +using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Server.Chemistry.EntitySystems; diff --git a/Content.Server/Chunking/ChunkingSystem.cs b/Content.Server/Chunking/ChunkingSystem.cs index 4ef44d1678d4bc..6f44c43be85a8e 100644 --- a/Content.Server/Chunking/ChunkingSystem.cs +++ b/Content.Server/Chunking/ChunkingSystem.cs @@ -1,12 +1,12 @@ using System.Linq; using Content.Shared.Decals; 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; +using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Shared.Chunking; @@ -41,7 +41,7 @@ public override void Shutdown() private void OnPvsRangeChanged(float value) => _baseViewBounds = Box2.UnitCentered.Scale(value); public Dictionary> GetChunksForSession( - IPlayerSession session, + ICommonSession session, int chunkSize, ObjectPool> indexPool, ObjectPool>> viewerPool, @@ -52,7 +52,7 @@ public Dictionary> GetChunksForSession( return chunks; } - private HashSet GetSessionViewers(IPlayerSession session) + private HashSet GetSessionViewers(ICommonSession session) { var viewers = new HashSet(); if (session.Status != SessionStatus.InGame || session.AttachedEntity is null) diff --git a/Content.Server/Commands/CommandUtils.cs b/Content.Server/Commands/CommandUtils.cs index 11adaec9a2f008..172f3324e35d8b 100644 --- a/Content.Server/Commands/CommandUtils.cs +++ b/Content.Server/Commands/CommandUtils.cs @@ -3,6 +3,7 @@ using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Network; +using Robust.Shared.Player; namespace Content.Server.Commands { @@ -16,7 +17,7 @@ public static class CommandUtils /// sending a failure to the performer if unable to. /// public static bool TryGetSessionByUsernameOrId(IConsoleShell shell, - string usernameOrId, IPlayerSession performer, [NotNullWhen(true)] out IPlayerSession? session) + string usernameOrId, ICommonSession performer, [NotNullWhen(true)] out ICommonSession? session) { var plyMgr = IoCManager.Resolve(); if (plyMgr.TryGetSessionByUsername(usernameOrId, out session)) return true; @@ -36,7 +37,7 @@ public static bool TryGetSessionByUsernameOrId(IConsoleShell shell, /// sending a failure to the performer if unable to. /// public static bool TryGetAttachedEntityByUsernameOrId(IConsoleShell shell, - string usernameOrId, IPlayerSession performer, out EntityUid attachedEntity) + string usernameOrId, ICommonSession performer, out EntityUid attachedEntity) { attachedEntity = default; if (!TryGetSessionByUsernameOrId(shell, usernameOrId, performer, out var session)) return false; @@ -67,7 +68,7 @@ public static string SubstituteEntityDetails(IConsoleShell shell, EntityUid ent, transform.LocalPosition.Y.ToString(CultureInfo.InvariantCulture)); ruleString = ruleString.Replace("$NAME", entMan.GetComponent(ent).EntityName); - if (shell.Player is IPlayerSession player) + if (shell.Player is { } player) { if (player.AttachedEntity is {Valid: true} p) { diff --git a/Content.Server/Construction/Commands/FixRotationsCommand.cs b/Content.Server/Construction/Commands/FixRotationsCommand.cs index d23fa0a31b1910..bdbfaf170d476c 100644 --- a/Content.Server/Construction/Commands/FixRotationsCommand.cs +++ b/Content.Server/Construction/Commands/FixRotationsCommand.cs @@ -3,7 +3,6 @@ using Content.Shared.Administration; using Content.Shared.Construction; using Content.Shared.Tag; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map.Components; @@ -21,7 +20,7 @@ public sealed class FixRotationsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argsOther, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; EntityUid? gridId; var xformQuery = _entManager.GetEntityQuery(); diff --git a/Content.Server/Construction/Commands/TileReplaceCommand.cs b/Content.Server/Construction/Commands/TileReplaceCommand.cs index ed1fba2424ae22..f63fd4c13e016f 100644 --- a/Content.Server/Construction/Commands/TileReplaceCommand.cs +++ b/Content.Server/Construction/Commands/TileReplaceCommand.cs @@ -1,6 +1,5 @@ using Content.Server.Administration; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -20,7 +19,7 @@ sealed class TileReplaceCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; EntityUid? gridId; string tileIdA; string tileIdB; diff --git a/Content.Server/Construction/Commands/TileWallsCommand.cs b/Content.Server/Construction/Commands/TileWallsCommand.cs index 55389e41cc7490..731d4da7f8442f 100644 --- a/Content.Server/Construction/Commands/TileWallsCommand.cs +++ b/Content.Server/Construction/Commands/TileWallsCommand.cs @@ -2,10 +2,9 @@ using Content.Shared.Administration; using Content.Shared.Maps; using Content.Shared.Tag; -using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; +using Robust.Server.GameObjects; using Robust.Shared.Map.Components; namespace Content.Server.Construction.Commands @@ -29,7 +28,7 @@ sealed class TileWallsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; EntityUid? gridId; switch (args.Length) diff --git a/Content.Server/Construction/ConstructionSystem.Initial.cs b/Content.Server/Construction/ConstructionSystem.Initial.cs index e74edb5da2406d..21978f2d0cb2a2 100644 --- a/Content.Server/Construction/ConstructionSystem.Initial.cs +++ b/Content.Server/Construction/ConstructionSystem.Initial.cs @@ -16,7 +16,7 @@ using Content.Shared.Inventory; using Content.Shared.Storage; using Robust.Shared.Containers; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Construction diff --git a/Content.Server/CrewManifest/CrewManifestSystem.cs b/Content.Server/CrewManifest/CrewManifestSystem.cs index aed0575324f5ff..4c4f17f61d4934 100644 --- a/Content.Server/CrewManifest/CrewManifestSystem.cs +++ b/Content.Server/CrewManifest/CrewManifestSystem.cs @@ -10,10 +10,9 @@ using Content.Shared.CrewManifest; using Content.Shared.GameTicking; using Content.Shared.StationRecords; -using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.CrewManifest; @@ -60,7 +59,7 @@ private void OnRoundRestart(RoundRestartCleanupEvent ev) private void OnRequestCrewManifest(RequestCrewManifestMessage message, EntitySessionEventArgs args) { - if (args.SenderSession is not IPlayerSession sessionCast + if (args.SenderSession is not { } sessionCast || !_configManager.GetCVar(CCVars.CrewManifestWithoutEntity)) { return; @@ -93,12 +92,12 @@ private void OnRecordRemoved(RecordRemovedEvent ev) private void OnBoundUiClose(EntityUid uid, CrewManifestViewerComponent component, BoundUIClosedEvent ev) { var owningStation = _stationSystem.GetOwningStation(uid); - if (owningStation == null || ev.Session is not IPlayerSession sessionCast) + if (owningStation == null || ev.Session is not { } session) { return; } - CloseEui(owningStation.Value, sessionCast, uid); + CloseEui(owningStation.Value, session, uid); } /// @@ -126,7 +125,7 @@ private void UpdateEuis(EntityUid station) private void OpenEuiFromBui(EntityUid uid, CrewManifestViewerComponent component, CrewManifestOpenUiMessage msg) { var owningStation = _stationSystem.GetOwningStation(uid); - if (owningStation == null || msg.Session is not IPlayerSession sessionCast) + if (owningStation == null || msg.Session is not { } session) { return; } @@ -136,7 +135,7 @@ private void OpenEuiFromBui(EntityUid uid, CrewManifestViewerComponent component return; } - OpenEui(owningStation.Value, sessionCast, uid); + OpenEui(owningStation.Value, session, uid); } /// @@ -145,7 +144,7 @@ private void OpenEuiFromBui(EntityUid uid, CrewManifestViewerComponent component /// Station that we're displaying the crew manifest for. /// The player's session. /// If this EUI should be 'owned' by an entity. - public void OpenEui(EntityUid station, IPlayerSession session, EntityUid? owner = null) + public void OpenEui(EntityUid station, ICommonSession session, EntityUid? owner = null) { if (!HasComp(station)) { @@ -252,7 +251,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (shell.Player == null || shell.Player is not IPlayerSession session) + if (shell.Player == null || shell.Player is not { } session) { shell.WriteLine("You must run this from a client."); return; diff --git a/Content.Server/Damage/Commands/GodModeCommand.cs b/Content.Server/Damage/Commands/GodModeCommand.cs index 92a0e53f0f0b07..866737f17a9e9c 100644 --- a/Content.Server/Damage/Commands/GodModeCommand.cs +++ b/Content.Server/Damage/Commands/GodModeCommand.cs @@ -1,8 +1,6 @@ using Content.Server.Administration; -using Content.Server.Damage.Systems; using Content.Shared.Administration; using Content.Shared.Damage.Systems; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Damage.Commands @@ -18,7 +16,7 @@ public sealed class GodModeCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; EntityUid entity; switch (args.Length) diff --git a/Content.Server/Damage/ForceSay/DamageForceSaySystem.cs b/Content.Server/Damage/ForceSay/DamageForceSaySystem.cs index 3d3346403ad7e4..457fab4bb28414 100644 --- a/Content.Server/Damage/ForceSay/DamageForceSaySystem.cs +++ b/Content.Server/Damage/ForceSay/DamageForceSaySystem.cs @@ -6,7 +6,6 @@ using Content.Shared.Stunnable; using Robust.Server.GameObjects; using Robust.Server.Player; -using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; diff --git a/Content.Server/Database/UserDbDataManager.cs b/Content.Server/Database/UserDbDataManager.cs index f2c506240bfb0e..f8b1611fd57548 100644 --- a/Content.Server/Database/UserDbDataManager.cs +++ b/Content.Server/Database/UserDbDataManager.cs @@ -2,8 +2,8 @@ using System.Threading.Tasks; using Content.Server.Players.PlayTimeTracking; using Content.Server.Preferences.Managers; -using Robust.Server.Player; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.Database; @@ -25,7 +25,7 @@ public sealed class UserDbDataManager // TODO: Ideally connected/disconnected would be subscribed to IPlayerManager directly, // but this runs into ordering issues with game ticker. - public void ClientConnected(IPlayerSession session) + public void ClientConnected(ICommonSession session) { DebugTools.Assert(!_users.ContainsKey(session.UserId), "We should not have any cached data on client connect."); @@ -36,7 +36,7 @@ public void ClientConnected(IPlayerSession session) _users.Add(session.UserId, data); } - public void ClientDisconnected(IPlayerSession session) + public void ClientDisconnected(ICommonSession session) { _users.Remove(session.UserId, out var data); if (data == null) @@ -49,24 +49,24 @@ public void ClientDisconnected(IPlayerSession session) _playTimeTracking.ClientDisconnected(session); } - private async Task Load(IPlayerSession session, CancellationToken cancel) + private async Task Load(ICommonSession session, CancellationToken cancel) { await Task.WhenAll( _prefs.LoadData(session, cancel), _playTimeTracking.LoadData(session, cancel)); } - public Task WaitLoadComplete(IPlayerSession session) + public Task WaitLoadComplete(ICommonSession session) { return _users[session.UserId].Task; } - public bool IsLoadComplete(IPlayerSession session) + public bool IsLoadComplete(ICommonSession session) { return GetLoadTask(session).IsCompleted; } - public Task GetLoadTask(IPlayerSession session) + public Task GetLoadTask(ICommonSession session) { return _users[session.UserId].Task; } diff --git a/Content.Server/Decals/DecalSystem.cs b/Content.Server/Decals/DecalSystem.cs index ed281e05ba79be..ce2e0711e74a1a 100644 --- a/Content.Server/Decals/DecalSystem.cs +++ b/Content.Server/Decals/DecalSystem.cs @@ -16,6 +16,7 @@ using Robust.Shared.Enums; using Robust.Shared.Map; using Robust.Shared.Map.Components; +using Robust.Shared.Player; using Robust.Shared.Threading; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -36,7 +37,7 @@ public sealed class DecalSystem : SharedDecalSystem [Dependency] private readonly MapSystem _mapSystem = default!; private readonly Dictionary> _dirtyChunks = new(); - private readonly Dictionary>> _previousSentChunks = new(); + private readonly Dictionary>> _previousSentChunks = new(); private static readonly Vector2 _boundsMinExpansion = new(0.01f, 0.01f); private static readonly Vector2 _boundsMaxExpansion = new(1.01f, 1.01f); @@ -197,7 +198,7 @@ private void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs e) private void OnDecalPlacementRequest(RequestDecalPlacementEvent ev, EntitySessionEventArgs eventArgs) { - if (eventArgs.SenderSession is not IPlayerSession session) + if (eventArgs.SenderSession is not { } session) return; // bad @@ -226,7 +227,7 @@ private void OnDecalPlacementRequest(RequestDecalPlacementEvent ev, EntitySessio private void OnDecalRemovalRequest(RequestDecalRemovalEvent ev, EntitySessionEventArgs eventArgs) { - if (eventArgs.SenderSession is not IPlayerSession session) + if (eventArgs.SenderSession is not { } session) return; // bad @@ -427,7 +428,7 @@ public override void Update(float frameTime) if (PvsEnabled) { - var players = _playerManager.ServerSessions.Where(x => x.Status == SessionStatus.InGame).ToArray(); + var players = _playerManager.Sessions.Where(x => x.Status == SessionStatus.InGame).ToArray(); var opts = new ParallelOptions { MaxDegreeOfParallelism = _parMan.ParallelProcessCount }; Parallel.ForEach(players, opts, UpdatePlayer); } @@ -435,7 +436,7 @@ public override void Update(float frameTime) _dirtyChunks.Clear(); } - public void UpdatePlayer(IPlayerSession player) + public void UpdatePlayer(ICommonSession player) { var chunksInRange = _chunking.GetChunksForSession(player, ChunkSize, _chunkIndexPool, _chunkViewerPool); var staleChunks = _chunkViewerPool.Get(); @@ -530,7 +531,7 @@ private void ReturnToPool(Dictionary> chunks) } private void SendChunkUpdates( - IPlayerSession session, + ICommonSession session, Dictionary> updatedChunks, Dictionary> staleChunks) { diff --git a/Content.Server/Disposal/TubeConnectionsCommand.cs b/Content.Server/Disposal/TubeConnectionsCommand.cs index 7895dcbca66572..55e64659379ded 100644 --- a/Content.Server/Disposal/TubeConnectionsCommand.cs +++ b/Content.Server/Disposal/TubeConnectionsCommand.cs @@ -2,7 +2,6 @@ using Content.Server.Disposal.Tube; using Content.Server.Disposal.Tube.Components; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Disposal @@ -18,7 +17,7 @@ public sealed class TubeConnectionsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player?.AttachedEntity == null) { shell.WriteLine(Loc.GetString("shell-only-players-can-run-this-command")); diff --git a/Content.Server/EUI/BaseEui.cs b/Content.Server/EUI/BaseEui.cs index 4a41ad40a5501c..70cbfc377503da 100644 --- a/Content.Server/EUI/BaseEui.cs +++ b/Content.Server/EUI/BaseEui.cs @@ -1,6 +1,6 @@ using Content.Shared.Eui; using Robust.Shared.Network; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.EUI { diff --git a/Content.Server/EUI/EuiManager.cs b/Content.Server/EUI/EuiManager.cs index 4d997195252fe0..fe8e486b680290 100644 --- a/Content.Server/EUI/EuiManager.cs +++ b/Content.Server/EUI/EuiManager.cs @@ -2,7 +2,7 @@ using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Network; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.EUI diff --git a/Content.Server/EntityList/SpawnEntityListCommand.cs b/Content.Server/EntityList/SpawnEntityListCommand.cs index 0891bbd12acb21..027d25dc2c22c0 100644 --- a/Content.Server/EntityList/SpawnEntityListCommand.cs +++ b/Content.Server/EntityList/SpawnEntityListCommand.cs @@ -1,7 +1,6 @@ using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.EntityList; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -22,7 +21,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError("You must be a player to run this command."); return; diff --git a/Content.Server/Examine/ExamineSystem.cs b/Content.Server/Examine/ExamineSystem.cs index 98aa806885d06d..3447810896f7ed 100644 --- a/Content.Server/Examine/ExamineSystem.cs +++ b/Content.Server/Examine/ExamineSystem.cs @@ -4,7 +4,6 @@ using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Utility; namespace Content.Server.Examine @@ -46,7 +45,7 @@ public override void SendExamineTooltip(EntityUid player, EntityUid target, Form private void ExamineInfoRequest(ExamineSystemMessages.RequestExamineInfoMessage request, EntitySessionEventArgs eventArgs) { - var player = (IPlayerSession) eventArgs.SenderSession; + var player = eventArgs.SenderSession; var session = eventArgs.SenderSession; var channel = player.ConnectedClient; var entity = GetEntity(request.NetEntity); diff --git a/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs b/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs index 59f0a13695eb92..c17eea684db34f 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs @@ -1,9 +1,9 @@ using System.Numerics; using Content.Shared.Fluids; using Content.Shared.Fluids.Components; -using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Map.Components; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Fluids.EntitySystems; @@ -14,10 +14,10 @@ public sealed class PuddleDebugDebugOverlaySystem : SharedPuddleDebugOverlaySyst [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly PuddleSystem _puddle = default!; - private readonly HashSet _playerObservers = new(); + private readonly HashSet _playerObservers = new(); private List> _grids = new(); - public bool ToggleObserver(IPlayerSession observer) + public bool ToggleObserver(ICommonSession observer) { NextTick ??= _timing.CurTime + Cooldown; @@ -31,7 +31,7 @@ public bool ToggleObserver(IPlayerSession observer) return true; } - private void RemoveObserver(IPlayerSession observer) + private void RemoveObserver(ICommonSession observer) { if (!_playerObservers.Remove(observer)) { diff --git a/Content.Server/Fluids/ShowFluidsCommand.cs b/Content.Server/Fluids/ShowFluidsCommand.cs index f122eadea790fe..71ac273a45b912 100644 --- a/Content.Server/Fluids/ShowFluidsCommand.cs +++ b/Content.Server/Fluids/ShowFluidsCommand.cs @@ -1,7 +1,6 @@ using Content.Server.Administration; using Content.Server.Fluids.EntitySystems; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Fluids; @@ -15,7 +14,7 @@ public sealed class ShowFluidsCommand : IConsoleCommand public string Help => $"Usage: {Command}"; public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("You must be a player to use this command."); diff --git a/Content.Server/GameTicking/Commands/JoinGameCommand.cs b/Content.Server/GameTicking/Commands/JoinGameCommand.cs index 366e6c4e772bcd..3276b91200324d 100644 --- a/Content.Server/GameTicking/Commands/JoinGameCommand.cs +++ b/Content.Server/GameTicking/Commands/JoinGameCommand.cs @@ -2,7 +2,6 @@ using Content.Shared.Administration; using Content.Shared.GameTicking; using Content.Shared.Roles; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -30,7 +29,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { diff --git a/Content.Server/GameTicking/Commands/ObserveCommand.cs b/Content.Server/GameTicking/Commands/ObserveCommand.cs index d608dda9c1756b..747e54e28becac 100644 --- a/Content.Server/GameTicking/Commands/ObserveCommand.cs +++ b/Content.Server/GameTicking/Commands/ObserveCommand.cs @@ -1,6 +1,5 @@ using Content.Shared.Administration; using Content.Shared.GameTicking; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands @@ -14,7 +13,7 @@ sealed class ObserveCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { return; } diff --git a/Content.Server/GameTicking/Commands/RespawnCommand.cs b/Content.Server/GameTicking/Commands/RespawnCommand.cs index 057572297f9136..4f101d0939ad65 100644 --- a/Content.Server/GameTicking/Commands/RespawnCommand.cs +++ b/Content.Server/GameTicking/Commands/RespawnCommand.cs @@ -14,7 +14,7 @@ sealed class RespawnCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (args.Length > 1) { shell.WriteLine("Must provide <= 1 argument."); diff --git a/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs b/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs index e68c4c5fa7fe3b..df418c27ee1af1 100644 --- a/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs +++ b/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs @@ -1,5 +1,4 @@ using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands @@ -13,7 +12,7 @@ sealed class ToggleReadyCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (args.Length != 1) { shell.WriteError(Loc.GetString("shell-wrong-arguments-number")); diff --git a/Content.Server/GameTicking/GameTicker.GamePreset.cs b/Content.Server/GameTicking/GameTicker.GamePreset.cs index a5e6d7a60566c3..2d7539bd0f119f 100644 --- a/Content.Server/GameTicking/GameTicker.GamePreset.cs +++ b/Content.Server/GameTicking/GameTicker.GamePreset.cs @@ -11,7 +11,7 @@ using Content.Shared.Mind; using Content.Shared.Mobs.Components; using JetBrains.Annotations; -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.GameTicking { @@ -29,7 +29,7 @@ public sealed partial class GameTicker /// public GamePresetPrototype? CurrentPreset { get; private set; } - private bool StartPreset(IPlayerSession[] origReadyPlayers, bool force) + private bool StartPreset(ICommonSession[] origReadyPlayers, bool force) { var startAttempt = new RoundStartAttemptEvent(origReadyPlayers, force); RaiseLocalEvent(startAttempt); @@ -214,7 +214,7 @@ public bool OnGhostAttempt(EntityUid mindId, bool canReturnGlobal, bool viaComma { if (mind.Session != null) // Logging is suppressed to prevent spam from ghost attempts caused by movement attempts { - _chatManager.DispatchServerMessage((IPlayerSession) mind.Session, Loc.GetString("comp-mind-ghosting-prevented"), + _chatManager.DispatchServerMessage(mind.Session, Loc.GetString("comp-mind-ghosting-prevented"), true); } diff --git a/Content.Server/GameTicking/GameTicker.Lobby.cs b/Content.Server/GameTicking/GameTicker.Lobby.cs index b7b6a29a5a7b31..1943a82617ade2 100644 --- a/Content.Server/GameTicking/GameTicker.Lobby.cs +++ b/Content.Server/GameTicking/GameTicker.Lobby.cs @@ -1,10 +1,8 @@ using System.Linq; using Content.Shared.GameTicking; using Content.Server.Station.Components; -using Robust.Server.Player; using Robust.Shared.Network; using Robust.Shared.Player; -using Robust.Shared.Players; using System.Text; namespace Content.Server.GameTicking @@ -79,7 +77,7 @@ private string GetInfoText() ("roundId", RoundId), ("playerCount", playerCount), ("readyCount", readyCount), ("mapName", stationNames.ToString()),("gmTitle", gmTitle),("desc", desc)); } - private TickerLobbyStatusEvent GetStatusMsg(IPlayerSession session) + private TickerLobbyStatusEvent GetStatusMsg(ICommonSession session) { _playerGameStatuses.TryGetValue(session.UserId, out var status); return new TickerLobbyStatusEvent(RunLevel != GameRunLevel.PreRoundLobby, LobbySong, LobbyBackground,status == PlayerGameStatus.ReadyToPlay, _roundStartTime, RoundPreloadTime, _roundStartTimeSpan, Paused); @@ -87,7 +85,7 @@ private TickerLobbyStatusEvent GetStatusMsg(IPlayerSession session) private void SendStatusToAll() { - foreach (var player in _playerManager.ServerSessions) + foreach (var player in _playerManager.Sessions) { RaiseNetworkEvent(GetStatusMsg(player), player.ConnectedClient); } @@ -148,7 +146,7 @@ public void ToggleReadyAll(bool ready) } } - public void ToggleReady(IPlayerSession player, bool ready) + public void ToggleReady(ICommonSession player, bool ready) { if (!_playerGameStatuses.ContainsKey(player.UserId)) return; diff --git a/Content.Server/GameTicking/GameTicker.Player.cs b/Content.Server/GameTicking/GameTicker.Player.cs index 3aef1bbe78525a..334af3f4fd2f3d 100644 --- a/Content.Server/GameTicking/GameTicker.Player.cs +++ b/Content.Server/GameTicking/GameTicker.Player.cs @@ -1,5 +1,4 @@ using Content.Server.Database; -using Content.Server.Players; using Content.Shared.GameTicking; using Content.Shared.GameWindow; using Content.Shared.Players; @@ -7,6 +6,7 @@ using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared.Enums; +using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -49,14 +49,14 @@ private async void PlayerStatusChanged(object? sender, SessionStatusEventArgs ar // Always make sure the client has player data. if (session.Data.ContentDataUncast == null) { - var data = new PlayerData(session.UserId, args.Session.Name); + var data = new ContentPlayerData(session.UserId, args.Session.Name); data.Mind = mindId; session.Data.ContentDataUncast = data; } // Make the player actually join the game. // timer time must be > tick length - Timer.Spawn(0, args.Session.JoinGame); + Timer.Spawn(0, () => _playerManager.JoinGame(args.Session)); var record = await _dbManager.GetPlayerRecordByUserId(args.Session.UserId); var firstConnection = record != null && @@ -100,8 +100,7 @@ private async void PlayerStatusChanged(object? sender, SessionStatusEventArgs ar } else { - // Simply re-attach to existing entity. - session.AttachToEntity(mind.CurrentEntity); + _playerManager.SetAttachedEntity(session, mind.CurrentEntity); PlayerJoinGame(session); } @@ -146,12 +145,12 @@ async void AddPlayerToDb(Guid id) } } - private HumanoidCharacterProfile GetPlayerProfile(IPlayerSession p) + private HumanoidCharacterProfile GetPlayerProfile(ICommonSession p) { return (HumanoidCharacterProfile) _prefsManager.GetPreferences(p.UserId).SelectedCharacter; } - public void PlayerJoinGame(IPlayerSession session, bool silent = false) + public void PlayerJoinGame(ICommonSession session, bool silent = false) { if (!silent) _chatManager.DispatchServerMessage(session, Loc.GetString("game-ticker-player-join-game-message")); @@ -162,7 +161,7 @@ public void PlayerJoinGame(IPlayerSession session, bool silent = false) RaiseNetworkEvent(new TickerJoinGameEvent(), session.ConnectedClient); } - private void PlayerJoinLobby(IPlayerSession session) + private void PlayerJoinLobby(ICommonSession session) { _playerGameStatuses[session.UserId] = LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay; _db.AddRoundPlayers(RoundId, session.UserId); @@ -182,9 +181,9 @@ private void ReqWindowAttentionAll() public sealed class PlayerJoinedLobbyEvent : EntityEventArgs { - public readonly IPlayerSession PlayerSession; + public readonly ICommonSession PlayerSession; - public PlayerJoinedLobbyEvent(IPlayerSession playerSession) + public PlayerJoinedLobbyEvent(ICommonSession playerSession) { PlayerSession = playerSession; } diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index df2aafa90119fc..85f833bd1c3264 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -12,7 +12,6 @@ using JetBrains.Annotations; using Prometheus; using Robust.Server.Maps; -using Robust.Server.Player; using Robust.Shared.Asynchronous; using Robust.Shared.Audio; using Robust.Shared.Map; @@ -205,7 +204,7 @@ public void StartRound(bool force = false) var startingEvent = new RoundStartingEvent(RoundId); RaiseLocalEvent(startingEvent); - var readyPlayers = new List(); + var readyPlayers = new List(); var readyPlayerProfiles = new Dictionary(); foreach (var (userId, status) in _playerGameStatuses) @@ -344,7 +343,7 @@ public void ShowRoundEndScoreboard(string text = "") { connected = true; } - PlayerData? contentPlayerData = null; + ContentPlayerData? contentPlayerData = null; if (userId != null && _playerManager.TryGetPlayerData(userId.Value, out var playerData)) { contentPlayerData = playerData.ContentData(); @@ -360,8 +359,7 @@ public void ShowRoundEndScoreboard(string text = "") else if (mind.CurrentEntity != null && TryName(mind.CurrentEntity.Value, out var icName)) playerIcName = icName; - var entity = mind.OriginalOwnedEntity; - if (Exists(entity)) + if (TryGetEntity(mind.OriginalOwnedEntity, out var entity)) _pvsOverride.AddGlobalOverride(entity.Value, recursive: true); var roles = _roles.MindGetAllRoles(mindId); @@ -494,7 +492,7 @@ private async void SendRoundStartingDiscordMessage() private void ResettingCleanup() { // Move everybody currently in the server to lobby. - foreach (var player in _playerManager.ServerSessions) + foreach (var player in _playerManager.Sessions) { PlayerJoinLobby(player); } @@ -542,7 +540,7 @@ private void ResettingCleanup() DisallowLateJoin = false; _playerGameStatuses.Clear(); - foreach (var session in _playerManager.ServerSessions) + foreach (var session in _playerManager.Sessions) { _playerGameStatuses[session.UserId] = LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay; } @@ -736,10 +734,10 @@ public void Disallow() /// public sealed class RoundStartAttemptEvent : CancellableEntityEventArgs { - public IPlayerSession[] Players { get; } + public ICommonSession[] Players { get; } public bool Forced { get; } - public RoundStartAttemptEvent(IPlayerSession[] players, bool forced) + public RoundStartAttemptEvent(ICommonSession[] players, bool forced) { Players = players; Forced = forced; @@ -758,11 +756,11 @@ public sealed class RulePlayerSpawningEvent /// If you want to handle a specific player being spawned, remove it from this list and do what you need. /// /// If you spawn a player by yourself from this event, don't forget to call on them. - public List PlayerPool { get; } + public List PlayerPool { get; } public IReadOnlyDictionary Profiles { get; } public bool Forced { get; } - public RulePlayerSpawningEvent(List playerPool, IReadOnlyDictionary profiles, bool forced) + public RulePlayerSpawningEvent(List playerPool, IReadOnlyDictionary profiles, bool forced) { PlayerPool = playerPool; Profiles = profiles; @@ -776,11 +774,11 @@ public RulePlayerSpawningEvent(List playerPool, IReadOnlyDiction /// public sealed class RulePlayerJobsAssignedEvent { - public IPlayerSession[] Players { get; } + public ICommonSession[] Players { get; } public IReadOnlyDictionary Profiles { get; } public bool Forced { get; } - public RulePlayerJobsAssignedEvent(IPlayerSession[] players, IReadOnlyDictionary profiles, bool forced) + public RulePlayerJobsAssignedEvent(ICommonSession[] players, IReadOnlyDictionary profiles, bool forced) { Players = players; Profiles = profiles; diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index 0c59f93bb021fa..c2bf523657ca35 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -3,20 +3,20 @@ using System.Numerics; using Content.Server.Administration.Managers; using Content.Server.Ghost; -using Content.Server.Players; using Content.Server.Spawners.Components; using Content.Server.Speech.Components; using Content.Server.Station.Components; using Content.Shared.CCVar; using Content.Shared.Database; +using Content.Shared.Players; using Content.Shared.Preferences; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; using JetBrains.Annotations; -using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -29,7 +29,7 @@ public sealed partial class GameTicker [Dependency] private readonly SharedJobSystem _jobs = default!; [ValidatePrototypeId] - private const string ObserverPrototypeName = "MobObserver"; + public const string ObserverPrototypeName = "MobObserver"; /// /// How many players have joined the round through normal methods. @@ -52,7 +52,7 @@ private List GetSpawnableStations() return spawnableStations; } - private void SpawnPlayers(List readyPlayers, Dictionary profiles, bool force) + private void SpawnPlayers(List readyPlayers, Dictionary profiles, bool force) { // Allow game rules to spawn players by themselves if needed. (For example, nuke ops or wizard) RaiseLocalEvent(new RulePlayerSpawningEvent(readyPlayers, profiles, force)); @@ -116,7 +116,7 @@ private void SpawnPlayers(List readyPlayers, Dictionary _playerManager.GetSessionByUserId(x)).ToArray(), profiles, force)); } - private void SpawnPlayer(IPlayerSession player, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false) + private void SpawnPlayer(ICommonSession player, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false) { var character = GetPlayerProfile(player); @@ -129,7 +129,7 @@ private void SpawnPlayer(IPlayerSession player, EntityUid station, string? jobId SpawnPlayer(player, character, station, jobId, lateJoin, silent); } - private void SpawnPlayer(IPlayerSession player, HumanoidCharacterProfile character, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false) + private void SpawnPlayer(ICommonSession player, HumanoidCharacterProfile character, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false) { // Can't spawn players with a dummy ticker! if (DummyTicker) @@ -271,7 +271,7 @@ private void SpawnPlayer(IPlayerSession player, HumanoidCharacterProfile charact RaiseLocalEvent(mob, aev, true); } - public void Respawn(IPlayerSession player) + public void Respawn(ICommonSession player) { _mind.WipeMind(player); _adminLogger.Add(LogType.Respawn, LogImpact.Medium, $"Player {player} was respawned."); @@ -289,7 +289,7 @@ public void Respawn(IPlayerSession player) /// The station they're spawning on /// An optional job for them to spawn as /// Whether or not the player should be greeted upon joining - public void MakeJoinGame(IPlayerSession player, EntityUid station, string? jobId = null, bool silent = false) + public void MakeJoinGame(ICommonSession player, EntityUid station, string? jobId = null, bool silent = false) { if (!_playerGameStatuses.ContainsKey(player.UserId)) return; @@ -303,7 +303,7 @@ public void MakeJoinGame(IPlayerSession player, EntityUid station, string? jobId /// /// Causes the given player to join the current game as observer ghost. See also /// - public void JoinAsObserver(IPlayerSession player) + public void JoinAsObserver(ICommonSession player) { // Can't spawn players with a dummy ticker! if (DummyTicker) @@ -317,7 +317,7 @@ public void JoinAsObserver(IPlayerSession player) /// Spawns an observer ghost and attaches the given player to it. If the player does not yet have a mind, the /// player is given a new mind with the observer role. Otherwise, the current mind is transferred to the ghost. /// - public void SpawnObserver(IPlayerSession player) + public void SpawnObserver(ICommonSession player) { if (DummyTicker) return; @@ -430,13 +430,13 @@ public EntityCoordinates GetObserverSpawnPoint() [PublicAPI] public sealed class PlayerBeforeSpawnEvent : HandledEntityEventArgs { - public IPlayerSession Player { get; } + public ICommonSession Player { get; } public HumanoidCharacterProfile Profile { get; } public string? JobId { get; } public bool LateJoin { get; } public EntityUid Station { get; } - public PlayerBeforeSpawnEvent(IPlayerSession player, HumanoidCharacterProfile profile, string? jobId, bool lateJoin, EntityUid station) + public PlayerBeforeSpawnEvent(ICommonSession player, HumanoidCharacterProfile profile, string? jobId, bool lateJoin, EntityUid station) { Player = player; Profile = profile; @@ -455,7 +455,7 @@ public PlayerBeforeSpawnEvent(IPlayerSession player, HumanoidCharacterProfile pr public sealed class PlayerSpawnCompleteEvent : EntityEventArgs { public EntityUid Mob { get; } - public IPlayerSession Player { get; } + public ICommonSession Player { get; } public string? JobId { get; } public bool LateJoin { get; } public EntityUid Station { get; } @@ -464,7 +464,7 @@ public sealed class PlayerSpawnCompleteEvent : EntityEventArgs // Ex. If this is the 27th person to join, this will be 27. public int JoinOrder { get; } - public PlayerSpawnCompleteEvent(EntityUid mob, IPlayerSession player, string? jobId, bool lateJoin, int joinOrder, EntityUid station, HumanoidCharacterProfile profile) + public PlayerSpawnCompleteEvent(EntityUid mob, ICommonSession player, string? jobId, bool lateJoin, int joinOrder, EntityUid station, HumanoidCharacterProfile profile) { Mob = mob; Player = player; diff --git a/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs index 883abef52fa7a6..7af87179d65495 100644 --- a/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs @@ -1,7 +1,7 @@ using Content.Shared.Preferences; using Content.Shared.Roles; -using Robust.Server.Player; using Robust.Shared.Audio; +using Robust.Shared.Player; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.GameTicking.Rules.Components; @@ -26,7 +26,7 @@ public enum SelectionState public SelectionState SelectionStatus = SelectionState.WaitingForSpawn; public TimeSpan AnnounceAt = TimeSpan.Zero; - public Dictionary StartCandidates = new(); + public Dictionary StartCandidates = new(); /// /// Path to antagonist alert sound. diff --git a/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs b/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs index c2e91ba4a5d01d..b775b7af5640e1 100644 --- a/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Chat.Managers; using Content.Server.GameTicking.Rules.Components; using Robust.Server.Player; +using Robust.Shared.Player; using Timer = Robust.Shared.Timing.Timer; namespace Content.Server.GameTicking.Rules; diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs index 13d4ed71c8e0b3..4d3eee81e2af90 100644 --- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs @@ -602,11 +602,11 @@ private void OnPlayersSpawning(RulePlayerSpawningEvent ev) var maxOperatives = nukeops.MaxOps; // Dear lord what is happening HERE. - var everyone = new List(ev.PlayerPool); - var prefList = new List(); - var medPrefList = new List(); - var cmdrPrefList = new List(); - var operatives = new List(); + var everyone = new List(ev.PlayerPool); + var prefList = new List(); + var medPrefList = new List(); + var cmdrPrefList = new List(); + var operatives = new List(); // The LINQ expression ReSharper keeps suggesting is completely unintelligible so I'm disabling it // ReSharper disable once ForeachCanBeConvertedToQueryUsingAnotherGetEnumerator @@ -637,7 +637,7 @@ private void OnPlayersSpawning(RulePlayerSpawningEvent ev) for (var i = 0; i < numNukies; i++) { // TODO: Please fix this if you touch it. - IPlayerSession nukeOp; + ICommonSession nukeOp; // Only one commander, so we do it at the start if (i == 0) { @@ -908,7 +908,7 @@ private void SetupOperativeEntity(EntityUid mob, string name, string gear, Human _npcFaction.AddFaction(mob, "Syndicate"); } - private void SpawnOperatives(int spawnCount, List sessions, bool addSpawnPoints, NukeopsRuleComponent component) + private void SpawnOperatives(int spawnCount, List sessions, bool addSpawnPoints, NukeopsRuleComponent component) { if (component.NukieOutpost == null) return; @@ -987,10 +987,10 @@ private void SpawnOperativesForGhostRoles(EntityUid uid, NukeopsRuleComponent? c var playersPerOperative = component.PlayersPerOperative; var maxOperatives = component.MaxOps; - var playerPool = _playerManager.ServerSessions.ToList(); + var playerPool = _playerManager.Sessions.ToList(); var numNukies = MathHelper.Clamp(playerPool.Count / playersPerOperative, 1, maxOperatives); - var operatives = new List(); + var operatives = new List(); SpawnOperatives(numNukies, operatives, true, component); } diff --git a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs index b223161c10e276..0785d81d09b7bc 100644 --- a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs @@ -15,10 +15,10 @@ using Content.Shared.Roles; using Robust.Server.GameObjects; using Robust.Server.Maps; -using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -141,7 +141,7 @@ private void OnPlayerSpawningEvent(RulePlayerSpawningEvent ev) (int) Math.Min( Math.Floor((double) ev.PlayerPool.Count / _cfg.GetCVar(CCVars.PiratesPlayersPerOp)), _cfg.GetCVar(CCVars.PiratesMaxOps))); - var ops = new IPlayerSession[numOps]; + var ops = new ICommonSession[numOps]; for (var i = 0; i < numOps; i++) { ops[i] = _random.PickAndTake(ev.PlayerPool); diff --git a/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs b/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs index a286808623778a..738883fff38fff 100644 --- a/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Interaction.Events; using Content.Shared.Mind; using Content.Shared.Mobs; +using Content.Shared.Players; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Network; diff --git a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs index 01317dbfc11b24..ef949d09fc98d5 100644 --- a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs @@ -17,9 +17,8 @@ using Content.Shared.Preferences; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; -using Robust.Server.Player; using Robust.Shared.Configuration; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -151,9 +150,9 @@ private void OnPlayersSpawned(RulePlayerJobsAssignedEvent ev) } } - private List FindPotentialTraitors(in Dictionary candidates, TraitorRuleComponent component) + private List FindPotentialTraitors(in Dictionary candidates, TraitorRuleComponent component) { - var list = new List(); + var list = new List(); var pendingQuery = GetEntityQuery(); foreach (var player in candidates.Keys) @@ -171,7 +170,7 @@ private List FindPotentialTraitors(in Dictionary(); + var prefList = new List(); foreach (var player in list) { @@ -189,9 +188,9 @@ private List FindPotentialTraitors(in Dictionary PickTraitors(int traitorCount, List prefList) + private List PickTraitors(int traitorCount, List prefList) { - var results = new List(traitorCount); + var results = new List(traitorCount); if (prefList.Count == 0) { Log.Info("Insufficient ready players to fill up with traitors, stopping the selection."); diff --git a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs index 82ae4b8fa660e4..a4febc385c1dae 100644 --- a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs @@ -23,7 +23,7 @@ using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Configuration; -using Robust.Shared.Prototypes; +using Robust.Shared.Player; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -264,9 +264,9 @@ private void InfectInitialPlayers(ZombieRuleComponent component) return; component.InfectedChosen = true; - var allPlayers = _playerManager.ServerSessions.ToList(); - var playerList = new List(); - var prefList = new List(); + var allPlayers = _playerManager.Sessions.ToList(); + var playerList = new List(); + var prefList = new List(); foreach (var player in allPlayers) { if (player.AttachedEntity == null || !HasComp(player.AttachedEntity) || HasComp(player.AttachedEntity)) @@ -288,7 +288,7 @@ private void InfectInitialPlayers(ZombieRuleComponent component) var totalInfected = 0; while (totalInfected < numInfected) { - IPlayerSession zombie; + ICommonSession zombie; if (prefList.Count == 0) { if (playerList.Count == 0) diff --git a/Content.Server/Ghost/Ghost.cs b/Content.Server/Ghost/Ghost.cs index d04b1197afa95c..1453bf3faa9108 100644 --- a/Content.Server/Ghost/Ghost.cs +++ b/Content.Server/Ghost/Ghost.cs @@ -1,7 +1,6 @@ using Content.Server.GameTicking; using Content.Shared.Administration; using Content.Shared.Mind; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Ghost @@ -17,7 +16,7 @@ public sealed class Ghost : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("You have no session, you can't ghost."); diff --git a/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs b/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs index c97e3be9dc4372..16d46871fede9a 100644 --- a/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs +++ b/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.Ghost.Roles.Components; diff --git a/Content.Server/Ghost/Roles/GhostRoleSystem.cs b/Content.Server/Ghost/Roles/GhostRoleSystem.cs index 5a4cc176f2a549..f372cb4f62a171 100644 --- a/Content.Server/Ghost/Roles/GhostRoleSystem.cs +++ b/Content.Server/Ghost/Roles/GhostRoleSystem.cs @@ -4,7 +4,6 @@ using Content.Server.Ghost.Roles.Events; using Content.Server.Ghost.Roles.UI; using Content.Server.Mind.Commands; -using Content.Server.Players; using Content.Shared.Administration; using Content.Shared.Database; using Content.Shared.Follower; @@ -14,13 +13,14 @@ using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Mobs; +using Content.Shared.Players; using Content.Shared.Roles; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -97,7 +97,7 @@ private uint GetNextRoleIdentifier() return unchecked(_nextRoleIdentifier++); } - public void OpenEui(IPlayerSession session) + public void OpenEui(ICommonSession session) { if (session.AttachedEntity is not {Valid: true} attached || !EntityManager.HasComponent(attached)) @@ -111,7 +111,7 @@ public void OpenEui(IPlayerSession session) eui.StateDirty(); } - public void OpenMakeGhostRoleEui(IPlayerSession session, EntityUid uid) + public void OpenMakeGhostRoleEui(ICommonSession session, EntityUid uid) { if (session.AttachedEntity == null) return; @@ -420,7 +420,7 @@ public sealed class GhostRoles : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { if(shell.Player != null) - EntitySystem.Get().OpenEui((IPlayerSession)shell.Player); + EntitySystem.Get().OpenEui(shell.Player); else shell.WriteLine("You can only open the ghost roles UI on a client."); } diff --git a/Content.Server/Gravity/GravityGeneratorSystem.cs b/Content.Server/Gravity/GravityGeneratorSystem.cs index 48002fb823de6c..0bd159f61afa8a 100644 --- a/Content.Server/Gravity/GravityGeneratorSystem.cs +++ b/Content.Server/Gravity/GravityGeneratorSystem.cs @@ -6,7 +6,7 @@ using Content.Shared.Gravity; using Content.Shared.Interaction; using Robust.Server.GameObjects; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.Gravity { @@ -139,7 +139,7 @@ private void SetSwitchedOn(EntityUid uid, GravityGeneratorComponent component, b return; if (session is { AttachedEntity: { } }) - _adminLogger.Add(LogType.Action, on ? LogImpact.Medium : LogImpact.High, $"{ToPrettyString(session.AttachedEntity.Value):player} set ${ToPrettyString(uid):target} to {(on ? "on" : "off")}"); + _adminLogger.Add(LogType.Action, on ? LogImpact.Medium : LogImpact.High, $"{session:player} set ${ToPrettyString(uid):target} to {(on ? "on" : "off")}"); component.SwitchedOn = on; UpdatePowerState(component, powerReceiver); diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index b5b01ac001de4e..e3e66995373101 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -18,12 +18,11 @@ using Content.Shared.Stacks; using Content.Shared.Storage; using Content.Shared.Throwing; -using Robust.Server.Player; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.Hands.Systems @@ -159,9 +158,9 @@ private void HandlePullStopped(EntityUid uid, HandsComponent component, PullStop #endregion #region interactions - private bool HandleThrowItem(ICommonSession? session, EntityCoordinates coordinates, EntityUid entity) + private bool HandleThrowItem(ICommonSession? playerSession, EntityCoordinates coordinates, EntityUid entity) { - if (session is not IPlayerSession playerSession) + if (playerSession == null) return false; if (playerSession.AttachedEntity is not {Valid: true} player || @@ -220,7 +219,7 @@ private void HandleSmartEquipBelt(ICommonSession? session) // TODO: move to storage or inventory private void HandleSmartEquip(ICommonSession? session, string equipmentSlot) { - if (session is not IPlayerSession playerSession) + if (session is not { } playerSession) return; if (playerSession.AttachedEntity is not {Valid: true} plyEnt || !Exists(plyEnt)) diff --git a/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.Modifier.cs b/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.Modifier.cs index 7c0bb7383b9c68..b47fe717140836 100644 --- a/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.Modifier.cs +++ b/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.Modifier.cs @@ -3,7 +3,6 @@ using Content.Shared.Humanoid; using Content.Shared.Verbs; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Utility; namespace Content.Server.Humanoid; @@ -48,7 +47,7 @@ private void OnVerbsRequest(EntityUid uid, HumanoidAppearanceComponent component private void OnBaseLayersSet(EntityUid uid, HumanoidAppearanceComponent component, HumanoidMarkingModifierBaseLayersSetMessage message) { - if (message.Session is not IPlayerSession player + if (message.Session is not { } player || !_adminManager.HasAdminFlag(player, AdminFlags.Fun)) { return; @@ -81,7 +80,7 @@ private void OnBaseLayersSet(EntityUid uid, HumanoidAppearanceComponent componen private void OnMarkingsSet(EntityUid uid, HumanoidAppearanceComponent component, HumanoidMarkingModifierMarkingSetMessage message) { - if (message.Session is not IPlayerSession player + if (message.Session is not { } player || !_adminManager.HasAdminFlag(player, AdminFlags.Fun)) { return; diff --git a/Content.Server/Instruments/InstrumentComponent.cs b/Content.Server/Instruments/InstrumentComponent.cs index 810d2653146621..4302ab6791b1ba 100644 --- a/Content.Server/Instruments/InstrumentComponent.cs +++ b/Content.Server/Instruments/InstrumentComponent.cs @@ -1,7 +1,7 @@ using Content.Server.UserInterface; using Content.Shared.Instruments; using Robust.Server.GameObjects; -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Instruments; @@ -17,7 +17,7 @@ public sealed partial class InstrumentComponent : SharedInstrumentComponent [ViewVariables] public uint LastSequencerTick = 0; // TODO Instruments: Make this ECS - public IPlayerSession? InstrumentPlayer => + public ICommonSession? InstrumentPlayer => _entMan.GetComponentOrNull(Owner)?.CurrentSingleUser ?? _entMan.GetComponentOrNull(Owner)?.PlayerSession; } diff --git a/Content.Server/Instruments/InstrumentSystem.cs b/Content.Server/Instruments/InstrumentSystem.cs index ec233821051b8d..6f8369182cbb84 100644 --- a/Content.Server/Instruments/InstrumentSystem.cs +++ b/Content.Server/Instruments/InstrumentSystem.cs @@ -9,12 +9,12 @@ using Content.Shared.Popups; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Audio.Midi; using Robust.Shared.Collections; using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.GameStates; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Instruments; @@ -385,7 +385,7 @@ public override void Update(float frameTime) var nearby = GetBands(entity); _bui.TrySendUiMessage(entity, request.UiKey, new InstrumentBandResponseBuiMessage(nearby), - (IPlayerSession)request.Session); + request.Session); } _bandRequestQueue.Clear(); @@ -447,7 +447,7 @@ public override void Update(float frameTime) } } - public void ToggleInstrumentUi(EntityUid uid, IPlayerSession session, InstrumentComponent? component = null) + public void ToggleInstrumentUi(EntityUid uid, ICommonSession session, InstrumentComponent? component = null) { if (!Resolve(uid, ref component)) return; diff --git a/Content.Server/Interaction/InteractionSystem.cs b/Content.Server/Interaction/InteractionSystem.cs index a612b738400a20..9237a1f7dd40e4 100644 --- a/Content.Server/Interaction/InteractionSystem.cs +++ b/Content.Server/Interaction/InteractionSystem.cs @@ -13,7 +13,6 @@ using Robust.Shared.Containers; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Players; using Robust.Shared.Random; namespace Content.Server.Interaction diff --git a/Content.Server/Interaction/TilePryCommand.cs b/Content.Server/Interaction/TilePryCommand.cs index 4fe3599df97e9e..fa75b6d9e4777b 100644 --- a/Content.Server/Interaction/TilePryCommand.cs +++ b/Content.Server/Interaction/TilePryCommand.cs @@ -1,10 +1,7 @@ using System.Numerics; using Content.Server.Administration; -using Content.Server.Tools.Components; using Content.Shared.Administration; using Content.Shared.Maps; -using Content.Shared.Tools.Components; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; @@ -24,7 +21,7 @@ sealed class TilePryCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player?.AttachedEntity is not {} attached) { return; diff --git a/Content.Server/MagicMirror/MagicMirrorSystem.cs b/Content.Server/MagicMirror/MagicMirrorSystem.cs index 90a0b19b7ddd71..a599a2c868a90e 100644 --- a/Content.Server/MagicMirror/MagicMirrorSystem.cs +++ b/Content.Server/MagicMirror/MagicMirrorSystem.cs @@ -5,8 +5,7 @@ using Content.Shared.Humanoid.Markings; using Content.Shared.MagicMirror; using Robust.Server.GameObjects; -using Robust.Server.Player; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.MagicMirror; @@ -147,7 +146,7 @@ private void OnMagicMirrorAddSlot(EntityUid uid, MagicMirrorComponent component, private void UpdateInterface(EntityUid uid, EntityUid playerUid, ICommonSession session, HumanoidAppearanceComponent? humanoid = null) { - if (!Resolve(playerUid, ref humanoid) || session is not IPlayerSession player) + if (!Resolve(playerUid, ref humanoid) || session is not { } player) { return; } diff --git a/Content.Server/Mapping/MappingCommand.cs b/Content.Server/Mapping/MappingCommand.cs index e4a4cd8942498f..d72a5c4178e61a 100644 --- a/Content.Server/Mapping/MappingCommand.cs +++ b/Content.Server/Mapping/MappingCommand.cs @@ -40,7 +40,7 @@ public CompletionResult GetCompletion(IConsoleShell shell, string[] args) public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError(Loc.GetString("cmd-savemap-server")); return; diff --git a/Content.Server/Maps/GridDraggingSystem.cs b/Content.Server/Maps/GridDraggingSystem.cs index 90770af1ad229b..7d7b61955b4e41 100644 --- a/Content.Server/Maps/GridDraggingSystem.cs +++ b/Content.Server/Maps/GridDraggingSystem.cs @@ -1,10 +1,9 @@ using Content.Shared.Maps; using Robust.Server.Console; -using Robust.Server.Player; -using Robust.Shared.Players; using Robust.Shared.Utility; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; +using Robust.Shared.Player; namespace Content.Server.Maps; @@ -27,7 +26,7 @@ public override void Initialize() public void Toggle(ICommonSession session) { - if (session is not IPlayerSession pSession) + if (session is not { } pSession) return; DebugTools.Assert(_admin.CanCommand(pSession, CommandName)); @@ -52,7 +51,7 @@ private void OnRequestVelocity(GridDragVelocityRequest ev, EntitySessionEventArg { var grid = GetEntity(ev.Grid); - if (args.SenderSession is not IPlayerSession playerSession || + if (args.SenderSession is not { } playerSession || !_admin.CanCommand(playerSession, CommandName) || !Exists(grid) || Deleted(grid)) @@ -69,7 +68,7 @@ private void OnRequestDrag(GridDragRequestPosition msg, EntitySessionEventArgs a { var grid = GetEntity(msg.Grid); - if (args.SenderSession is not IPlayerSession playerSession || + if (args.SenderSession is not { } playerSession || !_admin.CanCommand(playerSession, CommandName) || !Exists(grid) || Deleted(grid)) diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs index 4ffa9f558da069..d041f8ee9d7548 100644 --- a/Content.Server/Medical/DefibrillatorSystem.cs +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -18,7 +18,7 @@ using Content.Shared.Mobs.Systems; using Content.Shared.Timing; using Content.Shared.Toggleable; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Medical; diff --git a/Content.Server/Mind/Commands/RenameCommand.cs b/Content.Server/Mind/Commands/RenameCommand.cs index 5674da4ffd3405..2d65adc5082284 100644 --- a/Content.Server/Mind/Commands/RenameCommand.cs +++ b/Content.Server/Mind/Commands/RenameCommand.cs @@ -54,6 +54,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) { // Mind mind.CharacterName = name; + _entManager.Dirty(mindId, mind); } // Id Cards diff --git a/Content.Server/Mind/MindSystem.cs b/Content.Server/Mind/MindSystem.cs index 373007fd1b5a2b..f23e9b640735dc 100644 --- a/Content.Server/Mind/MindSystem.cs +++ b/Content.Server/Mind/MindSystem.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Administration.Logs; using Content.Server.GameTicking; +using Content.Server.Mind.Commands; using Content.Shared.Database; using Content.Shared.Ghost; using Content.Shared.Mind; @@ -10,7 +11,9 @@ using Robust.Server.GameStates; using Robust.Server.Player; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -46,20 +49,14 @@ private void OnMindShutdown(EntityUid uid, MindComponent mind, ComponentShutdown mind.UserId = null; } - if (!TryComp(mind.OwnedEntity, out MetaDataComponent? meta) || meta.EntityLifeStage >= EntityLifeStage.Terminating) - return; + if (mind.OwnedEntity != null && !TerminatingOrDeleted(mind.OwnedEntity.Value)) + TransferTo(uid, null, mind: mind, createGhost: false); - RaiseLocalEvent(mind.OwnedEntity.Value, new MindRemovedMessage(uid, mind), true); mind.OwnedEntity = null; - mind.OwnedComponent = null; } private void OnMindContainerTerminating(EntityUid uid, MindContainerComponent component, ref EntityTerminatingEvent args) { - // Let's not create ghosts if not in the middle of the round. - if (_gameTicker.RunLevel == GameRunLevel.PreRoundLobby) - return; - if (!TryGetMind(uid, out var mindId, out var mind, component)) return; @@ -76,46 +73,45 @@ private void OnMindContainerTerminating(EntityUid uid, MindContainerComponent co } TransferTo(mindId, null, createGhost: false, mind: mind); + DebugTools.AssertNull(mind.OwnedEntity); - if (component.GhostOnShutdown && mind.Session != null) - { - var xform = Transform(uid); - var gridId = xform.GridUid; - var spawnPosition = Transform(uid).Coordinates; + if (!component.GhostOnShutdown || mind.Session == null || _gameTicker.RunLevel == GameRunLevel.PreRoundLobby) + return; - // Use a regular timer here because the entity has probably been deleted. - Timer.Spawn(0, () => - { - // Make extra sure the round didn't end between spawning the timer and it being executed. - if (_gameTicker.RunLevel == GameRunLevel.PreRoundLobby) - return; + var xform = Transform(uid); + var gridId = xform.GridUid; + var spawnPosition = Transform(uid).Coordinates; - // Async this so that we don't throw if the grid we're on is being deleted. - if (!_maps.GridExists(gridId)) - spawnPosition = _gameTicker.GetObserverSpawnPoint(); + // Use a regular timer here because the entity has probably been deleted. + Timer.Spawn(0, () => + { + // Make extra sure the round didn't end between spawning the timer and it being executed. + if (_gameTicker.RunLevel == GameRunLevel.PreRoundLobby) + return; - // TODO refactor observer spawning. - // please. - if (!spawnPosition.IsValid(EntityManager)) - { - // This should be an error, if it didn't cause tests to start erroring when they delete a player. - Log.Warning($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, and no applicable spawn location is available."); - TransferTo(mindId, null, createGhost: false, mind: mind); - return; - } + // Async this so that we don't throw if the grid we're on is being deleted. + if (!HasComp(gridId)) + spawnPosition = _gameTicker.GetObserverSpawnPoint(); - var ghost = Spawn("MobObserver", spawnPosition); - var ghostComponent = Comp(ghost); - _ghosts.SetCanReturnToBody(ghostComponent, false); + // TODO refactor observer spawning. + // please. + if (!spawnPosition.IsValid(EntityManager)) + { + // This should be an error, if it didn't cause tests to start erroring when they delete a player. + Log.Warning($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, and no applicable spawn location is available."); + TransferTo(mindId, null, createGhost: false, mind: mind); + return; + } - // Log these to make sure they're not causing the GameTicker round restart bugs... - Log.Debug($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, spawned \"{ToPrettyString(ghost)}\"."); + var ghost = Spawn(GameTicker.ObserverPrototypeName, spawnPosition); + var ghostComponent = Comp(ghost); + _ghosts.SetCanReturnToBody(ghostComponent, false); - var val = mind.CharacterName ?? string.Empty; - _metaData.SetEntityName(ghost, val); - TransferTo(mindId, ghost, mind: mind); - }); - } + // Log these to make sure they're not causing the GameTicker round restart bugs... + Log.Debug($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, spawned \"{ToPrettyString(ghost)}\"."); + _metaData.SetEntityName(ghost, mind.CharacterName ?? string.Empty); + TransferTo(mindId, ghost, mind: mind); + }); } public override bool TryGetMind(NetUserId user, [NotNullWhen(true)] out EntityUid? mindId, [NotNullWhen(true)] out MindComponent? mind) @@ -130,18 +126,18 @@ public override bool TryGetMind(NetUserId user, [NotNullWhen(true)] out EntityUi return false; } - public bool TryGetSession(EntityUid? mindId, [NotNullWhen(true)] out IPlayerSession? session) + public bool TryGetSession(EntityUid? mindId, [NotNullWhen(true)] out ICommonSession? session) { session = null; - return TryComp(mindId, out MindComponent? mind) && (session = (IPlayerSession?) mind.Session) != null; + return TryComp(mindId, out MindComponent? mind) && (session = mind.Session) != null; } - public IPlayerSession? GetSession(MindComponent mind) + public ICommonSession? GetSession(MindComponent mind) { - return (IPlayerSession?) mind.Session; + return mind.Session; } - public bool TryGetSession(MindComponent mind, [NotNullWhen(true)] out IPlayerSession? session) + public bool TryGetSession(MindComponent mind, [NotNullWhen(true)] out ICommonSession? session) { return (session = GetSession(mind)) != null; } @@ -179,7 +175,9 @@ public override void Visit(EntityUid mindId, EntityUid entity, MindComponent? mi return; } - GetSession(mind)?.AttachToEntity(entity); + if (GetSession(mind) is { } session) + _actor.Attach(entity, session); + mind.VisitingEntity = entity; // EnsureComp instead of AddComp to deal with deferred deletions. @@ -198,13 +196,14 @@ public override void UnVisit(EntityUid mindId, MindComponent? mind = null) if (mind.VisitingEntity == null) return; - RemoveVisitingEntity(mind); + RemoveVisitingEntity(mindId, mind); if (mind.Session == null || mind.Session.AttachedEntity == mind.VisitingEntity) return; var owned = mind.OwnedEntity; - GetSession(mind)?.AttachToEntity(owned); + if (GetSession(mind) is { } session) + _actor.Attach(owned, session); if (owned.HasValue) { @@ -219,11 +218,10 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC if (mind == null && !Resolve(mindId, ref mind)) return; - base.TransferTo(mindId, entity, ghostCheckOverride, createGhost, mind); - if (entity == mind.OwnedEntity) return; + Dirty(mindId, mind); MindContainerComponent? component = null; var alreadyAttached = false; @@ -247,27 +245,33 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC } else if (createGhost) { + // TODO remove this option. + // Transfer-to-null should just detach a mind. + // If people want to create a ghost, that should be done explicitly via some TransferToGhost() method, not + // not implicitly via optional arguments. + var position = Deleted(mind.OwnedEntity) ? _gameTicker.GetObserverSpawnPoint().ToMap(EntityManager, _transform) : Transform(mind.OwnedEntity.Value).MapPosition; entity = Spawn("MobObserver", position); + component = EnsureComp(entity.Value); var ghostComponent = Comp(entity.Value); _ghosts.SetCanReturnToBody(ghostComponent, false); } - var oldComp = mind.OwnedComponent; var oldEntity = mind.OwnedEntity; - if (oldComp != null && oldEntity != null) + if (TryComp(oldEntity, out MindContainerComponent? oldContainer)) { - if (oldComp.Mind != null) - _pvsOverride.ClearOverride(oldComp.Mind.Value); - oldComp.Mind = null; - RaiseLocalEvent(oldEntity.Value, new MindRemovedMessage(oldEntity.Value, mind), true); + oldContainer.Mind = null; + 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)); + Dirty(oldEntity.Value, oldContainer); } - SetOwnedEntity(mind, entity, component); - // Don't do the full deletion cleanup if we're transferring to our VisitingEntity if (alreadyAttached) { @@ -281,7 +285,7 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC || !TryComp(mind.VisitingEntity!, out GhostComponent? ghostComponent) // visiting entity is not a Ghost || !ghostComponent.CanReturnToBody)) // it is a ghost, but cannot return to body anyway, so it's okay { - RemoveVisitingEntity(mind); + RemoveVisitingEntity(mindId, mind); } // Player is CURRENTLY connected. @@ -289,14 +293,20 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC if (session != null && !alreadyAttached && mind.VisitingEntity == null) { _actor.Attach(entity, session, true); + DebugTools.Assert(session.AttachedEntity == entity, $"Failed to attach entity."); Log.Info($"Session {session.Name} transferred to entity {entity}."); } - if (mind.OwnedComponent != null) + if (entity != null) { - mind.OwnedComponent.Mind = mindId; - RaiseLocalEvent(mind.OwnedEntity!.Value, new MindAddedMessage(), true); - mind.OriginalOwnedEntity ??= mind.OwnedEntity; + component!.Mind = mindId; + mind.OwnedEntity = entity; + 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)); + Dirty(entity.Value, component); } } @@ -313,6 +323,7 @@ public override void SetUserId(EntityUid mindId, NetUserId? userId, MindComponen if (mind.UserId == userId) return; + Dirty(mindId, mind); _pvsOverride.ClearOverride(mindId); if (userId != null && !_players.TryGetPlayerData(userId.Value, out _)) { @@ -363,4 +374,27 @@ public override void SetUserId(EntityUid mindId, NetUserId? userId, MindComponen if (_players.GetPlayerData(userId.Value).ContentData() is { } data) data.Mind = mindId; } + + public void ControlMob(EntityUid user, EntityUid target) + { + if (TryComp(user, out ActorComponent? actor)) + ControlMob(actor.PlayerSession.UserId, target); + } + + public void ControlMob(NetUserId user, EntityUid target) + { + var (mindId, mind) = GetOrCreateMind(user); + + if (mind.CurrentEntity == target) + return; + + if (mind.OwnedEntity == target) + { + UnVisit(mindId, mind); + return; + } + + MakeSentientCommand.MakeSentient(target, EntityManager); + TransferTo(mindId, target, ghostCheckOverride: true, mind: mind); + } } diff --git a/Content.Server/Mind/Toolshed/MindCommand.cs b/Content.Server/Mind/Toolshed/MindCommand.cs index b53f9a6a9cd62e..917e6fb7f1ad66 100644 --- a/Content.Server/Mind/Toolshed/MindCommand.cs +++ b/Content.Server/Mind/Toolshed/MindCommand.cs @@ -1,5 +1,5 @@ using Content.Shared.Mind; -using Robust.Server.Player; +using Robust.Shared.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; using Robust.Shared.Toolshed.Syntax; @@ -15,7 +15,7 @@ public sealed class MindCommand : ToolshedCommand private SharedMindSystem? _mind; [CommandImplementation("get")] - public MindComponent? Get([PipedArgument] IPlayerSession session) + public MindComponent? Get([PipedArgument] ICommonSession session) { _mind ??= GetSys(); return _mind.TryGetMind(session, out _, out var mind) ? mind : null; @@ -32,7 +32,7 @@ public sealed class MindCommand : ToolshedCommand public EntityUid Control( [CommandInvocationContext] IInvocationContext ctx, [PipedArgument] EntityUid target, - [CommandArgument] ValueRef playerRef) + [CommandArgument] ValueRef playerRef) { _mind ??= GetSys(); diff --git a/Content.Server/Motd/MOTDCommand.cs b/Content.Server/Motd/MOTDCommand.cs index a1aa4d2df593a2..9e59589b95bd03 100644 --- a/Content.Server/Motd/MOTDCommand.cs +++ b/Content.Server/Motd/MOTDCommand.cs @@ -1,6 +1,5 @@ using Content.Server.Administration.Managers; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Motd; @@ -14,10 +13,10 @@ internal sealed class MOTDCommand : LocalizedCommands [Dependency] private readonly IAdminManager _adminManager = default!; public override string Command => "motd"; - + public override void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = (IPlayerSession?)shell.Player; + var player = shell.Player; if (args.Length < 1 || (player != null && _adminManager is AdminManager aMan && !aMan.CanCommand(player, "set-motd"))) shell.ConsoleHost.ExecuteCommand(shell.Player, "get-motd"); else @@ -26,7 +25,7 @@ public override void Execute(IConsoleShell shell, string argStr, string[] args) public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) { - var player = (IPlayerSession?)shell.Player; + var player = shell.Player; if (player != null && _adminManager is AdminManager aMan && !aMan.CanCommand(player, "set-motd")) return CompletionResult.Empty; if (args.Length == 1) diff --git a/Content.Server/Motd/MOTDSystem.cs b/Content.Server/Motd/MOTDSystem.cs index e749fe48f308c9..39d780f108c50f 100644 --- a/Content.Server/Motd/MOTDSystem.cs +++ b/Content.Server/Motd/MOTDSystem.cs @@ -2,9 +2,9 @@ using Content.Server.GameTicking; using Content.Shared.CCVar; using Content.Shared.Chat; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Configuration; +using Robust.Shared.Player; namespace Content.Server.Motd; @@ -41,7 +41,7 @@ public void TrySendMOTD() { if (string.IsNullOrEmpty(_messageOfTheDay)) return; - + var wrappedMessage = Loc.GetString("motd-wrap-message", ("motd", _messageOfTheDay)); _chatManager.ChatMessageToAll(ChatChannel.Server, _messageOfTheDay, wrappedMessage, source: EntityUid.Invalid, hideChat: false, recordReplay: true); } @@ -49,11 +49,11 @@ public void TrySendMOTD() /// /// Sends the Message Of The Day, if any, to a specific player. /// - public void TrySendMOTD(IPlayerSession player) + public void TrySendMOTD(ICommonSession player) { if (string.IsNullOrEmpty(_messageOfTheDay)) return; - + var wrappedMessage = Loc.GetString("motd-wrap-message", ("motd", _messageOfTheDay)); _chatManager.ChatMessageToOne(ChatChannel.Server, _messageOfTheDay, wrappedMessage, source: EntityUid.Invalid, hideChat: false, client: player.ConnectedClient); } @@ -68,10 +68,10 @@ public void TrySendMOTD(IConsoleShell shell) { if (string.IsNullOrEmpty(_messageOfTheDay)) return; - + var wrappedMessage = Loc.GetString("motd-wrap-message", ("motd", _messageOfTheDay)); shell.WriteLine(wrappedMessage); - if (shell.Player is IPlayerSession player) + if (shell.Player is { } player) _chatManager.ChatMessageToOne(ChatChannel.Server, _messageOfTheDay, wrappedMessage, source: EntityUid.Invalid, hideChat: false, client: player.ConnectedClient); } @@ -92,7 +92,7 @@ private void OnMOTDChanged(string val) { if (val == _messageOfTheDay) return; - + _messageOfTheDay = val; TrySendMOTD(); } diff --git a/Content.Server/Motd/SetMOTDCommand.cs b/Content.Server/Motd/SetMOTDCommand.cs index f3f52b067029ac..9678781c87a5fc 100644 --- a/Content.Server/Motd/SetMOTDCommand.cs +++ b/Content.Server/Motd/SetMOTDCommand.cs @@ -4,7 +4,6 @@ using Content.Shared.Database; using Content.Shared.CCVar; using Content.Server.Chat.Managers; -using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; @@ -21,18 +20,18 @@ public sealed class SetMotdCommand : LocalizedCommands [Dependency] private readonly IConfigurationManager _configurationManager = default!; public override string Command => "set-motd"; - + public override void Execute(IConsoleShell shell, string argStr, string[] args) { string motd = ""; - var player = (IPlayerSession?)shell.Player; + var player = shell.Player; if (args.Length > 0) { motd = string.Join(" ", args).Trim(); if (player != null && _chatManager.MessageCharacterLimit(player, motd)) return; // check function prints its own error response } - + _configurationManager.SetCVar(CCVars.MOTD, motd); // A hook in MOTDSystem broadcasts changes to the MOTD to everyone so we don't need to do it here. if (string.IsNullOrEmpty(motd)) { diff --git a/Content.Server/Movement/Systems/LagCompensationSystem.cs b/Content.Server/Movement/Systems/LagCompensationSystem.cs index 64965c2fee7996..0576fe8f2553c8 100644 --- a/Content.Server/Movement/Systems/LagCompensationSystem.cs +++ b/Content.Server/Movement/Systems/LagCompensationSystem.cs @@ -1,7 +1,7 @@ using Content.Server.Movement.Components; using Robust.Server.Player; using Robust.Shared.Map; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Movement.Systems; diff --git a/Content.Server/NPC/Commands/NPCCommand.cs b/Content.Server/NPC/Commands/NPCCommand.cs index 57fe223b66963f..7f9e56b8cac29e 100644 --- a/Content.Server/NPC/Commands/NPCCommand.cs +++ b/Content.Server/NPC/Commands/NPCCommand.cs @@ -2,7 +2,6 @@ using Content.Server.EUI; using Content.Server.NPC.UI; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.NPC.Commands; @@ -15,7 +14,7 @@ public sealed class NPCCommand : IConsoleCommand public string Help => $"{Command}"; public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession playerSession) + if (shell.Player is not { } playerSession) { return; } diff --git a/Content.Server/NPC/HTN/HTNSystem.cs b/Content.Server/NPC/HTN/HTNSystem.cs index 2c1dadb12797e9..a7689fbabed07c 100644 --- a/Content.Server/NPC/HTN/HTNSystem.cs +++ b/Content.Server/NPC/HTN/HTNSystem.cs @@ -4,17 +4,14 @@ using Content.Server.Administration.Managers; using Robust.Shared.CPUJob.JobQueues; using Robust.Shared.CPUJob.JobQueues.Queues; -using Content.Server.NPC.Components; using Content.Server.NPC.HTN.PrimitiveTasks; using Content.Server.NPC.Systems; using Content.Shared.Administration; using Content.Shared.Mobs; using Content.Shared.NPC; -using Content.Shared.NPC; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Server.Player; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -48,7 +45,7 @@ public override void Initialize() private void OnHTNMessage(RequestHTNMessage msg, EntitySessionEventArgs args) { - if (!_admin.HasAdminFlag((IPlayerSession) args.SenderSession, AdminFlags.Debug)) + if (!_admin.HasAdminFlag(args.SenderSession, AdminFlags.Debug)) { _subscribers.Remove(args.SenderSession); return; diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs index bb0eff7b39116c..1b1f6f54761f4a 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs @@ -13,7 +13,7 @@ using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Systems; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Random; using Robust.Shared.Threading; using Robust.Shared.Timing; @@ -528,7 +528,7 @@ private void SendDebug(PathRequest request) private void OnBreadcrumbs(RequestPathfindingDebugMessage msg, EntitySessionEventArgs args) { - var pSession = (IPlayerSession) args.SenderSession; + var pSession = args.SenderSession; if (!_adminManager.HasAdminFlag(pSession, AdminFlags.Debug)) { diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.cs index 61b43df6f0023f..e5b62acfe80cb8 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.cs @@ -17,14 +17,12 @@ using Content.Shared.NPC.Events; using Content.Shared.Physics; using Content.Shared.Weapons.Melee; -using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; using Robust.Shared.Player; -using Robust.Shared.Players; using Robust.Shared.Random; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -147,7 +145,7 @@ public override void Shutdown() private void OnDebugRequest(RequestNPCSteeringDebugEvent msg, EntitySessionEventArgs args) { - if (!_admin.IsAdmin((IPlayerSession)args.SenderSession)) + if (!_admin.IsAdmin(args.SenderSession)) return; if (msg.Enabled) diff --git a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs index e4bd303150b8f4..9ee9702c5bfc25 100644 --- a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs +++ b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs @@ -9,6 +9,7 @@ using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.NodeContainer.EntitySystems @@ -29,7 +30,7 @@ public sealed class NodeGroupSystem : EntitySystem private readonly List _visDeletes = new(); private readonly List _visSends = new(); - private readonly HashSet _visPlayers = new(); + private readonly HashSet _visPlayers = new(); private readonly HashSet _toRemake = new(); private readonly HashSet _nodeGroups = new(); private readonly HashSet _toRemove = new(); @@ -74,7 +75,7 @@ public override void Shutdown() private void HandleEnableMsg(NodeVis.MsgEnable msg, EntitySessionEventArgs args) { - var session = (IPlayerSession) args.SenderSession; + var session = args.SenderSession; if (!_adminManager.HasAdminFlag(session, AdminFlags.Debug)) return; @@ -397,7 +398,7 @@ private void VisDoUpdate(float frametime) } } - private void VisSendFullStateImmediate(IPlayerSession player) + private void VisSendFullStateImmediate(ICommonSession player) { var msg = new NodeVis.MsgData(); diff --git a/Content.Server/Nutrition/Hungry.cs b/Content.Server/Nutrition/Hungry.cs index c27f302a8d1f3a..ae68dcd2fdadb0 100644 --- a/Content.Server/Nutrition/Hungry.cs +++ b/Content.Server/Nutrition/Hungry.cs @@ -1,9 +1,7 @@ using Content.Server.Administration; -using Content.Server.Nutrition.Components; using Content.Shared.Administration; using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Nutrition @@ -19,7 +17,7 @@ public sealed class Hungry : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("You cannot use this command unless you are a player."); diff --git a/Content.Server/Objectives/Commands/ListObjectivesCommand.cs b/Content.Server/Objectives/Commands/ListObjectivesCommand.cs index 93dec3fa44d97b..97fc943269a449 100644 --- a/Content.Server/Objectives/Commands/ListObjectivesCommand.cs +++ b/Content.Server/Objectives/Commands/ListObjectivesCommand.cs @@ -18,7 +18,7 @@ public sealed class ListObjectivesCommand : LocalizedCommands public override void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null || !_players.TryGetSessionByUsername(args[0], out player)) { shell.WriteError(LocalizationManager.GetString("shell-target-player-does-not-exist")); diff --git a/Content.Server/PDA/PdaSystem.cs b/Content.Server/PDA/PdaSystem.cs index 6c506dc3dd2990..44e26598412a7e 100644 --- a/Content.Server/PDA/PdaSystem.cs +++ b/Content.Server/PDA/PdaSystem.cs @@ -4,9 +4,6 @@ using Content.Server.Instruments; using Content.Server.Light.EntitySystems; using Content.Server.Light.Events; -using Content.Server.MassMedia.Components; -using Content.Server.MassMedia.Systems; -using Content.Server.Mind; using Content.Server.PDA.Ringer; using Content.Server.Station.Systems; using Content.Server.Store.Components; @@ -16,7 +13,6 @@ using Content.Shared.Light.Components; using Content.Shared.PDA; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Containers; namespace Content.Server.PDA @@ -180,7 +176,7 @@ private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowRingtoneMessage return; if (HasComp(uid)) - _ringer.ToggleRingerUI(uid, (IPlayerSession) msg.Session); + _ringer.ToggleRingerUI(uid, msg.Session); } private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowMusicMessage msg) @@ -189,7 +185,7 @@ private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowMusicMessage ms return; if (TryComp(uid, out var instrument)) - _instrument.ToggleInstrumentUi(uid, (IPlayerSession) msg.Session, instrument); + _instrument.ToggleInstrumentUi(uid, msg.Session, instrument); } private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowUplinkMessage msg) diff --git a/Content.Server/PDA/Ringer/RingerSystem.cs b/Content.Server/PDA/Ringer/RingerSystem.cs index a772e76bc45367..7494d5e12ceffb 100644 --- a/Content.Server/PDA/Ringer/RingerSystem.cs +++ b/Content.Server/PDA/Ringer/RingerSystem.cs @@ -7,7 +7,6 @@ using Content.Shared.Popups; using Content.Shared.Store; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Network; using Robust.Shared.Player; @@ -182,7 +181,7 @@ private void UpdateRingerUserInterface(EntityUid uid, RingerComponent ringer, bo _ui.SetUiState(bui, new RingerUpdateState(isPlaying, ringer.Ringtone)); } - public bool ToggleRingerUI(EntityUid uid, IPlayerSession session) + public bool ToggleRingerUI(EntityUid uid, ICommonSession session) { if (_ui.TryGetUi(uid, RingerUiKey.Key, out var bui)) _ui.ToggleUi(bui, session); diff --git a/Content.Server/Paper/PaperSystem.cs b/Content.Server/Paper/PaperSystem.cs index f38013e14d11db..553bcaa0a21754 100644 --- a/Content.Server/Paper/PaperSystem.cs +++ b/Content.Server/Paper/PaperSystem.cs @@ -4,15 +4,11 @@ using Content.Server.UserInterface; using Content.Shared.Database; using Content.Shared.Examine; -using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Paper; using Content.Shared.Tag; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Player; -using Robust.Shared.Utility; -using Robust.Shared.Audio; using static Content.Shared.Paper.SharedPaperComponent; namespace Content.Server.Paper @@ -207,7 +203,7 @@ public void SetContent(EntityUid uid, string content, PaperComponent? paperComp _appearance.SetData(uid, PaperVisuals.Status, status, appearance); } - public void UpdateUserInterface(EntityUid uid, PaperComponent? paperComp = null, IPlayerSession? session = null) + public void UpdateUserInterface(EntityUid uid, PaperComponent? paperComp = null, ICommonSession? session = null) { if (!Resolve(uid, ref paperComp)) return; diff --git a/Content.Server/Parallax/BiomeSystem.cs b/Content.Server/Parallax/BiomeSystem.cs index a9d78afa865e20..c9017ac821e191 100644 --- a/Content.Server/Parallax/BiomeSystem.cs +++ b/Content.Server/Parallax/BiomeSystem.cs @@ -282,9 +282,8 @@ public override void Update(float frameTime) } // Get chunks in range - foreach (var client in Filter.GetAllPlayers(_playerManager)) + foreach (var pSession in Filter.GetAllPlayers(_playerManager)) { - var pSession = (IPlayerSession) client; if (xformQuery.TryGetComponent(pSession.AttachedEntity, out var xform) && _handledEntities.Add(pSession.AttachedEntity.Value) && diff --git a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.ControlBox.cs b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.ControlBox.cs index 20ed27696706dc..f200c991d7f132 100644 --- a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.ControlBox.cs +++ b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.ControlBox.cs @@ -2,11 +2,10 @@ using Content.Server.Power.Components; using Content.Shared.Database; using Content.Shared.Singularity.Components; -using Robust.Server.Player; -using Robust.Server.GameObjects; using Robust.Shared.Utility; using System.Diagnostics; using Content.Shared.CCVar; +using Robust.Shared.Player; namespace Content.Server.ParticleAccelerator.EntitySystems; @@ -60,7 +59,7 @@ public void Fire(EntityUid uid, TimeSpan curTime, ParticleAcceleratorControlBoxC FireEmitter(comp.StarboardEmitter!.Value, strength); } - public void SwitchOn(EntityUid uid, IPlayerSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) + public void SwitchOn(EntityUid uid, ICommonSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) { if (!Resolve(uid, ref comp)) return; @@ -83,7 +82,7 @@ public void SwitchOn(EntityUid uid, IPlayerSession? user = null, ParticleAcceler UpdateUI(uid, comp); } - public void SwitchOff(EntityUid uid, IPlayerSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) + public void SwitchOff(EntityUid uid, ICommonSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) { if (!Resolve(uid, ref comp)) return; @@ -131,7 +130,7 @@ public void PowerOff(EntityUid uid, ParticleAcceleratorControlBoxComponent? comp UpdateUI(uid, comp); } - public void SetStrength(EntityUid uid, ParticleAcceleratorPowerState strength, IPlayerSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) + public void SetStrength(EntityUid uid, ParticleAcceleratorPowerState strength, ICommonSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) { if (!Resolve(uid, ref comp)) return; @@ -347,10 +346,10 @@ private void OnUISetEnableMessage(EntityUid uid, ParticleAcceleratorControlBoxCo if (msg.Enabled) { if (comp.Assembled) - SwitchOn(uid, (IPlayerSession?) msg.Session, comp); + SwitchOn(uid, msg.Session, comp); } else - SwitchOff(uid, (IPlayerSession?) msg.Session, comp); + SwitchOff(uid, msg.Session, comp); UpdateUI(uid, comp); } @@ -364,7 +363,7 @@ private void OnUISetPowerMessage(EntityUid uid, ParticleAcceleratorControlBoxCom if (TryComp(uid, out var apcPower) && !apcPower.Powered) return; - SetStrength(uid, msg.State, (IPlayerSession?) msg.Session, comp); + SetStrength(uid, msg.State, msg.Session, comp); UpdateUI(uid, comp); } @@ -378,7 +377,7 @@ private void OnUIRescanMessage(EntityUid uid, ParticleAcceleratorControlBoxCompo if (TryComp(uid, out var apcPower) && !apcPower.Powered) return; - RescanParts(uid, (IPlayerSession?) msg.Session, comp); + RescanParts(uid, msg.Session, comp); UpdateUI(uid, comp); } diff --git a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs index 271d17a0c49beb..abc68543ff3b84 100644 --- a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs +++ b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs @@ -2,9 +2,9 @@ using System.Numerics; using Content.Server.ParticleAccelerator.Components; using JetBrains.Annotations; -using Robust.Server.Player; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Events; +using Robust.Shared.Player; namespace Content.Server.ParticleAccelerator.EntitySystems; @@ -18,7 +18,7 @@ private void InitializePartSystem() SubscribeLocalEvent(BodyTypeChanged); } - public void RescanParts(EntityUid uid, IPlayerSession? user = null, ParticleAcceleratorControlBoxComponent? controller = null) + public void RescanParts(EntityUid uid, ICommonSession? user = null, ParticleAcceleratorControlBoxComponent? controller = null) { if (!Resolve(uid, ref controller)) return; diff --git a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs index 50c64e718c3e1e..bcc6f211ed80a4 100644 --- a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs +++ b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs @@ -5,18 +5,18 @@ using Content.Server.Database; using Content.Shared.CCVar; using Content.Shared.Players.PlayTimeTracking; -using Robust.Server.Player; using Robust.Shared.Asynchronous; using Robust.Shared.Collections; using Robust.Shared.Configuration; using Robust.Shared.Exceptions; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.Shared.Utility; namespace Content.Server.Players.PlayTimeTracking; -public delegate void CalcPlayTimeTrackersCallback(IPlayerSession player, HashSet trackers); +public delegate void CalcPlayTimeTrackersCallback(ICommonSession player, HashSet trackers); /// /// Tracks play time for players, across all roles. @@ -66,7 +66,7 @@ public sealed class PlayTimeTrackingManager private ISawmill _sawmill = default!; // List of players that need some kind of update (refresh timers or resend). - private ValueList _playersDirty; + private ValueList _playersDirty; // DB auto-saving logic. private TimeSpan _saveInterval; @@ -76,7 +76,7 @@ public sealed class PlayTimeTrackingManager // We must block server shutdown on these to avoid losing data. private readonly List _pendingSaveTasks = new(); - private readonly Dictionary _playTimeData = new(); + private readonly Dictionary _playTimeData = new(); public event CalcPlayTimeTrackersCallback? CalcTrackers; @@ -139,7 +139,7 @@ private void UpdateDirtyPlayers() _playersDirty.Clear(); } - private void RefreshSingleTracker(IPlayerSession dirty, PlayTimeData data, TimeSpan time) + private void RefreshSingleTracker(ICommonSession dirty, PlayTimeData data, TimeSpan time) { DebugTools.Assert(data.Initialized); @@ -181,7 +181,7 @@ public void FlushAllTrackers() /// so APIs like return up-to-date info. /// /// - public void FlushTracker(IPlayerSession player) + public void FlushTracker(ICommonSession player) { var time = _timing.RealTime; var data = _playTimeData[player]; @@ -201,7 +201,7 @@ private static void FlushSingleTracker(PlayTimeData data, TimeSpan time) } } - private void SendPlayTimes(IPlayerSession pSession) + private void SendPlayTimes(ICommonSession pSession) { var roles = GetTrackerTimes(pSession); @@ -228,7 +228,7 @@ public async void Save() /// /// Save all modified time trackers for a player to the database. /// - public async void SaveSession(IPlayerSession session) + public async void SaveSession(ICommonSession session) { // This causes all trackers to refresh, ah well. FlushAllTrackers(); @@ -278,7 +278,7 @@ private async Task DoSaveAsync() _sawmill.Debug($"Saved {log.Count} trackers"); } - private async Task DoSaveSessionAsync(IPlayerSession session) + private async Task DoSaveSessionAsync(ICommonSession session) { var log = new List(); @@ -299,7 +299,7 @@ private async Task DoSaveSessionAsync(IPlayerSession session) _sawmill.Debug($"Saved {log.Count} trackers for {session.Name}"); } - public async Task LoadData(IPlayerSession session, CancellationToken cancel) + public async Task LoadData(ICommonSession session, CancellationToken cancel) { var data = new PlayTimeData(); _playTimeData.Add(session, data); @@ -318,14 +318,14 @@ public async Task LoadData(IPlayerSession session, CancellationToken cancel) QueueSendTimers(session); } - public void ClientDisconnected(IPlayerSession session) + public void ClientDisconnected(ICommonSession session) { SaveSession(session); _playTimeData.Remove(session); } - public void AddTimeToTracker(IPlayerSession id, string tracker, TimeSpan time) + public void AddTimeToTracker(ICommonSession id, string tracker, TimeSpan time) { if (!_playTimeData.TryGetValue(id, out var data) || !data.Initialized) throw new InvalidOperationException("Play time info is not yet loaded for this player!"); @@ -341,17 +341,17 @@ private static void AddTimeToTracker(PlayTimeData data, string tracker, TimeSpan data.DbTrackersDirty.Add(tracker); } - public void AddTimeToOverallPlaytime(IPlayerSession id, TimeSpan time) + public void AddTimeToOverallPlaytime(ICommonSession id, TimeSpan time) { AddTimeToTracker(id, PlayTimeTrackingShared.TrackerOverall, time); } - public TimeSpan GetOverallPlaytime(IPlayerSession id) + public TimeSpan GetOverallPlaytime(ICommonSession id) { return GetPlayTimeForTracker(id, PlayTimeTrackingShared.TrackerOverall); } - public bool TryGetTrackerTimes(IPlayerSession id, [NotNullWhen(true)] out Dictionary? time) + public bool TryGetTrackerTimes(ICommonSession id, [NotNullWhen(true)] out Dictionary? time) { time = null; @@ -364,7 +364,7 @@ public bool TryGetTrackerTimes(IPlayerSession id, [NotNullWhen(true)] out Dictio return true; } - public Dictionary GetTrackerTimes(IPlayerSession id) + public Dictionary GetTrackerTimes(ICommonSession id) { if (!_playTimeData.TryGetValue(id, out var data) || !data.Initialized) throw new InvalidOperationException("Play time info is not yet loaded for this player!"); @@ -372,7 +372,7 @@ public Dictionary GetTrackerTimes(IPlayerSession id) return data.TrackerTimes; } - public TimeSpan GetPlayTimeForTracker(IPlayerSession id, string tracker) + public TimeSpan GetPlayTimeForTracker(ICommonSession id, string tracker) { if (!_playTimeData.TryGetValue(id, out var data) || !data.Initialized) throw new InvalidOperationException("Play time info is not yet loaded for this player!"); @@ -383,7 +383,7 @@ public TimeSpan GetPlayTimeForTracker(IPlayerSession id, string tracker) /// /// Queue for play time trackers to be refreshed on a player, in case the set of active trackers may have changed. /// - public void QueueRefreshTrackers(IPlayerSession player) + public void QueueRefreshTrackers(ICommonSession player) { if (DirtyPlayer(player) is { } data) data.NeedRefreshTackers = true; @@ -392,13 +392,13 @@ public void QueueRefreshTrackers(IPlayerSession player) /// /// Queue for play time information to be sent to a client, for showing in UIs etc. /// - public void QueueSendTimers(IPlayerSession player) + public void QueueSendTimers(ICommonSession player) { if (DirtyPlayer(player) is { } data) data.NeedSendTimers = true; } - private PlayTimeData? DirtyPlayer(IPlayerSession player) + private PlayTimeData? DirtyPlayer(ICommonSession player) { if (!_playTimeData.TryGetValue(player, out var data) || !data.Initialized) return null; diff --git a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs index 13d0794dd5ebd1..f865b25bacfef4 100644 --- a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs +++ b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs @@ -14,6 +14,7 @@ using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -55,7 +56,7 @@ public override void Shutdown() _tracking.CalcTrackers -= CalcTrackers; } - private void CalcTrackers(IPlayerSession player, HashSet trackers) + private void CalcTrackers(ICommonSession player, HashSet trackers) { if (_afk.IsAfk(player)) return; @@ -67,7 +68,7 @@ private void CalcTrackers(IPlayerSession player, HashSet trackers) trackers.UnionWith(GetTimedRoles(player)); } - private bool IsPlayerAlive(IPlayerSession session) + private bool IsPlayerAlive(ICommonSession session) { var attached = session.AttachedEntity; if (attached == null) @@ -93,7 +94,7 @@ public IEnumerable GetTimedRoles(EntityUid mindId) } } - private IEnumerable GetTimedRoles(IPlayerSession session) + private IEnumerable GetTimedRoles(ICommonSession session) { var contentData = _playerManager.GetPlayerData(session.UserId).ContentData(); @@ -156,7 +157,7 @@ private void OnPlayerJoinedLobby(PlayerJoinedLobbyEvent ev) _tracking.QueueSendTimers(ev.PlayerSession); } - public bool IsAllowed(IPlayerSession player, string role) + public bool IsAllowed(ICommonSession player, string role) { if (!_prototypes.TryIndex(role, out var job) || job.Requirements == null || @@ -168,7 +169,7 @@ public bool IsAllowed(IPlayerSession player, string role) return JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes); } - public HashSet GetDisallowedJobs(IPlayerSession player) + public HashSet GetDisallowedJobs(ICommonSession player) { var roles = new HashSet(); if (!_cfg.GetCVar(CCVars.GameRoleTimers)) @@ -230,7 +231,7 @@ public void RemoveDisallowedJobs(NetUserId userId, ref List jobs) } } - public void PlayerRolesChanged(IPlayerSession player) + public void PlayerRolesChanged(ICommonSession player) { _tracking.QueueRefreshTrackers(player); } diff --git a/Content.Server/Players/PlayerData.cs b/Content.Server/Players/PlayerData.cs deleted file mode 100644 index b0ca6f3c189b42..00000000000000 --- a/Content.Server/Players/PlayerData.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Content.Shared.Players; -using Robust.Server.Player; -using Robust.Shared.Players; - -namespace Content.Server.Players -{ - public static class PlayerDataExt - { - /// - /// Gets the correctly cast instance of content player data from an engine player data storage. - /// - public static PlayerData? ContentData(this IPlayerSession session) - { - return session.Data.ContentData(); - } - - public static PlayerData? ContentData(this ICommonSession session) - { - return ((IPlayerSession) session).ContentData(); - } - - /// - /// Gets the mind that is associated with this player. - /// - public static EntityUid? GetMind(this IPlayerSession session) - { - return session.Data.ContentData()?.Mind; - } - } -} diff --git a/Content.Server/Players/PlayerSystem.cs b/Content.Server/Players/PlayerSystem.cs index 0c407aa876b0b5..c79683c338586f 100644 --- a/Content.Server/Players/PlayerSystem.cs +++ b/Content.Server/Players/PlayerSystem.cs @@ -1,11 +1,11 @@ using Content.Shared.Players; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.Players; public sealed class PlayerSystem : SharedPlayerSystem { - public override PlayerData? ContentData(ICommonSession? session) + public override ContentPlayerData? ContentData(ICommonSession? session) { return session?.ContentData(); } diff --git a/Content.Server/Pointing/EntitySystems/PointingSystem.cs b/Content.Server/Pointing/EntitySystems/PointingSystem.cs index b253e32e3713f2..6fcdfcf994b2f6 100644 --- a/Content.Server/Pointing/EntitySystems/PointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/PointingSystem.cs @@ -20,7 +20,6 @@ using Robust.Shared.Input.Binding; using Robust.Shared.Map; using Robust.Shared.Player; -using Robust.Shared.Players; using Robust.Shared.Replays; using Robust.Shared.Timing; @@ -170,7 +169,7 @@ public bool TryPoint(ICommonSession? session, EntityCoordinates coords, EntityUi } // Get players that are in range and whose visibility layer matches the arrow's. - bool ViewerPredicate(IPlayerSession playerSession) + bool ViewerPredicate(ICommonSession playerSession) { if (!_minds.TryGetMind(playerSession, out _, out var mind) || mind.CurrentEntity is not { Valid: true } ent || @@ -182,7 +181,7 @@ bool ViewerPredicate(IPlayerSession playerSession) } var viewers = Filter.Empty() - .AddWhere(session1 => ViewerPredicate((IPlayerSession) session1)) + .AddWhere(session1 => ViewerPredicate(session1)) .Recipients; string selfMessage; diff --git a/Content.Server/Popups/PopupSystem.cs b/Content.Server/Popups/PopupSystem.cs index 483d4f3d3f7a72..61ccaf4423afe2 100644 --- a/Content.Server/Popups/PopupSystem.cs +++ b/Content.Server/Popups/PopupSystem.cs @@ -4,7 +4,6 @@ using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Player; -using Robust.Shared.Players; namespace Content.Server.Popups { diff --git a/Content.Server/Prayer/PrayerSystem.cs b/Content.Server/Prayer/PrayerSystem.cs index be6ae80bfda85a..e20291cc0657e9 100644 --- a/Content.Server/Prayer/PrayerSystem.cs +++ b/Content.Server/Prayer/PrayerSystem.cs @@ -5,12 +5,11 @@ using Content.Server.Popups; using Content.Shared.Database; using Content.Shared.Popups; -using Robust.Server.Player; -using Robust.Shared.Player; using Content.Shared.Chat; using Content.Shared.Prayer; using Content.Shared.Verbs; using Robust.Server.GameObjects; +using Robust.Shared.Player; namespace Content.Server.Prayer; /// @@ -74,7 +73,7 @@ private void AddPrayVerb(EntityUid uid, PrayableComponent comp, GetVerbsEventThe IPlayerSession that sent the message /// The main message sent to the player via the chatbox /// The popup to notify the player, also prepended to the messageString - public void SendSubtleMessage(IPlayerSession target, IPlayerSession source, string messageString, string popupMessage) + public void SendSubtleMessage(ICommonSession target, ICommonSession source, string messageString, string popupMessage) { if (target.AttachedEntity == null) return; @@ -96,7 +95,7 @@ public void SendSubtleMessage(IPlayerSession target, IPlayerSession source, stri /// You may be wondering, "Why the admin chat, specifically? Nobody even reads it!" /// Exactly. /// - public void Pray(IPlayerSession sender, PrayableComponent comp, string message) + public void Pray(ICommonSession sender, PrayableComponent comp, string message) { if (sender.AttachedEntity == null) return; diff --git a/Content.Server/Preferences/Managers/IServerPreferencesManager.cs b/Content.Server/Preferences/Managers/IServerPreferencesManager.cs index 8c06e00ab139c1..a36b053717f7ac 100644 --- a/Content.Server/Preferences/Managers/IServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/IServerPreferencesManager.cs @@ -2,8 +2,8 @@ using System.Threading; using System.Threading.Tasks; using Content.Shared.Preferences; -using Robust.Server.Player; using Robust.Shared.Network; +using Robust.Shared.Player; namespace Content.Server.Preferences.Managers { @@ -11,12 +11,12 @@ public interface IServerPreferencesManager { void Init(); - Task LoadData(IPlayerSession session, CancellationToken cancel); - void OnClientDisconnected(IPlayerSession session); + Task LoadData(ICommonSession session, CancellationToken cancel); + void OnClientDisconnected(ICommonSession session); bool TryGetCachedPreferences(NetUserId userId, [NotNullWhen(true)] out PlayerPreferences? playerPreferences); PlayerPreferences GetPreferences(NetUserId userId); IEnumerable> GetSelectedProfilesForPlayers(List userIds); - bool HavePreferencesLoaded(IPlayerSession session); + bool HavePreferencesLoaded(ICommonSession session); } } diff --git a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs index ea04d00e828f42..a0b5e8ce652e76 100644 --- a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs @@ -8,9 +8,9 @@ using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; using Content.Shared.Roles; -using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -167,7 +167,7 @@ private async void HandleDeleteCharacterMessage(MsgDeleteCharacter message) } // Should only be called via UserDbDataManager. - public async Task LoadData(IPlayerSession session, CancellationToken cancel) + public async Task LoadData(ICommonSession session, CancellationToken cancel) { if (!ShouldStorePrefs(session.ConnectedClient.AuthType)) { @@ -207,12 +207,12 @@ async Task LoadPrefs() } } - public void OnClientDisconnected(IPlayerSession session) + public void OnClientDisconnected(ICommonSession session) { _cachedPlayerPrefs.Remove(session.UserId); } - public bool HavePreferencesLoaded(IPlayerSession session) + public bool HavePreferencesLoaded(ICommonSession session) { return _cachedPlayerPrefs.ContainsKey(session.UserId); } diff --git a/Content.Server/Pulling/PullingSystem.cs b/Content.Server/Pulling/PullingSystem.cs index f7ea0aae57f7d1..69bb7c93704ede 100644 --- a/Content.Server/Pulling/PullingSystem.cs +++ b/Content.Server/Pulling/PullingSystem.cs @@ -4,7 +4,7 @@ using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Input.Binding; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.Pulling { diff --git a/Content.Server/Radiation/Systems/RadiationSystem.Debug.cs b/Content.Server/Radiation/Systems/RadiationSystem.Debug.cs index 97f2e485ca3cfb..56806d8c9c1bb8 100644 --- a/Content.Server/Radiation/Systems/RadiationSystem.Debug.cs +++ b/Content.Server/Radiation/Systems/RadiationSystem.Debug.cs @@ -7,7 +7,7 @@ using Robust.Shared.Console; using Robust.Shared.Enums; using Robust.Shared.Map.Components; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.Radiation.Systems; diff --git a/Content.Server/Research/Systems/ResearchSystem.Client.cs b/Content.Server/Research/Systems/ResearchSystem.Client.cs index e813f09ff9f060..135ef8fe8892e0 100644 --- a/Content.Server/Research/Systems/ResearchSystem.Client.cs +++ b/Content.Server/Research/Systems/ResearchSystem.Client.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Power.EntitySystems; using Content.Shared.Research.Components; -using Robust.Server.Player; namespace Content.Server.Research.Systems; @@ -46,7 +45,7 @@ private void OnConsoleSelect(EntityUid uid, ResearchClientComponent component, C if (!this.IsPowered(uid, EntityManager)) return; - _uiSystem.TryToggleUi(uid, ResearchClientUiKey.Key, (IPlayerSession) args.Session); + _uiSystem.TryToggleUi(uid, ResearchClientUiKey.Key, args.Session); } #endregion diff --git a/Content.Server/Salvage/SalvageRulerCommand.cs b/Content.Server/Salvage/SalvageRulerCommand.cs index b0a64508c563cf..a1fd60974116e3 100644 --- a/Content.Server/Salvage/SalvageRulerCommand.cs +++ b/Content.Server/Salvage/SalvageRulerCommand.cs @@ -1,6 +1,5 @@ using Content.Server.Administration; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; @@ -26,7 +25,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError(Loc.GetString("shell-only-players-can-run-this-command")); return; diff --git a/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs b/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs index 0b9148f0fbbc87..cc20b7194691ca 100644 --- a/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs +++ b/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs @@ -4,7 +4,6 @@ using Content.Server.NodeContainer; using Content.Server.NodeContainer.NodeGroups; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Sandbox.Commands @@ -20,7 +19,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) { var sandboxManager = EntitySystem.Get(); var adminManager = IoCManager.Resolve(); - if (shell.IsClient && (!sandboxManager.IsSandboxEnabled && !adminManager.HasAdminFlag((IPlayerSession)shell.Player!, AdminFlags.Mapping))) + if (shell.IsClient && (!sandboxManager.IsSandboxEnabled && !adminManager.HasAdminFlag(shell.Player!, AdminFlags.Mapping))) { shell.WriteError("You are not currently able to use mapping commands."); } diff --git a/Content.Server/Sandbox/SandboxSystem.cs b/Content.Server/Sandbox/SandboxSystem.cs index ec9b1a0c3c9548..194cf5984386f2 100644 --- a/Content.Server/Sandbox/SandboxSystem.cs +++ b/Content.Server/Sandbox/SandboxSystem.cs @@ -13,6 +13,7 @@ using Robust.Server.Placement; using Robust.Server.Player; using Robust.Shared.Enums; +using Robust.Shared.Player; namespace Content.Server.Sandbox { diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs index cd4f2ea23b9dbf..63b4d9daef91b4 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs @@ -1,7 +1,7 @@ using Content.Shared.SensorMonitoring; using Robust.Server.Player; using Robust.Shared.Collections; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.SensorMonitoring; diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs index a09badcd59599f..6c0dddeb266958 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs @@ -1,7 +1,5 @@ using Content.Server.DeviceNetwork.Components; using Content.Shared.SensorMonitoring; -using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Collections; using ConsoleUIState = Content.Shared.SensorMonitoring.SensorMonitoringConsoleBoundInterfaceState; using IncrementalUIState = Content.Shared.SensorMonitoring.SensorMonitoringIncrementalUpdate; @@ -130,7 +128,7 @@ private static void ConsoleUIClosed( if (!args.UiKey.Equals(SensorMonitoringConsoleUiKey.Key)) return; - if (args.Session is not IPlayerSession player) + if (args.Session is not { } player) return; component.InitialUIStateSent.Remove(player); diff --git a/Content.Server/ServerUpdates/ServerUpdateManager.cs b/Content.Server/ServerUpdates/ServerUpdateManager.cs index 769c5d58d7e90c..f4e54984e9be0c 100644 --- a/Content.Server/ServerUpdates/ServerUpdateManager.cs +++ b/Content.Server/ServerUpdates/ServerUpdateManager.cs @@ -6,6 +6,7 @@ using Robust.Server.ServerStatus; using Robust.Shared.Configuration; using Robust.Shared.Enums; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.ServerUpdates; diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index 1a1debc9e3bd3c..3ef3d97a21aa6e 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -20,7 +20,6 @@ using Content.Shared.Tiles; using Robust.Server.GameObjects; using Robust.Server.Maps; -using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -140,7 +139,7 @@ public override void Shutdown() /// private void OnShuttleRequestPosition(EmergencyShuttleRequestPositionMessage msg, EntitySessionEventArgs args) { - if (!_admin.IsAdmin((IPlayerSession) args.SenderSession)) + if (!_admin.IsAdmin(args.SenderSession)) return; var player = args.SenderSession.AttachedEntity; diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs index 31d826087d5524..c0804202669144 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs @@ -229,7 +229,7 @@ private void RemoveProvidedItems(EntityUid chassis, EntityUid uid, BorgChassisCo if (!TryComp(chassis, out var hands)) return; - if (LifeStage(uid) >= EntityLifeStage.Terminating) + if (TerminatingOrDeleted(uid)) { foreach (var (hand, item) in component.ProvidedItems) { diff --git a/Content.Server/Silicons/Borgs/BorgSystem.cs b/Content.Server/Silicons/Borgs/BorgSystem.cs index 611dfa6ea2a40b..883cb3b3d84a87 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.cs @@ -21,7 +21,7 @@ using Content.Shared.Wires; using Robust.Server.GameObjects; using Robust.Shared.Containers; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Random; namespace Content.Server.Silicons.Borgs; diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index 1d5c2e35e8b744..41ddd9651b2f19 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -18,7 +18,6 @@ using Content.Shared.Stunnable; using Content.Shared.Wires; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Prototypes; using Robust.Shared.Toolshed; @@ -94,7 +93,7 @@ private void OnBoundUIOpened(EntityUid uid, SiliconLawBoundComponent component, HashSet? radioChannels = intrinsicRadio?.Channels; var state = new SiliconLawBuiState(GetLaws(uid), radioChannels); - _userInterface.TrySetUiState(args.Entity, SiliconLawsUiKey.Key, state, (IPlayerSession) args.Session); + _userInterface.TrySetUiState(args.Entity, SiliconLawsUiKey.Key, state, args.Session); } private void OnPlayerSpawnComplete(EntityUid uid, SiliconLawBoundComponent component, PlayerSpawnCompleteEvent args) @@ -170,7 +169,7 @@ private void OnEmagMindRemoved(EntityUid uid, EmagSiliconLawComponent component, if (component.AntagonistRole == null) return; - _roles.MindTryRemoveRole(args.OldMindId); + _roles.MindTryRemoveRole(args.Mind); } private void EnsureEmaggedRole(EntityUid uid, EmagSiliconLawComponent component) diff --git a/Content.Server/Station/Systems/StationJobsSystem.cs b/Content.Server/Station/Systems/StationJobsSystem.cs index 2709bc2072b1ff..eeaace03b2cb5c 100644 --- a/Content.Server/Station/Systems/StationJobsSystem.cs +++ b/Content.Server/Station/Systems/StationJobsSystem.cs @@ -41,7 +41,7 @@ public override void Update(float _) if (_availableJobsDirty) { _cachedAvailableJobs = GenerateJobsAvailableEvent(); - RaiseNetworkEvent(_cachedAvailableJobs, Filter.Empty().AddPlayers(_playerManager.ServerSessions)); + RaiseNetworkEvent(_cachedAvailableJobs, Filter.Empty().AddPlayers(_playerManager.Sessions)); _availableJobsDirty = false; } } diff --git a/Content.Server/Storage/EntitySystems/StorageSystem.cs b/Content.Server/Storage/EntitySystems/StorageSystem.cs index 3430449957e004..8b4ae1c76f9f4f 100644 --- a/Content.Server/Storage/EntitySystems/StorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/StorageSystem.cs @@ -9,7 +9,6 @@ using Content.Shared.Timing; using Content.Shared.Verbs; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -135,7 +134,7 @@ public override void PlayPickupAnimation(EntityUid uid, EntityCoordinates initia /// If the user has nested-UIs open (e.g., PDA UI open when pda is in a backpack), close them. /// /// - public void CloseNestedInterfaces(EntityUid uid, IPlayerSession session, StorageComponent? storageComp = null) + public void CloseNestedInterfaces(EntityUid uid, ICommonSession session, StorageComponent? storageComp = null) { if (!Resolve(uid, ref storageComp)) return; diff --git a/Content.Server/Tabletop/TabletopSession.cs b/Content.Server/Tabletop/TabletopSession.cs index d94b4fd6575581..5e7c6ac02e610c 100644 --- a/Content.Server/Tabletop/TabletopSession.cs +++ b/Content.Server/Tabletop/TabletopSession.cs @@ -1,6 +1,6 @@ using System.Numerics; -using Robust.Server.Player; using Robust.Shared.Map; +using Robust.Shared.Player; namespace Content.Server.Tabletop { @@ -17,7 +17,7 @@ public sealed class TabletopSession /// /// The set of players currently playing this tabletop game. /// - public readonly Dictionary Players = new(); + public readonly Dictionary Players = new(); /// /// All entities bound to this session. If you create an entity for this session, you have to add it here. diff --git a/Content.Server/Tabletop/TabletopSystem.Session.cs b/Content.Server/Tabletop/TabletopSystem.Session.cs index e9dea0c66a21f9..8f1bc7005dc032 100644 --- a/Content.Server/Tabletop/TabletopSystem.Session.cs +++ b/Content.Server/Tabletop/TabletopSystem.Session.cs @@ -1,7 +1,7 @@ using System.Numerics; using Content.Server.Tabletop.Components; using Content.Shared.Tabletop.Events; -using Robust.Server.Player; +using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.Tabletop @@ -66,7 +66,7 @@ public void CleanupSession(EntityUid uid) /// /// The player session in question. /// The UID of the tabletop game entity. - public void OpenSessionFor(IPlayerSession player, EntityUid uid) + public void OpenSessionFor(ICommonSession player, EntityUid uid) { if (!EntityManager.TryGetComponent(uid, out TabletopGameComponent? tabletop) || player.AttachedEntity is not {Valid: true} attachedEntity) return; @@ -98,7 +98,7 @@ public void OpenSessionFor(IPlayerSession player, EntityUid uid) /// The player in question. /// The UID of the tabletop game entity. /// Whether to remove the from the player's attached entity. - public void CloseSessionFor(IPlayerSession player, EntityUid uid, bool removeGamerComponent = true) + public void CloseSessionFor(ICommonSession player, EntityUid uid, bool removeGamerComponent = true) { if (!EntityManager.TryGetComponent(uid, out TabletopGameComponent? tabletop) || tabletop.Session is not { } session) return; @@ -129,7 +129,7 @@ public void CloseSessionFor(IPlayerSession player, EntityUid uid, bool removeGam /// The player in question. /// An offset from the tabletop position for the camera. Zero by default. /// The UID of the camera entity. - private EntityUid CreateCamera(TabletopGameComponent tabletop, IPlayerSession player, Vector2 offset = default) + private EntityUid CreateCamera(TabletopGameComponent tabletop, ICommonSession player, Vector2 offset = default) { DebugTools.AssertNotNull(tabletop.Session); diff --git a/Content.Server/Tabletop/TabletopSystem.cs b/Content.Server/Tabletop/TabletopSystem.cs index 2e271080d07f5c..b81331d62ee2c5 100644 --- a/Content.Server/Tabletop/TabletopSystem.cs +++ b/Content.Server/Tabletop/TabletopSystem.cs @@ -9,7 +9,6 @@ using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Map; using Robust.Shared.Utility; @@ -42,7 +41,7 @@ public override void Initialize() private void OnTabletopRequestTakeOut(TabletopRequestTakeOut msg, EntitySessionEventArgs args) { - if (args.SenderSession is not IPlayerSession playerSession) + if (args.SenderSession is not { } playerSession) return; var table = GetEntity(msg.TableUid); @@ -105,7 +104,7 @@ private void OnInteractUsing(EntityUid uid, TabletopGameComponent component, Int protected override void OnTabletopMove(TabletopMoveEvent msg, EntitySessionEventArgs args) { - if (args.SenderSession is not IPlayerSession playerSession) + if (args.SenderSession is not { } playerSession) return; if (!TryComp(GetEntity(msg.TableUid), out TabletopGameComponent? tabletop) || tabletop.Session is not { } session) @@ -155,7 +154,7 @@ private void OnGameShutdown(EntityUid uid, TabletopGameComponent component, Comp private void OnStopPlaying(TabletopStopPlayingEvent msg, EntitySessionEventArgs args) { - CloseSessionFor((IPlayerSession)args.SenderSession, GetEntity(msg.TableUid)); + CloseSessionFor(args.SenderSession, GetEntity(msg.TableUid)); } private void OnPlayerDetached(EntityUid uid, TabletopGamerComponent component, PlayerDetachedEvent args) diff --git a/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs b/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs index d2b3cc261cd53c..f113e496555cfb 100644 --- a/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs +++ b/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs @@ -1,7 +1,7 @@ using Content.Server.Administration; using Content.Server.Administration.Managers; using Content.Shared.Administration; -using Robust.Server.Player; +using Robust.Shared.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Syntax; @@ -25,7 +25,7 @@ public sealed class ACmdCommand : ToolshedCommand public bool CanInvoke( [CommandInvocationContext] IInvocationContext ctx, [PipedArgument] CommandSpec command, - [CommandArgument] ValueRef player + [CommandArgument] ValueRef player ) { // Deliberately discard the error. diff --git a/Content.Server/Toolshed/Commands/VisualizeCommand.cs b/Content.Server/Toolshed/Commands/VisualizeCommand.cs index 4ef08a91bf015d..2225bfaf447478 100644 --- a/Content.Server/Toolshed/Commands/VisualizeCommand.cs +++ b/Content.Server/Toolshed/Commands/VisualizeCommand.cs @@ -4,7 +4,6 @@ using Content.Shared.Administration; using Content.Shared.Bql; using Content.Shared.Eui; -using Robust.Server.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; @@ -30,7 +29,7 @@ [PipedArgument] IEnumerable input var ui = new ToolshedVisualizeEui( input.Select(e => (EntName(e), EntityManager.GetNetEntity(e))).ToArray() ); - _euiManager.OpenEui(ui, (IPlayerSession) ctx.Session); + _euiManager.OpenEui(ui, ctx.Session); _euiManager.QueueStateUpdate(ui); } } diff --git a/Content.Server/Traitor/Uplink/Commands/AddUplinkCommand.cs b/Content.Server/Traitor/Uplink/Commands/AddUplinkCommand.cs index 1feab11b99ad14..fd656a9f717417 100644 --- a/Content.Server/Traitor/Uplink/Commands/AddUplinkCommand.cs +++ b/Content.Server/Traitor/Uplink/Commands/AddUplinkCommand.cs @@ -5,6 +5,7 @@ using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; +using Robust.Shared.Player; namespace Content.Server.Traitor.Uplink.Commands { @@ -36,7 +37,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - IPlayerSession? session; + ICommonSession? session; if (args.Length > 0) { // Get player entity @@ -48,7 +49,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) } else { - session = (IPlayerSession?) shell.Player; + session = shell.Player; } if (session?.AttachedEntity is not { } user) diff --git a/Content.Server/UserInterface/ActivatableUIComponent.cs b/Content.Server/UserInterface/ActivatableUIComponent.cs index bb020608e2042e..34f9c0f3970c42 100644 --- a/Content.Server/UserInterface/ActivatableUIComponent.cs +++ b/Content.Server/UserInterface/ActivatableUIComponent.cs @@ -1,4 +1,4 @@ -using Robust.Server.Player; +using Robust.Shared.Player; using Robust.Shared.Reflection; using Robust.Shared.Serialization; @@ -65,7 +65,7 @@ public sealed partial class ActivatableUIComponent : Component, /// NOTE: DO NOT DIRECTLY SET, USE ActivatableUISystem.SetCurrentSingleUser /// [ViewVariables] - public IPlayerSession? CurrentSingleUser; + public ICommonSession? CurrentSingleUser; void ISerializationHooks.AfterDeserialization() { diff --git a/Content.Server/UserInterface/ActivatableUISystem.cs b/Content.Server/UserInterface/ActivatableUISystem.cs index 59086415b46ca6..adeeed7c19d393 100644 --- a/Content.Server/UserInterface/ActivatableUISystem.cs +++ b/Content.Server/UserInterface/ActivatableUISystem.cs @@ -8,7 +8,7 @@ using Content.Shared.UserInterface; using Content.Shared.Verbs; using Robust.Server.GameObjects; -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.UserInterface; @@ -173,7 +173,7 @@ private bool InteractUI(EntityUid user, EntityUid uiEntity, ActivatableUICompone return true; } - public void SetCurrentSingleUser(EntityUid uid, IPlayerSession? v, ActivatableUIComponent? aui = null) + public void SetCurrentSingleUser(EntityUid uid, ICommonSession? v, ActivatableUIComponent? aui = null) { if (!Resolve(uid, ref aui)) return; @@ -231,9 +231,9 @@ public UserOpenActivatableUIAttemptEvent(EntityUid who, EntityUid target) public sealed class AfterActivatableUIOpenEvent : EntityEventArgs { public EntityUid User { get; } - public readonly IPlayerSession Session; + public readonly ICommonSession Session; - public AfterActivatableUIOpenEvent(EntityUid who, IPlayerSession session) + public AfterActivatableUIOpenEvent(EntityUid who, ICommonSession session) { User = who; Session = session; diff --git a/Content.Server/UserInterface/StatValuesCommand.cs b/Content.Server/UserInterface/StatValuesCommand.cs index b13b5963231365..fe2ee380feaebf 100644 --- a/Content.Server/UserInterface/StatValuesCommand.cs +++ b/Content.Server/UserInterface/StatValuesCommand.cs @@ -8,7 +8,6 @@ using Content.Shared.Research.Prototypes; using Content.Shared.UserInterface; using Content.Shared.Weapons.Melee; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -27,7 +26,7 @@ public sealed class StatValuesCommand : IConsoleCommand public string Help => $"{Command} "; public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession pSession) + if (shell.Player is not { } pSession) { shell.WriteError(Loc.GetString("stat-values-server")); return; diff --git a/Content.Server/Verbs/VerbSystem.cs b/Content.Server/Verbs/VerbSystem.cs index 6d12b08e865147..e304c6b4af0739 100644 --- a/Content.Server/Verbs/VerbSystem.cs +++ b/Content.Server/Verbs/VerbSystem.cs @@ -6,7 +6,6 @@ using Content.Shared.Database; using Content.Shared.Hands.Components; using Content.Shared.Verbs; -using Robust.Server.Player; namespace Content.Server.Verbs { @@ -25,7 +24,7 @@ public override void Initialize() private void HandleVerbRequest(RequestServerVerbsEvent args, EntitySessionEventArgs eventArgs) { - var player = (IPlayerSession) eventArgs.SenderSession; + var player = eventArgs.SenderSession; if (!EntityManager.EntityExists(GetEntity(args.EntityUid))) { @@ -43,7 +42,7 @@ private void HandleVerbRequest(RequestServerVerbsEvent args, EntitySessionEventA // this, and some verbs (e.g. view variables) won't even care about whether an entity is accessible through // the entity menu or not. - var force = args.AdminRequest && eventArgs.SenderSession is IPlayerSession playerSession && + var force = args.AdminRequest && eventArgs.SenderSession is { } playerSession && _adminMgr.HasAdminFlag(playerSession, AdminFlags.Admin); List verbTypes = new(); diff --git a/Content.Server/Voting/IVoteHandle.cs b/Content.Server/Voting/IVoteHandle.cs index 13f64e6ef8addd..869f2017d70304 100644 --- a/Content.Server/Voting/IVoteHandle.cs +++ b/Content.Server/Voting/IVoteHandle.cs @@ -1,5 +1,5 @@ using Content.Server.Voting.Managers; -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Voting { @@ -75,7 +75,7 @@ public interface IVoteHandle /// /// is not a valid option ID. /// - void CastVote(IPlayerSession session, int? optionId); + void CastVote(ICommonSession session, int? optionId); /// /// Cancel this vote. diff --git a/Content.Server/Voting/Managers/IVoteManager.cs b/Content.Server/Voting/Managers/IVoteManager.cs index 6a92e70fff7096..d95fac9ae92120 100644 --- a/Content.Server/Voting/Managers/IVoteManager.cs +++ b/Content.Server/Voting/Managers/IVoteManager.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; using Content.Shared.Voting; -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Voting.Managers { @@ -41,7 +41,7 @@ public interface IVoteManager /// True if can start votes right now, /// and if provided if they can start votes of type . /// - bool CanCallVote(IPlayerSession initiator, StandardVoteType? voteType = null); + bool CanCallVote(ICommonSession initiator, StandardVoteType? voteType = null); /// /// Initiate a standard vote such as restart round, that can be initiated by players. @@ -51,7 +51,7 @@ public interface IVoteManager /// If null it is assumed to be an automatic vote by the server. /// /// The type of standard vote to make. - void CreateStandardVote(IPlayerSession? initiator, StandardVoteType voteType); + void CreateStandardVote(ICommonSession? initiator, StandardVoteType voteType); /// /// Create a non-standard vote with special parameters. diff --git a/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs b/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs index 55e88e2a8c77d7..e1bffa769da5f6 100644 --- a/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs +++ b/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs @@ -6,8 +6,8 @@ using Content.Shared.CCVar; using Content.Shared.Database; using Content.Shared.Voting; -using Robust.Server.Player; using Robust.Shared.Configuration; +using Robust.Shared.Player; using Robust.Shared.Random; namespace Content.Server.Voting.Managers @@ -21,7 +21,7 @@ public sealed partial class VoteManager {StandardVoteType.Map, CCVars.VoteMapEnabled}, }; - public void CreateStandardVote(IPlayerSession? initiator, StandardVoteType voteType) + public void CreateStandardVote(ICommonSession? initiator, StandardVoteType voteType) { if (initiator != null) _adminLogger.Add(LogType.Vote, LogImpact.Medium, $"{initiator} initiated a {voteType.ToString()} vote"); @@ -47,7 +47,7 @@ public void CreateStandardVote(IPlayerSession? initiator, StandardVoteType voteT TimeoutStandardVote(voteType); } - private void CreateRestartVote(IPlayerSession? initiator) + private void CreateRestartVote(ICommonSession? initiator) { var alone = _playerManager.PlayerCount == 1 && initiator != null; var options = new VoteOptions @@ -100,7 +100,7 @@ private void CreateRestartVote(IPlayerSession? initiator) vote.CastVote(initiator, 0); } - foreach (var player in _playerManager.ServerSessions) + foreach (var player in _playerManager.Sessions) { if (player != initiator) { @@ -110,7 +110,7 @@ private void CreateRestartVote(IPlayerSession? initiator) } } - private void CreatePresetVote(IPlayerSession? initiator) + private void CreatePresetVote(ICommonSession? initiator) { var presets = GetGamePresets(); @@ -156,7 +156,7 @@ private void CreatePresetVote(IPlayerSession? initiator) }; } - private void CreateMapVote(IPlayerSession? initiator) + private void CreateMapVote(ICommonSession? initiator) { var maps = _gameMapManager.CurrentlyEligibleMaps().ToDictionary(map => map, map => map.MapName); diff --git a/Content.Server/Voting/Managers/VoteManager.cs b/Content.Server/Voting/Managers/VoteManager.cs index 98ad8d8341f452..90089afb544d4e 100644 --- a/Content.Server/Voting/Managers/VoteManager.cs +++ b/Content.Server/Voting/Managers/VoteManager.cs @@ -16,6 +16,7 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -45,7 +46,7 @@ public sealed partial class VoteManager : IVoteManager private readonly Dictionary _standardVoteTimeout = new(); private readonly Dictionary _voteTimeout = new(); - private readonly HashSet _playerCanCallVoteDirty = new(); + private readonly HashSet _playerCanCallVoteDirty = new(); private readonly StandardVoteType[] _standardVoteTypeValues = Enum.GetValues(); public void Initialize() @@ -106,7 +107,7 @@ private void PlayerManagerOnPlayerStatusChanged(object? sender, SessionStatusEve } } - private void CastVote(VoteReg v, IPlayerSession player, int? option) + private void CastVote(VoteReg v, ICommonSession player, int? option) { if (!IsValidOption(v, option)) throw new ArgumentOutOfRangeException(nameof(option), "Invalid vote option ID"); @@ -228,7 +229,7 @@ public IVoteHandle CreateVote(VoteOptions options) private void SendUpdates(VoteReg v) { - foreach (var player in _playerManager.ServerSessions) + foreach (var player in _playerManager.Sessions) { SendSingleUpdate(v, player); } @@ -237,7 +238,7 @@ private void SendUpdates(VoteReg v) v.Dirty = false; } - private void SendSingleUpdate(VoteReg v, IPlayerSession player) + private void SendSingleUpdate(VoteReg v, ICommonSession player) { var msg = new MsgVoteData(); @@ -277,10 +278,10 @@ private void SendSingleUpdate(VoteReg v, IPlayerSession player) private void DirtyCanCallVoteAll() { - _playerCanCallVoteDirty.UnionWith(_playerManager.ServerSessions); + _playerCanCallVoteDirty.UnionWith(_playerManager.Sessions); } - private void SendUpdateCanCallVote(IPlayerSession player) + private void SendUpdateCanCallVote(ICommonSession player) { var msg = new MsgVoteCanCall(); msg.CanCall = CanCallVote(player, null, out var isAdmin, out var timeSpan); @@ -306,7 +307,7 @@ private void SendUpdateCanCallVote(IPlayerSession player) } private bool CanCallVote( - IPlayerSession initiator, + ICommonSession initiator, StandardVoteType? voteType, out bool isAdmin, out TimeSpan timeSpan) @@ -353,7 +354,7 @@ private bool CanCallVote( return !_voteTimeout.TryGetValue(initiator.UserId, out timeSpan); } - public bool CanCallVote(IPlayerSession initiator, StandardVoteType? voteType = null) + public bool CanCallVote(ICommonSession initiator, StandardVoteType? voteType = null) { return CanCallVote(initiator, voteType, out _, out _); } @@ -406,14 +407,14 @@ public bool TryGetVote(int voteId, [NotNullWhen(true)] out IVoteHandle? vote) return false; } - private void DirtyCanCallVote(IPlayerSession player) + private void DirtyCanCallVote(ICommonSession player) { _playerCanCallVoteDirty.Add(player); } #region Preset Votes - private void WirePresetVoteInitiator(VoteOptions options, IPlayerSession? player) + private void WirePresetVoteInitiator(VoteOptions options, ICommonSession? player) { if (player != null) { @@ -432,13 +433,13 @@ private void WirePresetVoteInitiator(VoteOptions options, IPlayerSession? player private sealed class VoteReg { public readonly int Id; - public readonly Dictionary CastVotes = new(); + public readonly Dictionary CastVotes = new(); public readonly VoteEntry[] Entries; public readonly string Title; public readonly string InitiatorText; public readonly TimeSpan StartTime; public readonly TimeSpan EndTime; - public readonly HashSet VotesDirty = new(); + public readonly HashSet VotesDirty = new(); public bool Cancelled; public bool Finished; @@ -446,10 +447,10 @@ private sealed class VoteReg public VoteFinishedEventHandler? OnFinished; public VoteCancelledEventHandler? OnCancelled; - public IPlayerSession? Initiator { get; } + public ICommonSession? Initiator { get; } public VoteReg(int id, VoteEntry[] entries, string title, string initiatorText, - IPlayerSession? initiator, TimeSpan start, TimeSpan end) + ICommonSession? initiator, TimeSpan start, TimeSpan end) { Id = id; Entries = entries; @@ -517,7 +518,7 @@ public bool IsValidOption(int optionId) return _mgr.IsValidOption(_reg, optionId); } - public void CastVote(IPlayerSession session, int? optionId) + public void CastVote(ICommonSession session, int? optionId) { _mgr.CastVote(_reg, session, optionId); } diff --git a/Content.Server/Voting/VoteCommands.cs b/Content.Server/Voting/VoteCommands.cs index cb296a7d589a96..498c9d049417be 100644 --- a/Content.Server/Voting/VoteCommands.cs +++ b/Content.Server/Voting/VoteCommands.cs @@ -6,7 +6,6 @@ using Content.Shared.Administration; using Content.Shared.Database; using Content.Shared.Voting; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Voting @@ -36,14 +35,14 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var mgr = IoCManager.Resolve(); - if (shell.Player != null && !mgr.CanCallVote((IPlayerSession) shell.Player, type)) + if (shell.Player != null && !mgr.CanCallVote(shell.Player, type)) { _adminLogger.Add(LogType.Vote, LogImpact.Medium, $"{shell.Player} failed to start {type.ToString()} vote"); shell.WriteError(Loc.GetString("cmd-createvote-cannot-call-vote-now")); return; } - mgr.CreateStandardVote((IPlayerSession?) shell.Player, type); + mgr.CreateStandardVote(shell.Player, type); } public CompletionResult GetCompletion(IConsoleShell shell, string[] args) @@ -92,7 +91,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) options.Options.Add((args[i], i)); } - options.SetInitiatorOrServer((IPlayerSession?) shell.Player); + options.SetInitiatorOrServer(shell.Player); if (shell.Player != null) _adminLogger.Add(LogType.Vote, LogImpact.Medium, $"{shell.Player} initiated a custom vote: {options.Title} - {string.Join("; ", options.Options.Select(x => x.text))}"); @@ -187,7 +186,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - vote.CastVote((IPlayerSession) shell.Player!, optionN); + vote.CastVote(shell.Player!, optionN); } } diff --git a/Content.Server/Voting/VoteOptions.cs b/Content.Server/Voting/VoteOptions.cs index 6e6d0465edf16a..5475d10d3297af 100644 --- a/Content.Server/Voting/VoteOptions.cs +++ b/Content.Server/Voting/VoteOptions.cs @@ -1,4 +1,4 @@ -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Voting @@ -16,7 +16,7 @@ public sealed class VoteOptions /// /// The player that started the vote. Used to keep track of player cooldowns to avoid vote spam. /// - public IPlayerSession? InitiatorPlayer { get; set; } + public ICommonSession? InitiatorPlayer { get; set; } /// /// The shown title of the vote. @@ -43,13 +43,13 @@ public sealed class VoteOptions /// Sets and /// by setting the latter to the player's name. /// - public void SetInitiator(IPlayerSession player) + public void SetInitiator(ICommonSession player) { InitiatorPlayer = player; InitiatorText = player.Name; } - public void SetInitiatorOrServer(IPlayerSession? player) + public void SetInitiatorOrServer(ICommonSession? player) { if (player != null) { diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index 1b6b2ebef1cff3..3d9c3e821940fc 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -24,11 +24,9 @@ using Content.Shared.Tag; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Melee.Events; -using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Player; -using Robust.Shared.Players; using Robust.Shared.Random; namespace Content.Server.Weapons.Melee; @@ -174,7 +172,7 @@ protected override bool InRange(EntityUid user, EntityUid target, float range, I EntityCoordinates targetCoordinates; Angle targetLocalAngle; - if (session is IPlayerSession pSession) + if (session is { } pSession) { (targetCoordinates, targetLocalAngle) = _lag.GetCoordinatesAngle(target, pSession); } diff --git a/Content.Server/Wires/WiresSystem.cs b/Content.Server/Wires/WiresSystem.cs index e75ad0a9efb7e3..b6452efa8a6f03 100644 --- a/Content.Server/Wires/WiresSystem.cs +++ b/Content.Server/Wires/WiresSystem.cs @@ -16,7 +16,7 @@ using Content.Shared.Tools.Components; using Content.Shared.Wires; using Robust.Server.GameObjects; -using Robust.Server.Player; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; @@ -616,7 +616,7 @@ private void UpdateUserInterface(EntityUid uid, WiresComponent? wires = null, Us wires.WireSeed), ui: ui); } - public void OpenUserInterface(EntityUid uid, IPlayerSession player) + public void OpenUserInterface(EntityUid uid, ICommonSession player) { if (_uiSystem.TryGetUi(uid, WiresUiKey.Key, out var ui)) _uiSystem.OpenUi(ui, player); diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs index 49036fb19d8f2b..9200928d662459 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs @@ -17,7 +17,6 @@ using Content.Shared.Xenoarchaeology.XenoArtifacts; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Timing; @@ -229,7 +228,7 @@ private void UpdateUserInterface(EntityUid uid, AnalysisConsoleComponent? compon /// private void OnServerSelectionMessage(EntityUid uid, AnalysisConsoleComponent component, AnalysisConsoleServerSelectionMessage args) { - _ui.TryOpen(uid, ResearchClientUiKey.Key, (IPlayerSession) args.Session); + _ui.TryOpen(uid, ResearchClientUiKey.Key, args.Session); } /// diff --git a/Content.Shared/Administration/Managers/ISharedAdminManager.cs b/Content.Shared/Administration/Managers/ISharedAdminManager.cs index 7e01c81433262b..22d918d4a33ca2 100644 --- a/Content.Shared/Administration/Managers/ISharedAdminManager.cs +++ b/Content.Shared/Administration/Managers/ISharedAdminManager.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Shared.Administration.Managers; diff --git a/Content.Shared/Buckle/SharedBuckleSystem.cs b/Content.Shared/Buckle/SharedBuckleSystem.cs index 7edf2448aed99b..1441745b5dac4d 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.cs @@ -11,7 +11,7 @@ using Robust.Shared.Map; using Robust.Shared.Network; using Robust.Shared.Physics.Systems; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Shared.Buckle; diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs index d0c3be3b311cdd..dfa72fcfb7fa5f 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs @@ -6,7 +6,7 @@ using Content.Shared.Localizations; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Shared.Hands.EntitySystems; diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index 4a9a43ca2c2b4f..7981deaee66e6c 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -34,7 +34,7 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.Timing; diff --git a/Content.Shared/Mind/Components/MindContainerComponent.cs b/Content.Shared/Mind/Components/MindContainerComponent.cs index ca0f14d994cc08..62b26cbd353575 100644 --- a/Content.Shared/Mind/Components/MindContainerComponent.cs +++ b/Content.Shared/Mind/Components/MindContainerComponent.cs @@ -1,24 +1,25 @@ using System.Diagnostics.CodeAnalysis; +using Robust.Shared.GameStates; namespace Content.Shared.Mind.Components { /// - /// Stores a on a mob. + /// This component indicates that this entity may have mind, which is simply an entity with a . + /// The mind entity is not actually stored in a "container", but is simply stored in nullspace. /// - [RegisterComponent, Access(typeof(SharedMindSystem))] + [RegisterComponent, Access(typeof(SharedMindSystem)), NetworkedComponent, AutoGenerateComponentState] public sealed partial class MindContainerComponent : Component { /// /// The mind controlling this mob. Can be null. /// - [ViewVariables] + [DataField, AutoNetworkedField] [Access(typeof(SharedMindSystem), Other = AccessPermissions.ReadWriteExecute)] // FIXME Friends public EntityUid? Mind { get; set; } /// /// True if we have a mind, false otherwise. /// - [ViewVariables] [MemberNotNullWhen(true, nameof(Mind))] public bool HasMind => Mind != null; @@ -26,7 +27,7 @@ public sealed partial class MindContainerComponent : Component /// Whether examining should show information about the mind or not. /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("showExamineInfo")] + [DataField("showExamineInfo"), AutoNetworkedField] public bool ShowExamineInfo { get; set; } /// @@ -38,19 +39,59 @@ public sealed partial class MindContainerComponent : Component public bool GhostOnShutdown { get; set; } = true; } - public sealed class MindRemovedMessage : EntityEventArgs + public abstract class MindEvent : EntityEventArgs { - public EntityUid OldMindId; - public MindComponent OldMind; + public readonly Entity Mind; + public readonly Entity Container; - public MindRemovedMessage(EntityUid oldMindId, MindComponent oldMind) + public MindEvent(Entity mind, Entity container) { - OldMindId = oldMindId; - OldMind = oldMind; + Mind = mind; + Container = container; } } - public sealed class MindAddedMessage : EntityEventArgs + /// + /// Event raised directed at a mind-container when a mind gets removed. + /// + public sealed class MindRemovedMessage : MindEvent { + public MindRemovedMessage(Entity mind, Entity container) + : base(mind, container) + { + } + } + + /// + /// Event raised directed at a mind when it gets removed from a mind-container. + /// + public sealed class MindGotRemovedEvent : MindEvent + { + public MindGotRemovedEvent(Entity mind, Entity container) + : base(mind, container) + { + } + } + + /// + /// Event raised directed at a mind-container when a mind gets added. + /// + public sealed class MindAddedMessage : MindEvent + { + public MindAddedMessage(Entity mind, Entity container) + : base(mind, container) + { + } + } + + /// + /// Event raised directed at a mind when it gets added to a mind-container. + /// + public sealed class MindGotAddedEvent : MindEvent + { + public MindGotAddedEvent(Entity mind, Entity container) + : base(mind, container) + { + } } } diff --git a/Content.Shared/Mind/MindComponent.cs b/Content.Shared/Mind/MindComponent.cs index 3ea92c3ce7296c..b147a2dbbe7e10 100644 --- a/Content.Shared/Mind/MindComponent.cs +++ b/Content.Shared/Mind/MindComponent.cs @@ -1,84 +1,86 @@ using Content.Shared.GameTicking; using Content.Shared.Mind.Components; +using Robust.Shared.GameStates; using Robust.Shared.Network; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Shared.Mind { /// - /// This is added as a component to mind entities, not to player entities. - /// for the one that is added to players. - /// A mind represents the IC "mind" of a player. - /// Roles are attached as components to its owning entity. + /// This component stores information about a player/mob mind. The component will be attached to a mind-entity + /// which is stored in null-space. The entity that is currently "possessed" by the mind will have a + /// . /// /// + /// Roles are attached as components on the mind-entity entity. /// Think of it like this: if a player is supposed to have their memories, /// their mind follows along. /// /// Things such as respawning do not follow, because you're a new character. /// Getting borged, cloned, turned into a catbeast, etc... will keep it following you. + /// + /// Minds are stored in null-space, and are thus generally not set to players unless that player is the owner + /// of the mind. As a result it should be safe to network "secret" information like roles & objectives /// - [RegisterComponent] + [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] public sealed partial class MindComponent : Component { - internal readonly List Objectives = new(); + [DataField, AutoNetworkedField] + public List Objectives = new(); /// /// The session ID of the player owning this mind. /// - [ViewVariables, Access(typeof(SharedMindSystem))] + [DataField, AutoNetworkedField, Access(typeof(SharedMindSystem))] public NetUserId? UserId { get; set; } /// /// The session ID of the original owner, if any. /// May end up used for round-end information (as the owner may have abandoned Mind since) /// - [ViewVariables, Access(typeof(SharedMindSystem))] + [DataField, AutoNetworkedField, Access(typeof(SharedMindSystem))] public NetUserId? OriginalOwnerUserId { get; set; } /// - /// Entity UID for the first entity that this mind controlled. Used for round end. + /// The first entity that this mind controlled. Used for round end information. /// Might be relevant if the player has ghosted since. /// - [ViewVariables] public EntityUid? OriginalOwnedEntity; + [DataField, AutoNetworkedField] + public NetEntity? OriginalOwnedEntity; + // This is a net entity, because this field currently ddoes not get set to null when this entity is deleted. + // This is a lazy way to ensure that people check that the entity still exists. + // TODO MIND Fix this properly by adding an OriginalMindContainerComponent or something like that. [ViewVariables] public bool IsVisitingEntity => VisitingEntity != null; - [ViewVariables, Access(typeof(SharedMindSystem))] + [DataField, AutoNetworkedField, Access(typeof(SharedMindSystem))] public EntityUid? VisitingEntity { get; set; } [ViewVariables] public EntityUid? CurrentEntity => VisitingEntity ?? OwnedEntity; - [ViewVariables(VVAccess.ReadWrite)] + [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] public string? CharacterName { get; set; } /// /// The time of death for this Mind. /// Can be null - will be null if the Mind is not considered "dead". /// - [ViewVariables] + [DataField] public TimeSpan? TimeOfDeath { get; set; } - /// - /// The component currently owned by this mind. - /// Can be null. - /// - [ViewVariables] public MindContainerComponent? OwnedComponent; - /// /// The entity currently owned by this mind. /// Can be null. /// - [ViewVariables, Access(typeof(SharedMindSystem))] + [DataField, AutoNetworkedField, Access(typeof(SharedMindSystem))] public EntityUid? OwnedEntity { get; set; } - // TODO move objectives out of mind component /// /// An enumerable over all the objective entities this mind has. /// - [ViewVariables] + [ViewVariables, Obsolete("Use Objectives field")] public IEnumerable AllObjectives => Objectives; /// @@ -100,6 +102,7 @@ public sealed partial class MindComponent : Component /// Can be null, in which case the player is currently not logged in. /// [ViewVariables, Access(typeof(SharedMindSystem), typeof(SharedGameTicker))] + // TODO remove this after moving IPlayerManager functions to shared public ICommonSession? Session { get; set; } } } diff --git a/Content.Shared/Mind/SharedMindSystem.cs b/Content.Shared/Mind/SharedMindSystem.cs index cc4ac4af23675c..66a0325963761c 100644 --- a/Content.Shared/Mind/SharedMindSystem.cs +++ b/Content.Shared/Mind/SharedMindSystem.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using System.Linq; using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.Examine; @@ -12,7 +13,7 @@ using Content.Shared.Players; using Robust.Shared.Map; using Robust.Shared.Network; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Shared.Mind; @@ -25,7 +26,7 @@ public abstract class SharedMindSystem : EntitySystem [Dependency] private readonly SharedPlayerSystem _player = default!; [Dependency] private readonly MetaDataSystem _metadata = default!; - // This is dictionary is required to track the minds of disconnected players that may have had their entity deleted. + [ViewVariables] protected readonly Dictionary UserMinds = new(); public override void Initialize() @@ -36,6 +37,7 @@ public override void Initialize() SubscribeLocalEvent(OnSuicide); SubscribeLocalEvent(OnVisitingTerminating); SubscribeLocalEvent(OnReset); + SubscribeLocalEvent(OnMindStartup); } public override void Shutdown() @@ -44,6 +46,29 @@ public override void Shutdown() WipeAllMinds(); } + private void OnMindStartup(EntityUid uid, MindComponent component, ComponentStartup args) + { + if (component.UserId == null) + return; + + if (UserMinds.TryAdd(component.UserId.Value, uid)) + return; + + var existing = UserMinds[component.UserId.Value]; + if (existing == uid) + return; + + if (!Exists(existing)) + { + Log.Error($"Found deleted entity in mind dictionary while initializing mind {ToPrettyString(uid)}"); + UserMinds[component.UserId.Value] = uid; + return; + } + + Log.Error($"Encountered a user {component.UserId} that is already assigned to a mind while initializing mind {ToPrettyString(uid)}. Ignoring user field."); + component.UserId = null; + } + private void OnReset(RoundRestartCleanupEvent ev) { WipeAllMinds(); @@ -51,12 +76,22 @@ private void OnReset(RoundRestartCleanupEvent ev) public virtual void WipeAllMinds() { - foreach (var mind in UserMinds.Values) + Log.Info($"Wiping all minds"); + foreach (var mind in UserMinds.Values.ToArray()) { WipeMind(mind); } - DebugTools.Assert(UserMinds.Count == 0); + if (UserMinds.Count == 0) + return; + + foreach (var mind in UserMinds.Values) + { + if (Exists(mind)) + Log.Error($"Failed to wipe mind: {ToPrettyString(mind)}"); + } + + UserMinds.Clear(); } public EntityUid? GetMind(NetUserId user) @@ -80,6 +115,26 @@ public virtual bool TryGetMind(NetUserId user, [NotNullWhen(true)] out EntityUid return false; } + public bool TryGetMind(NetUserId user, [NotNullWhen(true)] out Entity? mind) + { + if (!TryGetMind(user, out var mindId, out var mindComp)) + { + mind = null; + return false; + } + + mind = (mindId.Value, mindComp); + return true; + } + + public Entity GetOrCreateMind(NetUserId user) + { + if (!TryGetMind(user, out var mind)) + mind = CreateMind(user); + + return mind.Value; + } + private void OnVisitingTerminating(EntityUid uid, VisitingMindComponent component, ref EntityTerminatingEvent args) { if (component.MindId != null) @@ -128,7 +183,7 @@ private void OnSuicide(EntityUid uid, MindContainerComponent component, SuicideE return null; } - public EntityUid CreateMind(NetUserId? userId, string? name = null) + public Entity CreateMind(NetUserId? userId, string? name = null) { var mindId = Spawn(null, MapCoordinates.Nullspace); _metadata.SetEntityName(mindId, name == null ? "mind" : $"mind ({name})"); @@ -136,7 +191,7 @@ public EntityUid CreateMind(NetUserId? userId, string? name = null) mind.CharacterName = name; SetUserId(mindId, userId, mind); - return mindId; + return (mindId, mind); } /// @@ -195,7 +250,7 @@ public void UnVisit(ICommonSession? player) /// Cleans up the VisitingEntity. /// /// - protected void RemoveVisitingEntity(MindComponent mind) + protected void RemoveVisitingEntity(EntityUid mindId, MindComponent mind) { if (mind.VisitingEntity == null) return; @@ -210,6 +265,7 @@ protected void RemoveVisitingEntity(MindComponent mind) RemCompDeferred(oldVisitingEnt, visitComp); } + Dirty(mindId, mind); RaiseLocalEvent(oldVisitingEnt, new MindUnvisitedMessage(), true); } @@ -228,7 +284,7 @@ public void WipeMind(EntityUid? mindId, MindComponent? mind = null) if (mindId == null || !Resolve(mindId.Value, ref mind, false)) return; - TransferTo(mindId.Value, null, mind: mind); + TransferTo(mindId.Value, null, createGhost:false, mind: mind); SetUserId(mindId.Value, null, mind: mind); } @@ -353,11 +409,11 @@ public bool TryGetMind( } public bool TryGetMind( - PlayerData player, + ContentPlayerData contentPlayer, out EntityUid mindId, [NotNullWhen(true)] out MindComponent? mind) { - mindId = player.Mind ?? default; + mindId = contentPlayer.Mind ?? default; return TryComp(mindId, out mind); } @@ -391,21 +447,6 @@ public bool TryGetRole(EntityUid user, [NotNullWhen(true)] out T? role) where return TryComp(mindContainer.Mind, out role); } - /// - /// Sets the Mind's OwnedComponent and OwnedEntity - /// - /// Mind to set OwnedComponent and OwnedEntity on - /// Entity owned by - /// MindContainerComponent owned by - protected void SetOwnedEntity(MindComponent mind, EntityUid? uid, MindContainerComponent? mindContainerComponent) - { - if (uid != null) - Resolve(uid.Value, ref mindContainerComponent); - - mind.OwnedEntity = uid; - mind.OwnedComponent = mindContainerComponent; - } - /// /// Sets the Mind's UserId, Session, and updates the player's PlayerData. This should have no direct effect on the /// entity that any mind is connected to, except as a side effect of the fact that it may change a player's diff --git a/Content.Shared/Movement/Events/MoveInputEvent.cs b/Content.Shared/Movement/Events/MoveInputEvent.cs index 8e1b43f8bd5e9d..89e5636acd7df5 100644 --- a/Content.Shared/Movement/Events/MoveInputEvent.cs +++ b/Content.Shared/Movement/Events/MoveInputEvent.cs @@ -1,5 +1,3 @@ -using Robust.Shared.Players; - namespace Content.Shared.Movement.Events; /// diff --git a/Content.Shared/Movement/Systems/SharedContentEyeSystem.cs b/Content.Shared/Movement/Systems/SharedContentEyeSystem.cs index 27e0080c87eeb7..4b81619fd07214 100644 --- a/Content.Shared/Movement/Systems/SharedContentEyeSystem.cs +++ b/Content.Shared/Movement/Systems/SharedContentEyeSystem.cs @@ -5,7 +5,7 @@ using Content.Shared.Input; using Content.Shared.Movement.Components; using Robust.Shared.Input.Binding; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Serialization; namespace Content.Shared.Movement.Systems; diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs index 425322408efabd..1d323a91876a5e 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs @@ -6,7 +6,7 @@ using Content.Shared.Movement.Events; using Robust.Shared.Input; using Robust.Shared.Input.Binding; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Serialization; using Robust.Shared.Timing; using Robust.Shared.Utility; diff --git a/Content.Shared/Players/PlayerData.cs b/Content.Shared/Players/ContentPlayerData.cs similarity index 73% rename from Content.Shared/Players/PlayerData.cs rename to Content.Shared/Players/ContentPlayerData.cs index c6274c950bd40f..7545eb58fcdbca 100644 --- a/Content.Shared/Players/PlayerData.cs +++ b/Content.Shared/Players/ContentPlayerData.cs @@ -1,16 +1,15 @@ using Content.Shared.GameTicking; using Content.Shared.Mind; using Robust.Shared.Network; -using Robust.Shared.Player; namespace Content.Shared.Players; /// /// Content side for all data that tracks a player session. -/// Use to retrieve this from an . +/// Use to retrieve this from an . /// Not currently used on the client. /// -public sealed class PlayerData +public sealed class ContentPlayerData { /// /// The session ID of the player owning this data. @@ -38,21 +37,9 @@ public sealed class PlayerData /// public bool ExplicitlyDeadminned { get; set; } - public PlayerData(NetUserId userId, string name) + public ContentPlayerData(NetUserId userId, string name) { UserId = userId; Name = name; } -} - - -public static class PlayerDataExt -{ - /// - /// Gets the correctly cast instance of content player data from an engine player data storage. - /// - public static PlayerData? ContentData(this IPlayerData data) - { - return (PlayerData?) data.ContentDataUncast; - } -} +} \ No newline at end of file diff --git a/Content.Shared/Players/PlayerDataExt.cs b/Content.Shared/Players/PlayerDataExt.cs new file mode 100644 index 00000000000000..eba4d8339d8ad4 --- /dev/null +++ b/Content.Shared/Players/PlayerDataExt.cs @@ -0,0 +1,30 @@ +using Robust.Shared.Player; + +namespace Content.Shared.Players; + +public static class PlayerDataExt +{ + /// + /// Gets the correctly cast instance of content player data from an engine player data storage. + /// + public static ContentPlayerData? ContentData(this SessionData data) + { + return (ContentPlayerData?) data.ContentDataUncast; + } + + /// + /// Gets the correctly cast instance of content player data from an engine player data storage. + /// + public static ContentPlayerData? ContentData(this ICommonSession session) + { + return session.Data.ContentData(); + } + + /// + /// Gets the mind that is associated with this player. + /// + public static EntityUid? GetMind(this ICommonSession session) + { + return session.Data.ContentData()?.Mind; + } +} \ No newline at end of file diff --git a/Content.Shared/Players/SharedPlayerSystem.cs b/Content.Shared/Players/SharedPlayerSystem.cs index 6fc7ad6a409e11..7271c5688abe8f 100644 --- a/Content.Shared/Players/SharedPlayerSystem.cs +++ b/Content.Shared/Players/SharedPlayerSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Shared.Players; @@ -8,5 +8,5 @@ namespace Content.Shared.Players; /// public abstract class SharedPlayerSystem : EntitySystem { - public abstract PlayerData? ContentData(ICommonSession? session); + public abstract ContentPlayerData? ContentData(ICommonSession? session); } diff --git a/Content.Shared/Popups/SharedPopupSystem.cs b/Content.Shared/Popups/SharedPopupSystem.cs index 50013a5435007b..e4565b90e8bc9a 100644 --- a/Content.Shared/Popups/SharedPopupSystem.cs +++ b/Content.Shared/Popups/SharedPopupSystem.cs @@ -1,6 +1,5 @@ using Robust.Shared.Map; using Robust.Shared.Player; -using Robust.Shared.Players; using Robust.Shared.Serialization; namespace Content.Shared.Popups diff --git a/Content.Shared/Pulling/Systems/SharedPullingSystem.cs b/Content.Shared/Pulling/Systems/SharedPullingSystem.cs index 6f19d048b4f673..0c139ee9e35010 100644 --- a/Content.Shared/Pulling/Systems/SharedPullingSystem.cs +++ b/Content.Shared/Pulling/Systems/SharedPullingSystem.cs @@ -12,7 +12,7 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Shared.Pulling { diff --git a/Content.Shared/Roles/Jobs/SharedJobSystem.cs b/Content.Shared/Roles/Jobs/SharedJobSystem.cs index ac18d04e9c70f0..af97ea13504751 100644 --- a/Content.Shared/Roles/Jobs/SharedJobSystem.cs +++ b/Content.Shared/Roles/Jobs/SharedJobSystem.cs @@ -2,7 +2,7 @@ using System.Linq; using Content.Shared.Players; using Content.Shared.Players.PlayTimeTracking; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 4b740b8d3c73a2..62af6067d05444 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -23,7 +23,7 @@ using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Systems; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Timing; From b98b0d9d36634dafbe8f335558c74702b8fe30d9 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 24 Oct 2023 20:24:50 +1100 Subject: [PATCH 240/245] Update submodule to 172.0.0 (#21222) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 554e0777b1ba6b..9750b113c81e75 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 554e0777b1ba6ba096d8f4407d5c35ecc7b0f22f +Subproject commit 9750b113c81e7535d892326568760bc976072436 From ba6aaa5ff8c833520c7983f307e94782dbfbabff Mon Sep 17 00:00:00 2001 From: Vasilis Date: Tue, 24 Oct 2023 11:28:31 +0200 Subject: [PATCH 241/245] Make stuttering less common with the trait (#21207) --- Resources/Prototypes/Traits/inconveniences.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Traits/inconveniences.yml b/Resources/Prototypes/Traits/inconveniences.yml index f8e932c9b92b1b..657781d1b59536 100644 --- a/Resources/Prototypes/Traits/inconveniences.yml +++ b/Resources/Prototypes/Traits/inconveniences.yml @@ -12,7 +12,7 @@ description: trait-socialanxiety-desc components: - type: StutteringAccent - matchRandomProb: 0.2 + matchRandomProb: 0.1 fourRandomProb: 0 - threeRandomProb: 0.3 + threeRandomProb: 0 cutRandomProb: 0 From ea0459fe6c4b5efcc51f1c2ff8820caee4159dae Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 24 Oct 2023 05:29:36 -0400 Subject: [PATCH 242/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 259437e311240c..d385c00de2b768 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Potato1234_x - changes: - - {message: Vending machine sprites have been polished up., type: Tweak} - id: 4548 - time: '2023-08-13T07:15:13.0000000+00:00' - author: Ilya246 changes: - {message: 'Blood-red magboots now slow you down less and have jetpack functionality, @@ -2908,3 +2903,8 @@ Entries: hijacking, type: Add} id: 5047 time: '2023-10-24T07:55:47.0000000+00:00' +- author: VasilisThePikachu + changes: + - {message: Stuttering trait stutters less common., type: Fix} + id: 5048 + time: '2023-10-24T09:28:31.0000000+00:00' From 4701b853ef3cc2aac4a777f194ac26760d2235be Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 24 Oct 2023 21:44:09 +1100 Subject: [PATCH 243/245] Fix 0-length climbs (#21224) --- .../Climbing/Systems/ClimbSystem.cs | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index 511149f8f9502f..46255e4337664b 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -257,15 +257,25 @@ private void Climb(EntityUid uid, EntityUid user, EntityUid climbable, bool sile // Need direction relative to climber's parent. var localDirection = (-parentRot).RotateVec(worldDirection); - climbing.IsClimbing = true; - var climbDuration = TimeSpan.FromSeconds(distance / climbing.TransitionRate); - climbing.NextTransition = _timing.CurTime + climbDuration; + // On top of it already so just do it in place. + if (localDirection.LengthSquared() < 0.01f) + { + climbing.NextTransition = null; + } + // VirtualController over to the thing. + else + { + var climbDuration = TimeSpan.FromSeconds(distance / climbing.TransitionRate); + climbing.NextTransition = _timing.CurTime + climbDuration; + + climbing.Direction = localDirection.Normalized() * climbing.TransitionRate; + _actionBlockerSystem.UpdateCanMove(uid); + } - climbing.Direction = localDirection.Normalized() * climbing.TransitionRate; + climbing.IsClimbing = true; Dirty(uid, climbing); _audio.PlayPredicted(comp.FinishClimbSound, climbable, user); - _actionBlockerSystem.UpdateCanMove(uid); var startEv = new StartClimbEvent(climbable); var climbedEv = new ClimbedOnEvent(uid, user); From 517aea8bc3989c7b19fbc166c09133382ba35de3 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 24 Oct 2023 06:45:17 -0400 Subject: [PATCH 244/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d385c00de2b768..2d5a514f05924a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: Ilya246 - changes: - - {message: 'Blood-red magboots now slow you down less and have jetpack functionality, - but cost more.', type: Tweak} - id: 4549 - time: '2023-08-13T07:17:10.0000000+00:00' - author: brainfood1183 changes: - {message: Syndicate clowns may now purchase a holoclown injector via their syndicate @@ -2908,3 +2902,9 @@ Entries: - {message: Stuttering trait stutters less common., type: Fix} id: 5048 time: '2023-10-24T09:28:31.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Fix climbing in the same position (e.g. exiting from medical scanners) + sending you to the farplanes., type: Fix} + id: 5049 + time: '2023-10-24T10:44:09.0000000+00:00' From a2bbda43cc1669596942048c60b4ca80c00bbe6b Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 24 Oct 2023 21:55:20 +1100 Subject: [PATCH 245/245] Revert "Update submodule to 172.0.0 (#21222)" (#21225) --- Content.Client/Actions/ActionsSystem.cs | 9 +- .../Managers/ClientAdminManager.cs | 2 +- .../UI/Tabs/AdminTab/TeleportWindow.xaml.cs | 1 + Content.Client/Alerts/ClientAlertsSystem.cs | 9 +- .../CharacterInfo/CharacterInfoSystem.cs | 12 ++ .../Construction/ConstructionSystem.cs | 6 +- Content.Client/Drugs/DrugOverlaySystem.cs | 9 +- Content.Client/Drunk/DrunkSystem.cs | 9 +- Content.Client/Eye/Blinding/BlindingSystem.cs | 18 +- .../Eye/Blinding/BlurryVisionSystem.cs | 11 +- Content.Client/Eye/EyeLerpingSystem.cs | 4 +- Content.Client/Fullscreen/FullscreenHook.cs | 2 +- Content.Client/Gameplay/GameplayStateBase.cs | 2 +- Content.Client/Ghost/GhostSystem.cs | 12 +- Content.Client/Hands/Systems/HandsSystem.cs | 8 +- .../HealthOverlay/HealthOverlaySystem.cs | 13 +- .../Inventory/ClientInventorySystem.cs | 9 +- Content.Client/Mind/MindSystem.cs | 20 --- Content.Client/Overlays/EquipmentHudSystem.cs | 9 +- .../Physics/Controllers/MoverController.cs | 17 +- Content.Client/Players/PlayerSystem.cs | 4 +- Content.Client/Popups/PopupSystem.cs | 1 + .../ReplaySpectatorSystem.Movement.cs | 2 +- .../ReplaySpectatorSystem.Position.cs | 12 +- .../ReplaySpectatorSystem.Spectate.cs | 14 +- .../Replay/Spectator/ReplaySpectatorSystem.cs | 3 +- Content.Client/Sandbox/SandboxSystem.cs | 2 +- Content.Client/Traits/ParacusiaSystem.cs | 6 +- .../Character/CharacterUIController.cs | 8 +- .../Systems/Chat/ChatUIController.cs | 29 +++- .../DamageOverlayUiController.cs | 10 +- .../Systems/Sandbox/SandboxUIController.cs | 2 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 3 +- Content.IntegrationTests/Pair/TestPair.cs | 8 +- .../Tests/Actions/ActionsAddedTest.cs | 4 +- .../Tests/Administration/Logs/AddTests.cs | 8 +- .../Tests/Administration/Logs/QueryTests.cs | 5 +- .../Tests/Cleanup/EuiManagerTest.cs | 2 +- .../Tests/Interaction/InteractionTest.cs | 5 +- .../Tests/Minds/GhostRoleTests.cs | 3 +- .../Tests/Minds/MindTests.EntityDeletion.cs | 13 +- .../Tests/Minds/MindTests.Helpers.cs | 20 +-- .../Tests/Minds/MindTests.ReconnectTests.cs | 9 +- .../Tests/Minds/MindTests.cs | 30 ++-- .../Tests/Toolshed/ToolshedTest.cs | 7 +- Content.MapRenderer/Painters/MapPainter.cs | 2 +- .../AdminPermsChangedEventArgs.cs | 6 +- .../Administration/Commands/AGhost.cs | 3 +- .../Commands/AdminWhoCommand.cs | 3 +- .../Commands/AnnounceUiCommand.cs | 3 +- .../Administration/Commands/BanCommand.cs | 11 +- .../Administration/Commands/BanListCommand.cs | 4 +- .../Commands/BanPanelCommand.cs | 8 +- .../Administration/Commands/ControlMob.cs | 14 +- .../Administration/Commands/DSay.cs | 4 +- .../Administration/Commands/DeAdminCommand.cs | 4 +- .../Commands/ExplosionCommand.cs | 3 +- .../Administration/Commands/FaxUiCommand.cs | 3 +- .../Commands/OpenAdminLogsCommand.cs | 3 +- .../Commands/OpenAdminNotesCommand.cs | 4 +- .../Commands/OpenPermissionsCommand.cs | 4 +- .../Commands/OpenUserVisibleNotesCommand.cs | 3 +- .../Administration/Commands/PardonCommand.cs | 3 +- .../Commands/PlayGlobalSoundCommand.cs | 1 + .../Administration/Commands/ReAdminCommand.cs | 4 +- .../Administration/Commands/SetAdminOOC.cs | 4 +- .../Administration/Commands/SetMindCommand.cs | 1 - .../Commands/SetOutfitCommand.cs | 3 +- .../Administration/Commands/WarpCommand.cs | 4 +- .../ContentNetworkResourceManager.cs | 4 +- .../Logs/AdminLogManager.Json.cs | 6 +- .../Logs/Converters/PlayerSessionConverter.cs | 6 +- .../Administration/Managers/AdminManager.cs | 52 +++--- .../Administration/Managers/BanManager.cs | 3 +- .../Administration/Managers/IAdminManager.cs | 15 +- .../Administration/Managers/IBanManager.cs | 4 +- .../Administration/Notes/AdminNotesManager.cs | 2 +- .../Administration/Notes/AdminNotesSystem.cs | 2 +- .../Notes/IAdminNotesManager.cs | 2 +- .../QuickDialogSystem.OpenDialog.cs | 10 +- .../Administration/QuickDialogSystem.cs | 7 +- .../Administration/Systems/AdminSystem.cs | 8 +- .../Systems/AdminTestArenaSystem.cs | 4 +- .../Administration/Systems/AdminVerbSystem.cs | 18 +- .../Administration/Systems/BwoinkSystem.cs | 5 +- .../Administration/Toolshed/AdminsCommand.cs | 6 +- Content.Server/Afk/AFKSystem.cs | 9 +- Content.Server/Afk/AfkManager.cs | 15 +- Content.Server/Afk/Events/AFKEvent.cs | 6 +- Content.Server/Afk/Events/UnAFKEvent.cs | 6 +- Content.Server/Alert/Commands/ClearAlert.cs | 3 +- Content.Server/Alert/Commands/ShowAlert.cs | 3 +- .../Commands/SetAlertLevelCommand.cs | 5 +- Content.Server/Antag/AntagSelectionSystem.cs | 9 +- .../Arcade/BlockGame/BlockGame.Ui.cs | 20 +-- .../BlockGame/BlockGameArcadeComponent.cs | 6 +- .../Arcade/BlockGame/BlockGameArcadeSystem.cs | 6 +- .../Atmos/Commands/DeleteGasCommand.cs | 3 +- .../Atmos/Commands/ShowAtmosCommand.cs | 3 +- .../EntitySystems/AtmosDebugOverlaySystem.cs | 11 +- .../Atmos/EntitySystems/GasTankSystem.cs | 7 + .../EntitySystems/GasTileOverlaySystem.cs | 7 +- .../Body/Commands/AddHandCommand.cs | 3 +- .../Body/Commands/AttachBodyPartCommand.cs | 4 +- .../Body/Commands/DestroyMechanismCommand.cs | 3 +- .../Body/Commands/RemoveHandCommand.cs | 3 +- Content.Server/Body/Systems/BodySystem.cs | 2 +- .../Cargo/Systems/CargoSystem.Orders.cs | 2 +- .../CartridgeLoader/CartridgeLoaderSystem.cs | 6 +- .../Chat/Commands/AdminChatCommand.cs | 3 +- Content.Server/Chat/Commands/LOOCCommand.cs | 3 +- Content.Server/Chat/Commands/MeCommand.cs | 3 +- Content.Server/Chat/Commands/OOCCommand.cs | 3 +- Content.Server/Chat/Commands/SayCommand.cs | 3 +- .../Chat/Commands/SuicideCommand.cs | 3 +- .../Chat/Commands/WhisperCommand.cs | 3 +- Content.Server/Chat/Managers/ChatManager.cs | 16 +- Content.Server/Chat/Managers/IChatManager.cs | 12 +- Content.Server/Chat/Systems/ChatSystem.cs | 21 +-- .../EntitySystems/ChemistryGuideDataSystem.cs | 1 - Content.Server/Chunking/ChunkingSystem.cs | 6 +- Content.Server/Commands/CommandUtils.cs | 7 +- .../Commands/FixRotationsCommand.cs | 3 +- .../Commands/TileReplaceCommand.cs | 3 +- .../Construction/Commands/TileWallsCommand.cs | 5 +- .../ConstructionSystem.Initial.cs | 2 +- .../CrewManifest/CrewManifestSystem.cs | 17 +- .../Damage/Commands/GodModeCommand.cs | 4 +- .../Damage/ForceSay/DamageForceSaySystem.cs | 1 + Content.Server/Database/UserDbDataManager.cs | 14 +- Content.Server/Decals/DecalSystem.cs | 13 +- .../Disposal/TubeConnectionsCommand.cs | 3 +- Content.Server/EUI/BaseEui.cs | 2 +- Content.Server/EUI/EuiManager.cs | 2 +- .../EntityList/SpawnEntityListCommand.cs | 3 +- Content.Server/Examine/ExamineSystem.cs | 3 +- .../PuddleDebugDebugOverlaySystem.cs | 8 +- Content.Server/Fluids/ShowFluidsCommand.cs | 3 +- .../GameTicking/Commands/JoinGameCommand.cs | 3 +- .../GameTicking/Commands/ObserveCommand.cs | 3 +- .../GameTicking/Commands/RespawnCommand.cs | 2 +- .../Commands/ToggleReadyCommand.cs | 3 +- .../GameTicking/GameTicker.GamePreset.cs | 6 +- .../GameTicking/GameTicker.Lobby.cs | 8 +- .../GameTicking/GameTicker.Player.cs | 19 +- .../GameTicking/GameTicker.RoundFlow.cs | 24 +-- .../GameTicking/GameTicker.Spawning.cs | 28 +-- .../Rules/Components/TraitorRuleComponent.cs | 4 +- .../Rules/InactivityTimeRestartRuleSystem.cs | 1 - .../GameTicking/Rules/NukeopsRuleSystem.cs | 18 +- .../GameTicking/Rules/PiratesRuleSystem.cs | 4 +- .../GameTicking/Rules/RespawnRuleSystem.cs | 1 - .../GameTicking/Rules/TraitorRuleSystem.cs | 13 +- .../GameTicking/Rules/ZombieRuleSystem.cs | 10 +- Content.Server/Ghost/Ghost.cs | 3 +- .../Roles/Components/TakeGhostRoleEvent.cs | 2 +- Content.Server/Ghost/Roles/GhostRoleSystem.cs | 10 +- .../Gravity/GravityGeneratorSystem.cs | 4 +- Content.Server/Hands/Systems/HandsSystem.cs | 9 +- .../HumanoidAppearanceSystem.Modifier.cs | 5 +- .../Instruments/InstrumentComponent.cs | 4 +- .../Instruments/InstrumentSystem.cs | 6 +- .../Interaction/InteractionSystem.cs | 1 + Content.Server/Interaction/TilePryCommand.cs | 5 +- .../MagicMirror/MagicMirrorSystem.cs | 5 +- Content.Server/Mapping/MappingCommand.cs | 2 +- Content.Server/Maps/GridDraggingSystem.cs | 9 +- Content.Server/Medical/DefibrillatorSystem.cs | 2 +- Content.Server/Mind/Commands/RenameCommand.cs | 1 - Content.Server/Mind/MindSystem.cs | 162 +++++++----------- Content.Server/Mind/Toolshed/MindCommand.cs | 6 +- Content.Server/Motd/MOTDCommand.cs | 7 +- Content.Server/Motd/MOTDSystem.cs | 14 +- Content.Server/Motd/SetMOTDCommand.cs | 7 +- .../Movement/Systems/LagCompensationSystem.cs | 2 +- Content.Server/NPC/Commands/NPCCommand.cs | 3 +- Content.Server/NPC/HTN/HTNSystem.cs | 7 +- .../NPC/Pathfinding/PathfindingSystem.cs | 4 +- .../NPC/Systems/NPCSteeringSystem.cs | 4 +- .../EntitySystems/NodeGroupSystem.cs | 7 +- Content.Server/Nutrition/Hungry.cs | 4 +- .../Commands/ListObjectivesCommand.cs | 2 +- Content.Server/PDA/PdaSystem.cs | 8 +- Content.Server/PDA/Ringer/RingerSystem.cs | 3 +- Content.Server/Paper/PaperSystem.cs | 6 +- Content.Server/Parallax/BiomeSystem.cs | 3 +- .../ParticleAcceleratorSystem.ControlBox.cs | 17 +- .../ParticleAcceleratorSystem.Parts.cs | 4 +- .../PlayTimeTrackingManager.cs | 40 ++--- .../PlayTimeTrackingSystem.cs | 13 +- Content.Server/Players/PlayerData.cs | 30 ++++ Content.Server/Players/PlayerSystem.cs | 4 +- .../Pointing/EntitySystems/PointingSystem.cs | 5 +- Content.Server/Popups/PopupSystem.cs | 1 + Content.Server/Prayer/PrayerSystem.cs | 7 +- .../Managers/IServerPreferencesManager.cs | 8 +- .../Managers/ServerPreferencesManager.cs | 8 +- Content.Server/Pulling/PullingSystem.cs | 2 +- .../Systems/RadiationSystem.Debug.cs | 2 +- .../Research/Systems/ResearchSystem.Client.cs | 3 +- Content.Server/Salvage/SalvageRulerCommand.cs | 3 +- .../Sandbox/Commands/ColorNetworkCommand.cs | 3 +- Content.Server/Sandbox/SandboxSystem.cs | 1 - .../SensorMonitoringConsoleComponent.cs | 2 +- .../SensorMonitoringConsoleSystem.UI.cs | 4 +- .../ServerUpdates/ServerUpdateManager.cs | 1 - .../Systems/EmergencyShuttleSystem.cs | 3 +- .../Silicons/Borgs/BorgSystem.Modules.cs | 2 +- Content.Server/Silicons/Borgs/BorgSystem.cs | 2 +- .../Silicons/Laws/SiliconLawSystem.cs | 5 +- .../Station/Systems/StationJobsSystem.cs | 2 +- .../Storage/EntitySystems/StorageSystem.cs | 3 +- Content.Server/Tabletop/TabletopSession.cs | 4 +- .../Tabletop/TabletopSystem.Session.cs | 8 +- Content.Server/Tabletop/TabletopSystem.cs | 7 +- .../Commands/AdminDebug/ACmdCommand.cs | 4 +- .../Toolshed/Commands/VisualizeCommand.cs | 3 +- .../Uplink/Commands/AddUplinkCommand.cs | 5 +- .../UserInterface/ActivatableUIComponent.cs | 4 +- .../UserInterface/ActivatableUISystem.cs | 8 +- .../UserInterface/StatValuesCommand.cs | 3 +- Content.Server/Verbs/VerbSystem.cs | 5 +- Content.Server/Voting/IVoteHandle.cs | 4 +- .../Voting/Managers/IVoteManager.cs | 6 +- .../Managers/VoteManager.DefaultVotes.cs | 12 +- Content.Server/Voting/Managers/VoteManager.cs | 31 ++-- Content.Server/Voting/VoteCommands.cs | 9 +- Content.Server/Voting/VoteOptions.cs | 8 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 4 +- Content.Server/Wires/WiresSystem.cs | 4 +- .../Systems/ArtifactAnalyzerSystem.cs | 3 +- .../Managers/ISharedAdminManager.cs | 2 +- Content.Shared/Buckle/SharedBuckleSystem.cs | 2 +- .../SharedHandsSystem.Interactions.cs | 2 +- .../Interaction/SharedInteractionSystem.cs | 2 +- .../Mind/Components/MindContainerComponent.cs | 65 ++----- Content.Shared/Mind/MindComponent.cs | 49 +++--- Content.Shared/Mind/SharedMindSystem.cs | 91 +++------- .../Movement/Events/MoveInputEvent.cs | 2 + .../Systems/SharedContentEyeSystem.cs | 2 +- .../Systems/SharedMoverController.Input.cs | 2 +- .../{ContentPlayerData.cs => PlayerData.cs} | 21 ++- Content.Shared/Players/PlayerDataExt.cs | 30 ---- Content.Shared/Players/SharedPlayerSystem.cs | 4 +- Content.Shared/Popups/SharedPopupSystem.cs | 1 + .../Pulling/Systems/SharedPullingSystem.cs | 2 +- Content.Shared/Roles/Jobs/SharedJobSystem.cs | 2 +- .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 2 +- RobustToolbox | 2 +- 249 files changed, 1048 insertions(+), 966 deletions(-) create mode 100644 Content.Server/Players/PlayerData.cs rename Content.Shared/Players/{ContentPlayerData.cs => PlayerData.cs} (73%) delete mode 100644 Content.Shared/Players/PlayerDataExt.cs diff --git a/Content.Client/Actions/ActionsSystem.cs b/Content.Client/Actions/ActionsSystem.cs index a487e5d8d8ab96..83d927c94bb357 100644 --- a/Content.Client/Actions/ActionsSystem.cs +++ b/Content.Client/Actions/ActionsSystem.cs @@ -2,6 +2,7 @@ using System.Linq; using Content.Shared.Actions; using JetBrains.Annotations; +using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.ContentPack; using Robust.Shared.GameStates; @@ -40,8 +41,8 @@ public sealed class ActionsSystem : SharedActionsSystem public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(HandleComponentState); SubscribeLocalEvent(OnInstantHandleState); @@ -195,12 +196,12 @@ protected override void ActionRemoved(EntityUid performer, EntityUid actionId, A return GetActions(user); } - private void OnPlayerAttached(EntityUid uid, ActionsComponent component, LocalPlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, ActionsComponent component, PlayerAttachedEvent args) { LinkAllActions(component); } - private void OnPlayerDetached(EntityUid uid, ActionsComponent component, LocalPlayerDetachedEvent? args = null) + private void OnPlayerDetached(EntityUid uid, ActionsComponent component, PlayerDetachedEvent? args = null) { UnlinkAllActions(); } diff --git a/Content.Client/Administration/Managers/ClientAdminManager.cs b/Content.Client/Administration/Managers/ClientAdminManager.cs index 1a1366c6f2ebad..8978e2fd6dd982 100644 --- a/Content.Client/Administration/Managers/ClientAdminManager.cs +++ b/Content.Client/Administration/Managers/ClientAdminManager.cs @@ -4,7 +4,7 @@ using Robust.Client.Player; using Robust.Shared.ContentPack; using Robust.Shared.Network; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Utility; namespace Content.Client.Administration.Managers diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs b/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs index 1978b5c3c06501..c5a9bd036a4691 100644 --- a/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs @@ -5,6 +5,7 @@ using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.IoC; +using Robust.Shared.Players; namespace Content.Client.Administration.UI.Tabs.AdminTab { diff --git a/Content.Client/Alerts/ClientAlertsSystem.cs b/Content.Client/Alerts/ClientAlertsSystem.cs index 5089022415331a..bb6d2d4df4ed12 100644 --- a/Content.Client/Alerts/ClientAlertsSystem.cs +++ b/Content.Client/Alerts/ClientAlertsSystem.cs @@ -1,6 +1,7 @@ using System.Linq; using Content.Shared.Alert; using JetBrains.Annotations; +using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.Prototypes; @@ -21,8 +22,8 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(ClientAlertsHandleState); } @@ -68,7 +69,7 @@ private void ClientAlertsHandleState(EntityUid uid, AlertsComponent component, r SyncAlerts?.Invoke(this, component.Alerts); } - private void OnPlayerAttached(EntityUid uid, AlertsComponent component, LocalPlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, AlertsComponent component, PlayerAttachedEvent args) { if (_playerManager.LocalPlayer?.ControlledEntity != uid) return; @@ -86,7 +87,7 @@ protected override void HandleComponentShutdown(EntityUid uid, AlertsComponent c ClearAlerts?.Invoke(this, EventArgs.Empty); } - private void OnPlayerDetached(EntityUid uid, AlertsComponent component, LocalPlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, AlertsComponent component, PlayerDetachedEvent args) { ClearAlerts?.Invoke(this, EventArgs.Empty); } diff --git a/Content.Client/CharacterInfo/CharacterInfoSystem.cs b/Content.Client/CharacterInfo/CharacterInfoSystem.cs index 844a352a184463..93bd86d140bb27 100644 --- a/Content.Client/CharacterInfo/CharacterInfoSystem.cs +++ b/Content.Client/CharacterInfo/CharacterInfoSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.CharacterInfo; using Content.Shared.Objectives; +using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Client.UserInterface; @@ -10,11 +11,14 @@ public sealed class CharacterInfoSystem : EntitySystem [Dependency] private readonly IPlayerManager _players = default!; public event Action? OnCharacterUpdate; + public event Action? OnCharacterDetached; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeNetworkEvent(OnCharacterInfoEvent); } @@ -29,6 +33,14 @@ public void RequestCharacterInfo() RaiseNetworkEvent(new RequestCharacterInfoEvent(GetNetEntity(entity.Value))); } + private void OnPlayerAttached(PlayerAttachSysMessage msg) + { + if (msg.AttachedEntity == default) + { + OnCharacterDetached?.Invoke(); + } + } + private void OnCharacterInfoEvent(CharacterInfoEvent msg, EntitySessionEventArgs args) { var entity = GetEntity(msg.NetEntity); diff --git a/Content.Client/Construction/ConstructionSystem.cs b/Content.Client/Construction/ConstructionSystem.cs index 9fc638cea22b09..98d2dfd414d7f1 100644 --- a/Content.Client/Construction/ConstructionSystem.cs +++ b/Content.Client/Construction/ConstructionSystem.cs @@ -38,7 +38,7 @@ public override void Initialize() base.Initialize(); UpdatesOutsidePrediction = true; - SubscribeLocalEvent(HandlePlayerAttached); + SubscribeLocalEvent(HandlePlayerAttached); SubscribeNetworkEvent(HandleAckStructure); SubscribeNetworkEvent(OnConstructionGuideReceived); @@ -110,9 +110,9 @@ private void HandleAckStructure(AckStructureConstructionMessage msg) ClearGhost(msg.GhostId); } - private void HandlePlayerAttached(LocalPlayerAttachedEvent msg) + private void HandlePlayerAttached(PlayerAttachSysMessage msg) { - var available = IsCraftingAvailable(msg.Entity); + var available = IsCraftingAvailable(msg.AttachedEntity); UpdateCraftingAvailability(available); } diff --git a/Content.Client/Drugs/DrugOverlaySystem.cs b/Content.Client/Drugs/DrugOverlaySystem.cs index ec0d0140720d43..7be63b4c50e154 100644 --- a/Content.Client/Drugs/DrugOverlaySystem.cs +++ b/Content.Client/Drugs/DrugOverlaySystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Drugs; +using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; @@ -23,18 +24,18 @@ public override void Initialize() SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); _overlay = new(); } - private void OnPlayerAttached(EntityUid uid, SeeingRainbowsComponent component, LocalPlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, SeeingRainbowsComponent component, PlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } - private void OnPlayerDetached(EntityUid uid, SeeingRainbowsComponent component, LocalPlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, SeeingRainbowsComponent component, PlayerDetachedEvent args) { _overlay.Intoxication = 0; _overlayMan.RemoveOverlay(_overlay); diff --git a/Content.Client/Drunk/DrunkSystem.cs b/Content.Client/Drunk/DrunkSystem.cs index 4f2ec70b56b92e..0573b2ff3eb6cb 100644 --- a/Content.Client/Drunk/DrunkSystem.cs +++ b/Content.Client/Drunk/DrunkSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Drunk; +using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; @@ -18,18 +19,18 @@ public override void Initialize() SubscribeLocalEvent(OnDrunkInit); SubscribeLocalEvent(OnDrunkShutdown); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); _overlay = new(); } - private void OnPlayerAttached(EntityUid uid, DrunkComponent component, LocalPlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, DrunkComponent component, PlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } - private void OnPlayerDetached(EntityUid uid, DrunkComponent component, LocalPlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, DrunkComponent component, PlayerDetachedEvent args) { _overlay.CurrentBoozePower = 0; _overlayMan.RemoveOverlay(_overlay); diff --git a/Content.Client/Eye/Blinding/BlindingSystem.cs b/Content.Client/Eye/Blinding/BlindingSystem.cs index f255f7ef016a17..f0b760d838b53e 100644 --- a/Content.Client/Eye/Blinding/BlindingSystem.cs +++ b/Content.Client/Eye/Blinding/BlindingSystem.cs @@ -1,7 +1,17 @@ + +using Content.Shared.Eye.Blinding; +using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; +using System; +using System.Collections.Generic; +using System.Linq; +using Content.Shared.Administration; +using Content.Shared.Administration.Events; using Content.Shared.Eye.Blinding.Components; using Content.Shared.GameTicking; +using Robust.Shared.GameObjects; +using Robust.Shared.Network; namespace Content.Client.Eye.Blinding; @@ -21,20 +31,20 @@ public override void Initialize() SubscribeLocalEvent(OnBlindInit); SubscribeLocalEvent(OnBlindShutdown); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeNetworkEvent(RoundRestartCleanup); _overlay = new(); } - private void OnPlayerAttached(EntityUid uid, BlindableComponent component, LocalPlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, BlindableComponent component, PlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } - private void OnPlayerDetached(EntityUid uid, BlindableComponent component, LocalPlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, BlindableComponent component, PlayerDetachedEvent args) { _overlayMan.RemoveOverlay(_overlay); _lightManager.Enabled = true; diff --git a/Content.Client/Eye/Blinding/BlurryVisionSystem.cs b/Content.Client/Eye/Blinding/BlurryVisionSystem.cs index 8be5b4ed930028..1bac2a97bf45c0 100644 --- a/Content.Client/Eye/Blinding/BlurryVisionSystem.cs +++ b/Content.Client/Eye/Blinding/BlurryVisionSystem.cs @@ -1,6 +1,9 @@ +using Content.Shared.Eye.Blinding; using Content.Shared.Eye.Blinding.Components; +using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; +using Robust.Shared.GameStates; namespace Content.Client.Eye.Blinding; @@ -17,18 +20,18 @@ public override void Initialize() SubscribeLocalEvent(OnBlurryInit); SubscribeLocalEvent(OnBlurryShutdown); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); _overlay = new(); } - private void OnPlayerAttached(EntityUid uid, BlurryVisionComponent component, LocalPlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, BlurryVisionComponent component, PlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } - private void OnPlayerDetached(EntityUid uid, BlurryVisionComponent component, LocalPlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, BlurryVisionComponent component, PlayerDetachedEvent args) { _overlayMan.RemoveOverlay(_overlay); } diff --git a/Content.Client/Eye/EyeLerpingSystem.cs b/Content.Client/Eye/EyeLerpingSystem.cs index b46921a9b48e6e..8e54196b81d40d 100644 --- a/Content.Client/Eye/EyeLerpingSystem.cs +++ b/Content.Client/Eye/EyeLerpingSystem.cs @@ -30,7 +30,7 @@ public override void Initialize() SubscribeLocalEvent(OnAttached); SubscribeLocalEvent(HandleMapChange); - SubscribeLocalEvent(OnDetached); + SubscribeLocalEvent(OnDetached); UpdatesAfter.Add(typeof(TransformSystem)); UpdatesAfter.Add(typeof(PhysicsSystem)); @@ -94,7 +94,7 @@ private void OnAttached(ref EyeAttachedEvent ev) AddEye(ev.Entity, ev.Component, true); } - private void OnDetached(EntityUid uid, LerpingEyeComponent component, LocalPlayerDetachedEvent args) + private void OnDetached(EntityUid uid, LerpingEyeComponent component, PlayerDetachedEvent args) { if (!component.ManuallyAdded) RemCompDeferred(uid, component); diff --git a/Content.Client/Fullscreen/FullscreenHook.cs b/Content.Client/Fullscreen/FullscreenHook.cs index 7917fddfbb0c14..78a01517361bf3 100644 --- a/Content.Client/Fullscreen/FullscreenHook.cs +++ b/Content.Client/Fullscreen/FullscreenHook.cs @@ -4,7 +4,7 @@ using Robust.Shared.Input.Binding; using Robust.Shared; using Robust.Shared.Configuration; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Client.Fullscreen; public sealed class FullscreenHook diff --git a/Content.Client/Gameplay/GameplayStateBase.cs b/Content.Client/Gameplay/GameplayStateBase.cs index 454c063260510d..788a4e5dfff93a 100644 --- a/Content.Client/Gameplay/GameplayStateBase.cs +++ b/Content.Client/Gameplay/GameplayStateBase.cs @@ -16,7 +16,7 @@ using Robust.Shared.Input; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Timing; namespace Content.Client.Gameplay diff --git a/Content.Client/Ghost/GhostSystem.cs b/Content.Client/Ghost/GhostSystem.cs index a89d0858d9dd41..5727534109efdd 100644 --- a/Content.Client/Ghost/GhostSystem.cs +++ b/Content.Client/Ghost/GhostSystem.cs @@ -58,10 +58,10 @@ public override void Initialize() SubscribeLocalEvent(OnGhostRemove); SubscribeLocalEvent(OnGhostState); - SubscribeLocalEvent(OnGhostPlayerAttach); - SubscribeLocalEvent(OnGhostPlayerDetach); + SubscribeLocalEvent(OnGhostPlayerAttach); + SubscribeLocalEvent(OnGhostPlayerDetach); - SubscribeLocalEvent(OnPlayerAttach); + SubscribeLocalEvent(OnPlayerAttach); SubscribeNetworkEvent(OnGhostWarpsResponse); SubscribeNetworkEvent(OnUpdateGhostRoleCount); @@ -130,7 +130,7 @@ private void OnGhostRemove(EntityUid uid, GhostComponent component, ComponentRem PlayerRemoved?.Invoke(component); } - private void OnGhostPlayerAttach(EntityUid uid, GhostComponent component, LocalPlayerAttachedEvent localPlayerAttachedEvent) + private void OnGhostPlayerAttach(EntityUid uid, GhostComponent component, PlayerAttachedEvent playerAttachedEvent) { if (uid != _playerManager.LocalPlayer?.ControlledEntity) return; @@ -161,13 +161,13 @@ private bool PlayerDetach(EntityUid uid) return true; } - private void OnGhostPlayerDetach(EntityUid uid, GhostComponent component, LocalPlayerDetachedEvent args) + private void OnGhostPlayerDetach(EntityUid uid, GhostComponent component, PlayerDetachedEvent args) { if (PlayerDetach(uid)) component.IsAttached = false; } - private void OnPlayerAttach(LocalPlayerAttachedEvent ev) + private void OnPlayerAttach(PlayerAttachedEvent ev) { if (!HasComp(ev.Entity)) PlayerDetach(ev.Entity); diff --git a/Content.Client/Hands/Systems/HandsSystem.cs b/Content.Client/Hands/Systems/HandsSystem.cs index 31de7ec14334ee..ed40589f7fd4eb 100644 --- a/Content.Client/Hands/Systems/HandsSystem.cs +++ b/Content.Client/Hands/Systems/HandsSystem.cs @@ -42,8 +42,8 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(HandlePlayerAttached); - SubscribeLocalEvent(HandlePlayerDetached); + SubscribeLocalEvent(HandlePlayerAttached); + SubscribeLocalEvent(HandlePlayerDetached); SubscribeLocalEvent(OnHandsStartup); SubscribeLocalEvent(OnHandsShutdown); SubscribeLocalEvent(HandleComponentState); @@ -361,12 +361,12 @@ private void OnVisualsChanged(EntityUid uid, HandsComponent component, VisualsCh #region Gui - private void HandlePlayerAttached(EntityUid uid, HandsComponent component, LocalPlayerAttachedEvent args) + private void HandlePlayerAttached(EntityUid uid, HandsComponent component, PlayerAttachedEvent args) { OnPlayerHandsAdded?.Invoke(component); } - private void HandlePlayerDetached(EntityUid uid, HandsComponent component, LocalPlayerDetachedEvent args) + private void HandlePlayerDetached(EntityUid uid, HandsComponent component, PlayerDetachedEvent args) { OnPlayerHandsRemoved?.Invoke(); } diff --git a/Content.Client/HealthOverlay/HealthOverlaySystem.cs b/Content.Client/HealthOverlay/HealthOverlaySystem.cs index 29ac937199de1a..baeb4fe0259e66 100644 --- a/Content.Client/HealthOverlay/HealthOverlaySystem.cs +++ b/Content.Client/HealthOverlay/HealthOverlaySystem.cs @@ -3,8 +3,8 @@ using Content.Shared.GameTicking; using Content.Shared.Mobs.Components; using JetBrains.Annotations; +using Robust.Client.GameObjects; using Robust.Client.Graphics; -using Robust.Client.Player; namespace Content.Client.HealthOverlay { @@ -13,9 +13,9 @@ public sealed class HealthOverlaySystem : EntitySystem { [Dependency] private readonly IEyeManager _eyeManager = default!; [Dependency] private readonly IEntityManager _entities = default!; - [Dependency] private readonly IPlayerManager _player = default!; private readonly Dictionary _guis = new(); + private EntityUid? _attachedEntity; private bool _enabled; public bool Enabled @@ -42,6 +42,7 @@ public override void Initialize() base.Initialize(); SubscribeNetworkEvent(Reset); + SubscribeLocalEvent(HandlePlayerAttached); } public void Reset(RoundRestartCleanupEvent ev) @@ -52,6 +53,12 @@ public void Reset(RoundRestartCleanupEvent ev) } _guis.Clear(); + _attachedEntity = default; + } + + private void HandlePlayerAttached(PlayerAttachSysMessage message) + { + _attachedEntity = message.AttachedEntity; } public override void FrameUpdate(float frameTime) @@ -63,7 +70,7 @@ public override void FrameUpdate(float frameTime) return; } - if (_player.LocalEntity is not {} ent || Deleted(ent)) + if (_attachedEntity is not {} ent || Deleted(ent)) { return; } diff --git a/Content.Client/Inventory/ClientInventorySystem.cs b/Content.Client/Inventory/ClientInventorySystem.cs index f0a12b3b1f6d09..ffff392aa4683a 100644 --- a/Content.Client/Inventory/ClientInventorySystem.cs +++ b/Content.Client/Inventory/ClientInventorySystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Inventory.Events; using Content.Shared.Storage; using JetBrains.Annotations; +using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Shared.Containers; @@ -42,8 +43,8 @@ public override void Initialize() UpdatesOutsidePrediction = true; base.Initialize(); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnShutdown); @@ -112,12 +113,12 @@ private void OnShutdown(EntityUid uid, InventoryComponent component, ComponentSh OnUnlinkInventory?.Invoke(); } - private void OnPlayerDetached(EntityUid uid, InventorySlotsComponent component, LocalPlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, InventorySlotsComponent component, PlayerDetachedEvent args) { OnUnlinkInventory?.Invoke(); } - private void OnPlayerAttached(EntityUid uid, InventorySlotsComponent component, LocalPlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, InventorySlotsComponent component, PlayerAttachedEvent args) { if (TryGetSlots(uid, out var definitions)) { diff --git a/Content.Client/Mind/MindSystem.cs b/Content.Client/Mind/MindSystem.cs index cc43c349e47e0d..87d9e9ddbe01c0 100644 --- a/Content.Client/Mind/MindSystem.cs +++ b/Content.Client/Mind/MindSystem.cs @@ -4,24 +4,4 @@ namespace Content.Client.Mind; public sealed class MindSystem : SharedMindSystem { - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnHandleState); - } - - private void OnHandleState(EntityUid uid, MindComponent component, ref AfterAutoHandleStateEvent args) - { - // Because minds are generally not networked, there might be weird situations were a client thinks multiple - // users share a mind? E.g., if an admin periodical gets sent all minds via some PVS override, but doesn't get - // sent intermediate states? Not sure if this is actually possible, but better to be safe. - foreach (var (user, mind) in UserMinds) - { - if (mind == uid) - UserMinds.Remove(user); - } - - if (component.UserId != null) - UserMinds[component.UserId.Value] = uid; - } } diff --git a/Content.Client/Overlays/EquipmentHudSystem.cs b/Content.Client/Overlays/EquipmentHudSystem.cs index ac618691d8b6da..1d5ec032918218 100644 --- a/Content.Client/Overlays/EquipmentHudSystem.cs +++ b/Content.Client/Overlays/EquipmentHudSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.GameTicking; using Content.Shared.Inventory; using Content.Shared.Inventory.Events; +using Robust.Client.GameObjects; using Robust.Client.Player; namespace Content.Client.Overlays; @@ -23,8 +24,8 @@ public override void Initialize() SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnRemove); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnCompEquip); SubscribeLocalEvent(OnCompUnequip); @@ -64,12 +65,12 @@ private void OnRemove(EntityUid uid, T component, ComponentRemove args) RefreshOverlay(uid); } - private void OnPlayerAttached(LocalPlayerAttachedEvent args) + private void OnPlayerAttached(PlayerAttachedEvent args) { RefreshOverlay(args.Entity); } - private void OnPlayerDetached(LocalPlayerDetachedEvent args) + private void OnPlayerDetached(PlayerDetachedEvent args) { if (_player.LocalPlayer?.ControlledEntity == null) Deactivate(); diff --git a/Content.Client/Physics/Controllers/MoverController.cs b/Content.Client/Physics/Controllers/MoverController.cs index 52340b33918033..54c5c3de15b2fc 100644 --- a/Content.Client/Physics/Controllers/MoverController.cs +++ b/Content.Client/Physics/Controllers/MoverController.cs @@ -1,6 +1,7 @@ using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; using Content.Shared.Pulling.Components; +using Robust.Client.GameObjects; using Robust.Client.Physics; using Robust.Client.Player; using Robust.Shared.Physics.Components; @@ -16,10 +17,10 @@ public sealed class MoverController : SharedMoverController public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnRelayPlayerAttached); - SubscribeLocalEvent(OnRelayPlayerDetached); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnRelayPlayerAttached); + SubscribeLocalEvent(OnRelayPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnUpdatePredicted); SubscribeLocalEvent(OnUpdateRelayTargetPredicted); @@ -53,7 +54,7 @@ private void OnUpdatePullablePredicted(EntityUid uid, SharedPullableComponent co // What if the entity is being pulled by a vehicle controlled by the player? } - private void OnRelayPlayerAttached(EntityUid uid, RelayInputMoverComponent component, LocalPlayerAttachedEvent args) + private void OnRelayPlayerAttached(EntityUid uid, RelayInputMoverComponent component, PlayerAttachedEvent args) { Physics.UpdateIsPredicted(uid); Physics.UpdateIsPredicted(component.RelayEntity); @@ -61,7 +62,7 @@ private void OnRelayPlayerAttached(EntityUid uid, RelayInputMoverComponent compo SetMoveInput(inputMover, MoveButtons.None); } - private void OnRelayPlayerDetached(EntityUid uid, RelayInputMoverComponent component, LocalPlayerDetachedEvent args) + private void OnRelayPlayerDetached(EntityUid uid, RelayInputMoverComponent component, PlayerDetachedEvent args) { Physics.UpdateIsPredicted(uid); Physics.UpdateIsPredicted(component.RelayEntity); @@ -69,12 +70,12 @@ private void OnRelayPlayerDetached(EntityUid uid, RelayInputMoverComponent compo SetMoveInput(inputMover, MoveButtons.None); } - private void OnPlayerAttached(EntityUid uid, InputMoverComponent component, LocalPlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, InputMoverComponent component, PlayerAttachedEvent args) { SetMoveInput(component, MoveButtons.None); } - private void OnPlayerDetached(EntityUid uid, InputMoverComponent component, LocalPlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, InputMoverComponent component, PlayerDetachedEvent args) { SetMoveInput(component, MoveButtons.None); } diff --git a/Content.Client/Players/PlayerSystem.cs b/Content.Client/Players/PlayerSystem.cs index dba95ef7a65f32..d5ce4ec197f725 100644 --- a/Content.Client/Players/PlayerSystem.cs +++ b/Content.Client/Players/PlayerSystem.cs @@ -1,11 +1,11 @@ using Content.Shared.Players; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Client.Players; public sealed class PlayerSystem : SharedPlayerSystem { - public override ContentPlayerData? ContentData(ICommonSession? session) + public override PlayerData? ContentData(ICommonSession? session) { return null; } diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index d68272a107e4f5..1d4ca19ce269d7 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -9,6 +9,7 @@ using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Replays; using Robust.Shared.Timing; diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Movement.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Movement.cs index d48a1eab46676c..3bb2afe1221869 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Movement.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Movement.cs @@ -2,7 +2,7 @@ using Robust.Shared.Input; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Client.Replay.Spectator; diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs index 479e2eff976fb6..45a175e688458d 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs @@ -1,5 +1,5 @@ using Content.Shared.Movement.Components; -using Robust.Client.Player; +using Robust.Client.GameObjects; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Network; @@ -79,7 +79,7 @@ private void OnAfterSetTick() public void SetSpectatorPosition(SpectatorData data) { - if (_player.LocalSession == null) + if (_player.LocalPlayer == null) return; if (data.Controller != null @@ -87,13 +87,13 @@ public void SetSpectatorPosition(SpectatorData data) && Exists(session.AttachedEntity) && Transform(session.AttachedEntity.Value).MapID != MapId.Nullspace) { - _player.SetAttachedEntity(_player.LocalSession, session.AttachedEntity); + _player.LocalPlayer.AttachEntity(session.AttachedEntity.Value, EntityManager, _client); return; } if (Exists(data.Entity) && Transform(data.Entity).MapID != MapId.Nullspace) { - _player.SetAttachedEntity(_player.LocalSession, data.Entity); + _player.LocalPlayer.AttachEntity(data.Entity, EntityManager, _client); return; } @@ -118,7 +118,7 @@ public void SetSpectatorPosition(SpectatorData data) return; } - if (data.Eye != null && TryComp(_player.LocalSession.AttachedEntity, out InputMoverComponent? newMover)) + if (data.Eye != null && TryComp(_player.LocalPlayer.ControlledEntity, out InputMoverComponent? newMover)) { newMover.RelativeEntity = data.Eye.Value.Ent; newMover.TargetRelativeRotation = newMover.RelativeRotation = data.Eye.Value.Rot; @@ -177,7 +177,7 @@ private void OnParentChanged(EntityUid uid, ReplaySpectatorComponent component, SetSpectatorPosition(default); } - private void OnDetached(EntityUid uid, ReplaySpectatorComponent component, LocalPlayerDetachedEvent args) + private void OnDetached(EntityUid uid, ReplaySpectatorComponent component, PlayerDetachedEvent args) { if (IsClientSide(uid)) QueueDel(uid); diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Spectate.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Spectate.cs index 80a8429055f449..f3475c5479c05f 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Spectate.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Spectate.cs @@ -32,10 +32,10 @@ private void OnGetAlternativeVerbs(GetVerbsEvent ev) public void SpectateEntity(EntityUid target) { - if (_player.LocalSession == null) + if (_player.LocalPlayer == null) return; - var old = _player.LocalSession.AttachedEntity; + var old = _player.LocalPlayer.ControlledEntity; if (old == target) { @@ -44,7 +44,7 @@ public void SpectateEntity(EntityUid target) return; } - _player.SetAttachedEntity(_player.LocalSession, target); + _player.LocalPlayer.AttachEntity(target, EntityManager, _client); EnsureComp(target); _stateMan.RequestStateChange(); @@ -59,10 +59,10 @@ public void SpectateEntity(EntityUid target) public TransformComponent SpawnSpectatorGhost(EntityCoordinates coords, bool gridAttach) { - if (_player.LocalSession == null) + if (_player.LocalPlayer == null) throw new InvalidOperationException(); - var old = _player.LocalSession.AttachedEntity; + var old = _player.LocalPlayer.ControlledEntity; var ent = Spawn("ReplayObserver", coords); _eye.SetMaxZoom(ent, Vector2.One * 5); @@ -73,7 +73,7 @@ public TransformComponent SpawnSpectatorGhost(EntityCoordinates coords, bool gri if (gridAttach) _transform.AttachToGridOrMap(ent); - _player.SetAttachedEntity(_player.LocalSession, ent); + _player.LocalPlayer.AttachEntity(ent, EntityManager, _client); if (old != null) { @@ -93,7 +93,7 @@ private void SpectateCommand(IConsoleShell shell, string argStr, string[] args) { if (args.Length == 0) { - if (_player.LocalSession?.AttachedEntity is { } current) + if (_player.LocalPlayer?.ControlledEntity is { } current) SpawnSpectatorGhost(new EntityCoordinates(current, default), true); else SpawnSpectatorGhost(default, true); diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.cs index 3b9662ed8c674a..c75529c037fcd4 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.cs @@ -6,6 +6,7 @@ using Robust.Client.Replays.Playback; using Robust.Client.State; using Robust.Shared.Console; +using Robust.Shared.Network; using Robust.Shared.Serialization.Markdown.Mapping; namespace Content.Client.Replay.Spectator; @@ -39,7 +40,7 @@ public override void Initialize() SubscribeLocalEvent>(OnGetAlternativeVerbs); SubscribeLocalEvent(OnTerminating); - SubscribeLocalEvent(OnDetached); + SubscribeLocalEvent(OnDetached); SubscribeLocalEvent(OnParentChanged); InitializeBlockers(); diff --git a/Content.Client/Sandbox/SandboxSystem.cs b/Content.Client/Sandbox/SandboxSystem.cs index d16751e3715d2b..7dcbfa0ee02ee3 100644 --- a/Content.Client/Sandbox/SandboxSystem.cs +++ b/Content.Client/Sandbox/SandboxSystem.cs @@ -5,7 +5,7 @@ using Robust.Client.Placement; using Robust.Client.Placement.Modes; using Robust.Shared.Map; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Client.Sandbox { diff --git a/Content.Client/Traits/ParacusiaSystem.cs b/Content.Client/Traits/ParacusiaSystem.cs index 87abec80bb9e94..34c7d6859e2ab1 100644 --- a/Content.Client/Traits/ParacusiaSystem.cs +++ b/Content.Client/Traits/ParacusiaSystem.cs @@ -1,6 +1,8 @@ using System.Numerics; using Content.Shared.Traits.Assorted; +using Content.Client.Camera; using Robust.Shared.Random; +using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.Timing; @@ -17,7 +19,7 @@ public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnComponentStartup); - SubscribeLocalEvent(OnPlayerDetach); + SubscribeLocalEvent(OnPlayerDetach); } public override void Update(float frameTime) @@ -38,7 +40,7 @@ private void OnComponentStartup(EntityUid uid, ParacusiaComponent component, Com component.NextIncidentTime = _timing.CurTime + TimeSpan.FromSeconds(_random.NextFloat(component.MinTimeBetweenIncidents, component.MaxTimeBetweenIncidents)); } - private void OnPlayerDetach(EntityUid uid, ParacusiaComponent component, LocalPlayerDetachedEvent args) + private void OnPlayerDetach(EntityUid uid, ParacusiaComponent component, PlayerDetachedEvent args) { component.Stream?.Stop(); } diff --git a/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs b/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs index 45bdada6e7af32..925b2dae4fd45d 100644 --- a/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs +++ b/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs @@ -8,7 +8,6 @@ using Content.Shared.Input; using JetBrains.Annotations; using Robust.Client.GameObjects; -using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controllers; using Robust.Client.UserInterface.Controls; @@ -22,7 +21,6 @@ namespace Content.Client.UserInterface.Systems.Character; [UsedImplicitly] public sealed class CharacterUIController : UIController, IOnStateEntered, IOnStateExited, IOnSystemChanged { - [Dependency] private readonly IPlayerManager _player = default!; [UISystemDependency] private readonly CharacterInfoSystem _characterInfo = default!; [UISystemDependency] private readonly SpriteSystem _sprite = default!; @@ -58,13 +56,13 @@ public void OnStateExited(GameplayState state) public void OnSystemLoaded(CharacterInfoSystem system) { system.OnCharacterUpdate += CharacterUpdated; - _player.LocalPlayerDetached += CharacterDetached; + system.OnCharacterDetached += CharacterDetached; } public void OnSystemUnloaded(CharacterInfoSystem system) { system.OnCharacterUpdate -= CharacterUpdated; - _player.LocalPlayerDetached -= CharacterDetached; + system.OnCharacterDetached -= CharacterDetached; } public void UnloadButton() @@ -162,7 +160,7 @@ private void CharacterUpdated(CharacterData data) _window.RolePlaceholder.Visible = briefing == null && !controls.Any() && !objectives.Any(); } - private void CharacterDetached(EntityUid uid) + private void CharacterDetached() { CloseWindow(); } diff --git a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs index 9334f85c00697e..6d86e458c5c846 100644 --- a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs +++ b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs @@ -162,8 +162,7 @@ public override void Initialize() _sawmill = Logger.GetSawmill("chat"); _sawmill.Level = LogLevel.Info; _admin.AdminStatusUpdated += UpdateChannelPermissions; - _player.LocalPlayerAttached += OnAttachedChanged; - _player.LocalPlayerDetached += OnAttachedChanged; + _player.LocalPlayerChanged += OnLocalPlayerChanged; _state.OnStateChanged += StateChanged; _net.RegisterNetMessage(OnChatMessage); _net.RegisterNetMessage(OnDeleteChatMessagesBy); @@ -171,7 +170,7 @@ public override void Initialize() _speechBubbleRoot = new LayoutContainer(); - UpdateChannelPermissions(); + OnLocalPlayerChanged(new LocalPlayerChangedEventArgs(null, _player.LocalPlayer)); _input.SetInputCommand(ContentKeyFunctions.FocusChat, InputCmdHandler.FromDelegate(_ => FocusChat())); @@ -364,7 +363,29 @@ public void SetSpeechBubbleRoot(LayoutContainer root) _speechBubbleRoot.SetPositionLast(); } - private void OnAttachedChanged(EntityUid uid) + private void OnLocalPlayerChanged(LocalPlayerChangedEventArgs obj) + { + if (obj.OldPlayer != null) + { + obj.OldPlayer.EntityAttached -= OnLocalPlayerEntityAttached; + obj.OldPlayer.EntityDetached -= OnLocalPlayerEntityDetached; + } + + if (obj.NewPlayer != null) + { + obj.NewPlayer.EntityAttached += OnLocalPlayerEntityAttached; + obj.NewPlayer.EntityDetached += OnLocalPlayerEntityDetached; + } + + UpdateChannelPermissions(); + } + + private void OnLocalPlayerEntityAttached(EntityAttachedEventArgs obj) + { + UpdateChannelPermissions(); + } + + private void OnLocalPlayerEntityDetached(EntityDetachedEventArgs obj) { UpdateChannelPermissions(); } diff --git a/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs b/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs index ba4a871199ddd1..0836314dbc46a1 100644 --- a/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs +++ b/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs @@ -1,9 +1,11 @@ +using Content.Client.Alerts; using Content.Shared.Damage; using Content.Shared.FixedPoint; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using JetBrains.Annotations; +using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; using Robust.Client.UserInterface; @@ -23,13 +25,13 @@ public sealed class DamageOverlayUiController : UIController public override void Initialize() { _overlay = new Overlays.DamageOverlay(); - SubscribeLocalEvent(OnPlayerAttach); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttach); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnMobStateChanged); SubscribeLocalEvent(OnThresholdCheck); } - private void OnPlayerAttach(LocalPlayerAttachedEvent args) + private void OnPlayerAttach(PlayerAttachedEvent args) { ClearOverlay(); if (!EntityManager.TryGetComponent(args.Entity, out var mobState)) @@ -39,7 +41,7 @@ private void OnPlayerAttach(LocalPlayerAttachedEvent args) _overlayManager.AddOverlay(_overlay); } - private void OnPlayerDetached(LocalPlayerDetachedEvent args) + private void OnPlayerDetached(PlayerDetachedEvent args) { _overlayManager.RemoveOverlay(_overlay); ClearOverlay(); diff --git a/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs b/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs index 778de82210a8f3..d7ec9f3497c718 100644 --- a/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs +++ b/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs @@ -17,7 +17,7 @@ using Robust.Client.UserInterface.Controllers.Implementations; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Utility; using static Robust.Client.UserInterface.Controls.BaseButton; diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs index 2d2883d8b7698a..397032cd154555 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs @@ -16,8 +16,7 @@ using Robust.Shared.Input; using Robust.Shared.Map; using Robust.Shared.Player; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; +using Robust.Shared.Players; namespace Content.Client.Weapons.Melee; diff --git a/Content.IntegrationTests/Pair/TestPair.cs b/Content.IntegrationTests/Pair/TestPair.cs index 2672b4db56e454..2971573ff28eba 100644 --- a/Content.IntegrationTests/Pair/TestPair.cs +++ b/Content.IntegrationTests/Pair/TestPair.cs @@ -3,11 +3,13 @@ using System.IO; using System.Linq; using Content.Server.GameTicking; +using Content.Server.Players; +using Content.Shared.Mind; using Content.Shared.Players; +using Robust.Server.Player; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.UnitTesting; @@ -28,8 +30,8 @@ public sealed partial class TestPair public RobustIntegrationTest.ServerIntegrationInstance Server { get; private set; } = default!; public RobustIntegrationTest.ClientIntegrationInstance Client { get; private set; } = default!; - public ICommonSession? Player => Server.PlayerMan.Sessions.FirstOrDefault(); - public ContentPlayerData? PlayerData => Player?.Data.ContentData(); + public IPlayerSession? Player => (IPlayerSession?) Server.PlayerMan.Sessions.FirstOrDefault(); + public PlayerData? PlayerData => Player?.Data.ContentData(); public PoolTestLogHandler ServerLogHandler { get; private set; } = default!; public PoolTestLogHandler ClientLogHandler { get; private set; } = default!; diff --git a/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs b/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs index 01daeea93c53a1..01f8bdd9387f2c 100644 --- a/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs +++ b/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs @@ -3,6 +3,8 @@ using Content.Shared.CombatMode; using Robust.Server.Player; using Robust.Shared.GameObjects; +using Robust.Shared.Players; +using PlayerManager = Robust.Client.Player.PlayerManager; namespace Content.IntegrationTests.Tests.Actions; @@ -24,7 +26,7 @@ public async Task TestCombatActionsAdded() var sEntMan = server.ResolveDependency(); var cEntMan = client.ResolveDependency(); var clientSession = client.ResolveDependency().LocalPlayer?.Session; - var serverSession = server.ResolveDependency().Sessions.Single(); + var serverSession = server.ResolveDependency().ServerSessions.Single(); var sActionSystem = server.System(); var cActionSystem = client.System(); diff --git a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs index 98c7363a6c4977..6562a26b5e10ad 100644 --- a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs +++ b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs @@ -7,6 +7,8 @@ using Content.Shared.Database; using Robust.Server.Player; using Robust.Shared.GameObjects; +using Robust.Shared.Map; +using Robust.Shared.Utility; namespace Content.IntegrationTests.Tests.Administration.Logs; @@ -175,7 +177,7 @@ public async Task AddPlayerSessionLog() await server.WaitPost(() => { - var player = sPlayers.Sessions.First(); + var player = sPlayers.ServerSessions.First(); playerGuid = player.UserId; Assert.DoesNotThrow(() => @@ -278,7 +280,7 @@ public async Task DuplicatePlayerDoesNotThrowTest() await server.WaitPost(() => { - var player = sPlayers.Sessions.Single(); + var player = sPlayers.ServerSessions.Single(); sAdminLogSystem.Add(LogType.Unknown, $"{player} {player} test log: {guid}"); }); @@ -316,7 +318,7 @@ public async Task DuplicatePlayerIdDoesNotThrowTest() await server.WaitPost(() => { - var player = sPlayers.Sessions.Single(); + var player = sPlayers.ServerSessions.Single(); sAdminLogSystem.Add(LogType.Unknown, $"{player:first} {player:second} test log: {guid}"); }); diff --git a/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs b/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs index 5a58757d531531..1155edfad2ddc4 100644 --- a/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs +++ b/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs @@ -5,7 +5,6 @@ using Content.Shared.Database; using Robust.Server.Player; using Robust.Shared.GameObjects; -using Robust.Shared.Player; namespace Content.IntegrationTests.Tests.Administration.Logs; @@ -28,11 +27,11 @@ public async Task QuerySingleLog() var date = DateTime.UtcNow; var guid = Guid.NewGuid(); - ICommonSession player = default; + IPlayerSession player = default; await server.WaitPost(() => { - player = sPlayers.Sessions.First(); + player = sPlayers.ServerSessions.First(); sAdminLogSystem.Add(LogType.Unknown, $"{player.AttachedEntity:Entity} test log: {guid}"); }); diff --git a/Content.IntegrationTests/Tests/Cleanup/EuiManagerTest.cs b/Content.IntegrationTests/Tests/Cleanup/EuiManagerTest.cs index e2bff03501a230..9aac4e2892a9a2 100644 --- a/Content.IntegrationTests/Tests/Cleanup/EuiManagerTest.cs +++ b/Content.IntegrationTests/Tests/Cleanup/EuiManagerTest.cs @@ -25,7 +25,7 @@ public async Task EuiManagerRecycleWithOpenWindowTest() await server.WaitAssertion(() => { - var clientSession = sPlayerManager.Sessions.Single(); + var clientSession = sPlayerManager.ServerSessions.Single(); var ui = new AdminAnnounceEui(); eui.OpenEui(ui, clientSession); }); diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs index df77410e540c8e..b4b6c2239fbec3 100644 --- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs +++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs @@ -14,7 +14,6 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Mind; -using Content.Shared.Players; using Robust.Client.Input; using Robust.Client.UserInterface; using Robust.Server.GameObjects; @@ -22,7 +21,7 @@ using Robust.Shared.GameObjects; using Robust.Shared.Log; using Robust.Shared.Map; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Robust.UnitTesting; @@ -68,7 +67,7 @@ public abstract partial class InteractionTest protected NetEntity Player; protected ICommonSession ClientSession = default!; - protected ICommonSession ServerSession = default!; + protected IPlayerSession ServerSession = default!; public EntityUid? ClientTarget; diff --git a/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs b/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs index 22a185798e97c7..28e49645c970ab 100644 --- a/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs +++ b/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs @@ -5,7 +5,6 @@ using Content.Server.Players; using Content.Shared.Ghost; using Content.Shared.Mind; -using Content.Shared.Players; using Robust.Shared.Console; using Robust.Shared.GameObjects; using Robust.Shared.Map; @@ -44,7 +43,7 @@ public async Task TakeRoleAndReturn() var sPlayerMan = server.ResolveDependency(); var conHost = client.ResolveDependency(); var mindSystem = entMan.System(); - var session = sPlayerMan.Sessions.Single(); + var session = sPlayerMan.ServerSessions.Single(); var originalMindId = session.ContentData()!.Mind!.Value; // Spawn player entity & attach diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs b/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs index a67a45ecb4c8ec..9fc68ef93d45f0 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs @@ -2,7 +2,6 @@ using Content.Server.Players; using Content.Shared.Ghost; using Content.Shared.Mind; -using Content.Shared.Players; using Robust.Server.Console; using Robust.Server.GameObjects; using Robust.Server.Player; @@ -36,7 +35,7 @@ public async Task TestDeleteVisiting() MindComponent mind = default!; await server.WaitAssertion(() => { - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); playerEnt = entMan.SpawnEntity(null, MapCoordinates.Nullspace); visitEnt = entMan.SpawnEntity(null, MapCoordinates.Nullspace); @@ -82,7 +81,7 @@ public async Task TestGhostOnDeleteMap() var entMan = server.ResolveDependency(); var mapManager = server.ResolveDependency(); var playerMan = server.ResolveDependency(); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); var mindSystem = entMan.EntitySysManager.GetEntitySystem(); @@ -129,7 +128,7 @@ public async Task TestGhostOnDelete() var entMan = server.ResolveDependency(); var playerMan = server.ResolveDependency(); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); Assert.That(!entMan.HasComponent(player.AttachedEntity), "Player was initially a ghost?"); @@ -163,7 +162,7 @@ public async Task TestOriginalDeletedWhileGhostingKeepsGhost() var mindSystem = entMan.EntitySysManager.GetEntitySystem(); var mind = GetMind(pair); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); #pragma warning disable NUnit2045 // Interdependent assertions. Assert.That(player.AttachedEntity, Is.Not.Null); Assert.That(entMan.EntityExists(player.AttachedEntity)); @@ -219,7 +218,7 @@ public async Task TestGhostToAghost() var playerMan = server.ResolveDependency(); var serverConsole = server.ResolveDependency(); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); var ghost = await BecomeGhost(pair); @@ -264,7 +263,7 @@ public async Task TestGhostDeletedSpawnsNewGhost() var playerMan = server.ResolveDependency(); var serverConsole = server.ResolveDependency(); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); EntityUid ghost = default!; diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs b/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs index bbc011acacbd1a..f71a6ad5f98e34 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs @@ -3,14 +3,12 @@ using Content.Server.Players; using Content.Shared.Ghost; using Content.Shared.Mind; -using Content.Shared.Players; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.GameObjects; using Robust.Shared.Map; using Robust.Shared.Network; -using Robust.Shared.Player; namespace Content.IntegrationTests.Tests.Minds; @@ -38,7 +36,7 @@ public sealed partial class MindTests var playerMan = pair.Server.ResolveDependency(); var mindSys = entMan.System(); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); EntityUid entity = default; EntityUid mindId = default!; @@ -73,7 +71,7 @@ private static async Task BecomeGhost(TestPair pair, bool visit = fal EntityUid mindId = default!; MindComponent mind = default!; - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); await pair.Server.WaitAssertion(() => { var oldUid = player.AttachedEntity; @@ -120,7 +118,7 @@ private static (EntityUid Id, MindComponent Comp) GetMind(Pair.TestPair pair) { var playerMan = pair.Server.ResolveDependency(); var entMan = pair.Server.ResolveDependency(); - var player = playerMan.Sessions.SingleOrDefault(); + var player = playerMan.ServerSessions.SingleOrDefault(); Assert.That(player, Is.Not.Null); var mindId = player.ContentData()!.Mind!.Value; @@ -141,7 +139,7 @@ private static async Task Disconnect(Pair.TestPair pair) var netManager = pair.Client.ResolveDependency(); var playerMan = pair.Server.ResolveDependency(); var entMan = pair.Server.ResolveDependency(); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); var mindId = player.ContentData()!.Mind!.Value; var mind = entMan.GetComponent(mindId); @@ -163,21 +161,21 @@ private static async Task Connect(Pair.TestPair pair, string username) { var netManager = pair.Client.ResolveDependency(); var playerMan = pair.Server.ResolveDependency(); - Assert.That(!playerMan.Sessions.Any()); + Assert.That(!playerMan.ServerSessions.Any()); await Task.WhenAll(pair.Client.WaitIdleAsync(), pair.Client.WaitIdleAsync()); pair.Client.SetConnectTarget(pair.Server); await pair.Client.WaitPost(() => netManager.ClientConnect(null!, 0, username)); await pair.RunTicksSync(5); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); Assert.That(player.Status, Is.EqualTo(SessionStatus.InGame)); } - private static async Task DisconnectReconnect(Pair.TestPair pair) + private static async Task DisconnectReconnect(Pair.TestPair pair) { var playerMan = pair.Server.ResolveDependency(); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); var name = player.Name; var id = player.UserId; @@ -185,7 +183,7 @@ private static async Task DisconnectReconnect(Pair.TestPair pair await Connect(pair, name); // Session has changed - var newSession = playerMan.Sessions.Single(); + var newSession = playerMan.ServerSessions.Single(); Assert.Multiple(() => { Assert.That(newSession, Is.Not.EqualTo(player)); diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs b/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs index 9939ebc5455ea0..ea2110c03a6ae3 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs @@ -49,7 +49,7 @@ public async Task TestDeletedCanReconnect() var mind = GetMind(pair); var playerMan = pair.Server.ResolveDependency(); - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); var name = player.Name; var user = player.UserId; Assert.That(mind.Comp.OwnedEntity, Is.Not.Null); @@ -72,7 +72,7 @@ public async Task TestDeletedCanReconnect() // Reconnect await Connect(pair, name); - player = playerMan.Sessions.Single(); + player = playerMan.ServerSessions.Single(); Assert.Multiple(() => { Assert.That(user, Is.EqualTo(player.UserId)); @@ -127,10 +127,8 @@ public async Task TestVisitingReconnect() var mindSys = entMan.System(); var mind = GetMind(pair); - Assert.Null(mind.Comp.VisitingEntity); - // Make player visit a new mob - var original = mind.Comp.OwnedEntity; + var original = mind.Comp.CurrentEntity; EntityUid visiting = default; await pair.Server.WaitAssertion(() => { @@ -139,7 +137,6 @@ await pair.Server.WaitAssertion(() => }); await pair.RunTicksSync(5); - Assert.That(mind.Comp.VisitingEntity, Is.EqualTo(visiting)); await DisconnectReconnect(pair); // Player is back in control of the visited mob, mind was preserved diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.cs b/Content.IntegrationTests/Tests/Minds/MindTests.cs index c9788b80a6d75e..fb2fef43edba27 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.cs @@ -11,7 +11,6 @@ using Content.Shared.FixedPoint; using Content.Shared.Mind; using Content.Shared.Mind.Components; -using Content.Shared.Players; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; using Robust.Server.Console; @@ -68,12 +67,13 @@ await server.WaitAssertion(() => var entity = entMan.SpawnEntity(null, new MapCoordinates()); var mindComp = entMan.EnsureComponent(entity); - var mind = mindSystem.CreateMind(null); + var mindId = mindSystem.CreateMind(null); + var mind = entMan.GetComponent(mindId); - Assert.That(mind.Comp.UserId, Is.EqualTo(null)); + Assert.That(mind.UserId, Is.EqualTo(null)); - mindSystem.TransferTo(mind, entity, mind: mind); - Assert.That(mindSystem.GetMind(entity, mindComp), Is.EqualTo(mind.Owner)); + mindSystem.TransferTo(mindId, entity, mind: mind); + Assert.That(mindSystem.GetMind(entity, mindComp), Is.EqualTo(mindId)); }); await pair.CleanReturnAsync(); @@ -94,11 +94,11 @@ await server.WaitAssertion(() => var entity = entMan.SpawnEntity(null, new MapCoordinates()); var mindComp = entMan.EnsureComponent(entity); - var mindId = mindSystem.CreateMind(null).Owner; + var mindId = mindSystem.CreateMind(null); mindSystem.TransferTo(mindId, entity); Assert.That(mindSystem.GetMind(entity, mindComp), Is.EqualTo(mindId)); - var mind2 = mindSystem.CreateMind(null).Owner; + var mind2 = mindSystem.CreateMind(null); mindSystem.TransferTo(mind2, entity); Assert.Multiple(() => { @@ -184,7 +184,7 @@ await server.WaitAssertion(() => var mindComp = entMan.EnsureComponent(entity); entMan.EnsureComponent(targetEntity); - var mind = mindSystem.CreateMind(null).Owner; + var mind = mindSystem.CreateMind(null); mindSystem.TransferTo(mind, entity); @@ -276,7 +276,7 @@ await server.WaitAssertion(() => var entity = entMan.SpawnEntity(null, new MapCoordinates()); var mindComp = entMan.EnsureComponent(entity); - var mindId = mindSystem.CreateMind(null).Owner; + var mindId = mindSystem.CreateMind(null); var mind = entMan.EnsureComponent(mindId); Assert.That(mind.UserId, Is.EqualTo(null)); @@ -334,7 +334,7 @@ await server.WaitAssertion(() => public async Task TestPlayerCanGhost() { // Client is needed to spawn session - await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true, DummyTicker = false }); + await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var server = pair.Server; var entMan = server.ResolveDependency(); @@ -346,7 +346,7 @@ public async Task TestPlayerCanGhost() EntityUid entity = default!; EntityUid mindId = default!; MindComponent mind = default!; - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); await server.WaitAssertion(() => { @@ -407,6 +407,12 @@ await server.WaitAssertion(() => await pair.CleanReturnAsync(); } + // TODO Implement + /*[Test] + public async Task TestPlayerCanReturnFromGhostWhenDead() + { + }*/ + [Test] public async Task TestGhostDoesNotInfiniteLoop() { @@ -427,7 +433,7 @@ public async Task TestGhostDoesNotInfiniteLoop() EntityUid ghost = default!; EntityUid mindId = default!; MindComponent mind = default!; - var player = playerMan.Sessions.Single(); + var player = playerMan.ServerSessions.Single(); await server.WaitAssertion(() => { diff --git a/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs b/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs index d6aec781a99e7b..ca7eeac199d033 100644 --- a/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs +++ b/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs @@ -2,7 +2,8 @@ using System.Collections.Generic; using Content.IntegrationTests.Pair; using Content.Server.Administration.Managers; -using Robust.Shared.Player; +using Robust.Server.Player; +using Robust.Shared.Players; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; using Robust.Shared.Toolshed.Syntax; @@ -59,7 +60,7 @@ public virtual async Task Setup() AdminManager = Server.ResolveDependency(); } - protected bool InvokeCommand(string command, out object? result, ICommonSession? session = null) + protected bool InvokeCommand(string command, out object? result, IPlayerSession? session = null) { return Toolshed.InvokeCommand(this, command, null, out result); } @@ -94,7 +95,7 @@ public bool CheckInvokable(CommandSpec command, out IConError? error) return true; } - protected ICommonSession? InvocationSession { get; set; } + protected IPlayerSession? InvocationSession { get; set; } public ICommonSession? Session { diff --git a/Content.MapRenderer/Painters/MapPainter.cs b/Content.MapRenderer/Painters/MapPainter.cs index 8f3dd59baf8f31..b799db78a5f458 100644 --- a/Content.MapRenderer/Painters/MapPainter.cs +++ b/Content.MapRenderer/Painters/MapPainter.cs @@ -68,7 +68,7 @@ await client.WaitPost(() => await server.WaitPost(() => { - var playerEntity = sPlayerManager.Sessions.Single().AttachedEntity; + var playerEntity = sPlayerManager.ServerSessions.Single().AttachedEntity; if (playerEntity.HasValue) { diff --git a/Content.Server/Administration/AdminPermsChangedEventArgs.cs b/Content.Server/Administration/AdminPermsChangedEventArgs.cs index 07eb416be64c3e..24ca7aca6841cf 100644 --- a/Content.Server/Administration/AdminPermsChangedEventArgs.cs +++ b/Content.Server/Administration/AdminPermsChangedEventArgs.cs @@ -1,5 +1,5 @@ using Content.Shared.Administration; -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Administration { @@ -8,7 +8,7 @@ namespace Content.Server.Administration /// public sealed class AdminPermsChangedEventArgs : EventArgs { - public AdminPermsChangedEventArgs(ICommonSession player, AdminFlags? flags) + public AdminPermsChangedEventArgs(IPlayerSession player, AdminFlags? flags) { Player = player; Flags = flags; @@ -17,7 +17,7 @@ public AdminPermsChangedEventArgs(ICommonSession player, AdminFlags? flags) /// /// The player that had their admin permissions changed. /// - public ICommonSession Player { get; } + public IPlayerSession Player { get; } /// /// The admin flags of the player. Null if the player is no longer an admin. diff --git a/Content.Server/Administration/Commands/AGhost.cs b/Content.Server/Administration/Commands/AGhost.cs index 2d1a15a0bed00d..42a8600ff17ff4 100644 --- a/Content.Server/Administration/Commands/AGhost.cs +++ b/Content.Server/Administration/Commands/AGhost.cs @@ -2,6 +2,7 @@ using Content.Shared.Administration; using Content.Shared.Ghost; using Content.Shared.Mind; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -17,7 +18,7 @@ public sealed class AGhost : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("Nah"); diff --git a/Content.Server/Administration/Commands/AdminWhoCommand.cs b/Content.Server/Administration/Commands/AdminWhoCommand.cs index 9765e8385f0240..8e6c402c4e2e51 100644 --- a/Content.Server/Administration/Commands/AdminWhoCommand.cs +++ b/Content.Server/Administration/Commands/AdminWhoCommand.cs @@ -2,6 +2,7 @@ using Content.Server.Administration.Managers; using Content.Server.Afk; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Utility; @@ -34,7 +35,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) if (adminData.Title is { } title) sb.Append($": [{title}]"); - if (shell.Player is { } player && adminMgr.HasAdminFlag(player, AdminFlags.Admin)) + if (shell.Player is IPlayerSession player && adminMgr.HasAdminFlag(player, AdminFlags.Admin)) { if (afk.IsAfk(admin)) sb.Append(" [AFK]"); diff --git a/Content.Server/Administration/Commands/AnnounceUiCommand.cs b/Content.Server/Administration/Commands/AnnounceUiCommand.cs index d80db966863576..c4cd7f13e41721 100644 --- a/Content.Server/Administration/Commands/AnnounceUiCommand.cs +++ b/Content.Server/Administration/Commands/AnnounceUiCommand.cs @@ -1,6 +1,7 @@ using Content.Server.Administration.UI; using Content.Server.EUI; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -16,7 +17,7 @@ public sealed class AnnounceUiCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("This does not work from the server console."); diff --git a/Content.Server/Administration/Commands/BanCommand.cs b/Content.Server/Administration/Commands/BanCommand.cs index 156fdf496a9a08..58a801e4105640 100644 --- a/Content.Server/Administration/Commands/BanCommand.cs +++ b/Content.Server/Administration/Commands/BanCommand.cs @@ -1,8 +1,15 @@ using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; using Content.Server.Administration.Managers; +using Content.Server.Administration.Notes; +using Content.Server.Database; +using Content.Server.GameTicking; using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.Database; +using Content.Shared.Players.PlayTimeTracking; using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; @@ -77,7 +84,7 @@ public override async void Execute(IConsoleShell shell, string argStr, string[] } var located = await _locator.LookupIdByNameOrIdAsync(target); - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (located == null) { @@ -95,7 +102,7 @@ public override CompletionResult GetCompletion(IConsoleShell shell, string[] arg { if (args.Length == 1) { - var options = _playerManager.Sessions.Select(c => c.Name).OrderBy(c => c).ToArray(); + var options = _playerManager.ServerSessions.Select(c => c.Name).OrderBy(c => c).ToArray(); return CompletionResult.FromHintOptions(options, LocalizationManager.GetString("cmd-ban-hint")); } diff --git a/Content.Server/Administration/Commands/BanListCommand.cs b/Content.Server/Administration/Commands/BanListCommand.cs index a5bc97dce3edb2..1c2be523949f3b 100644 --- a/Content.Server/Administration/Commands/BanListCommand.cs +++ b/Content.Server/Administration/Commands/BanListCommand.cs @@ -36,7 +36,7 @@ public override async void Execute(IConsoleShell shell, string argStr, string[] return; } - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { var bans = await _dbManager.GetServerBansAsync(data.LastAddress, data.UserId, data.LastHWId, false); @@ -67,7 +67,7 @@ public override CompletionResult GetCompletion(IConsoleShell shell, string[] arg return CompletionResult.Empty; var playerMgr = IoCManager.Resolve(); - var options = playerMgr.Sessions.Select(c => c.Name).OrderBy(c => c).ToArray(); + var options = playerMgr.ServerSessions.Select(c => c.Name).OrderBy(c => c).ToArray(); return CompletionResult.FromHintOptions(options, Loc.GetString("cmd-banlist-hint")); } } diff --git a/Content.Server/Administration/Commands/BanPanelCommand.cs b/Content.Server/Administration/Commands/BanPanelCommand.cs index 9f9ec9e89fa417..6036e5aa6ea581 100644 --- a/Content.Server/Administration/Commands/BanPanelCommand.cs +++ b/Content.Server/Administration/Commands/BanPanelCommand.cs @@ -1,6 +1,12 @@ using Content.Shared.Administration; using Robust.Shared.Console; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; using Content.Server.EUI; +using Robust.Server.Player; namespace Content.Server.Administration.Commands; @@ -15,7 +21,7 @@ public sealed class BanPanelCommand : LocalizedCommands public override async void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError(Loc.GetString("cmd-banpanel-server")); return; diff --git a/Content.Server/Administration/Commands/ControlMob.cs b/Content.Server/Administration/Commands/ControlMob.cs index 317461a3736dfb..2d205e44d3b911 100644 --- a/Content.Server/Administration/Commands/ControlMob.cs +++ b/Content.Server/Administration/Commands/ControlMob.cs @@ -1,5 +1,6 @@ -using Content.Server.Mind; using Content.Shared.Administration; +using Content.Shared.Mind; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -15,7 +16,7 @@ public sealed class ControlMob : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteLine("shell-server-cannot"); return; @@ -41,7 +42,14 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - _entities.System().ControlMob(player.UserId, target); + var mindSystem = _entities.System(); + if (!mindSystem.TryGetMind(target, out var mindId, out var mind)) + { + shell.WriteLine(Loc.GetString("shell-entity-is-not-mob")); + return; + } + + mindSystem.TransferTo(mindId, target, mind: mind); } } } diff --git a/Content.Server/Administration/Commands/DSay.cs b/Content.Server/Administration/Commands/DSay.cs index 61b47d785674de..79b0e8db7d68d3 100644 --- a/Content.Server/Administration/Commands/DSay.cs +++ b/Content.Server/Administration/Commands/DSay.cs @@ -1,5 +1,7 @@ +using Content.Server.Chat; using Content.Server.Chat.Systems; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -15,7 +17,7 @@ sealed class DSay : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("shell-only-players-can-run-this-command"); diff --git a/Content.Server/Administration/Commands/DeAdminCommand.cs b/Content.Server/Administration/Commands/DeAdminCommand.cs index cf659412008ecb..c2bbfa7a339667 100644 --- a/Content.Server/Administration/Commands/DeAdminCommand.cs +++ b/Content.Server/Administration/Commands/DeAdminCommand.cs @@ -1,8 +1,10 @@ using Content.Server.Administration.Managers; using Content.Shared.Administration; using JetBrains.Annotations; +using Robust.Server.Player; using Robust.Shared.Console; + namespace Content.Server.Administration.Commands { [UsedImplicitly] @@ -15,7 +17,7 @@ public sealed class DeAdminCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("You cannot use this command from the server console."); diff --git a/Content.Server/Administration/Commands/ExplosionCommand.cs b/Content.Server/Administration/Commands/ExplosionCommand.cs index 56ed78b2e2e390..d48b69a5ad296a 100644 --- a/Content.Server/Administration/Commands/ExplosionCommand.cs +++ b/Content.Server/Administration/Commands/ExplosionCommand.cs @@ -3,6 +3,7 @@ using Content.Server.Explosion.EntitySystems; using Content.Shared.Administration; using Content.Shared.Explosion; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; using Robust.Shared.Prototypes; @@ -20,7 +21,7 @@ public sealed class OpenExplosionEui : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteError("This does not work from the server console."); diff --git a/Content.Server/Administration/Commands/FaxUiCommand.cs b/Content.Server/Administration/Commands/FaxUiCommand.cs index cf9e97e3997e62..b06d36d08b79d0 100644 --- a/Content.Server/Administration/Commands/FaxUiCommand.cs +++ b/Content.Server/Administration/Commands/FaxUiCommand.cs @@ -1,6 +1,7 @@ using Content.Server.EUI; using Content.Server.Fax.AdminUI; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands; @@ -15,7 +16,7 @@ public sealed class FaxUiCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("shell-only-players-can-run-this-command"); diff --git a/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs b/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs index 47ff3e1a1c8937..9f28dc907c7959 100644 --- a/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs +++ b/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs @@ -1,6 +1,7 @@ using Content.Server.Administration.Logs; using Content.Server.EUI; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands; @@ -14,7 +15,7 @@ public sealed class OpenAdminLogsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteLine("This does not work from the server console."); return; diff --git a/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs b/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs index e6ae4f7616754d..147c0d6a82e27f 100644 --- a/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs +++ b/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs @@ -1,5 +1,7 @@ using Content.Server.Administration.Notes; +using Content.Server.Database; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands; @@ -15,7 +17,7 @@ public sealed class OpenAdminNotesCommand : IConsoleCommand public async void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError("This does not work from the server console."); return; diff --git a/Content.Server/Administration/Commands/OpenPermissionsCommand.cs b/Content.Server/Administration/Commands/OpenPermissionsCommand.cs index fd3227d4aafa7f..78d56cb4fbc34c 100644 --- a/Content.Server/Administration/Commands/OpenPermissionsCommand.cs +++ b/Content.Server/Administration/Commands/OpenPermissionsCommand.cs @@ -1,8 +1,10 @@ using Content.Server.Administration.UI; using Content.Server.EUI; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; + namespace Content.Server.Administration.Commands { [AdminCommand(AdminFlags.Permissions)] @@ -14,7 +16,7 @@ public sealed class OpenPermissionsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("This does not work from the server console."); diff --git a/Content.Server/Administration/Commands/OpenUserVisibleNotesCommand.cs b/Content.Server/Administration/Commands/OpenUserVisibleNotesCommand.cs index 507c7ab2799f59..d61114fcae8f3e 100644 --- a/Content.Server/Administration/Commands/OpenUserVisibleNotesCommand.cs +++ b/Content.Server/Administration/Commands/OpenUserVisibleNotesCommand.cs @@ -1,6 +1,7 @@ using Content.Server.Administration.Notes; using Content.Shared.Administration; using Content.Shared.CCVar; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; @@ -26,7 +27,7 @@ public async void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError("This does not work from the server console."); return; diff --git a/Content.Server/Administration/Commands/PardonCommand.cs b/Content.Server/Administration/Commands/PardonCommand.cs index 9cbaaece310fc4..869024eb7c0c74 100644 --- a/Content.Server/Administration/Commands/PardonCommand.cs +++ b/Content.Server/Administration/Commands/PardonCommand.cs @@ -1,6 +1,7 @@ using System.Text; using Content.Server.Database; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -14,7 +15,7 @@ public sealed class PardonCommand : IConsoleCommand public async void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; var dbMan = IoCManager.Resolve(); if (args.Length != 1) diff --git a/Content.Server/Administration/Commands/PlayGlobalSoundCommand.cs b/Content.Server/Administration/Commands/PlayGlobalSoundCommand.cs index fdf067181dba78..ec5b21dcee8e84 100644 --- a/Content.Server/Administration/Commands/PlayGlobalSoundCommand.cs +++ b/Content.Server/Administration/Commands/PlayGlobalSoundCommand.cs @@ -6,6 +6,7 @@ using Robust.Shared.Console; using Robust.Shared.ContentPack; using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; namespace Content.Server.Administration.Commands; diff --git a/Content.Server/Administration/Commands/ReAdminCommand.cs b/Content.Server/Administration/Commands/ReAdminCommand.cs index a3f5993766370f..12ff13221a065f 100644 --- a/Content.Server/Administration/Commands/ReAdminCommand.cs +++ b/Content.Server/Administration/Commands/ReAdminCommand.cs @@ -1,7 +1,9 @@ using Content.Server.Administration.Managers; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; + namespace Content.Server.Administration.Commands { [AnyCommand] @@ -13,7 +15,7 @@ public sealed class ReAdminCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("You cannot use this command from the server console."); diff --git a/Content.Server/Administration/Commands/SetAdminOOC.cs b/Content.Server/Administration/Commands/SetAdminOOC.cs index 27528e1940f9e2..bb11b938d85e2c 100644 --- a/Content.Server/Administration/Commands/SetAdminOOC.cs +++ b/Content.Server/Administration/Commands/SetAdminOOC.cs @@ -1,6 +1,8 @@ + using Content.Server.Database; using Content.Server.Preferences.Managers; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -14,7 +16,7 @@ internal sealed class SetAdminOOC : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player == null) + if (!(shell.Player is IPlayerSession)) { shell.WriteError(Loc.GetString("shell-only-players-can-run-this-command")); return; diff --git a/Content.Server/Administration/Commands/SetMindCommand.cs b/Content.Server/Administration/Commands/SetMindCommand.cs index 5310c2dd7f5c73..b9ff329ed2e6a6 100644 --- a/Content.Server/Administration/Commands/SetMindCommand.cs +++ b/Content.Server/Administration/Commands/SetMindCommand.cs @@ -2,7 +2,6 @@ using Content.Shared.Administration; using Content.Shared.Mind; using Content.Shared.Mind.Components; -using Content.Shared.Players; using Robust.Server.Player; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/SetOutfitCommand.cs b/Content.Server/Administration/Commands/SetOutfitCommand.cs index b2e7f4e6cc0443..28172ee6c5c858 100644 --- a/Content.Server/Administration/Commands/SetOutfitCommand.cs +++ b/Content.Server/Administration/Commands/SetOutfitCommand.cs @@ -10,6 +10,7 @@ using Content.Shared.Preferences; using Content.Shared.Roles; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -56,7 +57,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) if (args.Length == 1) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError(Loc.GetString("set-outfit-command-is-not-player-error")); return; diff --git a/Content.Server/Administration/Commands/WarpCommand.cs b/Content.Server/Administration/Commands/WarpCommand.cs index 0d6da0d993735f..30a6d127aa36bc 100644 --- a/Content.Server/Administration/Commands/WarpCommand.cs +++ b/Content.Server/Administration/Commands/WarpCommand.cs @@ -4,9 +4,11 @@ using Content.Shared.Administration; using Content.Shared.Follower; using Content.Shared.Ghost; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; @@ -26,7 +28,7 @@ public sealed class WarpCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("Only players can use this command"); diff --git a/Content.Server/Administration/ContentNetworkResourceManager.cs b/Content.Server/Administration/ContentNetworkResourceManager.cs index dd95a2d897134b..0d3f3291e6b742 100644 --- a/Content.Server/Administration/ContentNetworkResourceManager.cs +++ b/Content.Server/Administration/ContentNetworkResourceManager.cs @@ -1,8 +1,8 @@ using Content.Server.Database; using Content.Shared.CCVar; +using Robust.Server.Player; using Robust.Server.Upload; using Robust.Shared.Configuration; -using Robust.Shared.Player; using Robust.Shared.Upload; namespace Content.Server.Administration; @@ -22,7 +22,7 @@ public void Initialize() _netRes.OnResourceUploaded += OnUploadResource; } - private async void OnUploadResource(ICommonSession session, NetworkResourceUploadMessage msg) + private async void OnUploadResource(IPlayerSession session, NetworkResourceUploadMessage msg) { if (StoreUploaded) await _serverDb.AddUploadedResourceLogAsync(session.UserId, DateTime.Now, msg.RelativePath.ToString(), msg.Data); diff --git a/Content.Server/Administration/Logs/AdminLogManager.Json.cs b/Content.Server/Administration/Logs/AdminLogManager.Json.cs index 0a67d61cefe7fb..63f30c7a66d20d 100644 --- a/Content.Server/Administration/Logs/AdminLogManager.Json.cs +++ b/Content.Server/Administration/Logs/AdminLogManager.Json.cs @@ -3,8 +3,8 @@ using System.Text.Json.Serialization; using Content.Server.Administration.Logs.Converters; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Map; -using Robust.Shared.Player; namespace Content.Server.Administration.Logs; @@ -44,7 +44,7 @@ private void InitializeJson() var value = properties[key]; value = value switch { - ICommonSession player => new SerializablePlayer(player), + IPlayerSession player => new SerializablePlayer(player), EntityCoordinates entityCoordinates => new SerializableEntityCoordinates(_entityManager, entityCoordinates), _ => value }; @@ -56,7 +56,7 @@ private void InitializeJson() { EntityUid id => id, EntityStringRepresentation rep => rep.Uid, - ICommonSession {AttachedEntity: {Valid: true}} session => session.AttachedEntity, + IPlayerSession {AttachedEntity: {Valid: true}} session => session.AttachedEntity, IComponent component => component.Owner, _ => null }; diff --git a/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs b/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs index c1567448ccb842..0605c2db2a3146 100644 --- a/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs +++ b/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs @@ -1,5 +1,5 @@ using System.Text.Json; -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Administration.Logs.Converters; @@ -36,9 +36,9 @@ public override void Write(Utf8JsonWriter writer, SerializablePlayer value, Json public readonly struct SerializablePlayer { - public readonly ICommonSession Player; + public readonly IPlayerSession Player; - public SerializablePlayer(ICommonSession player) + public SerializablePlayer(IPlayerSession player) { Player = player; } diff --git a/Content.Server/Administration/Managers/AdminManager.cs b/Content.Server/Administration/Managers/AdminManager.cs index 0895183215ed49..4aa6074b1095b9 100644 --- a/Content.Server/Administration/Managers/AdminManager.cs +++ b/Content.Server/Administration/Managers/AdminManager.cs @@ -7,15 +7,15 @@ using Content.Server.Players; using Content.Shared.Administration; using Content.Shared.CCVar; -using Content.Shared.Players; using Robust.Server.Console; using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.ContentPack; using Robust.Shared.Enums; +using Robust.Shared.Map; using Robust.Shared.Network; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; using Robust.Shared.Utility; @@ -35,16 +35,16 @@ public sealed class AdminManager : IAdminManager, IPostInjectInit, IConGroupCont [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly ToolshedManager _toolshed = default!; - private readonly Dictionary _admins = new(); + private readonly Dictionary _admins = new(); private readonly HashSet _promotedPlayers = new(); public event Action? OnPermsChanged; - public IEnumerable ActiveAdmins => _admins + public IEnumerable ActiveAdmins => _admins .Where(p => p.Value.Data.Active) .Select(p => p.Key); - public IEnumerable AllAdmins => _admins.Select(p => p.Key); + public IEnumerable AllAdmins => _admins.Select(p => p.Key); private readonly AdminCommandPermissions _commandPermissions = new(); private readonly AdminCommandPermissions _toolshedCommandPermissions = new(); @@ -56,7 +56,7 @@ public bool IsAdmin(ICommonSession session, bool includeDeAdmin = false) public AdminData? GetAdminData(ICommonSession session, bool includeDeAdmin = false) { - if (_admins.TryGetValue(session, out var reg) && (reg.Data.Active || includeDeAdmin)) + if (_admins.TryGetValue((IPlayerSession)session, out var reg) && (reg.Data.Active || includeDeAdmin)) { return reg.Data; } @@ -66,13 +66,13 @@ public bool IsAdmin(ICommonSession session, bool includeDeAdmin = false) public AdminData? GetAdminData(EntityUid uid, bool includeDeAdmin = false) { - if (_playerManager.TryGetSessionByEntity(uid, out var session)) - return GetAdminData(session, includeDeAdmin); + if (_playerManager.TryGetSessionByEntity(uid, out var session) && session is IPlayerSession playerSession) + return GetAdminData(playerSession, includeDeAdmin); return null; } - public void DeAdmin(ICommonSession session) + public void DeAdmin(IPlayerSession session) { if (!_admins.TryGetValue(session, out var reg)) { @@ -95,7 +95,7 @@ public void DeAdmin(ICommonSession session) UpdateAdminStatus(session); } - public void ReAdmin(ICommonSession session) + public void ReAdmin(IPlayerSession session) { if (!_admins.TryGetValue(session, out var reg)) { @@ -119,7 +119,7 @@ public void ReAdmin(ICommonSession session) UpdateAdminStatus(session); } - public async void ReloadAdmin(ICommonSession player) + public async void ReloadAdmin(IPlayerSession player) { var data = await LoadAdminData(player); var curAdmin = _admins.GetValueOrDefault(player); @@ -236,7 +236,7 @@ public void Initialize() _toolshed.ActivePermissionController = this; } - public void PromoteHost(ICommonSession player) + public void PromoteHost(IPlayerSession player) { _promotedPlayers.Add(player.UserId); @@ -250,7 +250,7 @@ void IPostInjectInit.PostInject() } // NOTE: Also sends commands list for non admins.. - private void UpdateAdminStatus(ICommonSession session) + private void UpdateAdminStatus(IPlayerSession session) { var msg = new MsgUpdateAdminStatus(); @@ -290,7 +290,7 @@ private void PlayerStatusChanged(object? sender, SessionStatusEventArgs e) } } - private async void LoginAdminMaybe(ICommonSession session) + private async void LoginAdminMaybe(IPlayerSession session) { var adminDat = await LoadAdminData(session); if (adminDat == null) @@ -323,7 +323,7 @@ private async void LoginAdminMaybe(ICommonSession session) UpdateAdminStatus(session); } - private async Task<(AdminData dat, int? rankId, bool specialLogin)?> LoadAdminData(ICommonSession session) + private async Task<(AdminData dat, int? rankId, bool specialLogin)?> LoadAdminData(IPlayerSession session) { var promoteHost = IsLocal(session) && _cfg.GetCVar(CCVars.ConsoleLoginLocal) || _promotedPlayers.Contains(session.UserId) @@ -387,7 +387,7 @@ private async void LoginAdminMaybe(ICommonSession session) } } - private static bool IsLocal(ICommonSession player) + private static bool IsLocal(IPlayerSession player) { var ep = player.ConnectedClient.RemoteEndPoint; var addr = ep.Address; @@ -419,7 +419,7 @@ public bool TryGetCommandFlags(CommandSpec command, out AdminFlags[]? flags) return false; } - public bool CanCommand(ICommonSession session, string cmdName) + public bool CanCommand(IPlayerSession session, string cmdName) { if (_commandPermissions.AnyCommands.Contains(cmdName)) { @@ -474,7 +474,7 @@ public bool CheckInvokable(CommandSpec command, ICommonSession? user, out IConEr return true; } - var data = GetAdminData(user); + var data = GetAdminData((IPlayerSession)user); if (data == null) { // Player isn't an admin. @@ -520,32 +520,32 @@ private static (bool isAvail, AdminFlags[] flagsReq) GetRequiredFlag(object cmd) return (attribs.Length != 0, attribs); } - public bool CanViewVar(ICommonSession session) + public bool CanViewVar(IPlayerSession session) { return CanCommand(session, "vv"); } - public bool CanAdminPlace(ICommonSession session) + public bool CanAdminPlace(IPlayerSession session) { return GetAdminData(session)?.CanAdminPlace() ?? false; } - public bool CanScript(ICommonSession session) + public bool CanScript(IPlayerSession session) { return GetAdminData(session)?.CanScript() ?? false; } - public bool CanAdminMenu(ICommonSession session) + public bool CanAdminMenu(IPlayerSession session) { return GetAdminData(session)?.CanAdminMenu() ?? false; } - public bool CanAdminReloadPrototypes(ICommonSession session) + public bool CanAdminReloadPrototypes(IPlayerSession session) { return GetAdminData(session)?.CanAdminReloadPrototypes() ?? false; } - private void SendPermsChangedEvent(ICommonSession session) + private void SendPermsChangedEvent(IPlayerSession session) { var flags = GetAdminData(session)?.Flags; OnPermsChanged?.Invoke(new AdminPermsChangedEventArgs(session, flags)); @@ -553,7 +553,7 @@ private void SendPermsChangedEvent(ICommonSession session) private sealed class AdminReg { - public readonly ICommonSession Session; + public readonly IPlayerSession Session; public AdminData Data; public int? RankId; @@ -561,7 +561,7 @@ private sealed class AdminReg // Such as console.loginlocal or promotehost public bool IsSpecialLogin; - public AdminReg(ICommonSession session, AdminData data) + public AdminReg(IPlayerSession session, AdminData data) { Data = data; Session = session; diff --git a/Content.Server/Administration/Managers/BanManager.cs b/Content.Server/Administration/Managers/BanManager.cs index 4d51d35576ac9f..765df17b179fab 100644 --- a/Content.Server/Administration/Managers/BanManager.cs +++ b/Content.Server/Administration/Managers/BanManager.cs @@ -15,7 +15,6 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -284,7 +283,7 @@ public void SendRoleBans(NetUserId userId) SendRoleBans(player); } - public void SendRoleBans(ICommonSession pSession) + public void SendRoleBans(IPlayerSession pSession) { var roleBans = _cachedRoleBans.GetValueOrDefault(pSession.UserId) ?? new HashSet(); var bans = new MsgRoleBans() diff --git a/Content.Server/Administration/Managers/IAdminManager.cs b/Content.Server/Administration/Managers/IAdminManager.cs index a52ec7b099cd1f..eeed5cc36e066f 100644 --- a/Content.Server/Administration/Managers/IAdminManager.cs +++ b/Content.Server/Administration/Managers/IAdminManager.cs @@ -1,8 +1,9 @@ using Content.Shared.Administration; using Content.Shared.Administration.Managers; -using Robust.Shared.Player; +using Robust.Server.Player; using Robust.Shared.Toolshed; + namespace Content.Server.Administration.Managers { /// @@ -21,12 +22,12 @@ public interface IAdminManager : ISharedAdminManager /// /// This does not include admins that are de-adminned. /// - IEnumerable ActiveAdmins { get; } + IEnumerable ActiveAdmins { get; } /// /// Gets all admins currently on the server, even de-adminned ones. /// - IEnumerable AllAdmins { get; } + IEnumerable AllAdmins { get; } /// /// De-admins an admin temporarily so they are effectively a normal player. @@ -34,18 +35,18 @@ public interface IAdminManager : ISharedAdminManager /// /// De-adminned admins are able to re-admin at any time if they so desire. /// - void DeAdmin(ICommonSession session); + void DeAdmin(IPlayerSession session); /// /// Re-admins a de-adminned admin. /// - void ReAdmin(ICommonSession session); + void ReAdmin(IPlayerSession session); /// /// Re-loads the permissions of an player in case their admin data changed DB-side. /// /// - void ReloadAdmin(ICommonSession player); + void ReloadAdmin(IPlayerSession player); /// /// Reloads admin permissions for all admins with a certain rank. @@ -56,7 +57,7 @@ public interface IAdminManager : ISharedAdminManager void Initialize(); - void PromoteHost(ICommonSession player); + void PromoteHost(IPlayerSession player); bool TryGetCommandFlags(CommandSpec command, out AdminFlags[]? flags); } diff --git a/Content.Server/Administration/Managers/IBanManager.cs b/Content.Server/Administration/Managers/IBanManager.cs index dafe3d35bdd49d..8458feac8d0614 100644 --- a/Content.Server/Administration/Managers/IBanManager.cs +++ b/Content.Server/Administration/Managers/IBanManager.cs @@ -2,8 +2,8 @@ using System.Net; using System.Threading.Tasks; using Content.Shared.Database; +using Robust.Server.Player; using Robust.Shared.Network; -using Robust.Shared.Player; namespace Content.Server.Administration.Managers; @@ -55,5 +55,5 @@ public interface IBanManager /// Sends role bans to the target /// /// Player's session - public void SendRoleBans(ICommonSession pSession); + public void SendRoleBans(IPlayerSession pSession); } diff --git a/Content.Server/Administration/Notes/AdminNotesManager.cs b/Content.Server/Administration/Notes/AdminNotesManager.cs index 0c1e7f3daade17..8a7846663f350e 100644 --- a/Content.Server/Administration/Notes/AdminNotesManager.cs +++ b/Content.Server/Administration/Notes/AdminNotesManager.cs @@ -11,7 +11,7 @@ using Content.Shared.Players.PlayTimeTracking; using Robust.Shared.Configuration; using Robust.Shared.Network; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.Administration.Notes; diff --git a/Content.Server/Administration/Notes/AdminNotesSystem.cs b/Content.Server/Administration/Notes/AdminNotesSystem.cs index f2eb033dcaa7a3..fd9f3f6bfae597 100644 --- a/Content.Server/Administration/Notes/AdminNotesSystem.cs +++ b/Content.Server/Administration/Notes/AdminNotesSystem.cs @@ -1,13 +1,13 @@ using Content.Server.Administration.Commands; using Content.Server.Chat.Managers; using Content.Server.EUI; +using Content.Shared.Chat; using Content.Shared.Database; using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; -using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.Administration.Notes; diff --git a/Content.Server/Administration/Notes/IAdminNotesManager.cs b/Content.Server/Administration/Notes/IAdminNotesManager.cs index a726bd11c82b76..ae7133c56d96d5 100644 --- a/Content.Server/Administration/Notes/IAdminNotesManager.cs +++ b/Content.Server/Administration/Notes/IAdminNotesManager.cs @@ -2,7 +2,7 @@ using Content.Server.Database; using Content.Shared.Administration.Notes; using Content.Shared.Database; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.Administration.Notes; diff --git a/Content.Server/Administration/QuickDialogSystem.OpenDialog.cs b/Content.Server/Administration/QuickDialogSystem.OpenDialog.cs index fb013a88ad974e..521bee776f03a7 100644 --- a/Content.Server/Administration/QuickDialogSystem.OpenDialog.cs +++ b/Content.Server/Administration/QuickDialogSystem.OpenDialog.cs @@ -1,6 +1,6 @@ using Content.Shared.Administration; using JetBrains.Annotations; -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Administration; @@ -16,7 +16,7 @@ public sealed partial class QuickDialogSystem /// The action to execute upon the dialog being cancelled. /// Type of the input. [PublicAPI] - public void OpenDialog(ICommonSession session, string title, string prompt, Action okAction, + public void OpenDialog(IPlayerSession session, string title, string prompt, Action okAction, Action? cancelAction = null) { OpenDialogInternal( @@ -53,7 +53,7 @@ public void OpenDialog(ICommonSession session, string title, string prompt, /// Type of the first input. /// Type of the second input. [PublicAPI] - public void OpenDialog(ICommonSession session, string title, string prompt1, string prompt2, + public void OpenDialog(IPlayerSession session, string title, string prompt1, string prompt2, Action okAction, Action? cancelAction = null) { OpenDialogInternal( @@ -96,7 +96,7 @@ public void OpenDialog(ICommonSession session, string title, string prom /// Type of the second input. /// Type of the third input. [PublicAPI] - public void OpenDialog(ICommonSession session, string title, string prompt1, string prompt2, + public void OpenDialog(IPlayerSession session, string title, string prompt1, string prompt2, string prompt3, Action okAction, Action? cancelAction = null) { OpenDialogInternal( @@ -142,7 +142,7 @@ public void OpenDialog(ICommonSession session, string title, string /// Type of the third input. /// Type of the fourth input. [PublicAPI] - public void OpenDialog(ICommonSession session, string title, string prompt1, string prompt2, + public void OpenDialog(IPlayerSession session, string title, string prompt1, string prompt2, string prompt3, string prompt4, Action okAction, Action? cancelAction = null) { OpenDialogInternal( diff --git a/Content.Server/Administration/QuickDialogSystem.cs b/Content.Server/Administration/QuickDialogSystem.cs index 96423e52238ca4..51b8cf79c2a1e4 100644 --- a/Content.Server/Administration/QuickDialogSystem.cs +++ b/Content.Server/Administration/QuickDialogSystem.cs @@ -1,9 +1,12 @@ -using System.Diagnostics.CodeAnalysis; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Administration; +using Microsoft.CodeAnalysis.CSharp.Syntax; using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Network; using Robust.Shared.Player; +using Robust.Shared.Serialization.TypeSerializers.Interfaces; namespace Content.Server.Administration; @@ -84,7 +87,7 @@ private void PlayerManagerOnPlayerStatusChanged(object? sender, SessionStatusEve _openDialogsByUser.Remove(user); } - private void OpenDialogInternal(ICommonSession session, string title, List entries, QuickDialogButtonFlag buttons, Action okAction, Action cancelAction) + private void OpenDialogInternal(IPlayerSession session, string title, List entries, QuickDialogButtonFlag buttons, Action okAction, Action cancelAction) { var did = GetDialogId(); RaiseNetworkEvent( diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index feabaa2aad6e5d..66f7a8999b33ca 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -109,7 +109,7 @@ private void OnRoundRestartCleanup(RoundRestartCleanupEvent ev) } } - public void UpdatePlayerList(ICommonSession player) + public void UpdatePlayerList(IPlayerSession player) { _playerList[player.UserId] = GetPlayerInfo(player.Data, player); @@ -203,7 +203,7 @@ private void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs e) UpdatePanicBunker(); } - private void SendFullPlayerList(ICommonSession playerSession) + private void SendFullPlayerList(IPlayerSession playerSession) { var ev = new FullPlayerListEvent(); @@ -212,7 +212,7 @@ private void SendFullPlayerList(ICommonSession playerSession) RaiseNetworkEvent(ev, playerSession.ConnectedClient); } - private PlayerInfo GetPlayerInfo(SessionData data, ICommonSession? session) + private PlayerInfo GetPlayerInfo(IPlayerData data, IPlayerSession? session) { var name = data.UserName; var entityName = string.Empty; @@ -326,7 +326,7 @@ private void SendPanicBunkerStatusAll() /// chat messages and showing a popup to other players. /// Their items are dropped on the ground. /// - public void Erase(ICommonSession player) + public void Erase(IPlayerSession player) { var entity = player.AttachedEntity; _chat.DeleteMessagesBy(player); diff --git a/Content.Server/Administration/Systems/AdminTestArenaSystem.cs b/Content.Server/Administration/Systems/AdminTestArenaSystem.cs index e3671bcdfb348f..e65acf571cbeb0 100644 --- a/Content.Server/Administration/Systems/AdminTestArenaSystem.cs +++ b/Content.Server/Administration/Systems/AdminTestArenaSystem.cs @@ -1,8 +1,8 @@ using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Network; -using Robust.Shared.Player; namespace Content.Server.Administration.Systems; @@ -20,7 +20,7 @@ public sealed class AdminTestArenaSystem : EntitySystem public Dictionary ArenaMap { get; private set; } = new(); public Dictionary ArenaGrid { get; private set; } = new(); - public (EntityUid Map, EntityUid? Grid) AssertArenaLoaded(ICommonSession admin) + public (EntityUid Map, EntityUid? Grid) AssertArenaLoaded(IPlayerSession admin) { if (ArenaMap.TryGetValue(admin.UserId, out var arenaMap) && !Deleted(arenaMap) && !Terminating(arenaMap)) { diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index bc065745f5ea0a..c7e23374a3c8fb 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -6,7 +6,6 @@ using Content.Server.Disposal.Tube.Components; using Content.Server.EUI; using Content.Server.Ghost.Roles; -using Content.Server.Mind; using Content.Server.Mind.Commands; using Content.Server.Prayer; using Content.Server.Xenoarchaeology.XenoArtifacts; @@ -19,15 +18,17 @@ using Content.Shared.Examine; using Content.Shared.GameTicking; using Content.Shared.Inventory; +using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Popups; using Content.Shared.Verbs; using Robust.Server.Console; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; using Robust.Shared.Map.Components; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Robust.Shared.Toolshed; @@ -55,7 +56,7 @@ public sealed partial class AdminVerbSystem : EntitySystem [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; [Dependency] private readonly PrayerSystem _prayerSystem = default!; [Dependency] private readonly EuiManager _eui = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; + [Dependency] private readonly SharedMindSystem _mindSystem = default!; [Dependency] private readonly ToolshedManager _toolshed = default!; [Dependency] private readonly RejuvenateSystem _rejuvenate = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; @@ -276,7 +277,12 @@ private void AddDebugVerbs(GetVerbsEvent args) // TODO VERB ICON control mob icon Act = () => { - _mindSystem.ControlMob(args.User, args.Target); + MakeSentientCommand.MakeSentient(args.Target, EntityManager); + + if (!_minds.TryGetMind(player, out var mindId, out var mind)) + return; + + _mindSystem.TransferTo(mindId, args.Target, ghostCheckOverride: true, mind: mind); }, Impact = LogImpact.High, ConfirmationPopup = true @@ -352,7 +358,7 @@ private void AddDebugVerbs(GetVerbsEvent args) var message = ExamineSystemShared.InRangeUnOccluded(args.User, args.Target) ? Loc.GetString("in-range-unoccluded-verb-on-activate-not-occluded") : Loc.GetString("in-range-unoccluded-verb-on-activate-occluded"); - + _popup.PopupEntity(message, args.Target, args.User); } }; @@ -426,7 +432,7 @@ private void OnSolutionChanged(EntityUid uid, SolutionContainerManagerComponent } } - public void OpenEditSolutionsEui(ICommonSession session, EntityUid uid) + public void OpenEditSolutionsEui(IPlayerSession session, EntityUid uid) { if (session.AttachedEntity == null) return; diff --git a/Content.Server/Administration/Systems/BwoinkSystem.cs b/Content.Server/Administration/Systems/BwoinkSystem.cs index 31ef285a882165..98e5af1126b40b 100644 --- a/Content.Server/Administration/Systems/BwoinkSystem.cs +++ b/Content.Server/Administration/Systems/BwoinkSystem.cs @@ -17,7 +17,6 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -120,7 +119,7 @@ private void OnClientTypingUpdated(BwoinkClientTypingUpdated msg, EntitySessionE _typingUpdateTimestamps[args.SenderSession.UserId] = (_timing.RealTime, msg.Typing); // Non-admins can only ever type on their own ahelp, guard against fake messages - var isAdmin = _adminManager.GetAdminData(args.SenderSession)?.HasFlag(AdminFlags.Adminhelp) ?? false; + var isAdmin = _adminManager.GetAdminData((IPlayerSession) args.SenderSession)?.HasFlag(AdminFlags.Adminhelp) ?? false; var channel = isAdmin ? msg.Channel : args.SenderSession.UserId; var update = new BwoinkPlayerTypingUpdated(channel, args.SenderSession.Name, msg.Typing); @@ -377,7 +376,7 @@ public override void Update(float frameTime) protected override void OnBwoinkTextMessage(BwoinkTextMessage message, EntitySessionEventArgs eventArgs) { base.OnBwoinkTextMessage(message, eventArgs); - var senderSession = eventArgs.SenderSession; + var senderSession = (IPlayerSession) eventArgs.SenderSession; // TODO: Sanitize text? // Confirm that this person is actually allowed to send a message here. diff --git a/Content.Server/Administration/Toolshed/AdminsCommand.cs b/Content.Server/Administration/Toolshed/AdminsCommand.cs index 1d64f748fd261c..aa82e0f1d93297 100644 --- a/Content.Server/Administration/Toolshed/AdminsCommand.cs +++ b/Content.Server/Administration/Toolshed/AdminsCommand.cs @@ -1,6 +1,6 @@ using Content.Server.Administration.Managers; using Content.Shared.Administration; -using Robust.Shared.Player; +using Robust.Server.Player; using Robust.Shared.Toolshed; namespace Content.Server.Administration.Toolshed; @@ -11,13 +11,13 @@ public sealed class AdminsCommand : ToolshedCommand [Dependency] private readonly IAdminManager _admin = default!; [CommandImplementation("active")] - public IEnumerable Active() + public IEnumerable Active() { return _admin.ActiveAdmins; } [CommandImplementation("all")] - public IEnumerable All() + public IEnumerable All() { return _admin.AllAdmins; } diff --git a/Content.Server/Afk/AFKSystem.cs b/Content.Server/Afk/AFKSystem.cs index f634a415dc51a5..0938f45f73eb69 100644 --- a/Content.Server/Afk/AFKSystem.cs +++ b/Content.Server/Afk/AFKSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Server.Afk.Events; using Content.Server.GameTicking; using Content.Shared.CCVar; @@ -23,7 +24,7 @@ public sealed class AFKSystem : EntitySystem private float _checkDelay; private TimeSpan _checkTime; - private readonly HashSet _afkPlayers = new(); + private readonly HashSet _afkPlayers = new(); public override void Initialize() { @@ -72,9 +73,11 @@ public override void Update(float frameTime) _checkTime = _timing.CurTime + TimeSpan.FromSeconds(_checkDelay); - foreach (var pSession in Filter.GetAllPlayers()) + foreach (var session in Filter.GetAllPlayers()) { - if (pSession.Status != SessionStatus.InGame) continue; + if (session.Status != SessionStatus.InGame) continue; + + var pSession = (IPlayerSession) session; var isAfk = _afkManager.IsAfk(pSession); if (isAfk && _afkPlayers.Add(pSession)) diff --git a/Content.Server/Afk/AfkManager.cs b/Content.Server/Afk/AfkManager.cs index 52dc7715df384e..24cd1e28cecd11 100644 --- a/Content.Server/Afk/AfkManager.cs +++ b/Content.Server/Afk/AfkManager.cs @@ -5,7 +5,6 @@ using Robust.Shared.Console; using Robust.Shared.Enums; using Robust.Shared.Input; -using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Afk @@ -21,13 +20,13 @@ public interface IAfkManager /// /// The player to check. /// True if the player is AFK, false otherwise. - bool IsAfk(ICommonSession player); + bool IsAfk(IPlayerSession player); /// /// Resets AFK status for the player as if they just did an action and are definitely not AFK. /// /// The player to set AFK status for. - void PlayerDidAction(ICommonSession player); + void PlayerDidAction(IPlayerSession player); void Initialize(); } @@ -41,7 +40,7 @@ public sealed class AfkManager : IAfkManager, IEntityEventSubscriber [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IConsoleHost _consoleHost = default!; - private readonly Dictionary _lastActionTimes = new(); + private readonly Dictionary _lastActionTimes = new(); public void Initialize() { @@ -56,7 +55,7 @@ public void Initialize() HandleInputCmd); } - public void PlayerDidAction(ICommonSession player) + public void PlayerDidAction(IPlayerSession player) { if (player.Status == SessionStatus.Disconnected) // Make sure we don't re-add to the dictionary if the player is disconnected now. @@ -65,7 +64,7 @@ public void PlayerDidAction(ICommonSession player) _lastActionTimes[player] = _gameTiming.RealTime; } - public bool IsAfk(ICommonSession player) + public bool IsAfk(IPlayerSession player) { if (!_lastActionTimes.TryGetValue(player, out var time)) // Some weird edge case like disconnected clients. Just say true I guess. @@ -88,13 +87,13 @@ private void PlayerStatusChanged(object? sender, SessionStatusEventArgs e) private void ConsoleHostOnAnyCommandExecuted(IConsoleShell shell, string commandname, string argstr, string[] args) { - if (shell.Player is { } player) + if (shell.Player is IPlayerSession player) PlayerDidAction(player); } private void HandleInputCmd(FullInputCmdMessage msg, EntitySessionEventArgs args) { - PlayerDidAction(args.SenderSession); + PlayerDidAction((IPlayerSession) args.SenderSession); } } } diff --git a/Content.Server/Afk/Events/AFKEvent.cs b/Content.Server/Afk/Events/AFKEvent.cs index ee9d548043fbd7..6adb950e47561a 100644 --- a/Content.Server/Afk/Events/AFKEvent.cs +++ b/Content.Server/Afk/Events/AFKEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Afk.Events; @@ -8,9 +8,9 @@ namespace Content.Server.Afk.Events; [ByRefEvent] public readonly struct AFKEvent { - public readonly ICommonSession Session; + public readonly IPlayerSession Session; - public AFKEvent(ICommonSession playerSession) + public AFKEvent(IPlayerSession playerSession) { Session = playerSession; } diff --git a/Content.Server/Afk/Events/UnAFKEvent.cs b/Content.Server/Afk/Events/UnAFKEvent.cs index 0983c256f0580e..3dd034583c533d 100644 --- a/Content.Server/Afk/Events/UnAFKEvent.cs +++ b/Content.Server/Afk/Events/UnAFKEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Afk.Events; @@ -8,9 +8,9 @@ namespace Content.Server.Afk.Events; [ByRefEvent] public readonly struct UnAFKEvent { - public readonly ICommonSession Session; + public readonly IPlayerSession Session; - public UnAFKEvent(ICommonSession playerSession) + public UnAFKEvent(IPlayerSession playerSession) { Session = playerSession; } diff --git a/Content.Server/Alert/Commands/ClearAlert.cs b/Content.Server/Alert/Commands/ClearAlert.cs index 1759612702f789..e43f06413c3088 100644 --- a/Content.Server/Alert/Commands/ClearAlert.cs +++ b/Content.Server/Alert/Commands/ClearAlert.cs @@ -2,6 +2,7 @@ using Content.Server.Commands; using Content.Shared.Administration; using Content.Shared.Alert; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Alert.Commands @@ -15,7 +16,7 @@ public sealed class ClearAlert : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player?.AttachedEntity == null) { shell.WriteLine("You don't have an entity."); diff --git a/Content.Server/Alert/Commands/ShowAlert.cs b/Content.Server/Alert/Commands/ShowAlert.cs index 11901e9af0021f..edb634b546c087 100644 --- a/Content.Server/Alert/Commands/ShowAlert.cs +++ b/Content.Server/Alert/Commands/ShowAlert.cs @@ -2,6 +2,7 @@ using Content.Server.Commands; using Content.Shared.Administration; using Content.Shared.Alert; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Alert.Commands @@ -15,7 +16,7 @@ public sealed class ShowAlert : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player?.AttachedEntity == null) { shell.WriteLine("You cannot run this from the server or without an attached entity."); diff --git a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs index 2c432a24190d8b..009a8b5f236d7c 100644 --- a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs +++ b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs @@ -3,6 +3,7 @@ using Content.Server.Station.Systems; using Content.Shared.Administration; using JetBrains.Annotations; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.AlertLevel.Commands @@ -18,7 +19,7 @@ public sealed class SetAlertLevelCommand : IConsoleCommand public CompletionResult GetCompletion(IConsoleShell shell, string[] args) { var levelNames = new string[] {}; - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player?.AttachedEntity != null) { var stationUid = EntitySystem.Get().GetOwningStation(player.AttachedEntity.Value); @@ -53,7 +54,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player?.AttachedEntity == null) { shell.WriteLine(Loc.GetString("shell-only-players-can-run-this-command")); diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs index 737b723d390abc..5e323f5ab8eb2d 100644 --- a/Content.Server/Antag/AntagSelectionSystem.cs +++ b/Content.Server/Antag/AntagSelectionSystem.cs @@ -22,7 +22,6 @@ using Content.Server.Shuttles.Systems; using Content.Shared.Mobs; using Robust.Server.Containers; -using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Server.Antag; @@ -89,9 +88,9 @@ public void EligiblePlayers(string antagPrototype, out List chosen, bool includeHeads = false) { - var allPlayers = _playerSystem.Sessions.ToList(); - var playerList = new List(); - var prefList = new List(); + var allPlayers = _playerSystem.ServerSessions.ToList(); + var playerList = new List(); + var prefList = new List(); chosen = new List(); foreach (var player in allPlayers) { @@ -117,7 +116,7 @@ public void EligiblePlayers(string antagPrototype, var antags = Math.Clamp(allPlayers.Count / antagsPerPlayer, 1, maxAntags); for (var antag = 0; antag < antags; antag++) { - ICommonSession? chosenPlayer = null; + IPlayerSession chosenPlayer = null!; if (prefList.Count == 0) { if (playerList.Count == 0) diff --git a/Content.Server/Arcade/BlockGame/BlockGame.Ui.cs b/Content.Server/Arcade/BlockGame/BlockGame.Ui.cs index ef69600783b5c5..92a96ea2266655 100644 --- a/Content.Server/Arcade/BlockGame/BlockGame.Ui.cs +++ b/Content.Server/Arcade/BlockGame/BlockGame.Ui.cs @@ -1,6 +1,6 @@ using Content.Shared.Arcade; +using Robust.Server.Player; using System.Linq; -using Robust.Shared.Player; namespace Content.Server.Arcade.BlockGame; @@ -166,7 +166,7 @@ private void SendMessage(BoundUserInterfaceMessage message) /// /// The message to send to a specific player/spectator. /// The target recipient. - private void SendMessage(BoundUserInterfaceMessage message, ICommonSession session) + private void SendMessage(BoundUserInterfaceMessage message, IPlayerSession session) { if (_uiSystem.TryGetUi(_owner, BlockGameUiKey.Key, out var bui)) _uiSystem.TrySendUiMessage(bui, message, session); @@ -176,7 +176,7 @@ private void SendMessage(BoundUserInterfaceMessage message, ICommonSession sessi /// Handles sending the current state of the game to a player that has just opened the UI. /// /// The target recipient. - public void UpdateNewPlayerUI(ICommonSession session) + public void UpdateNewPlayerUI(IPlayerSession session) { if (_gameOver) { @@ -209,7 +209,7 @@ private void FullUpdate() /// Handles broadcasting the full player-visible game state to a specific player/spectator. /// /// The target recipient. - private void FullUpdate(ICommonSession session) + private void FullUpdate(IPlayerSession session) { UpdateFieldUI(session); SendNextPieceUpdate(session); @@ -235,7 +235,7 @@ public void UpdateFieldUI() /// Handles broadcasting the current location of all of the blocks in the playfield + the active piece to a specific player/spectator. /// /// The target recipient. - public void UpdateFieldUI(ICommonSession session) + public void UpdateFieldUI(IPlayerSession session) { if (!Started) return; @@ -283,7 +283,7 @@ private void SendNextPieceUpdate() /// Broadcasts the state of the next queued piece to a specific viewer. /// /// The target recipient. - private void SendNextPieceUpdate(ICommonSession session) + private void SendNextPieceUpdate(IPlayerSession session) { SendMessage(new BlockGameMessages.BlockGameVisualUpdateMessage(NextPiece.BlocksForPreview(), BlockGameMessages.BlockGameVisualType.NextBlock), session); } @@ -303,7 +303,7 @@ private void SendHoldPieceUpdate() /// Broadcasts the state of the currently held piece to a specific viewer. /// /// The target recipient. - private void SendHoldPieceUpdate(ICommonSession session) + private void SendHoldPieceUpdate(IPlayerSession session) { if (HeldPiece.HasValue) SendMessage(new BlockGameMessages.BlockGameVisualUpdateMessage(HeldPiece.Value.BlocksForPreview(), BlockGameMessages.BlockGameVisualType.HoldBlock), session); @@ -323,7 +323,7 @@ private void SendLevelUpdate() /// Broadcasts the current game level to a specific viewer. /// /// The target recipient. - private void SendLevelUpdate(ICommonSession session) + private void SendLevelUpdate(IPlayerSession session) { SendMessage(new BlockGameMessages.BlockGameLevelUpdateMessage(Level), session); } @@ -340,7 +340,7 @@ private void SendPointsUpdate() /// Broadcasts the current game score to a specific viewer. /// /// The target recipient. - private void SendPointsUpdate(ICommonSession session) + private void SendPointsUpdate(IPlayerSession session) { SendMessage(new BlockGameMessages.BlockGameScoreUpdateMessage(Points), session); } @@ -357,7 +357,7 @@ private void SendHighscoreUpdate() /// Broadcasts the current game high score positions to a specific viewer. /// /// The target recipient. - private void SendHighscoreUpdate(ICommonSession session) + private void SendHighscoreUpdate(IPlayerSession session) { SendMessage(new BlockGameMessages.BlockGameHighScoreUpdateMessage(_arcadeSystem.GetLocalHighscores(), _arcadeSystem.GetGlobalHighscores()), session); } diff --git a/Content.Server/Arcade/BlockGame/BlockGameArcadeComponent.cs b/Content.Server/Arcade/BlockGame/BlockGameArcadeComponent.cs index 5613d9154441a5..268d5be4d2e881 100644 --- a/Content.Server/Arcade/BlockGame/BlockGameArcadeComponent.cs +++ b/Content.Server/Arcade/BlockGame/BlockGameArcadeComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Arcade.BlockGame; @@ -13,10 +13,10 @@ public sealed partial class BlockGameArcadeComponent : Component /// /// The player currently playing the active session of NT-BG. /// - public ICommonSession? Player = null; + public IPlayerSession? Player = null; /// /// The players currently viewing (but not playing) the active session of NT-BG. /// - public readonly List Spectators = new(); + public readonly List Spectators = new(); } diff --git a/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs b/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs index ecc5bfd3e2c786..dac29accc968c7 100644 --- a/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs +++ b/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs @@ -2,7 +2,7 @@ using Content.Server.UserInterface; using Content.Shared.Arcade; using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Arcade.BlockGame; @@ -30,7 +30,7 @@ public override void Update(float frameTime) } } - private void UpdatePlayerStatus(EntityUid uid, ICommonSession session, PlayerBoundUserInterface? bui = null, BlockGameArcadeComponent? blockGame = null) + private void UpdatePlayerStatus(EntityUid uid, IPlayerSession session, PlayerBoundUserInterface? bui = null, BlockGameArcadeComponent? blockGame = null) { if (!Resolve(uid, ref blockGame)) return; @@ -67,7 +67,7 @@ private void OnAfterUIOpen(EntityUid uid, BlockGameArcadeComponent component, Af private void OnAfterUiClose(EntityUid uid, BlockGameArcadeComponent component, BoundUIClosedEvent args) { - if (args.Session is not { } session) + if (args.Session is not IPlayerSession session) return; if (component.Player != session) diff --git a/Content.Server/Atmos/Commands/DeleteGasCommand.cs b/Content.Server/Atmos/Commands/DeleteGasCommand.cs index 9e7594c024b84c..0f0c399b11a4b8 100644 --- a/Content.Server/Atmos/Commands/DeleteGasCommand.cs +++ b/Content.Server/Atmos/Commands/DeleteGasCommand.cs @@ -2,6 +2,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Shared.Administration; using Content.Shared.Atmos; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; @@ -19,7 +20,7 @@ public sealed class DeleteGasCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; EntityUid? gridId; Gas? gas = null; diff --git a/Content.Server/Atmos/Commands/ShowAtmosCommand.cs b/Content.Server/Atmos/Commands/ShowAtmosCommand.cs index 263ef947d0a08f..5ad73ec9063488 100644 --- a/Content.Server/Atmos/Commands/ShowAtmosCommand.cs +++ b/Content.Server/Atmos/Commands/ShowAtmosCommand.cs @@ -1,6 +1,7 @@ using Content.Server.Administration; using Content.Server.Atmos.EntitySystems; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Atmos.Commands @@ -14,7 +15,7 @@ public sealed class ShowAtmos : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("You must be a player to use this command."); diff --git a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs index 90edd4caed52b0..34f558a2521c55 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs @@ -10,7 +10,6 @@ using Robust.Shared.Enums; using Robust.Shared.Map; using Robust.Shared.Map.Components; -using Robust.Shared.Player; namespace Content.Server.Atmos.EntitySystems { @@ -28,7 +27,7 @@ public sealed class AtmosDebugOverlaySystem : SharedAtmosDebugOverlaySystem /// To modify it see and /// . /// - private readonly HashSet _playerObservers = new(); + private readonly HashSet _playerObservers = new(); /// /// Overlay update ticks per second. @@ -49,17 +48,17 @@ public override void Shutdown() _playerManager.PlayerStatusChanged -= OnPlayerStatusChanged; } - public bool AddObserver(ICommonSession observer) + public bool AddObserver(IPlayerSession observer) { return _playerObservers.Add(observer); } - public bool HasObserver(ICommonSession observer) + public bool HasObserver(IPlayerSession observer) { return _playerObservers.Contains(observer); } - public bool RemoveObserver(ICommonSession observer) + public bool RemoveObserver(IPlayerSession observer) { if (!_playerObservers.Remove(observer)) { @@ -77,7 +76,7 @@ public bool RemoveObserver(ICommonSession observer) /// /// The observer to toggle. /// true if added, false if removed. - public bool ToggleObserver(ICommonSession observer) + public bool ToggleObserver(IPlayerSession observer) { if (HasObserver(observer)) { diff --git a/Content.Server/Atmos/EntitySystems/GasTankSystem.cs b/Content.Server/Atmos/EntitySystems/GasTankSystem.cs index 17715435b2fea4..df867d351638ac 100644 --- a/Content.Server/Atmos/EntitySystems/GasTankSystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTankSystem.cs @@ -12,6 +12,7 @@ using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.Physics.Systems; @@ -59,6 +60,12 @@ private void OnGasShutdown(Entity gasTank, ref ComponentShutdo private void OnGasTankToggleInternals(Entity ent, ref GasTankToggleInternalsMessage args) { + if (args.Session is not IPlayerSession playerSession || + playerSession.AttachedEntity == null) + { + return; + } + ToggleInternals(ent); } diff --git a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs index b0e8cf71c79403..c229ef50c9adae 100644 --- a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs @@ -16,7 +16,6 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; -using Robust.Shared.Player; using Robust.Shared.Threading; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -36,7 +35,7 @@ public sealed class GasTileOverlaySystem : SharedGasTileOverlaySystem [Robust.Shared.IoC.Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Robust.Shared.IoC.Dependency] private readonly ChunkingSystem _chunkingSys = default!; - private readonly Dictionary>> _lastSentChunks = new(); + private readonly Dictionary>> _lastSentChunks = new(); // Oh look its more duplicated decal system code! private ObjectPool> _chunkIndexPool = @@ -287,12 +286,12 @@ public override void Update(float frameTime) // Now we'll go through each player, then through each chunk in range of that player checking if the player is still in range // If they are, check if they need the new data to send (i.e. if there's an overlay for the gas). // Afterwards we reset all the chunk data for the next time we tick. - var players = _playerManager.Sessions.Where(x => x.Status == SessionStatus.InGame).ToArray(); + var players = _playerManager.ServerSessions.Where(x => x.Status == SessionStatus.InGame).ToArray(); var opts = new ParallelOptions { MaxDegreeOfParallelism = _parMan.ParallelProcessCount }; Parallel.ForEach(players, opts, p => UpdatePlayer(p, curTick)); } - private void UpdatePlayer(ICommonSession playerSession, GameTick curTick) + private void UpdatePlayer(IPlayerSession playerSession, GameTick curTick) { var chunksInRange = _chunkingSys.GetChunksForSession(playerSession, ChunkSize, _chunkIndexPool, _chunkViewerPool); var previouslySent = _lastSentChunks[playerSession]; diff --git a/Content.Server/Body/Commands/AddHandCommand.cs b/Content.Server/Body/Commands/AddHandCommand.cs index 655d0c88f9ba10..308295c06ccf9d 100644 --- a/Content.Server/Body/Commands/AddHandCommand.cs +++ b/Content.Server/Body/Commands/AddHandCommand.cs @@ -4,6 +4,7 @@ using Content.Shared.Administration; using Content.Shared.Body.Components; using Content.Shared.Body.Part; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -26,7 +27,7 @@ sealed class AddHandCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; EntityUid entity; EntityUid hand; diff --git a/Content.Server/Body/Commands/AttachBodyPartCommand.cs b/Content.Server/Body/Commands/AttachBodyPartCommand.cs index 24604b88b7a959..267b5208086184 100644 --- a/Content.Server/Body/Commands/AttachBodyPartCommand.cs +++ b/Content.Server/Body/Commands/AttachBodyPartCommand.cs @@ -1,8 +1,10 @@ +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.Server.Player; using Robust.Shared.Console; namespace Content.Server.Body.Commands @@ -18,7 +20,7 @@ public sealed class AttachBodyPartCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; EntityUid bodyId; EntityUid? partUid; diff --git a/Content.Server/Body/Commands/DestroyMechanismCommand.cs b/Content.Server/Body/Commands/DestroyMechanismCommand.cs index 3aa28f40720b2f..6ad0631150a3d8 100644 --- a/Content.Server/Body/Commands/DestroyMechanismCommand.cs +++ b/Content.Server/Body/Commands/DestroyMechanismCommand.cs @@ -2,6 +2,7 @@ using Content.Server.Body.Systems; using Content.Shared.Administration; using Content.Shared.Body.Components; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Random; @@ -16,7 +17,7 @@ sealed class DestroyMechanismCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("Only a player can run this command."); diff --git a/Content.Server/Body/Commands/RemoveHandCommand.cs b/Content.Server/Body/Commands/RemoveHandCommand.cs index 4a2956ae7ab16b..729db4bc44686e 100644 --- a/Content.Server/Body/Commands/RemoveHandCommand.cs +++ b/Content.Server/Body/Commands/RemoveHandCommand.cs @@ -4,6 +4,7 @@ using Content.Shared.Administration; using Content.Shared.Body.Components; using Content.Shared.Body.Part; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Random; @@ -21,7 +22,7 @@ public sealed class RemoveHandCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("Only a player can run this command."); diff --git a/Content.Server/Body/Systems/BodySystem.cs b/Content.Server/Body/Systems/BodySystem.cs index 242b02d78c1059..f2f848c488d7d9 100644 --- a/Content.Server/Body/Systems/BodySystem.cs +++ b/Content.Server/Body/Systems/BodySystem.cs @@ -116,7 +116,7 @@ public override HashSet GibBody(EntityUid bodyId, bool gibOrgans = fa if (!Resolve(bodyId, ref body, false)) return new HashSet(); - if (TerminatingOrDeleted(bodyId) || EntityManager.IsQueuedForDeletion(bodyId)) + if (LifeStage(bodyId) >= EntityLifeStage.Terminating || EntityManager.IsQueuedForDeletion(bodyId)) return new HashSet(); var xform = Transform(bodyId); diff --git a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs index f659357ad382ba..d9327b51505c15 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs @@ -8,7 +8,7 @@ using Content.Shared.Cargo.Prototypes; using Content.Shared.Database; using Robust.Shared.Map; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Utility; diff --git a/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs b/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs index 02b2eee7712cf9..9f7acce4fd2ac5 100644 --- a/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs +++ b/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs @@ -6,9 +6,9 @@ using Content.Shared.Interaction; using Robust.Server.Containers; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Containers; using Robust.Shared.Map; -using Robust.Shared.Player; namespace Content.Server.CartridgeLoader; @@ -98,7 +98,7 @@ public bool HasProgram( /// and use this method to update its state so the cartridge loaders state can be added to it. /// /// - public void UpdateUiState(EntityUid loaderUid, ICommonSession? session, CartridgeLoaderComponent? loader) + public void UpdateUiState(EntityUid loaderUid, IPlayerSession? session, CartridgeLoaderComponent? loader) { if (!Resolve(loaderUid, ref loader)) return; @@ -122,7 +122,7 @@ public void UpdateUiState(EntityUid loaderUid, ICommonSession? session, Cartridg /// This method is called "UpdateCartridgeUiState" but cartridges and a programs are the same. A cartridge is just a program as a visible item. /// /// - public void UpdateCartridgeUiState(EntityUid loaderUid, BoundUserInterfaceState state, ICommonSession? session = default!, CartridgeLoaderComponent? loader = default!) + public void UpdateCartridgeUiState(EntityUid loaderUid, BoundUserInterfaceState state, IPlayerSession? session = default!, CartridgeLoaderComponent? loader = default!) { if (!Resolve(loaderUid, ref loader)) return; diff --git a/Content.Server/Chat/Commands/AdminChatCommand.cs b/Content.Server/Chat/Commands/AdminChatCommand.cs index 979051e9d3eba4..8aa95ffee18c5e 100644 --- a/Content.Server/Chat/Commands/AdminChatCommand.cs +++ b/Content.Server/Chat/Commands/AdminChatCommand.cs @@ -1,6 +1,7 @@ using Content.Server.Administration; using Content.Server.Chat.Managers; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Chat.Commands @@ -14,7 +15,7 @@ internal sealed class AdminChatCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = (IPlayerSession?) shell.Player; if (player == null) { diff --git a/Content.Server/Chat/Commands/LOOCCommand.cs b/Content.Server/Chat/Commands/LOOCCommand.cs index 9e16193fc38a4e..a897a0b2bfb871 100644 --- a/Content.Server/Chat/Commands/LOOCCommand.cs +++ b/Content.Server/Chat/Commands/LOOCCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Chat.Systems; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -14,7 +15,7 @@ internal sealed class LOOCCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Commands/MeCommand.cs b/Content.Server/Chat/Commands/MeCommand.cs index e763d5656e16da..36f86cf4d6b265 100644 --- a/Content.Server/Chat/Commands/MeCommand.cs +++ b/Content.Server/Chat/Commands/MeCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Chat.Systems; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -14,7 +15,7 @@ internal sealed class MeCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Commands/OOCCommand.cs b/Content.Server/Chat/Commands/OOCCommand.cs index 36f6303fbd145c..bef2024608d53b 100644 --- a/Content.Server/Chat/Commands/OOCCommand.cs +++ b/Content.Server/Chat/Commands/OOCCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Chat.Managers; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Chat.Commands @@ -13,7 +14,7 @@ internal sealed class OOCCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Commands/SayCommand.cs b/Content.Server/Chat/Commands/SayCommand.cs index 273f908c9ab273..7c2125d8c1ce9f 100644 --- a/Content.Server/Chat/Commands/SayCommand.cs +++ b/Content.Server/Chat/Commands/SayCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Chat.Systems; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -14,7 +15,7 @@ internal sealed class SayCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Commands/SuicideCommand.cs b/Content.Server/Chat/Commands/SuicideCommand.cs index c967ba78d7fa78..389ff039bf0efd 100644 --- a/Content.Server/Chat/Commands/SuicideCommand.cs +++ b/Content.Server/Chat/Commands/SuicideCommand.cs @@ -1,6 +1,7 @@ using Content.Server.GameTicking; using Content.Shared.Administration; using Content.Shared.Mind; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -17,7 +18,7 @@ internal sealed class SuicideCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteLine(Loc.GetString("shell-cannot-run-command-from-server")); return; diff --git a/Content.Server/Chat/Commands/WhisperCommand.cs b/Content.Server/Chat/Commands/WhisperCommand.cs index c88e2519ee6ede..41eba8b38428e1 100644 --- a/Content.Server/Chat/Commands/WhisperCommand.cs +++ b/Content.Server/Chat/Commands/WhisperCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Chat.Systems; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -14,7 +15,7 @@ internal sealed class WhisperCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Managers/ChatManager.cs b/Content.Server/Chat/Managers/ChatManager.cs index 59a9d305bd29c0..88e143d24e37eb 100644 --- a/Content.Server/Chat/Managers/ChatManager.cs +++ b/Content.Server/Chat/Managers/ChatManager.cs @@ -10,9 +10,11 @@ using Content.Shared.Chat; using Content.Shared.Database; using Content.Shared.Mind; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Network; using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Replays; using Robust.Shared.Utility; @@ -49,8 +51,8 @@ internal sealed class ChatManager : IChatManager private bool _oocEnabled = true; private bool _adminOocEnabled = true; - public Dictionary SenderKeys { get; } = new(); - public Dictionary> SenderEntities { get; } = new(); + public Dictionary SenderKeys { get; } = new(); + public Dictionary> SenderEntities { get; } = new(); public void Initialize() { @@ -77,7 +79,7 @@ private void OnAdminOocEnabledChanged(bool val) DispatchServerAnnouncement(Loc.GetString(val ? "chat-manager-admin-ooc-chat-enabled-message" : "chat-manager-admin-ooc-chat-disabled-message")); } - public void DeleteMessagesBy(ICommonSession player) + public void DeleteMessagesBy(IPlayerSession player) { var key = SenderKeys.GetValueOrDefault(player); var entities = SenderEntities.GetValueOrDefault(player) ?? new HashSet(); @@ -163,7 +165,7 @@ public void SendHookOOC(string sender, string message) /// The player sending the message. /// The message. /// The type of message. - public void TrySendOOCMessage(ICommonSession player, string message, OOCChatType type) + public void TrySendOOCMessage(IPlayerSession player, string message, OOCChatType type) { // Check if message exceeds the character limit if (message.Length > MaxMessageLength) @@ -187,7 +189,7 @@ public void TrySendOOCMessage(ICommonSession player, string message, OOCChatType #region Private API - private void SendOOC(ICommonSession player, string message) + private void SendOOC(IPlayerSession player, string message) { if (_adminManager.IsAdmin(player)) { @@ -224,7 +226,7 @@ private void SendOOC(ICommonSession player, string message) _adminLogger.Add(LogType.Chat, LogImpact.Low, $"OOC from {player:Player}: {message}"); } - private void SendAdminChat(ICommonSession player, string message) + private void SendAdminChat(IPlayerSession player, string message) { if (!_adminManager.IsAdmin(player)) { @@ -324,7 +326,7 @@ public void ChatMessageToAll(ChatChannel channel, string message, string wrapped } } - public bool MessageCharacterLimit(ICommonSession? player, string message) + public bool MessageCharacterLimit(IPlayerSession? player, string message) { var isOverLength = false; diff --git a/Content.Server/Chat/Managers/IChatManager.cs b/Content.Server/Chat/Managers/IChatManager.cs index 5317b3054e4edd..10103f011df2f7 100644 --- a/Content.Server/Chat/Managers/IChatManager.cs +++ b/Content.Server/Chat/Managers/IChatManager.cs @@ -1,6 +1,8 @@ using Content.Shared.Chat; +using Robust.Server.Player; using Robust.Shared.Network; using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.Chat.Managers { @@ -10,12 +12,12 @@ public interface IChatManager /// Keys identifying messages sent by a specific player, used when sending /// /// - Dictionary SenderKeys { get; } + Dictionary SenderKeys { get; } /// /// Tracks which entities a player was attached to while sending messages. /// - Dictionary> SenderEntities { get; } + Dictionary> SenderEntities { get; } void Initialize(); @@ -28,7 +30,7 @@ public interface IChatManager void DispatchServerMessage(ICommonSession player, string message, bool suppressLog = false); - void TrySendOOCMessage(ICommonSession player, string message, OOCChatType type); + void TrySendOOCMessage(IPlayerSession player, string message, OOCChatType type); void SendHookOOC(string sender, string message); void SendAdminAnnouncement(string message); @@ -45,8 +47,8 @@ void ChatMessageToMany(ChatChannel channel, string message, string wrappedMessag void ChatMessageToAll(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0, int? senderKey = null); - bool MessageCharacterLimit(ICommonSession player, string message); + bool MessageCharacterLimit(IPlayerSession player, string message); - void DeleteMessagesBy(ICommonSession player); + void DeleteMessagesBy(IPlayerSession player); } } diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 3315f61c2fb597..455d34c907f565 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -7,6 +7,7 @@ using Content.Server.Administration.Managers; using Content.Server.Chat.Managers; using Content.Server.GameTicking; +using Content.Server.Players; using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Shared.ActionBlocker; @@ -17,7 +18,6 @@ using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Mobs.Systems; -using Content.Shared.Players; using Content.Shared.Radio; using Robust.Server.GameObjects; using Robust.Server.Player; @@ -26,6 +26,7 @@ using Robust.Shared.Console; using Robust.Shared.Network; using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Replays; @@ -146,7 +147,7 @@ public void TrySendInGameICMessage( InGameICChatType desiredType, bool hideChat, bool hideLog = false, IConsoleShell? shell = null, - ICommonSession? player = null, string? nameOverride = null, + IPlayerSession? player = null, string? nameOverride = null, bool checkRadioPrefix = true, bool ignoreActionBlocker = false) { @@ -171,7 +172,7 @@ public void TrySendInGameICMessage( ChatTransmitRange range, bool hideLog = false, IConsoleShell? shell = null, - ICommonSession? player = null, + IPlayerSession? player = null, string? nameOverride = null, bool checkRadioPrefix = true, bool ignoreActionBlocker = false @@ -252,7 +253,7 @@ public void TrySendInGameOOCMessage( InGameOOCChatType type, bool hideChat, IConsoleShell? shell = null, - ICommonSession? player = null + IPlayerSession? player = null ) { if (!CanSendInGame(message, shell, player)) @@ -546,7 +547,7 @@ private void SendEntityEmote( } // ReSharper disable once InconsistentNaming - private void SendLOOC(EntityUid source, ICommonSession player, string message, bool hideChat) + private void SendLOOC(EntityUid source, IPlayerSession player, string message, bool hideChat) { var name = FormattedMessage.EscapeText(Identity.Name(source, EntityManager)); @@ -570,7 +571,7 @@ private void SendLOOC(EntityUid source, ICommonSession player, string message, b _adminLogger.Add(LogType.Chat, LogImpact.Low, $"LOOC from {player:Player}: {message}"); } - private void SendDeadChat(EntityUid source, ICommonSession player, string message, bool hideChat) + private void SendDeadChat(EntityUid source, IPlayerSession player, string message, bool hideChat) { var clients = GetDeadChatClients(); var playerName = Name(source); @@ -627,13 +628,13 @@ private MessageRangeCheckResult MessageRangeCheck(ICommonSession session, ICChat initialResult = MessageRangeCheckResult.Full; break; case ChatTransmitRange.GhostRangeLimit: - initialResult = (data.Observer && data.Range < 0 && !_adminManager.IsAdmin(session)) ? MessageRangeCheckResult.HideChat : MessageRangeCheckResult.Full; + initialResult = (data.Observer && data.Range < 0 && !_adminManager.IsAdmin((IPlayerSession) session)) ? MessageRangeCheckResult.HideChat : MessageRangeCheckResult.Full; break; case ChatTransmitRange.HideChat: initialResult = MessageRangeCheckResult.HideChat; break; case ChatTransmitRange.NoGhosts: - initialResult = (data.Observer && !_adminManager.IsAdmin(session)) ? MessageRangeCheckResult.Disallowed : MessageRangeCheckResult.Full; + initialResult = (data.Observer && !_adminManager.IsAdmin((IPlayerSession) session)) ? MessageRangeCheckResult.Disallowed : MessageRangeCheckResult.Full; break; } var insistHideChat = data.HideChatOverride ?? false; @@ -665,7 +666,7 @@ private void SendInVoiceRange(ChatChannel channel, string message, string wrappe /// /// Returns true if the given player is 'allowed' to send the given message, false otherwise. /// - private bool CanSendInGame(string message, IConsoleShell? shell = null, ICommonSession? player = null) + private bool CanSendInGame(string message, IConsoleShell? shell = null, IPlayerSession? player = null) { // Non-players don't have to worry about these restrictions. if (player == null) @@ -693,7 +694,7 @@ private string SanitizeInGameICMessage(EntityUid source, string message, out str { var newMessage = message.Trim(); newMessage = SanitizeMessageReplaceWords(newMessage); - + if (capitalize) newMessage = SanitizeMessageCapital(newMessage); if (capitalizeTheWordI) diff --git a/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs b/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs index 7485c0e9016338..8cbdd82f079c51 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs @@ -2,7 +2,6 @@ using Content.Shared.Chemistry.Reagent; using Robust.Server.Player; using Robust.Shared.Enums; -using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Server.Chemistry.EntitySystems; diff --git a/Content.Server/Chunking/ChunkingSystem.cs b/Content.Server/Chunking/ChunkingSystem.cs index 6f44c43be85a8e..4ef44d1678d4bc 100644 --- a/Content.Server/Chunking/ChunkingSystem.cs +++ b/Content.Server/Chunking/ChunkingSystem.cs @@ -1,12 +1,12 @@ using System.Linq; using Content.Shared.Decals; 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; -using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Shared.Chunking; @@ -41,7 +41,7 @@ public override void Shutdown() private void OnPvsRangeChanged(float value) => _baseViewBounds = Box2.UnitCentered.Scale(value); public Dictionary> GetChunksForSession( - ICommonSession session, + IPlayerSession session, int chunkSize, ObjectPool> indexPool, ObjectPool>> viewerPool, @@ -52,7 +52,7 @@ public Dictionary> GetChunksForSession( return chunks; } - private HashSet GetSessionViewers(ICommonSession session) + private HashSet GetSessionViewers(IPlayerSession session) { var viewers = new HashSet(); if (session.Status != SessionStatus.InGame || session.AttachedEntity is null) diff --git a/Content.Server/Commands/CommandUtils.cs b/Content.Server/Commands/CommandUtils.cs index 172f3324e35d8b..11adaec9a2f008 100644 --- a/Content.Server/Commands/CommandUtils.cs +++ b/Content.Server/Commands/CommandUtils.cs @@ -3,7 +3,6 @@ using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Network; -using Robust.Shared.Player; namespace Content.Server.Commands { @@ -17,7 +16,7 @@ public static class CommandUtils /// sending a failure to the performer if unable to. /// public static bool TryGetSessionByUsernameOrId(IConsoleShell shell, - string usernameOrId, ICommonSession performer, [NotNullWhen(true)] out ICommonSession? session) + string usernameOrId, IPlayerSession performer, [NotNullWhen(true)] out IPlayerSession? session) { var plyMgr = IoCManager.Resolve(); if (plyMgr.TryGetSessionByUsername(usernameOrId, out session)) return true; @@ -37,7 +36,7 @@ public static bool TryGetSessionByUsernameOrId(IConsoleShell shell, /// sending a failure to the performer if unable to. /// public static bool TryGetAttachedEntityByUsernameOrId(IConsoleShell shell, - string usernameOrId, ICommonSession performer, out EntityUid attachedEntity) + string usernameOrId, IPlayerSession performer, out EntityUid attachedEntity) { attachedEntity = default; if (!TryGetSessionByUsernameOrId(shell, usernameOrId, performer, out var session)) return false; @@ -68,7 +67,7 @@ public static string SubstituteEntityDetails(IConsoleShell shell, EntityUid ent, transform.LocalPosition.Y.ToString(CultureInfo.InvariantCulture)); ruleString = ruleString.Replace("$NAME", entMan.GetComponent(ent).EntityName); - if (shell.Player is { } player) + if (shell.Player is IPlayerSession player) { if (player.AttachedEntity is {Valid: true} p) { diff --git a/Content.Server/Construction/Commands/FixRotationsCommand.cs b/Content.Server/Construction/Commands/FixRotationsCommand.cs index bdbfaf170d476c..d23fa0a31b1910 100644 --- a/Content.Server/Construction/Commands/FixRotationsCommand.cs +++ b/Content.Server/Construction/Commands/FixRotationsCommand.cs @@ -3,6 +3,7 @@ using Content.Shared.Administration; using Content.Shared.Construction; using Content.Shared.Tag; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map.Components; @@ -20,7 +21,7 @@ public sealed class FixRotationsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argsOther, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; EntityUid? gridId; var xformQuery = _entManager.GetEntityQuery(); diff --git a/Content.Server/Construction/Commands/TileReplaceCommand.cs b/Content.Server/Construction/Commands/TileReplaceCommand.cs index f63fd4c13e016f..ed1fba2424ae22 100644 --- a/Content.Server/Construction/Commands/TileReplaceCommand.cs +++ b/Content.Server/Construction/Commands/TileReplaceCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Administration; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -19,7 +20,7 @@ sealed class TileReplaceCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; EntityUid? gridId; string tileIdA; string tileIdB; diff --git a/Content.Server/Construction/Commands/TileWallsCommand.cs b/Content.Server/Construction/Commands/TileWallsCommand.cs index 731d4da7f8442f..55389e41cc7490 100644 --- a/Content.Server/Construction/Commands/TileWallsCommand.cs +++ b/Content.Server/Construction/Commands/TileWallsCommand.cs @@ -2,9 +2,10 @@ using Content.Shared.Administration; using Content.Shared.Maps; using Content.Shared.Tag; +using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; -using Robust.Server.GameObjects; using Robust.Shared.Map.Components; namespace Content.Server.Construction.Commands @@ -28,7 +29,7 @@ sealed class TileWallsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; EntityUid? gridId; switch (args.Length) diff --git a/Content.Server/Construction/ConstructionSystem.Initial.cs b/Content.Server/Construction/ConstructionSystem.Initial.cs index 21978f2d0cb2a2..e74edb5da2406d 100644 --- a/Content.Server/Construction/ConstructionSystem.Initial.cs +++ b/Content.Server/Construction/ConstructionSystem.Initial.cs @@ -16,7 +16,7 @@ using Content.Shared.Inventory; using Content.Shared.Storage; using Robust.Shared.Containers; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Timing; namespace Content.Server.Construction diff --git a/Content.Server/CrewManifest/CrewManifestSystem.cs b/Content.Server/CrewManifest/CrewManifestSystem.cs index 4c4f17f61d4934..aed0575324f5ff 100644 --- a/Content.Server/CrewManifest/CrewManifestSystem.cs +++ b/Content.Server/CrewManifest/CrewManifestSystem.cs @@ -10,9 +10,10 @@ using Content.Shared.CrewManifest; using Content.Shared.GameTicking; using Content.Shared.StationRecords; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.CrewManifest; @@ -59,7 +60,7 @@ private void OnRoundRestart(RoundRestartCleanupEvent ev) private void OnRequestCrewManifest(RequestCrewManifestMessage message, EntitySessionEventArgs args) { - if (args.SenderSession is not { } sessionCast + if (args.SenderSession is not IPlayerSession sessionCast || !_configManager.GetCVar(CCVars.CrewManifestWithoutEntity)) { return; @@ -92,12 +93,12 @@ private void OnRecordRemoved(RecordRemovedEvent ev) private void OnBoundUiClose(EntityUid uid, CrewManifestViewerComponent component, BoundUIClosedEvent ev) { var owningStation = _stationSystem.GetOwningStation(uid); - if (owningStation == null || ev.Session is not { } session) + if (owningStation == null || ev.Session is not IPlayerSession sessionCast) { return; } - CloseEui(owningStation.Value, session, uid); + CloseEui(owningStation.Value, sessionCast, uid); } /// @@ -125,7 +126,7 @@ private void UpdateEuis(EntityUid station) private void OpenEuiFromBui(EntityUid uid, CrewManifestViewerComponent component, CrewManifestOpenUiMessage msg) { var owningStation = _stationSystem.GetOwningStation(uid); - if (owningStation == null || msg.Session is not { } session) + if (owningStation == null || msg.Session is not IPlayerSession sessionCast) { return; } @@ -135,7 +136,7 @@ private void OpenEuiFromBui(EntityUid uid, CrewManifestViewerComponent component return; } - OpenEui(owningStation.Value, session, uid); + OpenEui(owningStation.Value, sessionCast, uid); } /// @@ -144,7 +145,7 @@ private void OpenEuiFromBui(EntityUid uid, CrewManifestViewerComponent component /// Station that we're displaying the crew manifest for. /// The player's session. /// If this EUI should be 'owned' by an entity. - public void OpenEui(EntityUid station, ICommonSession session, EntityUid? owner = null) + public void OpenEui(EntityUid station, IPlayerSession session, EntityUid? owner = null) { if (!HasComp(station)) { @@ -251,7 +252,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (shell.Player == null || shell.Player is not { } session) + if (shell.Player == null || shell.Player is not IPlayerSession session) { shell.WriteLine("You must run this from a client."); return; diff --git a/Content.Server/Damage/Commands/GodModeCommand.cs b/Content.Server/Damage/Commands/GodModeCommand.cs index 866737f17a9e9c..92a0e53f0f0b07 100644 --- a/Content.Server/Damage/Commands/GodModeCommand.cs +++ b/Content.Server/Damage/Commands/GodModeCommand.cs @@ -1,6 +1,8 @@ using Content.Server.Administration; +using Content.Server.Damage.Systems; using Content.Shared.Administration; using Content.Shared.Damage.Systems; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Damage.Commands @@ -16,7 +18,7 @@ public sealed class GodModeCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; EntityUid entity; switch (args.Length) diff --git a/Content.Server/Damage/ForceSay/DamageForceSaySystem.cs b/Content.Server/Damage/ForceSay/DamageForceSaySystem.cs index 457fab4bb28414..3d3346403ad7e4 100644 --- a/Content.Server/Damage/ForceSay/DamageForceSaySystem.cs +++ b/Content.Server/Damage/ForceSay/DamageForceSaySystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Stunnable; using Robust.Server.GameObjects; using Robust.Server.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; diff --git a/Content.Server/Database/UserDbDataManager.cs b/Content.Server/Database/UserDbDataManager.cs index f8b1611fd57548..f2c506240bfb0e 100644 --- a/Content.Server/Database/UserDbDataManager.cs +++ b/Content.Server/Database/UserDbDataManager.cs @@ -2,8 +2,8 @@ using System.Threading.Tasks; using Content.Server.Players.PlayTimeTracking; using Content.Server.Preferences.Managers; +using Robust.Server.Player; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.Database; @@ -25,7 +25,7 @@ public sealed class UserDbDataManager // TODO: Ideally connected/disconnected would be subscribed to IPlayerManager directly, // but this runs into ordering issues with game ticker. - public void ClientConnected(ICommonSession session) + public void ClientConnected(IPlayerSession session) { DebugTools.Assert(!_users.ContainsKey(session.UserId), "We should not have any cached data on client connect."); @@ -36,7 +36,7 @@ public void ClientConnected(ICommonSession session) _users.Add(session.UserId, data); } - public void ClientDisconnected(ICommonSession session) + public void ClientDisconnected(IPlayerSession session) { _users.Remove(session.UserId, out var data); if (data == null) @@ -49,24 +49,24 @@ public void ClientDisconnected(ICommonSession session) _playTimeTracking.ClientDisconnected(session); } - private async Task Load(ICommonSession session, CancellationToken cancel) + private async Task Load(IPlayerSession session, CancellationToken cancel) { await Task.WhenAll( _prefs.LoadData(session, cancel), _playTimeTracking.LoadData(session, cancel)); } - public Task WaitLoadComplete(ICommonSession session) + public Task WaitLoadComplete(IPlayerSession session) { return _users[session.UserId].Task; } - public bool IsLoadComplete(ICommonSession session) + public bool IsLoadComplete(IPlayerSession session) { return GetLoadTask(session).IsCompleted; } - public Task GetLoadTask(ICommonSession session) + public Task GetLoadTask(IPlayerSession session) { return _users[session.UserId].Task; } diff --git a/Content.Server/Decals/DecalSystem.cs b/Content.Server/Decals/DecalSystem.cs index ce2e0711e74a1a..ed281e05ba79be 100644 --- a/Content.Server/Decals/DecalSystem.cs +++ b/Content.Server/Decals/DecalSystem.cs @@ -16,7 +16,6 @@ using Robust.Shared.Enums; using Robust.Shared.Map; using Robust.Shared.Map.Components; -using Robust.Shared.Player; using Robust.Shared.Threading; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -37,7 +36,7 @@ public sealed class DecalSystem : SharedDecalSystem [Dependency] private readonly MapSystem _mapSystem = default!; private readonly Dictionary> _dirtyChunks = new(); - private readonly Dictionary>> _previousSentChunks = new(); + private readonly Dictionary>> _previousSentChunks = new(); private static readonly Vector2 _boundsMinExpansion = new(0.01f, 0.01f); private static readonly Vector2 _boundsMaxExpansion = new(1.01f, 1.01f); @@ -198,7 +197,7 @@ private void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs e) private void OnDecalPlacementRequest(RequestDecalPlacementEvent ev, EntitySessionEventArgs eventArgs) { - if (eventArgs.SenderSession is not { } session) + if (eventArgs.SenderSession is not IPlayerSession session) return; // bad @@ -227,7 +226,7 @@ private void OnDecalPlacementRequest(RequestDecalPlacementEvent ev, EntitySessio private void OnDecalRemovalRequest(RequestDecalRemovalEvent ev, EntitySessionEventArgs eventArgs) { - if (eventArgs.SenderSession is not { } session) + if (eventArgs.SenderSession is not IPlayerSession session) return; // bad @@ -428,7 +427,7 @@ public override void Update(float frameTime) if (PvsEnabled) { - var players = _playerManager.Sessions.Where(x => x.Status == SessionStatus.InGame).ToArray(); + var players = _playerManager.ServerSessions.Where(x => x.Status == SessionStatus.InGame).ToArray(); var opts = new ParallelOptions { MaxDegreeOfParallelism = _parMan.ParallelProcessCount }; Parallel.ForEach(players, opts, UpdatePlayer); } @@ -436,7 +435,7 @@ public override void Update(float frameTime) _dirtyChunks.Clear(); } - public void UpdatePlayer(ICommonSession player) + public void UpdatePlayer(IPlayerSession player) { var chunksInRange = _chunking.GetChunksForSession(player, ChunkSize, _chunkIndexPool, _chunkViewerPool); var staleChunks = _chunkViewerPool.Get(); @@ -531,7 +530,7 @@ private void ReturnToPool(Dictionary> chunks) } private void SendChunkUpdates( - ICommonSession session, + IPlayerSession session, Dictionary> updatedChunks, Dictionary> staleChunks) { diff --git a/Content.Server/Disposal/TubeConnectionsCommand.cs b/Content.Server/Disposal/TubeConnectionsCommand.cs index 55e64659379ded..7895dcbca66572 100644 --- a/Content.Server/Disposal/TubeConnectionsCommand.cs +++ b/Content.Server/Disposal/TubeConnectionsCommand.cs @@ -2,6 +2,7 @@ using Content.Server.Disposal.Tube; using Content.Server.Disposal.Tube.Components; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Disposal @@ -17,7 +18,7 @@ public sealed class TubeConnectionsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player?.AttachedEntity == null) { shell.WriteLine(Loc.GetString("shell-only-players-can-run-this-command")); diff --git a/Content.Server/EUI/BaseEui.cs b/Content.Server/EUI/BaseEui.cs index 70cbfc377503da..4a41ad40a5501c 100644 --- a/Content.Server/EUI/BaseEui.cs +++ b/Content.Server/EUI/BaseEui.cs @@ -1,6 +1,6 @@ using Content.Shared.Eui; using Robust.Shared.Network; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.EUI { diff --git a/Content.Server/EUI/EuiManager.cs b/Content.Server/EUI/EuiManager.cs index fe8e486b680290..4d997195252fe0 100644 --- a/Content.Server/EUI/EuiManager.cs +++ b/Content.Server/EUI/EuiManager.cs @@ -2,7 +2,7 @@ using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Network; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Utility; namespace Content.Server.EUI diff --git a/Content.Server/EntityList/SpawnEntityListCommand.cs b/Content.Server/EntityList/SpawnEntityListCommand.cs index 027d25dc2c22c0..0891bbd12acb21 100644 --- a/Content.Server/EntityList/SpawnEntityListCommand.cs +++ b/Content.Server/EntityList/SpawnEntityListCommand.cs @@ -1,6 +1,7 @@ using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.EntityList; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -21,7 +22,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError("You must be a player to run this command."); return; diff --git a/Content.Server/Examine/ExamineSystem.cs b/Content.Server/Examine/ExamineSystem.cs index 3447810896f7ed..98aa806885d06d 100644 --- a/Content.Server/Examine/ExamineSystem.cs +++ b/Content.Server/Examine/ExamineSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Utility; namespace Content.Server.Examine @@ -45,7 +46,7 @@ public override void SendExamineTooltip(EntityUid player, EntityUid target, Form private void ExamineInfoRequest(ExamineSystemMessages.RequestExamineInfoMessage request, EntitySessionEventArgs eventArgs) { - var player = eventArgs.SenderSession; + var player = (IPlayerSession) eventArgs.SenderSession; var session = eventArgs.SenderSession; var channel = player.ConnectedClient; var entity = GetEntity(request.NetEntity); diff --git a/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs b/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs index c17eea684db34f..59f0a13695eb92 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs @@ -1,9 +1,9 @@ using System.Numerics; using Content.Shared.Fluids; using Content.Shared.Fluids.Components; +using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Map.Components; -using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Fluids.EntitySystems; @@ -14,10 +14,10 @@ public sealed class PuddleDebugDebugOverlaySystem : SharedPuddleDebugOverlaySyst [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly PuddleSystem _puddle = default!; - private readonly HashSet _playerObservers = new(); + private readonly HashSet _playerObservers = new(); private List> _grids = new(); - public bool ToggleObserver(ICommonSession observer) + public bool ToggleObserver(IPlayerSession observer) { NextTick ??= _timing.CurTime + Cooldown; @@ -31,7 +31,7 @@ public bool ToggleObserver(ICommonSession observer) return true; } - private void RemoveObserver(ICommonSession observer) + private void RemoveObserver(IPlayerSession observer) { if (!_playerObservers.Remove(observer)) { diff --git a/Content.Server/Fluids/ShowFluidsCommand.cs b/Content.Server/Fluids/ShowFluidsCommand.cs index 71ac273a45b912..f122eadea790fe 100644 --- a/Content.Server/Fluids/ShowFluidsCommand.cs +++ b/Content.Server/Fluids/ShowFluidsCommand.cs @@ -1,6 +1,7 @@ using Content.Server.Administration; using Content.Server.Fluids.EntitySystems; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Fluids; @@ -14,7 +15,7 @@ public sealed class ShowFluidsCommand : IConsoleCommand public string Help => $"Usage: {Command}"; public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("You must be a player to use this command."); diff --git a/Content.Server/GameTicking/Commands/JoinGameCommand.cs b/Content.Server/GameTicking/Commands/JoinGameCommand.cs index 3276b91200324d..366e6c4e772bcd 100644 --- a/Content.Server/GameTicking/Commands/JoinGameCommand.cs +++ b/Content.Server/GameTicking/Commands/JoinGameCommand.cs @@ -2,6 +2,7 @@ using Content.Shared.Administration; using Content.Shared.GameTicking; using Content.Shared.Roles; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -29,7 +30,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { diff --git a/Content.Server/GameTicking/Commands/ObserveCommand.cs b/Content.Server/GameTicking/Commands/ObserveCommand.cs index 747e54e28becac..d608dda9c1756b 100644 --- a/Content.Server/GameTicking/Commands/ObserveCommand.cs +++ b/Content.Server/GameTicking/Commands/ObserveCommand.cs @@ -1,5 +1,6 @@ using Content.Shared.Administration; using Content.Shared.GameTicking; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands @@ -13,7 +14,7 @@ sealed class ObserveCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { return; } diff --git a/Content.Server/GameTicking/Commands/RespawnCommand.cs b/Content.Server/GameTicking/Commands/RespawnCommand.cs index 4f101d0939ad65..057572297f9136 100644 --- a/Content.Server/GameTicking/Commands/RespawnCommand.cs +++ b/Content.Server/GameTicking/Commands/RespawnCommand.cs @@ -14,7 +14,7 @@ sealed class RespawnCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (args.Length > 1) { shell.WriteLine("Must provide <= 1 argument."); diff --git a/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs b/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs index df418c27ee1af1..e68c4c5fa7fe3b 100644 --- a/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs +++ b/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs @@ -1,4 +1,5 @@ using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands @@ -12,7 +13,7 @@ sealed class ToggleReadyCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (args.Length != 1) { shell.WriteError(Loc.GetString("shell-wrong-arguments-number")); diff --git a/Content.Server/GameTicking/GameTicker.GamePreset.cs b/Content.Server/GameTicking/GameTicker.GamePreset.cs index 2d7539bd0f119f..a5e6d7a60566c3 100644 --- a/Content.Server/GameTicking/GameTicker.GamePreset.cs +++ b/Content.Server/GameTicking/GameTicker.GamePreset.cs @@ -11,7 +11,7 @@ using Content.Shared.Mind; using Content.Shared.Mobs.Components; using JetBrains.Annotations; -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.GameTicking { @@ -29,7 +29,7 @@ public sealed partial class GameTicker /// public GamePresetPrototype? CurrentPreset { get; private set; } - private bool StartPreset(ICommonSession[] origReadyPlayers, bool force) + private bool StartPreset(IPlayerSession[] origReadyPlayers, bool force) { var startAttempt = new RoundStartAttemptEvent(origReadyPlayers, force); RaiseLocalEvent(startAttempt); @@ -214,7 +214,7 @@ public bool OnGhostAttempt(EntityUid mindId, bool canReturnGlobal, bool viaComma { if (mind.Session != null) // Logging is suppressed to prevent spam from ghost attempts caused by movement attempts { - _chatManager.DispatchServerMessage(mind.Session, Loc.GetString("comp-mind-ghosting-prevented"), + _chatManager.DispatchServerMessage((IPlayerSession) mind.Session, Loc.GetString("comp-mind-ghosting-prevented"), true); } diff --git a/Content.Server/GameTicking/GameTicker.Lobby.cs b/Content.Server/GameTicking/GameTicker.Lobby.cs index 1943a82617ade2..b7b6a29a5a7b31 100644 --- a/Content.Server/GameTicking/GameTicker.Lobby.cs +++ b/Content.Server/GameTicking/GameTicker.Lobby.cs @@ -1,8 +1,10 @@ using System.Linq; using Content.Shared.GameTicking; using Content.Server.Station.Components; +using Robust.Server.Player; using Robust.Shared.Network; using Robust.Shared.Player; +using Robust.Shared.Players; using System.Text; namespace Content.Server.GameTicking @@ -77,7 +79,7 @@ private string GetInfoText() ("roundId", RoundId), ("playerCount", playerCount), ("readyCount", readyCount), ("mapName", stationNames.ToString()),("gmTitle", gmTitle),("desc", desc)); } - private TickerLobbyStatusEvent GetStatusMsg(ICommonSession session) + private TickerLobbyStatusEvent GetStatusMsg(IPlayerSession session) { _playerGameStatuses.TryGetValue(session.UserId, out var status); return new TickerLobbyStatusEvent(RunLevel != GameRunLevel.PreRoundLobby, LobbySong, LobbyBackground,status == PlayerGameStatus.ReadyToPlay, _roundStartTime, RoundPreloadTime, _roundStartTimeSpan, Paused); @@ -85,7 +87,7 @@ private TickerLobbyStatusEvent GetStatusMsg(ICommonSession session) private void SendStatusToAll() { - foreach (var player in _playerManager.Sessions) + foreach (var player in _playerManager.ServerSessions) { RaiseNetworkEvent(GetStatusMsg(player), player.ConnectedClient); } @@ -146,7 +148,7 @@ public void ToggleReadyAll(bool ready) } } - public void ToggleReady(ICommonSession player, bool ready) + public void ToggleReady(IPlayerSession player, bool ready) { if (!_playerGameStatuses.ContainsKey(player.UserId)) return; diff --git a/Content.Server/GameTicking/GameTicker.Player.cs b/Content.Server/GameTicking/GameTicker.Player.cs index 334af3f4fd2f3d..3aef1bbe78525a 100644 --- a/Content.Server/GameTicking/GameTicker.Player.cs +++ b/Content.Server/GameTicking/GameTicker.Player.cs @@ -1,4 +1,5 @@ using Content.Server.Database; +using Content.Server.Players; using Content.Shared.GameTicking; using Content.Shared.GameWindow; using Content.Shared.Players; @@ -6,7 +7,6 @@ using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared.Enums; -using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -49,14 +49,14 @@ private async void PlayerStatusChanged(object? sender, SessionStatusEventArgs ar // Always make sure the client has player data. if (session.Data.ContentDataUncast == null) { - var data = new ContentPlayerData(session.UserId, args.Session.Name); + var data = new PlayerData(session.UserId, args.Session.Name); data.Mind = mindId; session.Data.ContentDataUncast = data; } // Make the player actually join the game. // timer time must be > tick length - Timer.Spawn(0, () => _playerManager.JoinGame(args.Session)); + Timer.Spawn(0, args.Session.JoinGame); var record = await _dbManager.GetPlayerRecordByUserId(args.Session.UserId); var firstConnection = record != null && @@ -100,7 +100,8 @@ private async void PlayerStatusChanged(object? sender, SessionStatusEventArgs ar } else { - _playerManager.SetAttachedEntity(session, mind.CurrentEntity); + // Simply re-attach to existing entity. + session.AttachToEntity(mind.CurrentEntity); PlayerJoinGame(session); } @@ -145,12 +146,12 @@ async void AddPlayerToDb(Guid id) } } - private HumanoidCharacterProfile GetPlayerProfile(ICommonSession p) + private HumanoidCharacterProfile GetPlayerProfile(IPlayerSession p) { return (HumanoidCharacterProfile) _prefsManager.GetPreferences(p.UserId).SelectedCharacter; } - public void PlayerJoinGame(ICommonSession session, bool silent = false) + public void PlayerJoinGame(IPlayerSession session, bool silent = false) { if (!silent) _chatManager.DispatchServerMessage(session, Loc.GetString("game-ticker-player-join-game-message")); @@ -161,7 +162,7 @@ public void PlayerJoinGame(ICommonSession session, bool silent = false) RaiseNetworkEvent(new TickerJoinGameEvent(), session.ConnectedClient); } - private void PlayerJoinLobby(ICommonSession session) + private void PlayerJoinLobby(IPlayerSession session) { _playerGameStatuses[session.UserId] = LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay; _db.AddRoundPlayers(RoundId, session.UserId); @@ -181,9 +182,9 @@ private void ReqWindowAttentionAll() public sealed class PlayerJoinedLobbyEvent : EntityEventArgs { - public readonly ICommonSession PlayerSession; + public readonly IPlayerSession PlayerSession; - public PlayerJoinedLobbyEvent(ICommonSession playerSession) + public PlayerJoinedLobbyEvent(IPlayerSession playerSession) { PlayerSession = playerSession; } diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index 85f833bd1c3264..df2aafa90119fc 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -12,6 +12,7 @@ using JetBrains.Annotations; using Prometheus; using Robust.Server.Maps; +using Robust.Server.Player; using Robust.Shared.Asynchronous; using Robust.Shared.Audio; using Robust.Shared.Map; @@ -204,7 +205,7 @@ public void StartRound(bool force = false) var startingEvent = new RoundStartingEvent(RoundId); RaiseLocalEvent(startingEvent); - var readyPlayers = new List(); + var readyPlayers = new List(); var readyPlayerProfiles = new Dictionary(); foreach (var (userId, status) in _playerGameStatuses) @@ -343,7 +344,7 @@ public void ShowRoundEndScoreboard(string text = "") { connected = true; } - ContentPlayerData? contentPlayerData = null; + PlayerData? contentPlayerData = null; if (userId != null && _playerManager.TryGetPlayerData(userId.Value, out var playerData)) { contentPlayerData = playerData.ContentData(); @@ -359,7 +360,8 @@ public void ShowRoundEndScoreboard(string text = "") else if (mind.CurrentEntity != null && TryName(mind.CurrentEntity.Value, out var icName)) playerIcName = icName; - if (TryGetEntity(mind.OriginalOwnedEntity, out var entity)) + var entity = mind.OriginalOwnedEntity; + if (Exists(entity)) _pvsOverride.AddGlobalOverride(entity.Value, recursive: true); var roles = _roles.MindGetAllRoles(mindId); @@ -492,7 +494,7 @@ private async void SendRoundStartingDiscordMessage() private void ResettingCleanup() { // Move everybody currently in the server to lobby. - foreach (var player in _playerManager.Sessions) + foreach (var player in _playerManager.ServerSessions) { PlayerJoinLobby(player); } @@ -540,7 +542,7 @@ private void ResettingCleanup() DisallowLateJoin = false; _playerGameStatuses.Clear(); - foreach (var session in _playerManager.Sessions) + foreach (var session in _playerManager.ServerSessions) { _playerGameStatuses[session.UserId] = LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay; } @@ -734,10 +736,10 @@ public void Disallow() /// public sealed class RoundStartAttemptEvent : CancellableEntityEventArgs { - public ICommonSession[] Players { get; } + public IPlayerSession[] Players { get; } public bool Forced { get; } - public RoundStartAttemptEvent(ICommonSession[] players, bool forced) + public RoundStartAttemptEvent(IPlayerSession[] players, bool forced) { Players = players; Forced = forced; @@ -756,11 +758,11 @@ public sealed class RulePlayerSpawningEvent /// If you want to handle a specific player being spawned, remove it from this list and do what you need. /// /// If you spawn a player by yourself from this event, don't forget to call on them. - public List PlayerPool { get; } + public List PlayerPool { get; } public IReadOnlyDictionary Profiles { get; } public bool Forced { get; } - public RulePlayerSpawningEvent(List playerPool, IReadOnlyDictionary profiles, bool forced) + public RulePlayerSpawningEvent(List playerPool, IReadOnlyDictionary profiles, bool forced) { PlayerPool = playerPool; Profiles = profiles; @@ -774,11 +776,11 @@ public RulePlayerSpawningEvent(List playerPool, IReadOnlyDiction /// public sealed class RulePlayerJobsAssignedEvent { - public ICommonSession[] Players { get; } + public IPlayerSession[] Players { get; } public IReadOnlyDictionary Profiles { get; } public bool Forced { get; } - public RulePlayerJobsAssignedEvent(ICommonSession[] players, IReadOnlyDictionary profiles, bool forced) + public RulePlayerJobsAssignedEvent(IPlayerSession[] players, IReadOnlyDictionary profiles, bool forced) { Players = players; Profiles = profiles; diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index c2bf523657ca35..0c59f93bb021fa 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -3,20 +3,20 @@ using System.Numerics; using Content.Server.Administration.Managers; using Content.Server.Ghost; +using Content.Server.Players; using Content.Server.Spawners.Components; using Content.Server.Speech.Components; using Content.Server.Station.Components; using Content.Shared.CCVar; using Content.Shared.Database; -using Content.Shared.Players; using Content.Shared.Preferences; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; using JetBrains.Annotations; +using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -29,7 +29,7 @@ public sealed partial class GameTicker [Dependency] private readonly SharedJobSystem _jobs = default!; [ValidatePrototypeId] - public const string ObserverPrototypeName = "MobObserver"; + private const string ObserverPrototypeName = "MobObserver"; /// /// How many players have joined the round through normal methods. @@ -52,7 +52,7 @@ private List GetSpawnableStations() return spawnableStations; } - private void SpawnPlayers(List readyPlayers, Dictionary profiles, bool force) + private void SpawnPlayers(List readyPlayers, Dictionary profiles, bool force) { // Allow game rules to spawn players by themselves if needed. (For example, nuke ops or wizard) RaiseLocalEvent(new RulePlayerSpawningEvent(readyPlayers, profiles, force)); @@ -116,7 +116,7 @@ private void SpawnPlayers(List readyPlayers, Dictionary _playerManager.GetSessionByUserId(x)).ToArray(), profiles, force)); } - private void SpawnPlayer(ICommonSession player, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false) + private void SpawnPlayer(IPlayerSession player, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false) { var character = GetPlayerProfile(player); @@ -129,7 +129,7 @@ private void SpawnPlayer(ICommonSession player, EntityUid station, string? jobId SpawnPlayer(player, character, station, jobId, lateJoin, silent); } - private void SpawnPlayer(ICommonSession player, HumanoidCharacterProfile character, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false) + private void SpawnPlayer(IPlayerSession player, HumanoidCharacterProfile character, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false) { // Can't spawn players with a dummy ticker! if (DummyTicker) @@ -271,7 +271,7 @@ private void SpawnPlayer(ICommonSession player, HumanoidCharacterProfile charact RaiseLocalEvent(mob, aev, true); } - public void Respawn(ICommonSession player) + public void Respawn(IPlayerSession player) { _mind.WipeMind(player); _adminLogger.Add(LogType.Respawn, LogImpact.Medium, $"Player {player} was respawned."); @@ -289,7 +289,7 @@ public void Respawn(ICommonSession player) /// The station they're spawning on /// An optional job for them to spawn as /// Whether or not the player should be greeted upon joining - public void MakeJoinGame(ICommonSession player, EntityUid station, string? jobId = null, bool silent = false) + public void MakeJoinGame(IPlayerSession player, EntityUid station, string? jobId = null, bool silent = false) { if (!_playerGameStatuses.ContainsKey(player.UserId)) return; @@ -303,7 +303,7 @@ public void MakeJoinGame(ICommonSession player, EntityUid station, string? jobId /// /// Causes the given player to join the current game as observer ghost. See also /// - public void JoinAsObserver(ICommonSession player) + public void JoinAsObserver(IPlayerSession player) { // Can't spawn players with a dummy ticker! if (DummyTicker) @@ -317,7 +317,7 @@ public void JoinAsObserver(ICommonSession player) /// Spawns an observer ghost and attaches the given player to it. If the player does not yet have a mind, the /// player is given a new mind with the observer role. Otherwise, the current mind is transferred to the ghost. /// - public void SpawnObserver(ICommonSession player) + public void SpawnObserver(IPlayerSession player) { if (DummyTicker) return; @@ -430,13 +430,13 @@ public EntityCoordinates GetObserverSpawnPoint() [PublicAPI] public sealed class PlayerBeforeSpawnEvent : HandledEntityEventArgs { - public ICommonSession Player { get; } + public IPlayerSession Player { get; } public HumanoidCharacterProfile Profile { get; } public string? JobId { get; } public bool LateJoin { get; } public EntityUid Station { get; } - public PlayerBeforeSpawnEvent(ICommonSession player, HumanoidCharacterProfile profile, string? jobId, bool lateJoin, EntityUid station) + public PlayerBeforeSpawnEvent(IPlayerSession player, HumanoidCharacterProfile profile, string? jobId, bool lateJoin, EntityUid station) { Player = player; Profile = profile; @@ -455,7 +455,7 @@ public PlayerBeforeSpawnEvent(ICommonSession player, HumanoidCharacterProfile pr public sealed class PlayerSpawnCompleteEvent : EntityEventArgs { public EntityUid Mob { get; } - public ICommonSession Player { get; } + public IPlayerSession Player { get; } public string? JobId { get; } public bool LateJoin { get; } public EntityUid Station { get; } @@ -464,7 +464,7 @@ public sealed class PlayerSpawnCompleteEvent : EntityEventArgs // Ex. If this is the 27th person to join, this will be 27. public int JoinOrder { get; } - public PlayerSpawnCompleteEvent(EntityUid mob, ICommonSession player, string? jobId, bool lateJoin, int joinOrder, EntityUid station, HumanoidCharacterProfile profile) + public PlayerSpawnCompleteEvent(EntityUid mob, IPlayerSession player, string? jobId, bool lateJoin, int joinOrder, EntityUid station, HumanoidCharacterProfile profile) { Mob = mob; Player = player; diff --git a/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs index 7af87179d65495..883abef52fa7a6 100644 --- a/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs @@ -1,7 +1,7 @@ using Content.Shared.Preferences; using Content.Shared.Roles; +using Robust.Server.Player; using Robust.Shared.Audio; -using Robust.Shared.Player; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.GameTicking.Rules.Components; @@ -26,7 +26,7 @@ public enum SelectionState public SelectionState SelectionStatus = SelectionState.WaitingForSpawn; public TimeSpan AnnounceAt = TimeSpan.Zero; - public Dictionary StartCandidates = new(); + public Dictionary StartCandidates = new(); /// /// Path to antagonist alert sound. diff --git a/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs b/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs index b775b7af5640e1..c2e91ba4a5d01d 100644 --- a/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs @@ -2,7 +2,6 @@ using Content.Server.Chat.Managers; using Content.Server.GameTicking.Rules.Components; using Robust.Server.Player; -using Robust.Shared.Player; using Timer = Robust.Shared.Timing.Timer; namespace Content.Server.GameTicking.Rules; diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs index 4d3eee81e2af90..13d4ed71c8e0b3 100644 --- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs @@ -602,11 +602,11 @@ private void OnPlayersSpawning(RulePlayerSpawningEvent ev) var maxOperatives = nukeops.MaxOps; // Dear lord what is happening HERE. - var everyone = new List(ev.PlayerPool); - var prefList = new List(); - var medPrefList = new List(); - var cmdrPrefList = new List(); - var operatives = new List(); + var everyone = new List(ev.PlayerPool); + var prefList = new List(); + var medPrefList = new List(); + var cmdrPrefList = new List(); + var operatives = new List(); // The LINQ expression ReSharper keeps suggesting is completely unintelligible so I'm disabling it // ReSharper disable once ForeachCanBeConvertedToQueryUsingAnotherGetEnumerator @@ -637,7 +637,7 @@ private void OnPlayersSpawning(RulePlayerSpawningEvent ev) for (var i = 0; i < numNukies; i++) { // TODO: Please fix this if you touch it. - ICommonSession nukeOp; + IPlayerSession nukeOp; // Only one commander, so we do it at the start if (i == 0) { @@ -908,7 +908,7 @@ private void SetupOperativeEntity(EntityUid mob, string name, string gear, Human _npcFaction.AddFaction(mob, "Syndicate"); } - private void SpawnOperatives(int spawnCount, List sessions, bool addSpawnPoints, NukeopsRuleComponent component) + private void SpawnOperatives(int spawnCount, List sessions, bool addSpawnPoints, NukeopsRuleComponent component) { if (component.NukieOutpost == null) return; @@ -987,10 +987,10 @@ private void SpawnOperativesForGhostRoles(EntityUid uid, NukeopsRuleComponent? c var playersPerOperative = component.PlayersPerOperative; var maxOperatives = component.MaxOps; - var playerPool = _playerManager.Sessions.ToList(); + var playerPool = _playerManager.ServerSessions.ToList(); var numNukies = MathHelper.Clamp(playerPool.Count / playersPerOperative, 1, maxOperatives); - var operatives = new List(); + var operatives = new List(); SpawnOperatives(numNukies, operatives, true, component); } diff --git a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs index 0785d81d09b7bc..b223161c10e276 100644 --- a/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/PiratesRuleSystem.cs @@ -15,10 +15,10 @@ using Content.Shared.Roles; using Robust.Server.GameObjects; using Robust.Server.Maps; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; -using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -141,7 +141,7 @@ private void OnPlayerSpawningEvent(RulePlayerSpawningEvent ev) (int) Math.Min( Math.Floor((double) ev.PlayerPool.Count / _cfg.GetCVar(CCVars.PiratesPlayersPerOp)), _cfg.GetCVar(CCVars.PiratesMaxOps))); - var ops = new ICommonSession[numOps]; + var ops = new IPlayerSession[numOps]; for (var i = 0; i < numOps; i++) { ops[i] = _random.PickAndTake(ev.PlayerPool); diff --git a/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs b/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs index 738883fff38fff..a286808623778a 100644 --- a/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs @@ -6,7 +6,6 @@ using Content.Shared.Interaction.Events; using Content.Shared.Mind; using Content.Shared.Mobs; -using Content.Shared.Players; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Network; diff --git a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs index ef949d09fc98d5..01317dbfc11b24 100644 --- a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs @@ -17,8 +17,9 @@ using Content.Shared.Preferences; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; +using Robust.Server.Player; using Robust.Shared.Configuration; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -150,9 +151,9 @@ private void OnPlayersSpawned(RulePlayerJobsAssignedEvent ev) } } - private List FindPotentialTraitors(in Dictionary candidates, TraitorRuleComponent component) + private List FindPotentialTraitors(in Dictionary candidates, TraitorRuleComponent component) { - var list = new List(); + var list = new List(); var pendingQuery = GetEntityQuery(); foreach (var player in candidates.Keys) @@ -170,7 +171,7 @@ private List FindPotentialTraitors(in Dictionary(); + var prefList = new List(); foreach (var player in list) { @@ -188,9 +189,9 @@ private List FindPotentialTraitors(in Dictionary PickTraitors(int traitorCount, List prefList) + private List PickTraitors(int traitorCount, List prefList) { - var results = new List(traitorCount); + var results = new List(traitorCount); if (prefList.Count == 0) { Log.Info("Insufficient ready players to fill up with traitors, stopping the selection."); diff --git a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs index a4febc385c1dae..82ae4b8fa660e4 100644 --- a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs @@ -23,7 +23,7 @@ using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Configuration; -using Robust.Shared.Player; +using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -264,9 +264,9 @@ private void InfectInitialPlayers(ZombieRuleComponent component) return; component.InfectedChosen = true; - var allPlayers = _playerManager.Sessions.ToList(); - var playerList = new List(); - var prefList = new List(); + var allPlayers = _playerManager.ServerSessions.ToList(); + var playerList = new List(); + var prefList = new List(); foreach (var player in allPlayers) { if (player.AttachedEntity == null || !HasComp(player.AttachedEntity) || HasComp(player.AttachedEntity)) @@ -288,7 +288,7 @@ private void InfectInitialPlayers(ZombieRuleComponent component) var totalInfected = 0; while (totalInfected < numInfected) { - ICommonSession zombie; + IPlayerSession zombie; if (prefList.Count == 0) { if (playerList.Count == 0) diff --git a/Content.Server/Ghost/Ghost.cs b/Content.Server/Ghost/Ghost.cs index 1453bf3faa9108..d04b1197afa95c 100644 --- a/Content.Server/Ghost/Ghost.cs +++ b/Content.Server/Ghost/Ghost.cs @@ -1,6 +1,7 @@ using Content.Server.GameTicking; using Content.Shared.Administration; using Content.Shared.Mind; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Ghost @@ -16,7 +17,7 @@ public sealed class Ghost : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("You have no session, you can't ghost."); diff --git a/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs b/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs index 16d46871fede9a..c97e3be9dc4372 100644 --- a/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs +++ b/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.Ghost.Roles.Components; diff --git a/Content.Server/Ghost/Roles/GhostRoleSystem.cs b/Content.Server/Ghost/Roles/GhostRoleSystem.cs index f372cb4f62a171..5a4cc176f2a549 100644 --- a/Content.Server/Ghost/Roles/GhostRoleSystem.cs +++ b/Content.Server/Ghost/Roles/GhostRoleSystem.cs @@ -4,6 +4,7 @@ using Content.Server.Ghost.Roles.Events; using Content.Server.Ghost.Roles.UI; using Content.Server.Mind.Commands; +using Content.Server.Players; using Content.Shared.Administration; using Content.Shared.Database; using Content.Shared.Follower; @@ -13,14 +14,13 @@ using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Mobs; -using Content.Shared.Players; using Content.Shared.Roles; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -97,7 +97,7 @@ private uint GetNextRoleIdentifier() return unchecked(_nextRoleIdentifier++); } - public void OpenEui(ICommonSession session) + public void OpenEui(IPlayerSession session) { if (session.AttachedEntity is not {Valid: true} attached || !EntityManager.HasComponent(attached)) @@ -111,7 +111,7 @@ public void OpenEui(ICommonSession session) eui.StateDirty(); } - public void OpenMakeGhostRoleEui(ICommonSession session, EntityUid uid) + public void OpenMakeGhostRoleEui(IPlayerSession session, EntityUid uid) { if (session.AttachedEntity == null) return; @@ -420,7 +420,7 @@ public sealed class GhostRoles : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { if(shell.Player != null) - EntitySystem.Get().OpenEui(shell.Player); + EntitySystem.Get().OpenEui((IPlayerSession)shell.Player); else shell.WriteLine("You can only open the ghost roles UI on a client."); } diff --git a/Content.Server/Gravity/GravityGeneratorSystem.cs b/Content.Server/Gravity/GravityGeneratorSystem.cs index 0bd159f61afa8a..48002fb823de6c 100644 --- a/Content.Server/Gravity/GravityGeneratorSystem.cs +++ b/Content.Server/Gravity/GravityGeneratorSystem.cs @@ -6,7 +6,7 @@ using Content.Shared.Gravity; using Content.Shared.Interaction; using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.Gravity { @@ -139,7 +139,7 @@ private void SetSwitchedOn(EntityUid uid, GravityGeneratorComponent component, b return; if (session is { AttachedEntity: { } }) - _adminLogger.Add(LogType.Action, on ? LogImpact.Medium : LogImpact.High, $"{session:player} set ${ToPrettyString(uid):target} to {(on ? "on" : "off")}"); + _adminLogger.Add(LogType.Action, on ? LogImpact.Medium : LogImpact.High, $"{ToPrettyString(session.AttachedEntity.Value):player} set ${ToPrettyString(uid):target} to {(on ? "on" : "off")}"); component.SwitchedOn = on; UpdatePowerState(component, powerReceiver); diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index e3e66995373101..b5b01ac001de4e 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -18,11 +18,12 @@ using Content.Shared.Stacks; using Content.Shared.Storage; using Content.Shared.Throwing; +using Robust.Server.Player; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Utility; namespace Content.Server.Hands.Systems @@ -158,9 +159,9 @@ private void HandlePullStopped(EntityUid uid, HandsComponent component, PullStop #endregion #region interactions - private bool HandleThrowItem(ICommonSession? playerSession, EntityCoordinates coordinates, EntityUid entity) + private bool HandleThrowItem(ICommonSession? session, EntityCoordinates coordinates, EntityUid entity) { - if (playerSession == null) + if (session is not IPlayerSession playerSession) return false; if (playerSession.AttachedEntity is not {Valid: true} player || @@ -219,7 +220,7 @@ private void HandleSmartEquipBelt(ICommonSession? session) // TODO: move to storage or inventory private void HandleSmartEquip(ICommonSession? session, string equipmentSlot) { - if (session is not { } playerSession) + if (session is not IPlayerSession playerSession) return; if (playerSession.AttachedEntity is not {Valid: true} plyEnt || !Exists(plyEnt)) diff --git a/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.Modifier.cs b/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.Modifier.cs index b47fe717140836..7c0bb7383b9c68 100644 --- a/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.Modifier.cs +++ b/Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.Modifier.cs @@ -3,6 +3,7 @@ using Content.Shared.Humanoid; using Content.Shared.Verbs; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Utility; namespace Content.Server.Humanoid; @@ -47,7 +48,7 @@ private void OnVerbsRequest(EntityUid uid, HumanoidAppearanceComponent component private void OnBaseLayersSet(EntityUid uid, HumanoidAppearanceComponent component, HumanoidMarkingModifierBaseLayersSetMessage message) { - if (message.Session is not { } player + if (message.Session is not IPlayerSession player || !_adminManager.HasAdminFlag(player, AdminFlags.Fun)) { return; @@ -80,7 +81,7 @@ private void OnBaseLayersSet(EntityUid uid, HumanoidAppearanceComponent componen private void OnMarkingsSet(EntityUid uid, HumanoidAppearanceComponent component, HumanoidMarkingModifierMarkingSetMessage message) { - if (message.Session is not { } player + if (message.Session is not IPlayerSession player || !_adminManager.HasAdminFlag(player, AdminFlags.Fun)) { return; diff --git a/Content.Server/Instruments/InstrumentComponent.cs b/Content.Server/Instruments/InstrumentComponent.cs index 4302ab6791b1ba..810d2653146621 100644 --- a/Content.Server/Instruments/InstrumentComponent.cs +++ b/Content.Server/Instruments/InstrumentComponent.cs @@ -1,7 +1,7 @@ using Content.Server.UserInterface; using Content.Shared.Instruments; using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Instruments; @@ -17,7 +17,7 @@ public sealed partial class InstrumentComponent : SharedInstrumentComponent [ViewVariables] public uint LastSequencerTick = 0; // TODO Instruments: Make this ECS - public ICommonSession? InstrumentPlayer => + public IPlayerSession? InstrumentPlayer => _entMan.GetComponentOrNull(Owner)?.CurrentSingleUser ?? _entMan.GetComponentOrNull(Owner)?.PlayerSession; } diff --git a/Content.Server/Instruments/InstrumentSystem.cs b/Content.Server/Instruments/InstrumentSystem.cs index 6f8369182cbb84..ec233821051b8d 100644 --- a/Content.Server/Instruments/InstrumentSystem.cs +++ b/Content.Server/Instruments/InstrumentSystem.cs @@ -9,12 +9,12 @@ using Content.Shared.Popups; using JetBrains.Annotations; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Audio.Midi; using Robust.Shared.Collections; using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.GameStates; -using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Instruments; @@ -385,7 +385,7 @@ public override void Update(float frameTime) var nearby = GetBands(entity); _bui.TrySendUiMessage(entity, request.UiKey, new InstrumentBandResponseBuiMessage(nearby), - request.Session); + (IPlayerSession)request.Session); } _bandRequestQueue.Clear(); @@ -447,7 +447,7 @@ public override void Update(float frameTime) } } - public void ToggleInstrumentUi(EntityUid uid, ICommonSession session, InstrumentComponent? component = null) + public void ToggleInstrumentUi(EntityUid uid, IPlayerSession session, InstrumentComponent? component = null) { if (!Resolve(uid, ref component)) return; diff --git a/Content.Server/Interaction/InteractionSystem.cs b/Content.Server/Interaction/InteractionSystem.cs index 9237a1f7dd40e4..a612b738400a20 100644 --- a/Content.Server/Interaction/InteractionSystem.cs +++ b/Content.Server/Interaction/InteractionSystem.cs @@ -13,6 +13,7 @@ using Robust.Shared.Containers; using Robust.Shared.Input.Binding; using Robust.Shared.Map; +using Robust.Shared.Players; using Robust.Shared.Random; namespace Content.Server.Interaction diff --git a/Content.Server/Interaction/TilePryCommand.cs b/Content.Server/Interaction/TilePryCommand.cs index fa75b6d9e4777b..4fe3599df97e9e 100644 --- a/Content.Server/Interaction/TilePryCommand.cs +++ b/Content.Server/Interaction/TilePryCommand.cs @@ -1,7 +1,10 @@ using System.Numerics; using Content.Server.Administration; +using Content.Server.Tools.Components; using Content.Shared.Administration; using Content.Shared.Maps; +using Content.Shared.Tools.Components; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; @@ -21,7 +24,7 @@ sealed class TilePryCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player?.AttachedEntity is not {} attached) { return; diff --git a/Content.Server/MagicMirror/MagicMirrorSystem.cs b/Content.Server/MagicMirror/MagicMirrorSystem.cs index a599a2c868a90e..90a0b19b7ddd71 100644 --- a/Content.Server/MagicMirror/MagicMirrorSystem.cs +++ b/Content.Server/MagicMirror/MagicMirrorSystem.cs @@ -5,7 +5,8 @@ using Content.Shared.Humanoid.Markings; using Content.Shared.MagicMirror; using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Robust.Server.Player; +using Robust.Shared.Players; namespace Content.Server.MagicMirror; @@ -146,7 +147,7 @@ private void OnMagicMirrorAddSlot(EntityUid uid, MagicMirrorComponent component, private void UpdateInterface(EntityUid uid, EntityUid playerUid, ICommonSession session, HumanoidAppearanceComponent? humanoid = null) { - if (!Resolve(playerUid, ref humanoid) || session is not { } player) + if (!Resolve(playerUid, ref humanoid) || session is not IPlayerSession player) { return; } diff --git a/Content.Server/Mapping/MappingCommand.cs b/Content.Server/Mapping/MappingCommand.cs index d72a5c4178e61a..e4a4cd8942498f 100644 --- a/Content.Server/Mapping/MappingCommand.cs +++ b/Content.Server/Mapping/MappingCommand.cs @@ -40,7 +40,7 @@ public CompletionResult GetCompletion(IConsoleShell shell, string[] args) public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError(Loc.GetString("cmd-savemap-server")); return; diff --git a/Content.Server/Maps/GridDraggingSystem.cs b/Content.Server/Maps/GridDraggingSystem.cs index 7d7b61955b4e41..90770af1ad229b 100644 --- a/Content.Server/Maps/GridDraggingSystem.cs +++ b/Content.Server/Maps/GridDraggingSystem.cs @@ -1,9 +1,10 @@ using Content.Shared.Maps; using Robust.Server.Console; +using Robust.Server.Player; +using Robust.Shared.Players; using Robust.Shared.Utility; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; namespace Content.Server.Maps; @@ -26,7 +27,7 @@ public override void Initialize() public void Toggle(ICommonSession session) { - if (session is not { } pSession) + if (session is not IPlayerSession pSession) return; DebugTools.Assert(_admin.CanCommand(pSession, CommandName)); @@ -51,7 +52,7 @@ private void OnRequestVelocity(GridDragVelocityRequest ev, EntitySessionEventArg { var grid = GetEntity(ev.Grid); - if (args.SenderSession is not { } playerSession || + if (args.SenderSession is not IPlayerSession playerSession || !_admin.CanCommand(playerSession, CommandName) || !Exists(grid) || Deleted(grid)) @@ -68,7 +69,7 @@ private void OnRequestDrag(GridDragRequestPosition msg, EntitySessionEventArgs a { var grid = GetEntity(msg.Grid); - if (args.SenderSession is not { } playerSession || + if (args.SenderSession is not IPlayerSession playerSession || !_admin.CanCommand(playerSession, CommandName) || !Exists(grid) || Deleted(grid)) diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs index d041f8ee9d7548..4ffa9f558da069 100644 --- a/Content.Server/Medical/DefibrillatorSystem.cs +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -18,7 +18,7 @@ using Content.Shared.Mobs.Systems; using Content.Shared.Timing; using Content.Shared.Toggleable; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Timing; namespace Content.Server.Medical; diff --git a/Content.Server/Mind/Commands/RenameCommand.cs b/Content.Server/Mind/Commands/RenameCommand.cs index 2d65adc5082284..5674da4ffd3405 100644 --- a/Content.Server/Mind/Commands/RenameCommand.cs +++ b/Content.Server/Mind/Commands/RenameCommand.cs @@ -54,7 +54,6 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) { // Mind mind.CharacterName = name; - _entManager.Dirty(mindId, mind); } // Id Cards diff --git a/Content.Server/Mind/MindSystem.cs b/Content.Server/Mind/MindSystem.cs index f23e9b640735dc..373007fd1b5a2b 100644 --- a/Content.Server/Mind/MindSystem.cs +++ b/Content.Server/Mind/MindSystem.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Administration.Logs; using Content.Server.GameTicking; -using Content.Server.Mind.Commands; using Content.Shared.Database; using Content.Shared.Ghost; using Content.Shared.Mind; @@ -11,9 +10,7 @@ using Robust.Server.GameStates; using Robust.Server.Player; using Robust.Shared.Map; -using Robust.Shared.Map.Components; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -49,14 +46,20 @@ private void OnMindShutdown(EntityUid uid, MindComponent mind, ComponentShutdown mind.UserId = null; } - if (mind.OwnedEntity != null && !TerminatingOrDeleted(mind.OwnedEntity.Value)) - TransferTo(uid, null, mind: mind, createGhost: false); + if (!TryComp(mind.OwnedEntity, out MetaDataComponent? meta) || meta.EntityLifeStage >= EntityLifeStage.Terminating) + return; + RaiseLocalEvent(mind.OwnedEntity.Value, new MindRemovedMessage(uid, mind), true); mind.OwnedEntity = null; + mind.OwnedComponent = null; } private void OnMindContainerTerminating(EntityUid uid, MindContainerComponent component, ref EntityTerminatingEvent args) { + // Let's not create ghosts if not in the middle of the round. + if (_gameTicker.RunLevel == GameRunLevel.PreRoundLobby) + return; + if (!TryGetMind(uid, out var mindId, out var mind, component)) return; @@ -73,45 +76,46 @@ private void OnMindContainerTerminating(EntityUid uid, MindContainerComponent co } TransferTo(mindId, null, createGhost: false, mind: mind); - DebugTools.AssertNull(mind.OwnedEntity); - if (!component.GhostOnShutdown || mind.Session == null || _gameTicker.RunLevel == GameRunLevel.PreRoundLobby) - return; + if (component.GhostOnShutdown && mind.Session != null) + { + var xform = Transform(uid); + var gridId = xform.GridUid; + var spawnPosition = Transform(uid).Coordinates; - var xform = Transform(uid); - var gridId = xform.GridUid; - var spawnPosition = Transform(uid).Coordinates; + // Use a regular timer here because the entity has probably been deleted. + Timer.Spawn(0, () => + { + // Make extra sure the round didn't end between spawning the timer and it being executed. + if (_gameTicker.RunLevel == GameRunLevel.PreRoundLobby) + return; - // Use a regular timer here because the entity has probably been deleted. - Timer.Spawn(0, () => - { - // Make extra sure the round didn't end between spawning the timer and it being executed. - if (_gameTicker.RunLevel == GameRunLevel.PreRoundLobby) - return; + // Async this so that we don't throw if the grid we're on is being deleted. + if (!_maps.GridExists(gridId)) + spawnPosition = _gameTicker.GetObserverSpawnPoint(); - // Async this so that we don't throw if the grid we're on is being deleted. - if (!HasComp(gridId)) - spawnPosition = _gameTicker.GetObserverSpawnPoint(); + // TODO refactor observer spawning. + // please. + if (!spawnPosition.IsValid(EntityManager)) + { + // This should be an error, if it didn't cause tests to start erroring when they delete a player. + Log.Warning($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, and no applicable spawn location is available."); + TransferTo(mindId, null, createGhost: false, mind: mind); + return; + } - // TODO refactor observer spawning. - // please. - if (!spawnPosition.IsValid(EntityManager)) - { - // This should be an error, if it didn't cause tests to start erroring when they delete a player. - Log.Warning($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, and no applicable spawn location is available."); - TransferTo(mindId, null, createGhost: false, mind: mind); - return; - } + var ghost = Spawn("MobObserver", spawnPosition); + var ghostComponent = Comp(ghost); + _ghosts.SetCanReturnToBody(ghostComponent, false); - var ghost = Spawn(GameTicker.ObserverPrototypeName, spawnPosition); - var ghostComponent = Comp(ghost); - _ghosts.SetCanReturnToBody(ghostComponent, false); + // Log these to make sure they're not causing the GameTicker round restart bugs... + Log.Debug($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, spawned \"{ToPrettyString(ghost)}\"."); - // Log these to make sure they're not causing the GameTicker round restart bugs... - Log.Debug($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, spawned \"{ToPrettyString(ghost)}\"."); - _metaData.SetEntityName(ghost, mind.CharacterName ?? string.Empty); - TransferTo(mindId, ghost, mind: mind); - }); + var val = mind.CharacterName ?? string.Empty; + _metaData.SetEntityName(ghost, val); + TransferTo(mindId, ghost, mind: mind); + }); + } } public override bool TryGetMind(NetUserId user, [NotNullWhen(true)] out EntityUid? mindId, [NotNullWhen(true)] out MindComponent? mind) @@ -126,18 +130,18 @@ public override bool TryGetMind(NetUserId user, [NotNullWhen(true)] out EntityUi return false; } - public bool TryGetSession(EntityUid? mindId, [NotNullWhen(true)] out ICommonSession? session) + public bool TryGetSession(EntityUid? mindId, [NotNullWhen(true)] out IPlayerSession? session) { session = null; - return TryComp(mindId, out MindComponent? mind) && (session = mind.Session) != null; + return TryComp(mindId, out MindComponent? mind) && (session = (IPlayerSession?) mind.Session) != null; } - public ICommonSession? GetSession(MindComponent mind) + public IPlayerSession? GetSession(MindComponent mind) { - return mind.Session; + return (IPlayerSession?) mind.Session; } - public bool TryGetSession(MindComponent mind, [NotNullWhen(true)] out ICommonSession? session) + public bool TryGetSession(MindComponent mind, [NotNullWhen(true)] out IPlayerSession? session) { return (session = GetSession(mind)) != null; } @@ -175,9 +179,7 @@ public override void Visit(EntityUid mindId, EntityUid entity, MindComponent? mi return; } - if (GetSession(mind) is { } session) - _actor.Attach(entity, session); - + GetSession(mind)?.AttachToEntity(entity); mind.VisitingEntity = entity; // EnsureComp instead of AddComp to deal with deferred deletions. @@ -196,14 +198,13 @@ public override void UnVisit(EntityUid mindId, MindComponent? mind = null) if (mind.VisitingEntity == null) return; - RemoveVisitingEntity(mindId, mind); + RemoveVisitingEntity(mind); if (mind.Session == null || mind.Session.AttachedEntity == mind.VisitingEntity) return; var owned = mind.OwnedEntity; - if (GetSession(mind) is { } session) - _actor.Attach(owned, session); + GetSession(mind)?.AttachToEntity(owned); if (owned.HasValue) { @@ -218,10 +219,11 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC if (mind == null && !Resolve(mindId, ref mind)) return; + base.TransferTo(mindId, entity, ghostCheckOverride, createGhost, mind); + if (entity == mind.OwnedEntity) return; - Dirty(mindId, mind); MindContainerComponent? component = null; var alreadyAttached = false; @@ -245,33 +247,27 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC } else if (createGhost) { - // TODO remove this option. - // Transfer-to-null should just detach a mind. - // If people want to create a ghost, that should be done explicitly via some TransferToGhost() method, not - // not implicitly via optional arguments. - var position = Deleted(mind.OwnedEntity) ? _gameTicker.GetObserverSpawnPoint().ToMap(EntityManager, _transform) : Transform(mind.OwnedEntity.Value).MapPosition; entity = Spawn("MobObserver", position); - component = EnsureComp(entity.Value); var ghostComponent = Comp(entity.Value); _ghosts.SetCanReturnToBody(ghostComponent, false); } + var oldComp = mind.OwnedComponent; var oldEntity = mind.OwnedEntity; - if (TryComp(oldEntity, out MindContainerComponent? oldContainer)) + if (oldComp != null && oldEntity != null) { - oldContainer.Mind = null; - 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)); - Dirty(oldEntity.Value, oldContainer); + if (oldComp.Mind != null) + _pvsOverride.ClearOverride(oldComp.Mind.Value); + oldComp.Mind = null; + RaiseLocalEvent(oldEntity.Value, new MindRemovedMessage(oldEntity.Value, mind), true); } + SetOwnedEntity(mind, entity, component); + // Don't do the full deletion cleanup if we're transferring to our VisitingEntity if (alreadyAttached) { @@ -285,7 +281,7 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC || !TryComp(mind.VisitingEntity!, out GhostComponent? ghostComponent) // visiting entity is not a Ghost || !ghostComponent.CanReturnToBody)) // it is a ghost, but cannot return to body anyway, so it's okay { - RemoveVisitingEntity(mindId, mind); + RemoveVisitingEntity(mind); } // Player is CURRENTLY connected. @@ -293,20 +289,14 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC if (session != null && !alreadyAttached && mind.VisitingEntity == null) { _actor.Attach(entity, session, true); - DebugTools.Assert(session.AttachedEntity == entity, $"Failed to attach entity."); Log.Info($"Session {session.Name} transferred to entity {entity}."); } - if (entity != null) + if (mind.OwnedComponent != null) { - component!.Mind = mindId; - mind.OwnedEntity = entity; - 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)); - Dirty(entity.Value, component); + mind.OwnedComponent.Mind = mindId; + RaiseLocalEvent(mind.OwnedEntity!.Value, new MindAddedMessage(), true); + mind.OriginalOwnedEntity ??= mind.OwnedEntity; } } @@ -323,7 +313,6 @@ public override void SetUserId(EntityUid mindId, NetUserId? userId, MindComponen if (mind.UserId == userId) return; - Dirty(mindId, mind); _pvsOverride.ClearOverride(mindId); if (userId != null && !_players.TryGetPlayerData(userId.Value, out _)) { @@ -374,27 +363,4 @@ public override void SetUserId(EntityUid mindId, NetUserId? userId, MindComponen if (_players.GetPlayerData(userId.Value).ContentData() is { } data) data.Mind = mindId; } - - public void ControlMob(EntityUid user, EntityUid target) - { - if (TryComp(user, out ActorComponent? actor)) - ControlMob(actor.PlayerSession.UserId, target); - } - - public void ControlMob(NetUserId user, EntityUid target) - { - var (mindId, mind) = GetOrCreateMind(user); - - if (mind.CurrentEntity == target) - return; - - if (mind.OwnedEntity == target) - { - UnVisit(mindId, mind); - return; - } - - MakeSentientCommand.MakeSentient(target, EntityManager); - TransferTo(mindId, target, ghostCheckOverride: true, mind: mind); - } } diff --git a/Content.Server/Mind/Toolshed/MindCommand.cs b/Content.Server/Mind/Toolshed/MindCommand.cs index 917e6fb7f1ad66..b53f9a6a9cd62e 100644 --- a/Content.Server/Mind/Toolshed/MindCommand.cs +++ b/Content.Server/Mind/Toolshed/MindCommand.cs @@ -1,5 +1,5 @@ using Content.Shared.Mind; -using Robust.Shared.Player; +using Robust.Server.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; using Robust.Shared.Toolshed.Syntax; @@ -15,7 +15,7 @@ public sealed class MindCommand : ToolshedCommand private SharedMindSystem? _mind; [CommandImplementation("get")] - public MindComponent? Get([PipedArgument] ICommonSession session) + public MindComponent? Get([PipedArgument] IPlayerSession session) { _mind ??= GetSys(); return _mind.TryGetMind(session, out _, out var mind) ? mind : null; @@ -32,7 +32,7 @@ public sealed class MindCommand : ToolshedCommand public EntityUid Control( [CommandInvocationContext] IInvocationContext ctx, [PipedArgument] EntityUid target, - [CommandArgument] ValueRef playerRef) + [CommandArgument] ValueRef playerRef) { _mind ??= GetSys(); diff --git a/Content.Server/Motd/MOTDCommand.cs b/Content.Server/Motd/MOTDCommand.cs index 9e59589b95bd03..a1aa4d2df593a2 100644 --- a/Content.Server/Motd/MOTDCommand.cs +++ b/Content.Server/Motd/MOTDCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Administration.Managers; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Motd; @@ -13,10 +14,10 @@ internal sealed class MOTDCommand : LocalizedCommands [Dependency] private readonly IAdminManager _adminManager = default!; public override string Command => "motd"; - + public override void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = (IPlayerSession?)shell.Player; if (args.Length < 1 || (player != null && _adminManager is AdminManager aMan && !aMan.CanCommand(player, "set-motd"))) shell.ConsoleHost.ExecuteCommand(shell.Player, "get-motd"); else @@ -25,7 +26,7 @@ public override void Execute(IConsoleShell shell, string argStr, string[] args) public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) { - var player = shell.Player; + var player = (IPlayerSession?)shell.Player; if (player != null && _adminManager is AdminManager aMan && !aMan.CanCommand(player, "set-motd")) return CompletionResult.Empty; if (args.Length == 1) diff --git a/Content.Server/Motd/MOTDSystem.cs b/Content.Server/Motd/MOTDSystem.cs index 39d780f108c50f..e749fe48f308c9 100644 --- a/Content.Server/Motd/MOTDSystem.cs +++ b/Content.Server/Motd/MOTDSystem.cs @@ -2,9 +2,9 @@ using Content.Server.GameTicking; using Content.Shared.CCVar; using Content.Shared.Chat; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Configuration; -using Robust.Shared.Player; namespace Content.Server.Motd; @@ -41,7 +41,7 @@ public void TrySendMOTD() { if (string.IsNullOrEmpty(_messageOfTheDay)) return; - + var wrappedMessage = Loc.GetString("motd-wrap-message", ("motd", _messageOfTheDay)); _chatManager.ChatMessageToAll(ChatChannel.Server, _messageOfTheDay, wrappedMessage, source: EntityUid.Invalid, hideChat: false, recordReplay: true); } @@ -49,11 +49,11 @@ public void TrySendMOTD() /// /// Sends the Message Of The Day, if any, to a specific player. /// - public void TrySendMOTD(ICommonSession player) + public void TrySendMOTD(IPlayerSession player) { if (string.IsNullOrEmpty(_messageOfTheDay)) return; - + var wrappedMessage = Loc.GetString("motd-wrap-message", ("motd", _messageOfTheDay)); _chatManager.ChatMessageToOne(ChatChannel.Server, _messageOfTheDay, wrappedMessage, source: EntityUid.Invalid, hideChat: false, client: player.ConnectedClient); } @@ -68,10 +68,10 @@ public void TrySendMOTD(IConsoleShell shell) { if (string.IsNullOrEmpty(_messageOfTheDay)) return; - + var wrappedMessage = Loc.GetString("motd-wrap-message", ("motd", _messageOfTheDay)); shell.WriteLine(wrappedMessage); - if (shell.Player is { } player) + if (shell.Player is IPlayerSession player) _chatManager.ChatMessageToOne(ChatChannel.Server, _messageOfTheDay, wrappedMessage, source: EntityUid.Invalid, hideChat: false, client: player.ConnectedClient); } @@ -92,7 +92,7 @@ private void OnMOTDChanged(string val) { if (val == _messageOfTheDay) return; - + _messageOfTheDay = val; TrySendMOTD(); } diff --git a/Content.Server/Motd/SetMOTDCommand.cs b/Content.Server/Motd/SetMOTDCommand.cs index 9678781c87a5fc..f3f52b067029ac 100644 --- a/Content.Server/Motd/SetMOTDCommand.cs +++ b/Content.Server/Motd/SetMOTDCommand.cs @@ -4,6 +4,7 @@ using Content.Shared.Database; using Content.Shared.CCVar; using Content.Server.Chat.Managers; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; @@ -20,18 +21,18 @@ public sealed class SetMotdCommand : LocalizedCommands [Dependency] private readonly IConfigurationManager _configurationManager = default!; public override string Command => "set-motd"; - + public override void Execute(IConsoleShell shell, string argStr, string[] args) { string motd = ""; - var player = shell.Player; + var player = (IPlayerSession?)shell.Player; if (args.Length > 0) { motd = string.Join(" ", args).Trim(); if (player != null && _chatManager.MessageCharacterLimit(player, motd)) return; // check function prints its own error response } - + _configurationManager.SetCVar(CCVars.MOTD, motd); // A hook in MOTDSystem broadcasts changes to the MOTD to everyone so we don't need to do it here. if (string.IsNullOrEmpty(motd)) { diff --git a/Content.Server/Movement/Systems/LagCompensationSystem.cs b/Content.Server/Movement/Systems/LagCompensationSystem.cs index 0576fe8f2553c8..64965c2fee7996 100644 --- a/Content.Server/Movement/Systems/LagCompensationSystem.cs +++ b/Content.Server/Movement/Systems/LagCompensationSystem.cs @@ -1,7 +1,7 @@ using Content.Server.Movement.Components; using Robust.Server.Player; using Robust.Shared.Map; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Timing; namespace Content.Server.Movement.Systems; diff --git a/Content.Server/NPC/Commands/NPCCommand.cs b/Content.Server/NPC/Commands/NPCCommand.cs index 7f9e56b8cac29e..57fe223b66963f 100644 --- a/Content.Server/NPC/Commands/NPCCommand.cs +++ b/Content.Server/NPC/Commands/NPCCommand.cs @@ -2,6 +2,7 @@ using Content.Server.EUI; using Content.Server.NPC.UI; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.NPC.Commands; @@ -14,7 +15,7 @@ public sealed class NPCCommand : IConsoleCommand public string Help => $"{Command}"; public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } playerSession) + if (shell.Player is not IPlayerSession playerSession) { return; } diff --git a/Content.Server/NPC/HTN/HTNSystem.cs b/Content.Server/NPC/HTN/HTNSystem.cs index a7689fbabed07c..2c1dadb12797e9 100644 --- a/Content.Server/NPC/HTN/HTNSystem.cs +++ b/Content.Server/NPC/HTN/HTNSystem.cs @@ -4,14 +4,17 @@ using Content.Server.Administration.Managers; using Robust.Shared.CPUJob.JobQueues; using Robust.Shared.CPUJob.JobQueues.Queues; +using Content.Server.NPC.Components; using Content.Server.NPC.HTN.PrimitiveTasks; using Content.Server.NPC.Systems; using Content.Shared.Administration; using Content.Shared.Mobs; using Content.Shared.NPC; +using Content.Shared.NPC; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Robust.Server.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -45,7 +48,7 @@ public override void Initialize() private void OnHTNMessage(RequestHTNMessage msg, EntitySessionEventArgs args) { - if (!_admin.HasAdminFlag(args.SenderSession, AdminFlags.Debug)) + if (!_admin.HasAdminFlag((IPlayerSession) args.SenderSession, AdminFlags.Debug)) { _subscribers.Remove(args.SenderSession); return; diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs index 1b1f6f54761f4a..bb0eff7b39116c 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs @@ -13,7 +13,7 @@ using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Random; using Robust.Shared.Threading; using Robust.Shared.Timing; @@ -528,7 +528,7 @@ private void SendDebug(PathRequest request) private void OnBreadcrumbs(RequestPathfindingDebugMessage msg, EntitySessionEventArgs args) { - var pSession = args.SenderSession; + var pSession = (IPlayerSession) args.SenderSession; if (!_adminManager.HasAdminFlag(pSession, AdminFlags.Debug)) { diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.cs index e5b62acfe80cb8..61b43df6f0023f 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.cs @@ -17,12 +17,14 @@ using Content.Shared.NPC.Events; using Content.Shared.Physics; using Content.Shared.Weapons.Melee; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Random; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -145,7 +147,7 @@ public override void Shutdown() private void OnDebugRequest(RequestNPCSteeringDebugEvent msg, EntitySessionEventArgs args) { - if (!_admin.IsAdmin(args.SenderSession)) + if (!_admin.IsAdmin((IPlayerSession)args.SenderSession)) return; if (msg.Enabled) diff --git a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs index 9ee9702c5bfc25..e4bd303150b8f4 100644 --- a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs +++ b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs @@ -9,7 +9,6 @@ using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Map; -using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.NodeContainer.EntitySystems @@ -30,7 +29,7 @@ public sealed class NodeGroupSystem : EntitySystem private readonly List _visDeletes = new(); private readonly List _visSends = new(); - private readonly HashSet _visPlayers = new(); + private readonly HashSet _visPlayers = new(); private readonly HashSet _toRemake = new(); private readonly HashSet _nodeGroups = new(); private readonly HashSet _toRemove = new(); @@ -75,7 +74,7 @@ public override void Shutdown() private void HandleEnableMsg(NodeVis.MsgEnable msg, EntitySessionEventArgs args) { - var session = args.SenderSession; + var session = (IPlayerSession) args.SenderSession; if (!_adminManager.HasAdminFlag(session, AdminFlags.Debug)) return; @@ -398,7 +397,7 @@ private void VisDoUpdate(float frametime) } } - private void VisSendFullStateImmediate(ICommonSession player) + private void VisSendFullStateImmediate(IPlayerSession player) { var msg = new NodeVis.MsgData(); diff --git a/Content.Server/Nutrition/Hungry.cs b/Content.Server/Nutrition/Hungry.cs index ae68dcd2fdadb0..c27f302a8d1f3a 100644 --- a/Content.Server/Nutrition/Hungry.cs +++ b/Content.Server/Nutrition/Hungry.cs @@ -1,7 +1,9 @@ using Content.Server.Administration; +using Content.Server.Nutrition.Components; using Content.Shared.Administration; using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Nutrition @@ -17,7 +19,7 @@ public sealed class Hungry : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("You cannot use this command unless you are a player."); diff --git a/Content.Server/Objectives/Commands/ListObjectivesCommand.cs b/Content.Server/Objectives/Commands/ListObjectivesCommand.cs index 97fc943269a449..93dec3fa44d97b 100644 --- a/Content.Server/Objectives/Commands/ListObjectivesCommand.cs +++ b/Content.Server/Objectives/Commands/ListObjectivesCommand.cs @@ -18,7 +18,7 @@ public sealed class ListObjectivesCommand : LocalizedCommands public override void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player; + var player = shell.Player as IPlayerSession; if (player == null || !_players.TryGetSessionByUsername(args[0], out player)) { shell.WriteError(LocalizationManager.GetString("shell-target-player-does-not-exist")); diff --git a/Content.Server/PDA/PdaSystem.cs b/Content.Server/PDA/PdaSystem.cs index 44e26598412a7e..6c506dc3dd2990 100644 --- a/Content.Server/PDA/PdaSystem.cs +++ b/Content.Server/PDA/PdaSystem.cs @@ -4,6 +4,9 @@ using Content.Server.Instruments; using Content.Server.Light.EntitySystems; using Content.Server.Light.Events; +using Content.Server.MassMedia.Components; +using Content.Server.MassMedia.Systems; +using Content.Server.Mind; using Content.Server.PDA.Ringer; using Content.Server.Station.Systems; using Content.Server.Store.Components; @@ -13,6 +16,7 @@ using Content.Shared.Light.Components; using Content.Shared.PDA; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Containers; namespace Content.Server.PDA @@ -176,7 +180,7 @@ private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowRingtoneMessage return; if (HasComp(uid)) - _ringer.ToggleRingerUI(uid, msg.Session); + _ringer.ToggleRingerUI(uid, (IPlayerSession) msg.Session); } private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowMusicMessage msg) @@ -185,7 +189,7 @@ private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowMusicMessage ms return; if (TryComp(uid, out var instrument)) - _instrument.ToggleInstrumentUi(uid, msg.Session, instrument); + _instrument.ToggleInstrumentUi(uid, (IPlayerSession) msg.Session, instrument); } private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowUplinkMessage msg) diff --git a/Content.Server/PDA/Ringer/RingerSystem.cs b/Content.Server/PDA/Ringer/RingerSystem.cs index 7494d5e12ceffb..a772e76bc45367 100644 --- a/Content.Server/PDA/Ringer/RingerSystem.cs +++ b/Content.Server/PDA/Ringer/RingerSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Popups; using Content.Shared.Store; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Network; using Robust.Shared.Player; @@ -181,7 +182,7 @@ private void UpdateRingerUserInterface(EntityUid uid, RingerComponent ringer, bo _ui.SetUiState(bui, new RingerUpdateState(isPlaying, ringer.Ringtone)); } - public bool ToggleRingerUI(EntityUid uid, ICommonSession session) + public bool ToggleRingerUI(EntityUid uid, IPlayerSession session) { if (_ui.TryGetUi(uid, RingerUiKey.Key, out var bui)) _ui.ToggleUi(bui, session); diff --git a/Content.Server/Paper/PaperSystem.cs b/Content.Server/Paper/PaperSystem.cs index 553bcaa0a21754..f38013e14d11db 100644 --- a/Content.Server/Paper/PaperSystem.cs +++ b/Content.Server/Paper/PaperSystem.cs @@ -4,11 +4,15 @@ using Content.Server.UserInterface; using Content.Shared.Database; using Content.Shared.Examine; +using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Paper; using Content.Shared.Tag; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Player; +using Robust.Shared.Utility; +using Robust.Shared.Audio; using static Content.Shared.Paper.SharedPaperComponent; namespace Content.Server.Paper @@ -203,7 +207,7 @@ public void SetContent(EntityUid uid, string content, PaperComponent? paperComp _appearance.SetData(uid, PaperVisuals.Status, status, appearance); } - public void UpdateUserInterface(EntityUid uid, PaperComponent? paperComp = null, ICommonSession? session = null) + public void UpdateUserInterface(EntityUid uid, PaperComponent? paperComp = null, IPlayerSession? session = null) { if (!Resolve(uid, ref paperComp)) return; diff --git a/Content.Server/Parallax/BiomeSystem.cs b/Content.Server/Parallax/BiomeSystem.cs index c9017ac821e191..a9d78afa865e20 100644 --- a/Content.Server/Parallax/BiomeSystem.cs +++ b/Content.Server/Parallax/BiomeSystem.cs @@ -282,8 +282,9 @@ public override void Update(float frameTime) } // Get chunks in range - foreach (var pSession in Filter.GetAllPlayers(_playerManager)) + foreach (var client in Filter.GetAllPlayers(_playerManager)) { + var pSession = (IPlayerSession) client; if (xformQuery.TryGetComponent(pSession.AttachedEntity, out var xform) && _handledEntities.Add(pSession.AttachedEntity.Value) && diff --git a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.ControlBox.cs b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.ControlBox.cs index f200c991d7f132..20ed27696706dc 100644 --- a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.ControlBox.cs +++ b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.ControlBox.cs @@ -2,10 +2,11 @@ using Content.Server.Power.Components; using Content.Shared.Database; using Content.Shared.Singularity.Components; +using Robust.Server.Player; +using Robust.Server.GameObjects; using Robust.Shared.Utility; using System.Diagnostics; using Content.Shared.CCVar; -using Robust.Shared.Player; namespace Content.Server.ParticleAccelerator.EntitySystems; @@ -59,7 +60,7 @@ public void Fire(EntityUid uid, TimeSpan curTime, ParticleAcceleratorControlBoxC FireEmitter(comp.StarboardEmitter!.Value, strength); } - public void SwitchOn(EntityUid uid, ICommonSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) + public void SwitchOn(EntityUid uid, IPlayerSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) { if (!Resolve(uid, ref comp)) return; @@ -82,7 +83,7 @@ public void SwitchOn(EntityUid uid, ICommonSession? user = null, ParticleAcceler UpdateUI(uid, comp); } - public void SwitchOff(EntityUid uid, ICommonSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) + public void SwitchOff(EntityUid uid, IPlayerSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) { if (!Resolve(uid, ref comp)) return; @@ -130,7 +131,7 @@ public void PowerOff(EntityUid uid, ParticleAcceleratorControlBoxComponent? comp UpdateUI(uid, comp); } - public void SetStrength(EntityUid uid, ParticleAcceleratorPowerState strength, ICommonSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) + public void SetStrength(EntityUid uid, ParticleAcceleratorPowerState strength, IPlayerSession? user = null, ParticleAcceleratorControlBoxComponent? comp = null) { if (!Resolve(uid, ref comp)) return; @@ -346,10 +347,10 @@ private void OnUISetEnableMessage(EntityUid uid, ParticleAcceleratorControlBoxCo if (msg.Enabled) { if (comp.Assembled) - SwitchOn(uid, msg.Session, comp); + SwitchOn(uid, (IPlayerSession?) msg.Session, comp); } else - SwitchOff(uid, msg.Session, comp); + SwitchOff(uid, (IPlayerSession?) msg.Session, comp); UpdateUI(uid, comp); } @@ -363,7 +364,7 @@ private void OnUISetPowerMessage(EntityUid uid, ParticleAcceleratorControlBoxCom if (TryComp(uid, out var apcPower) && !apcPower.Powered) return; - SetStrength(uid, msg.State, msg.Session, comp); + SetStrength(uid, msg.State, (IPlayerSession?) msg.Session, comp); UpdateUI(uid, comp); } @@ -377,7 +378,7 @@ private void OnUIRescanMessage(EntityUid uid, ParticleAcceleratorControlBoxCompo if (TryComp(uid, out var apcPower) && !apcPower.Powered) return; - RescanParts(uid, msg.Session, comp); + RescanParts(uid, (IPlayerSession?) msg.Session, comp); UpdateUI(uid, comp); } diff --git a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs index abc68543ff3b84..271d17a0c49beb 100644 --- a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs +++ b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs @@ -2,9 +2,9 @@ using System.Numerics; using Content.Server.ParticleAccelerator.Components; using JetBrains.Annotations; +using Robust.Server.Player; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Events; -using Robust.Shared.Player; namespace Content.Server.ParticleAccelerator.EntitySystems; @@ -18,7 +18,7 @@ private void InitializePartSystem() SubscribeLocalEvent(BodyTypeChanged); } - public void RescanParts(EntityUid uid, ICommonSession? user = null, ParticleAcceleratorControlBoxComponent? controller = null) + public void RescanParts(EntityUid uid, IPlayerSession? user = null, ParticleAcceleratorControlBoxComponent? controller = null) { if (!Resolve(uid, ref controller)) return; diff --git a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs index bcc6f211ed80a4..50c64e718c3e1e 100644 --- a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs +++ b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingManager.cs @@ -5,18 +5,18 @@ using Content.Server.Database; using Content.Shared.CCVar; using Content.Shared.Players.PlayTimeTracking; +using Robust.Server.Player; using Robust.Shared.Asynchronous; using Robust.Shared.Collections; using Robust.Shared.Configuration; using Robust.Shared.Exceptions; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.Shared.Utility; namespace Content.Server.Players.PlayTimeTracking; -public delegate void CalcPlayTimeTrackersCallback(ICommonSession player, HashSet trackers); +public delegate void CalcPlayTimeTrackersCallback(IPlayerSession player, HashSet trackers); /// /// Tracks play time for players, across all roles. @@ -66,7 +66,7 @@ public sealed class PlayTimeTrackingManager private ISawmill _sawmill = default!; // List of players that need some kind of update (refresh timers or resend). - private ValueList _playersDirty; + private ValueList _playersDirty; // DB auto-saving logic. private TimeSpan _saveInterval; @@ -76,7 +76,7 @@ public sealed class PlayTimeTrackingManager // We must block server shutdown on these to avoid losing data. private readonly List _pendingSaveTasks = new(); - private readonly Dictionary _playTimeData = new(); + private readonly Dictionary _playTimeData = new(); public event CalcPlayTimeTrackersCallback? CalcTrackers; @@ -139,7 +139,7 @@ private void UpdateDirtyPlayers() _playersDirty.Clear(); } - private void RefreshSingleTracker(ICommonSession dirty, PlayTimeData data, TimeSpan time) + private void RefreshSingleTracker(IPlayerSession dirty, PlayTimeData data, TimeSpan time) { DebugTools.Assert(data.Initialized); @@ -181,7 +181,7 @@ public void FlushAllTrackers() /// so APIs like return up-to-date info. /// /// - public void FlushTracker(ICommonSession player) + public void FlushTracker(IPlayerSession player) { var time = _timing.RealTime; var data = _playTimeData[player]; @@ -201,7 +201,7 @@ private static void FlushSingleTracker(PlayTimeData data, TimeSpan time) } } - private void SendPlayTimes(ICommonSession pSession) + private void SendPlayTimes(IPlayerSession pSession) { var roles = GetTrackerTimes(pSession); @@ -228,7 +228,7 @@ public async void Save() /// /// Save all modified time trackers for a player to the database. /// - public async void SaveSession(ICommonSession session) + public async void SaveSession(IPlayerSession session) { // This causes all trackers to refresh, ah well. FlushAllTrackers(); @@ -278,7 +278,7 @@ private async Task DoSaveAsync() _sawmill.Debug($"Saved {log.Count} trackers"); } - private async Task DoSaveSessionAsync(ICommonSession session) + private async Task DoSaveSessionAsync(IPlayerSession session) { var log = new List(); @@ -299,7 +299,7 @@ private async Task DoSaveSessionAsync(ICommonSession session) _sawmill.Debug($"Saved {log.Count} trackers for {session.Name}"); } - public async Task LoadData(ICommonSession session, CancellationToken cancel) + public async Task LoadData(IPlayerSession session, CancellationToken cancel) { var data = new PlayTimeData(); _playTimeData.Add(session, data); @@ -318,14 +318,14 @@ public async Task LoadData(ICommonSession session, CancellationToken cancel) QueueSendTimers(session); } - public void ClientDisconnected(ICommonSession session) + public void ClientDisconnected(IPlayerSession session) { SaveSession(session); _playTimeData.Remove(session); } - public void AddTimeToTracker(ICommonSession id, string tracker, TimeSpan time) + public void AddTimeToTracker(IPlayerSession id, string tracker, TimeSpan time) { if (!_playTimeData.TryGetValue(id, out var data) || !data.Initialized) throw new InvalidOperationException("Play time info is not yet loaded for this player!"); @@ -341,17 +341,17 @@ private static void AddTimeToTracker(PlayTimeData data, string tracker, TimeSpan data.DbTrackersDirty.Add(tracker); } - public void AddTimeToOverallPlaytime(ICommonSession id, TimeSpan time) + public void AddTimeToOverallPlaytime(IPlayerSession id, TimeSpan time) { AddTimeToTracker(id, PlayTimeTrackingShared.TrackerOverall, time); } - public TimeSpan GetOverallPlaytime(ICommonSession id) + public TimeSpan GetOverallPlaytime(IPlayerSession id) { return GetPlayTimeForTracker(id, PlayTimeTrackingShared.TrackerOverall); } - public bool TryGetTrackerTimes(ICommonSession id, [NotNullWhen(true)] out Dictionary? time) + public bool TryGetTrackerTimes(IPlayerSession id, [NotNullWhen(true)] out Dictionary? time) { time = null; @@ -364,7 +364,7 @@ public bool TryGetTrackerTimes(ICommonSession id, [NotNullWhen(true)] out Dictio return true; } - public Dictionary GetTrackerTimes(ICommonSession id) + public Dictionary GetTrackerTimes(IPlayerSession id) { if (!_playTimeData.TryGetValue(id, out var data) || !data.Initialized) throw new InvalidOperationException("Play time info is not yet loaded for this player!"); @@ -372,7 +372,7 @@ public Dictionary GetTrackerTimes(ICommonSession id) return data.TrackerTimes; } - public TimeSpan GetPlayTimeForTracker(ICommonSession id, string tracker) + public TimeSpan GetPlayTimeForTracker(IPlayerSession id, string tracker) { if (!_playTimeData.TryGetValue(id, out var data) || !data.Initialized) throw new InvalidOperationException("Play time info is not yet loaded for this player!"); @@ -383,7 +383,7 @@ public TimeSpan GetPlayTimeForTracker(ICommonSession id, string tracker) /// /// Queue for play time trackers to be refreshed on a player, in case the set of active trackers may have changed. /// - public void QueueRefreshTrackers(ICommonSession player) + public void QueueRefreshTrackers(IPlayerSession player) { if (DirtyPlayer(player) is { } data) data.NeedRefreshTackers = true; @@ -392,13 +392,13 @@ public void QueueRefreshTrackers(ICommonSession player) /// /// Queue for play time information to be sent to a client, for showing in UIs etc. /// - public void QueueSendTimers(ICommonSession player) + public void QueueSendTimers(IPlayerSession player) { if (DirtyPlayer(player) is { } data) data.NeedSendTimers = true; } - private PlayTimeData? DirtyPlayer(ICommonSession player) + private PlayTimeData? DirtyPlayer(IPlayerSession player) { if (!_playTimeData.TryGetValue(player, out var data) || !data.Initialized) return null; diff --git a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs index f865b25bacfef4..13d0794dd5ebd1 100644 --- a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs +++ b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs @@ -14,7 +14,6 @@ using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -56,7 +55,7 @@ public override void Shutdown() _tracking.CalcTrackers -= CalcTrackers; } - private void CalcTrackers(ICommonSession player, HashSet trackers) + private void CalcTrackers(IPlayerSession player, HashSet trackers) { if (_afk.IsAfk(player)) return; @@ -68,7 +67,7 @@ private void CalcTrackers(ICommonSession player, HashSet trackers) trackers.UnionWith(GetTimedRoles(player)); } - private bool IsPlayerAlive(ICommonSession session) + private bool IsPlayerAlive(IPlayerSession session) { var attached = session.AttachedEntity; if (attached == null) @@ -94,7 +93,7 @@ public IEnumerable GetTimedRoles(EntityUid mindId) } } - private IEnumerable GetTimedRoles(ICommonSession session) + private IEnumerable GetTimedRoles(IPlayerSession session) { var contentData = _playerManager.GetPlayerData(session.UserId).ContentData(); @@ -157,7 +156,7 @@ private void OnPlayerJoinedLobby(PlayerJoinedLobbyEvent ev) _tracking.QueueSendTimers(ev.PlayerSession); } - public bool IsAllowed(ICommonSession player, string role) + public bool IsAllowed(IPlayerSession player, string role) { if (!_prototypes.TryIndex(role, out var job) || job.Requirements == null || @@ -169,7 +168,7 @@ public bool IsAllowed(ICommonSession player, string role) return JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes); } - public HashSet GetDisallowedJobs(ICommonSession player) + public HashSet GetDisallowedJobs(IPlayerSession player) { var roles = new HashSet(); if (!_cfg.GetCVar(CCVars.GameRoleTimers)) @@ -231,7 +230,7 @@ public void RemoveDisallowedJobs(NetUserId userId, ref List jobs) } } - public void PlayerRolesChanged(ICommonSession player) + public void PlayerRolesChanged(IPlayerSession player) { _tracking.QueueRefreshTrackers(player); } diff --git a/Content.Server/Players/PlayerData.cs b/Content.Server/Players/PlayerData.cs new file mode 100644 index 00000000000000..b0ca6f3c189b42 --- /dev/null +++ b/Content.Server/Players/PlayerData.cs @@ -0,0 +1,30 @@ +using Content.Shared.Players; +using Robust.Server.Player; +using Robust.Shared.Players; + +namespace Content.Server.Players +{ + public static class PlayerDataExt + { + /// + /// Gets the correctly cast instance of content player data from an engine player data storage. + /// + public static PlayerData? ContentData(this IPlayerSession session) + { + return session.Data.ContentData(); + } + + public static PlayerData? ContentData(this ICommonSession session) + { + return ((IPlayerSession) session).ContentData(); + } + + /// + /// Gets the mind that is associated with this player. + /// + public static EntityUid? GetMind(this IPlayerSession session) + { + return session.Data.ContentData()?.Mind; + } + } +} diff --git a/Content.Server/Players/PlayerSystem.cs b/Content.Server/Players/PlayerSystem.cs index c79683c338586f..0c407aa876b0b5 100644 --- a/Content.Server/Players/PlayerSystem.cs +++ b/Content.Server/Players/PlayerSystem.cs @@ -1,11 +1,11 @@ using Content.Shared.Players; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.Players; public sealed class PlayerSystem : SharedPlayerSystem { - public override ContentPlayerData? ContentData(ICommonSession? session) + public override PlayerData? ContentData(ICommonSession? session) { return session?.ContentData(); } diff --git a/Content.Server/Pointing/EntitySystems/PointingSystem.cs b/Content.Server/Pointing/EntitySystems/PointingSystem.cs index 6fcdfcf994b2f6..b253e32e3713f2 100644 --- a/Content.Server/Pointing/EntitySystems/PointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/PointingSystem.cs @@ -20,6 +20,7 @@ using Robust.Shared.Input.Binding; using Robust.Shared.Map; using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Replays; using Robust.Shared.Timing; @@ -169,7 +170,7 @@ public bool TryPoint(ICommonSession? session, EntityCoordinates coords, EntityUi } // Get players that are in range and whose visibility layer matches the arrow's. - bool ViewerPredicate(ICommonSession playerSession) + bool ViewerPredicate(IPlayerSession playerSession) { if (!_minds.TryGetMind(playerSession, out _, out var mind) || mind.CurrentEntity is not { Valid: true } ent || @@ -181,7 +182,7 @@ bool ViewerPredicate(ICommonSession playerSession) } var viewers = Filter.Empty() - .AddWhere(session1 => ViewerPredicate(session1)) + .AddWhere(session1 => ViewerPredicate((IPlayerSession) session1)) .Recipients; string selfMessage; diff --git a/Content.Server/Popups/PopupSystem.cs b/Content.Server/Popups/PopupSystem.cs index 61ccaf4423afe2..483d4f3d3f7a72 100644 --- a/Content.Server/Popups/PopupSystem.cs +++ b/Content.Server/Popups/PopupSystem.cs @@ -4,6 +4,7 @@ using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.Popups { diff --git a/Content.Server/Prayer/PrayerSystem.cs b/Content.Server/Prayer/PrayerSystem.cs index e20291cc0657e9..be6ae80bfda85a 100644 --- a/Content.Server/Prayer/PrayerSystem.cs +++ b/Content.Server/Prayer/PrayerSystem.cs @@ -5,11 +5,12 @@ using Content.Server.Popups; using Content.Shared.Database; using Content.Shared.Popups; +using Robust.Server.Player; +using Robust.Shared.Player; using Content.Shared.Chat; using Content.Shared.Prayer; using Content.Shared.Verbs; using Robust.Server.GameObjects; -using Robust.Shared.Player; namespace Content.Server.Prayer; /// @@ -73,7 +74,7 @@ private void AddPrayVerb(EntityUid uid, PrayableComponent comp, GetVerbsEventThe IPlayerSession that sent the message /// The main message sent to the player via the chatbox /// The popup to notify the player, also prepended to the messageString - public void SendSubtleMessage(ICommonSession target, ICommonSession source, string messageString, string popupMessage) + public void SendSubtleMessage(IPlayerSession target, IPlayerSession source, string messageString, string popupMessage) { if (target.AttachedEntity == null) return; @@ -95,7 +96,7 @@ public void SendSubtleMessage(ICommonSession target, ICommonSession source, stri /// You may be wondering, "Why the admin chat, specifically? Nobody even reads it!" /// Exactly. /// - public void Pray(ICommonSession sender, PrayableComponent comp, string message) + public void Pray(IPlayerSession sender, PrayableComponent comp, string message) { if (sender.AttachedEntity == null) return; diff --git a/Content.Server/Preferences/Managers/IServerPreferencesManager.cs b/Content.Server/Preferences/Managers/IServerPreferencesManager.cs index a36b053717f7ac..8c06e00ab139c1 100644 --- a/Content.Server/Preferences/Managers/IServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/IServerPreferencesManager.cs @@ -2,8 +2,8 @@ using System.Threading; using System.Threading.Tasks; using Content.Shared.Preferences; +using Robust.Server.Player; using Robust.Shared.Network; -using Robust.Shared.Player; namespace Content.Server.Preferences.Managers { @@ -11,12 +11,12 @@ public interface IServerPreferencesManager { void Init(); - Task LoadData(ICommonSession session, CancellationToken cancel); - void OnClientDisconnected(ICommonSession session); + Task LoadData(IPlayerSession session, CancellationToken cancel); + void OnClientDisconnected(IPlayerSession session); bool TryGetCachedPreferences(NetUserId userId, [NotNullWhen(true)] out PlayerPreferences? playerPreferences); PlayerPreferences GetPreferences(NetUserId userId); IEnumerable> GetSelectedProfilesForPlayers(List userIds); - bool HavePreferencesLoaded(ICommonSession session); + bool HavePreferencesLoaded(IPlayerSession session); } } diff --git a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs index a0b5e8ce652e76..ea04d00e828f42 100644 --- a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs @@ -8,9 +8,9 @@ using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; using Content.Shared.Roles; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -167,7 +167,7 @@ private async void HandleDeleteCharacterMessage(MsgDeleteCharacter message) } // Should only be called via UserDbDataManager. - public async Task LoadData(ICommonSession session, CancellationToken cancel) + public async Task LoadData(IPlayerSession session, CancellationToken cancel) { if (!ShouldStorePrefs(session.ConnectedClient.AuthType)) { @@ -207,12 +207,12 @@ async Task LoadPrefs() } } - public void OnClientDisconnected(ICommonSession session) + public void OnClientDisconnected(IPlayerSession session) { _cachedPlayerPrefs.Remove(session.UserId); } - public bool HavePreferencesLoaded(ICommonSession session) + public bool HavePreferencesLoaded(IPlayerSession session) { return _cachedPlayerPrefs.ContainsKey(session.UserId); } diff --git a/Content.Server/Pulling/PullingSystem.cs b/Content.Server/Pulling/PullingSystem.cs index 69bb7c93704ede..f7ea0aae57f7d1 100644 --- a/Content.Server/Pulling/PullingSystem.cs +++ b/Content.Server/Pulling/PullingSystem.cs @@ -4,7 +4,7 @@ using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Input.Binding; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.Pulling { diff --git a/Content.Server/Radiation/Systems/RadiationSystem.Debug.cs b/Content.Server/Radiation/Systems/RadiationSystem.Debug.cs index 56806d8c9c1bb8..97f2e485ca3cfb 100644 --- a/Content.Server/Radiation/Systems/RadiationSystem.Debug.cs +++ b/Content.Server/Radiation/Systems/RadiationSystem.Debug.cs @@ -7,7 +7,7 @@ using Robust.Shared.Console; using Robust.Shared.Enums; using Robust.Shared.Map.Components; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.Radiation.Systems; diff --git a/Content.Server/Research/Systems/ResearchSystem.Client.cs b/Content.Server/Research/Systems/ResearchSystem.Client.cs index 135ef8fe8892e0..e813f09ff9f060 100644 --- a/Content.Server/Research/Systems/ResearchSystem.Client.cs +++ b/Content.Server/Research/Systems/ResearchSystem.Client.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Power.EntitySystems; using Content.Shared.Research.Components; +using Robust.Server.Player; namespace Content.Server.Research.Systems; @@ -45,7 +46,7 @@ private void OnConsoleSelect(EntityUid uid, ResearchClientComponent component, C if (!this.IsPowered(uid, EntityManager)) return; - _uiSystem.TryToggleUi(uid, ResearchClientUiKey.Key, args.Session); + _uiSystem.TryToggleUi(uid, ResearchClientUiKey.Key, (IPlayerSession) args.Session); } #endregion diff --git a/Content.Server/Salvage/SalvageRulerCommand.cs b/Content.Server/Salvage/SalvageRulerCommand.cs index a1fd60974116e3..b0a64508c563cf 100644 --- a/Content.Server/Salvage/SalvageRulerCommand.cs +++ b/Content.Server/Salvage/SalvageRulerCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Administration; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; @@ -25,7 +26,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (shell.Player is not { } player) + if (shell.Player is not IPlayerSession player) { shell.WriteError(Loc.GetString("shell-only-players-can-run-this-command")); return; diff --git a/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs b/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs index cc20b7194691ca..0b9148f0fbbc87 100644 --- a/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs +++ b/Content.Server/Sandbox/Commands/ColorNetworkCommand.cs @@ -4,6 +4,7 @@ using Content.Server.NodeContainer; using Content.Server.NodeContainer.NodeGroups; using Content.Shared.Administration; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Sandbox.Commands @@ -19,7 +20,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) { var sandboxManager = EntitySystem.Get(); var adminManager = IoCManager.Resolve(); - if (shell.IsClient && (!sandboxManager.IsSandboxEnabled && !adminManager.HasAdminFlag(shell.Player!, AdminFlags.Mapping))) + if (shell.IsClient && (!sandboxManager.IsSandboxEnabled && !adminManager.HasAdminFlag((IPlayerSession)shell.Player!, AdminFlags.Mapping))) { shell.WriteError("You are not currently able to use mapping commands."); } diff --git a/Content.Server/Sandbox/SandboxSystem.cs b/Content.Server/Sandbox/SandboxSystem.cs index 194cf5984386f2..ec9b1a0c3c9548 100644 --- a/Content.Server/Sandbox/SandboxSystem.cs +++ b/Content.Server/Sandbox/SandboxSystem.cs @@ -13,7 +13,6 @@ using Robust.Server.Placement; using Robust.Server.Player; using Robust.Shared.Enums; -using Robust.Shared.Player; namespace Content.Server.Sandbox { diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs index 63b4d9daef91b4..cd4f2ea23b9dbf 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs @@ -1,7 +1,7 @@ using Content.Shared.SensorMonitoring; using Robust.Server.Player; using Robust.Shared.Collections; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Server.SensorMonitoring; diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs index 6c0dddeb266958..a09badcd59599f 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs @@ -1,5 +1,7 @@ using Content.Server.DeviceNetwork.Components; using Content.Shared.SensorMonitoring; +using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Collections; using ConsoleUIState = Content.Shared.SensorMonitoring.SensorMonitoringConsoleBoundInterfaceState; using IncrementalUIState = Content.Shared.SensorMonitoring.SensorMonitoringIncrementalUpdate; @@ -128,7 +130,7 @@ private static void ConsoleUIClosed( if (!args.UiKey.Equals(SensorMonitoringConsoleUiKey.Key)) return; - if (args.Session is not { } player) + if (args.Session is not IPlayerSession player) return; component.InitialUIStateSent.Remove(player); diff --git a/Content.Server/ServerUpdates/ServerUpdateManager.cs b/Content.Server/ServerUpdates/ServerUpdateManager.cs index f4e54984e9be0c..769c5d58d7e90c 100644 --- a/Content.Server/ServerUpdates/ServerUpdateManager.cs +++ b/Content.Server/ServerUpdates/ServerUpdateManager.cs @@ -6,7 +6,6 @@ using Robust.Server.ServerStatus; using Robust.Shared.Configuration; using Robust.Shared.Enums; -using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.ServerUpdates; diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index 3ef3d97a21aa6e..1a1debc9e3bd3c 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -20,6 +20,7 @@ using Content.Shared.Tiles; using Robust.Server.GameObjects; using Robust.Server.Maps; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -139,7 +140,7 @@ public override void Shutdown() /// private void OnShuttleRequestPosition(EmergencyShuttleRequestPositionMessage msg, EntitySessionEventArgs args) { - if (!_admin.IsAdmin(args.SenderSession)) + if (!_admin.IsAdmin((IPlayerSession) args.SenderSession)) return; var player = args.SenderSession.AttachedEntity; diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs index c0804202669144..31d826087d5524 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs @@ -229,7 +229,7 @@ private void RemoveProvidedItems(EntityUid chassis, EntityUid uid, BorgChassisCo if (!TryComp(chassis, out var hands)) return; - if (TerminatingOrDeleted(uid)) + if (LifeStage(uid) >= EntityLifeStage.Terminating) { foreach (var (hand, item) in component.ProvidedItems) { diff --git a/Content.Server/Silicons/Borgs/BorgSystem.cs b/Content.Server/Silicons/Borgs/BorgSystem.cs index 883cb3b3d84a87..611dfa6ea2a40b 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.cs @@ -21,7 +21,7 @@ using Content.Shared.Wires; using Robust.Server.GameObjects; using Robust.Shared.Containers; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Random; namespace Content.Server.Silicons.Borgs; diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index 41ddd9651b2f19..1d5c2e35e8b744 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -18,6 +18,7 @@ using Content.Shared.Stunnable; using Content.Shared.Wires; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Prototypes; using Robust.Shared.Toolshed; @@ -93,7 +94,7 @@ private void OnBoundUIOpened(EntityUid uid, SiliconLawBoundComponent component, HashSet? radioChannels = intrinsicRadio?.Channels; var state = new SiliconLawBuiState(GetLaws(uid), radioChannels); - _userInterface.TrySetUiState(args.Entity, SiliconLawsUiKey.Key, state, args.Session); + _userInterface.TrySetUiState(args.Entity, SiliconLawsUiKey.Key, state, (IPlayerSession) args.Session); } private void OnPlayerSpawnComplete(EntityUid uid, SiliconLawBoundComponent component, PlayerSpawnCompleteEvent args) @@ -169,7 +170,7 @@ private void OnEmagMindRemoved(EntityUid uid, EmagSiliconLawComponent component, if (component.AntagonistRole == null) return; - _roles.MindTryRemoveRole(args.Mind); + _roles.MindTryRemoveRole(args.OldMindId); } private void EnsureEmaggedRole(EntityUid uid, EmagSiliconLawComponent component) diff --git a/Content.Server/Station/Systems/StationJobsSystem.cs b/Content.Server/Station/Systems/StationJobsSystem.cs index eeaace03b2cb5c..2709bc2072b1ff 100644 --- a/Content.Server/Station/Systems/StationJobsSystem.cs +++ b/Content.Server/Station/Systems/StationJobsSystem.cs @@ -41,7 +41,7 @@ public override void Update(float _) if (_availableJobsDirty) { _cachedAvailableJobs = GenerateJobsAvailableEvent(); - RaiseNetworkEvent(_cachedAvailableJobs, Filter.Empty().AddPlayers(_playerManager.Sessions)); + RaiseNetworkEvent(_cachedAvailableJobs, Filter.Empty().AddPlayers(_playerManager.ServerSessions)); _availableJobsDirty = false; } } diff --git a/Content.Server/Storage/EntitySystems/StorageSystem.cs b/Content.Server/Storage/EntitySystems/StorageSystem.cs index 8b4ae1c76f9f4f..3430449957e004 100644 --- a/Content.Server/Storage/EntitySystems/StorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/StorageSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.Timing; using Content.Shared.Verbs; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -134,7 +135,7 @@ public override void PlayPickupAnimation(EntityUid uid, EntityCoordinates initia /// If the user has nested-UIs open (e.g., PDA UI open when pda is in a backpack), close them. /// /// - public void CloseNestedInterfaces(EntityUid uid, ICommonSession session, StorageComponent? storageComp = null) + public void CloseNestedInterfaces(EntityUid uid, IPlayerSession session, StorageComponent? storageComp = null) { if (!Resolve(uid, ref storageComp)) return; diff --git a/Content.Server/Tabletop/TabletopSession.cs b/Content.Server/Tabletop/TabletopSession.cs index 5e7c6ac02e610c..d94b4fd6575581 100644 --- a/Content.Server/Tabletop/TabletopSession.cs +++ b/Content.Server/Tabletop/TabletopSession.cs @@ -1,6 +1,6 @@ using System.Numerics; +using Robust.Server.Player; using Robust.Shared.Map; -using Robust.Shared.Player; namespace Content.Server.Tabletop { @@ -17,7 +17,7 @@ public sealed class TabletopSession /// /// The set of players currently playing this tabletop game. /// - public readonly Dictionary Players = new(); + public readonly Dictionary Players = new(); /// /// All entities bound to this session. If you create an entity for this session, you have to add it here. diff --git a/Content.Server/Tabletop/TabletopSystem.Session.cs b/Content.Server/Tabletop/TabletopSystem.Session.cs index 8f1bc7005dc032..e9dea0c66a21f9 100644 --- a/Content.Server/Tabletop/TabletopSystem.Session.cs +++ b/Content.Server/Tabletop/TabletopSystem.Session.cs @@ -1,7 +1,7 @@ using System.Numerics; using Content.Server.Tabletop.Components; using Content.Shared.Tabletop.Events; -using Robust.Shared.Player; +using Robust.Server.Player; using Robust.Shared.Utility; namespace Content.Server.Tabletop @@ -66,7 +66,7 @@ public void CleanupSession(EntityUid uid) /// /// The player session in question. /// The UID of the tabletop game entity. - public void OpenSessionFor(ICommonSession player, EntityUid uid) + public void OpenSessionFor(IPlayerSession player, EntityUid uid) { if (!EntityManager.TryGetComponent(uid, out TabletopGameComponent? tabletop) || player.AttachedEntity is not {Valid: true} attachedEntity) return; @@ -98,7 +98,7 @@ public void OpenSessionFor(ICommonSession player, EntityUid uid) /// The player in question. /// The UID of the tabletop game entity. /// Whether to remove the from the player's attached entity. - public void CloseSessionFor(ICommonSession player, EntityUid uid, bool removeGamerComponent = true) + public void CloseSessionFor(IPlayerSession player, EntityUid uid, bool removeGamerComponent = true) { if (!EntityManager.TryGetComponent(uid, out TabletopGameComponent? tabletop) || tabletop.Session is not { } session) return; @@ -129,7 +129,7 @@ public void CloseSessionFor(ICommonSession player, EntityUid uid, bool removeGam /// The player in question. /// An offset from the tabletop position for the camera. Zero by default. /// The UID of the camera entity. - private EntityUid CreateCamera(TabletopGameComponent tabletop, ICommonSession player, Vector2 offset = default) + private EntityUid CreateCamera(TabletopGameComponent tabletop, IPlayerSession player, Vector2 offset = default) { DebugTools.AssertNotNull(tabletop.Session); diff --git a/Content.Server/Tabletop/TabletopSystem.cs b/Content.Server/Tabletop/TabletopSystem.cs index b81331d62ee2c5..2e271080d07f5c 100644 --- a/Content.Server/Tabletop/TabletopSystem.cs +++ b/Content.Server/Tabletop/TabletopSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Map; using Robust.Shared.Utility; @@ -41,7 +42,7 @@ public override void Initialize() private void OnTabletopRequestTakeOut(TabletopRequestTakeOut msg, EntitySessionEventArgs args) { - if (args.SenderSession is not { } playerSession) + if (args.SenderSession is not IPlayerSession playerSession) return; var table = GetEntity(msg.TableUid); @@ -104,7 +105,7 @@ private void OnInteractUsing(EntityUid uid, TabletopGameComponent component, Int protected override void OnTabletopMove(TabletopMoveEvent msg, EntitySessionEventArgs args) { - if (args.SenderSession is not { } playerSession) + if (args.SenderSession is not IPlayerSession playerSession) return; if (!TryComp(GetEntity(msg.TableUid), out TabletopGameComponent? tabletop) || tabletop.Session is not { } session) @@ -154,7 +155,7 @@ private void OnGameShutdown(EntityUid uid, TabletopGameComponent component, Comp private void OnStopPlaying(TabletopStopPlayingEvent msg, EntitySessionEventArgs args) { - CloseSessionFor(args.SenderSession, GetEntity(msg.TableUid)); + CloseSessionFor((IPlayerSession)args.SenderSession, GetEntity(msg.TableUid)); } private void OnPlayerDetached(EntityUid uid, TabletopGamerComponent component, PlayerDetachedEvent args) diff --git a/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs b/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs index f113e496555cfb..d2b3cc261cd53c 100644 --- a/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs +++ b/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs @@ -1,7 +1,7 @@ using Content.Server.Administration; using Content.Server.Administration.Managers; using Content.Shared.Administration; -using Robust.Shared.Player; +using Robust.Server.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Syntax; @@ -25,7 +25,7 @@ public sealed class ACmdCommand : ToolshedCommand public bool CanInvoke( [CommandInvocationContext] IInvocationContext ctx, [PipedArgument] CommandSpec command, - [CommandArgument] ValueRef player + [CommandArgument] ValueRef player ) { // Deliberately discard the error. diff --git a/Content.Server/Toolshed/Commands/VisualizeCommand.cs b/Content.Server/Toolshed/Commands/VisualizeCommand.cs index 2225bfaf447478..4ef08a91bf015d 100644 --- a/Content.Server/Toolshed/Commands/VisualizeCommand.cs +++ b/Content.Server/Toolshed/Commands/VisualizeCommand.cs @@ -4,6 +4,7 @@ using Content.Shared.Administration; using Content.Shared.Bql; using Content.Shared.Eui; +using Robust.Server.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; @@ -29,7 +30,7 @@ [PipedArgument] IEnumerable input var ui = new ToolshedVisualizeEui( input.Select(e => (EntName(e), EntityManager.GetNetEntity(e))).ToArray() ); - _euiManager.OpenEui(ui, ctx.Session); + _euiManager.OpenEui(ui, (IPlayerSession) ctx.Session); _euiManager.QueueStateUpdate(ui); } } diff --git a/Content.Server/Traitor/Uplink/Commands/AddUplinkCommand.cs b/Content.Server/Traitor/Uplink/Commands/AddUplinkCommand.cs index fd656a9f717417..1feab11b99ad14 100644 --- a/Content.Server/Traitor/Uplink/Commands/AddUplinkCommand.cs +++ b/Content.Server/Traitor/Uplink/Commands/AddUplinkCommand.cs @@ -5,7 +5,6 @@ using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; -using Robust.Shared.Player; namespace Content.Server.Traitor.Uplink.Commands { @@ -37,7 +36,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - ICommonSession? session; + IPlayerSession? session; if (args.Length > 0) { // Get player entity @@ -49,7 +48,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) } else { - session = shell.Player; + session = (IPlayerSession?) shell.Player; } if (session?.AttachedEntity is not { } user) diff --git a/Content.Server/UserInterface/ActivatableUIComponent.cs b/Content.Server/UserInterface/ActivatableUIComponent.cs index 34f9c0f3970c42..bb020608e2042e 100644 --- a/Content.Server/UserInterface/ActivatableUIComponent.cs +++ b/Content.Server/UserInterface/ActivatableUIComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Server.Player; using Robust.Shared.Reflection; using Robust.Shared.Serialization; @@ -65,7 +65,7 @@ public sealed partial class ActivatableUIComponent : Component, /// NOTE: DO NOT DIRECTLY SET, USE ActivatableUISystem.SetCurrentSingleUser /// [ViewVariables] - public ICommonSession? CurrentSingleUser; + public IPlayerSession? CurrentSingleUser; void ISerializationHooks.AfterDeserialization() { diff --git a/Content.Server/UserInterface/ActivatableUISystem.cs b/Content.Server/UserInterface/ActivatableUISystem.cs index adeeed7c19d393..59086415b46ca6 100644 --- a/Content.Server/UserInterface/ActivatableUISystem.cs +++ b/Content.Server/UserInterface/ActivatableUISystem.cs @@ -8,7 +8,7 @@ using Content.Shared.UserInterface; using Content.Shared.Verbs; using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.UserInterface; @@ -173,7 +173,7 @@ private bool InteractUI(EntityUid user, EntityUid uiEntity, ActivatableUICompone return true; } - public void SetCurrentSingleUser(EntityUid uid, ICommonSession? v, ActivatableUIComponent? aui = null) + public void SetCurrentSingleUser(EntityUid uid, IPlayerSession? v, ActivatableUIComponent? aui = null) { if (!Resolve(uid, ref aui)) return; @@ -231,9 +231,9 @@ public UserOpenActivatableUIAttemptEvent(EntityUid who, EntityUid target) public sealed class AfterActivatableUIOpenEvent : EntityEventArgs { public EntityUid User { get; } - public readonly ICommonSession Session; + public readonly IPlayerSession Session; - public AfterActivatableUIOpenEvent(EntityUid who, ICommonSession session) + public AfterActivatableUIOpenEvent(EntityUid who, IPlayerSession session) { User = who; Session = session; diff --git a/Content.Server/UserInterface/StatValuesCommand.cs b/Content.Server/UserInterface/StatValuesCommand.cs index fe2ee380feaebf..b13b5963231365 100644 --- a/Content.Server/UserInterface/StatValuesCommand.cs +++ b/Content.Server/UserInterface/StatValuesCommand.cs @@ -8,6 +8,7 @@ using Content.Shared.Research.Prototypes; using Content.Shared.UserInterface; using Content.Shared.Weapons.Melee; +using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -26,7 +27,7 @@ public sealed class StatValuesCommand : IConsoleCommand public string Help => $"{Command} "; public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not { } pSession) + if (shell.Player is not IPlayerSession pSession) { shell.WriteError(Loc.GetString("stat-values-server")); return; diff --git a/Content.Server/Verbs/VerbSystem.cs b/Content.Server/Verbs/VerbSystem.cs index e304c6b4af0739..6d12b08e865147 100644 --- a/Content.Server/Verbs/VerbSystem.cs +++ b/Content.Server/Verbs/VerbSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Database; using Content.Shared.Hands.Components; using Content.Shared.Verbs; +using Robust.Server.Player; namespace Content.Server.Verbs { @@ -24,7 +25,7 @@ public override void Initialize() private void HandleVerbRequest(RequestServerVerbsEvent args, EntitySessionEventArgs eventArgs) { - var player = eventArgs.SenderSession; + var player = (IPlayerSession) eventArgs.SenderSession; if (!EntityManager.EntityExists(GetEntity(args.EntityUid))) { @@ -42,7 +43,7 @@ private void HandleVerbRequest(RequestServerVerbsEvent args, EntitySessionEventA // this, and some verbs (e.g. view variables) won't even care about whether an entity is accessible through // the entity menu or not. - var force = args.AdminRequest && eventArgs.SenderSession is { } playerSession && + var force = args.AdminRequest && eventArgs.SenderSession is IPlayerSession playerSession && _adminMgr.HasAdminFlag(playerSession, AdminFlags.Admin); List verbTypes = new(); diff --git a/Content.Server/Voting/IVoteHandle.cs b/Content.Server/Voting/IVoteHandle.cs index 869f2017d70304..13f64e6ef8addd 100644 --- a/Content.Server/Voting/IVoteHandle.cs +++ b/Content.Server/Voting/IVoteHandle.cs @@ -1,5 +1,5 @@ using Content.Server.Voting.Managers; -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Voting { @@ -75,7 +75,7 @@ public interface IVoteHandle /// /// is not a valid option ID. /// - void CastVote(ICommonSession session, int? optionId); + void CastVote(IPlayerSession session, int? optionId); /// /// Cancel this vote. diff --git a/Content.Server/Voting/Managers/IVoteManager.cs b/Content.Server/Voting/Managers/IVoteManager.cs index d95fac9ae92120..6a92e70fff7096 100644 --- a/Content.Server/Voting/Managers/IVoteManager.cs +++ b/Content.Server/Voting/Managers/IVoteManager.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; using Content.Shared.Voting; -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Voting.Managers { @@ -41,7 +41,7 @@ public interface IVoteManager /// True if can start votes right now, /// and if provided if they can start votes of type . /// - bool CanCallVote(ICommonSession initiator, StandardVoteType? voteType = null); + bool CanCallVote(IPlayerSession initiator, StandardVoteType? voteType = null); /// /// Initiate a standard vote such as restart round, that can be initiated by players. @@ -51,7 +51,7 @@ public interface IVoteManager /// If null it is assumed to be an automatic vote by the server. /// /// The type of standard vote to make. - void CreateStandardVote(ICommonSession? initiator, StandardVoteType voteType); + void CreateStandardVote(IPlayerSession? initiator, StandardVoteType voteType); /// /// Create a non-standard vote with special parameters. diff --git a/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs b/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs index e1bffa769da5f6..55e88e2a8c77d7 100644 --- a/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs +++ b/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs @@ -6,8 +6,8 @@ using Content.Shared.CCVar; using Content.Shared.Database; using Content.Shared.Voting; +using Robust.Server.Player; using Robust.Shared.Configuration; -using Robust.Shared.Player; using Robust.Shared.Random; namespace Content.Server.Voting.Managers @@ -21,7 +21,7 @@ public sealed partial class VoteManager {StandardVoteType.Map, CCVars.VoteMapEnabled}, }; - public void CreateStandardVote(ICommonSession? initiator, StandardVoteType voteType) + public void CreateStandardVote(IPlayerSession? initiator, StandardVoteType voteType) { if (initiator != null) _adminLogger.Add(LogType.Vote, LogImpact.Medium, $"{initiator} initiated a {voteType.ToString()} vote"); @@ -47,7 +47,7 @@ public void CreateStandardVote(ICommonSession? initiator, StandardVoteType voteT TimeoutStandardVote(voteType); } - private void CreateRestartVote(ICommonSession? initiator) + private void CreateRestartVote(IPlayerSession? initiator) { var alone = _playerManager.PlayerCount == 1 && initiator != null; var options = new VoteOptions @@ -100,7 +100,7 @@ private void CreateRestartVote(ICommonSession? initiator) vote.CastVote(initiator, 0); } - foreach (var player in _playerManager.Sessions) + foreach (var player in _playerManager.ServerSessions) { if (player != initiator) { @@ -110,7 +110,7 @@ private void CreateRestartVote(ICommonSession? initiator) } } - private void CreatePresetVote(ICommonSession? initiator) + private void CreatePresetVote(IPlayerSession? initiator) { var presets = GetGamePresets(); @@ -156,7 +156,7 @@ private void CreatePresetVote(ICommonSession? initiator) }; } - private void CreateMapVote(ICommonSession? initiator) + private void CreateMapVote(IPlayerSession? initiator) { var maps = _gameMapManager.CurrentlyEligibleMaps().ToDictionary(map => map, map => map.MapName); diff --git a/Content.Server/Voting/Managers/VoteManager.cs b/Content.Server/Voting/Managers/VoteManager.cs index 90089afb544d4e..98ad8d8341f452 100644 --- a/Content.Server/Voting/Managers/VoteManager.cs +++ b/Content.Server/Voting/Managers/VoteManager.cs @@ -16,7 +16,6 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -46,7 +45,7 @@ public sealed partial class VoteManager : IVoteManager private readonly Dictionary _standardVoteTimeout = new(); private readonly Dictionary _voteTimeout = new(); - private readonly HashSet _playerCanCallVoteDirty = new(); + private readonly HashSet _playerCanCallVoteDirty = new(); private readonly StandardVoteType[] _standardVoteTypeValues = Enum.GetValues(); public void Initialize() @@ -107,7 +106,7 @@ private void PlayerManagerOnPlayerStatusChanged(object? sender, SessionStatusEve } } - private void CastVote(VoteReg v, ICommonSession player, int? option) + private void CastVote(VoteReg v, IPlayerSession player, int? option) { if (!IsValidOption(v, option)) throw new ArgumentOutOfRangeException(nameof(option), "Invalid vote option ID"); @@ -229,7 +228,7 @@ public IVoteHandle CreateVote(VoteOptions options) private void SendUpdates(VoteReg v) { - foreach (var player in _playerManager.Sessions) + foreach (var player in _playerManager.ServerSessions) { SendSingleUpdate(v, player); } @@ -238,7 +237,7 @@ private void SendUpdates(VoteReg v) v.Dirty = false; } - private void SendSingleUpdate(VoteReg v, ICommonSession player) + private void SendSingleUpdate(VoteReg v, IPlayerSession player) { var msg = new MsgVoteData(); @@ -278,10 +277,10 @@ private void SendSingleUpdate(VoteReg v, ICommonSession player) private void DirtyCanCallVoteAll() { - _playerCanCallVoteDirty.UnionWith(_playerManager.Sessions); + _playerCanCallVoteDirty.UnionWith(_playerManager.ServerSessions); } - private void SendUpdateCanCallVote(ICommonSession player) + private void SendUpdateCanCallVote(IPlayerSession player) { var msg = new MsgVoteCanCall(); msg.CanCall = CanCallVote(player, null, out var isAdmin, out var timeSpan); @@ -307,7 +306,7 @@ private void SendUpdateCanCallVote(ICommonSession player) } private bool CanCallVote( - ICommonSession initiator, + IPlayerSession initiator, StandardVoteType? voteType, out bool isAdmin, out TimeSpan timeSpan) @@ -354,7 +353,7 @@ private bool CanCallVote( return !_voteTimeout.TryGetValue(initiator.UserId, out timeSpan); } - public bool CanCallVote(ICommonSession initiator, StandardVoteType? voteType = null) + public bool CanCallVote(IPlayerSession initiator, StandardVoteType? voteType = null) { return CanCallVote(initiator, voteType, out _, out _); } @@ -407,14 +406,14 @@ public bool TryGetVote(int voteId, [NotNullWhen(true)] out IVoteHandle? vote) return false; } - private void DirtyCanCallVote(ICommonSession player) + private void DirtyCanCallVote(IPlayerSession player) { _playerCanCallVoteDirty.Add(player); } #region Preset Votes - private void WirePresetVoteInitiator(VoteOptions options, ICommonSession? player) + private void WirePresetVoteInitiator(VoteOptions options, IPlayerSession? player) { if (player != null) { @@ -433,13 +432,13 @@ private void WirePresetVoteInitiator(VoteOptions options, ICommonSession? player private sealed class VoteReg { public readonly int Id; - public readonly Dictionary CastVotes = new(); + public readonly Dictionary CastVotes = new(); public readonly VoteEntry[] Entries; public readonly string Title; public readonly string InitiatorText; public readonly TimeSpan StartTime; public readonly TimeSpan EndTime; - public readonly HashSet VotesDirty = new(); + public readonly HashSet VotesDirty = new(); public bool Cancelled; public bool Finished; @@ -447,10 +446,10 @@ private sealed class VoteReg public VoteFinishedEventHandler? OnFinished; public VoteCancelledEventHandler? OnCancelled; - public ICommonSession? Initiator { get; } + public IPlayerSession? Initiator { get; } public VoteReg(int id, VoteEntry[] entries, string title, string initiatorText, - ICommonSession? initiator, TimeSpan start, TimeSpan end) + IPlayerSession? initiator, TimeSpan start, TimeSpan end) { Id = id; Entries = entries; @@ -518,7 +517,7 @@ public bool IsValidOption(int optionId) return _mgr.IsValidOption(_reg, optionId); } - public void CastVote(ICommonSession session, int? optionId) + public void CastVote(IPlayerSession session, int? optionId) { _mgr.CastVote(_reg, session, optionId); } diff --git a/Content.Server/Voting/VoteCommands.cs b/Content.Server/Voting/VoteCommands.cs index 498c9d049417be..cb296a7d589a96 100644 --- a/Content.Server/Voting/VoteCommands.cs +++ b/Content.Server/Voting/VoteCommands.cs @@ -6,6 +6,7 @@ using Content.Shared.Administration; using Content.Shared.Database; using Content.Shared.Voting; +using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Voting @@ -35,14 +36,14 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var mgr = IoCManager.Resolve(); - if (shell.Player != null && !mgr.CanCallVote(shell.Player, type)) + if (shell.Player != null && !mgr.CanCallVote((IPlayerSession) shell.Player, type)) { _adminLogger.Add(LogType.Vote, LogImpact.Medium, $"{shell.Player} failed to start {type.ToString()} vote"); shell.WriteError(Loc.GetString("cmd-createvote-cannot-call-vote-now")); return; } - mgr.CreateStandardVote(shell.Player, type); + mgr.CreateStandardVote((IPlayerSession?) shell.Player, type); } public CompletionResult GetCompletion(IConsoleShell shell, string[] args) @@ -91,7 +92,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) options.Options.Add((args[i], i)); } - options.SetInitiatorOrServer(shell.Player); + options.SetInitiatorOrServer((IPlayerSession?) shell.Player); if (shell.Player != null) _adminLogger.Add(LogType.Vote, LogImpact.Medium, $"{shell.Player} initiated a custom vote: {options.Title} - {string.Join("; ", options.Options.Select(x => x.text))}"); @@ -186,7 +187,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - vote.CastVote(shell.Player!, optionN); + vote.CastVote((IPlayerSession) shell.Player!, optionN); } } diff --git a/Content.Server/Voting/VoteOptions.cs b/Content.Server/Voting/VoteOptions.cs index 5475d10d3297af..6e6d0465edf16a 100644 --- a/Content.Server/Voting/VoteOptions.cs +++ b/Content.Server/Voting/VoteOptions.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Server.Player; namespace Content.Server.Voting @@ -16,7 +16,7 @@ public sealed class VoteOptions /// /// The player that started the vote. Used to keep track of player cooldowns to avoid vote spam. /// - public ICommonSession? InitiatorPlayer { get; set; } + public IPlayerSession? InitiatorPlayer { get; set; } /// /// The shown title of the vote. @@ -43,13 +43,13 @@ public sealed class VoteOptions /// Sets and /// by setting the latter to the player's name. /// - public void SetInitiator(ICommonSession player) + public void SetInitiator(IPlayerSession player) { InitiatorPlayer = player; InitiatorText = player.Name; } - public void SetInitiatorOrServer(ICommonSession? player) + public void SetInitiatorOrServer(IPlayerSession? player) { if (player != null) { diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index 3d9c3e821940fc..1b6b2ebef1cff3 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -24,9 +24,11 @@ using Content.Shared.Tag; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Melee.Events; +using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Random; namespace Content.Server.Weapons.Melee; @@ -172,7 +174,7 @@ protected override bool InRange(EntityUid user, EntityUid target, float range, I EntityCoordinates targetCoordinates; Angle targetLocalAngle; - if (session is { } pSession) + if (session is IPlayerSession pSession) { (targetCoordinates, targetLocalAngle) = _lag.GetCoordinatesAngle(target, pSession); } diff --git a/Content.Server/Wires/WiresSystem.cs b/Content.Server/Wires/WiresSystem.cs index b6452efa8a6f03..e75ad0a9efb7e3 100644 --- a/Content.Server/Wires/WiresSystem.cs +++ b/Content.Server/Wires/WiresSystem.cs @@ -16,7 +16,7 @@ using Content.Shared.Tools.Components; using Content.Shared.Wires; using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Robust.Server.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; @@ -616,7 +616,7 @@ private void UpdateUserInterface(EntityUid uid, WiresComponent? wires = null, Us wires.WireSeed), ui: ui); } - public void OpenUserInterface(EntityUid uid, ICommonSession player) + public void OpenUserInterface(EntityUid uid, IPlayerSession player) { if (_uiSystem.TryGetUi(uid, WiresUiKey.Key, out var ui)) _uiSystem.OpenUi(ui, player); diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs index 9200928d662459..49036fb19d8f2b 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs @@ -17,6 +17,7 @@ using Content.Shared.Xenoarchaeology.XenoArtifacts; using JetBrains.Annotations; using Robust.Server.GameObjects; +using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Timing; @@ -228,7 +229,7 @@ private void UpdateUserInterface(EntityUid uid, AnalysisConsoleComponent? compon /// private void OnServerSelectionMessage(EntityUid uid, AnalysisConsoleComponent component, AnalysisConsoleServerSelectionMessage args) { - _ui.TryOpen(uid, ResearchClientUiKey.Key, args.Session); + _ui.TryOpen(uid, ResearchClientUiKey.Key, (IPlayerSession) args.Session); } /// diff --git a/Content.Shared/Administration/Managers/ISharedAdminManager.cs b/Content.Shared/Administration/Managers/ISharedAdminManager.cs index 22d918d4a33ca2..7e01c81433262b 100644 --- a/Content.Shared/Administration/Managers/ISharedAdminManager.cs +++ b/Content.Shared/Administration/Managers/ISharedAdminManager.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Shared.Administration.Managers; diff --git a/Content.Shared/Buckle/SharedBuckleSystem.cs b/Content.Shared/Buckle/SharedBuckleSystem.cs index 1441745b5dac4d..7edf2448aed99b 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.cs @@ -11,7 +11,7 @@ using Robust.Shared.Map; using Robust.Shared.Network; using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Timing; namespace Content.Shared.Buckle; diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs index dfa72fcfb7fa5f..d0c3be3b311cdd 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Interactions.cs @@ -6,7 +6,7 @@ using Content.Shared.Localizations; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Shared.Hands.EntitySystems; diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index 7981deaee66e6c..4a9a43ca2c2b4f 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -34,7 +34,7 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.Timing; diff --git a/Content.Shared/Mind/Components/MindContainerComponent.cs b/Content.Shared/Mind/Components/MindContainerComponent.cs index 62b26cbd353575..ca0f14d994cc08 100644 --- a/Content.Shared/Mind/Components/MindContainerComponent.cs +++ b/Content.Shared/Mind/Components/MindContainerComponent.cs @@ -1,25 +1,24 @@ using System.Diagnostics.CodeAnalysis; -using Robust.Shared.GameStates; namespace Content.Shared.Mind.Components { /// - /// This component indicates that this entity may have mind, which is simply an entity with a . - /// The mind entity is not actually stored in a "container", but is simply stored in nullspace. + /// Stores a on a mob. /// - [RegisterComponent, Access(typeof(SharedMindSystem)), NetworkedComponent, AutoGenerateComponentState] + [RegisterComponent, Access(typeof(SharedMindSystem))] public sealed partial class MindContainerComponent : Component { /// /// The mind controlling this mob. Can be null. /// - [DataField, AutoNetworkedField] + [ViewVariables] [Access(typeof(SharedMindSystem), Other = AccessPermissions.ReadWriteExecute)] // FIXME Friends public EntityUid? Mind { get; set; } /// /// True if we have a mind, false otherwise. /// + [ViewVariables] [MemberNotNullWhen(true, nameof(Mind))] public bool HasMind => Mind != null; @@ -27,7 +26,7 @@ public sealed partial class MindContainerComponent : Component /// Whether examining should show information about the mind or not. /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("showExamineInfo"), AutoNetworkedField] + [DataField("showExamineInfo")] public bool ShowExamineInfo { get; set; } /// @@ -39,59 +38,19 @@ public sealed partial class MindContainerComponent : Component public bool GhostOnShutdown { get; set; } = true; } - public abstract class MindEvent : EntityEventArgs + public sealed class MindRemovedMessage : EntityEventArgs { - public readonly Entity Mind; - public readonly Entity Container; + public EntityUid OldMindId; + public MindComponent OldMind; - public MindEvent(Entity mind, Entity container) + public MindRemovedMessage(EntityUid oldMindId, MindComponent oldMind) { - Mind = mind; - Container = container; + OldMindId = oldMindId; + OldMind = oldMind; } } - /// - /// Event raised directed at a mind-container when a mind gets removed. - /// - public sealed class MindRemovedMessage : MindEvent + public sealed class MindAddedMessage : EntityEventArgs { - public MindRemovedMessage(Entity mind, Entity container) - : base(mind, container) - { - } - } - - /// - /// Event raised directed at a mind when it gets removed from a mind-container. - /// - public sealed class MindGotRemovedEvent : MindEvent - { - public MindGotRemovedEvent(Entity mind, Entity container) - : base(mind, container) - { - } - } - - /// - /// Event raised directed at a mind-container when a mind gets added. - /// - public sealed class MindAddedMessage : MindEvent - { - public MindAddedMessage(Entity mind, Entity container) - : base(mind, container) - { - } - } - - /// - /// Event raised directed at a mind when it gets added to a mind-container. - /// - public sealed class MindGotAddedEvent : MindEvent - { - public MindGotAddedEvent(Entity mind, Entity container) - : base(mind, container) - { - } } } diff --git a/Content.Shared/Mind/MindComponent.cs b/Content.Shared/Mind/MindComponent.cs index b147a2dbbe7e10..3ea92c3ce7296c 100644 --- a/Content.Shared/Mind/MindComponent.cs +++ b/Content.Shared/Mind/MindComponent.cs @@ -1,86 +1,84 @@ using Content.Shared.GameTicking; using Content.Shared.Mind.Components; -using Robust.Shared.GameStates; using Robust.Shared.Network; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Shared.Mind { /// - /// This component stores information about a player/mob mind. The component will be attached to a mind-entity - /// which is stored in null-space. The entity that is currently "possessed" by the mind will have a - /// . + /// This is added as a component to mind entities, not to player entities. + /// for the one that is added to players. + /// A mind represents the IC "mind" of a player. + /// Roles are attached as components to its owning entity. /// /// - /// Roles are attached as components on the mind-entity entity. /// Think of it like this: if a player is supposed to have their memories, /// their mind follows along. /// /// Things such as respawning do not follow, because you're a new character. /// Getting borged, cloned, turned into a catbeast, etc... will keep it following you. - /// - /// Minds are stored in null-space, and are thus generally not set to players unless that player is the owner - /// of the mind. As a result it should be safe to network "secret" information like roles & objectives /// - [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] + [RegisterComponent] public sealed partial class MindComponent : Component { - [DataField, AutoNetworkedField] - public List Objectives = new(); + internal readonly List Objectives = new(); /// /// The session ID of the player owning this mind. /// - [DataField, AutoNetworkedField, Access(typeof(SharedMindSystem))] + [ViewVariables, Access(typeof(SharedMindSystem))] public NetUserId? UserId { get; set; } /// /// The session ID of the original owner, if any. /// May end up used for round-end information (as the owner may have abandoned Mind since) /// - [DataField, AutoNetworkedField, Access(typeof(SharedMindSystem))] + [ViewVariables, Access(typeof(SharedMindSystem))] public NetUserId? OriginalOwnerUserId { get; set; } /// - /// The first entity that this mind controlled. Used for round end information. + /// Entity UID for the first entity that this mind controlled. Used for round end. /// Might be relevant if the player has ghosted since. /// - [DataField, AutoNetworkedField] - public NetEntity? OriginalOwnedEntity; - // This is a net entity, because this field currently ddoes not get set to null when this entity is deleted. - // This is a lazy way to ensure that people check that the entity still exists. - // TODO MIND Fix this properly by adding an OriginalMindContainerComponent or something like that. + [ViewVariables] public EntityUid? OriginalOwnedEntity; [ViewVariables] public bool IsVisitingEntity => VisitingEntity != null; - [DataField, AutoNetworkedField, Access(typeof(SharedMindSystem))] + [ViewVariables, Access(typeof(SharedMindSystem))] public EntityUid? VisitingEntity { get; set; } [ViewVariables] public EntityUid? CurrentEntity => VisitingEntity ?? OwnedEntity; - [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + [ViewVariables(VVAccess.ReadWrite)] public string? CharacterName { get; set; } /// /// The time of death for this Mind. /// Can be null - will be null if the Mind is not considered "dead". /// - [DataField] + [ViewVariables] public TimeSpan? TimeOfDeath { get; set; } + /// + /// The component currently owned by this mind. + /// Can be null. + /// + [ViewVariables] public MindContainerComponent? OwnedComponent; + /// /// The entity currently owned by this mind. /// Can be null. /// - [DataField, AutoNetworkedField, Access(typeof(SharedMindSystem))] + [ViewVariables, Access(typeof(SharedMindSystem))] public EntityUid? OwnedEntity { get; set; } + // TODO move objectives out of mind component /// /// An enumerable over all the objective entities this mind has. /// - [ViewVariables, Obsolete("Use Objectives field")] + [ViewVariables] public IEnumerable AllObjectives => Objectives; /// @@ -102,7 +100,6 @@ public sealed partial class MindComponent : Component /// Can be null, in which case the player is currently not logged in. /// [ViewVariables, Access(typeof(SharedMindSystem), typeof(SharedGameTicker))] - // TODO remove this after moving IPlayerManager functions to shared public ICommonSession? Session { get; set; } } } diff --git a/Content.Shared/Mind/SharedMindSystem.cs b/Content.Shared/Mind/SharedMindSystem.cs index 66a0325963761c..cc4ac4af23675c 100644 --- a/Content.Shared/Mind/SharedMindSystem.cs +++ b/Content.Shared/Mind/SharedMindSystem.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using System.Linq; using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.Examine; @@ -13,7 +12,7 @@ using Content.Shared.Players; using Robust.Shared.Map; using Robust.Shared.Network; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Utility; namespace Content.Shared.Mind; @@ -26,7 +25,7 @@ public abstract class SharedMindSystem : EntitySystem [Dependency] private readonly SharedPlayerSystem _player = default!; [Dependency] private readonly MetaDataSystem _metadata = default!; - [ViewVariables] + // This is dictionary is required to track the minds of disconnected players that may have had their entity deleted. protected readonly Dictionary UserMinds = new(); public override void Initialize() @@ -37,7 +36,6 @@ public override void Initialize() SubscribeLocalEvent(OnSuicide); SubscribeLocalEvent(OnVisitingTerminating); SubscribeLocalEvent(OnReset); - SubscribeLocalEvent(OnMindStartup); } public override void Shutdown() @@ -46,29 +44,6 @@ public override void Shutdown() WipeAllMinds(); } - private void OnMindStartup(EntityUid uid, MindComponent component, ComponentStartup args) - { - if (component.UserId == null) - return; - - if (UserMinds.TryAdd(component.UserId.Value, uid)) - return; - - var existing = UserMinds[component.UserId.Value]; - if (existing == uid) - return; - - if (!Exists(existing)) - { - Log.Error($"Found deleted entity in mind dictionary while initializing mind {ToPrettyString(uid)}"); - UserMinds[component.UserId.Value] = uid; - return; - } - - Log.Error($"Encountered a user {component.UserId} that is already assigned to a mind while initializing mind {ToPrettyString(uid)}. Ignoring user field."); - component.UserId = null; - } - private void OnReset(RoundRestartCleanupEvent ev) { WipeAllMinds(); @@ -76,22 +51,12 @@ private void OnReset(RoundRestartCleanupEvent ev) public virtual void WipeAllMinds() { - Log.Info($"Wiping all minds"); - foreach (var mind in UserMinds.Values.ToArray()) - { - WipeMind(mind); - } - - if (UserMinds.Count == 0) - return; - foreach (var mind in UserMinds.Values) { - if (Exists(mind)) - Log.Error($"Failed to wipe mind: {ToPrettyString(mind)}"); + WipeMind(mind); } - UserMinds.Clear(); + DebugTools.Assert(UserMinds.Count == 0); } public EntityUid? GetMind(NetUserId user) @@ -115,26 +80,6 @@ public virtual bool TryGetMind(NetUserId user, [NotNullWhen(true)] out EntityUid return false; } - public bool TryGetMind(NetUserId user, [NotNullWhen(true)] out Entity? mind) - { - if (!TryGetMind(user, out var mindId, out var mindComp)) - { - mind = null; - return false; - } - - mind = (mindId.Value, mindComp); - return true; - } - - public Entity GetOrCreateMind(NetUserId user) - { - if (!TryGetMind(user, out var mind)) - mind = CreateMind(user); - - return mind.Value; - } - private void OnVisitingTerminating(EntityUid uid, VisitingMindComponent component, ref EntityTerminatingEvent args) { if (component.MindId != null) @@ -183,7 +128,7 @@ private void OnSuicide(EntityUid uid, MindContainerComponent component, SuicideE return null; } - public Entity CreateMind(NetUserId? userId, string? name = null) + public EntityUid CreateMind(NetUserId? userId, string? name = null) { var mindId = Spawn(null, MapCoordinates.Nullspace); _metadata.SetEntityName(mindId, name == null ? "mind" : $"mind ({name})"); @@ -191,7 +136,7 @@ public Entity CreateMind(NetUserId? userId, string? name = null) mind.CharacterName = name; SetUserId(mindId, userId, mind); - return (mindId, mind); + return mindId; } /// @@ -250,7 +195,7 @@ public void UnVisit(ICommonSession? player) /// Cleans up the VisitingEntity. /// /// - protected void RemoveVisitingEntity(EntityUid mindId, MindComponent mind) + protected void RemoveVisitingEntity(MindComponent mind) { if (mind.VisitingEntity == null) return; @@ -265,7 +210,6 @@ protected void RemoveVisitingEntity(EntityUid mindId, MindComponent mind) RemCompDeferred(oldVisitingEnt, visitComp); } - Dirty(mindId, mind); RaiseLocalEvent(oldVisitingEnt, new MindUnvisitedMessage(), true); } @@ -284,7 +228,7 @@ public void WipeMind(EntityUid? mindId, MindComponent? mind = null) if (mindId == null || !Resolve(mindId.Value, ref mind, false)) return; - TransferTo(mindId.Value, null, createGhost:false, mind: mind); + TransferTo(mindId.Value, null, mind: mind); SetUserId(mindId.Value, null, mind: mind); } @@ -409,11 +353,11 @@ public bool TryGetMind( } public bool TryGetMind( - ContentPlayerData contentPlayer, + PlayerData player, out EntityUid mindId, [NotNullWhen(true)] out MindComponent? mind) { - mindId = contentPlayer.Mind ?? default; + mindId = player.Mind ?? default; return TryComp(mindId, out mind); } @@ -447,6 +391,21 @@ public bool TryGetRole(EntityUid user, [NotNullWhen(true)] out T? role) where return TryComp(mindContainer.Mind, out role); } + /// + /// Sets the Mind's OwnedComponent and OwnedEntity + /// + /// Mind to set OwnedComponent and OwnedEntity on + /// Entity owned by + /// MindContainerComponent owned by + protected void SetOwnedEntity(MindComponent mind, EntityUid? uid, MindContainerComponent? mindContainerComponent) + { + if (uid != null) + Resolve(uid.Value, ref mindContainerComponent); + + mind.OwnedEntity = uid; + mind.OwnedComponent = mindContainerComponent; + } + /// /// Sets the Mind's UserId, Session, and updates the player's PlayerData. This should have no direct effect on the /// entity that any mind is connected to, except as a side effect of the fact that it may change a player's diff --git a/Content.Shared/Movement/Events/MoveInputEvent.cs b/Content.Shared/Movement/Events/MoveInputEvent.cs index 89e5636acd7df5..8e1b43f8bd5e9d 100644 --- a/Content.Shared/Movement/Events/MoveInputEvent.cs +++ b/Content.Shared/Movement/Events/MoveInputEvent.cs @@ -1,3 +1,5 @@ +using Robust.Shared.Players; + namespace Content.Shared.Movement.Events; /// diff --git a/Content.Shared/Movement/Systems/SharedContentEyeSystem.cs b/Content.Shared/Movement/Systems/SharedContentEyeSystem.cs index 4b81619fd07214..27e0080c87eeb7 100644 --- a/Content.Shared/Movement/Systems/SharedContentEyeSystem.cs +++ b/Content.Shared/Movement/Systems/SharedContentEyeSystem.cs @@ -5,7 +5,7 @@ using Content.Shared.Input; using Content.Shared.Movement.Components; using Robust.Shared.Input.Binding; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Serialization; namespace Content.Shared.Movement.Systems; diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs index 1d323a91876a5e..425322408efabd 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs @@ -6,7 +6,7 @@ using Content.Shared.Movement.Events; using Robust.Shared.Input; using Robust.Shared.Input.Binding; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Serialization; using Robust.Shared.Timing; using Robust.Shared.Utility; diff --git a/Content.Shared/Players/ContentPlayerData.cs b/Content.Shared/Players/PlayerData.cs similarity index 73% rename from Content.Shared/Players/ContentPlayerData.cs rename to Content.Shared/Players/PlayerData.cs index 7545eb58fcdbca..c6274c950bd40f 100644 --- a/Content.Shared/Players/ContentPlayerData.cs +++ b/Content.Shared/Players/PlayerData.cs @@ -1,15 +1,16 @@ using Content.Shared.GameTicking; using Content.Shared.Mind; using Robust.Shared.Network; +using Robust.Shared.Player; namespace Content.Shared.Players; /// /// Content side for all data that tracks a player session. -/// Use to retrieve this from an . +/// Use to retrieve this from an . /// Not currently used on the client. /// -public sealed class ContentPlayerData +public sealed class PlayerData { /// /// The session ID of the player owning this data. @@ -37,9 +38,21 @@ public sealed class ContentPlayerData /// public bool ExplicitlyDeadminned { get; set; } - public ContentPlayerData(NetUserId userId, string name) + public PlayerData(NetUserId userId, string name) { UserId = userId; Name = name; } -} \ No newline at end of file +} + + +public static class PlayerDataExt +{ + /// + /// Gets the correctly cast instance of content player data from an engine player data storage. + /// + public static PlayerData? ContentData(this IPlayerData data) + { + return (PlayerData?) data.ContentDataUncast; + } +} diff --git a/Content.Shared/Players/PlayerDataExt.cs b/Content.Shared/Players/PlayerDataExt.cs deleted file mode 100644 index eba4d8339d8ad4..00000000000000 --- a/Content.Shared/Players/PlayerDataExt.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Robust.Shared.Player; - -namespace Content.Shared.Players; - -public static class PlayerDataExt -{ - /// - /// Gets the correctly cast instance of content player data from an engine player data storage. - /// - public static ContentPlayerData? ContentData(this SessionData data) - { - return (ContentPlayerData?) data.ContentDataUncast; - } - - /// - /// Gets the correctly cast instance of content player data from an engine player data storage. - /// - public static ContentPlayerData? ContentData(this ICommonSession session) - { - return session.Data.ContentData(); - } - - /// - /// Gets the mind that is associated with this player. - /// - public static EntityUid? GetMind(this ICommonSession session) - { - return session.Data.ContentData()?.Mind; - } -} \ No newline at end of file diff --git a/Content.Shared/Players/SharedPlayerSystem.cs b/Content.Shared/Players/SharedPlayerSystem.cs index 7271c5688abe8f..6fc7ad6a409e11 100644 --- a/Content.Shared/Players/SharedPlayerSystem.cs +++ b/Content.Shared/Players/SharedPlayerSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Shared.Players; @@ -8,5 +8,5 @@ namespace Content.Shared.Players; /// public abstract class SharedPlayerSystem : EntitySystem { - public abstract ContentPlayerData? ContentData(ICommonSession? session); + public abstract PlayerData? ContentData(ICommonSession? session); } diff --git a/Content.Shared/Popups/SharedPopupSystem.cs b/Content.Shared/Popups/SharedPopupSystem.cs index e4565b90e8bc9a..50013a5435007b 100644 --- a/Content.Shared/Popups/SharedPopupSystem.cs +++ b/Content.Shared/Popups/SharedPopupSystem.cs @@ -1,5 +1,6 @@ using Robust.Shared.Map; using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Serialization; namespace Content.Shared.Popups diff --git a/Content.Shared/Pulling/Systems/SharedPullingSystem.cs b/Content.Shared/Pulling/Systems/SharedPullingSystem.cs index 0c139ee9e35010..6f19d048b4f673 100644 --- a/Content.Shared/Pulling/Systems/SharedPullingSystem.cs +++ b/Content.Shared/Pulling/Systems/SharedPullingSystem.cs @@ -12,7 +12,7 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; +using Robust.Shared.Players; namespace Content.Shared.Pulling { diff --git a/Content.Shared/Roles/Jobs/SharedJobSystem.cs b/Content.Shared/Roles/Jobs/SharedJobSystem.cs index af97ea13504751..ac18d04e9c70f0 100644 --- a/Content.Shared/Roles/Jobs/SharedJobSystem.cs +++ b/Content.Shared/Roles/Jobs/SharedJobSystem.cs @@ -2,7 +2,7 @@ using System.Linq; using Content.Shared.Players; using Content.Shared.Players.PlayTimeTracking; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Utility; diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 62af6067d05444..4b740b8d3c73a2 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -23,7 +23,7 @@ using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; +using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Timing; diff --git a/RobustToolbox b/RobustToolbox index 9750b113c81e75..554e0777b1ba6b 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 9750b113c81e7535d892326568760bc976072436 +Subproject commit 554e0777b1ba6ba096d8f4407d5c35ecc7b0f22f /// Sound played when opening. diff --git a/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs b/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs index 9af2397720a346..ee0e18e998fab8 100644 --- a/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs @@ -45,9 +45,9 @@ protected override void SplattedCreamPie(EntityUid uid, CreamPieComponent creamP { _puddle.TrySpillAt(uid, solution, out _, false); } - if (!string.IsNullOrEmpty(foodComp.TrashPrototype)) + if (!string.IsNullOrEmpty(foodComp.Trash)) { - EntityManager.SpawnEntity(foodComp.TrashPrototype, Transform(uid).Coordinates); + EntityManager.SpawnEntity(foodComp.Trash, Transform(uid).Coordinates); } } ActivatePayload(uid); diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index af037187408103..6213b4e9c62bf7 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Server.Chemistry.EntitySystems; @@ -22,13 +21,12 @@ using Content.Shared.Inventory; using Content.Shared.Mobs.Systems; using Content.Shared.Nutrition; -using Content.Shared.Verbs; using Content.Shared.Stacks; +using Content.Shared.Storage; +using Content.Shared.Verbs; using Robust.Shared.Audio; using Robust.Shared.Player; using Robust.Shared.Utility; -using Content.Shared.Tag; -using Content.Shared.Storage; namespace Content.Server.Nutrition.EntitySystems; @@ -309,7 +307,7 @@ private void OnDoAfter(EntityUid uid, FoodComponent component, ConsumeDoAfterEve if (ev.Cancelled) return; - if (string.IsNullOrEmpty(component.TrashPrototype)) + if (string.IsNullOrEmpty(component.Trash)) QueueDel(uid); else DeleteAndSpawnTrash(component, uid, args.User); @@ -319,7 +317,7 @@ public void DeleteAndSpawnTrash(FoodComponent component, EntityUid food, EntityU { //We're empty. Become trash. var position = Transform(food).MapPosition; - var finisher = Spawn(component.TrashPrototype, position); + var finisher = Spawn(component.Trash, position); // If the user is holding the item if (user != null && _hands.IsHolding(user.Value, food, out var hand)) diff --git a/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs b/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs index 895afc6a9f6379..ab5d722a737b05 100644 --- a/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs +++ b/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs @@ -1,8 +1,6 @@ using Content.Server.StationEvents.Events; using Content.Shared.Cargo.Prototypes; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; namespace Content.Server.StationEvents.Components; @@ -15,43 +13,43 @@ public sealed partial class CargoGiftsRuleComponent : Component /// /// The base announcement string (which then incorporates the strings below) /// - [DataField("announce"), ViewVariables(VVAccess.ReadWrite)] - public string Announce = "cargo-gifts-event-announcement"; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public LocId Announce = "cargo-gifts-event-announcement"; /// /// What is being sent /// - [DataField("description"), ViewVariables(VVAccess.ReadWrite)] - public string Description = "cargo-gift-default-description"; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public LocId Description = "cargo-gift-default-description"; /// /// Sender of the gifts /// - [DataField("sender"), ViewVariables(VVAccess.ReadWrite)] - public string Sender = "cargo-gift-default-sender"; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public LocId Sender = "cargo-gift-default-sender"; /// /// Destination of the gifts (who they get sent to on the station) /// - [DataField("dest"), ViewVariables(VVAccess.ReadWrite)] - public string Dest = "cargo-gift-default-dest"; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public LocId Dest = "cargo-gift-default-dest"; /// /// Cargo that you would like gifted to the station, with the quantity for each /// Use Ids from cargoProduct Prototypes /// - [DataField("gifts", required: true, customTypeSerializer:typeof(PrototypeIdDictionarySerializer)), ViewVariables(VVAccess.ReadWrite)] - public Dictionary Gifts = new(); + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public Dictionary, int> Gifts = new(); /// /// How much space (minimum) you want to leave in the order database for supply to actually do their work /// - [DataField("orderSpaceToLeave"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public int OrderSpaceToLeave = 5; /// /// Time until we consider next lot of gifts (if supply is overflowing with orders) /// - [DataField("timeUntilNextGifts"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public float TimeUntilNextGifts = 10.0f; } diff --git a/Content.Server/StationEvents/Events/CargoGiftsRule.cs b/Content.Server/StationEvents/Events/CargoGiftsRule.cs index 51fafd6cb30a5d..f0f9586ad33e4f 100644 --- a/Content.Server/StationEvents/Events/CargoGiftsRule.cs +++ b/Content.Server/StationEvents/Events/CargoGiftsRule.cs @@ -4,7 +4,6 @@ using Content.Server.GameTicking; using Content.Server.GameTicking.Rules.Components; using Content.Server.StationEvents.Components; -using Content.Shared.Cargo.Prototypes; using Robust.Shared.Prototypes; namespace Content.Server.StationEvents.Events; @@ -56,7 +55,7 @@ protected override void ActiveTick(EntityUid uid, CargoGiftsRuleComponent compon var (productId, qty) = component.Gifts.First(); component.Gifts.Remove(productId); - var product = _prototypeManager.Index(productId); + var product = _prototypeManager.Index(productId); if (!_cargoSystem.AddAndApproveOrder( station!.Value, diff --git a/Content.Server/Storage/Components/PickRandomComponent.cs b/Content.Server/Storage/Components/PickRandomComponent.cs index ae48ce2e214410..00c79b9ea4fb91 100644 --- a/Content.Server/Storage/Components/PickRandomComponent.cs +++ b/Content.Server/Storage/Components/PickRandomComponent.cs @@ -14,18 +14,18 @@ public sealed partial class PickRandomComponent : Component /// /// Whitelist for potential picked items. /// - [DataField("whitelist"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public EntityWhitelist? Whitelist; /// /// Locale id for the pick verb text. /// - [DataField("verbText"), ViewVariables(VVAccess.ReadWrite)] - public string VerbText = "comp-pick-random-verb-text"; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public LocId VerbText = "comp-pick-random-verb-text"; /// /// Locale id for the empty storage message. /// - [DataField("emptyText"), ViewVariables(VVAccess.ReadWrite)] - public string EmptyText = "comp-pick-random-empty"; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public LocId EmptyText = "comp-pick-random-empty"; } diff --git a/Content.Server/Tabletop/Components/TabletopGameComponent.cs b/Content.Server/Tabletop/Components/TabletopGameComponent.cs index 0196eec196be45..da7a09b2131f6d 100644 --- a/Content.Server/Tabletop/Components/TabletopGameComponent.cs +++ b/Content.Server/Tabletop/Components/TabletopGameComponent.cs @@ -1,5 +1,4 @@ using System.Numerics; -using Vector2 = System.Numerics.Vector2; namespace Content.Server.Tabletop.Components { @@ -12,25 +11,25 @@ public sealed partial class TabletopGameComponent : Component /// /// The localized name of the board. Shown in the UI. /// - [DataField("boardName")] - public string BoardName { get; private set; } = "tabletop-default-board-name"; + [DataField] + public LocId BoardName { get; private set; } = "tabletop-default-board-name"; /// /// The type of method used to set up a tabletop. /// - [DataField("setup", required: true)] + [DataField(required: true)] public TabletopSetup Setup { get; private set; } = new TabletopChessSetup(); /// /// The size of the viewport being opened. Must match the board dimensions otherwise you'll get the space parallax (unless that's what you want). /// - [DataField("size")] + [DataField] public Vector2i Size { get; private set; } = (300, 300); /// /// The zoom of the viewport camera. /// - [DataField("cameraZoom")] + [DataField] public Vector2 CameraZoom { get; private set; } = Vector2.One; /// diff --git a/Content.Server/UserInterface/ActivatableUIComponent.cs b/Content.Server/UserInterface/ActivatableUIComponent.cs index fe9ae850c84988..ff605c81190381 100644 --- a/Content.Server/UserInterface/ActivatableUIComponent.cs +++ b/Content.Server/UserInterface/ActivatableUIComponent.cs @@ -1,4 +1,3 @@ -using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Reflection; using Robust.Shared.Serialization; @@ -15,21 +14,21 @@ public sealed partial class ActivatableUIComponent : Component, [ViewVariables] public PlayerBoundUserInterface? UserInterface => (Key != null) ? Owner.GetUIOrNull(Key) : null; [ViewVariables(VVAccess.ReadWrite)] - [DataField("inHandsOnly")] + [DataField] public bool InHandsOnly { get; set; } = false; - [DataField("singleUser")] + [DataField] public bool SingleUser { get; set; } = false; [ViewVariables(VVAccess.ReadWrite)] - [DataField("adminOnly")] + [DataField] public bool AdminOnly { get; set; } = false; [DataField("key", required: true)] private string _keyRaw = default!; - [DataField("verbText")] - public string VerbText = "ui-verb-toggle-open"; + [DataField] + public LocId VerbText = "ui-verb-toggle-open"; /// /// Whether you need a hand to operate this UI. The hand does not need to be free, you just need to have one. @@ -39,28 +38,28 @@ public sealed partial class ActivatableUIComponent : Component, /// more generic interaction / configuration that might not require hands. /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("requireHands")] + [DataField] public bool RequireHands = true; /// /// Whether you can activate this ui with activateinhand or not /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("rightClickOnly")] + [DataField] public bool rightClickOnly = false; /// /// Whether spectators (non-admin ghosts) should be allowed to view this UI. /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("allowSpectator")] + [DataField] public bool AllowSpectator = true; /// /// Whether the UI should close when the item is deselected due to a hand swap or drop /// [ViewVariables(VVAccess.ReadWrite)] - [DataField("closeOnHandDeselect")] + [DataField] public bool CloseOnHandDeselect = true; /// diff --git a/Content.Server/Wires/WiresComponent.cs b/Content.Server/Wires/WiresComponent.cs index 9283e1e18f2af5..526b73a300d0e2 100644 --- a/Content.Server/Wires/WiresComponent.cs +++ b/Content.Server/Wires/WiresComponent.cs @@ -8,13 +8,13 @@ public sealed partial class WiresComponent : Component /// /// The name of this entity's internal board. /// - [DataField("BoardName")] - public string BoardName { get; set; } = "wires-board-name-default"; + [DataField] + public LocId BoardName { get; set; } = "wires-board-name-default"; /// /// The layout ID of this entity's wires. /// - [DataField("LayoutId", required: true)] + [DataField(required: true)] public string LayoutId { get; set; } = default!; /// @@ -47,7 +47,7 @@ public sealed partial class WiresComponent : Component /// If this should follow the layout saved the first time the layout dictated by the /// layout ID is generated, or if a new wire order should be generated every time. /// - [DataField("alwaysRandomize")] + [DataField] public bool AlwaysRandomize { get; private set; } /// @@ -64,6 +64,6 @@ public sealed partial class WiresComponent : Component [ViewVariables] public Dictionary StateData { get; } = new(); - [DataField("pulseSound")] + [DataField] public SoundSpecifier PulseSound = new SoundPathSpecifier("/Audio/Effects/multitool_pulse.ogg"); } diff --git a/Content.Shared/Bed/Sleep/SleepEmitSoundComponent.cs b/Content.Shared/Bed/Sleep/SleepEmitSoundComponent.cs index e1918eac262d24..6313f633f21677 100644 --- a/Content.Shared/Bed/Sleep/SleepEmitSoundComponent.cs +++ b/Content.Shared/Bed/Sleep/SleepEmitSoundComponent.cs @@ -8,24 +8,24 @@ public sealed partial class SleepEmitSoundComponent : Component /// /// Sound to play when sleeping /// - [DataField("snore"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public SoundSpecifier Snore = new SoundCollectionSpecifier("Snores", AudioParams.Default.WithVariation(0.2f)); /// /// Interval between snore attempts in seconds /// - [DataField("interval"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public float Interval = 5f; /// /// Chance for snore attempt to succeed /// - [DataField("chance"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public float Chance = 0.33f; /// /// Popup for snore (e.g. Zzz...) /// - [DataField("popUp"), ViewVariables(VVAccess.ReadWrite)] - public string PopUp = "sleep-onomatopoeia"; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public LocId PopUp = "sleep-onomatopoeia"; } diff --git a/Content.Shared/CartridgeLoader/CartridgeComponent.cs b/Content.Shared/CartridgeLoader/CartridgeComponent.cs index ba7e6fe2d5807a..56debb48f4f2a6 100644 --- a/Content.Shared/CartridgeLoader/CartridgeComponent.cs +++ b/Content.Shared/CartridgeLoader/CartridgeComponent.cs @@ -11,7 +11,7 @@ namespace Content.Shared.CartridgeLoader; public sealed partial class CartridgeComponent : Component { [DataField(required: true)] - public string ProgramName = "default-program-name"; + public LocId ProgramName = "default-program-name"; [DataField] public SpriteSpecifier? Icon; diff --git a/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs b/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs index 849fffcf5e3aa2..69697239533c34 100644 --- a/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs +++ b/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs @@ -9,15 +9,15 @@ public sealed partial class ReactionMixerComponent : Component /// A list of IDs for categories of reactions that can be mixed (i.e. HOLY for a bible, DRINK for a spoon) /// [ViewVariables] - [DataField("reactionTypes")] + [DataField] public List ReactionTypes = default!; /// /// A string which identifies the string to be sent when successfully mixing a solution /// [ViewVariables] - [DataField("mixMessage")] - public string MixMessage = "default-mixing-success"; + [DataField] + public LocId MixMessage = "default-mixing-success"; } [ByRefEvent] diff --git a/Content.Shared/Construction/Steps/PartAssemblyConstructionGraphStep.cs b/Content.Shared/Construction/Steps/PartAssemblyConstructionGraphStep.cs index 9119587a6b29d9..f22fc459a717db 100644 --- a/Content.Shared/Construction/Steps/PartAssemblyConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/PartAssemblyConstructionGraphStep.cs @@ -1,6 +1,5 @@ using Content.Shared.Construction.Components; using Content.Shared.Examine; -using JetBrains.Annotations; namespace Content.Shared.Construction.Steps; @@ -10,14 +9,14 @@ public sealed partial class PartAssemblyConstructionGraphStep : ConstructionGrap /// /// A valid ID on 's dictionary of strings to part lists. /// - [DataField("assemblyId")] + [DataField] public string AssemblyId = string.Empty; /// - /// A localization string used for + /// A localization string used when examining and for the guidebook. /// - [DataField("guideString")] - public string GuideString = "construction-guide-condition-part-assembly"; + [DataField] + public LocId GuideString = "construction-guide-condition-part-assembly"; public bool Condition(EntityUid uid, IEntityManager entityManager) { diff --git a/Content.Shared/Examine/ExamineSystemShared.Group.cs b/Content.Shared/Examine/ExamineSystemShared.Group.cs index 4b050da2f4b237..bd284f321c8e67 100644 --- a/Content.Shared/Examine/ExamineSystemShared.Group.cs +++ b/Content.Shared/Examine/ExamineSystemShared.Group.cs @@ -1,5 +1,5 @@ -using Robust.Shared.Utility; using Content.Shared.Verbs; +using Robust.Shared.Utility; namespace Content.Shared.Examine { @@ -23,7 +23,7 @@ public override void Initialize() /// private void OnGroupExamineVerb(EntityUid uid, GroupExamineComponent component, GetVerbsEvent args) { - foreach (var group in component.ExamineGroups) + foreach (var group in component.Group) { if (!EntityHasComponent(uid, group.Components)) continue; @@ -116,7 +116,7 @@ public void AddDetailedExamineVerb(GetVerbsEvent verbsEvent, Compon // Make sure we have the component name as a string var componentName = _componentFactory.GetComponentName(component.GetType()); - foreach (var examineGroup in groupExamine.ExamineGroups) + foreach (var examineGroup in groupExamine.Group) { // If any of the examine groups list of components contain this componentname if (examineGroup.Components.Contains(componentName)) @@ -124,7 +124,7 @@ public void AddDetailedExamineVerb(GetVerbsEvent verbsEvent, Compon foreach (var entry in examineGroup.Entries) { // If any of the entries already are from your component, dont do anything else - no doubles! - if (entry.ComponentName == componentName) + if (entry.Component == componentName) return; } diff --git a/Content.Shared/Examine/GroupExamineComponent.cs b/Content.Shared/Examine/GroupExamineComponent.cs index a61971a2c5ffc7..f91fd4c4de8c06 100644 --- a/Content.Shared/Examine/GroupExamineComponent.cs +++ b/Content.Shared/Examine/GroupExamineComponent.cs @@ -12,8 +12,8 @@ public sealed partial class GroupExamineComponent : Component /// /// A list of ExamineGroups. /// - [DataField("group")] - public List ExamineGroups = new() + [DataField] + public List Group = new() { // TODO Remove hardcoded component names. new ExamineGroup() @@ -33,14 +33,14 @@ public sealed partial class ExamineGroup /// /// The title of the Examine Group. Localized string that gets added to the examine tooltip. /// - [DataField("title")] + [DataField] [ViewVariables(VVAccess.ReadWrite)] public string? Title; /// /// A list of ExamineEntries, containing which component it belongs to, which priority it has, and what FormattedMessage it holds. /// - [DataField("entries")] + [DataField] public List Entries = new(); // TODO custom type serializer, or just make this work via some other automatic grouping process that doesn't @@ -48,25 +48,25 @@ public sealed partial class ExamineGroup /// /// A list of all components this ExamineGroup encompasses. /// - [DataField("components")] + [DataField] public List Components = new(); /// /// The icon path for the Examine Group. /// - [DataField("icon")] + [DataField] public SpriteSpecifier Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/examine-star.png")); /// /// The text shown in the context verb menu. /// - [DataField("contextText")] - public string ContextText = "verb-examine-group-other"; + [DataField] + public LocId ContextText = "verb-examine-group-other"; /// /// Details shown when hovering over the button. /// - [DataField("hoverMessage")] + [DataField] public string HoverMessage = string.Empty; } @@ -79,25 +79,25 @@ public sealed partial class ExamineEntry /// /// Which component does this entry relate to? /// - [DataField("component", required: true)] - public string ComponentName; + [DataField(required: true)] + public string Component; /// /// What priority has this entry - entries are sorted high to low. /// - [DataField("priority")] + [DataField] public float Priority = 0f; /// /// The FormattedMessage of this entry. /// - [DataField("message", required: true)] + [DataField(required: true)] public FormattedMessage Message; - /// Should be set to _componentFactory.GetComponentName(component.GetType()) to properly function. - public ExamineEntry(string componentName, float priority, FormattedMessage message) + /// Should be set to _componentFactory.GetComponentName(component.GetType()) to properly function. + public ExamineEntry(string component, float priority, FormattedMessage message) { - ComponentName = componentName; + Component = component; Priority = priority; Message = message; } @@ -106,7 +106,7 @@ private ExamineEntry() { // parameterless ctor is required for data-definition serialization Message = default!; - ComponentName = default!; + Component = default!; } } diff --git a/Content.Shared/Implants/Components/RattleComponent.cs b/Content.Shared/Implants/Components/RattleComponent.cs index e8b98e462f95a6..ab1ccdb069daff 100644 --- a/Content.Shared/Implants/Components/RattleComponent.cs +++ b/Content.Shared/Implants/Components/RattleComponent.cs @@ -1,6 +1,6 @@ using Content.Shared.Radio; using Robust.Shared.GameStates; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Prototypes; namespace Content.Shared.Implants.Components; @@ -8,14 +8,14 @@ namespace Content.Shared.Implants.Components; public sealed partial class RattleComponent : Component { // The radio channel the message will be sent to - [DataField("radioChannel", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string RadioChannel = "Syndicate"; + [DataField] + public ProtoId RadioChannel = "Syndicate"; // The message that the implant will send when crit - [DataField("critMessage")] - public string CritMessage = "deathrattle-implant-critical-message"; + [DataField] + public LocId CritMessage = "deathrattle-implant-critical-message"; // The message that the implant will send when dead [DataField("deathMessage")] - public string DeathMessage = "deathrattle-implant-dead-message"; + public LocId DeathMessage = "deathrattle-implant-dead-message"; } diff --git a/Content.Shared/Materials/MaterialPrototype.cs b/Content.Shared/Materials/MaterialPrototype.cs index 7eb4dfd9a43576..cf1159947be841 100644 --- a/Content.Shared/Materials/MaterialPrototype.cs +++ b/Content.Shared/Materials/MaterialPrototype.cs @@ -1,7 +1,6 @@ using Robust.Shared.Prototypes; -using Robust.Shared.Utility; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; +using Robust.Shared.Utility; namespace Content.Shared.Materials { @@ -17,7 +16,7 @@ public sealed class MaterialPrototype : IPrototype, IInheritingPrototype public string[]? Parents { get; } [ViewVariables] - [AbstractDataFieldAttribute] + [AbstractDataField] public bool Abstract { get; } = false; [ViewVariables] @@ -29,10 +28,10 @@ public sealed class MaterialPrototype : IPrototype, IInheritingPrototype /// between the material and physical entities you can carry, /// include which stack we should spawn by default. /// - [DataField("stackEntity", customTypeSerializer:typeof(PrototypeIdSerializer))] - public string? StackEntity; + [DataField] + public ProtoId? StackEntity; - [DataField("name")] + [DataField] public string Name = string.Empty; /// @@ -40,22 +39,22 @@ public sealed class MaterialPrototype : IPrototype, IInheritingPrototype /// Lathe recipe tooltips and material storage display use this to let you change a material to sound nicer. /// For example, 5 bars of gold is better than 5 sheets of gold. /// - [DataField("unit")] - public string Unit = "materials-unit-sheet"; + [DataField] + public LocId Unit = "materials-unit-sheet"; - [DataField("color")] + [DataField] public Color Color { get; private set; } = Color.Gray; /// /// An icon used to represent the material in graphic interfaces. /// - [DataField("icon")] + [DataField] public SpriteSpecifier Icon { get; private set; } = SpriteSpecifier.Invalid; /// /// The price per cm3. /// - [DataField("price", required: true)] + [DataField(required: true)] public double Price = 0; } } diff --git a/Content.Shared/Nutrition/AnimalHusbandry/ReproductiveComponent.cs b/Content.Shared/Nutrition/AnimalHusbandry/ReproductiveComponent.cs index c3f1fc69f507e5..ea9edcb50762a6 100644 --- a/Content.Shared/Nutrition/AnimalHusbandry/ReproductiveComponent.cs +++ b/Content.Shared/Nutrition/AnimalHusbandry/ReproductiveComponent.cs @@ -1,5 +1,4 @@ -using Content.Shared.Nutrition.Components; -using Content.Shared.Storage; +using Content.Shared.Storage; using Content.Shared.Whitelist; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; @@ -16,93 +15,93 @@ public sealed partial class ReproductiveComponent : Component /// /// The next time when breeding will be attempted. /// - [DataField("nextBreedAttempt", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] public TimeSpan NextBreedAttempt; /// /// Minimum length between each attempt to breed. /// - [DataField("minBreedAttemptInterval"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public TimeSpan MinBreedAttemptInterval = TimeSpan.FromSeconds(45); /// /// Maximum length between each attempt to breed. /// - [DataField("maxBreedAttemptInterval"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public TimeSpan MaxBreedAttemptInterval = TimeSpan.FromSeconds(60); /// /// How close to a partner an entity must be in order to breed. /// Unrealistically long. /// - [DataField("breedRange"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public float BreedRange = 3f; /// /// How many other entities with this component are allowed in range before we stop. /// - [DataField("capacity"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public int Capacity = 6; /// /// The chance that, on a given attempt, /// for each valid partner, the entity will breed. /// - [DataField("breedChance"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public float BreedChance = 0.15f; /// /// Entity prototypes for what type of /// offspring can be produced by this entity. /// - [DataField("offspring", required: true)] + [DataField(required: true)] public List Offspring = default!; /// /// Whether or not this entity has bred successfully /// and will produce offspring imminently /// - [DataField("gestating")] + [DataField] public bool Gestating; /// /// When gestation will end. /// Null if is false /// - [DataField("gestationEndTime"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public TimeSpan? GestationEndTime; /// /// How long it takes the entity after breeding /// to produce offspring /// - [DataField("gestationDuration"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public TimeSpan GestationDuration = TimeSpan.FromMinutes(1.5); /// /// How much hunger is consumed when an entity /// gives birth. A balancing tool to require feeding. /// - [DataField("hungerPerBirth"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public float HungerPerBirth = 75f; /// /// Popup shown when an entity gives birth. /// Configurable for things like laying eggs. /// - [DataField("birthPopup"), ViewVariables(VVAccess.ReadWrite)] - public string BirthPopup = "reproductive-birth-popup"; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public LocId BirthPopup = "reproductive-birth-popup"; /// /// Whether or not the offspring should be made into "infants". /// - [DataField("makeOffspringInfant"), ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadWrite)] public bool MakeOffspringInfant = true; /// /// An entity whitelist for what entities /// can be this one's partner. /// - [DataField("partnerWhitelist", required: true)] + [DataField(required: true)] public EntityWhitelist PartnerWhitelist = default!; } diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 8139994c503e87..126e53384959ff 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -94,7 +94,7 @@ - type: WiresPanel - type: ActivatableUIRequiresPanel - type: Wires - LayoutId: Borg + layoutId: Borg - type: NameIdentifier group: Silicon - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml index c07d62946e70c4..3f5a7af8d3c6ca 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml @@ -61,7 +61,7 @@ toggleAction: ActionAGhostShowStationRecords - type: SolarControlConsole # look ma i AM the computer! - type: CommunicationsConsole - title: communicationsconsole-announcement-title-centcom + title: comms-console-announcement-title-centcom color: "#228b22" - type: RadarConsole - type: CargoOrderConsole diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_structures.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_structures.yml index 6dcd4ad683dcc9..ad4d2eac8a5190 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_structures.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_structures.yml @@ -164,8 +164,8 @@ - type: WiresVisuals - type: WiresPanel - type: Wires - BoardName: wires-board-name-dawinstrument - LayoutId: DawInstrument + boardName: wires-board-name-dawinstrument + layoutId: DawInstrument - type: Machine board: DawInstrumentMachineCircuitboard - type: Instrument diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml index 725dee61d3797f..5eab64e73acefc 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml @@ -54,8 +54,8 @@ - type: Clickable - type: WiresPanel - type: Wires #we just want the panel - BoardName: wires-board-name-mech - LayoutId: Mech + boardName: wires-board-name-mech + layoutId: Mech - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/Entities/Structures/Dispensers/booze.yml b/Resources/Prototypes/Entities/Structures/Dispensers/booze.yml index f6364f6323b1b6..f64bc4ce018aee 100644 --- a/Resources/Prototypes/Entities/Structures/Dispensers/booze.yml +++ b/Resources/Prototypes/Entities/Structures/Dispensers/booze.yml @@ -17,8 +17,8 @@ - type: Machine board: BoozeDispenserMachineCircuitboard - type: Wires - BoardName: wires-board-name-booze - LayoutId: BoozeDispenser + boardName: wires-board-name-booze + layoutId: BoozeDispenser - type: GuideHelp guides: - Bartender diff --git a/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml b/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml index ba02da325e0cf7..fd39cf2a5ec749 100644 --- a/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml +++ b/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml @@ -26,8 +26,8 @@ - type: Machine board: ChemDispenserMachineCircuitboard - type: Wires - BoardName: wires-board-name-chemdispenser - LayoutId: ChemDispenser + boardName: wires-board-name-chemdispenser + layoutId: ChemDispenser - type: UpgradePowerDraw powerDrawMultiplier: 0.75 scaling: Exponential diff --git a/Resources/Prototypes/Entities/Structures/Dispensers/soda.yml b/Resources/Prototypes/Entities/Structures/Dispensers/soda.yml index 3cd8e4dbcb008b..4322d56947a3a9 100644 --- a/Resources/Prototypes/Entities/Structures/Dispensers/soda.yml +++ b/Resources/Prototypes/Entities/Structures/Dispensers/soda.yml @@ -17,8 +17,8 @@ - type: Machine board: SodaDispenserMachineCircuitboard - type: Wires - BoardName: wires-board-name-soda - LayoutId: SodaDispenser + boardName: wires-board-name-soda + layoutId: SodaDispenser - type: GuideHelp guides: - Bartender diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml index 7dea7bfb53a960..0cc5d90a1e192c 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml @@ -207,7 +207,7 @@ - type: AccessReader access: [["Command"]] - type: Wires - LayoutId: AirlockCommand + layoutId: AirlockCommand - type: entity parent: AirlockCommand @@ -273,7 +273,7 @@ - type: AccessReader access: [["Security"]] - type: Wires - LayoutId: AirlockSecurity + layoutId: AirlockSecurity - type: entity parent: AirlockSecurity @@ -283,7 +283,7 @@ - type: AccessReader access: [["Detective"]] - type: Wires - LayoutId: AirlockSecurity + layoutId: AirlockSecurity - type: entity parent: AirlockSecurity @@ -293,7 +293,7 @@ - type: AccessReader access: [["Brig"]] - type: Wires - LayoutId: AirlockSecurity + layoutId: AirlockSecurity - type: entity parent: AirlockSecurity @@ -303,7 +303,7 @@ - type: AccessReader access: [["Armory"]] - type: Wires - LayoutId: AirlockArmory + layoutId: AirlockArmory - type: entity parent: AirlockSecurity diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index 51d3cfdda09848..35f2e4d05fb832 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -76,8 +76,8 @@ - type: WiresPanel - type: WiresPanelSecurity - type: Wires - BoardName: wires-board-name-airlock - LayoutId: Airlock + boardName: wires-board-name-airlock + layoutId: Airlock - type: DoorSignalControl - type: DeviceNetwork deviceNetId: Wireless @@ -134,7 +134,7 @@ price: 150 - type: Tag tags: - - Airlock + - 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 placement: mode: SnapgridCenter diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml index c653d2d0100f14..b560e8cd10f06d 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml @@ -70,8 +70,8 @@ - type: WiresPanelSecurity securityLevel: maxSecurity - type: Wires - BoardName: wires-board-name-highsec - LayoutId: HighSec + boardName: wires-board-name-highsec + layoutId: HighSec alwaysRandomize: true - type: UserInterface interfaces: @@ -100,4 +100,4 @@ - type: Tag tags: - HighSecDoor - # This tag is used to nagivate the Airlock construction graph. It's needed because this construction graph is shared between Airlock, AirlockGlass, and HighSecDoor \ No newline at end of file + # This tag is used to nagivate the Airlock construction graph. It's needed because this construction graph is shared between Airlock, AirlockGlass, and HighSecDoor diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml index e6459f484a9ec2..aa14d74838a3f7 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml @@ -43,7 +43,7 @@ - state: panel_open map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: Wires - LayoutId: Docking + layoutId: Docking - type: Door bumpOpen: false closeTimeTwo: 0.4 diff --git a/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml b/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml index e12daa537fce85..dccc76e96c1a10 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml @@ -84,8 +84,8 @@ - type: WiresVisuals - type: WiresPanel - type: Wires - BoardName: wires-board-name-firelock - LayoutId: Firelock + boardName: wires-board-name-firelock + layoutId: Firelock - type: UserInterface interfaces: - key: enum.WiresUiKey.Key diff --git a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml index 6a973c5015e062..cdaba14d5281b7 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml @@ -118,8 +118,8 @@ usesApcPower: true - type: WiresPanel - type: Wires - BoardName: wires-board-name-windoor - LayoutId: Airlock + boardName: wires-board-name-windoor + layoutId: Airlock - type: UserInterface interfaces: - key: enum.WiresUiKey.Key diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml index b3463f124498c7..ab2bdb2c5d885a 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml @@ -87,8 +87,8 @@ - PlushieHampter - type: WiresPanel - type: Wires - LayoutId: Arcade - BoardName: wires-board-name-arcade + layoutId: Arcade + boardName: wires-board-name-arcade - type: ActivatableUI key: enum.SpaceVillainArcadeUiKey.Key - type: ActivatableUIRequiresPower @@ -129,8 +129,8 @@ - type: ActivatableUIRequiresPower - type: WiresPanel - type: Wires - LayoutId: Arcade - BoardName: wires-board-name-arcade + layoutId: Arcade + boardName: wires-board-name-arcade - type: UserInterface interfaces: - key: enum.BlockGameUiKey.Key diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml index e7ae4d2394ea68..2184ee73ea6603 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml @@ -51,8 +51,8 @@ - type: WiresVisuals - type: WiresPanel - type: Wires - BoardName: wires-board-name-cryopod - LayoutId: CryoPod + boardName: wires-board-name-cryopod + layoutId: CryoPod - type: Damageable damageContainer: Inorganic damageModifierSet: Metallic diff --git a/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml b/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml index 596b2f770700de..dc2b5c66781ae1 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml @@ -38,8 +38,8 @@ - type: Appearance - type: WiresPanel - type: Wires - BoardName: wires-board-name-vessel - LayoutId: Vessel + boardName: wires-board-name-vessel + layoutId: Vessel - type: AmbientSound enabled: false range: 3 @@ -175,8 +175,8 @@ - type: WiresPanel - type: WiresVisuals - type: Wires - BoardName: wires-board-name-ape - LayoutId: Ape + boardName: wires-board-name-ape + layoutId: Ape - type: GenericVisualizer visuals: enum.PowerDeviceVisuals.Powered: @@ -264,8 +264,8 @@ doAfterDelay: 5 - type: WiresPanel - type: Wires - BoardName: wires-board-name-anomalygenerator - LayoutId: AnomalyGenerator + boardName: wires-board-name-anomalygenerator + layoutId: AnomalyGenerator - type: Destructible thresholds: - trigger: diff --git a/Resources/Prototypes/Entities/Structures/Machines/bombs.yml b/Resources/Prototypes/Entities/Structures/Machines/bombs.yml index 9bd5070b73b9dc..580253f1189557 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/bombs.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/bombs.yml @@ -13,7 +13,7 @@ - key: enum.WiresUiKey.Key type: WiresBoundUserInterface - type: Wires - LayoutId: Defusable + layoutId: Defusable alwaysRandomize: true - type: Defusable - type: Rotatable @@ -56,7 +56,7 @@ description: A bomb for dummies, manual not included. components: - type: Wires - LayoutId: Defusable + layoutId: Defusable alwaysRandomize: true - type: Sprite sprite: Structures/Machines/bomb.rsi diff --git a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml index 8c006572ed0696..e215a70f4c0178 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml @@ -61,8 +61,8 @@ # Machine / Construction stuff - type: WiresPanel - type: Wires - BoardName: wires-board-name-chemmaster - LayoutId: chem_master + boardName: wires-board-name-chemmaster + layoutId: chem_master - type: Machine board: ChemMasterMachineCircuitboard - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml b/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml index 6b3992b0d89625..0cc9f71e55a041 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml @@ -61,8 +61,8 @@ - Biomass - type: WiresPanel - type: Wires - BoardName: wires-board-name-cloningpod - LayoutId: CloningPod + boardName: wires-board-name-cloningpod + layoutId: CloningPod - type: ApcPowerReceiver powerLoad: 200 #Receives most of its power from the console - type: Appearance diff --git a/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml b/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml index 01b6f82e85b592..d574b286c4582e 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml @@ -96,8 +96,8 @@ board: FatExtractorMachineCircuitboard - type: WiresPanel - type: Wires - BoardName: wires-board-name-fatextractor - LayoutId: FatExtractor + boardName: wires-board-name-fatextractor + layoutId: FatExtractor - type: Appearance - type: Speech speechVerb: Robotic diff --git a/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml b/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml index 7e2709ae95d711..657c597b1489a6 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml @@ -121,8 +121,8 @@ max: 1 - type: WiresPanel - type: Wires - BoardName: wires-board-name-minigravitygenerator - LayoutId: MiniGravityGenerator + boardName: wires-board-name-minigravitygenerator + layoutId: MiniGravityGenerator - type: Machine board: MiniGravityGeneratorCircuitboard - type: ApcPowerReceiver diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index a406b8e0c01a20..b1ea5f9e3d1da4 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -31,8 +31,8 @@ acts: ["Destruction"] - type: WiresPanel - type: Wires - BoardName: wires-board-name-autolathe - LayoutId: Autolathe + boardName: wires-board-name-autolathe + layoutId: Autolathe - type: ActivatableUI key: enum.LatheUiKey.Key - type: ActivatableUIRequiresPower @@ -187,8 +187,8 @@ - type: Machine board: ProtolatheMachineCircuitboard - type: Wires - BoardName: wires-board-name-protolathe - LayoutId: Protolathe + boardName: wires-board-name-protolathe + layoutId: Protolathe - type: MaterialStorage whitelist: tags: diff --git a/Resources/Prototypes/Entities/Structures/Machines/material_reclaimer.yml b/Resources/Prototypes/Entities/Structures/Machines/material_reclaimer.yml index bb8f6d200b75cf..b7886b7ca59bc4 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/material_reclaimer.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/material_reclaimer.yml @@ -59,8 +59,8 @@ board: MaterialReclaimerMachineCircuitboard - type: WiresPanel - type: Wires - BoardName: wires-board-name-reclaimer - LayoutId: Reclaimer + boardName: wires-board-name-reclaimer + layoutId: Reclaimer - type: MaterialReclaimer whitelist: components: diff --git a/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml b/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml index 7a86fdf11ae8fc..c8d233f04cc25f 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml @@ -78,8 +78,8 @@ board: MedicalScannerMachineCircuitboard - type: WiresPanel - type: Wires - BoardName: wires-board-name-medicalscanner - LayoutId: MedicalScanner + boardName: wires-board-name-medicalscanner + layoutId: MedicalScanner - type: Appearance - type: Climbable - type: ApcPowerReceiver diff --git a/Resources/Prototypes/Entities/Structures/Machines/research.yml b/Resources/Prototypes/Entities/Structures/Machines/research.yml index ef9b63ca73ec71..d042e9d10468a0 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/research.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/research.yml @@ -24,7 +24,7 @@ - type: ExtensionCableReceiver - type: WiresPanel - type: Wires - LayoutId: rndserver + layoutId: rndserver - type: WiresVisuals - type: Machine board: ResearchAndDevelopmentServerMachineCircuitboard diff --git a/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml b/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml index 1c03d0114855b6..0f84f200bb0796 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml @@ -49,8 +49,8 @@ board: TelecomServerCircuitboard - type: WiresPanel - type: Wires - BoardName: wires-board-name-telecomserver - LayoutId: TelecomServer + boardName: wires-board-name-telecomserver + layoutId: TelecomServer - type: Transform anchored: true - type: Pullable diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 8e06d23ee76e03..839ae47ef5637b 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -64,8 +64,8 @@ type: WiresBoundUserInterface - type: WiresPanel - type: Wires - BoardName: wires-board-name-vendingmachine - LayoutId: Vending + boardName: wires-board-name-vendingmachine + layoutId: Vending - type: Anchorable - type: TypingIndicator proto: robot diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml index c4282a2d4df4e1..e9d1c4a30d0ab0 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml @@ -241,8 +241,8 @@ key: enum.ThermomachineUiKey.Key - type: WiresPanel - type: Wires - BoardName: wires-board-name-thermomachine - LayoutId: Thermomachine + boardName: wires-board-name-thermomachine + layoutId: Thermomachine - type: WiresVisuals - type: NodeContainer nodes: diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml index 5da747571a1cb8..ca0cebffecd477 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml @@ -23,8 +23,8 @@ type: WiresBoundUserInterface - type: WiresPanel - type: Wires - BoardName: wires-board-name-pa - LayoutId: ParticleAccelerator + boardName: wires-board-name-pa + layoutId: ParticleAccelerator # Unfinished diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml index 0fe35f3464e4eb..261b9a344c4582 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml @@ -43,8 +43,8 @@ # Construction, interaction - type: WiresPanel - type: Wires - BoardName: wires-board-name-generator - LayoutId: Generator + boardName: wires-board-name-generator + layoutId: Generator - type: UserInterface interfaces: - key: enum.GeneratorComponentUiKey.Key diff --git a/Resources/Prototypes/Entities/Structures/Power/apc.yml b/Resources/Prototypes/Entities/Structures/Power/apc.yml index defe6d0cd4a9cf..35a8f0f704908f 100644 --- a/Resources/Prototypes/Entities/Structures/Power/apc.yml +++ b/Resources/Prototypes/Entities/Structures/Power/apc.yml @@ -91,8 +91,8 @@ - type: WallMount - type: WiresPanel - type: Wires - BoardName: wires-board-name-apc - LayoutId: APC + boardName: wires-board-name-apc + layoutId: APC - type: WiresVisuals - type: Damageable damageContainer: Inorganic diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml index 8967f60e203718..520b293cb5d351 100644 --- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml +++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml @@ -213,7 +213,7 @@ - machine_board - entity_storage - type: Wires - LayoutId: borgcharger + layoutId: borgcharger - type: WiresPanel - type: WiresVisuals - type: Machine diff --git a/Resources/Prototypes/Entities/Structures/Power/smes.yml b/Resources/Prototypes/Entities/Structures/Power/smes.yml index 08ddbe4b2a6c6c..68d72f64f89d29 100644 --- a/Resources/Prototypes/Entities/Structures/Power/smes.yml +++ b/Resources/Prototypes/Entities/Structures/Power/smes.yml @@ -63,8 +63,8 @@ castShadows: false - type: WiresPanel - type: Wires - BoardName: wires-board-name-smes - LayoutId: SMES + boardName: wires-board-name-smes + layoutId: SMES - type: Machine board: SMESMachineCircuitboard - type: StationInfiniteBatteryTarget diff --git a/Resources/Prototypes/Entities/Structures/Power/substation.yml b/Resources/Prototypes/Entities/Structures/Power/substation.yml index d160ea8365f52b..6e3ef2f7f1a175 100644 --- a/Resources/Prototypes/Entities/Structures/Power/substation.yml +++ b/Resources/Prototypes/Entities/Structures/Power/substation.yml @@ -87,8 +87,8 @@ totalIntensity: 200 - type: WiresPanel - type: Wires - BoardName: wires-board-name-substation - LayoutId: Substation + boardName: wires-board-name-substation + layoutId: Substation - type: Machine board: SubstationMachineCircuitboard - type: StationInfiniteBatteryTarget diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml index 6d23dab829cc91..3e91daaa3904a7 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml @@ -59,8 +59,8 @@ type: WiresBoundUserInterface - type: WiresPanel - type: Wires - BoardName: wires-board-name-airalarm - LayoutId: AirAlarm + boardName: wires-board-name-airalarm + layoutId: AirAlarm - type: AccessReader access: [["Atmospherics"]] - type: ContainerFill diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml index da866d98231da1..7e0635edc8278b 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml @@ -66,8 +66,8 @@ type: WiresBoundUserInterface - type: WiresPanel - type: Wires - BoardName: wires-board-name-firealarm - LayoutId: FireAlarm + boardName: wires-board-name-firealarm + layoutId: FireAlarm - type: Sprite sprite: Structures/Wallmounts/air_monitors.rsi layers: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml index 59409f41325b20..c8cdcfd40aac2b 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml @@ -50,8 +50,8 @@ anchored: true - type: WiresPanel - type: Wires - BoardName: wires-board-name-intercom - LayoutId: Intercom + boardName: wires-board-name-intercom + layoutId: Intercom - type: ActivatableUIRequiresPower - type: ActivatableUI key: enum.IntercomUiKey.Key diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml index fcdf92dab5c234..8679d595e31815 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml @@ -23,7 +23,7 @@ - type: WiresPanel - type: Wires alwaysRandomize: true - LayoutId: SurveillanceCamera + layoutId: SurveillanceCamera - type: Damageable damageContainer: Inorganic damageModifierSet: Metallic diff --git a/Resources/Prototypes/Entities/Structures/hydro_tray.yml b/Resources/Prototypes/Entities/Structures/hydro_tray.yml index 944ff6ebff525e..f2b8feaa395fbe 100644 --- a/Resources/Prototypes/Entities/Structures/hydro_tray.yml +++ b/Resources/Prototypes/Entities/Structures/hydro_tray.yml @@ -79,8 +79,8 @@ board: HydroponicsTrayMachineCircuitboard - type: WiresPanel - type: Wires - BoardName: wires-board-name-hydroponicstray - LayoutId: HydroponicsTray + boardName: wires-board-name-hydroponicstray + layoutId: HydroponicsTray - type: AmbientSound volume: -9 range: 5 From d99d85500cdfe84798872090a101fe0b19d9a13d Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 11 Oct 2023 14:07:21 +1100 Subject: [PATCH 029/245] Fix shuttle throwing (#20884) The original PR had a lot of strange and unperformant code. --- .../Systems/ShuttleSystem.FasterThanLight.cs | 37 +++++++++---------- .../Shuttles/Systems/ShuttleSystem.cs | 3 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs index e9895e89aaaaa5..49e1b1cb84d82b 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs @@ -479,17 +479,20 @@ private void DoTheDinosaur(TransformComponent xform) // Get enumeration exceptions from people dropping things if we just paralyze as we go var toKnock = new ValueList(); KnockOverKids(xform, ref toKnock); + TryComp(xform.GridUid, out var grid); if (TryComp(xform.GridUid, out var shuttleBody)) { - foreach (var child in toKnock) { - if (!_statusQuery.TryGetComponent(child, out var status)) continue; + if (!_statusQuery.TryGetComponent(child, out var status)) + continue; + _stuns.TryParalyze(child, _hyperspaceKnockdownTime, true, status); // If the guy we knocked down is on a spaced tile, throw them too - TossIfSpaced(shuttleBody, child); + if (grid != null) + TossIfSpaced(grid, shuttleBody, child); } } } @@ -510,25 +513,23 @@ private void KnockOverKids(TransformComponent xform, ref ValueList to /// /// Throws people who are standing on a spaced tile, tries to throw them towards a neighbouring space tile /// - private void TossIfSpaced(PhysicsComponent shuttleBody, EntityUid tossed) + private void TossIfSpaced(MapGridComponent shuttleGrid, PhysicsComponent shuttleBody, EntityUid tossed) { - - if (!_xformQuery.TryGetComponent(tossed, out var childXform)) + if (!_xformQuery.TryGetComponent(tossed, out var childXform) ) return; - if (!_physicsQuery.TryGetComponent(tossed, out var phys)) + // only toss if its on lattice/space + var tile = shuttleGrid.GetTileRef(childXform.Coordinates); + + if (!tile.IsSpace(_tileDefManager)) return; - // only toss if its on lattice/space - var tile = childXform.Coordinates.GetTileRef(EntityManager, _mapManager); + var throwDirection = childXform.LocalPosition - shuttleBody.LocalCenter; - if (tile != null && tile.Value.IsSpace() && _mapManager.TryGetGrid(tile.Value.GridUid, out var grid)) - { - Vector2 direction = -Vector2.UnitY; + if (throwDirection == Vector2.Zero) + return; - var foo = childXform.LocalPosition - shuttleBody.LocalCenter; - _throwing.TryThrow(tossed, foo.Normalized() * 10.0f, 50.0f); - } + _throwing.TryThrow(tossed, throwDirection.Normalized() * 10.0f, 50.0f); } /// @@ -694,10 +695,8 @@ private void Smimsh(EntityUid uid, FixturesComponent? manager = null, MapGridCom return; // Flatten anything not parented to a grid. - var xformQuery = GetEntityQuery(); - var transform = _physics.GetPhysicsTransform(uid, xform, xformQuery); + var transform = _physics.GetPhysicsTransform(uid, xform, _xformQuery); var aabbs = new List(manager.Fixtures.Count); - var mobQuery = GetEntityQuery(); var immune = new HashSet(); foreach (var fixture in manager.Fixtures.Values) @@ -717,7 +716,7 @@ private void Smimsh(EntityUid uid, FixturesComponent? manager = null, MapGridCom continue; } - if (mobQuery.TryGetComponent(ent, out var mob)) + if (_bodyQuery.TryGetComponent(ent, out var mob)) { var gibs = _bobby.GibBody(ent, body: mob); immune.UnionWith(gibs); diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.cs index cc93858948d489..41e4cbc2be9243 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.cs @@ -22,8 +22,10 @@ namespace Content.Server.Shuttles.Systems; [UsedImplicitly] public sealed partial class ShuttleSystem : SharedShuttleSystem { + [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ITileDefinitionManager _tileDefManager = default!; [Dependency] private readonly BodySystem _bobby = default!; [Dependency] private readonly DockingSystem _dockSystem = default!; [Dependency] private readonly DoorSystem _doors = default!; @@ -40,7 +42,6 @@ public sealed partial class ShuttleSystem : SharedShuttleSystem [Dependency] private readonly ThrowingSystem _throwing = default!; [Dependency] private readonly ThrusterSystem _thruster = default!; [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; - [Dependency] private readonly IConfigurationManager _cfg = default!; private ISawmill _sawmill = default!; From ac2f914706eb7ac453c59b08c235d15b3babdaec Mon Sep 17 00:00:00 2001 From: gus Date: Tue, 10 Oct 2023 23:09:26 -0400 Subject: [PATCH 030/245] crabs look for food (#20874) Co-authored-by: gus --- Resources/Prototypes/Entities/Mobs/NPCs/animals.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 7af84db8e58b94..a79a0e0a99b031 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -528,6 +528,9 @@ - type: Tag tags: - VimPilot + - type: HTN + rootTask: + task: RuminantCompound - type: entity name: goat From 106d7f9fdae964cd4e2b0bc29456182db21545e7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Oct 2023 23:10:30 -0400 Subject: [PATCH 031/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6ab83496c3f41b..2163dadf69a526 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: Whisper - changes: - - {message: Temporarily disable the Wheelchair Bound trait until its vehicle code - is fixed., type: Tweak} - id: 4489 - time: '2023-08-09T03:10:47.0000000+00:00' - author: Doru991 changes: - {message: Space cats' EVA suits are now functional! Oxygen not included., type: Tweak} @@ -2957,3 +2951,8 @@ Entries: - {message: Ninja uncloak after attacking with melee weapons., type: Tweak} id: 4988 time: '2023-10-11T02:55:54.0000000+00:00' +- author: gusxyz + changes: + - {message: Crabs will seek out food to eat now., type: Add} + id: 4989 + time: '2023-10-11T03:09:26.0000000+00:00' From bf6827f1e9ed147acfec13df3aeef396618a14a0 Mon Sep 17 00:00:00 2001 From: Vasilis Date: Wed, 11 Oct 2023 05:11:46 +0200 Subject: [PATCH 032/245] Hopefully??? (#20865) --- Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs b/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs index 0302c62f008c8e..688218d6ca1d46 100644 --- a/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs @@ -48,7 +48,7 @@ private void OnSupercritical(EntityUid uid, ElectricityAnomalyComponent componen if (mobQuery.HasComponent(ent)) validEnts.Add(ent); - if (_random.Prob(0.2f) && poweredQuery.HasComponent(ent)) + if (_random.Prob(0.01f) && poweredQuery.HasComponent(ent)) validEnts.Add(ent); } From 33d8cd49fa39f3b2487744bbf918dd08b0602ca3 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Oct 2023 23:12:55 -0400 Subject: [PATCH 033/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2163dadf69a526..b8d6356b598390 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Doru991 - changes: - - {message: Space cats' EVA suits are now functional! Oxygen not included., type: Tweak} - id: 4490 - time: '2023-08-09T03:35:15.0000000+00:00' - author: Flareguy changes: - {message: 'The overhead perspective, hueshifted-looking rocks now use sprites @@ -2956,3 +2951,9 @@ Entries: - {message: Crabs will seek out food to eat now., type: Add} id: 4989 time: '2023-10-11T03:09:26.0000000+00:00' +- author: Vasilis + changes: + - {message: Potentially fix (or hopefully at least reduce) electrical anomaly lagging + everyone on supercrit., type: Fix} + id: 4990 + time: '2023-10-11T03:11:46.0000000+00:00' From d2665b6bba567da8b8941aab52946c9d57b2de42 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Wed, 11 Oct 2023 04:17:44 +0100 Subject: [PATCH 034/245] glue only mutes if drank (#20627) * glue only mutes if drunk * glue mutes and fixes bleeding on touch * no mute on touch --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- Resources/Prototypes/Reagents/cleaning.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Prototypes/Reagents/cleaning.yml b/Resources/Prototypes/Reagents/cleaning.yml index a24d8e60ff98ef..c1f8c2b352afca 100644 --- a/Resources/Prototypes/Reagents/cleaning.yml +++ b/Resources/Prototypes/Reagents/cleaning.yml @@ -67,6 +67,13 @@ viscosity: 0.5 tileReactions: - !type:SpillTileReaction + reactiveEffects: + Acidic: + methods: [ Touch ] + effects: + # pva glue? no, antibiotic glue for sealing wounds + - !type:ModifyBleedAmount + amount: -1.5 metabolisms: Narcotic: effects: @@ -76,6 +83,8 @@ type: Add time: 5 refresh: false + Drink: + effects: - !type:GenericStatusEffect key: Muted component: Muted From c7d1fb80b5513f427783167c201628435f9a9f7e Mon Sep 17 00:00:00 2001 From: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> Date: Tue, 10 Oct 2023 20:43:48 -0700 Subject: [PATCH 035/245] Add a command to hide replay UI (#19956) --- .../Ghost/GhostToggleSelfVisibility.cs | 30 ++++++++++++++++ .../Replay/ContentReplayPlaybackManager.cs | 2 ++ .../ReplayToggleScreenshotModeCommand.cs | 35 +++++++++++++++++++ .../Replay/UI/ReplaySpectateEntityState.cs | 8 +++-- 4 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 Content.Client/Ghost/GhostToggleSelfVisibility.cs create mode 100644 Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs diff --git a/Content.Client/Ghost/GhostToggleSelfVisibility.cs b/Content.Client/Ghost/GhostToggleSelfVisibility.cs new file mode 100644 index 00000000000000..321bd9d32a4ba1 --- /dev/null +++ b/Content.Client/Ghost/GhostToggleSelfVisibility.cs @@ -0,0 +1,30 @@ +using Content.Shared.Ghost; +using Robust.Client.GameObjects; +using Robust.Shared.Console; + +namespace Content.Client.Ghost; + +public sealed class GhostToggleSelfVisibility : IConsoleCommand +{ + public string Command => "toggleselfghost"; + public string Description => "Toggles seeing your own ghost."; + public string Help => "toggleselfghost"; + public void Execute(IConsoleShell shell, string argStr, string[] args) + { + var attachedEntity = shell.Player?.AttachedEntity; + if (!attachedEntity.HasValue) + return; + + var entityManager = IoCManager.Resolve(); + if (!entityManager.HasComponent(attachedEntity)) + { + shell.WriteError("Entity must be a ghost."); + return; + } + + if (!entityManager.TryGetComponent(attachedEntity, out SpriteComponent? spriteComponent)) + return; + + spriteComponent.Visible = !spriteComponent.Visible; + } +} diff --git a/Content.Client/Replay/ContentReplayPlaybackManager.cs b/Content.Client/Replay/ContentReplayPlaybackManager.cs index a96752383a5648..cbb511725523f7 100644 --- a/Content.Client/Replay/ContentReplayPlaybackManager.cs +++ b/Content.Client/Replay/ContentReplayPlaybackManager.cs @@ -46,6 +46,8 @@ public sealed class ContentReplayPlaybackManager /// public Type? DefaultState; + public bool IsScreenshotMode = false; + private bool _initialized; public void Initialize() diff --git a/Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs b/Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs new file mode 100644 index 00000000000000..40b1a135d44d2e --- /dev/null +++ b/Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs @@ -0,0 +1,35 @@ +using Content.Client.UserInterface.Systems.Chat; +using Content.Shared.Chat; +using Robust.Client.Replays.Commands; +using Robust.Client.Replays.UI; +using Robust.Client.UserInterface; +using Robust.Shared.Console; + +namespace Content.Client.Replay; + +public sealed class ReplayToggleScreenshotModeCommand : BaseReplayCommand +{ + [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!; + [Dependency] private readonly ContentReplayPlaybackManager _replayManager = default!; + + public override string Command => "replay_toggle_screenshot_mode"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + var screen = _userInterfaceManager.ActiveScreen; + if (screen == null) + return; + + _replayManager.IsScreenshotMode = !_replayManager.IsScreenshotMode; + + var showReplayWidget = _replayManager.IsScreenshotMode; + screen.ShowWidget(showReplayWidget); + + foreach (var chatBox in _userInterfaceManager.GetUIController().Chats) + { + chatBox.ChatInput.Visible = !showReplayWidget; + if (!showReplayWidget) + chatBox.ChatInput.ChannelSelector.Select(ChatSelectChannel.Local); + } + } +} diff --git a/Content.Client/Replay/UI/ReplaySpectateEntityState.cs b/Content.Client/Replay/UI/ReplaySpectateEntityState.cs index f36c366dae40f8..c64201bc036091 100644 --- a/Content.Client/Replay/UI/ReplaySpectateEntityState.cs +++ b/Content.Client/Replay/UI/ReplaySpectateEntityState.cs @@ -12,6 +12,8 @@ namespace Content.Client.Replay.UI; [Virtual] public class ReplaySpectateEntityState : GameplayState { + [Dependency] private readonly ContentReplayPlaybackManager _replayManager = default!; + protected override void Startup() { base.Startup(); @@ -21,11 +23,13 @@ protected override void Startup() return; screen.ShowWidget(false); - SetAnchorAndMarginPreset(screen.GetOrAddWidget(), LayoutPreset.TopLeft, margin: 10); + var replayWidget = screen.GetOrAddWidget(); + SetAnchorAndMarginPreset(replayWidget, LayoutPreset.TopLeft, margin: 10); + replayWidget.Visible = !_replayManager.IsScreenshotMode; foreach (var chatbox in UserInterfaceManager.GetUIController().Chats) { - chatbox.ChatInput.Visible = false; + chatbox.ChatInput.Visible = _replayManager.IsScreenshotMode; } } From f789de2cd3dd5259fa4677e09521cf076b0645ea Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Oct 2023 23:44:51 -0400 Subject: [PATCH 036/245] 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 b8d6356b598390..d9502b721c34f8 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Flareguy - changes: - - {message: 'The overhead perspective, hueshifted-looking rocks now use sprites - from SS13 that match the perspective of all other walls.', type: Tweak} - - {message: Added ironrock for mappers to use. It is easily identifiable by its - bright red colors and garish appearance., type: Add} - id: 4491 - time: '2023-08-09T04:00:27.0000000+00:00' - author: Lank changes: - {message: What Moths consider to be made of cloth should now be more accurate., @@ -2957,3 +2949,11 @@ Entries: everyone on supercrit., type: Fix} id: 4990 time: '2023-10-11T03:11:46.0000000+00:00' +- author: ShadowCommander + changes: + - {message: 'Added toggleselfghost command, which toggles being able to see your + own ghost.', type: Add} + - {message: 'Added replay_toggle_screenshot_mode command, which toggles the HUD + in replay mode to look similar to ingame.', type: Add} + id: 4991 + time: '2023-10-11T03:43:48.0000000+00:00' From 440a578047539e0cd5659894e137ebf4336bd42b Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Wed, 11 Oct 2023 14:45:05 +1100 Subject: [PATCH 037/245] Add mind entities to PVS overrides (#20847) --- Content.Server/GameTicking/GameTicker.Player.cs | 8 +++++++- Content.Server/Mind/MindSystem.cs | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Content.Server/GameTicking/GameTicker.Player.cs b/Content.Server/GameTicking/GameTicker.Player.cs index f6402589b2e19d..3aef1bbe78525a 100644 --- a/Content.Server/GameTicking/GameTicker.Player.cs +++ b/Content.Server/GameTicking/GameTicker.Player.cs @@ -29,8 +29,11 @@ private async void PlayerStatusChanged(object? sender, SessionStatusEventArgs ar if (_mind.TryGetMind(session.UserId, out var mindId, out var mind)) { - if (args.OldStatus == SessionStatus.Connecting && args.NewStatus == SessionStatus.Connected) + if (args.NewStatus != SessionStatus.Disconnected) + { mind.Session = session; + _pvsOverride.AddSessionOverride(mindId.Value, session); + } DebugTools.Assert(mind.Session == session); } @@ -109,7 +112,10 @@ private async void PlayerStatusChanged(object? sender, SessionStatusEventArgs ar { _chatManager.SendAdminAnnouncement(Loc.GetString("player-leave-message", ("name", args.Session.Name))); if (mind != null) + { + _pvsOverride.ClearOverride(mindId!.Value); mind.Session = null; + } _userDb.ClientDisconnected(session); break; diff --git a/Content.Server/Mind/MindSystem.cs b/Content.Server/Mind/MindSystem.cs index 06f97bd3b9f676..373007fd1b5a2b 100644 --- a/Content.Server/Mind/MindSystem.cs +++ b/Content.Server/Mind/MindSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Mind.Components; using Content.Shared.Players; using Robust.Server.GameObjects; +using Robust.Server.GameStates; using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Network; @@ -25,6 +26,7 @@ public sealed class MindSystem : SharedMindSystem [Dependency] private readonly MetaDataSystem _metaData = default!; [Dependency] private readonly SharedGhostSystem _ghosts = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly PvsOverrideSystem _pvsOverride = default!; public override void Initialize() { @@ -258,6 +260,8 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC var oldEntity = mind.OwnedEntity; if (oldComp != null && oldEntity != null) { + if (oldComp.Mind != null) + _pvsOverride.ClearOverride(oldComp.Mind.Value); oldComp.Mind = null; RaiseLocalEvent(oldEntity.Value, new MindRemovedMessage(oldEntity.Value, mind), true); } @@ -309,6 +313,7 @@ public override void SetUserId(EntityUid mindId, NetUserId? userId, MindComponen if (mind.UserId == userId) return; + _pvsOverride.ClearOverride(mindId); if (userId != null && !_players.TryGetPlayerData(userId.Value, out _)) { Log.Error($"Attempted to set mind user to invalid value {userId}"); @@ -350,6 +355,7 @@ public override void SetUserId(EntityUid mindId, NetUserId? userId, MindComponen if (_players.TryGetSessionById(userId.Value, out var ret)) { mind.Session = ret; + _pvsOverride.AddSessionOverride(mindId, ret); _actor.Attach(mind.CurrentEntity, ret); } From d4667477a5ada5d1c96c2ed25064695c909d9b27 Mon Sep 17 00:00:00 2001 From: nmajask Date: Wed, 11 Oct 2023 01:05:18 -0400 Subject: [PATCH 038/245] Add casual jumpsuit/skirts (#20422) --- .../Inventories/clothesmate.yml | 6 ++ .../Entities/Clothing/Uniforms/jumpskirts.yml | 90 ++++++++++++++++++ .../Entities/Clothing/Uniforms/jumpsuits.yml | 90 ++++++++++++++++++ ...quipped-INNERCLOTHING-jumpskirt-monkey.png | Bin 0 -> 754 bytes .../equipped-INNERCLOTHING-jumpskirt.png | Bin 0 -> 350 bytes ...equipped-INNERCLOTHING-jumpsuit-monkey.png | Bin 0 -> 749 bytes .../equipped-INNERCLOTHING-jumpsuit.png | Bin 0 -> 435 bytes .../equipped-INNERCLOTHING-shirt-monkey.png | Bin 0 -> 1005 bytes .../equipped-INNERCLOTHING-shirt.png | Bin 0 -> 570 bytes .../Jumpsuit/casual.rsi/icon-jumpskirt.png | Bin 0 -> 226 bytes .../Jumpsuit/casual.rsi/icon-jumpsuit.png | Bin 0 -> 170 bytes .../Jumpsuit/casual.rsi/icon-shirt.png | Bin 0 -> 287 bytes .../casual.rsi/inhand-left-jumpskirt.png | Bin 0 -> 210 bytes .../casual.rsi/inhand-left-jumpsuit.png | Bin 0 -> 224 bytes .../Jumpsuit/casual.rsi/inhand-left-shirt.png | Bin 0 -> 295 bytes .../casual.rsi/inhand-right-jumpskirt.png | Bin 0 -> 216 bytes .../casual.rsi/inhand-right-jumpsuit.png | Bin 0 -> 228 bytes .../casual.rsi/inhand-right-shirt.png | Bin 0 -> 313 bytes .../Uniforms/Jumpsuit/casual.rsi/meta.json | 68 +++++++++++++ 19 files changed, 254 insertions(+) create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpskirt-monkey.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpskirt.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpsuit-monkey.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpsuit.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-shirt-monkey.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-shirt.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/icon-jumpskirt.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/icon-jumpsuit.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/icon-shirt.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-left-jumpskirt.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-left-jumpsuit.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-left-shirt.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-right-jumpskirt.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-right-jumpsuit.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-right-shirt.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/meta.json diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml index 373c8663abcb21..3c2fff3e7533c7 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml @@ -38,6 +38,12 @@ ClothingUniformJumpsuitHawaiRed: 2 ClothingUniformJumpsuitHawaiYellow: 2 ClothingUniformJumpsuitFlannel: 2 + ClothingUniformJumpsuitCasualBlue: 2 + ClothingUniformJumpskirtCasualBlue: 2 + ClothingUniformJumpsuitCasualPurple: 2 + ClothingUniformJumpskirtCasualPurple: 2 + ClothingUniformJumpsuitCasualRed: 2 + ClothingUniformJumpskirtCasualRed: 2 ClothingShoesColorBlack: 8 ClothingShoesColorBrown: 4 ClothingShoesColorWhite: 3 diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index d0eeb5b64b9f99..ea1c933b4c21aa 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -835,3 +835,93 @@ - type: Construction graph: WebObjects node: jumpskirt + +- type: entity + parent: ClothingUniformSkirtBase + id: ClothingUniformJumpskirtCasualBlue + name: casual blue jumpskirt + description: A loose worn blue shirt with a grey skirt, perfect for someone looking to relax. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + layers: + - state: icon-jumpskirt + - state: icon-shirt + color: "#134fc1" + - type: Item + inhandVisuals: + left: + - state: inhand-left-jumpskirt + - state: inhand-left-shirt + color: "#134fc1" + right: + - state: inhand-right-jumpskirt + - state: inhand-right-shirt + color: "#134fc1" + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING-jumpskirt + - state: equipped-INNERCLOTHING-shirt + color: "#134fc1" + +- type: entity + parent: ClothingUniformSkirtBase + id: ClothingUniformJumpskirtCasualPurple + name: casual purple jumpskirt + description: A loose worn purple shirt with a grey skirt, perfect for someone looking to relax. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + layers: + - state: icon-jumpskirt + - state: icon-shirt + color: "#9c0dff" + - type: Item + inhandVisuals: + left: + - state: inhand-left-jumpskirt + - state: inhand-left-shirt + color: "#9c0dff" + right: + - state: inhand-right-jumpskirt + - state: inhand-right-shirt + color: "#9c0dff" + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING-jumpskirt + - state: equipped-INNERCLOTHING-shirt + color: "#9c0dff" + +- type: entity + parent: ClothingUniformSkirtBase + id: ClothingUniformJumpskirtCasualRed + name: casual red jumpskirt + description: A loose worn red shirt with a grey skirt, perfect for someone looking to relax. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + layers: + - state: icon-jumpskirt + - state: icon-shirt + color: "#b30000" + - type: Item + inhandVisuals: + left: + - state: inhand-left-jumpskirt + - state: inhand-left-shirt + color: "#b30000" + right: + - state: inhand-right-jumpskirt + - state: inhand-right-shirt + color: "#b30000" + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING-jumpskirt + - state: equipped-INNERCLOTHING-shirt + color: "#b30000" diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index 5e857141b858aa..8f4dbddaa9a596 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -1338,3 +1338,93 @@ sprite: Clothing/Uniforms/Jumpsuit/gladiator.rsi - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/gladiator.rsi + +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitCasualBlue + name: casual blue jumpsuit + description: A loose worn blue shirt with a grey pants, perfect for someone looking to relax. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + layers: + - state: icon-jumpsuit + - state: icon-shirt + color: "#134fc1" + - type: Item + inhandVisuals: + left: + - state: inhand-left-jumpsuit + - state: inhand-left-shirt + color: "#134fc1" + right: + - state: inhand-right-jumpsuit + - state: inhand-right-shirt + color: "#134fc1" + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING-jumpsuit + - state: equipped-INNERCLOTHING-shirt + color: "#134fc1" + +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitCasualPurple + name: casual purple jumpsuit + description: A loose worn purple shirt with a grey pants, perfect for someone looking to relax. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + layers: + - state: icon-jumpsuit + - state: icon-shirt + color: "#9c0dff" + - type: Item + inhandVisuals: + left: + - state: inhand-left-jumpsuit + - state: inhand-left-shirt + color: "#9c0dff" + right: + - state: inhand-right-jumpsuit + - state: inhand-right-shirt + color: "#9c0dff" + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING-jumpsuit + - state: equipped-INNERCLOTHING-shirt + color: "#9c0dff" + +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitCasualRed + name: casual red jumpsuit + description: A loose worn red shirt with a grey pants, perfect for someone looking to relax. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + layers: + - state: icon-jumpsuit + - state: icon-shirt + color: "#b30000" + - type: Item + inhandVisuals: + left: + - state: inhand-left-jumpsuit + - state: inhand-left-shirt + color: "#b30000" + right: + - state: inhand-right-jumpsuit + - state: inhand-right-shirt + color: "#b30000" + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/casual.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING-jumpsuit + - state: equipped-INNERCLOTHING-shirt + color: "#b30000" diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpskirt-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpskirt-monkey.png new file mode 100644 index 0000000000000000000000000000000000000000..e6db1f9f0a6ae441723b537a5d21b88ad3f4404a GIT binary patch literal 754 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>U|Qqp;uumf z=k2VGS+^Y|j{iRuDr)vAVZ}%0j(H3CFC68#a*=g=u-t;xCns&3;kR^hyN%;?zF422 z9{B}rm-rf;!k4$O*xYQ>G0S_M5Z~_B_vXeXd)HTvpZ+><+@1UG|9<~Vb4%145+&MT zNUf4(J+^AD6V zGR%9fd3&3oRPVE&^7Hl|IQa14pB=v2HhUE8<4-96lCGFPwQhSI!<)AgO*|NHw3S^F zZF{wbv(fEPsq~aXL0(f&KV@LJnIrc2W5qu9hKB_mcP|G&zFRVD!`ZiA{r&tra+O5G zybhMeZq?g=&(^q4-FS&;!z_Ue3%@1*PRCDQVs*0LVQ+OB!-2=D3+IQ+UbsF*O8$!M zwfapl3U2BiPMWRVPIBU{HZ^~CE1m7(l#lT6=a#>|*l~fpT<(;p>f$x6e>iN6*ZF70 z&y3jjDtA-w+Yi(Grhm29W<9K6%4r=U?A~hg%~;LL>C9yy)yGvirNv|IM}`0)Cf?go zEAMYu8&Numx!}42`vdP6N0VoNS@P3t?!-&xg|F=n#A{vdOHH;8%WS>;=nJFDqc5BO zPqz5Cga1OVgSiaDUAB_LjM$jM*-?AcSmxQ?VJu}b(w!wKe0*}n{KG1X_HD~rC@IyJ z_)h<7R_JzCq3?APDhsDLec*3+UTNOOqPg@{iPg%g2|@QRe6{iC&EYQm$FFdni@D+T zu2m5_N)hwy^XgFTDS*{5^Bh7PFUiGtZ_~B+r_d{YAcb-^Z87tM}~n`Da==`P*yHa}}lkYzt$d eNoQyCAJ*A+LLtp=Gu45Kn8DN4&t;ucLK6VV=2r~> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpskirt.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpskirt.png new file mode 100644 index 0000000000000000000000000000000000000000..39d5c95a89345cce5d0625d6df8917394d8be978 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zB|KdmLn`LH zy=B|iY#`9~P=EDWfy+fLCpBvr-rX;3*|P0UmGlkYMIH7JLvPf|a|Yh{R3lNI%n39G z1m;coSoqz@{QO<-owMz&E1mD|{d)aJg!Hplac6vL@9&S<{r-1S+Ah78JFCO~o;RJW zHz_9QvdN?+0#2E?!!%WW^Lrl~y2Wl&iCAI1GPM3G=ZC`Y#pmuHowsz#l;UYKb>*(E z&AJx9H}dkLG_{w{^F4yjMNSe)o}$8gxZsN7in#jX3p?+w{rK>Gm^{QaK=Oan?&$)D zPG1Y*SSWK>{*M`maTg&ck9yk_qX3JlStkw7u(CTTHnK?U-qW$V|NRy!Px%r%6OXRCt{2nz4)8U>L@q+;?e+WN|QHmktMUJxJ(K3)-#Q{U1)f*|}4f{uM65 zfm^pmde@;OaH}pIx+&ZgJZNjb4)zPt8ug9F56<@oqJAcMo;=}uWAX-I7=~dOhG7_n zVHoDrFenR89ShCpFC+kr$K!Ne&+{YzeE9L*cqPsN03RQJ<8D4jxQDrR=5yb%0AQ>B z)#ERc1}T76tA!*{Wh6Q;5g3G_J+eD$;>8Q#WsDaCMf_ZC4wN3uInO65;%^N zzE36-yuH6S-p}VG0~ESK;M3)08i3LU76C+2WEci%muLa_zMt;=Y&J{BE0xMoLRi(0 zjT)nbk90R2f0Q>5b(o)3+0P6L+@%r`_0MNgF((JMi8in_UKVXE&O}qkO7*)!q?%I7yj61{7r{4~ zA`|{Iaknz(L$ZzCXs>)<)&DFds6~)m18!x@0AG@XG=6Bl&i|0cx3PB(Xs;|27P7G$>$I|CMQQ+vB31U76!FJ3 zK(_(iZ~(du=!OH(Z9q31fNlf2;Q(|S&%ZY0xzGPf!c&9i-B$8+s|T` z!z4CcZFMtuXc&e$T{@kPZVMz%{xnEJN{NAOV(M5+Z7PN5d2%!wmFgi+cj{Oe*d}>< z`IY2Xp96%IB8^z1)9pr6W9fT-~$OnNu1puJYXsmTouh)$*45=Q-Y|=05*#w4R f7=~dO=Be=)!vIeqL5ot<00000NkvXXu0mjfy0A)! literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpsuit.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-jumpsuit.png new file mode 100644 index 0000000000000000000000000000000000000000..b570cd06383437a9295a1a48c17923a7fa56fbf8 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zb3I)gLn`LH zy=9x%Vj#f!K+&t!X03k16YhXw2EO;)KiDov?NoJ5d7}D8E%}W9r0=2H5#M@y6S^gp zfF?megL;qQ=XsyY&(u$@nK^Ui>s@Cjtb3i7Htkurf$`Sd-81iR%MJUt`wP=jk*~G( z!h*h+UA$I4jp1;NX$XnE?)}fAZ^_nW5#E0LDwvZbE8m}GRvJCrg Zum{cE|8@S9{Hq}MdAjPx&r%6OXRCt{2nlWhGKoo|5`Rp1OFBv>&=vV?BO=(H8xNBtU!AtgRf`n#P#&$1B z$dakEAwfmTm>NnFC|GL=ow`^!_r0+CRaQel$~kp<i7k8y;EK=kjS)oeCV8@8`aPhPmsot+&Jk(9R3EN~P>!X36H z#AW+*7(-iNdOM0DkJx_=MP&{bl{wTf$cS4ipazWCXGIObdAW%5 zaxvC-7>hNzk1|6*Xc~;72!=6e`o{SCk@nDubk^I#@^aKt@6-BUhC`Hygo~hbsoby3 zVWU*QQer%AlnU6d%wdVKnSFTxSYiyVa&fFae@>8PigU%|L^=Rpdp#-pwBe7&qV`GL zxdzlyZQDw2h%rtpX;Y~ILL_H_hm6WBpld+Z4rGlEK-LaqjSfK84rGlEK-LaqjSfK8 z4rGlEK-Laqjr5uzFj$3o^(2QzYF#iZ+)@GGuGRhyOaB5K#<1YJ#99Z$*W|eUzDR01 zjDfWdXu)-9GcTV{=}#=UZoE$q*ChaOhWqgjV-Ve!SA}cvL;!=W@-Phfd#SStN;QC= z39u{+rfFiqb;-7Em9CVqZ97f`_aS{=V5;y1k>oyor_+h|HocLn3)lN(Sjg(a%qx zV3Fle>0Kdx6s2CT8)s){n4h0laz>PKy65F0PWlnv{<_9yK0otftkGyR8jVJy(P%Up b%_HUyK{#;AB$-Mn00000NkvXXu0mjfv*y}$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-shirt.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/equipped-INNERCLOTHING-shirt.png new file mode 100644 index 0000000000000000000000000000000000000000..e89f172b4a6a5b486e5b3cae737e27e20f9e39d3 GIT binary patch literal 570 zcmV-A0>%A_P)Px$^hrcPRCt{2nqiKFAPj};W-q}tm}BU1;TUiXdkpr+P7Sh%z=*S(eP3dt0=~9l zLo7r900000;D0ie8bfkzjR{IAdORLe+%^%Bb1pD5&C9ZTW>MgToW7hZrMCObyq&k| zf7BWy&Jz(CW5V=&`1HIMqhcekMD&$XG|w|J^LEVhOwx9#es~_nn6R#E5Y}}K;`C9Q zj2)q0;!6FZxCoWnt_VPj^F8`ipMX+|thMC5-`&$%@4iLvJy~ma_pTtPpQA^=m?Mla zL2JDePMsE*`A0wRJuOL6YT*w3(-|NcHqEX_NWVBUzrtw!>Hr*FxAtpgwEkzQu{P>g zjeCcF^*SJC)Z4BlO@?R5u|(5KP!>IDB9a8OEX$M|)60=QQGO-ZqhB3>xTDFew&HAi zG_I9*>jMA)0000000000000qv|CDsj4Jm{7;G7G&AEh-k*9A$&(0zgEY@GIiIq zT4@e|_kJry#e#PSAU#j_2h{R%aWof<(Zo*YY-*uc9?y}A-syM_vFEk`5Z(K>&p6sI zSj#1!05k8B;%Kb3n{Ljg7P_j(XXWWT_zgAy000000Pu(T0y1w&6`{e&`~Uy|07*qo IM6N<$fz>% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/icon-jumpskirt.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/icon-jumpskirt.png new file mode 100644 index 0000000000000000000000000000000000000000..ced9f44050a3572ab6c0288e8e1940db080376cb GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}b39!fLn2z= zUbN*qtiaRu&^&ZGNBm(+SH1&(&DSx0@)CdHFJgM`ox2lH#IwT=9EvRhP8@u-I-zg> zzY5uUK5BjY_JZKIN>1l~ZmB=Fvzz0#>xsq7muE1FL|hkbsJ&n9)p<>-IDO9bsK`8) z0$+#Yug|`zy&0IzYwYZzxBt~_>o+-CN(a)V7}D4r)`~U+b?tsXH}fxxW%2Vz0*AgZ YRkfSueLtWP3Unufr>mdKI;Vst06P9y?EnA( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/icon-jumpsuit.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/icon-jumpsuit.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1c19df7228170bd1b54a738896bfa00386c5d5 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}DV{ElArY-_ zFYe}TFyL{$$i8UP8`DkyZ6cMK9av2|3l=Qcx%`WHkqS_0f|F+I|4Hv7)26w%L}eeI zWgMUFd;adGRzXGM$um=|3SJ{kZ3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/icon-shirt.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/icon-shirt.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6448c92ef122ebf4737f49251631de50708fd1 GIT binary patch literal 287 zcmV+)0pR|LP)Px#*-1n}R9J=Wl)(+dAPhx+sxIL*Sfh+jck8w0TDq&psI(p5CUpj06q-BE~q> znC?I+1px4x{HRj>YTS(F1g^fn_3L?#jH^}OiCcaLT7Iqeb^>%QLar%Ty_gFbL|Npv!CHuGM>|>0F-38BOvgyPbCYK8X)dPXW(yiCd*X*x) ze`0yklC9UKr=GMqUps5ro8R;98+*oI|5|$e-ih5wDxTYNrRSBum(|>PH04kBzt2%u zt0DS71cZLwv4k&v?IyYDS0Anpz54igSlCyI6(3lIj>Pb`?#|)?sq=L8b6Mw<&;$To C4OQ9z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-left-jumpsuit.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-left-jumpsuit.png new file mode 100644 index 0000000000000000000000000000000000000000..346f153e134321211629a109ecbbfc4ce2605dcd GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|W_h|ehE&XX zd()chkb?;81?`B|FE^?f+f> zd~eXF?vsTk)$gZ2|GfV*#HmdKI;Vst04T9u`~Uy| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-left-shirt.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-left-shirt.png new file mode 100644 index 0000000000000000000000000000000000000000..fd167d63e424e16076d0ea600c6018fbf1865a3a GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|9(uYshE&XX zd-EXgVFdw~i@v)S@V+Y8d7CZQLGnq9Xrhj4MH1`F{mLH6Ir_^DnSnZhz~J!RY_FAl z*U~@#+Bzj@?pf>4AuT(qdky)%C-ubFvy|TR-&uXu^19mdJ@W5r-(Gh9UYWbMzU`H= zhuVTENlQhHjky)yw7>nH_URUPy8vHx{o=d-C(f*1eQvj_{jPBL(7EMqMXa;xOxE|U zvdVw5kVpFO+}zvC<}W-4wVoj%aFtn9RL`B%mER(K@4D$*GQKjavh?0|JZsgrij&$G lG;Td!Iy>xEG6RENCF8=>S(l|I@hX5E?&<31vd$@?2>|Qbc!K}{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-right-jumpskirt.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-right-jumpskirt.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a1b16700b5e55c25919190751c8be944b0b697 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|CV9FzhE&XX zd()chuz>*U0bh@oaqI>^{yo1a7_+*3l>^u5AHp3|&X{mBb+WI1=L*yT1RtI+%Z%!q zQ-AyBp8i`)3uTm-Zs9pBuyjhre8G)R=Hy>bu0J+)&-Yu4KilM=yEf-+^xa3-u4iWc z*5CV-6|8?j=3did)oZpL&aTSt`MwHDTWm4p)%lP;@5Y)K-ZH_KRFG0nS3j3^P6CsK)Hz%vLV`mlD^<6e`J!g4qTkX5~XRqx! z8ea3)N^|M6;=T5t%42o)A%-n4+j?w=TWLCo3fm|fR|KSwtrEX{fNB3T#-gvq20qFn Q8$e1uUHx3vIVCg!0Q|LH7XSbN literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-right-shirt.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/inhand-right-shirt.png new file mode 100644 index 0000000000000000000000000000000000000000..9304ca453af4d37718cbdae95abb7a8b20e5dd80 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|K6|=2hE&XX zd-EXgVFjMn#HdovYYBZluT3Kk%N@2Abe*EM#VdNnzxN!RRbF#q;y8d>K){K^(PdBE zY0K*DS{9{8me1RB+$-0g=kwMy&G*ohmHU;u{F$g=c&PrVUuC|b?K4}f)~{N(v+9$X z`hhb|GuO7SSan=N{+rvzvm(hc@nL(fudVUdRsP3rH)*@v+KX=czvbO~rXFx*vGJ`J z*YBOIzIi*xc5iBA+54YMZ+>EeIDnzeEIRp4@^*=vv(_5gUCrtJsGYZ0JnwdRdATvS zviY&)v)3B_>$oZPSnjUc|az4y85}Sb4q9e E0A+uGWdHyG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/meta.json new file mode 100644 index 00000000000000..91a74ea1726a86 --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/casual.rsi/meta.json @@ -0,0 +1,68 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by nmajask (github) for ss14, based on sprites by Tokiko (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon-jumpsuit" + }, + { + "name": "icon-jumpskirt" + }, + { + "name": "icon-shirt" + }, + { + "name": "equipped-INNERCLOTHING-jumpsuit", + "directions": 4 + }, + { + "name": "equipped-INNERCLOTHING-jumpskirt", + "directions": 4 + }, + { + "name": "equipped-INNERCLOTHING-shirt", + "directions": 4 + }, + { + "name": "equipped-INNERCLOTHING-jumpsuit-monkey", + "directions": 4 + }, + { + "name": "equipped-INNERCLOTHING-jumpskirt-monkey", + "directions": 4 + }, + { + "name": "equipped-INNERCLOTHING-shirt-monkey", + "directions": 4 + }, + { + "name": "inhand-left-jumpsuit", + "directions": 4 + }, + { + "name": "inhand-left-jumpskirt", + "directions": 4 + }, + { + "name": "inhand-left-shirt", + "directions": 4 + }, + { + "name": "inhand-right-jumpsuit", + "directions": 4 + }, + { + "name": "inhand-right-jumpskirt", + "directions": 4 + }, + { + "name": "inhand-right-shirt", + "directions": 4 + } + ] +} From e911c9e516dd0ccbc1ff9e4adb8e73a9b7bc87d7 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Wed, 11 Oct 2023 07:34:51 +0100 Subject: [PATCH 039/245] Rename SmokeDissipateSpawnComponent to SpawnOnDespawnComponent (#20782) --- .../SmokeDissipateSpawnComponent.cs | 16 -------------- .../Fluids/EntitySystems/SmokeSystem.cs | 11 ---------- .../Components/SpawnOnDespawnComponent.cs | 18 +++++++++++++++ .../EntitySystems/SpawnOnDespawnSystem.cs | 22 +++++++++++++++++++ .../Entities/Effects/chemistry_effects.yml | 4 ++-- 5 files changed, 42 insertions(+), 29 deletions(-) delete mode 100644 Content.Server/Chemistry/Components/SmokeDissipateSpawnComponent.cs create mode 100644 Content.Server/Spawners/Components/SpawnOnDespawnComponent.cs create mode 100644 Content.Server/Spawners/EntitySystems/SpawnOnDespawnSystem.cs diff --git a/Content.Server/Chemistry/Components/SmokeDissipateSpawnComponent.cs b/Content.Server/Chemistry/Components/SmokeDissipateSpawnComponent.cs deleted file mode 100644 index 068ac432b6529f..00000000000000 --- a/Content.Server/Chemistry/Components/SmokeDissipateSpawnComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Server.Fluids.EntitySystems; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Server.Chemistry.Components; - - -/// -/// When a despawns this will spawn another entity in its place. -/// -[RegisterComponent, Access(typeof(SmokeSystem))] -public sealed partial class SmokeDissipateSpawnComponent : Component -{ - [DataField("prototype", required: true, customTypeSerializer:typeof(PrototypeIdSerializer))] - public string Prototype = string.Empty; -} diff --git a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs index b3590fec40206a..2f62f54fd16022 100644 --- a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs +++ b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs @@ -38,17 +38,6 @@ public override void Initialize() SubscribeLocalEvent(OnSmokeUnpaused); SubscribeLocalEvent(OnReactionAttempt); SubscribeLocalEvent(OnSmokeSpread); - SubscribeLocalEvent(OnSmokeDissipate); - } - - private void OnSmokeDissipate(EntityUid uid, SmokeDissipateSpawnComponent component, ref TimedDespawnEvent args) - { - if (!TryComp(uid, out var xform)) - { - return; - } - - Spawn(component.Prototype, xform.Coordinates); } private void OnSmokeSpread(EntityUid uid, SmokeComponent component, ref SpreadNeighborsEvent args) diff --git a/Content.Server/Spawners/Components/SpawnOnDespawnComponent.cs b/Content.Server/Spawners/Components/SpawnOnDespawnComponent.cs new file mode 100644 index 00000000000000..24b57a4b1c0acb --- /dev/null +++ b/Content.Server/Spawners/Components/SpawnOnDespawnComponent.cs @@ -0,0 +1,18 @@ +using Content.Server.Spawners.EntitySystems; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Spawners.Components; + +/// +/// When a TimedDespawnComponent" despawns, another one will be spawned in its place. +/// +[RegisterComponent, Access(typeof(SpawnOnDespawnSystem))] +public sealed partial class SpawnOnDespawnComponent : Component +{ + /// + /// Entity prototype to spawn. + /// + [DataField(required: true)] + public EntProtoId Prototype = string.Empty; +} diff --git a/Content.Server/Spawners/EntitySystems/SpawnOnDespawnSystem.cs b/Content.Server/Spawners/EntitySystems/SpawnOnDespawnSystem.cs new file mode 100644 index 00000000000000..77927c9bba9471 --- /dev/null +++ b/Content.Server/Spawners/EntitySystems/SpawnOnDespawnSystem.cs @@ -0,0 +1,22 @@ +using Content.Server.Spawners.Components; +using Robust.Shared.Spawners; + +namespace Content.Server.Spawners.EntitySystems; + +public sealed class SpawnOnDespawnSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnDespawn); + } + + private void OnDespawn(EntityUid uid, SpawnOnDespawnComponent comp, ref TimedDespawnEvent args) + { + if (!TryComp(uid, out var xform)) + return; + + Spawn(comp.Prototype, xform.Coordinates); + } +} diff --git a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml index 10e2f1f7db759c..415ecd4a9865c4 100644 --- a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml +++ b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml @@ -89,7 +89,7 @@ animationTime: 0.6 animationState: mfoam-dissolve - type: Smoke - - type: SmokeDissipateSpawn + - type: SpawnOnDespawn prototype: FoamedIronMetal - type: entity @@ -109,7 +109,7 @@ animationTime: 0.6 animationState: mfoam-dissolve - type: Smoke - - type: SmokeDissipateSpawn + - type: SpawnOnDespawn prototype: FoamedAluminiumMetal - type: entity From 1dd0327d73de69b1f240d723fa5e12bd375f63b5 Mon Sep 17 00:00:00 2001 From: RadioMull <147113069+RadioMull@users.noreply.github.com> Date: Wed, 11 Oct 2023 02:36:17 -0400 Subject: [PATCH 040/245] Fix typo (#20772) --- .../Client/UserInterface/Controls/ListContainerTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Tests/Client/UserInterface/Controls/ListContainerTest.cs b/Content.Tests/Client/UserInterface/Controls/ListContainerTest.cs index d730347069316b..690bda505cc3ad 100644 --- a/Content.Tests/Client/UserInterface/Controls/ListContainerTest.cs +++ b/Content.Tests/Client/UserInterface/Controls/ListContainerTest.cs @@ -80,7 +80,7 @@ public void TestOnlyVisibleItemsAreAdded() { /* * 6 items * 10 height + 5 separation * 3 height = 75 - * One items should be off the render + * One item should be off the render * 0 13 26 39 52 65 | 75 height */ var root = new Control { MinSize = new Vector2(50, 60) }; From 756fd6f309f4e603ce0e0c77f24b778007e00c0a Mon Sep 17 00:00:00 2001 From: Kara Date: Wed, 11 Oct 2023 02:04:33 -0700 Subject: [PATCH 041/245] Kill `GravityExtensions` (#20911) --- .../MovementIgnoreGravityComponent.cs | 55 ------------------- 1 file changed, 55 deletions(-) diff --git a/Content.Shared/Movement/Components/MovementIgnoreGravityComponent.cs b/Content.Shared/Movement/Components/MovementIgnoreGravityComponent.cs index bade6287e8bf7c..77c468e871f22b 100644 --- a/Content.Shared/Movement/Components/MovementIgnoreGravityComponent.cs +++ b/Content.Shared/Movement/Components/MovementIgnoreGravityComponent.cs @@ -31,59 +31,4 @@ public MovementIgnoreGravityComponentState(MovementIgnoreGravityComponent compon Weightless = component.Weightless; } } - - public static class GravityExtensions - { - [Obsolete("Use GravitySystem")] - public static bool IsWeightless(this EntityUid entity, PhysicsComponent? body = null, EntityCoordinates? coords = null, IMapManager? mapManager = null, IEntityManager? entityManager = null) - { - entityManager ??= IoCManager.Resolve(); - - if (body == null) - entityManager.TryGetComponent(entity, out body); - - if ((body?.BodyType & (BodyType.Static | BodyType.Kinematic)) != 0) - return false; - - if (entityManager.TryGetComponent(entity, out var ignoreGravityComponent)) - return ignoreGravityComponent.Weightless; - - var transform = entityManager.GetComponent(entity); - var gridId = transform.GridUid; - - if ((entityManager.TryGetComponent(transform.GridUid, out var gravity) || - entityManager.TryGetComponent(transform.MapUid, out gravity)) && gravity.EnabledVV) - return false; - - if (gridId == null) - { - return true; - } - - mapManager ??= IoCManager.Resolve(); - var grid = mapManager.GetGrid(gridId.Value); - var invSys = EntitySystem.Get(); - - if (invSys.TryGetSlotEntity(entity, "shoes", out var ent)) - { - if (entityManager.TryGetComponent(ent, out var boots) && boots.On) - return false; - } - - if (!entityManager.GetComponent(grid.Owner).EnabledVV) - { - return true; - } - - coords ??= transform.Coordinates; - - if (!coords.Value.IsValid(entityManager)) - { - return true; - } - - var tile = grid.GetTileRef(coords.Value).Tile; - return tile.IsEmpty; - } - } } From 14dac914ce773a9da085dd57c69aaa21eb228fd2 Mon Sep 17 00:00:00 2001 From: Kara Date: Wed, 11 Oct 2023 02:17:59 -0700 Subject: [PATCH 042/245] Kill `UserInterfaceHelpers` (#20912) --- .../CommunicationsConsoleComponent.cs | 2 - .../CommunicationsConsoleSystem.cs | 47 ++++++----- Content.Server/Crayon/CrayonComponent.cs | 2 - Content.Server/Crayon/CrayonSystem.cs | 28 +++---- .../Instruments/InstrumentComponent.cs | 2 - .../Instruments/InstrumentSystem.cs | 6 +- .../Components/HealthAnalyzerComponent.cs | 2 - .../Medical/HealthAnalyzerSystem.cs | 12 +-- .../UserInterface/ActivatableUIComponent.cs | 2 - .../UserInterface/ActivatableUISystem.cs | 77 ++++++++++++------- .../UserInterface/IntrinsicUISystem.cs | 9 +-- .../UserInterface/UserInterfaceHelpers.cs | 13 ---- 12 files changed, 104 insertions(+), 98 deletions(-) delete mode 100644 Content.Server/UserInterface/UserInterfaceHelpers.cs diff --git a/Content.Server/Communications/CommunicationsConsoleComponent.cs b/Content.Server/Communications/CommunicationsConsoleComponent.cs index 82a4a94539775f..e2aa0d7620140f 100644 --- a/Content.Server/Communications/CommunicationsConsoleComponent.cs +++ b/Content.Server/Communications/CommunicationsConsoleComponent.cs @@ -55,7 +55,5 @@ public sealed partial class CommunicationsConsoleComponent : SharedCommunication /// [DataField] public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Announcements/announce.ogg"); - - public PlayerBoundUserInterface? UserInterface => Owner.GetUIOrNull(CommunicationsConsoleUiKey.Key); } } diff --git a/Content.Server/Communications/CommunicationsConsoleSystem.cs b/Content.Server/Communications/CommunicationsConsoleSystem.cs index e2a96335d019a3..b5c93854929105 100644 --- a/Content.Server/Communications/CommunicationsConsoleSystem.cs +++ b/Content.Server/Communications/CommunicationsConsoleSystem.cs @@ -72,8 +72,8 @@ public override void Update(float frameTime) comp.UIUpdateAccumulator -= UIUpdateInterval; - if (comp.UserInterface is { } ui && ui.SubscribedSessions.Count > 0) - UpdateCommsConsoleInterface(uid, comp); + if (_uiSystem.TryGetUi(uid, CommunicationsConsoleUiKey.Key, out var ui) && ui.SubscribedSessions.Count > 0) + UpdateCommsConsoleInterface(uid, comp, ui); } base.Update(frameTime); @@ -121,9 +121,11 @@ public void UpdateCommsConsoleInterface() /// /// Updates the UI for a particular comms console. /// - /// - public void UpdateCommsConsoleInterface(EntityUid uid, CommunicationsConsoleComponent comp) + public void UpdateCommsConsoleInterface(EntityUid uid, CommunicationsConsoleComponent comp, PlayerBoundUserInterface? ui = null) { + if (ui == null && !_uiSystem.TryGetUi(uid, CommunicationsConsoleUiKey.Key, out ui)) + return; + var stationUid = _stationSystem.GetOwningStation(uid); List? levels = null; string currentLevel = default!; @@ -151,15 +153,14 @@ public void UpdateCommsConsoleInterface(EntityUid uid, CommunicationsConsoleComp } } - if (comp.UserInterface is not null) - _uiSystem.SetUiState(comp.UserInterface, new CommunicationsConsoleInterfaceState( - CanAnnounce(comp), - CanCallOrRecall(comp), - levels, - currentLevel, - currentDelay, - _roundEndSystem.ExpectedCountdownEnd - )); + _uiSystem.SetUiState(ui, new CommunicationsConsoleInterfaceState( + CanAnnounce(comp), + CanCallOrRecall(comp), + levels, + currentLevel, + currentDelay, + _roundEndSystem.ExpectedCountdownEnd + )); } private static bool CanAnnounce(CommunicationsConsoleComponent comp) @@ -203,7 +204,9 @@ private bool CanCallOrRecall(CommunicationsConsoleComponent comp) private void OnSelectAlertLevelMessage(EntityUid uid, CommunicationsConsoleComponent comp, CommunicationsConsoleSelectAlertLevelMessage message) { - if (message.Session.AttachedEntity is not { Valid: true } mob) return; + if (message.Session.AttachedEntity is not { Valid: true } mob) + return; + if (!CanUse(mob, uid)) { _popupSystem.PopupCursor(Loc.GetString("comms-console-permission-denied"), message.Session, PopupType.Medium); @@ -284,8 +287,12 @@ private void OnAnnounceMessage(EntityUid uid, CommunicationsConsoleComponent com private void OnCallShuttleMessage(EntityUid uid, CommunicationsConsoleComponent comp, CommunicationsConsoleCallEmergencyShuttleMessage message) { - if (!CanCallOrRecall(comp)) return; - if (message.Session.AttachedEntity is not { Valid: true } mob) return; + if (!CanCallOrRecall(comp)) + return; + + if (message.Session.AttachedEntity is not { Valid: true } mob) + return; + if (!CanUse(mob, uid)) { _popupSystem.PopupEntity(Loc.GetString("comms-console-permission-denied"), uid, message.Session); @@ -306,8 +313,12 @@ private void OnCallShuttleMessage(EntityUid uid, CommunicationsConsoleComponent private void OnRecallShuttleMessage(EntityUid uid, CommunicationsConsoleComponent comp, CommunicationsConsoleRecallEmergencyShuttleMessage message) { - if (!CanCallOrRecall(comp)) return; - if (message.Session.AttachedEntity is not { Valid: true } mob) return; + if (!CanCallOrRecall(comp)) + return; + + if (message.Session.AttachedEntity is not { Valid: true } mob) + return; + if (!CanUse(mob, uid)) { _popupSystem.PopupEntity(Loc.GetString("comms-console-permission-denied"), uid, message.Session); diff --git a/Content.Server/Crayon/CrayonComponent.cs b/Content.Server/Crayon/CrayonComponent.cs index 6f2cd6d397e402..df20681938d6f9 100644 --- a/Content.Server/Crayon/CrayonComponent.cs +++ b/Content.Server/Crayon/CrayonComponent.cs @@ -24,7 +24,5 @@ public sealed partial class CrayonComponent : SharedCrayonComponent [ViewVariables(VVAccess.ReadWrite)] [DataField("deleteEmpty")] public bool DeleteEmpty = true; - - [ViewVariables] public PlayerBoundUserInterface? UserInterface => Owner.GetUIOrNull(CrayonUiKey.Key); } } diff --git a/Content.Server/Crayon/CrayonSystem.cs b/Content.Server/Crayon/CrayonSystem.cs index 7cc2c20d897e22..d225df2daea12c 100644 --- a/Content.Server/Crayon/CrayonSystem.cs +++ b/Content.Server/Crayon/CrayonSystem.cs @@ -74,7 +74,8 @@ private void OnCrayonAfterInteract(EntityUid uid, CrayonComponent component, Aft // Decrease "Ammo" component.Charges--; - Dirty(component); + Dirty(uid, component); + _adminLogger.Add(LogType.CrayonDraw, LogImpact.Low, $"{EntityManager.ToPrettyString(args.User):user} drew a {component.Color:color} {component.SelectedState}"); args.Handled = true; @@ -89,17 +90,16 @@ private void OnCrayonUse(EntityUid uid, CrayonComponent component, UseInHandEven return; if (!TryComp(args.User, out var actor) || - component.UserInterface == null) + !_uiSystem.TryGetUi(uid, SharedCrayonComponent.CrayonUiKey.Key, out var ui)) { return; } - _uiSystem.ToggleUi(component.UserInterface, actor.PlayerSession); - - if (component.UserInterface?.SubscribedSessions.Contains(actor.PlayerSession) == true) + _uiSystem.ToggleUi(ui, actor.PlayerSession); + if (ui.SubscribedSessions.Contains(actor.PlayerSession)) { // Tell the user interface the selected stuff - _uiSystem.SetUiState(component.UserInterface, new CrayonBoundUserInterfaceState(component.SelectedState, component.SelectableColor, component.Color)); + _uiSystem.SetUiState(ui, new CrayonBoundUserInterfaceState(component.SelectedState, component.SelectableColor, component.Color)); } args.Handled = true; @@ -108,22 +108,22 @@ private void OnCrayonUse(EntityUid uid, CrayonComponent component, UseInHandEven private void OnCrayonBoundUI(EntityUid uid, CrayonComponent component, CrayonSelectMessage args) { // Check if the selected state is valid - if (!_prototypeManager.TryIndex(args.State, out var prototype) || !prototype.Tags.Contains("crayon")) return; + if (!_prototypeManager.TryIndex(args.State, out var prototype) || !prototype.Tags.Contains("crayon")) + return; component.SelectedState = args.State; - Dirty(component); + Dirty(uid, component); } private void OnCrayonBoundUIColor(EntityUid uid, CrayonComponent component, CrayonColorMessage args) { // you still need to ensure that the given color is a valid color - if (component.SelectableColor && args.Color != component.Color) - { - component.Color = args.Color; + if (!component.SelectableColor || args.Color == component.Color) + return; - Dirty(component); - } + component.Color = args.Color; + Dirty(uid, component); } @@ -134,7 +134,7 @@ private void OnCrayonInit(EntityUid uid, CrayonComponent component, ComponentIni // Get the first one from the catalog and set it as default var decal = _prototypeManager.EnumeratePrototypes().FirstOrDefault(x => x.Tags.Contains("crayon")); component.SelectedState = decal?.ID ?? string.Empty; - Dirty(component); + Dirty(uid, component); } private void OnCrayonDropped(EntityUid uid, CrayonComponent component, DroppedEvent args) diff --git a/Content.Server/Instruments/InstrumentComponent.cs b/Content.Server/Instruments/InstrumentComponent.cs index 5a6b5828da2ed4..810d2653146621 100644 --- a/Content.Server/Instruments/InstrumentComponent.cs +++ b/Content.Server/Instruments/InstrumentComponent.cs @@ -20,8 +20,6 @@ public sealed partial class InstrumentComponent : SharedInstrumentComponent public IPlayerSession? InstrumentPlayer => _entMan.GetComponentOrNull(Owner)?.CurrentSingleUser ?? _entMan.GetComponentOrNull(Owner)?.PlayerSession; - - [ViewVariables] public PlayerBoundUserInterface? UserInterface => Owner.GetUIOrNull(InstrumentUiKey.Key); } [RegisterComponent] diff --git a/Content.Server/Instruments/InstrumentSystem.cs b/Content.Server/Instruments/InstrumentSystem.cs index 4e002eb677c1f6..ec233821051b8d 100644 --- a/Content.Server/Instruments/InstrumentSystem.cs +++ b/Content.Server/Instruments/InstrumentSystem.cs @@ -5,7 +5,6 @@ using Content.Shared.Administration; using Content.Shared.Instruments; using Content.Shared.Instruments.UI; -using Content.Shared.Interaction; using Content.Shared.Physics; using Content.Shared.Popups; using JetBrains.Annotations; @@ -17,7 +16,6 @@ using Robust.Shared.Console; using Robust.Shared.GameStates; using Robust.Shared.Timing; -using Robust.Shared.Utility; namespace Content.Server.Instruments; @@ -435,9 +433,7 @@ public override void Update(float frameTime) // Just in case Clean(uid); - - if (instrument.UserInterface is not null) - _bui.CloseAll(instrument.UserInterface); + _bui.TryCloseAll(uid, InstrumentUiKey.Key); } instrument.Timer += frameTime; diff --git a/Content.Server/Medical/Components/HealthAnalyzerComponent.cs b/Content.Server/Medical/Components/HealthAnalyzerComponent.cs index 4b0bb5ff1fb7e2..39b1df573f2064 100644 --- a/Content.Server/Medical/Components/HealthAnalyzerComponent.cs +++ b/Content.Server/Medical/Components/HealthAnalyzerComponent.cs @@ -17,8 +17,6 @@ public sealed partial class HealthAnalyzerComponent : Component [DataField("scanDelay")] public float ScanDelay = 0.8f; - public PlayerBoundUserInterface? UserInterface => Owner.GetUIOrNull(HealthAnalyzerUiKey.Key); - /// /// Sound played on scanning begin /// diff --git a/Content.Server/Medical/HealthAnalyzerSystem.cs b/Content.Server/Medical/HealthAnalyzerSystem.cs index 79d55e8068c2d8..6e2f7fdf368cf6 100644 --- a/Content.Server/Medical/HealthAnalyzerSystem.cs +++ b/Content.Server/Medical/HealthAnalyzerSystem.cs @@ -51,12 +51,12 @@ private void OnDoAfter(EntityUid uid, HealthAnalyzerComponent component, DoAfter args.Handled = true; } - private void OpenUserInterface(EntityUid user, HealthAnalyzerComponent healthAnalyzer) + private void OpenUserInterface(EntityUid user, EntityUid analyzer) { - if (!TryComp(user, out var actor) || healthAnalyzer.UserInterface == null) + if (!TryComp(user, out var actor) || !_uiSystem.TryGetUi(analyzer, HealthAnalyzerUiKey.Key, out var ui)) return; - _uiSystem.OpenUi(healthAnalyzer.UserInterface ,actor.PlayerSession); + _uiSystem.OpenUi(ui ,actor.PlayerSession); } public void UpdateScannedUser(EntityUid uid, EntityUid user, EntityUid? target, HealthAnalyzerComponent? healthAnalyzer) @@ -64,7 +64,7 @@ public void UpdateScannedUser(EntityUid uid, EntityUid user, EntityUid? target, if (!Resolve(uid, ref healthAnalyzer)) return; - if (target == null || healthAnalyzer.UserInterface == null) + if (target == null || !_uiSystem.TryGetUi(uid, HealthAnalyzerUiKey.Key, out var ui)) return; if (!HasComp(target)) @@ -73,9 +73,9 @@ public void UpdateScannedUser(EntityUid uid, EntityUid user, EntityUid? target, TryComp(target, out var temp); TryComp(target, out var bloodstream); - OpenUserInterface(user, healthAnalyzer); + OpenUserInterface(user, uid); - _uiSystem.SendUiMessage(healthAnalyzer.UserInterface, new HealthAnalyzerScannedUserMessage(GetNetEntity(target), temp != null ? temp.CurrentTemperature : float.NaN, + _uiSystem.SendUiMessage(ui, new HealthAnalyzerScannedUserMessage(GetNetEntity(target), temp != null ? temp.CurrentTemperature : float.NaN, bloodstream != null ? bloodstream.BloodSolution.FillFraction : float.NaN)); } } diff --git a/Content.Server/UserInterface/ActivatableUIComponent.cs b/Content.Server/UserInterface/ActivatableUIComponent.cs index ff605c81190381..bb020608e2042e 100644 --- a/Content.Server/UserInterface/ActivatableUIComponent.cs +++ b/Content.Server/UserInterface/ActivatableUIComponent.cs @@ -11,8 +11,6 @@ public sealed partial class ActivatableUIComponent : Component, [ViewVariables] public Enum? Key { get; set; } - [ViewVariables] public PlayerBoundUserInterface? UserInterface => (Key != null) ? Owner.GetUIOrNull(Key) : null; - [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool InHandsOnly { get; set; } = false; diff --git a/Content.Server/UserInterface/ActivatableUISystem.cs b/Content.Server/UserInterface/ActivatableUISystem.cs index c200d7a3f0045c..59086415b46ca6 100644 --- a/Content.Server/UserInterface/ActivatableUISystem.cs +++ b/Content.Server/UserInterface/ActivatableUISystem.cs @@ -76,7 +76,7 @@ private void AddOpenUiVerb(EntityUid uid, ActivatableUIComponent component, GetV return; ActivationVerb verb = new(); - verb.Act = () => InteractUI(args.User, component); + verb.Act = () => InteractUI(args.User, uid, component); verb.Text = Loc.GetString(component.VerbText); // TODO VERBS add "open UI" icon? args.Verbs.Add(verb); @@ -84,16 +84,24 @@ private void AddOpenUiVerb(EntityUid uid, ActivatableUIComponent component, GetV private void OnActivate(EntityUid uid, ActivatableUIComponent component, ActivateInWorldEvent args) { - if (args.Handled) return; - if (component.InHandsOnly) return; - args.Handled = InteractUI(args.User, component); + if (args.Handled) + return; + + if (component.InHandsOnly) + return; + + args.Handled = InteractUI(args.User, uid, component); } private void OnUseInHand(EntityUid uid, ActivatableUIComponent component, UseInHandEvent args) { - if (args.Handled) return; - if (component.rightClickOnly) return; - args.Handled = InteractUI(args.User, component); + if (args.Handled) + return; + + if (component.rightClickOnly) + return; + + args.Handled = InteractUI(args.User, uid, component); } private void OnParentChanged(EntityUid uid, ActivatableUIComponent aui, ref EntParentChangedMessage args) @@ -103,53 +111,64 @@ private void OnParentChanged(EntityUid uid, ActivatableUIComponent aui, ref EntP private void OnUIClose(EntityUid uid, ActivatableUIComponent component, BoundUIClosedEvent args) { - if (args.Session != component.CurrentSingleUser) return; - if (args.UiKey != component.Key) return; + if (args.Session != component.CurrentSingleUser) + return; + + if (!Equals(args.UiKey, component.Key)) + return; + SetCurrentSingleUser(uid, null, component); } - private bool InteractUI(EntityUid user, ActivatableUIComponent aui) + private bool InteractUI(EntityUid user, EntityUid uiEntity, ActivatableUIComponent aui) { - if (!_blockerSystem.CanInteract(user, aui.Owner) && (!aui.AllowSpectator || !HasComp(user))) + if (!_blockerSystem.CanInteract(user, uiEntity) && (!aui.AllowSpectator || !HasComp(user))) return false; if (aui.RequireHands && !HasComp(user)) return false; - if (!EntityManager.TryGetComponent(user, out ActorComponent? actor)) return false; + if (!EntityManager.TryGetComponent(user, out ActorComponent? actor)) + return false; + + if (aui.AdminOnly && !_adminManager.IsAdmin(actor.PlayerSession)) + return false; - if (aui.AdminOnly && !_adminManager.IsAdmin(actor.PlayerSession)) return false; + if (aui.Key == null) + return false; - var ui = aui.UserInterface; - if (ui == null) return false; + if (!_uiSystem.TryGetUi(uiEntity, aui.Key, out var ui)) + return false; if (aui.SingleUser && (aui.CurrentSingleUser != null) && (actor.PlayerSession != aui.CurrentSingleUser)) { // If we get here, supposedly, the object is in use. // Check with BUI that it's ACTUALLY in use just in case. // Since this could brick the object if it goes wrong. - if (ui.SubscribedSessions.Count != 0) return false; + if (ui.SubscribedSessions.Count != 0) + return false; } // If we've gotten this far, fire a cancellable event that indicates someone is about to activate this. // This is so that stuff can require further conditions (like power). var oae = new ActivatableUIOpenAttemptEvent(user); - var uae = new UserOpenActivatableUIAttemptEvent(user, aui.Owner); - RaiseLocalEvent(user, uae, false); - RaiseLocalEvent((aui).Owner, oae, false); - if (oae.Cancelled || uae.Cancelled) return false; + var uae = new UserOpenActivatableUIAttemptEvent(user, uiEntity); + RaiseLocalEvent(user, uae); + RaiseLocalEvent(uiEntity, oae); + if (oae.Cancelled || uae.Cancelled) + return false; // Give the UI an opportunity to prepare itself if it needs to do anything // before opening var bae = new BeforeActivatableUIOpenEvent(user); - RaiseLocalEvent((aui).Owner, bae, false); + RaiseLocalEvent(uiEntity, bae); - SetCurrentSingleUser((aui).Owner, actor.PlayerSession, aui); + SetCurrentSingleUser(uiEntity, actor.PlayerSession, aui); _uiSystem.ToggleUi(ui, actor.PlayerSession); //Let the component know a user opened it so it can do whatever it needs to do var aae = new AfterActivatableUIOpenEvent(user, actor.PlayerSession); - RaiseLocalEvent((aui).Owner, aae, false); + RaiseLocalEvent(uiEntity, aae); return true; } @@ -163,24 +182,28 @@ public void SetCurrentSingleUser(EntityUid uid, IPlayerSession? v, ActivatableUI aui.CurrentSingleUser = v; - RaiseLocalEvent(uid, new ActivatableUIPlayerChangedEvent(), false); + RaiseLocalEvent(uid, new ActivatableUIPlayerChangedEvent()); } public void CloseAll(EntityUid uid, ActivatableUIComponent? aui = null) { if (!Resolve(uid, ref aui, false)) return; - if (aui.UserInterface is null) + + if (aui.Key == null || !_uiSystem.TryGetUi(uid, aui.Key, out var ui)) return; - _uiSystem.CloseAll(aui.UserInterface); + _uiSystem.CloseAll(ui); } private void OnHandDeselected(EntityUid uid, ActivatableUIComponent? aui, HandDeselectedEvent args) { - if (!Resolve(uid, ref aui, false)) return; + if (!Resolve(uid, ref aui, false)) + return; + if (!aui.CloseOnHandDeselect) return; + CloseAll(uid, aui); } } diff --git a/Content.Server/UserInterface/IntrinsicUISystem.cs b/Content.Server/UserInterface/IntrinsicUISystem.cs index bd449df5f5d879..27b682cd41e642 100644 --- a/Content.Server/UserInterface/IntrinsicUISystem.cs +++ b/Content.Server/UserInterface/IntrinsicUISystem.cs @@ -1,5 +1,4 @@ using Content.Server.Actions; -using Content.Shared.Actions; using Content.Shared.UserInterface; using Robust.Server.GameObjects; @@ -36,19 +35,19 @@ public bool InteractUI(EntityUid uid, Enum? key, IntrinsicUIComponent? iui = nul if (key is null) { - Logger.ErrorS("bui", $"Entity {ToPrettyString(uid)} has an invalid intrinsic UI."); + Log.Error($"Entity {ToPrettyString(uid)} has an invalid intrinsic UI."); } var ui = GetUIOrNull(uid, key, iui); if (ui is null) { - Logger.ErrorS("bui", $"Couldn't get UI {key} on {ToPrettyString(uid)}"); + Log.Error($"Couldn't get UI {key} on {ToPrettyString(uid)}"); return false; } var attempt = new IntrinsicUIOpenAttemptEvent(uid, key); - RaiseLocalEvent(uid, attempt, false); + RaiseLocalEvent(uid, attempt); if (attempt.Cancelled) return false; @@ -61,7 +60,7 @@ public bool InteractUI(EntityUid uid, Enum? key, IntrinsicUIComponent? iui = nul if (!Resolve(uid, ref component)) return null; - return key is null ? null : uid.GetUIOrNull(key); + return key is null ? null : _uiSystem.GetUiOrNull(uid, key); } } diff --git a/Content.Server/UserInterface/UserInterfaceHelpers.cs b/Content.Server/UserInterface/UserInterfaceHelpers.cs deleted file mode 100644 index 865772c772cb69..00000000000000 --- a/Content.Server/UserInterface/UserInterfaceHelpers.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Robust.Server.GameObjects; - -namespace Content.Server.UserInterface -{ - public static class UserInterfaceHelpers - { - [Obsolete("Use UserInterfaceSystem")] - public static PlayerBoundUserInterface? GetUIOrNull(this EntityUid entity, Enum uiKey) - { - return IoCManager.Resolve().GetEntitySystem().GetUiOrNull(entity, uiKey); - } - } -} From dbb7c7065adbaf11477d1b97561ea093496ba2fd Mon Sep 17 00:00:00 2001 From: Kara Date: Wed, 11 Oct 2023 02:18:49 -0700 Subject: [PATCH 043/245] Kill `ContainerHelpers` (#20908) --- .../Commands/HideMechanismsCommand.cs | 3 ++- .../Instruments/UI/InstrumentMenu.xaml.cs | 3 ++- .../Interactable/InteractionSystem.cs | 6 +++-- .../EmptyOnMachineDeconstructSystem.cs | 6 +++-- .../Destructible/DestructibleSystem.cs | 2 ++ .../Behaviors/EmptyAllContainersBehaviour.cs | 2 +- Content.Server/Guardian/GuardianSystem.cs | 3 ++- Content.Server/Hands/Systems/HandsSystem.cs | 4 +-- .../Nutrition/EntitySystems/SmokingSystem.cs | 8 +++--- .../Resist/EscapeInventorySystem.cs | 6 ++--- .../EntitySystems/SharedHandsSystem.Drop.cs | 26 +++++++++---------- .../EntitySystems/SharedHandsSystem.Pickup.cs | 4 +-- .../SharedHandsSystem.Virtual.cs | 2 +- .../Hands/EntitySystems/SharedHandsSystem.cs | 25 +++++++++--------- 14 files changed, 54 insertions(+), 46 deletions(-) diff --git a/Content.Client/Commands/HideMechanismsCommand.cs b/Content.Client/Commands/HideMechanismsCommand.cs index 88100a0f8c1a7c..e9c2073b20af96 100644 --- a/Content.Client/Commands/HideMechanismsCommand.cs +++ b/Content.Client/Commands/HideMechanismsCommand.cs @@ -15,6 +15,7 @@ public sealed class HideMechanismsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { var entityManager = IoCManager.Resolve(); + var containerSys = entityManager.System(); var organs = entityManager.EntityQuery(true); foreach (var part in organs) @@ -27,7 +28,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) sprite.ContainerOccluded = false; var tempParent = part.Owner; - while (tempParent.TryGetContainer(out var container)) + while (containerSys.TryGetContainingContainer(tempParent, out var container)) { if (!container.ShowContents) { diff --git a/Content.Client/Instruments/UI/InstrumentMenu.xaml.cs b/Content.Client/Instruments/UI/InstrumentMenu.xaml.cs index b50ab96251e9d3..201b7b630418e7 100644 --- a/Content.Client/Instruments/UI/InstrumentMenu.xaml.cs +++ b/Content.Client/Instruments/UI/InstrumentMenu.xaml.cs @@ -174,8 +174,9 @@ private bool PlayCheck() if (localPlayer.ControlledEntity == instrumentEnt) return true; + var container = _owner.Entities.System(); // If we're a handheld instrument, we might be in a container. Get it just in case. - instrumentEnt.TryGetContainerMan(out var conMan); + container.TryGetContainingContainer(instrumentEnt, out var conMan); // If the instrument is handheld and we're not holding it, we return. if ((instrument.Handheld && (conMan == null || conMan.Owner != localPlayer.ControlledEntity))) diff --git a/Content.Client/Interactable/InteractionSystem.cs b/Content.Client/Interactable/InteractionSystem.cs index cdfd3aa54fa83c..0af8830e9acd45 100644 --- a/Content.Client/Interactable/InteractionSystem.cs +++ b/Content.Client/Interactable/InteractionSystem.cs @@ -6,15 +6,17 @@ namespace Content.Client.Interactable { public sealed class InteractionSystem : SharedInteractionSystem { + [Dependency] private readonly SharedContainerSystem _container = default!; + public override bool CanAccessViaStorage(EntityUid user, EntityUid target) { if (!EntityManager.EntityExists(target)) return false; - if (!target.TryGetContainer(out var container)) + if (!_container.TryGetContainingContainer(target, out var container)) return false; - if (!TryComp(container.Owner, out StorageComponent? storage)) + if (!HasComp(container.Owner)) return false; // we don't check if the user can access the storage entity itself. This should be handed by the UI system. diff --git a/Content.Server/Containers/EmptyOnMachineDeconstructSystem.cs b/Content.Server/Containers/EmptyOnMachineDeconstructSystem.cs index 234408c3bab300..c0cae8fdf7cc8c 100644 --- a/Content.Server/Containers/EmptyOnMachineDeconstructSystem.cs +++ b/Content.Server/Containers/EmptyOnMachineDeconstructSystem.cs @@ -11,6 +11,8 @@ namespace Content.Server.Containers [UsedImplicitly] public sealed class EmptyOnMachineDeconstructSystem : EntitySystem { + [Dependency] private readonly SharedContainerSystem _container = default!; + public override void Initialize() { base.Initialize(); @@ -33,12 +35,12 @@ private void OnDeconstruct(EntityUid uid, EmptyOnMachineDeconstructComponent com { if (!EntityManager.TryGetComponent(uid, out var mComp)) return; - var baseCoords = EntityManager.GetComponent(component.Owner).Coordinates; + var baseCoords = EntityManager.GetComponent(uid).Coordinates; foreach (var v in component.Containers) { if (mComp.TryGetContainer(v, out var container)) { - container.EmptyContainer(true, baseCoords); + _container.EmptyContainer(container, true, baseCoords); } } } diff --git a/Content.Server/Destructible/DestructibleSystem.cs b/Content.Server/Destructible/DestructibleSystem.cs index b9c260a7d9b8f5..0ef0d621f315ad 100644 --- a/Content.Server/Destructible/DestructibleSystem.cs +++ b/Content.Server/Destructible/DestructibleSystem.cs @@ -16,6 +16,7 @@ using Content.Shared.FixedPoint; using JetBrains.Annotations; using Robust.Server.GameObjects; +using Robust.Shared.Containers; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -36,6 +37,7 @@ public sealed class DestructibleSystem : SharedDestructibleSystem [Dependency] public readonly TriggerSystem TriggerSystem = default!; [Dependency] public readonly SolutionContainerSystem SolutionContainerSystem = default!; [Dependency] public readonly PuddleSystem PuddleSystem = default!; + [Dependency] public readonly SharedContainerSystem ContainerSystem = default!; [Dependency] public readonly IPrototypeManager PrototypeManager = default!; [Dependency] public readonly IComponentFactory ComponentFactory = default!; [Dependency] public readonly IAdminLogManager _adminLogger = default!; diff --git a/Content.Server/Destructible/Thresholds/Behaviors/EmptyAllContainersBehaviour.cs b/Content.Server/Destructible/Thresholds/Behaviors/EmptyAllContainersBehaviour.cs index 406e7bf7e2801a..e696ad92580d28 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/EmptyAllContainersBehaviour.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/EmptyAllContainersBehaviour.cs @@ -15,7 +15,7 @@ public void Execute(EntityUid owner, DestructibleSystem system, EntityUid? cause foreach (var container in containerManager.GetAllContainers()) { - container.EmptyContainer(true, system.EntityManager.GetComponent(owner).Coordinates); + system.ContainerSystem.EmptyContainer(container, true, system.EntityManager.GetComponent(owner).Coordinates); } } } diff --git a/Content.Server/Guardian/GuardianSystem.cs b/Content.Server/Guardian/GuardianSystem.cs index f34b765ac77ef8..118574db3f75bc 100644 --- a/Content.Server/Guardian/GuardianSystem.cs +++ b/Content.Server/Guardian/GuardianSystem.cs @@ -31,6 +31,7 @@ public sealed class GuardianSystem : EntitySystem [Dependency] private readonly SharedHandsSystem _handsSystem = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly BodySystem _bodySystem = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; public override void Initialize() { @@ -88,7 +89,7 @@ private void OnGuardianPlayer(EntityUid uid, GuardianComponent component, Player private void OnHostInit(EntityUid uid, GuardianHostComponent component, ComponentInit args) { - component.GuardianContainer = uid.EnsureContainer("GuardianContainer"); + component.GuardianContainer = _container.EnsureContainer(uid, "GuardianContainer"); _actionSystem.AddAction(uid, ref component.ActionEntity, component.Action); } diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index 1cae95c78eb7d2..298aa57ccf212c 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -169,9 +169,9 @@ private bool HandleThrowItem(ICommonSession? session, EntityCoordinates coordina if (playerSession.AttachedEntity is not {Valid: true} player || !Exists(player) || - player.IsInContainer() || + ContainerSystem.IsEntityInContainer(player) || !TryComp(player, out HandsComponent? hands) || - hands.ActiveHandEntity is not EntityUid throwEnt || + hands.ActiveHandEntity is not { } throwEnt || !_actionBlockerSystem.CanThrow(player, throwEnt)) return false; diff --git a/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs b/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs index 772e8721105322..96c7f8a64c4bd0 100644 --- a/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs @@ -2,7 +2,6 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Server.Chemistry.EntitySystems; -using Content.Server.Nutrition.Components; using Content.Shared.Nutrition.Components; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Reagent; @@ -29,11 +28,12 @@ public sealed partial class SmokingSystem : EntitySystem [Dependency] private readonly InventorySystem _inventorySystem = default!; [Dependency] private readonly ClothingSystem _clothing = default!; [Dependency] private readonly SharedItemSystem _items = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; private const float UpdateTimer = 3f; - private float _timer = 0f; + private float _timer; /// /// We keep a list of active smokables, because iterating all existing smokables would be dumb. @@ -130,8 +130,8 @@ public override void Update(float frameTime) // This is awful. I hate this so much. // TODO: Please, someone refactor containers and free me from this bullshit. - if (!smokable.Owner.TryGetContainerMan(out var containerManager) || - !(_inventorySystem.TryGetSlotEntity(containerManager.Owner, "mask", out var inMaskSlotUid) && inMaskSlotUid == smokable.Owner) || + if (!_container.TryGetContainingContainer(uid, out var containerManager) || + !(_inventorySystem.TryGetSlotEntity(containerManager.Owner, "mask", out var inMaskSlotUid) && inMaskSlotUid == uid) || !TryComp(containerManager.Owner, out BloodstreamComponent? bloodstream)) { continue; diff --git a/Content.Server/Resist/EscapeInventorySystem.cs b/Content.Server/Resist/EscapeInventorySystem.cs index eb7c4c847866ee..ea603084b55c74 100644 --- a/Content.Server/Resist/EscapeInventorySystem.cs +++ b/Content.Server/Resist/EscapeInventorySystem.cs @@ -80,7 +80,7 @@ private void AttemptEscape(EntityUid user, EntityUid container, CanEscapeInvento if (!_doAfterSystem.TryStartDoAfter(doAfterEventArgs, out component.DoAfter)) return; - Dirty(component); + Dirty(user, component); _popupSystem.PopupEntity(Loc.GetString("escape-inventory-component-start-resisting"), user, user); _popupSystem.PopupEntity(Loc.GetString("escape-inventory-component-start-resisting-target"), container, container); } @@ -88,12 +88,12 @@ private void AttemptEscape(EntityUid user, EntityUid container, CanEscapeInvento private void OnEscape(EntityUid uid, CanEscapeInventoryComponent component, EscapeInventoryEvent args) { component.DoAfter = null; - Dirty(component); + Dirty(uid, component); if (args.Handled || args.Cancelled) return; - Transform(uid).AttachParentToContainerOrGrid(EntityManager); + _containerSystem.AttachParentToContainerOrGrid(Transform(uid)); args.Handled = true; } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs index e43f2561a16142..06d6526566bfeb 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs @@ -6,10 +6,8 @@ namespace Content.Shared.Hands.EntitySystems; -public abstract partial class SharedHandsSystem : EntitySystem +public abstract partial class SharedHandsSystem { - [Dependency] private readonly SharedContainerSystem _container = default!; - private void InitializeDrop() { SubscribeLocalEvent(HandleEntityRemoved); @@ -23,10 +21,10 @@ protected virtual void HandleEntityRemoved(EntityUid uid, HandsComponent hands, } var gotUnequipped = new GotUnequippedHandEvent(uid, args.Entity, hand); - RaiseLocalEvent(args.Entity, gotUnequipped, false); + RaiseLocalEvent(args.Entity, gotUnequipped); var didUnequip = new DidUnequipHandEvent(uid, args.Entity, hand); - RaiseLocalEvent(uid, didUnequip, false); + RaiseLocalEvent(uid, didUnequip); } /// @@ -37,7 +35,7 @@ public bool CanDropHeld(EntityUid uid, Hand hand, bool checkActionBlocker = true if (hand.Container?.ContainedEntity is not {} held) return false; - if (!_container.CanRemove(held, hand.Container)) + if (!ContainerSystem.CanRemove(held, hand.Container)) return false; if (checkActionBlocker && !_actionBlocker.CanDrop(uid)) @@ -90,7 +88,7 @@ public bool TryDrop(EntityUid uid, Hand hand, EntityCoordinates? targetDropLocat var userXform = Transform(uid); var itemXform = Transform(entity); - var isInContainer = _containerSystem.IsEntityInContainer(uid); + var isInContainer = ContainerSystem.IsEntityInContainer(uid); if (targetDropLocation == null || isInContainer) { @@ -98,14 +96,14 @@ public bool TryDrop(EntityUid uid, Hand hand, EntityCoordinates? targetDropLocat // TODO recursively check upwards for containers if (!isInContainer - || !_containerSystem.TryGetContainingContainer(userXform.ParentUid, uid, out var container, skipExistCheck: true) + || !ContainerSystem.TryGetContainingContainer(userXform.ParentUid, uid, out var container, skipExistCheck: true) || !container.Insert(entity, EntityManager, itemXform)) - itemXform.AttachToGridOrMap(); + TransformSystem.AttachToGridOrMap(entity, itemXform); return true; } - var target = targetDropLocation.Value.ToMap(EntityManager); - itemXform.WorldPosition = GetFinalDropCoordinates(uid, userXform.MapPosition, target); + var target = targetDropLocation.Value.ToMap(EntityManager, TransformSystem); + TransformSystem.SetWorldPosition(userXform, GetFinalDropCoordinates(uid, userXform.MapPosition, target)); return true; } @@ -123,7 +121,7 @@ public bool TryDropIntoContainer(EntityUid uid, EntityUid entity, BaseContainer if (!CanDropHeld(uid, hand, checkActionBlocker)) return false; - if (!_container.CanInsert(entity, targetContainer)) + if (!ContainerSystem.CanInsert(entity, targetContainer)) return false; DoDrop(uid, hand, false, handsComp); @@ -171,12 +169,12 @@ public virtual void DoDrop(EntityUid uid, Hand hand, bool doDropInteraction = tr return; } - Dirty(handsComp); + Dirty(uid, handsComp); if (doDropInteraction) _interactionSystem.DroppedInteraction(uid, entity); if (hand == handsComp.ActiveHand) - RaiseLocalEvent(entity, new HandDeselectedEvent(uid), false); + RaiseLocalEvent(entity, new HandDeselectedEvent(uid)); } } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs index 278470c4a2c2f9..0171b9f70c9dac 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs @@ -180,7 +180,7 @@ public bool CanPickupToHand(EntityUid uid, EntityUid entity, Hand hand, bool che return false; // check can insert (including raising attempt events). - return _containerSystem.CanInsert(entity, handContainer); + return ContainerSystem.CanInsert(entity, handContainer); } /// @@ -202,7 +202,7 @@ public void PickupOrDrop( { // TODO make this check upwards for any container, and parent to that. // Currently this just checks the direct parent, so items can still teleport through containers. - Transform(entity).AttachParentToContainerOrGrid(EntityManager); + ContainerSystem.AttachParentToContainerOrGrid(Transform(entity)); } } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Virtual.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Virtual.cs index 36498d929b1a81..b83ec8c128ca7c 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Virtual.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Virtual.cs @@ -12,7 +12,7 @@ private void InitializeVirtual() private void OnVirtualAfter(EntityUid uid, HandVirtualItemComponent component, ref AfterAutoHandleStateEvent args) { // update hands GUI with new entity. - if (_containerSystem.IsEntityInContainer(uid)) + if (ContainerSystem.IsEntityInContainer(uid)) _items.VisualsChanged(uid); } } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs index af53b2625c005b..9f7623329e4082 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs @@ -11,11 +11,11 @@ namespace Content.Shared.Hands.EntitySystems; -public abstract partial class SharedHandsSystem : EntitySystem +public abstract partial class SharedHandsSystem { [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!; - [Dependency] private readonly SharedContainerSystem _containerSystem = default!; + [Dependency] protected readonly SharedContainerSystem ContainerSystem = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; [Dependency] private readonly SharedItemSystem _items = default!; [Dependency] private readonly SharedStorageSystem _storage = default!; @@ -47,7 +47,7 @@ public virtual void AddHand(EntityUid uid, string handName, HandLocation handLoc if (handsComp.Hands.ContainsKey(handName)) return; - var container = _containerSystem.EnsureContainer(uid, handName); + var container = ContainerSystem.EnsureContainer(uid, handName); container.OccludesLight = false; var newHand = new Hand(handName, handLocation, container); @@ -57,8 +57,8 @@ public virtual void AddHand(EntityUid uid, string handName, HandLocation handLoc if (handsComp.ActiveHand == null) SetActiveHand(uid, newHand, handsComp); - RaiseLocalEvent(uid, new HandCountChangedEvent(uid), false); - Dirty(handsComp); + RaiseLocalEvent(uid, new HandCountChangedEvent(uid)); + Dirty(uid, handsComp); } public virtual void RemoveHand(EntityUid uid, string handName, HandsComponent? handsComp = null) @@ -76,8 +76,8 @@ public virtual void RemoveHand(EntityUid uid, string handName, HandsComponent? h if (handsComp.ActiveHand == hand) TrySetActiveHand(uid, handsComp.SortedHands.FirstOrDefault(), handsComp); - RaiseLocalEvent(uid, new HandCountChangedEvent(uid), false); - Dirty(handsComp); + RaiseLocalEvent(uid, new HandCountChangedEvent(uid)); + Dirty(uid, handsComp); } /// @@ -169,7 +169,7 @@ public IEnumerable EnumerateHeld(EntityUid uid, HandsComponent? hands if (name == handsComp.ActiveHand?.Name) continue; - if (handsComp.Hands[name].HeldEntity is EntityUid held) + if (handsComp.Hands[name].HeldEntity is { } held) yield return held; } } @@ -206,8 +206,8 @@ public bool SetActiveHand(EntityUid uid, Hand? hand, HandsComponent? handComp = if (hand == handComp.ActiveHand) return false; - if (handComp.ActiveHand?.HeldEntity is EntityUid held) - RaiseLocalEvent(held, new HandDeselectedEvent(uid), false); + if (handComp.ActiveHand?.HeldEntity is { } held) + RaiseLocalEvent(held, new HandDeselectedEvent(uid)); if (hand == null) { @@ -219,8 +219,9 @@ public bool SetActiveHand(EntityUid uid, Hand? hand, HandsComponent? handComp = OnHandSetActive?.Invoke(handComp); if (hand.HeldEntity != null) - RaiseLocalEvent(hand.HeldEntity.Value, new HandSelectedEvent(uid), false); - Dirty(handComp); + RaiseLocalEvent(hand.HeldEntity.Value, new HandSelectedEvent(uid)); + + Dirty(uid, handComp); return true; } From 7dd20f7af1f443678c3a1c3e4ba6d3e442485e76 Mon Sep 17 00:00:00 2001 From: Kara Date: Wed, 11 Oct 2023 02:19:46 -0700 Subject: [PATCH 044/245] Kill `ComponentExt` (#20907) --- .../Click/InteractionSystemTests.cs | 20 +++++++------- .../SolutionInjectOnCollideSystem.cs | 7 ----- Content.Server/Ghost/Roles/GhostRoleSystem.cs | 2 +- .../Tabletop/TabletopSystem.Session.cs | 4 +-- .../SingularityDistortionComponent.cs | 26 +++++-------------- .../EntitySystems/SharedSingularitySystem.cs | 1 + 6 files changed, 20 insertions(+), 40 deletions(-) diff --git a/Content.IntegrationTests/Tests/Interaction/Click/InteractionSystemTests.cs b/Content.IntegrationTests/Tests/Interaction/Click/InteractionSystemTests.cs index b05f2732651b74..cef74aa386f526 100644 --- a/Content.IntegrationTests/Tests/Interaction/Click/InteractionSystemTests.cs +++ b/Content.IntegrationTests/Tests/Interaction/Click/InteractionSystemTests.cs @@ -63,11 +63,11 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { user = sEntities.SpawnEntity(null, coords); - user.EnsureComponent(); + sEntities.EnsureComponent(user); handSys.AddHand(user, "hand", HandLocation.Left); target = sEntities.SpawnEntity(null, coords); item = sEntities.SpawnEntity(null, coords); - item.EnsureComponent(); + sEntities.EnsureComponent(item); }); await server.WaitRunTicks(1); @@ -134,11 +134,11 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { user = sEntities.SpawnEntity(null, coords); - user.EnsureComponent(); + sEntities.EnsureComponent(user); handSys.AddHand(user, "hand", HandLocation.Left); target = sEntities.SpawnEntity(null, new MapCoordinates(new Vector2(1.9f, 0), mapId)); item = sEntities.SpawnEntity(null, coords); - item.EnsureComponent(); + sEntities.EnsureComponent(item); wall = sEntities.SpawnEntity("DummyDebugWall", new MapCoordinates(new Vector2(1, 0), sEntities.GetComponent(user).MapID)); }); @@ -204,11 +204,11 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { user = sEntities.SpawnEntity(null, coords); - user.EnsureComponent(); + sEntities.EnsureComponent(user); handSys.AddHand(user, "hand", HandLocation.Left); target = sEntities.SpawnEntity(null, new MapCoordinates(new Vector2(SharedInteractionSystem.InteractionRange - 0.1f, 0), mapId)); item = sEntities.SpawnEntity(null, coords); - item.EnsureComponent(); + sEntities.EnsureComponent(item); }); await server.WaitRunTicks(1); @@ -274,11 +274,11 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { user = sEntities.SpawnEntity(null, coords); - user.EnsureComponent(); + sEntities.EnsureComponent(user); handSys.AddHand(user, "hand", HandLocation.Left); target = sEntities.SpawnEntity(null, new MapCoordinates(new Vector2(SharedInteractionSystem.InteractionRange + 0.01f, 0), mapId)); item = sEntities.SpawnEntity(null, coords); - item.EnsureComponent(); + sEntities.EnsureComponent(item); }); await server.WaitRunTicks(1); @@ -346,11 +346,11 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { user = sEntities.SpawnEntity(null, coords); - user.EnsureComponent(); + sEntities.EnsureComponent(user); handSys.AddHand(user, "hand", HandLocation.Left); target = sEntities.SpawnEntity(null, coords); item = sEntities.SpawnEntity(null, coords); - item.EnsureComponent(); + sEntities.EnsureComponent(item); containerEntity = sEntities.SpawnEntity(null, coords); container = conSystem.EnsureContainer(containerEntity, "InteractionTestContainer"); }); diff --git a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs index 9848463e3f00ce..666a90ce73d317 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs @@ -22,16 +22,9 @@ internal sealed class SolutionInjectOnCollideSystem : EntitySystem public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(HandleInit); SubscribeLocalEvent(HandleInjection); } - private void HandleInit(EntityUid uid, SolutionInjectOnCollideComponent component, ComponentInit args) - { - component.Owner - .EnsureComponentWarn($"{nameof(SolutionInjectOnCollideComponent)} requires a SolutionContainerManager on {component.Owner}!"); - } - private void HandleInjection(EntityUid uid, SolutionInjectOnCollideComponent component, ref StartCollideEvent args) { var target = args.OtherEntity; diff --git a/Content.Server/Ghost/Roles/GhostRoleSystem.cs b/Content.Server/Ghost/Roles/GhostRoleSystem.cs index 98a62d39707c2a..671b91392c4080 100644 --- a/Content.Server/Ghost/Roles/GhostRoleSystem.cs +++ b/Content.Server/Ghost/Roles/GhostRoleSystem.cs @@ -343,7 +343,7 @@ private void OnSpawnerTakeRole(EntityUid uid, GhostRoleMobSpawnerComponent compo if (ghostRole.MakeSentient) MakeSentientCommand.MakeSentient(mob, EntityManager, ghostRole.AllowMovement, ghostRole.AllowSpeech); - mob.EnsureComponent(); + EnsureComp(mob); GhostRoleInternalCreateMindAndTransfer(args.Player, uid, mob, ghostRole); diff --git a/Content.Server/Tabletop/TabletopSystem.Session.cs b/Content.Server/Tabletop/TabletopSystem.Session.cs index ef96733a121255..e9dea0c66a21f9 100644 --- a/Content.Server/Tabletop/TabletopSystem.Session.cs +++ b/Content.Server/Tabletop/TabletopSystem.Session.cs @@ -81,7 +81,7 @@ public void OpenSessionFor(IPlayerSession player, EntityUid uid) CloseSessionFor(player, gamer.Tabletop, false); // Set the entity as an absolute GAMER. - attachedEntity.EnsureComponent().Tabletop = uid; + EnsureComp(attachedEntity).Tabletop = uid; // Create a camera for the gamer to use var camera = CreateCamera(tabletop, player); @@ -139,7 +139,7 @@ private EntityUid CreateCamera(TabletopGameComponent tabletop, IPlayerSession pl var camera = EntityManager.SpawnEntity(null, session.Position.Offset(offset)); // Add an eye component and disable FOV - var eyeComponent = camera.EnsureComponent(); + var eyeComponent = EnsureComp(camera); _eye.SetDrawFov(camera, false, eyeComponent); _eye.SetZoom(camera, tabletop.CameraZoom, eyeComponent); diff --git a/Content.Shared/Singularity/Components/SingularityDistortionComponent.cs b/Content.Shared/Singularity/Components/SingularityDistortionComponent.cs index 73313661de169d..1382dd45f49e05 100644 --- a/Content.Shared/Singularity/Components/SingularityDistortionComponent.cs +++ b/Content.Shared/Singularity/Components/SingularityDistortionComponent.cs @@ -1,31 +1,17 @@ +using Content.Shared.Singularity.EntitySystems; using Robust.Shared.GameStates; -using Robust.Shared.Serialization; namespace Content.Shared.Singularity.Components { [RegisterComponent, NetworkedComponent] [AutoGenerateComponentState] + [Access(typeof(SharedSingularitySystem))] public sealed partial class SingularityDistortionComponent : Component { - // TODO: use access and remove this funny stuff - [DataField("intensity")] - private float _intensity = 31.25f; + [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + public float Intensity = 31.25f; - [DataField("falloffPower")] - private float _falloffPower = MathF.Sqrt(2f); - - [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public float Intensity - { - get => _intensity; - set => this.SetAndDirtyIfChanged(ref _intensity, value); - } - - [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public float FalloffPower - { - get => _falloffPower; - set => this.SetAndDirtyIfChanged(ref _falloffPower, value); - } + [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + public float FalloffPower = MathF.Sqrt(2f); } } diff --git a/Content.Shared/Singularity/EntitySystems/SharedSingularitySystem.cs b/Content.Shared/Singularity/EntitySystems/SharedSingularitySystem.cs index 56be197e1df4da..2ea40308b9448d 100644 --- a/Content.Shared/Singularity/EntitySystems/SharedSingularitySystem.cs +++ b/Content.Shared/Singularity/EntitySystems/SharedSingularitySystem.cs @@ -312,6 +312,7 @@ private void UpdateDistortion(EntityUid uid, SingularityDistortionComponent comp comp.FalloffPower = newFalloffPower; comp.Intensity = newIntensity; + Dirty(uid, comp); } /// From 201e39b42ea3ee8cf200f4487cbdf4c9e3929164 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Wed, 11 Oct 2023 10:22:09 +0100 Subject: [PATCH 045/245] show battery charge when recharger is examined (#20098) Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Entities/Structures/Power/chargers.yml | 197 ++++++------------ 1 file changed, 64 insertions(+), 133 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml index 520b293cb5d351..e5edc63df3ce64 100644 --- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml +++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml @@ -1,57 +1,54 @@ - type: entity - name: cell recharger - id: PowerCellRecharger - parent: ConstructibleMachine + abstract: true + parent: [BaseMachinePowered, ConstructibleMachine] + id: BaseRecharger placement: mode: SnapgridCenter components: - type: Transform anchored: true + noRot: false - type: Sprite - sprite: Structures/Power/cell_recharger.rsi - drawdepth: SmallObjects snapCardinals: true + - type: Appearance + - type: Charger + slotId: charger_slot + - type: Anchorable + delay: 1 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 80 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 40 + behaviors: + - !type:EmptyAllContainersBehaviour + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - type: StaticPrice + price: 25 + +- type: entity + abstract: true + parent: BaseRecharger + id: BaseItemRecharger + components: + - type: Sprite + drawdepth: SmallObjects layers: - map: ["enum.PowerChargerVisualLayers.Base"] state: "empty" - map: ["enum.PowerChargerVisualLayers.Light"] state: "light-off" shader: "unshaded" - - type: Charger - slotId: charger_slot - - type: ApcPowerReceiver - - type: ExtensionCableReceiver - - type: Machine - board: CellRechargerCircuitboard - - type: Appearance - - type: PowerChargerVisuals - - type: Anchorable - - type: Pullable - - type: Clickable - - type: InteractionOutline - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Metallic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 80 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 40 - behaviors: - - !type:EmptyAllContainersBehaviour - - !type:DoActsBehavior - acts: [ "Destruction" ] - - !type:PlaySoundBehavior - sound: - path: /Audio/Effects/metalbreak.ogg - - type: Physics - bodyType: Static - type: Fixtures fixtures: fix1: @@ -60,7 +57,26 @@ bounds: "-0.10,-0.10,0.10,0.10" density: 500 mask: - - TabletopMachineMask + - TabletopMachineMask + - type: PowerChargerVisuals + - type: ContainerContainer + containers: + charger_slot: !type:ContainerSlot + machine_board: !type:Container + machine_parts: !type:Container + +- type: entity + parent: BaseItemRecharger + id: PowerCellRecharger + name: cell recharger + components: + - type: Sprite + sprite: Structures/Power/cell_recharger.rsi + - type: Machine + board: CellRechargerCircuitboard + - type: PowerCellSlot + cellSlotId: charger_slot + # fitsInCharger is true i dont think this will ever affect anything negatively but it lets it function - type: ItemSlots slots: charger_slot: @@ -68,26 +84,18 @@ name: Power cell whitelist: components: - - PowerCell - - type: ContainerContainer - containers: - charger_slot: !type:ContainerSlot - machine_board: !type:Container - machine_parts: !type:Container - - type: StaticPrice - price: 15 + - PowerCell - type: entity - name: recharger + parent: BaseItemRecharger id: WeaponCapacitorRecharger - parent: PowerCellRecharger + name: recharger components: - type: Sprite sprite: Structures/Power/recharger.rsi - type: Machine board: WeaponCapacitorRechargerCircuitboard - - type: Charger - slotId: charger_slot + # no powercellslot since stun baton etc arent powercells - type: ItemSlots slots: charger_slot: @@ -97,19 +105,14 @@ - HitscanBatteryAmmoProvider - ProjectileBatteryAmmoProvider - Stunbaton - - type: StaticPrice - price: 15 - type: entity - name: wall recharger + parent: BaseItemRecharger id: WallWeaponCapacitorRecharger - placement: - mode: SnapgridCenter + name: wall recharger components: - type: Sprite sprite: Structures/Power/wall_recharger.rsi - drawdepth: SmallObjects - snapCardinals: true layers: - map: ["enum.PowerChargerVisualLayers.Base"] state: "empty" @@ -119,49 +122,6 @@ - type: WallMount - type: Charger chargeRate: 25 - slotId: charger_slot - - type: Transform - anchored: true - - type: ApcPowerReceiver - - type: ExtensionCableReceiver - - type: Appearance - - type: PowerChargerVisuals - - type: Anchorable - - type: Pullable - - type: Clickable - - type: InteractionOutline - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Metallic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 80 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 40 - behaviors: - - !type:EmptyAllContainersBehaviour - - !type:DoActsBehavior - acts: [ "Destruction" ] - - !type:PlaySoundBehavior - sound: - path: /Audio/Effects/metalbreak.ogg - - type: Physics - bodyType: Static - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeAabb - bounds: "-0.10,-0.10,0.10,0.10" - density: 500 - mask: - - TabletopMachineMask - type: ItemSlots slots: charger_slot: @@ -171,23 +131,15 @@ - HitscanBatteryAmmoProvider - ProjectileBatteryAmmoProvider - Stunbaton - - type: ContainerContainer - containers: - charger_slot: !type:ContainerSlot - machine_board: !type:Container - machine_parts: !type:Container - type: entity + parent: BaseRecharger id: BorgCharger - parent: [ BaseMachinePowered, ConstructibleMachine ] name: cyborg recharging station description: A stationary charger for various robotic and cyborg entities. Surprisingly spacious. - placement: - mode: SnapgridCenter components: - type: Sprite sprite: Structures/Power/borg_charger.rsi - snapCardinals: true layers: - state: borgcharger-u1 map: ["base"] @@ -218,7 +170,6 @@ - type: WiresVisuals - type: Machine board: BorgChargerCircuitboard - - type: Appearance - type: GenericVisualizer visuals: enum.StorageVisuals.Open: @@ -248,24 +199,6 @@ Charged: visible: true state: borgcharger1 - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 80 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 40 - behaviors: - - !type:EmptyAllContainersBehaviour - - !type:DoActsBehavior - acts: [ "Destruction" ] - - !type:PlaySoundBehavior - sound: - path: /Audio/Effects/metalbreak.ogg - type: EntityStorage capacity: 1 whitelist: @@ -276,5 +209,3 @@ entity_storage: !type:Container machine_board: !type:Container machine_parts: !type:Container - - type: StaticPrice - price: 15 From f339ba0404df7c4b488941ebefd8d07c01740ddf Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 11 Oct 2023 05:23:14 -0400 Subject: [PATCH 046/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d9502b721c34f8..f84ac42a72a6c6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Lank - changes: - - {message: What Moths consider to be made of cloth should now be more accurate., - type: Tweak} - - {message: Moths are now able to squeak., type: Tweak} - id: 4492 - time: '2023-08-09T04:05:06.0000000+00:00' - author: metalgearsloth changes: - {message: Added toggle to hide clothing in the character editor., type: Add} @@ -2957,3 +2950,9 @@ Entries: in replay mode to look similar to ingame.', type: Add} id: 4991 time: '2023-10-11T03:43:48.0000000+00:00' +- author: deltanedas + changes: + - {message: Rehargers can be examined to show the charge of the battery or weapon + inside., type: Tweak} + id: 4992 + time: '2023-10-11T09:22:09.0000000+00:00' From 071f75d1461ae2def1e02737220326232418122b Mon Sep 17 00:00:00 2001 From: mokiros Date: Wed, 11 Oct 2023 16:26:22 +0300 Subject: [PATCH 047/245] Fixed "Dropping things makes you teleport" (#20919) --- Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs index 06d6526566bfeb..77752c4fbdeb7c 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs @@ -103,7 +103,7 @@ public bool TryDrop(EntityUid uid, Hand hand, EntityCoordinates? targetDropLocat } var target = targetDropLocation.Value.ToMap(EntityManager, TransformSystem); - TransformSystem.SetWorldPosition(userXform, GetFinalDropCoordinates(uid, userXform.MapPosition, target)); + TransformSystem.SetWorldPosition(itemXform, GetFinalDropCoordinates(uid, userXform.MapPosition, target)); return true; } From 16032cf421a43608d5c04dad04a3fd43290240f4 Mon Sep 17 00:00:00 2001 From: Skarletto <122584947+Skarletto@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:20:21 -0400 Subject: [PATCH 048/245] today i will not stack 50 scrubbers (#20917) --- .../Structures/Piping/Atmospherics/unary.yml | 5 +++++ .../Prototypes/Recipes/Construction/utilities.yml | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml index e9d1c4a30d0ab0..1d08bd8c6e57e5 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml @@ -6,6 +6,9 @@ mode: SnapgridCenter components: - type: AtmosDevice + - type: Tag + tags: + - Unstackable - type: SubFloorHide blockInteractions: false blockAmbience: false @@ -53,6 +56,7 @@ - type: Tag tags: - GasVent + - Unstackable - type: Sprite drawdepth: FloorObjects sprite: Structures/Piping/Atmospherics/vent.rsi @@ -143,6 +147,7 @@ - type: Tag tags: - GasScrubber + - Unstackable - type: Sprite drawdepth: FloorObjects sprite: Structures/Piping/Atmospherics/scrubber.rsi diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index 40fe9b68830065..d1dac1d1b057de 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -445,7 +445,8 @@ state: vent_off conditions: - !type:TileNotBlocked {} - + - !type:NoUnstackableInTile + - type: construction name: passive vent description: Unpowered vent that equalises gases on both sides. @@ -466,7 +467,8 @@ state: vent_off conditions: - !type:TileNotBlocked {} - + - !type:NoUnstackableInTile + - type: construction name: air scrubber description: Sucks gas into connected pipes. @@ -487,7 +489,8 @@ state: scrub_off conditions: - !type:TileNotBlocked {} - + - !type:NoUnstackableInTile + - type: construction name: air injector description: Injects air into the atmosphere. @@ -508,7 +511,8 @@ state: injector conditions: - !type:TileNotBlocked {} - + - !type:NoUnstackableInTile + # ATMOS BINARY - type: construction name: gas pump From 6d34f19030a4559a425ebc44757dca0289be4dc6 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 11 Oct 2023 11:21:26 -0400 Subject: [PATCH 049/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f84ac42a72a6c6..9071419f44d9bf 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - {message: Added toggle to hide clothing in the character editor., type: Add} - id: 4493 - time: '2023-08-09T06:26:34.0000000+00:00' - author: Vordenburg changes: - {message: Diona are no longer inhibited by kudzu., type: Tweak} @@ -2956,3 +2951,9 @@ Entries: inside., type: Tweak} id: 4992 time: '2023-10-11T09:22:09.0000000+00:00' +- author: Skarletto + changes: + - {message: Changed unary devices such as scrubbers and vents to not be able to + stack with each other, type: Tweak} + id: 4993 + time: '2023-10-11T15:20:21.0000000+00:00' From 1f21826c21006cee1c4724e99e24d8faff0484d2 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Thu, 12 Oct 2023 03:31:10 +1100 Subject: [PATCH 050/245] Fix inventory relay by-ref events (#20816) * Fix inventory relay ref events * this works too (avoid duplication) --------- Co-authored-by: Slava0135 --- .../EntitySystems/ExplosionSystem.cs | 3 +-- .../Inventory/InventorySystem.Relay.cs | 24 +++++++++++-------- Content.Shared/Verbs/Verb.cs | 8 ++++--- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs index aa007c61c05566..5e5af03c17b3d3 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs @@ -116,8 +116,7 @@ public override void Shutdown() private void RelayedResistance(EntityUid uid, ExplosionResistanceComponent component, InventoryRelayedEvent args) { - var a = args.Args; - OnGetResistance(uid, component, ref a); + OnGetResistance(uid, component, ref args.Args); } private void OnGetResistance(EntityUid uid, ExplosionResistanceComponent component, ref GetExplosionResistanceEvent args) diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index 83b47542e2929c..fbe744911fd40a 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -24,12 +24,14 @@ public void InitializeRelay() SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); - SubscribeLocalEvent(RefRelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); + // by-ref events + SubscribeLocalEvent(RefRelayInventoryEvent); + // Eye/vision events SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); @@ -41,22 +43,24 @@ public void InitializeRelay() SubscribeLocalEvent>(RelayInventoryEvent); SubscribeLocalEvent>(RelayInventoryEvent); - SubscribeLocalEvent>(OnGetStrippingVerbs); + SubscribeLocalEvent>(OnGetEquipmentVerbs); } protected void RefRelayInventoryEvent(EntityUid uid, InventoryComponent component, ref T args) where T : IInventoryRelayEvent { - // Just so I don't have to update 20 morbillion events at once. - if (args.TargetSlots == SlotFlags.NONE) - return; - var containerEnumerator = new ContainerSlotEnumerator(uid, component.TemplateId, _prototypeManager, this, args.TargetSlots); + + // this copies the by-ref event var ev = new InventoryRelayedEvent(args); + while (containerEnumerator.MoveNext(out var container)) { if (!container.ContainedEntity.HasValue) continue; - RaiseLocalEvent(container.ContainedEntity.Value, ev, broadcast: false); + RaiseLocalEvent(container.ContainedEntity.Value, ev); } + + // and now we copy it back + args = ev.Args; } protected void RelayInventoryEvent(EntityUid uid, InventoryComponent component, T args) where T : IInventoryRelayEvent @@ -69,11 +73,11 @@ protected void RelayInventoryEvent(EntityUid uid, InventoryComponent componen while (containerEnumerator.MoveNext(out var container)) { if (!container.ContainedEntity.HasValue) continue; - RaiseLocalEvent(container.ContainedEntity.Value, ev, broadcast: false); + RaiseLocalEvent(container.ContainedEntity.Value, ev); } } - private void OnGetStrippingVerbs(EntityUid uid, InventoryComponent component, GetVerbsEvent args) + private void OnGetEquipmentVerbs(EntityUid uid, InventoryComponent component, GetVerbsEvent args) { // Automatically relay stripping related verbs to all equipped clothing. @@ -112,7 +116,7 @@ private void OnGetStrippingVerbs(EntityUid uid, InventoryComponent component, Ge /// public sealed class InventoryRelayedEvent : EntityEventArgs { - public readonly TEvent Args; + public TEvent Args; public InventoryRelayedEvent(TEvent args) { diff --git a/Content.Shared/Verbs/Verb.cs b/Content.Shared/Verbs/Verb.cs index 76ed20730753e7..660a3bdf948d15 100644 --- a/Content.Shared/Verbs/Verb.cs +++ b/Content.Shared/Verbs/Verb.cs @@ -1,5 +1,6 @@ using Content.Shared.Database; using Content.Shared.Interaction.Events; +using Content.Shared.Inventory; using Robust.Shared.Serialization; using Robust.Shared.Utility; @@ -349,9 +350,10 @@ public sealed class ExamineVerb : Verb } /// - /// Verbs specifically for interactions that occur with equipped entities. These verbs should be accessible via - /// the stripping UI, and may optionally also be accessible via a verb on the equipee if the via inventory relay - /// events.get-verbs event. + /// Verbs specifically for interactions that occur with equipped entities. These verbs are unique in that they + /// can be used via the stripping UI. Additionally, when getting verbs on an entity with an inventory it will + /// these automatically relay the event to all equipped items via a + /// . /// [Serializable, NetSerializable] public sealed class EquipmentVerb : Verb From 9ea55c5417ff6e60d887e71b6722f763ac61038f Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 11 Oct 2023 12:32:14 -0400 Subject: [PATCH 051/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9071419f44d9bf..6ed28abb1623b8 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Vordenburg - changes: - - {message: Diona are no longer inhibited by kudzu., type: Tweak} - id: 4494 - time: '2023-08-09T15:24:41.0000000+00:00' - author: themias changes: - {message: Taxibots have robot speech bubbles, type: Tweak} @@ -2957,3 +2952,9 @@ Entries: stack with each other, type: Tweak} id: 4993 time: '2023-10-11T15:20:21.0000000+00:00' +- author: ElectroJr + changes: + - {message: Fixed explosion resistance from clothing/equipment not being applied., + type: Fix} + id: 4994 + time: '2023-10-11T16:31:10.0000000+00:00' From b7d96c6538ef4ab0f00c6441ba42b0c8d34bbb19 Mon Sep 17 00:00:00 2001 From: brainfood1183 <113240905+brainfood1183@users.noreply.github.com> Date: Wed, 11 Oct 2023 17:43:54 +0100 Subject: [PATCH 052/245] Honk reagent now makes you Honk. (#20838) --- Resources/Prototypes/Reagents/toxins.yml | 7 ++++++- Resources/Prototypes/Voice/disease_emotes.yml | 5 ----- Resources/Prototypes/Voice/speech_emotes.yml | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index e2a40ffbb314ba..7e206cc9d8f914 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -508,6 +508,10 @@ Poison: metabolismRate: 0.05 effects: + - !type:Emote + emote: Honk + showInChat: true + probability: 0.2 - !type:HealthChange conditions: - !type:ReagentThreshold @@ -517,6 +521,7 @@ damage: types: Poison: 0.06 + - type: reagent id: Lead @@ -548,4 +553,4 @@ - !type:HealthChange damage: types: - Poison: 1.8 \ No newline at end of file + Poison: 1.8 diff --git a/Resources/Prototypes/Voice/disease_emotes.yml b/Resources/Prototypes/Voice/disease_emotes.yml index fa5f1cd610950e..af93025cae00f0 100644 --- a/Resources/Prototypes/Voice/disease_emotes.yml +++ b/Resources/Prototypes/Voice/disease_emotes.yml @@ -43,8 +43,3 @@ id: Snore category: Vocal chatMessages: [snores] - -- type: emote - id: Honk - category: Vocal - chatMessages: [honks] diff --git a/Resources/Prototypes/Voice/speech_emotes.yml b/Resources/Prototypes/Voice/speech_emotes.yml index ca8b9d550216dc..133c924919060c 100644 --- a/Resources/Prototypes/Voice/speech_emotes.yml +++ b/Resources/Prototypes/Voice/speech_emotes.yml @@ -53,6 +53,11 @@ - giggling - giggled +- type: emote + id: Honk + category: Vocal + chatMessages: [honks] + - type: emote id: Sigh category: Vocal From 0cb46632fd0d38ab2d026c30cb11a7217520eb9e Mon Sep 17 00:00:00 2001 From: JoeHammad1844 <130668733+JoeHammad1844@users.noreply.github.com> Date: Thu, 12 Oct 2023 03:47:25 +1100 Subject: [PATCH 053/245] nukie shuttle gets syndicate airlocks (#20417) --- Resources/Maps/infiltrator.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Maps/infiltrator.yml b/Resources/Maps/infiltrator.yml index 0cba6c828b22f5..6670301e909c66 100644 --- a/Resources/Maps/infiltrator.yml +++ b/Resources/Maps/infiltrator.yml @@ -574,7 +574,7 @@ entities: - type: GasTileOverlay - type: SpreaderGrid - type: GridPathfinding -- proto: AirlockExternal +- proto: AirlockSyndicateLocked entities: - uid: 69 components: @@ -616,7 +616,7 @@ entities: - pos: -4.5,-10.5 parent: 73 type: Transform -- proto: AirlockSecurity +- proto: AirlockSyndicateLocked entities: - uid: 201 components: @@ -637,7 +637,7 @@ entities: - pos: -0.5,-14.5 parent: 73 type: Transform -- proto: AirlockSecurityGlass +- proto: AirlockSyndicateGlassLocked entities: - uid: 371 components: From 8177c406f6fa5a9fb1e01ee330f2ac9026bc2f79 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 11 Oct 2023 12:48:31 -0400 Subject: [PATCH 054/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6ed28abb1623b8..a21254b1320d3f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: themias - changes: - - {message: Taxibots have robot speech bubbles, type: Tweak} - id: 4495 - time: '2023-08-09T16:48:08.0000000+00:00' - author: Ilya246 changes: - {message: The air alarm UI now allows copying settings of one device to all similar @@ -2958,3 +2953,8 @@ Entries: type: Fix} id: 4994 time: '2023-10-11T16:31:10.0000000+00:00' +- author: JoeHammad + changes: + - {message: The nukie ship now has syndicate access airlocks, type: Add} + id: 4995 + time: '2023-10-11T16:47:25.0000000+00:00' From fcd0d9ef0f4d3ce43fd97ac204f7e3b0275a79cd Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Thu, 12 Oct 2023 04:50:10 +1100 Subject: [PATCH 055/245] Add methods to transfer actions between containers (#20901) --- .../Systems/Actions/ActionUIController.cs | 5 +- .../Actions/ActionContainerSystem.cs | 100 +++++++++++++++--- Content.Shared/Actions/SharedActionsSystem.cs | 10 +- 3 files changed, 98 insertions(+), 17 deletions(-) diff --git a/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs b/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs index b2ff36d05c37db..e2de86201e7273 100644 --- a/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs +++ b/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs @@ -769,10 +769,9 @@ private bool OnMenuBeginDrag() { if (_actionsSystem != null && _actionsSystem.TryGetActionData(_menuDragHelper.Dragged?.ActionId, out var action)) { - if (action.EntityIcon is {} entIcon) + if (EntityManager.TryGetComponent(action.EntityIcon, out SpriteComponent? sprite)) { - _dragShadow.Texture = EntityManager.GetComponent(entIcon).Icon? - .GetFrame(RsiDirection.South, 0); + _dragShadow.Texture = sprite.Icon?.GetFrame(RsiDirection.South, 0); } else if (action.Icon != null) { diff --git a/Content.Shared/Actions/ActionContainerSystem.cs b/Content.Shared/Actions/ActionContainerSystem.cs index 27cd8dcce68810..bce0836efb6283 100644 --- a/Content.Shared/Actions/ActionContainerSystem.cs +++ b/Content.Shared/Actions/ActionContainerSystem.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using System.Linq; using Robust.Shared.Containers; using Robust.Shared.Network; using Robust.Shared.Timing; @@ -15,6 +16,7 @@ public sealed class ActionContainerSystem : EntitySystem [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly INetManager _netMan = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; public override void Initialize() { @@ -96,7 +98,61 @@ public bool EnsureAction(EntityUid uid, } /// - /// Adds a pre-existing action to an action container. + /// Transfers an action from one container to another, while keeping the attached entity the same. + /// + /// + /// While the attached entity should be the same at the end, this will actually remove and then re-grant the action. + /// + public void TransferAction( + EntityUid actionId, + EntityUid newContainer, + BaseActionComponent? action = null, + ActionsContainerComponent? container = null) + { + if (!_actions.ResolveActionData(actionId, ref action)) + return; + + if (action.Container == newContainer) + return; + + var attached = action.AttachedEntity; + if (!AddAction(newContainer, actionId, action, container)) + return; + + DebugTools.AssertEqual(action.Container, newContainer); + DebugTools.AssertNull(action.AttachedEntity); + + if (attached != null) + _actions.AddActionDirect(attached.Value, actionId, action: action); + + DebugTools.AssertEqual(action.AttachedEntity, attached); + } + + /// + /// Transfers all actions from one container to another, while keeping the attached entity the same. + /// + /// <remarks> + /// While the attached entity should be the same at the end, this will actually remove and then re-grant the action. + /// </remarks> + public void TransferAllActions( + EntityUid from, + EntityUid to, + ActionsContainerComponent? oldContainer = null, + ActionsContainerComponent? newContainer = null) + { + if (!Resolve(from, ref oldContainer) || !Resolve(to, ref newContainer)) + return; + + foreach (var action in oldContainer.Container.ContainedEntities.ToArray()) + { + TransferAction(action, to, container: newContainer); + } + + DebugTools.AssertEqual(oldContainer.Container.Count, 0); + } + + /// + /// Adds a pre-existing action to an action container. If the action is already in some container it will first remove it. /// public bool AddAction(EntityUid uid, EntityUid actionId, BaseActionComponent? action = null, ActionsContainerComponent? comp = null) { @@ -104,10 +160,7 @@ public bool AddAction(EntityUid uid, EntityUid actionId, BaseActionComponent? ac return false; if (action.Container != null) - { - Log.Error($"Attempted to insert an action {ToPrettyString(actionId)} that was already in a container {ToPrettyString(action.Container.Value)}"); - return false; - } + RemoveAction(actionId, action); DebugTools.Assert(comp == null || comp.Owner == uid); comp ??= EnsureComp(uid); @@ -124,6 +177,35 @@ public bool AddAction(EntityUid uid, EntityUid actionId, BaseActionComponent? ac return true; } + /// + /// Removes an action from its container and any action-performer and moves the action to null-space + /// + public void RemoveAction(EntityUid actionId, BaseActionComponent? action = null) + { + if (!_actions.ResolveActionData(actionId, ref action)) + return; + + if (action.Container == null) + return; + + _transform.DetachParentToNull(actionId, Transform(actionId)); + + // Container removal events should have removed the action from the action container. + // However, just in case the container was already deleted we will still manually clear the container field + if (action.Container != null) + { + if (Exists(action.Container)) + Log.Error($"Failed to remove action {ToPrettyString(actionId)} from its container {ToPrettyString(action.Container)}?"); + action.Container = null; + } + + // If the action was granted to some entity, then the removal from the container should have automatically removed it. + // However, if the action was granted without ever being placed in an action container, it will not have been removed. + // Therefore, to ensure that the behaviour of the method is consistent we will also explicitly remove the action. + if (action.AttachedEntity != null) + _actions.RemoveAction(action.AttachedEntity.Value, actionId, action: action); + } + private void OnInit(EntityUid uid, ActionsContainerComponent component, ComponentInit args) { component.Container = _container.EnsureContainer(uid, ActionsContainerComponent.ContainerId); @@ -171,13 +253,7 @@ private void OnEntityRemoved(EntityUid uid, ActionsContainerComponent component, var ev = new ActionRemovedEvent(args.Entity, data); RaiseLocalEvent(uid, ref ev); - - if (_netMan.IsServer) - { - // TODO Actions - // log an error or warning here once gibbing code is fixed. - QueueDel(args.Entity); - } + data.Container = null; } } diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 86379277e23ed7..8d2c8c28e3e44d 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -586,9 +586,16 @@ public void RemoveAction(EntityUid performer, EntityUid? actionId, ActionsCompon if (!ResolveActionData(actionId, ref action)) return; + if (action.AttachedEntity != performer) + { + Log.Error($"Attempted to remove an action {ToPrettyString(actionId)} from an entity that it was never attached to: {ToPrettyString(performer)}"); + return; + } + if (!Resolve(performer, ref comp, false)) { - DebugTools.AssertNull(action.AttachedEntity); + DebugTools.Assert(action.AttachedEntity == null || TerminatingOrDeleted(action.AttachedEntity.Value)); + action.AttachedEntity = null; return; } @@ -599,7 +606,6 @@ public void RemoveAction(EntityUid performer, EntityUid? actionId, ActionsCompon return; } - DebugTools.Assert(action.AttachedEntity == performer); comp.Actions.Remove(actionId.Value); action.AttachedEntity = null; Dirty(actionId.Value, action); From 0afc03558508060a7de6361b6a513e1441049d3c Mon Sep 17 00:00:00 2001 From: Colin-Tel <113523727+Colin-Tel@users.noreply.github.com> Date: Wed, 11 Oct 2023 16:49:49 -0500 Subject: [PATCH 056/245] Prettified human_hair.rsi meta.json (#20873) * Prettified human_hair.rsi meta.json * Update meta.json removed delay field --- .../Customization/human_hair.rsi/meta.json | 748 +++++++++++++++++- 1 file changed, 747 insertions(+), 1 deletion(-) diff --git a/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json b/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json index 142fc9c1aa3b46..9b7d68a1671461 100644 --- a/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/human_hair.rsi/meta.json @@ -1 +1,747 @@ -{"version":1,"size":{"x":32,"y":32},"copyright":"Taken from https://github.com/tgstation/tgstation/blob/05ec94e46349c35e29ca91e5e97d0c88ae26ad44/icons/mob/species/human/human_face.dmi , resprited by Alekshhh, a modified by potato1234x","license":"CC-BY-SA-3.0","states":[{"name":"80s","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"a","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"afro","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"afro2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"antenna","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"b","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"baldfade","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bedhead","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bedheadv2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bedheadv3","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"beehive","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"beehivev2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bigafro","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bigflattop","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bigpompadour","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bob","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bob2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bob4","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bobcurl","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bobcut","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"boddicker","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bowlcut","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bowlcut2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"braid","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"braid2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"braided","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"braidfront","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"braidtail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bun","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bun3","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bunhead2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"business","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"business2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"business3","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"business4","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"buzzcut","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"c","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"classicafro","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"classicbigafro","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"classiccia","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"classicfloorlength_bedhead","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"classicmodern","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"classicmulder","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"classicwisp","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"cia","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"coffeehouse","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"combover","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"cornrowbraid","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"cornrowbun","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"cornrows","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"cornrows2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"cornrowtail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"country","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"crewcut","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"curls","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"d","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"dandypompadour","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"devilock","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"doublebun","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"dreads","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"drillhair","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"drillhairextended","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"drillruru","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"e","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"emo","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"emo2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"emofringe","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"f","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"father","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"feather","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"flair","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"floorlength_bedhead","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"fringetail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"gelled","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"gentle","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"halfbang","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"halfbang2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"halfshaved","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"hbraid","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"hedgehog","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"highfade","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"highponytail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"himecut","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"himecut2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"himeup","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"hitop","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"jade","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"jensen","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"joestar","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"kagami","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"keanu","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"kusanagi","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"largebun","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"lbangs","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"long","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"long2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"long3","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"long_bedhead","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longemo","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longest","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longest2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longfringe","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longovereye","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longsidepart","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longstraightponytail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"lowfade","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"manbun","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"medfade","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"megaeyebrows","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"messy","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"modern","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"mulder","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"nitori","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"nofade","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"odango","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"ombre","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"oneshoulder","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"oxton","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"part","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"parted","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"pigtails","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"pigtails2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"pixie","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"pompadour","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"ponytail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"ponytail2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"ponytail3","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"ponytail4","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"ponytail5","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"ponytail6","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"ponytail7","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"poofy","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"protagonist","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"quiff","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"reversemohawk","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"ronin","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"rosa","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"sargeant","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shaved","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shavedmohawk","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shavedpart","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shortbangs","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shortbraid","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shorthair2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shorthair3","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shorthairg","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shorthime","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shortovereye","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"sidecut","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"sidetail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"sidetail2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"sidetail3","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"sidetail4","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"skinhead","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"spikey","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"spiky","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"spiky2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"spikyponytail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"stail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"swept","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"swept2","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shoulderlengthovereye","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"thinning","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"thinningfront","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"thinningrear","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"tightbun","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"topknot","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"tressshoulder","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"trimflat","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"trimmed","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"twintail","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"twostrands","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"undercut","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"undercutleft","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"undercutright","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"unkept","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"unshaven_mohawk","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"updo","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"veryshortovereyealternate","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"vlong","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"vlongfringe","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"volaju","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"wisp","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"bald","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]}]} +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "copyright": "Taken from https://github.com/tgstation/tgstation/blob/05ec94e46349c35e29ca91e5e97d0c88ae26ad44/icons/mob/species/human/human_face.dmi , resprited by Alekshhh, a modified by potato1234x", + "license": "CC-BY-SA-3.0", + "states": [ + { + "name": "80s", + "directions": 4 + }, + { + "name": "a", + "directions": 4 + }, + { + "name": "afro", + "directions": 4 + }, + { + "name": "afro2", + "directions": 4 + }, + { + "name": "antenna", + "directions": 4 + }, + { + "name": "b", + "directions": 4 + }, + { + "name": "baldfade", + "directions": 4 + }, + { + "name": "bedhead", + "directions": 4 + }, + { + "name": "bedheadv2", + "directions": 4 + }, + { + "name": "bedheadv3", + "directions": 4 + }, + { + "name": "beehive", + "directions": 4 + }, + { + "name": "beehivev2", + "directions": 4 + }, + { + "name": "bigafro", + "directions": 4 + }, + { + "name": "bigflattop", + "directions": 4 + }, + { + "name": "bigpompadour", + "directions": 4 + }, + { + "name": "bob", + "directions": 4 + }, + { + "name": "bob2", + "directions": 4 + }, + { + "name": "bob4", + "directions": 4 + }, + { + "name": "bobcurl", + "directions": 4 + }, + { + "name": "bobcut", + "directions": 4 + }, + { + "name": "boddicker", + "directions": 4 + }, + { + "name": "bowlcut", + "directions": 4 + }, + { + "name": "bowlcut2", + "directions": 4 + }, + { + "name": "braid", + "directions": 4 + }, + { + "name": "braid2", + "directions": 4 + }, + { + "name": "braided", + "directions": 4 + }, + { + "name": "braidfront", + "directions": 4 + }, + { + "name": "braidtail", + "directions": 4 + }, + { + "name": "bun", + "directions": 4 + }, + { + "name": "bun3", + "directions": 4 + }, + { + "name": "bunhead2", + "directions": 4 + }, + { + "name": "business", + "directions": 4 + }, + { + "name": "business2", + "directions": 4 + }, + { + "name": "business3", + "directions": 4 + }, + { + "name": "business4", + "directions": 4 + }, + { + "name": "buzzcut", + "directions": 4 + }, + { + "name": "c", + "directions": 4 + }, + { + "name": "classicafro", + "directions": 4 + }, + { + "name": "classicbigafro", + "directions": 4 + }, + { + "name": "classiccia", + "directions": 4 + }, + { + "name": "classicfloorlength_bedhead", + "directions": 4 + }, + { + "name": "classicmodern", + "directions": 4 + }, + { + "name": "classicmulder", + "directions": 4 + }, + { + "name": "classicwisp", + "directions": 4 + }, + { + "name": "cia", + "directions": 4 + }, + { + "name": "coffeehouse", + "directions": 4 + }, + { + "name": "combover", + "directions": 4 + }, + { + "name": "cornrowbraid", + "directions": 4 + }, + { + "name": "cornrowbun", + "directions": 4 + }, + { + "name": "cornrows", + "directions": 4 + }, + { + "name": "cornrows2", + "directions": 4 + }, + { + "name": "cornrowtail", + "directions": 4 + }, + { + "name": "country", + "directions": 4 + }, + { + "name": "crewcut", + "directions": 4 + }, + { + "name": "curls", + "directions": 4 + }, + { + "name": "d", + "directions": 4 + }, + { + "name": "dandypompadour", + "directions": 4 + }, + { + "name": "devilock", + "directions": 4 + }, + { + "name": "doublebun", + "directions": 4 + }, + { + "name": "dreads", + "directions": 4 + }, + { + "name": "drillhair", + "directions": 4 + }, + { + "name": "drillhairextended", + "directions": 4 + }, + { + "name": "drillruru", + "directions": 4 + }, + { + "name": "e", + "directions": 4 + }, + { + "name": "emo", + "directions": 4 + }, + { + "name": "emo2", + "directions": 4 + }, + { + "name": "emofringe", + "directions": 4 + }, + { + "name": "f", + "directions": 4 + }, + { + "name": "father", + "directions": 4 + }, + { + "name": "feather", + "directions": 4 + }, + { + "name": "flair", + "directions": 4 + }, + { + "name": "floorlength_bedhead", + "directions": 4 + }, + { + "name": "fringetail", + "directions": 4 + }, + { + "name": "gelled", + "directions": 4 + }, + { + "name": "gentle", + "directions": 4 + }, + { + "name": "halfbang", + "directions": 4 + }, + { + "name": "halfbang2", + "directions": 4 + }, + { + "name": "halfshaved", + "directions": 4 + }, + { + "name": "hbraid", + "directions": 4 + }, + { + "name": "hedgehog", + "directions": 4 + }, + { + "name": "highfade", + "directions": 4 + }, + { + "name": "highponytail", + "directions": 4 + }, + { + "name": "himecut", + "directions": 4 + }, + { + "name": "himecut2", + "directions": 4 + }, + { + "name": "himeup", + "directions": 4 + }, + { + "name": "hitop", + "directions": 4 + }, + { + "name": "jade", + "directions": 4 + }, + { + "name": "jensen", + "directions": 4 + }, + { + "name": "joestar", + "directions": 4 + }, + { + "name": "kagami", + "directions": 4 + }, + { + "name": "keanu", + "directions": 4 + }, + { + "name": "kusanagi", + "directions": 4 + }, + { + "name": "largebun", + "directions": 4 + }, + { + "name": "lbangs", + "directions": 4 + }, + { + "name": "long", + "directions": 4 + }, + { + "name": "long2", + "directions": 4 + }, + { + "name": "long3", + "directions": 4 + }, + { + "name": "long_bedhead", + "directions": 4 + }, + { + "name": "longemo", + "directions": 4 + }, + { + "name": "longest", + "directions": 4 + }, + { + "name": "longest2", + "directions": 4 + }, + { + "name": "longfringe", + "directions": 4 + }, + { + "name": "longovereye", + "directions": 4 + }, + { + "name": "longsidepart", + "directions": 4 + }, + { + "name": "longstraightponytail", + "directions": 4 + }, + { + "name": "lowfade", + "directions": 4 + }, + { + "name": "manbun", + "directions": 4 + }, + { + "name": "medfade", + "directions": 4 + }, + { + "name": "megaeyebrows", + "directions": 4 + }, + { + "name": "messy", + "directions": 4 + }, + { + "name": "modern", + "directions": 4 + }, + { + "name": "mulder", + "directions": 4 + }, + { + "name": "nitori", + "directions": 4 + }, + { + "name": "nofade", + "directions": 4 + }, + { + "name": "odango", + "directions": 4 + }, + { + "name": "ombre", + "directions": 4 + }, + { + "name": "oneshoulder", + "directions": 4 + }, + { + "name": "oxton", + "directions": 4 + }, + { + "name": "part", + "directions": 4 + }, + { + "name": "parted", + "directions": 4 + }, + { + "name": "pigtails", + "directions": 4 + }, + { + "name": "pigtails2", + "directions": 4 + }, + { + "name": "pixie", + "directions": 4 + }, + { + "name": "pompadour", + "directions": 4 + }, + { + "name": "ponytail", + "directions": 4 + }, + { + "name": "ponytail2", + "directions": 4 + }, + { + "name": "ponytail3", + "directions": 4 + }, + { + "name": "ponytail4", + "directions": 4 + }, + { + "name": "ponytail5", + "directions": 4 + }, + { + "name": "ponytail6", + "directions": 4 + }, + { + "name": "ponytail7", + "directions": 4 + }, + { + "name": "poofy", + "directions": 4 + }, + { + "name": "protagonist", + "directions": 4 + }, + { + "name": "quiff", + "directions": 4 + }, + { + "name": "reversemohawk", + "directions": 4 + }, + { + "name": "ronin", + "directions": 4 + }, + { + "name": "rosa", + "directions": 4 + }, + { + "name": "sargeant", + "directions": 4 + }, + { + "name": "shaved", + "directions": 4 + }, + { + "name": "shavedmohawk", + "directions": 4 + }, + { + "name": "shavedpart", + "directions": 4 + }, + { + "name": "shortbangs", + "directions": 4 + }, + { + "name": "shortbraid", + "directions": 4 + }, + { + "name": "shorthair2", + "directions": 4 + }, + { + "name": "shorthair3", + "directions": 4 + }, + { + "name": "shorthairg", + "directions": 4 + }, + { + "name": "shorthime", + "directions": 4 + }, + { + "name": "shortovereye", + "directions": 4 + }, + { + "name": "sidecut", + "directions": 4 + }, + { + "name": "sidetail", + "directions": 4 + }, + { + "name": "sidetail2", + "directions": 4 + }, + { + "name": "sidetail3", + "directions": 4 + }, + { + "name": "sidetail4", + "directions": 4 + }, + { + "name": "skinhead", + "directions": 4 + }, + { + "name": "spikey", + "directions": 4 + }, + { + "name": "spiky", + "directions": 4 + }, + { + "name": "spiky2", + "directions": 4 + }, + { + "name": "spikyponytail", + "directions": 4 + }, + { + "name": "stail", + "directions": 4 + }, + { + "name": "swept", + "directions": 4 + }, + { + "name": "swept2", + "directions": 4 + }, + { + "name": "shoulderlengthovereye", + "directions": 4 + }, + { + "name": "thinning", + "directions": 4 + }, + { + "name": "thinningfront", + "directions": 4 + }, + { + "name": "thinningrear", + "directions": 4 + }, + { + "name": "tightbun", + "directions": 4 + }, + { + "name": "topknot", + "directions": 4 + }, + { + "name": "tressshoulder", + "directions": 4 + }, + { + "name": "trimflat", + "directions": 4 + }, + { + "name": "trimmed", + "directions": 4 + }, + { + "name": "twintail", + "directions": 4 + }, + { + "name": "twostrands", + "directions": 4 + }, + { + "name": "undercut", + "directions": 4 + }, + { + "name": "undercutleft", + "directions": 4 + }, + { + "name": "undercutright", + "directions": 4 + }, + { + "name": "unkept", + "directions": 4 + }, + { + "name": "unshaven_mohawk", + "directions": 4 + }, + { + "name": "updo", + "directions": 4 + }, + { + "name": "veryshortovereyealternate", + "directions": 4 + }, + { + "name": "vlong", + "directions": 4 + }, + { + "name": "vlongfringe", + "directions": 4 + }, + { + "name": "volaju", + "directions": 4 + }, + { + "name": "wisp", + "directions": 4 + }, + { + "name": "bald", + "directions": 4 + } + ] + } \ No newline at end of file From b53f10fbb268bb1cdd7e3a2256cd8cc424485cd3 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Wed, 11 Oct 2023 15:14:00 -0700 Subject: [PATCH 057/245] Fix not removing RevolutionaryRoleComponent from minds on mindshield application (#20832) * Fix not removing RevolutionaryRoleComponent from minds on mindshield application * Simplify other part of the mindshield code * Fix being able to mindshield head revs * Other way around --- Content.Server/Mindshield/MindShieldSystem.cs | 31 ++++++++++--------- .../SharedRevolutionarySystem.cs | 14 +++++---- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/Content.Server/Mindshield/MindShieldSystem.cs b/Content.Server/Mindshield/MindShieldSystem.cs index 714055bd9424e9..bfca6c008ea528 100644 --- a/Content.Server/Mindshield/MindShieldSystem.cs +++ b/Content.Server/Mindshield/MindShieldSystem.cs @@ -1,13 +1,13 @@ -using Content.Shared.Mindshield.Components; -using Content.Shared.Revolutionary.Components; -using Content.Server.Popups; -using Content.Shared.Database; using Content.Server.Administration.Logs; using Content.Server.Mind; -using Content.Shared.Implants; -using Content.Shared.Tag; +using Content.Server.Popups; using Content.Server.Roles; +using Content.Shared.Database; +using Content.Shared.Implants; using Content.Shared.Implants.Components; +using Content.Shared.Mindshield.Components; +using Content.Shared.Revolutionary.Components; +using Content.Shared.Tag; namespace Content.Server.Mindshield; @@ -39,25 +39,26 @@ public void ImplantCheck(EntityUid uid, SubdermalImplantComponent comp, ref Impl if (_tag.HasTag(ev.Implant, MindShieldTag) && ev.Implanted != null) { EnsureComp(ev.Implanted.Value); - MindShieldRemovalCheck(ev.Implanted, ev.Implant); + MindShieldRemovalCheck(ev.Implanted.Value, ev.Implant); } } /// /// Checks if the implanted person was a Rev or Head Rev and remove role or destroy mindshield respectively. /// - public void MindShieldRemovalCheck(EntityUid? implanted, EntityUid implant) + public void MindShieldRemovalCheck(EntityUid implanted, EntityUid implant) { - if (HasComp(implanted) && !HasComp(implanted)) + if (HasComp(implanted)) { - _mindSystem.TryGetMind(implanted.Value, out var mindId, out _); - _adminLogManager.Add(LogType.Mind, LogImpact.Medium, $"{ToPrettyString(implanted.Value)} was deconverted due to being implanted with a Mindshield."); - _roleSystem.MindTryRemoveRole(mindId); + _popupSystem.PopupEntity(Loc.GetString("head-rev-break-mindshield"), implanted); + QueueDel(implant); + return; } - else if (HasComp(implanted)) + + if (_mindSystem.TryGetMind(implanted, out var mindId, out _) && + _roleSystem.MindTryRemoveRole(mindId)) { - _popupSystem.PopupEntity(Loc.GetString("head-rev-break-mindshield"), implanted.Value); - QueueDel(implant); + _adminLogManager.Add(LogType.Mind, LogImpact.Medium, $"{ToPrettyString(implanted)} was deconverted due to being implanted with a Mindshield."); } } } diff --git a/Content.Shared/Revolutionary/SharedRevolutionarySystem.cs b/Content.Shared/Revolutionary/SharedRevolutionarySystem.cs index e2a8192716c85c..1399b116e0f6b5 100644 --- a/Content.Shared/Revolutionary/SharedRevolutionarySystem.cs +++ b/Content.Shared/Revolutionary/SharedRevolutionarySystem.cs @@ -1,7 +1,7 @@ -using Content.Shared.Revolutionary.Components; using Content.Shared.IdentityManagement; using Content.Shared.Mindshield.Components; using Content.Shared.Popups; +using Content.Shared.Revolutionary.Components; using Content.Shared.Stunnable; namespace Content.Shared.Revolutionary; @@ -22,7 +22,13 @@ public override void Initialize() /// private void MindShieldImplanted(EntityUid uid, MindShieldComponent comp, MapInitEvent init) { - if (HasComp(uid) && !HasComp(uid)) + if (HasComp(uid)) + { + RemCompDeferred(uid); + return; + } + + if (HasComp(uid)) { var stunTime = TimeSpan.FromSeconds(4); var name = Identity.Entity(uid, EntityManager); @@ -30,9 +36,5 @@ private void MindShieldImplanted(EntityUid uid, MindShieldComponent comp, MapIni _sharedStun.TryParalyze(uid, stunTime, true); _popupSystem.PopupEntity(Loc.GetString("rev-break-control", ("name", name)), uid); } - else if (HasComp(uid)) - { - RemCompDeferred(uid); - } } } From 1508f513bf883ad8047dd952a0571258c539b9a1 Mon Sep 17 00:00:00 2001 From: Psychpsyo <60073468+Psychpsyo@users.noreply.github.com> Date: Thu, 12 Oct 2023 00:57:09 +0200 Subject: [PATCH 058/245] Jittering System Fix + Cleanup (#20921) --- Content.Client/Jittering/JitteringSystem.cs | 21 ++++++++----------- .../Jittering/SharedJitteringSystem.cs | 2 +- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Content.Client/Jittering/JitteringSystem.cs b/Content.Client/Jittering/JitteringSystem.cs index 032eb3e18f2c52..41f20634ab59c4 100644 --- a/Content.Client/Jittering/JitteringSystem.cs +++ b/Content.Client/Jittering/JitteringSystem.cs @@ -1,13 +1,7 @@ -using System; -using System.Collections.Immutable; using System.Numerics; using Content.Shared.Jittering; using Robust.Client.Animations; using Robust.Client.GameObjects; -using Robust.Shared.Animations; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Maths; using Robust.Shared.Random; namespace Content.Client.Jittering @@ -15,6 +9,7 @@ namespace Content.Client.Jittering public sealed class JitteringSystem : SharedJitteringSystem { [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly AnimationPlayerSystem _animationPlayer = default!; private readonly float[] _sign = { -1, 1 }; private readonly string _jitterAnimationKey = "jittering"; @@ -35,13 +30,13 @@ private void OnStartup(EntityUid uid, JitteringComponent jittering, ComponentSta var animationPlayer = EntityManager.EnsureComponent(uid); - animationPlayer.Play(GetAnimation(jittering, sprite), _jitterAnimationKey); + _animationPlayer.Play(animationPlayer, GetAnimation(jittering, sprite), _jitterAnimationKey); } private void OnShutdown(EntityUid uid, JitteringComponent jittering, ComponentShutdown args) { if (EntityManager.TryGetComponent(uid, out AnimationPlayerComponent? animationPlayer)) - animationPlayer.Stop(_jitterAnimationKey); + _animationPlayer.Stop(animationPlayer, _jitterAnimationKey); if (EntityManager.TryGetComponent(uid, out SpriteComponent? sprite)) sprite.Offset = Vector2.Zero; @@ -52,9 +47,9 @@ private void OnAnimationCompleted(EntityUid uid, JitteringComponent jittering, A if(args.Key != _jitterAnimationKey) return; - if(EntityManager.TryGetComponent(uid, out AnimationPlayerComponent? animationPlayer) + if (EntityManager.TryGetComponent(uid, out AnimationPlayerComponent? animationPlayer) && EntityManager.TryGetComponent(uid, out SpriteComponent? sprite)) - animationPlayer.Play(GetAnimation(jittering, sprite), _jitterAnimationKey); + _animationPlayer.Play(animationPlayer, GetAnimation(jittering, sprite), _jitterAnimationKey); } private Animation GetAnimation(JitteringComponent jittering, SpriteComponent sprite) @@ -77,8 +72,10 @@ private Animation GetAnimation(JitteringComponent jittering, SpriteComponent spr offset.Y *= -1; } - // Animation length shouldn't be too high so we will cap it at 2 seconds... - var length = Math.Min((1f/jittering.Frequency), 2f); + var length = 0f; + // avoid dividing by 0 so animations don't try to be infinitely long + if (jittering.Frequency > 0) + length = 1f / jittering.Frequency; jittering.LastJitter = offset; diff --git a/Content.Shared/Jittering/SharedJitteringSystem.cs b/Content.Shared/Jittering/SharedJitteringSystem.cs index 327a4521752000..1ac8413375e60c 100644 --- a/Content.Shared/Jittering/SharedJitteringSystem.cs +++ b/Content.Shared/Jittering/SharedJitteringSystem.cs @@ -72,7 +72,7 @@ public void AddJitter(EntityUid uid, float amplitude = 10f, float frequency = 4f var jitter = EnsureComp(uid); jitter.Amplitude = amplitude; jitter.Frequency = frequency; - Dirty(jitter); + Dirty(uid, jitter); } } } From 1e1433374a30baf48b3d4082f2d3cefb300c6468 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Wed, 11 Oct 2023 23:30:52 -0700 Subject: [PATCH 059/245] Update Patrons list in the credits (#20937) --- Resources/Credits/Patrons.yml | 226 +++++++++++++++++++--------------- 1 file changed, 128 insertions(+), 98 deletions(-) diff --git a/Resources/Credits/Patrons.yml b/Resources/Credits/Patrons.yml index 99f51c15676cd4..acb9eb229a5501 100644 --- a/Resources/Credits/Patrons.yml +++ b/Resources/Credits/Patrons.yml @@ -1,160 +1,190 @@ -- Name: AAbcoi - Tier: Syndicate Agent -- Name: tomhendo - Tier: Syndicate Agent -- Name: M4shr00m - Tier: Syndicate Agent -- Name: Aleksey - Tier: Syndicate Agent -- Name: Skarlet - Tier: Revolutionary -- Name: March - Tier: Syndicate Agent -- Name: Александр Белошапка - Tier: Revolutionary -- Name: Dave +- Name: "Tomeno" Tier: Revolutionary -- Name: Akira Shiroyanagi [無情な男] +- Name: "Daniel Thompson" Tier: Revolutionary -- Name: Alix Shepard +- Name: "Farewell Fire" + Tier: Syndicate Agent +- Name: "MetalClone" Tier: Nuclear Operative -- Name: JhenMaster +- Name: "CPM311" Tier: Revolutionary -- Name: Lieutenant Colonel Orangejuice - Tier: Syndicate Agent -- Name: TheGoldElite +- Name: "Bobberunio" Tier: Revolutionary -- Name: Gnomo - Tier: Nuclear Operative -- Name: Never Solus +- Name: "vifs_vestige" Tier: Syndicate Agent -- Name: Ari. - Tier: Revolutionary -- Name: russell +- Name: "Anthony Fleck" Tier: Nuclear Operative -- Name: Kevin +- Name: "Nico Thate" + Tier: Revolutionary +- Name: "Zandario" Tier: Nuclear Operative -- Name: DubzyVEVO +- Name: "Darren Brady" Tier: Revolutionary -- Name: ikamuse johnson +- Name: "DramaBuns" Tier: Revolutionary -- Name: Saphire +- Name: "Ethan Keller" Tier: Revolutionary -- Name: Gavin Simmons +- Name: "Eric VW" Tier: Revolutionary -- Name: Tamora Droppa +- Name: "Joshington Awesomahee" Tier: Revolutionary -- Name: Gaxeer - Tier: Syndicate Agent -- Name: rosysyntax +- Name: "Altana" Tier: Revolutionary -- Name: Scott MacCombie +- Name: "clyf" Tier: Nuclear Operative -- Name: Jeremy Hernandez +- Name: "spinnermaster" Tier: Syndicate Agent -- Name: Dan - Tier: Syndicate Agent -- Name: Carbonhell +- Name: "Will M." + Tier: Revolutionary +- Name: "The Hateful Flesh" + Tier: Revolutionary +- Name: "Viridian" + Tier: Revolutionary +- Name: "Nicholas Hillblom" + Tier: Revolutionary +- Name: "Austin Nelson" Tier: Syndicate Agent -- Name: Rasmus Cedergren +- Name: "John Edward Hamilton Barchard" + Tier: Revolutionary +- Name: "Cormos Lemming" + Tier: Nuclear Operative +- Name: "Hamcha" Tier: Revolutionary -- Name: Pasemi +- Name: "Peter \"Azmond\" Newhouse" Tier: Revolutionary -- Name: Unknown Kiwi +- Name: "Zakanater 19" Tier: Revolutionary -- Name: Mitchell Marry +- Name: "Kris Piper" Tier: Revolutionary -- Name: Matouš Hrdlička +- Name: "Mikhail" + Tier: Revolutionary +- Name: "osborn" + Tier: Syndicate Agent +- Name: "Uinseann" + Tier: Revolutionary +- Name: "Brandon Campbell" Tier: Nuclear Operative -- Name: BokChoy +- Name: "KevKev" + Tier: Revolutionary +- Name: "Jacob Schramm" + Tier: Revolutionary +- Name: "Matouš Hrdlička" Tier: Nuclear Operative -- Name: KevKev +- Name: "Pasemi" + Tier: Revolutionary +- Name: "Late Fox" Tier: Revolutionary -- Name: Gothryd +- Name: "Dan" Tier: Syndicate Agent -- Name: Brandon Campbell +- Name: "Scott MacCombie" Tier: Nuclear Operative -- Name: Matthew C Miklaucic +- Name: "Gaxeer" + Tier: Syndicate Agent +- Name: "Tamora Droppa" Tier: Revolutionary -- Name: lapatison +- Name: "Gavin Simmons" + Tier: Syndicate Agent +- Name: "Saphire" Tier: Revolutionary -- Name: Uinseann +- Name: "DubzyVEVO" Tier: Revolutionary -- Name: osborn +- Name: "Never Solus" Tier: Syndicate Agent -- Name: Ramiro Agis +- Name: "Gnomo" + Tier: Nuclear Operative +- Name: "TheGoldElite" Tier: Revolutionary -- Name: Mikhail +- Name: "JhenMaster" Tier: Revolutionary -- Name: liltenhead +- Name: "Akira" Tier: Revolutionary -- Name: Kris Piper +- Name: "Dave" Tier: Revolutionary -- Name: Peter "Azmond" Newhouse +- Name: "Александр Белошапка" Tier: Revolutionary -- Name: Hamcha +- Name: "Gordod" + Tier: Syndicate Agent +- Name: "tomhendo" + Tier: Syndicate Agent +- Name: "Odin The Wanderer" Tier: Revolutionary -- Name: Oxyclean114 +- Name: "Wallace Megas" Tier: Revolutionary -- Name: Cormos Lemming - Tier: Nuclear Operative -- Name: John Edward Hamilton Barchard +- Name: "Vandell" Tier: Revolutionary -- Name: Wrexbe +- Name: "Enricoc3l" Tier: Revolutionary -- Name: Austin Nelson +- Name: "DadNotTheBelt" + Tier: Nuclear Operative +- Name: "David" + Tier: Revolutionary +- Name: "Watson Whittington" Tier: Syndicate Agent -- Name: AquaDraco +- Name: "Raw Toast" Tier: Revolutionary -- Name: Nicholas Hillblom +- Name: "Tim Foley" + Tier: Syndicate Agent +- Name: "Blight" + Tier: Syndicate Agent +- Name: "Katarn" Tier: Revolutionary -- Name: Florian +- Name: "eric156" Tier: Revolutionary -- Name: Viridian +- Name: "Glenn Olsen" Tier: Syndicate Agent -- Name: Daskata - Tier: Nuclear Operative -- Name: The Hateful Flesh +- Name: "Constellations" + Tier: Syndicate Agent +- Name: "Charles Baron" + Tier: Syndicate Agent +- Name: "Shaina Gibson" Tier: Revolutionary -- Name: Will M. +- Name: "Wolfie" Tier: Revolutionary -- Name: spinnermaster - Tier: Nuclear Operative -- Name: clyf +- Name: "Alexandre Courtin" + Tier: Revolutionary +- Name: "Geekyhobo2" + Tier: Revolutionary +- Name: "Nicholas" Tier: Nuclear Operative -- Name: Robin Rottstock +- Name: "GeneralMarty" Tier: Revolutionary -- Name: Altana +- Name: "HCG" Tier: Revolutionary -- Name: Durp +- Name: "ShaunTexas" + Tier: Syndicate Agent +- Name: "Fallcon" Tier: Revolutionary -- Name: Joshington Awesomahee +- Name: "Malachi Housewright" Tier: Revolutionary -- Name: Eric VW +- Name: "Petalmeat" + Tier: Syndicate Agent +- Name: "Jakub Kędziora" + Tier: Syndicate Agent +- Name: "Adam Smedstad" Tier: Revolutionary -- Name: Evan Armstrong +- Name: "oBerry" + Tier: Nuclear Operative +- Name: "DireBoar" Tier: Revolutionary -- Name: Mono +- Name: "Ignoramis" Tier: Revolutionary -- Name: Ethan Keller +- Name: "Repo" + Tier: Nuclear Operative +- Name: "612" Tier: Revolutionary -- Name: DramaBuns +- Name: "Higgtastic" Tier: Revolutionary -- Name: Darren Brady +- Name: "Sandvich enjoyer" Tier: Revolutionary -- Name: Zandario - Tier: Nuclear Operative -- Name: Anthony Fleck - Tier: Nuclear Operative -- Name: vifs_vestige +- Name: "Mihailo Trickovic" Tier: Syndicate Agent -- Name: Bobberunio +- Name: "Vice Emargo" Tier: Revolutionary -- Name: CPM311 +- Name: "awndrssk" Tier: Revolutionary -- Name: Farewell Fire - Tier: Syndicate Agent -- Name: Daniel Thompson +- Name: "François Desautels" + Tier: Revolutionary +- Name: "Christian Hicks" Tier: Revolutionary -- Name: Tomeno +- Name: "MasterFurret" Tier: Revolutionary From 388e424a17f8c964fb5696377c6bfc58e99998bc Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Thu, 12 Oct 2023 00:33:30 -0700 Subject: [PATCH 060/245] Add project to update Patrons.yml from a csv file containing Patreon webhooks, add missing Patrons (#20942) --- Content.PatreonParser/Attributes.cs | 15 +++ .../Content.PatreonParser.csproj | 14 ++ .../CurrentlyEntitledTiers.cs | 9 ++ Content.PatreonParser/Data.cs | 18 +++ Content.PatreonParser/Included.cs | 15 +++ Content.PatreonParser/Patron.cs | 3 + Content.PatreonParser/Program.cs | 125 ++++++++++++++++++ Content.PatreonParser/Relationships.cs | 9 ++ Content.PatreonParser/Root.cs | 12 ++ Content.PatreonParser/Row.cs | 19 +++ Content.PatreonParser/TierData.cs | 12 ++ Resources/Credits/Patrons.yml | 6 + SpaceStation14.sln | 10 ++ 13 files changed, 267 insertions(+) create mode 100644 Content.PatreonParser/Attributes.cs create mode 100644 Content.PatreonParser/Content.PatreonParser.csproj create mode 100644 Content.PatreonParser/CurrentlyEntitledTiers.cs create mode 100644 Content.PatreonParser/Data.cs create mode 100644 Content.PatreonParser/Included.cs create mode 100644 Content.PatreonParser/Patron.cs create mode 100644 Content.PatreonParser/Program.cs create mode 100644 Content.PatreonParser/Relationships.cs create mode 100644 Content.PatreonParser/Root.cs create mode 100644 Content.PatreonParser/Row.cs create mode 100644 Content.PatreonParser/TierData.cs diff --git a/Content.PatreonParser/Attributes.cs b/Content.PatreonParser/Attributes.cs new file mode 100644 index 00000000000000..d3ebeb5f7c8fea --- /dev/null +++ b/Content.PatreonParser/Attributes.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Content.PatreonParser; + +public sealed class Attributes +{ + [JsonPropertyName("full_name")] + public string FullName = default!; + + [JsonPropertyName("pledge_relationship_start")] + public DateTime? PledgeRelationshipStart; + + [JsonPropertyName("title")] + public string Title = default!; +} diff --git a/Content.PatreonParser/Content.PatreonParser.csproj b/Content.PatreonParser/Content.PatreonParser.csproj new file mode 100644 index 00000000000000..53b06b265b623c --- /dev/null +++ b/Content.PatreonParser/Content.PatreonParser.csproj @@ -0,0 +1,14 @@ + + + + Exe + net7.0 + enable + enable + + + + + + + diff --git a/Content.PatreonParser/CurrentlyEntitledTiers.cs b/Content.PatreonParser/CurrentlyEntitledTiers.cs new file mode 100644 index 00000000000000..fd1747efda9e94 --- /dev/null +++ b/Content.PatreonParser/CurrentlyEntitledTiers.cs @@ -0,0 +1,9 @@ +using System.Text.Json.Serialization; + +namespace Content.PatreonParser; + +public sealed class CurrentlyEntitledTiers +{ + [JsonPropertyName("data")] + public List Data = default!; +} diff --git a/Content.PatreonParser/Data.cs b/Content.PatreonParser/Data.cs new file mode 100644 index 00000000000000..cdc7d79bff5850 --- /dev/null +++ b/Content.PatreonParser/Data.cs @@ -0,0 +1,18 @@ +using System.Text.Json.Serialization; + +namespace Content.PatreonParser; + +public sealed class Data +{ + [JsonPropertyName("id")] + public string Id = default!; + + [JsonPropertyName("type")] + public string Type = default!; + + [JsonPropertyName("attributes")] + public Attributes Attributes = default!; + + [JsonPropertyName("relationships")] + public Relationships Relationships = default!; +} diff --git a/Content.PatreonParser/Included.cs b/Content.PatreonParser/Included.cs new file mode 100644 index 00000000000000..ec3363579b9c8a --- /dev/null +++ b/Content.PatreonParser/Included.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Content.PatreonParser; + +public sealed class Included +{ + [JsonPropertyName("id")] + public int Id; + + [JsonPropertyName("type")] + public string Type = default!; + + [JsonPropertyName("attributes")] + public Attributes Attributes = default!; +} diff --git a/Content.PatreonParser/Patron.cs b/Content.PatreonParser/Patron.cs new file mode 100644 index 00000000000000..d9943a6a265d32 --- /dev/null +++ b/Content.PatreonParser/Patron.cs @@ -0,0 +1,3 @@ +namespace Content.PatreonParser; + +public readonly record struct Patron(string FullName, string TierName, DateTime Start); diff --git a/Content.PatreonParser/Program.cs b/Content.PatreonParser/Program.cs new file mode 100644 index 00000000000000..60a320006fe7f1 --- /dev/null +++ b/Content.PatreonParser/Program.cs @@ -0,0 +1,125 @@ +using System.Globalization; +using System.Text.Json; +using System.Text.Json.Serialization; +using Content.PatreonParser; +using CsvHelper; +using CsvHelper.Configuration; +using static System.Environment; + +var repository = new DirectoryInfo(Directory.GetCurrentDirectory()).Parent!.Parent!.Parent!.Parent!; +var patronsPath = Path.Combine(repository.FullName, "Resources/Credits/Patrons.yml"); +if (!File.Exists(patronsPath)) +{ + Console.WriteLine($"File {patronsPath} not found."); + return; +} + +Console.WriteLine($"Updating {patronsPath}"); +Console.WriteLine("Is this correct? [Y/N]"); +var response = Console.ReadLine()?.ToUpper(); +if (response != "Y") +{ + Console.WriteLine("Exiting"); + return; +} + +var delimiter = ","; +var hasHeaderRecord = false; +var mode = CsvMode.RFC4180; +var escape = '\''; +Console.WriteLine($""" +Delimiter: {delimiter} +HasHeaderRecord: {hasHeaderRecord} +Mode: {mode} +Escape Character: {escape} +"""); + +Console.WriteLine("Enter the full path to the .csv file containing the Patreon webhook data:"); +var filePath = Console.ReadLine(); +if (filePath == null) +{ + Console.Write("No path given."); + return; +} + +var file = File.OpenRead(filePath); +var csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture) +{ + Delimiter = delimiter, + HasHeaderRecord = hasHeaderRecord, + Mode = mode, + Escape = escape, +}; + +using var reader = new CsvReader(new StreamReader(file), csvConfig); + +// This does not handle tier name changes, but we haven't had any yet +var patrons = new Dictionary(); +var jsonOptions = new JsonSerializerOptions +{ + IncludeFields = true, + NumberHandling = JsonNumberHandling.AllowReadingFromString +}; + +// This assumes that the rows are already sorted by id +foreach (var record in reader.GetRecords()) +{ + if (record.Trigger == "members:create") + continue; + + var content = JsonSerializer.Deserialize(record.ContentJson, jsonOptions)!; + + var id = Guid.Parse(content.Data.Id); + patrons.Remove(id); + + var tiers = content.Data.Relationships.CurrentlyEntitledTiers.Data; + if (tiers.Count == 0) + continue; + else if (tiers.Count > 1) + throw new ArgumentException("Found more than one tier"); + + var tier = tiers[0]; + var tierName = content.Included.SingleOrDefault(i => i.Id == tier.Id && i.Type == tier.Type)?.Attributes.Title; + if (tierName == null) + continue; + + if (record.Trigger == "members:delete") + continue; + + var fullName = content.Data.Attributes.FullName.Trim(); + var pledgeStart = content.Data.Attributes.PledgeRelationshipStart; + + switch (record.Trigger) + { + case "members:create": + break; + case "members:delete": + break; + case "members:update": + patrons.Add(id, new Patron(fullName, tierName, pledgeStart!.Value)); + break; + case "members:pledge:create": + if (pledgeStart == null) + continue; + + patrons.Add(id, new Patron(fullName, tierName, pledgeStart.Value)); + break; + case "members:pledge:delete": + // Deleted pledge but still not expired, expired is handled earlier + patrons.Add(id, new Patron(fullName, tierName, pledgeStart!.Value)); + break; + case "members:pledge:update": + patrons.Add(id, new Patron(fullName, tierName, pledgeStart!.Value)); + break; + } +} + +var patronList = patrons.Values.ToList(); +patronList.Sort((a, b) => a.Start.CompareTo(b.Start)); +var yaml = patronList.Select(p => $""" +- Name: "{p.FullName.Replace("\"", "\\\"")}" + Tier: {p.TierName} +"""); +var output = string.Join(NewLine, yaml) + NewLine; +File.WriteAllText(patronsPath, output); +Console.WriteLine($"Updated {patronsPath} with {patronList.Count} patrons."); diff --git a/Content.PatreonParser/Relationships.cs b/Content.PatreonParser/Relationships.cs new file mode 100644 index 00000000000000..f919f812f620bc --- /dev/null +++ b/Content.PatreonParser/Relationships.cs @@ -0,0 +1,9 @@ +using System.Text.Json.Serialization; + +namespace Content.PatreonParser; + +public sealed class Relationships +{ + [JsonPropertyName("currently_entitled_tiers")] + public CurrentlyEntitledTiers CurrentlyEntitledTiers = default!; +} diff --git a/Content.PatreonParser/Root.cs b/Content.PatreonParser/Root.cs new file mode 100644 index 00000000000000..2a772a12143469 --- /dev/null +++ b/Content.PatreonParser/Root.cs @@ -0,0 +1,12 @@ +using System.Text.Json.Serialization; + +namespace Content.PatreonParser; + +public sealed class Root +{ + [JsonPropertyName("data")] + public Data Data = default!; + + [JsonPropertyName("included")] + public List Included = default!; +} diff --git a/Content.PatreonParser/Row.cs b/Content.PatreonParser/Row.cs new file mode 100644 index 00000000000000..f4d25046165a1a --- /dev/null +++ b/Content.PatreonParser/Row.cs @@ -0,0 +1,19 @@ +using CsvHelper.Configuration.Attributes; + +namespace Content.PatreonParser; + +// These need to be properties or CSVHelper will not find them +public sealed class Row +{ + [Name("Id"), Index(0)] + public int Id { get; set; } + + [Name("Trigger"), Index(1)] + public string Trigger { get; set; } = default!; + + [Name("Time"), Index(2)] + public DateTime Time { get; set; } + + [Name("Content"), Index(3)] + public string ContentJson { get; set; } = default!; +} diff --git a/Content.PatreonParser/TierData.cs b/Content.PatreonParser/TierData.cs new file mode 100644 index 00000000000000..a840b21d35996f --- /dev/null +++ b/Content.PatreonParser/TierData.cs @@ -0,0 +1,12 @@ +using System.Text.Json.Serialization; + +namespace Content.PatreonParser; + +public sealed class TierData +{ + [JsonPropertyName("id")] + public int Id; + + [JsonPropertyName("type")] + public string Type = default!; +} diff --git a/Resources/Credits/Patrons.yml b/Resources/Credits/Patrons.yml index acb9eb229a5501..427a8f62f0933b 100644 --- a/Resources/Credits/Patrons.yml +++ b/Resources/Credits/Patrons.yml @@ -58,6 +58,8 @@ Tier: Revolutionary - Name: "Mikhail" Tier: Revolutionary +- Name: "Ramiro Agis" + Tier: Revolutionary - Name: "osborn" Tier: Syndicate Agent - Name: "Uinseann" @@ -108,6 +110,8 @@ Tier: Syndicate Agent - Name: "Odin The Wanderer" Tier: Revolutionary +- Name: "tokie" + Tier: Nuclear Operative - Name: "Wallace Megas" Tier: Revolutionary - Name: "Vandell" @@ -130,6 +134,8 @@ Tier: Revolutionary - Name: "eric156" Tier: Revolutionary +- Name: "SHANE ALAN ZINDA" + Tier: Nuclear Operative - Name: "Glenn Olsen" Tier: Syndicate Agent - Name: "Constellations" diff --git a/SpaceStation14.sln b/SpaceStation14.sln index 2dc4c95508dd3a..a94daa316dd47f 100644 --- a/SpaceStation14.sln +++ b/SpaceStation14.sln @@ -127,6 +127,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Shared.CompNetworkGe EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Serialization.Generator", "RobustToolbox\Robust.Serialization.Generator\Robust.Serialization.Generator.csproj", "{6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Content.PatreonParser", "Content.PatreonParser\Content.PatreonParser.csproj", "{D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -430,6 +432,14 @@ Global {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Tools|Any CPU.ActiveCfg = Debug|Any CPU {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Tools|Any CPU.Build.0 = Debug|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.Build.0 = Release|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Tools|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 99f777ca9d98494f6da4f219c50e4e16473740e6 Mon Sep 17 00:00:00 2001 From: Kevin Zheng Date: Wed, 11 Oct 2023 23:35:31 -0800 Subject: [PATCH 061/245] Increase carbon dioxide poisoning damage (#20939) * Increase CO2 poisoning damage * Fix --- Resources/Prototypes/Reagents/gases.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Reagents/gases.yml b/Resources/Prototypes/Reagents/gases.yml index 9fa06f632c6415..367ffa0894bc51 100644 --- a/Resources/Prototypes/Reagents/gases.yml +++ b/Resources/Prototypes/Reagents/gases.yml @@ -135,7 +135,13 @@ damage: types: Poison: - 0.2 + 0.8 + - !type:Oxygenate # carbon dioxide displaces oxygen from the bloodstream, causing asphyxiation + conditions: + - !type:OrganType + type: Plant + shouldHave: false + factor: -4 # Cant be added until I add metabolism effects on reagent removal #- !type:AdjustAlert # alertType: CarbonDioxide From 3323b617dd671bc14289d40c0c4f308d623bf397 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 12 Oct 2023 03:36:37 -0400 Subject: [PATCH 062/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a21254b1320d3f..820b9a0a13877f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: Ilya246 - changes: - - {message: The air alarm UI now allows copying settings of one device to all similar - devices., type: Add} - id: 4496 - time: '2023-08-09T18:20:20.0000000+00:00' - author: Nairodian changes: - {message: 'Changed Dark & Bushy, Death''s-Head, Firewatch, Moffra, Plasmafire, @@ -2958,3 +2952,9 @@ Entries: - {message: The nukie ship now has syndicate access airlocks, type: Add} id: 4995 time: '2023-10-11T16:47:25.0000000+00:00' +- author: notafet + changes: + - {message: Carbon dioxide poisoning is now more deadly. Victims of carbon dioxide + poisoning now gasp visibly., type: Tweak} + id: 4996 + time: '2023-10-12T07:35:31.0000000+00:00' From 535b013f63e3628ad690f446462afe32160bce54 Mon Sep 17 00:00:00 2001 From: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Date: Thu, 12 Oct 2023 11:06:03 -0500 Subject: [PATCH 063/245] SMES and substation require power cells as machine parts (#20344) * Initial commit * Balancing and tweaks --- .../Components/UpgradeBatteryComponent.cs | 2 +- .../UpgradePowerSupplyRampingComponent.cs | 38 ++++++++++++++++ .../EntitySystems/UpgradeBatterySystem.cs | 6 ++- .../Power/EntitySystems/UpgradePowerSystem.cs | 43 ++++++++++++++++++- Resources/Locale/en-US/machine/machine.ftl | 1 + .../Circuitboards/Machine/production.yml | 8 +++- .../Entities/Objects/Power/powercells.yml | 16 ++++++- .../Entities/Structures/Power/smes.yml | 3 ++ .../Entities/Structures/Power/substation.yml | 3 ++ .../Prototypes/MachineParts/machine_parts.yml | 6 +++ 10 files changed, 117 insertions(+), 9 deletions(-) create mode 100644 Content.Server/Power/Components/UpgradePowerSupplyRampingComponent.cs diff --git a/Content.Server/Power/Components/UpgradeBatteryComponent.cs b/Content.Server/Power/Components/UpgradeBatteryComponent.cs index e1fc4d2bb82265..ff91cfa7559c91 100644 --- a/Content.Server/Power/Components/UpgradeBatteryComponent.cs +++ b/Content.Server/Power/Components/UpgradeBatteryComponent.cs @@ -11,7 +11,7 @@ public sealed partial class UpgradeBatteryComponent : Component /// The machine part that affects the power capacity. /// [DataField("machinePartPowerCapacity", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string MachinePartPowerCapacity = "Capacitor"; + public string MachinePartPowerCapacity = "PowerCell"; /// /// The machine part rating is raised to this power when calculating power gain diff --git a/Content.Server/Power/Components/UpgradePowerSupplyRampingComponent.cs b/Content.Server/Power/Components/UpgradePowerSupplyRampingComponent.cs new file mode 100644 index 00000000000000..7bd29f2de713be --- /dev/null +++ b/Content.Server/Power/Components/UpgradePowerSupplyRampingComponent.cs @@ -0,0 +1,38 @@ +using Content.Server.Construction.Components; +using Content.Shared.Construction.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Power.Components +{ + + [RegisterComponent] + public sealed partial class UpgradePowerSupplyRampingComponent : Component + { + [ViewVariables(VVAccess.ReadWrite)] + public float BaseRampRate; + + /// + /// The machine part that affects the power supply ramping + /// + [DataField("machinePartPowerCapacity", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string MachinePartRampRate = "Capacitor"; + + /// + /// The multiplier used for scaling the power supply ramping + /// + [DataField("supplyRampingMultiplier")] + public float SupplyRampingMultiplier = 1f; + + /// + /// What type of scaling is being used? + /// + [DataField("scaling", required: true), ViewVariables(VVAccess.ReadWrite)] + public MachineUpgradeScalingType Scaling; + + /// + /// The current value that the power supply is being scaled by + /// + [DataField("actualScalar"), ViewVariables(VVAccess.ReadWrite)] + public float ActualScalar = 1f; + } +} diff --git a/Content.Server/Power/EntitySystems/UpgradeBatterySystem.cs b/Content.Server/Power/EntitySystems/UpgradeBatterySystem.cs index 6571e1cf0970a4..734cf9d89ced62 100644 --- a/Content.Server/Power/EntitySystems/UpgradeBatterySystem.cs +++ b/Content.Server/Power/EntitySystems/UpgradeBatterySystem.cs @@ -7,6 +7,8 @@ namespace Content.Server.Power.EntitySystems [UsedImplicitly] public sealed class UpgradeBatterySystem : EntitySystem { + [Dependency] private readonly BatterySystem _batterySystem = default!; + public override void Initialize() { base.Initialize(); @@ -17,11 +19,11 @@ public override void Initialize() public void OnRefreshParts(EntityUid uid, UpgradeBatteryComponent component, RefreshPartsEvent args) { - var capacitorRating = args.PartRatings[component.MachinePartPowerCapacity]; + var powerCellRating = args.PartRatings[component.MachinePartPowerCapacity]; if (TryComp(uid, out var batteryComp)) { - batteryComp.MaxCharge = MathF.Pow(component.MaxChargeMultiplier, capacitorRating - 1) * component.BaseMaxCharge; + _batterySystem.SetMaxCharge(uid, MathF.Pow(component.MaxChargeMultiplier, powerCellRating - 1) * component.BaseMaxCharge, batteryComp); } } diff --git a/Content.Server/Power/EntitySystems/UpgradePowerSystem.cs b/Content.Server/Power/EntitySystems/UpgradePowerSystem.cs index 0d43f60a2bfa31..9cf28c386a6b66 100644 --- a/Content.Server/Power/EntitySystems/UpgradePowerSystem.cs +++ b/Content.Server/Power/EntitySystems/UpgradePowerSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Construction; +using Content.Server.Construction; using Content.Server.Construction.Components; using Content.Server.Power.Components; @@ -20,6 +20,10 @@ public override void Initialize() SubscribeLocalEvent(OnSupplierMapInit); SubscribeLocalEvent(OnSupplierRefreshParts); SubscribeLocalEvent(OnSupplierUpgradeExamine); + + SubscribeLocalEvent(OnSupplyRampingMapInit); + SubscribeLocalEvent(OnSupplyRampingRefreshParts); + SubscribeLocalEvent(OnSupplyRampingUpgradeExamine); } private void OnMapInit(EntityUid uid, UpgradePowerDrawComponent component, MapInitEvent args) @@ -76,7 +80,7 @@ private void OnSupplierRefreshParts(EntityUid uid, UpgradePowerSupplierComponent switch (component.Scaling) { case MachineUpgradeScalingType.Linear: - supply += component.BaseSupplyRate * (rating - 1); + supply += component.PowerSupplyMultiplier * component.BaseSupplyRate * (rating - 1); break; case MachineUpgradeScalingType.Exponential: supply *= MathF.Pow(component.PowerSupplyMultiplier, rating - 1); @@ -97,4 +101,39 @@ private void OnSupplierUpgradeExamine(EntityUid uid, UpgradePowerSupplierCompone { args.AddPercentageUpgrade("upgrade-power-supply", component.ActualScalar); } + + private void OnSupplyRampingMapInit(EntityUid uid, UpgradePowerSupplyRampingComponent component, MapInitEvent args) + { + if (TryComp(uid, out var battery)) + component.BaseRampRate = battery.SupplyRampRate; + } + + private void OnSupplyRampingRefreshParts(EntityUid uid, UpgradePowerSupplyRampingComponent component, RefreshPartsEvent args) + { + var rampRate = component.BaseRampRate; + var rating = args.PartRatings[component.MachinePartRampRate]; + switch (component.Scaling) + { + case MachineUpgradeScalingType.Linear: + rampRate += component.SupplyRampingMultiplier * component.BaseRampRate * (rating - 1); + break; + case MachineUpgradeScalingType.Exponential: + rampRate *= MathF.Pow(component.SupplyRampingMultiplier, rating - 1); + break; + default: + Log.Error($"invalid power supply ramping type for {ToPrettyString(uid)}."); + rampRate = component.BaseRampRate; + break; + } + + component.ActualScalar = rampRate / component.BaseRampRate; + + if (TryComp(uid, out var battery)) + battery.SupplyRampRate = rampRate; + } + + private void OnSupplyRampingUpgradeExamine(EntityUid uid, UpgradePowerSupplyRampingComponent component, UpgradeExamineEvent args) + { + args.AddPercentageUpgrade("upgrade-power-supply-ramping", component.ActualScalar); + } } diff --git a/Resources/Locale/en-US/machine/machine.ftl b/Resources/Locale/en-US/machine/machine.ftl index 1d086e4fdb5cbc..20a7eb440ff935 100644 --- a/Resources/Locale/en-US/machine/machine.ftl +++ b/Resources/Locale/en-US/machine/machine.ftl @@ -15,6 +15,7 @@ machine-part-name-matter-bin = Matter Bin upgrade-power-draw = power draw upgrade-max-charge = max charge upgrade-power-supply = power supply +upgrade-power-supply-ramping = power ramp rate two-way-lever-left = push left two-way-lever-right = push right diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 9c60e725350452..a25e5b7069d5a0 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -476,7 +476,10 @@ - type: MachineBoard prototype: SMESBasicEmpty requirements: - Capacitor: 5 + Capacitor: 1 + PowerCell: 4 + materialRequirements: + CableHV: 10 - type: entity id: CellRechargerCircuitboard @@ -553,7 +556,8 @@ - type: MachineBoard prototype: SubstationBasicEmpty requirements: - Capacitor: 3 + Capacitor: 1 + PowerCell: 1 materialRequirements: CableMV: 5 CableHV: 5 diff --git a/Resources/Prototypes/Entities/Objects/Power/powercells.yml b/Resources/Prototypes/Entities/Objects/Power/powercells.yml index 4b1c9104285628..82c1bb37e96a65 100644 --- a/Resources/Prototypes/Entities/Objects/Power/powercells.yml +++ b/Resources/Prototypes/Entities/Objects/Power/powercells.yml @@ -62,6 +62,9 @@ - type: Battery maxCharge: 360 startingCharge: 360 + - type: MachinePart + part: PowerCell + rating: 1 - type: Tag tags: - PowerCellSmall @@ -100,6 +103,9 @@ - type: Battery maxCharge: 720 startingCharge: 720 + - type: MachinePart + part: PowerCell + rating: 2 - type: entity id: PowerCellMediumPrinted @@ -135,7 +141,10 @@ - type: Battery maxCharge: 1080 startingCharge: 1080 - + - type: MachinePart + part: PowerCell + rating: 3 + - type: entity id: PowerCellHighPrinted suffix: Empty @@ -170,7 +179,10 @@ - type: Battery maxCharge: 1800 startingCharge: 1800 - + - type: MachinePart + part: PowerCell + rating: 4 + - type: entity id: PowerCellHyperPrinted suffix: Empty diff --git a/Resources/Prototypes/Entities/Structures/Power/smes.yml b/Resources/Prototypes/Entities/Structures/Power/smes.yml index 68d72f64f89d29..92451918c7bf27 100644 --- a/Resources/Prototypes/Entities/Structures/Power/smes.yml +++ b/Resources/Prototypes/Entities/Structures/Power/smes.yml @@ -32,6 +32,9 @@ - type: UpgradeBattery maxChargeMultiplier: 2 baseMaxCharge: 8000000 + - type: UpgradePowerSupplyRamping + scaling: Linear + supplyRampingMultiplier: 1 - type: Appearance - type: Battery startingCharge: 0 diff --git a/Resources/Prototypes/Entities/Structures/Power/substation.yml b/Resources/Prototypes/Entities/Structures/Power/substation.yml index 6e3ef2f7f1a175..bd3dcc4b8cac6f 100644 --- a/Resources/Prototypes/Entities/Structures/Power/substation.yml +++ b/Resources/Prototypes/Entities/Structures/Power/substation.yml @@ -20,6 +20,9 @@ - type: UpgradeBattery maxChargeMultiplier: 2 baseMaxCharge: 2500000 + - type: UpgradePowerSupplyRamping + scaling: Linear + supplyRampingMultiplier: 1 - type: Battery startingCharge: 0 - type: ExaminableBattery diff --git a/Resources/Prototypes/MachineParts/machine_parts.yml b/Resources/Prototypes/MachineParts/machine_parts.yml index 444bc37356c27e..317e4b80866f80 100644 --- a/Resources/Prototypes/MachineParts/machine_parts.yml +++ b/Resources/Prototypes/MachineParts/machine_parts.yml @@ -12,3 +12,9 @@ id: MatterBin name: machine-part-name-matter-bin stockPartPrototype: MatterBinStockPart + +- type: machinePart + id: PowerCell + name: machine-part-name-power-cell + stockPartPrototype: PowerCellSmall + From 1b46acac6428c920d70942a1650a375cbfc4ab7d Mon Sep 17 00:00:00 2001 From: Ubaser <134914314+UbaserB@users.noreply.github.com> Date: Fri, 13 Oct 2023 09:20:23 +1100 Subject: [PATCH 064/245] Paramedic Suit [RESPRITE] (#20619) * add sprites * fix copyright * update sprites --- .../paramedhelm.rsi/equipped-HELMET.png | Bin 1097 -> 2321 bytes .../Head/Helmets/paramedhelm.rsi/icon.png | Bin 716 -> 1724 bytes .../Helmets/paramedhelm.rsi/inhand-left.png | Bin 1332 -> 2082 bytes .../Helmets/paramedhelm.rsi/inhand-right.png | Bin 1314 -> 2097 bytes .../Head/Helmets/paramedhelm.rsi/meta.json | 2 +- .../paramed.rsi/equipped-OUTERCLOTHING.png | Bin 1884 -> 3568 bytes .../Hardsuits/paramed.rsi/icon.png | Bin 808 -> 1888 bytes .../Hardsuits/paramed.rsi/inhand-left.png | Bin 1037 -> 1932 bytes .../Hardsuits/paramed.rsi/inhand-right.png | Bin 1037 -> 1907 bytes .../Hardsuits/paramed.rsi/meta.json | 2 +- 10 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/equipped-HELMET.png index d09e0347f5010eb891e24d1a5a7fa93f344e729c..e6810d74524c335fd9232b1a3cdca9184d481fca 100644 GIT binary patch literal 2321 zcmZ`*3pkY78y}K#8yhx4i)m;dnfb;TBh$=8h}m_^h>?{T<2q)>%!i?p%ijuVB6c@n z#iA6gCAw(09{)-HwYgvCuL%{oXWh57-wZ4D)OntB-gDmb{@%;)yx;SDsjklUDvH{Q zFc?gQ;$Z6rNh`_RDi5vYArVg@A;WXCKLD$IqWcOuz!@}3ppz5K7}{@zrew5H&qJ#M z$H9vS8RSW(%$96wKMb}hFvOh((wrO#bapt}FM#dOK=Z>nQWTL-fVSZb&`+Nq&Sdcj zd=f%xL4fuWHGt5Unt)*>1kK4+--gX)=;P5CGzLLd)YsQ1asvVhZng*4;LwSL2nIn8 z0RW<-qtVf3Xf`(pFtxO_1Ta_ti$y^eC|(Q;^y8ygyj`nK{`F(a;L*7u9595<(wF%4 z^JhnbBm_bdXnm~a89-l;!-?cFrBMRt0E5X0XRtsXV2U;cK7|8A0^euI;;qpE5d%nW zAQ42iRRHZ%fQ`zJ0j|MpkPS5xH-t`MfebE(3pJKB z9(FC<=Pf?=^*;7tRtQM`*TF~X4X6zdL$Kz8(QIy*yYvy(82s%0nvYdBH+1G|+e?{; z`kt&v1lGSHvZ94qAQ=YRY)rAWcIV4XF{p3=* z*ei#kqp1EzeeYeb!bVOqpFw63h5G_yhn`#$S?bY&n?kNs?;mnBo7r9gXDV#8GI7k2fu#CPuN z<^)xEoSA#my4i}tXsxMg2-_CHnmy1bTD(fHr$h52hL!=nhyYx}C~-@J@Uw-~q0!CiML${iFAjxe$vkgi{2CcGU9s-nTp$fjzfzJh~nR{ZCM zKsh08CE3aAnP~rH(iC%R^LLAK@T)trOJiNlWv`#GG|AePT>_syRoHK09#f?LaqIgdOMO_%(k*AtCc!f zTV=zxW21!y6*8ERy_zq?zeB_q6NC*cOmMOnih`{aTxP)yYx|R#9@^M`QQ`08S@7 zyD=7PK8yG=Dzul!ik5_}`q>n!pSQ8c;}@ox;MXe=UcdNG&iMD|KIMhCT$Ghn7v*)x z=v!8jCC@pm^?yh9m}6H3wKErSII5)eOY$`|%>=RfUfieaSYJ)#9PZO~#Oix7&4lEw zN$5NKS!nk2;_4@mTC)#p^$!-B{luL8()xM70+y9TOC_mqZ^K$!$r-P2Z)0&biDf0F z0+7--;~XyihJy!Rf?uvMo;vx&AeFT3WRP0~tptlVM}JwY?ZCA%ZJ&-*dZ}Of0cty> z+(~0TV4Ncuj~+0-_8O2i+mF`@aw+w$Ivl+MVDH`<0)ZCB#wKWOJ;bF;liaxz2f(tv zE!rZOt>4zRhtbi8q*5!CmR1(5pZ6L7;PuAo>8T+cUM3hE;n=ZGg255O;bnSyYVdmF zGVY|w=zo`&hp4Eiu+Nv5hYHr0o~@RacA@JohKHYs9Y0<}G#X)Y@@CQZ0U7#$rCdc;1znt>N&@eYZtjR~i-K%-~lv)F{jT(IBH@i>Z;l!MbtAhA_ zbjtp}=TP&uvE_?Ybr@^&3{1>Emp(%2O08kU2?ScCT*?p#v|t$NqU=Pd!q(p|#=j%) zCt!YlSabZgODyj1z_mO^q_)ErbFEBc7=LlPx{eYIjz|R{Lohf(SJzQs1VYn9D!l;d zhK-GwN^aj^-Wq=Tiy)*M6w>_xA>3|*a5%)RTXmakioF-ux(7IL;JzJ;+ifs77?*02 zC@9$O?zcrW8nNs0Q&Z0XkV<{GBO9U8(l-RazI}h%G3dIBp`p)Je}F=vP$(1%g&{(r iP$(1%g+ifFY{y^bz{u-iWsF4t0000XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRlCPZql7HiJ{YF!7JC(`n{Yh3atgTyN>>2H$T5$gtOm1Eul@v zVjC7|eE7=8v@Yx8Cwrwd#x|!E!JRRDyVfnvkhl@^S7EJksKWZC4?dSi^=#j^?ZUs* ziRXPYl|^KYNhoj`Gn zRj*FEMe(ZkXja?9yA_1KT-af0c4Ys-1c5I%YMI>UikEHs8MQXtx9r=2YkkE&jZM|% zc?p%3l7IjH^-vL#aZ*XzDDmspuMfY@>Zr%8FP^wtkx5usxW}*FM(+5nTWrUUty7lj z{nRw2;}0`4^Ne|Q?f35KowheM4K=TiWe}B+*>ht3lNT>I-p~8CZ~5{qu3O$2tyfv; zn64Ynsh0Ct5lk?YW(jziaV96rB-FkrU>A`Fmuc$^C;x30k9>;+R{;)Y@H^-bj} zs+Nw-?N>Zbo=ysZ2mvth0q+55x(Umyz_)&r&kqmR){lIP%Z0Atkh=$cy)K?30?`tH zwR~c}h{W9_qJNi$5I_u(=@}4HhvfJ!{Yi|+yuY8t#C(+Ij@zvsNmBq>zF@1~lL&4< zhIiox7ayIu2(4VAs}k(0wI^OVdk*Pmk9e$%J7Br8T(mQp2fu`9*#XHaaUW1?;)Yg& zMKn6&_&N0HGeA5>D<7=qHnXMxgwO({$USR26E_VFRewU779E&j{tVNkd6Zb zV<-6BYRXj?sGC*BNXUj0CJJv7@C%3w0W{jq>lNPGQG7zx{0P%5?^$10W%vt;-zg~u z(BJWs`>$a&ZWjh=mp@J1mO&x{D2W70S zy~Ea42fqc(SV21Y?|A$a{orI#n(i#g(TAUwg4K9386!_fBzA60lEPH a4Zv4G$t4JU$3tNN0000G?W zUP)qwZeFo6#1NP{E~&-IMVSR9nfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$ z>!;?V=BDPA6zd!68R}!xSCW~AaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`F zXfoK|;*u17BnA3L1_l&2TID3>rQ0f1=%%EmC6?xtDA{F{<|gLZ=tGpCYK4fRnrNes#c~^vm#rd$Qj7C* zN?N>Ymoihv0VY@ZR-I@~JI z%|h56nwME(2QvUo7)cjW#8^2Nm6YcfWru(x0UClh<)LOkLK7)vLXtf=|?L zo`>wX%#G9R7#LWrJzX3_Dj46+^39NT7difaQ<7(&N_cPY?Pl5SeVIwgleV!7GbtG^ z)m@tTVx>e>mF|?fxmjN4Tdmq-iacMkzdbwMiDOEgL*WVyT~3vis=EsdE^!=HEK_}b zdQ;dXugjH--$ZS@#v7-v=ymTvM%w*7Gb`V3H{N{gGlQQ`1E&F_+5wgs48jRaD4c#V z#_7WEp6T~=KX@_4^4jV2I^kTs&w;)lA6q}{ZTdgc;?GUXhwpf1NnMSRo9OR9#iC#*J{i}b3@8*zPNnl>D}|Em-Y1Ae`8}hY0pK@&4-trYE19%zO(banP=nQ_Bhec z^?w)4srx@gdEaWwTeH$`H7?lweZzuxM>pM@;+eN4_^y`i&yt9Wy>S_{+G_0b)2hDx ztXWXDy3Tr{B~wD?&v>5NFTEdr{n0pbFGOXx{?Tf=@glt_Q&M(cnaI+4 zp_fz^yjv#_v~o(;zcPV}>V^BRa561@w@xo5Kkne!nB`SvkB$p6xUOxQ_tg4C_-YTg zbIOzB9LxRtGvkXgIe+Dd?0#ZY_vTz~@Vy8{%e_yJJ=s+~q3_IG_mUSGwWUj*1!RWY zO1wK!_d?|#Ulk$F6eGzOLQQhB4<_ifiOZc|J!y`*Y-@hHlAFn!- zws}WUsp!ewR$*;YxqF+BU%6MQ|L~ynLXnsv?cTp7CtW`sZH>Pwv-tcRkX%p z*6+O7Ty0>w_1|~5$%}XoPCIr(!rSWS9EIcG-@ZQn^>v{L*Xj?ynV)T5HdUZEuBgP% zy3Fib;S(MMww|MU+RtAYXp3;IxZ3hlSA8z~*~-ItdNVOnAWCxdc@U`h!QpTJzqkwW zKb02c^}hIJYxc8qW!@dFnN7JNGCQSiAFJ6G%KN;RvFiJ`B;R{Z*Dog~iZ?A5S8glx zn||ESzx&vN?kKh8bJoB3q_i!{*+61X`iG-oW?Rp2Wt1d@-ZKs2Vqsd*vv0+#r}OuR zKP{_|Vq(}^csR4DAoX2&MaoRSSjOO8bzjDdot}ps?Wr^SA?_|tY7c{)6BY> z_hyjC)t9xx3|1_fU2hit;|ln}>$u>+YUT6mkIMx4FCWD delta 1314 zcmV+-1>O3h5VQ)ABYy#eX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmKpe$iQ>7vm1uKX; zWT;LSL`5963Pq?8YK2xEOfLNpnlvOSE{=k0!NHHks)LKOt`4q(Aou~|=H{g6A|?JW zDYS_3;J6>}?mh0_0Ya_BG^=e4&~)2OCE{WxyCQ~O5k?O}=zqhY%q(M8l9KQpU-t;` z^)AM<{LlS4y40M-fPhFm!wl0VUMHT~v<=St#1U4MRpN8vQIjr6{K$31<2TL)mj#{~ zG1I9z;s~)=Xkn#=S<%#pCyAq~rc=I<@mS@&#aSy=SmU1jh2fmOyu@{yLr7o&i;y5f zK?NHq!A6W$oqrSyDcXRA0s5Z|*_2%=NK?q? zf%h}|rYz8V3v{k}y*2i6`T(Supc%ym=$4`2~`%`A1cKu>9sCFTG8sVOKi?dZ$Gp-t1&aZ zUPol_2Y(z1_qo^SKA+3o=OCXC2qA=W^aK^4yJ_zghqua;^ z`_Xl+dOkG3YUn*hH#|SHd-v;b?JVP^!;cRr<*nnK3{1c=tDG z>HGJ*evfh9A^PwhWAZrz#( zz%YKPdd`*kczhG7)Zdg!1w5X{n(}ryHh%^H#A5R#5&={-$H>Sf_V0g}k&#QNYK}xA zKrA+2Q@)`gjofVYo* zUUBP>etZU4>bTmHVEgUw0kE@z#L>CI_3*5<2Jue^2ptZfZt0`-&u_>E`)yB~*Zml9 zKlO+8ebb)yC(2yQYX-`ncGUeHFn=`EMKroJ(K?a#GcmK3iJ7fW9%R^GHR4%Iax%0Nhv$}r-3i+J-G?W zUP)qwZeFo6#1NP{E~&-IMVSR9nfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$ z>!;?V=BDPA6zd!68R}!xSCW~AaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`F zXfoK|;*u17BnA3L1_l&2TID3>rQ0f1=%%EmC6?xtDA{F{<|gLZ=tGpCYK4fRnrNes#c~^vm#rd$Qj7C* zN?N>Ymoihv0VY@ZR-I@~JI z%|h56nwME(2QvUo7)cjW#8^2Nm6YcfWru(x0UClh<)LOkLK7)vLXtf=|?L zo`>wX%#G9R7#LW*JY5_^Dj46+^39QU6*>N2x;`aXJu}0nMMPTMT#0i>jqIfrldigX zxUP_2)zYHGxK~Lr!_t&pFUFz8SwF_1h9l2XF@&>m!YY>^O+^{Aj+AoxUW!_|+Umy2 z$Lqg--;ghqzt@w0tuU+fJ&)IOD?g__-+TW|-HG>%F*6v16PSD&I1L!p4zQqb{>8J1 z6q%daYFV|ZrOdsxzV_$tjKChX&JU+|*KKz2lKy=B|H;(Emv0PuwAF(-YD$i6uotw@ z-u1`+?)_eqpmF)Z+H=9`C$sgFcrrGeI^ezB<I{vng#n-M~d*W%4$I_rQ~%9?<2wSR;0R zd+2?)-|z35KIsin+?_EsyL;15h3~D)4D2g%lFN@cYh2Sf8NJ~1mFS4bNJpiK4xa4+ zT;~?*OCDM6zvRixIqH^Qk3Z_1^{_X%*G1`s_^C?@yYKcj?Q6_6n{A^v&ra>>mHFpW zFO)vZJzTJpc@O*D9fi;NcgDYPeE2%};l~OAzV@e;wY9R>|M@6yTbbOGx4`SFS@`|J z%J=*BCmo+1Td47Ct<9&`p{-9Q9@V~dd||r1_;vH#`VV#&Sd){Jo96JbiC?(3EGgwk z|H+dKCc5nN*T)}{ke4^_%~W8Mkd+m^T%3K|CyMXyvWofEifwTg4V|6r_pO&?6dikB z9Xa7~J7497Eh27eliLno%-d4D)8^Up^|OxU%wBtvW!d|NgaS7!cmByfYRz7*67PdP zz25(=d8GE^Zq> zKQ7aqcl2h)Tzvg*>cuBn2A{sJXL@$w)8m+m{?gY>0lp?DmR-JdC&!9;qQ|UBT7C6~ zH$?OEzX_f*8Go`=5Nf)_iL-;r_N&Q{&9pgteOl=ZEWrZL#1tY5xCAWu^Pp9ZR0y z4>&Q$>-o!Kjc_ehFRu;ye_2oa+HR?P%(dsc{JiWhD~jJtjf*|c;N`a9%<46K2QR;O zwVS^^NRDr7s7v9G4-9wmzQ_ICu(%W}1zVP(ZNt))N zmCEzWzbJ;hzA;hRo%N}3Kv|^OYDJM*ceiF=KXEX>4Tx04R}tkv&MmKpe$iQ>7vm1uKX; zWT;LSL`5963Pq?8YK2xEOfLNpnlvOSE{=k0!NHHks)LKOt`4q(Aou~|=H{g6A|?JW zDYS_3;J6>}?mh0_0Ya_BG^=e4&~)2OCE{WxyCQ~O5k?O}=zqhY%q(M8l9KQpU-t;` z^)AM<{LlS4y40M-fPhFm!wl0VUMHT~v<=St#1U4MRpN8vQIjr6{K$31<2TL)mj#{~ zG1I9z;s~)=Xkn#=S<%#pCyAq~rc=I<@mS@&#aSy=SmU1jh2fmOyu@{yLr7o&i;y5f zK?NHq!A6W$oqrSyDcXRA0s5Z|*_2%=NK?q? zf%h}|rYz8V3v{k}y*2i6`T(S)TG)oWIs~`Q4LPETt^V_-pX*YtgDbS+*&*V{e$1I`o6GAV>6h@S1{(Yon5qG!7)geI^obC;X;bS%rH z5I)0le~MSvKZa_>J?!;AS?*6!2%qufcc*}Dm(i+aLc>GYl{L>7gocMGE|szE^3J!W z0e`k#MzcyBY5AJNhhKwVuQFFX`J_U%?AEJQe-X4ziq~f-c8w5OyX6+=4kQSz{0Lnm zJJ*6|!Me{JM~OeY&s^m#pk}oHs%-g|y1A_D6AIwap-v_z2bi6mXK?TpE?-{Y_U#e? zw*8Io=D(vh|IpBL%*;HXT3w^1<-oT21AnzAiA0I<@lLYYRnqBcjvpT-ot`F}U1fZ{ zlSHDlYmI4ylfSh!Lt9&$Ti)85**3ptGzSKTm0?7fntD?C#EDMw`5X%i*L^$s4kv$a zZ!g!bEz#b77sH6`nfyWsA%qY@2qAG!)J- zPAh;yI7xKnTbzzKdhwj6?oU@f^mPY#w#YmU+b*-*m!#*;6|#Lv!Y7OLjgC^c8oNg{ z)Byn6s1>`rL-0;TH{YGW@!hG;ZSHk;wb zjqbWSd*Q!8(*eiE-c$K}&Rv7QdGmPys@3m(-*_Q}_#47)U?s95Y9{~y00{s|MNUMn GLSTZx&WL&d diff --git a/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/meta.json index c402402b13b8ac..4ec7339a888d0a 100644 --- a/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from paradise station at commit https://github.com/ParadiseSS13/Paradise/commit/e5e584804b4b0b373a6a69d23afb73fd3c094365", + "copyright": "Taken from paradise station at commit https://github.com/ParadiseSS13/Paradise/commit/e5e584804b4b0b373a6a69d23afb73fd3c094365, redrawn by Ubaser", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/equipped-OUTERCLOTHING.png index da0a69c9c4dbd45072654bb7d9e4b6dfaafc3c68..24837f4d9aa989b61f0838d5e0ee0ce7330c1017 100644 GIT binary patch literal 3568 zcmZ`+2{@G78=oP2k}M^WOQme1u@6R;Fok5uuErP)W-&&_R+h3a*()(_Zl>WaINi37d_^+>jV_RX-MCd;b{-gd0_0z>bbO}U19Kq9a=Mug%_SI741ClC>&)^H-s}yCCg!jKvqDefNNRsjv4& z{mBb%sF)4Hr-LfD(y7NZKBH!cYOGLkHqmhdreG0g~F>8SSPXtiP&&AM?Tq^L+CHKX9r7wYogw6=03mG%31Y_dIPM&A3) zokAe~ko!X0+OnE8d?&hCOrIPWQNALVrI=q^viZEc{6c%Wv#cuWiHf#cbkM4a)b5ur z`j>9gr=3Kp;MA1#d6hb@2D=Us^o(tF!x>Z4(lsmtZjrvIe+ACCA(i931yz=0pH}#6 zn0wn3^%4*WJ$8(pU$!P3t)dc@kdU5KTdsa@J~&mm5n#G**ms#aVC%%5NDD71DX|~T zq6;H(btn|VGp(e^0AC_8XL=&Zel;?X%OeEVdAOu0@i55u>@vAnH$vdaCl}2esI9H- z#Psy@(!Y)rjMdl7lscCMJRcLdI@}QL9Mackhd6uYjGlwTq1ght>we|?A2_lNS7uth z6IWI%=s#}|bXGn+{mUg|M$Y@eO7B9OY_V7k7=~V&MgKtVmz6jlYmFFxyMI^Qi2<&5 z!h+E1bn&L~1Z?hz+>1DtF?3Mt;w8Y=7lryvQE?Rw5E`9b9&WzN&OytNTaOG|^1&o)CHudd2N?CtQYqp+n!QE5W(vw_;$TEN=K$Wijx zsFcn&1;#yYNaNItdGyDNJc=hUEHPj$lKZ$xP~ds~N8NUHgpU)VYS;rq99b;zbh$?T z%xrzk$l!3jc(ds_BP3iPATx00$vu-Oqbsg?qe>}^7f)ttL#;1fa2n#ud^O2BpP{p^ z)TQEhdLE0c4S; zia(gWog^6rkFtnNX^_Z#*n|`qW^1eY^36!`g||@J@`{gy4aE zDN%BAau|1Mnd=FuE}2@9%_b%CC{GoAkB}$BjMX|slc%Bg!}1;(N^HQSmOq|;FW$}a zx~ELlBb)9;nxJCg%T%e*uSip`<6=@($J42kh9=cY7e(u%#S?a$-w()AHUqL_74814 z9hx-Yg7qSmR}R&%=;Gzd!)M13)lsjkoCM}4Jvv{@ zjY!^~Z|Uso^N7PKvy^Rl)HulU-+Xgm?J4Qfrn@%B^Bxp3TE}jN^99$h-)SlvRI}t5 zeLvmtV@$%<-zsmrS9=CSikqMHsm`Vaeh%gE5^yQ(^EeblOmufj;h?P1Q%hNVd5<}CX;br6gH@0EY>>b3h(FVa#qUb_|F+sFzho6ugnECn51X|qi(A9#JpS4JOoiX zKvV9h>jhkWpB~P3E+e*WD&ONIOQ?t#Npi?vM69|o5%DUo(Xd9*H1(O-t6-iBw&nf= zF4h^1ua`%tDWYH}*5PrCuAiS8Yrg<=&j;9 zevt>x8F?;VA!};^&jS6A(P~GVvI384wckHEVBdcteYNsL8629uRa(7~uk3)tGS(v{ zBOpm-<{VQpw{)xHcoi+1q^`=;wP#$3mlG0oamdd7LseCH%$?M^~VRcT@ zu6Z$*^U(Sjj2g%c!sg=@a@wAp(pyulM7I*kcg5WxK?<_=QDSb=;ZOF2^QZJ42|gTJ zp>Z_OCe!i`bi;|qTWPOKV8TQDZpw|fSDj|rg7U-uLW&&Z>q<15uS{9G)#?@BdMzyj z)EF$Cz^eTTKUDv6@}SM!*hNvaN!_vS1|-W_-LUVquvCMb5F$Cr>B-fv+VhgzH{j1(W-e|ind;_L42 zjxUTD;m=80>bC0SiLU5(zgO_-Ui6~AzukVdM~?9!b-k5*@Hg-VAVO}|tkd2ovteVb z>RQt=Uy!uC$lT_Oa^WIFKvmtNahuQ7+4{JbIy9RBo-)VB`?&W@3mkHX|B(dRnFqe{F_`HYQ|?tpihwkPCgX$ku19X2S~!CA%*j zQ+?{xuRkaT+y_^K0;Vet0zYh(F6#erWW9k%_id}jMQZPRxW(E8bFGmze37>Ow*@BPeDeQl_Uq6xn delta 1857 zcmV-H2fq058{7_%Fnp0Kbwi{e1w-7ZexRQ0a@Hzt-2=%*nEFT2hB&gp)CL;= z`6_|HXLqdGiuJUw;FE)Jyzv>Hv>5_c1^JplO42>V&GbDn!E}3Cjp^3rGNMsB0A1}fNI3)y z1J{5SRWP*;DPIOa$_`){DTnB4pK;kuXZp$p#ZOx{@qg{DH2}mv{Xp9=96`#L5#k6P!4Wq3eDt0A9^l6?cFA=5hefXix%&OX z&6%?J&6}BRH3Loq(AhTSO2423Zl601oaScgHon#i0=^}MXabT*32+sFs;ZX|qKU!L z6!2S-9DjL1ZmdyFi-5~s+en-}$;z!a*l?er^_w%(dO4NKbitef0R6+0B02JcT)CCj z=M~l{=z!`czd|~#MgYD6fRxt}Vv}h`rmmFNGuyt_AD~8H95}yLKUc-S=K$&S6S|!X zS!KVPwM@6qfVIxc#qnLBad2ABcKj0fyB_@-;D1v9r2HVK-rt-y>xgu^3Bx!l)9FiG zy3~Xap{(*95B*5r0nqiD9JlSr0gYZ&LQCnL}U7eq| z{C*;1L5}VI(6JGPP@|}bh8Kv(6ZDwjkElebAE63lkImMJ?Fd^@v!V)QB7Ip4(Z_p{wsP3+1wW;=Eky$G(RZ`aPX!L9z9 z#x)L3OF%ai(Th+6<^rhL0?g^{VTcVMVY?*U4`ci{7SFI!)gFSyos@qZ``y#o&e(AoAr{lnIAb?@D)_lE91v4nKB z&*(KMTferp7Vwu<8#M)gEFmHf1s|0F>Nlc~J9%6C@6vblC~P7p-_u(SoEY5=pnn^3 z%F9DJ^j%#7BG7`Ie3P50+W`1lAvtmmILF4CYDA!g^*s383w>7(h=v!mh{*+ft$$Bu zmG=&~(sxBU^j$dstVL)!nc~DK914zczptiJi%`k+*YQaV)JKQaj+Yvx)73sN=meGU8t9JG=yzk+RSW&YTu@ z)|z|nwZ4akhlhuUhlj`i9)2{Ic7Pd!e|F!QJdu|KkkB(DQpR_(h)k!OkTOJW#||p!_aehf_OZ^Z-$=E)QLYbUZ90+96P|A0g1CG0oYhmP1UYv zbZLxAblyaWR{;3Q?^HbS&VR&f{Nnq{F8`hbw%mcWaWw%HI74=Z*fEnJRj$G=?DkY> z5V|FF%g(ldG`A}tT7MQBT(1FO<>>SeKgH@PE0tgi{lj}R_M8}X-$Ieo#q{OSAeqS z1?0ojwcAq6AQZg@R5B-^5ZU2!_vaVo023=75Ad+#e^OXK-8#}f<2u{kFS@05FM?3c vyny`LcjpRJcoDR?sts9RD{fJaE)D+yLs~f*E%MI%00000NkvXXu0mjfl991T diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/icon.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/icon.png index 5a1e8bf19485767bd80c3cccc213507c5d8c427b..31f9e2f0e943f1d0edb1ff212b90dc9d49070869 100644 GIT binary patch literal 1888 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}e5nzhX}-P; zT0k}j5QD&_;K@Lev%n*=7^q+l2s5%z3BJp~z?_pA5>XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRl4Skm)1?YK5yc?zx=n$j+)xO2+92O z@2N49zE#=H?}ty`I=>;<|HG>6wE=w<0vtyRw?6G-xm;tx-y#&?r5$kf4%e@2v&DwT zPb4m{O)3#OZ5t~g=G7FnHf+thbx9Qw8Aps0ceS3nb!x6++kal;19vNG@*l|0J`nRg z_{r0!Cy&4W>Q&G;tMA*%iG>&J@9IdTDZG$%5a7C%RxP;3u4SRXfw|gUO>3Ub*7*8+ z;_TVlCr!AkJwJ$AJr_-=J5cbw_0BJ?dFx%n~ryzuGlthp5_{(X}z7@2HEeNGd}4CX;pyGqlbGGltz160 zF7%|uG3m}cHn&B7e|U~;+_59}N-tB&p7qknwGLyIr}-o>)x!mnRe zdEfWAp5J^tA~NED`h0%QZr62tFaDN^j*j+t^4#0@?U%*&k0tU|cCmQr#kvK%i!WEZlhGO%ub{Ex|9&gWbxj61_@?;otWPn^zNVEcInrW#Fv+ zUiD&6noAlV_m%_hH{1RnlMuXc&EV7Ivdw>|WNp5A;8j}VCPvrAfmfdXpH#eTPQGJQ zx9Z%IeuYxSrrU4JIG>5BRGd?v^x(?nc`IMYIlf9dv-)I8Q{7rhU@@&Bgg%H_7fCp#Pt z?)>~hd~TsmQu~|VOudW!8G`lSZ1mw=61wqG_VebTs!bWE{yz@L$yJ^ho3PS6Wo2e_{FeVwW02xme?LTM7YoNC#${|p=d@>> gZ7f(PxPh`m@5#8yias9>N6QHv7dp$EyOA|8u}dMUk_gNS(W&|Zp%A_Nh{QbCA6 zhoq!vYz-EbcnB&K3sIYGw!wz+&CG7PwI#br8$`&1&CGoB_J4ifyf=B)Iv z-{+2_+6ovMJj23MIVj3+FjgSMPh?TK$%POxW8<_Rp@l}Ho7Oqwy&2mqILg4ab02W; ziMi@Bo;O6kpMS`%3Y4)Rkzb)v`U4&(q00+!xkl*}C&5n^^54R$t|JmRMR5CRkdBKn z=#8OSRY~l1A;9H2!HUJPvRNoAU_CKSztdPNtV8uJP@v09Q923J#Yusz@M~ze3yw$P zyhQgEJ$94ram&z3_YN}9*mD-eqRaqrNnnhv5?Qn1k$)@sa@;i4cLOp5a}cGfR)Ezy zBJ(UAyhF23#_8Sk{4&Vj{^j@4X;^0hhGxB(`%$2qy^NI=4f%W?lTrQ`kf#p$-=nFi z2`w!iJoR{l|3vS*oeMbl-~u}L?G@yjrXf6axU?7WJ}b>9qy43M$AAW&`13E0U~#z( z>EKxP0)NuMV+tsxr8$O-?$?fo@qUYED?ORgJG=~wn)yz7vn_!&$jIPVQ3BZ$+AUrg z@!#hq2v0d9b}YbZW(h+6SCsY*JmgQ3s8hyjrjn4=e2!bi1q^s+sSGJ4;62JFqrH%2 z$W|P!A_466OKL0^A@2Z3QZ)9$EQj2$p#Y`3i+@NSiO$GP^-)iZC1{oa?|gjUuJP>sRO72j=Fxwiqe;X`? zYRpE!Fn#?Fh#6yR2A0KEEQ4yzMnH~8wtiT)!)hd8!f{8dk$~D;UBDj$8X)jK&JAq< P015yANkvXXu0mjf4N!8C diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/inhand-left.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/inhand-left.png index 1a4f03fa5d11ccd5ab45640ff423052937c89cc3..02bb28f88c61f89274c6fe62222f900cb5e86d96 100644 GIT binary patch literal 1932 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_);T0(|mmy zw18|5AO?X;!IOa`XMsm#F;KxA5N2eb5`33|fjKQRB%&n3*T*V3KUXg?B|j-uuOhbq ztjngt3dqb&ElE_U$j!+swyLmI0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~% zTnY*bHbp6ERzWUqQ0+jTtx`rwNr9EVetCJhUb(Seeo?xG?W zUP)qwZeFo6#1NP{E~&-IMVSR9nfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$ z>!;?V=BDPA6zd!68R}!xSCW~AaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`F zXfoK|;*u17BnA3L1_l&2TID3>rQ0f1=%%EmC6?xtDA{F{<|gLZ=tGpCYK4fRnrNes#c~^vm#rd$Qj7C* zN?N>Ymoihv0VY@ZR-I@~JI z%|h56nwME(2QvUo7)cjW#8^2Nm6YcfWru(x0UClh<)LOkLK7)vLXtf=|?L zo`>wX%#G9RfH`idr;B4q1>@UUwm!juBFFu^oh1d@mUVLWGF#nvrO@fd)^toFM|mwz zMvp}Yv!J+otjeq%3tnh&c5aXm?=?Kik(9)AkR`c=QA6*jt5Boa#Que;2cG}F|7~yA z#+Q5bzdt-+=~;XJcj39c`^(SoeezdcP+B;F$)|zSfKlxL%M1o|&hE|z_vuCc5;ykXWtd!MWASL2_(nwqI{dD*8N>&nH`xqNv)x#>ZzwielZ^31FNi-?s@bw+-+Sz*^`^w)MhaB?q77}j`d56gU!o( za?HG?rKL-LCC>j~e&?pj-TK=MD*raSFY>*qrn_+OmM>2=&zhBA$Vzh9vc5BZvGV2S zE$j6Xm^5A=%4;}zxaqC=%g=vrKl%Lgjg@)cmL&&f|16!gR^LyKIaXRqB=xfdsH+%4DLX|&oeHQ|HcTY2*dQ9o9G z3C&%d%Gy(6)+G~rZpqsp-Y@^`4NVU}ac9Qrg#WjXw_GXu%yJ-L3&VzICh5xv-|oV?+4;%zueo}HFf=o|7YK^|E!zrd+Kkf zRfcuku1AFvSL-jE=K5#buZ9TD+Rm1uo@;Gv$&Yp``Y~(|cDT(Y;k7PMZSq2o#Orc0 z@e3Rj7JM>riO#7y{5kVg#;ViIKAO89@ZpX`kWAwwmMQmdO#8$VC|tTwK;_e(UbT4{ zpYwnI`P?PG;$guJy+f~m?0gcgYUn!KfGJQo%OEB9{miiHfV_JOajr|w@-ceGXSKIr)n7Rv5z+g%dX?Y)#Co zzahXKe)-`_#^1_ZM-D$xJn0-f#Wa_}04%MLzdKhT$;lYU$$niux3MrfybvCJafH1-ST7PNqe2epF8tr`34CFYbb zS2aUfvby)iIq&PQMo+Q{;$!oaTc&g}JC;%RndgIrSyB?-nsbjPUE%w8&~t)WuwInK mH-(eG|JJe3+j07x>IdnbQ-<#r_r1*o)r6j|elF{r5}E+~N$1S~ delta 1016 zcmVEX>4Tx04R}tkv&MmKpe$iQ%j3f9oj*} zAwzYtAS&XhRVYG*P%E_RU~>J0CJjl7i=*ILaPVWX>fqw6tAnc`2!4RLxj8AiNQwVT z3N2zhIPS;0dyl(!fY7Wm)$ADuRLwHd$%L5At%|`{gb_hMLVpOz%+%*3DFx5*bq^n3 z@8Uem``n+SFJCYj;1h{wnQmCb8^qI_md<&fILgX$p7@-2%%BSrKXP4h`HgeQVS#5x zjZAu;I7%#*x>)IARyI`PDdJdO)hJ)cx}4{{#aXS^S^J*+h2es>vdndw!$@KgOOPN! zK^+xTVIfYdMt_QlH0>um{6mgkB9}t03K%&SP=gBD@q_=t?{3ZF;acMz~GZE8?qz$X$r+6 z@P0<$lmjBSK<}E{TYDd;4?u>xO5Felhrnowve!M{9e?WX?cX!){(b=d19EuqpJ*!p z00KlwL_t(|obB1MYZGA{#_?}@j-6W2p^zXt2`-WbEQrubw+@w(rHdkF>3CCJM6e(Q z@h=c@vV`K+p@o!A6{H5C;O5XkC!tG%gK)eK?~=12J5RI0XRLq zZ!^RMW-H*^uRlPkucyTI^1=v}P5{{4nk9-V7Jow<$ZP^8-h5_lX}7n(wzSLc!{@2% ztgn6rO5FUk48Y9H7poy==XU*jyv%D3!g#B>i=U+tI@oaj*l>j7|C#QE*Tx)p=$>N-~(A|fIpA|fIp zA|mOSy>TrT7hS9M444G=34%$Y=vAg~bS)xz(_FyE*&Uz~$K2Vnh~&*Cpc`ZRSi6Cb zxwB*w$(yc#D5|izH5>1Zo(v7kB9b?ofN^e&?PKjy9CK&ODv~!6#&PyWE~&14ByS?W zSiAq6<3#et=`eg~EaQ$2tji8CmCzoJ`2@gO9B=1kyhz^kL1ks`uJeg5j24ThHGU*- mx&qEG9`d;lv=cUwVf_XCRMK?$_*;Mg0000NNK`9AI2oR36fCy2d(3X&FAdqBZvY7;QDxjz+ zI$VlWWS|uh2C$q(lyZ~-ff^AJtO_Yt056;oMRCAx0_7^cnYZt~|NY;8eEX)I0-gZSOmR3IMatuo0~ucPaP&k4A`wJF z20?{Ffmb-DKq8Sq0udwi!@*I z

o3w2l_WT%0`af**-oD%5%5aY0B3i6Ai|10C=V;A%KTz+a3|ESskTB?i>qpfJL! zFs20I?m(IHRHE_B=Z6N$)%lenJaCBuNF)%P?FmGCA_-i`4-KEf@7J zTZ_K;hy@7kKLaboOHfM+Lw1uQ3RoJ=(iLHz!4KZg+n8f>NoUTry^eXb?`ftKaN!Nn zOuupD)6f@}%w)K+l-OrKyZWx*ZQXj9r5ye2D{>&HxUEhVQo+77$r%^CUBqcsHR@(8UwSs`YE`w^gWv)pueQe!Ct>$0oLV ztJUgvGqkCG7pdB2u-V`|W__5RZ=4AMYum8m(D0r?e;a(HMD~u=ta%k%wJtN^ZmqJT zswdgpFk%fO$l3bxt+8?yy@e10rMGR_BUk6%9vSJDJn(S!xN0%uXdtPP#chD~3s1cq zcY9VhOzB~4_}*zpcx!t_`r5>h30p70!MwC=|AM>=wJwjvPg#~~Xu9kTF&dMb`#iT; zuQVO2Jqc_&yyw;jicuziBj_+&u8x6kPLCWeth$Gojcqa`NbIU$$<%0X z_0hW7bNdq#v%)%ms~_Y2>FTWiPtQ|nMpRUk`IiI7u<@ZlYHn%zS)e#z_J8%rYVy`a9}D*mt?elmI_oQF}qnl%uqZg(b~3)+%D z;r@L!Vs7urFE|uh+{`kyj#Vl2`y(BItgVJ9~D@a%E zHX_xsO#q9@y5TOn%`qNLAgdfP9>foYVBa=kv*ToYX59ut%l2Y4@y#RG6`6ZCQN7B- zj_2lEcJ82g-WliQgImwGb@v`(b?24bFCJ~5j)W&dI% zI(zs~VmWLQmp#e7jO4Uu0-T4WV|S&BuQeScBbDAwO@4-I^MN7jlwH4Muh}12i5NGP zW@M|2TbmE_>LQBT1|*&7z_+8uFLiXbq`DU7hbgMZ2$lO delta 1016 zcmVEX>4Tx04R}tkv&MmKpe$iQ%j3f9oj*} zAwzYtAS&XhRVYG*P%E_RU~>J0CJjl7i=*ILaPVWX>fqw6tAnc`2!4RLxj8AiNQwVT z3N2zhIPS;0dyl(!fY7Wm)$ADuRLwHd$%L5At%|`{gb_hMLVpOz%+%*3DFx5*bq^n3 z@8Uem``n+SFJCYj;1h{wnQmCb8^qI_md<&fILgX$p7@-2%%BSrKXP4h`HgeQVS#5x zjZAu;I7%#*x>)IARyI`PDdJdO)hJ)cx}4{{#aXS^S^J*+h2es>vdndw!$@KgOOPN! zK^+xTVIfYdMt_QlH0>um{6mgkB9}t03K%&SP=gBD@q_=t?{3ZF;acMz~GZE8?qz$X$r+6 z@P0<$lmjBSK<}E{TYDd;4?u>xO5Felhrnowve!M{9e?WX?cX!){(b=d19EuqpJ*!p z00KlwL_t(|obB1aYZGA{$MJVO$GWtjLm@$Q(Wz(}QLsY`ZXFcq(nS%nbiAouM6d`2 z@h@<25X%j2=}<^lLE7NdsSXWv60$UO5FWk`&&B?F?%Etr?mYay;Nb4bJ(uTs^4yc- zKA@CRN`EP(lu}A5rIh-gREloEs8p*@q}zQ3i~(B&!5GH8IoIE-?&_g%?-q1^+QYy5 z?@KjcL9mN4cYy}RxX-!bDy&oo-t4QGZh7dVS7s>qcyH@*4m*zdQwMEH8e) zY}J-bZS2X?{ER?Tpeal9GcvWYC*_&}q1=vs2&@W(mv6VN1h(^Gyfx+YXJrw}%ei{$ z0Hmzyq1Z(b;2LH72e3kcab)`|mHLje{mwPO8c*0Sn;t74ZX|x1G64Gt`{nWc(Ix=z zK7ZdyJSSmVC*3n;yA96v<9z!Qo&*ow#U&F(4^DM>VWFs&D5aEAN-3q3Qc5ZH&nU%9 z&LDU##`J+%pii~>k#2X>OWPA(il)gwI=2xwK%XGk^?L1;T)?fE===z1$5Hoj^zFlt z15i|SZiAV%^=XW0c)jw_GoXm*+(z5AIC1Jej=l>}WON=1tj3Y|5OKFp#YX2BN8MRu zT)Fd)&Sm?)RO-)wp4aaidJVAhkIrqx-Sd9kj02E=bUui<2a&fg8KzPZ(fP$OcUBpm m1oMr~qbPziKa|GY9{mAXnbuT~1Aq7c0000 Date: Thu, 12 Oct 2023 18:21:28 -0400 Subject: [PATCH 065/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 820b9a0a13877f..661b3e08389746 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: Nairodian - changes: - - {message: 'Changed Dark & Bushy, Death''s-Head, Firewatch, Moffra, Plasmafire, - and Royal moth wings to now have two separate color layers.', type: Tweak} - id: 4497 - time: '2023-08-10T01:32:01.0000000+00:00' - author: Interrobang01 changes: - {message: Added Mustard. It can be found in condiment stations., type: Add} @@ -2958,3 +2952,8 @@ Entries: poisoning now gasp visibly., type: Tweak} id: 4996 time: '2023-10-12T07:35:31.0000000+00:00' +- author: Ubaser + changes: + - {message: Revamped the Paramedic Void Suit sprite., type: Tweak} + id: 4997 + time: '2023-10-12T22:20:24.0000000+00:00' From d6575eb556ecf407964f37194916ec7540ad2e9d Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Thu, 12 Oct 2023 15:45:04 -0700 Subject: [PATCH 066/245] Add support for multiple changelog files, add admin changelog (#20849) --- .../Managers/ClientAdminManager.cs | 8 + .../Managers/IClientAdminManager.cs | 24 ++- Content.Client/Changelog/ChangelogManager.cs | 112 ++++++++-- Content.Client/Changelog/ChangelogTab.xaml | 9 + Content.Client/Changelog/ChangelogTab.xaml.cs | 175 +++++++++++++++ Content.Client/Changelog/ChangelogWindow.xaml | 9 +- .../Changelog/ChangelogWindow.xaml.cs | 204 ++++++------------ Content.Client/Stylesheets/StyleSpace.cs | 17 +- Resources/Changelog/Admin.yml | 9 + .../en-US/changelog/changelog-window.ftl | 3 + 10 files changed, 402 insertions(+), 168 deletions(-) create mode 100644 Content.Client/Changelog/ChangelogTab.xaml create mode 100644 Content.Client/Changelog/ChangelogTab.xaml.cs create mode 100644 Resources/Changelog/Admin.yml diff --git a/Content.Client/Administration/Managers/ClientAdminManager.cs b/Content.Client/Administration/Managers/ClientAdminManager.cs index 66c8b8a0630ba9..8978e2fd6dd982 100644 --- a/Content.Client/Administration/Managers/ClientAdminManager.cs +++ b/Content.Client/Administration/Managers/ClientAdminManager.cs @@ -130,5 +130,13 @@ void IPostInjectInit.PostInject() return null; } + + public AdminData? GetAdminData(bool includeDeAdmin = false) + { + if (_player.LocalPlayer is { Session: { } session }) + return GetAdminData(session, includeDeAdmin); + + return null; + } } } diff --git a/Content.Client/Administration/Managers/IClientAdminManager.cs b/Content.Client/Administration/Managers/IClientAdminManager.cs index 46e3a01537b1c0..b4b5b48b814888 100644 --- a/Content.Client/Administration/Managers/IClientAdminManager.cs +++ b/Content.Client/Administration/Managers/IClientAdminManager.cs @@ -1,5 +1,4 @@ -using System; -using Content.Shared.Administration; +using Content.Shared.Administration; namespace Content.Client.Administration.Managers { @@ -13,6 +12,15 @@ public interface IClientAdminManager ///

event Action AdminStatusUpdated; + /// + /// Gets the admin data for the client, if they are an admin. + /// + /// + /// Whether to return admin data for admins that are current de-adminned. + /// + /// if the player is not an admin. + AdminData? GetAdminData(bool includeDeAdmin = false); + /// /// Checks whether the local player is an admin. /// @@ -52,5 +60,17 @@ public interface IClientAdminManager bool CanAdminMenu(); void Initialize(); + + /// + /// Checks if the client is an admin. + /// + /// + /// Whether to return admin data for admins that are current de-adminned. + /// + /// true if the player is an admin, false otherwise. + bool IsAdmin(bool includeDeAdmin = false) + { + return GetAdminData(includeDeAdmin) != null; + } } } diff --git a/Content.Client/Changelog/ChangelogManager.cs b/Content.Client/Changelog/ChangelogManager.cs index 249332c337fa7d..396af99d2cfa61 100644 --- a/Content.Client/Changelog/ChangelogManager.cs +++ b/Content.Client/Changelog/ChangelogManager.cs @@ -1,29 +1,29 @@ -using System; -using System.Collections.Generic; using System.Globalization; -using System.IO; using System.Linq; using System.Threading.Tasks; using Content.Shared.CCVar; using Robust.Shared.Configuration; using Robust.Shared.ContentPack; -using Robust.Shared.IoC; using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager; -using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Serialization.Markdown; using Robust.Shared.Serialization.Markdown.Mapping; using Robust.Shared.Utility; - namespace Content.Client.Changelog { - public sealed partial class ChangelogManager + public sealed partial class ChangelogManager : IPostInjectInit { + [Dependency] private readonly ILogManager _logManager = default!; [Dependency] private readonly IResourceManager _resource = default!; [Dependency] private readonly ISerializationManager _serialization = default!; [Dependency] private readonly IConfigurationManager _configManager = default!; + private const string SawmillName = "changelog"; + public const string MainChangelogName = "Changelog"; + + private ISawmill _sawmill = default!; + public bool NewChangelogEntries { get; private set; } public int LastReadId { get; private set; } public int MaxId { get; private set; } @@ -51,17 +51,39 @@ public void SaveNewReadId() public async void Initialize() { // Open changelog purely to compare to the last viewed date. - var changelog = await LoadChangelog(); + var changelogs = await LoadChangelog(); + UpdateChangelogs(changelogs); + } + + private void UpdateChangelogs(List changelogs) + { + if (changelogs.Count == 0) + { + return; + } + + var mainChangelogs = changelogs.Where(c => c.Name == MainChangelogName).ToArray(); + if (mainChangelogs.Length == 0) + { + _sawmill.Error($"No changelog file found in Resources/Changelog with name {MainChangelogName}"); + return; + } - if (changelog.Count == 0) + var changelog = changelogs[0]; + if (mainChangelogs.Length > 1) + { + _sawmill.Error($"More than one file found in Resource/Changelog with name {MainChangelogName}"); + } + + if (changelog.Entries.Count == 0) { return; } - MaxId = changelog.Max(c => c.Id); + MaxId = changelog.Entries.Max(c => c.Id); var path = new ResPath($"/changelog_last_seen_{_configManager.GetCVar(CCVars.ServerId)}"); - if(_resource.UserData.TryReadAllText(path, out var lastReadIdText)) + if (_resource.UserData.TryReadAllText(path, out var lastReadIdText)) { LastReadId = int.Parse(lastReadIdText); } @@ -71,20 +93,74 @@ public async void Initialize() NewChangelogEntriesChanged?.Invoke(); } - public Task> LoadChangelog() + public Task> LoadChangelog() { return Task.Run(() => { - var yamlData = _resource.ContentFileReadYaml(new ("/Changelog/Changelog.yml")); + var changelogs = new List(); + var directory = new ResPath("/Changelog"); + foreach (var file in _resource.ContentFindFiles(new ResPath("/Changelog/"))) + { + if (file.Directory != directory || file.Extension != "yml") + continue; + + var yamlData = _resource.ContentFileReadYaml(file); - if (yamlData.Documents.Count == 0) - return new List(); + if (yamlData.Documents.Count == 0) + continue; - var node = (MappingDataNode)yamlData.Documents[0].RootNode.ToDataNode(); - return _serialization.Read>(node["Entries"], notNullableOverride: true); + var node = yamlData.Documents[0].RootNode.ToDataNodeCast(); + var changelog = _serialization.Read(node, notNullableOverride: true); + if (string.IsNullOrWhiteSpace(changelog.Name)) + changelog.Name = file.FilenameWithoutExtension; + + changelogs.Add(changelog); + } + + changelogs.Sort((a, b) => a.Order.CompareTo(b.Order)); + return changelogs; }); } + public void PostInject() + { + _sawmill = _logManager.GetSawmill(SawmillName); + } + + [DataDefinition] + public sealed partial class Changelog + { + /// + /// The name to use for this changelog. + /// If left unspecified, the name of the file is used instead. + /// Used during localization to find the user-displayed name of this changelog. + /// + [DataField("Name")] + public string Name = string.Empty; + + /// + /// The individual entries in this changelog. + /// These are not kept around in memory in the changelog manager. + /// + [DataField("Entries")] + public List Entries = new(); + + /// + /// Whether or not this changelog will be displayed as a tab to non-admins. + /// These are still loaded by all clients, but not shown if they aren't an admin, + /// as they do not contain sensitive data and are publicly visible on GitHub. + /// + [DataField("AdminOnly")] + public bool AdminOnly; + + /// + /// Used when ordering the changelog tabs for the user to see. + /// Larger numbers are displayed later, smaller numbers are displayed earlier. + /// + [DataField("Order")] + public int Order; + } + [DataDefinition] public sealed partial class ChangelogEntry : ISerializationHooks { @@ -108,7 +184,7 @@ void ISerializationHooks.AfterDeserialization() } [DataDefinition] - public sealed partial class ChangelogChange : ISerializationHooks + public sealed partial class ChangelogChange { [DataField("type")] public ChangelogLineType Type { get; private set; } diff --git a/Content.Client/Changelog/ChangelogTab.xaml b/Content.Client/Changelog/ChangelogTab.xaml new file mode 100644 index 00000000000000..7c049efacc7c36 --- /dev/null +++ b/Content.Client/Changelog/ChangelogTab.xaml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/Content.Client/Changelog/ChangelogTab.xaml.cs b/Content.Client/Changelog/ChangelogTab.xaml.cs new file mode 100644 index 00000000000000..d1e2bc7533edbc --- /dev/null +++ b/Content.Client/Changelog/ChangelogTab.xaml.cs @@ -0,0 +1,175 @@ +using System.Linq; +using System.Numerics; +using Content.Client.Resources; +using Content.Client.Stylesheets; +using Robust.Client.AutoGenerated; +using Robust.Client.ResourceManagement; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Utility; +using static Content.Client.Changelog.ChangelogManager; +using static Robust.Client.UserInterface.Controls.BoxContainer; + +namespace Content.Client.Changelog; + +[GenerateTypedNameReferences] +public sealed partial class ChangelogTab : Control +{ + [Dependency] private readonly ChangelogManager _changelog = default!; + [Dependency] private readonly IResourceCache _resourceCache = default!; + + public bool AdminOnly; + + public ChangelogTab() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + } + + public void PopulateChangelog(ChangelogManager.Changelog changelog) + { + var byDay = changelog.Entries + .GroupBy(e => e.Time.ToLocalTime().Date) + .OrderByDescending(c => c.Key); + + var hasRead = changelog.Name != MainChangelogName || + _changelog.MaxId <= _changelog.LastReadId; + + foreach (var dayEntries in byDay) + { + var day = dayEntries.Key; + + var groupedEntries = dayEntries + .GroupBy(c => (c.Author, Read: c.Id <= _changelog.LastReadId)) + .OrderBy(c => c.Key.Read) + .ThenBy(c => c.Key.Author); + + string dayNice; + var today = DateTime.Today; + if (day == today) + dayNice = Loc.GetString("changelog-today"); + else if (day == today.AddDays(-1)) + dayNice = Loc.GetString("changelog-yesterday"); + else + dayNice = day.ToShortDateString(); + + ChangelogBody.AddChild(new Label + { + Text = dayNice, + StyleClasses = { StyleBase.StyleClassLabelHeading }, + Margin = new Thickness(4, 6, 0, 0) + }); + + var first = true; + + foreach (var groupedEntry in groupedEntries) + { + var (author, read) = groupedEntry.Key; + + if (!first) + { + ChangelogBody.AddChild(new Control { Margin = new Thickness(4) }); + } + + if (read && !hasRead) + { + hasRead = true; + + var upArrow = + _resourceCache.GetTexture("/Textures/Interface/Changelog/up_arrow.svg.192dpi.png"); + + var readDivider = new BoxContainer + { + Orientation = LayoutOrientation.Vertical + }; + + var hBox = new BoxContainer + { + Orientation = LayoutOrientation.Horizontal, + HorizontalAlignment = HAlignment.Center, + Children = + { + new TextureRect + { + Texture = upArrow, + ModulateSelfOverride = Color.FromHex("#888"), + TextureScale = new Vector2(0.5f, 0.5f), + Margin = new Thickness(4, 3), + VerticalAlignment = VAlignment.Bottom + }, + new Label + { + Align = Label.AlignMode.Center, + Text = Loc.GetString("changelog-new-changes"), + FontColorOverride = Color.FromHex("#888"), + }, + new TextureRect + { + Texture = upArrow, + ModulateSelfOverride = Color.FromHex("#888"), + TextureScale = new Vector2(0.5f, 0.5f), + Margin = new Thickness(4, 3), + VerticalAlignment = VAlignment.Bottom + } + } + }; + + readDivider.AddChild(hBox); + readDivider.AddChild(new PanelContainer { StyleClasses = { StyleBase.ClassLowDivider } }); + ChangelogBody.AddChild(readDivider); + + if (first) + readDivider.SetPositionInParent(ChangelogBody.ChildCount - 2); + } + + first = false; + + var authorLabel = new RichTextLabel + { + Margin = new Thickness(6, 0, 0, 0), + }; + authorLabel.SetMessage( + FormattedMessage.FromMarkup(Loc.GetString("changelog-author-changed", ("author", author)))); + ChangelogBody.AddChild(authorLabel); + + foreach (var change in groupedEntry.SelectMany(c => c.Changes)) + { + var text = new RichTextLabel(); + text.SetMessage(FormattedMessage.FromMarkup(change.Message)); + ChangelogBody.AddChild(new BoxContainer + { + Orientation = LayoutOrientation.Horizontal, + Margin = new Thickness(14, 1, 10, 2), + Children = + { + GetIcon(change.Type), + text + } + }); + } + } + } + } + + private TextureRect GetIcon(ChangelogLineType type) + { + var (file, color) = type switch + { + ChangelogLineType.Add => ("plus.svg.192dpi.png", "#6ED18D"), + ChangelogLineType.Remove => ("minus.svg.192dpi.png", "#D16E6E"), + ChangelogLineType.Fix => ("bug.svg.192dpi.png", "#D1BA6E"), + ChangelogLineType.Tweak => ("wrench.svg.192dpi.png", "#6E96D1"), + _ => throw new ArgumentOutOfRangeException(nameof(type), type, null) + }; + + return new TextureRect + { + Texture = _resourceCache.GetTexture(new ResPath($"/Textures/Interface/Changelog/{file}")), + VerticalAlignment = VAlignment.Top, + TextureScale = new Vector2(0.5f, 0.5f), + Margin = new Thickness(2, 4, 6, 2), + ModulateSelfOverride = Color.FromHex(color) + }; + } +} diff --git a/Content.Client/Changelog/ChangelogWindow.xaml b/Content.Client/Changelog/ChangelogWindow.xaml index 888a8528d91a1e..355452dbfad340 100644 --- a/Content.Client/Changelog/ChangelogWindow.xaml +++ b/Content.Client/Changelog/ChangelogWindow.xaml @@ -3,15 +3,10 @@ Title="{Loc 'changelog-window-title'}" MinSize="500 400" SetSize="500 400"> - - - - - - + - diff --git a/Content.Client/Changelog/ChangelogWindow.xaml.cs b/Content.Client/Changelog/ChangelogWindow.xaml.cs index cea5bd9e7c2f56..e5f492900c26b1 100644 --- a/Content.Client/Changelog/ChangelogWindow.xaml.cs +++ b/Content.Client/Changelog/ChangelogWindow.xaml.cs @@ -1,28 +1,22 @@ using System.Linq; -using System.Numerics; -using Content.Client.Resources; +using Content.Client.Administration.Managers; using Content.Client.Stylesheets; using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Systems.EscapeMenu; using Content.Shared.Administration; using JetBrains.Annotations; using Robust.Client.AutoGenerated; -using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; -using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; using Robust.Shared.Console; -using Robust.Shared.Utility; -using static Content.Client.Changelog.ChangelogManager; -using static Robust.Client.UserInterface.Controls.BoxContainer; namespace Content.Client.Changelog { [GenerateTypedNameReferences] public sealed partial class ChangelogWindow : FancyWindow { + [Dependency] private readonly IClientAdminManager _adminManager = default!; [Dependency] private readonly ChangelogManager _changelog = default!; - [Dependency] private readonly IResourceCache _resourceCache = default!; public ChangelogWindow() { @@ -39,154 +33,84 @@ protected override void Opened() PopulateChangelog(); } + protected override void EnteredTree() + { + base.EnteredTree(); + _adminManager.AdminStatusUpdated += OnAdminStatusUpdated; + } + + protected override void ExitedTree() + { + base.ExitedTree(); + _adminManager.AdminStatusUpdated -= OnAdminStatusUpdated; + } + + private void OnAdminStatusUpdated() + { + TabsUpdated(); + } + private async void PopulateChangelog() { // Changelog is not kept in memory so load it again. - var changelog = await _changelog.LoadChangelog(); + var changelogs = await _changelog.LoadChangelog(); - var byDay = changelog - .GroupBy(e => e.Time.ToLocalTime().Date) - .OrderByDescending(c => c.Key); + Tabs.DisposeAllChildren(); - var hasRead = _changelog.MaxId <= _changelog.LastReadId; - foreach (var dayEntries in byDay) + var i = 0; + foreach (var changelog in changelogs) { - var day = dayEntries.Key; - - var groupedEntries = dayEntries - .GroupBy(c => (c.Author, Read: c.Id <= _changelog.LastReadId)) - .OrderBy(c => c.Key.Read) - .ThenBy(c => c.Key.Author); - - string dayNice; - var today = DateTime.Today; - if (day == today) - dayNice = Loc.GetString("changelog-today"); - else if (day == today.AddDays(-1)) - dayNice = Loc.GetString("changelog-yesterday"); - else - dayNice = day.ToShortDateString(); - - ChangelogBody.AddChild(new Label - { - Text = dayNice, - StyleClasses = { StyleBase.StyleClassLabelHeading }, - Margin = new Thickness(4, 6, 0, 0) - }); + var tab = new ChangelogTab { AdminOnly = changelog.AdminOnly }; + tab.PopulateChangelog(changelog); - var first = true; - - foreach (var groupedEntry in groupedEntries) - { - var (author, read) = groupedEntry.Key; - - if (!first) - { - ChangelogBody.AddChild(new Control { Margin = new Thickness(4) }); - } - - if (read && !hasRead) - { - hasRead = true; - - var upArrow = - _resourceCache.GetTexture("/Textures/Interface/Changelog/up_arrow.svg.192dpi.png"); - - var readDivider = new BoxContainer - { - Orientation = LayoutOrientation.Vertical - }; - - var hBox = new BoxContainer - { - Orientation = LayoutOrientation.Horizontal, - HorizontalAlignment = HAlignment.Center, - Children = - { - new TextureRect - { - Texture = upArrow, - ModulateSelfOverride = Color.FromHex("#888"), - TextureScale = new Vector2(0.5f, 0.5f), - Margin = new Thickness(4, 3), - VerticalAlignment = VAlignment.Bottom - }, - new Label - { - Align = Label.AlignMode.Center, - Text = Loc.GetString("changelog-new-changes"), - FontColorOverride = Color.FromHex("#888"), - }, - new TextureRect - { - Texture = upArrow, - ModulateSelfOverride = Color.FromHex("#888"), - TextureScale = new Vector2(0.5f, 0.5f), - Margin = new Thickness(4, 3), - VerticalAlignment = VAlignment.Bottom - } - } - }; - - readDivider.AddChild(hBox); - readDivider.AddChild(new PanelContainer { StyleClasses = { StyleBase.ClassLowDivider } }); - ChangelogBody.AddChild(readDivider); - - if (first) - readDivider.SetPositionInParent(ChangelogBody.ChildCount - 2); - } - - first = false; - - var authorLabel = new RichTextLabel - { - Margin = new Thickness(6, 0, 0, 0), - }; - authorLabel.SetMessage( - FormattedMessage.FromMarkup(Loc.GetString("changelog-author-changed", ("author", author)))); - ChangelogBody.AddChild(authorLabel); - - foreach (var change in groupedEntry.SelectMany(c => c.Changes)) - { - var text = new RichTextLabel(); - text.SetMessage(FormattedMessage.FromMarkup(change.Message)); - ChangelogBody.AddChild(new BoxContainer - { - Orientation = LayoutOrientation.Horizontal, - Margin = new Thickness(14, 1, 10, 2), - Children = - { - GetIcon(change.Type), - text - } - }); - } - } + Tabs.AddChild(tab); + Tabs.SetTabTitle(i++, Loc.GetString($"changelog-tab-title-{changelog.Name}")); } var version = typeof(ChangelogWindow).Assembly.GetName().Version ?? new Version(1, 0); VersionLabel.Text = Loc.GetString("changelog-version-tag", ("version", version.ToString())); + + TabsUpdated(); } - private TextureRect GetIcon(ChangelogLineType type) + private void TabsUpdated() { - var (file, color) = type switch + var tabs = Tabs.Children.OfType().ToArray(); + var isAdmin = _adminManager.IsAdmin(true); + + var visibleTabs = 0; + int? firstVisible = null; + for (var i = 0; i < tabs.Length; i++) { - ChangelogLineType.Add => ("plus.svg.192dpi.png", "#6ED18D"), - ChangelogLineType.Remove => ("minus.svg.192dpi.png", "#D16E6E"), - ChangelogLineType.Fix => ("bug.svg.192dpi.png", "#D1BA6E"), - ChangelogLineType.Tweak => ("wrench.svg.192dpi.png", "#6E96D1"), - _ => throw new ArgumentOutOfRangeException(nameof(type), type, null) - }; - - return new TextureRect + var tab = tabs[i]; + + if (!tab.AdminOnly || isAdmin) + { + Tabs.SetTabVisible(i, true); + tab.Visible = true; + visibleTabs++; + firstVisible ??= i; + } + else + { + Tabs.SetTabVisible(i, false); + tab.Visible = false; + } + } + + Tabs.TabsVisible = visibleTabs > 1; + + // Current tab became invisible, select the first one that is visible + if (!Tabs.GetTabVisible(Tabs.CurrentTab) && firstVisible != null) { - Texture = _resourceCache.GetTexture(new ResPath($"/Textures/Interface/Changelog/{file}")), - VerticalAlignment = VAlignment.Top, - TextureScale = new Vector2(0.5f, 0.5f), - Margin = new Thickness(2, 4, 6, 2), - ModulateSelfOverride = Color.FromHex(color) - }; + Tabs.CurrentTab = firstVisible.Value; + } + + // We are only displaying one tab, hide its header + if (!Tabs.TabsVisible && firstVisible != null) + { + Tabs.SetTabVisible(firstVisible.Value, false); + } } } diff --git a/Content.Client/Stylesheets/StyleSpace.cs b/Content.Client/Stylesheets/StyleSpace.cs index a82dba65bcc887..3bb4e986af5470 100644 --- a/Content.Client/Stylesheets/StyleSpace.cs +++ b/Content.Client/Stylesheets/StyleSpace.cs @@ -4,7 +4,6 @@ using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; -using Robust.Shared.Maths; using static Robust.Client.UserInterface.StylesheetHelpers; namespace Content.Client.Stylesheets @@ -62,6 +61,14 @@ public StyleSpace(IResourceCache resCache) : base(resCache) var textureInvertedTriangle = resCache.GetTexture("/Textures/Interface/Nano/inverted_triangle.svg.png"); + var tabContainerPanel = new StyleBoxTexture(); + tabContainerPanel.SetPatchMargin(StyleBox.Margin.All, 2); + + var tabContainerBoxActive = new StyleBoxFlat {BackgroundColor = new Color(64, 64, 64)}; + tabContainerBoxActive.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5); + var tabContainerBoxInactive = new StyleBoxFlat {BackgroundColor = new Color(32, 32, 32)}; + tabContainerBoxInactive.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5); + Stylesheet = new Stylesheet(BaseRules.Concat(new StyleRule[] { Element [DataField("threshold")] - public float Threshold = 10f; + public float Threshold = 20f; /// /// How many tiles should this field check before giving up? From 60f88b1fd65b5954cc72ca10140f096841aaf78c Mon Sep 17 00:00:00 2001 From: liltenhead <104418166+liltenhead@users.noreply.github.com> Date: Fri, 13 Oct 2023 16:42:46 -0700 Subject: [PATCH 079/245] Decrease AME stability damage (#20963) --- Content.Server/Ame/AmeNodeGroup.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.Server/Ame/AmeNodeGroup.cs b/Content.Server/Ame/AmeNodeGroup.cs index ab29d7037fa52f..d0e854469f55be 100644 --- a/Content.Server/Ame/AmeNodeGroup.cs +++ b/Content.Server/Ame/AmeNodeGroup.cs @@ -145,10 +145,10 @@ public float InjectFuel(int fuel, out bool overloading) instability = 1; // overloadVsSizeResult > 5: if (overloadVsSizeResult > 5) - instability = 5; - // overloadVsSizeResult > 10: This will explode in at most 5 injections. + instability = 3; + // overloadVsSizeResult > 10: This will explode in at most 20 injections. if (overloadVsSizeResult > 10) - instability = 20; + instability = 5; // Apply calculated instability if (instability == 0) From 0603671c968dbeb1a4ab184a669c21904c7ad3ae Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 13 Oct 2023 19:42:48 -0400 Subject: [PATCH 080/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 478dc6cfaba721..8994e72886a670 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - {message: Potentially fix invalid moth markings leading to issues spawning., type: Fix} - id: 4501 - time: '2023-08-10T03:34:01.0000000+00:00' - author: ElectroJr changes: - {message: Fixed a bug that was causing entity names to not update after being @@ -2951,3 +2946,8 @@ Entries: on its status., type: Tweak} id: 5000 time: '2023-10-13T23:08:00.0000000+00:00' +- author: liltenhead + changes: + - {message: Increased containment field duration after power loss., type: Tweak} + id: 5001 + time: '2023-10-13T23:41:43.0000000+00:00' From 516aa1d7bf5eb46e5e1e6a0a818bb7560bb10870 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 13 Oct 2023 19:43:54 -0400 Subject: [PATCH 081/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8994e72886a670..3e5f72dae35e53 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: ElectroJr - changes: - - {message: Fixed a bug that was causing entity names to not update after being - modified., type: Fix} - id: 4502 - time: '2023-08-10T04:42:09.0000000+00:00' - author: Whisper changes: - {message: 'Added the SecHud to lockers, sec vendor, secfab.', type: Add} @@ -2951,3 +2945,9 @@ Entries: - {message: Increased containment field duration after power loss., type: Tweak} id: 5001 time: '2023-10-13T23:41:43.0000000+00:00' +- author: liltenhead + changes: + - {message: 'Increased the stability of the AME, it now takes about three minutes + for the AME to overload.', type: Tweak} + id: 5002 + time: '2023-10-13T23:42:46.0000000+00:00' From 69995ef0202ae56fc3883ea81c69bf79ff00b983 Mon Sep 17 00:00:00 2001 From: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Date: Fri, 13 Oct 2023 21:35:47 -0500 Subject: [PATCH 082/245] Added missing name (#20979) --- Resources/Locale/en-US/machine/machine.ftl | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Locale/en-US/machine/machine.ftl b/Resources/Locale/en-US/machine/machine.ftl index 20a7eb440ff935..e23c9791cda4f0 100644 --- a/Resources/Locale/en-US/machine/machine.ftl +++ b/Resources/Locale/en-US/machine/machine.ftl @@ -11,6 +11,7 @@ machine-upgrade-not-upgraded = [color=yellow]{CAPITALIZE($upgraded)}[/color] not machine-part-name-capacitor = Capacitor machine-part-name-manipulator = Manipulator machine-part-name-matter-bin = Matter Bin +machine-part-name-power-cell = Power Cell upgrade-power-draw = power draw upgrade-max-charge = max charge From 4c9246589b0d31ceea0136bfefa982e479921916 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sat, 14 Oct 2023 06:49:04 +0100 Subject: [PATCH 083/245] add flash and dash sounds to paracusia (#20983) Co-authored-by: deltanedas <@deltanedas:kde.org> --- Resources/Prototypes/SoundCollections/traits.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/SoundCollections/traits.yml b/Resources/Prototypes/SoundCollections/traits.yml index 5b140541a4be26..557632c6bbad1c 100644 --- a/Resources/Prototypes/SoundCollections/traits.yml +++ b/Resources/Prototypes/SoundCollections/traits.yml @@ -41,9 +41,11 @@ - /Audio/Machines/phasein.ogg - /Audio/Machines/vending_restock_start.ogg - /Audio/Machines/vending_restock_done.ogg + - /Audio/Magic/blink.ogg - /Audio/Magic/disintegrate.ogg - /Audio/Magic/staff_animation.ogg - /Audio/Weapons/ebladeon.ogg + - /Audio/Weapons/flash.ogg - /Audio/Weapons/smash.ogg - /Audio/Weapons/bladeslice.ogg - /Audio/Weapons/punch1.ogg From acb390e8ccf507e27210bee1a6e93c62c942772e Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sat, 14 Oct 2023 10:09:25 +0300 Subject: [PATCH 084/245] Small Liquid Anomaly Patch (#20967) --- Resources/Prototypes/Entities/Structures/Specific/anomalies.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml b/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml index d227e57ff3b1cd..736834fa2f1ad3 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml @@ -305,6 +305,7 @@ solution: anomaly - type: InjectionAnomaly solution: anomaly + superCriticalInjectRadius: 10 - type: ReagentProducerAnomaly solution: anomaly needRecolor: true @@ -354,6 +355,7 @@ - Cognizine - Beer - SpaceGlue + - SpaceLube - CogChamp - Honk - Carpetium From 4fb8fa3f221ba9429d82a52130ceac1c6fda5335 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sat, 14 Oct 2023 08:09:47 +0100 Subject: [PATCH 085/245] update landmine sprites from tg (#20977) Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Entities/Objects/Misc/land_mine.yml | 4 +- .../Recipes/Construction/modular.yml | 4 +- .../Misc/landmine.rsi/landmine-inactive.png | Bin 0 -> 305 bytes .../Objects/Misc/landmine.rsi/landmine.png | Bin 0 -> 555 bytes .../Objects/Misc/landmine.rsi/meta.json | 24 ++++++++++++ .../Objects/Misc/uglymine.rsi/meta.json | 35 ------------------ .../Misc/uglymine.rsi/uglymine-inactive.png | Bin 247 -> 0 bytes .../Objects/Misc/uglymine.rsi/uglymine.png | Bin 246 -> 0 bytes 8 files changed, 28 insertions(+), 39 deletions(-) create mode 100644 Resources/Textures/Objects/Misc/landmine.rsi/landmine-inactive.png create mode 100644 Resources/Textures/Objects/Misc/landmine.rsi/landmine.png create mode 100644 Resources/Textures/Objects/Misc/landmine.rsi/meta.json delete mode 100644 Resources/Textures/Objects/Misc/uglymine.rsi/meta.json delete mode 100644 Resources/Textures/Objects/Misc/uglymine.rsi/uglymine-inactive.png delete mode 100644 Resources/Textures/Objects/Misc/uglymine.rsi/uglymine.png diff --git a/Resources/Prototypes/Entities/Objects/Misc/land_mine.yml b/Resources/Prototypes/Entities/Objects/Misc/land_mine.yml index 10dd2296061ccc..9088edc81599eb 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/land_mine.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/land_mine.yml @@ -21,8 +21,8 @@ - LowImpassable - type: Sprite drawdepth: Items - sprite: Objects/Misc/uglymine.rsi - state: uglymine + sprite: Objects/Misc/landmine.rsi + state: landmine - type: Damageable damageContainer: Inorganic - type: Destructible diff --git a/Resources/Prototypes/Recipes/Construction/modular.yml b/Resources/Prototypes/Recipes/Construction/modular.yml index 73d086937245e8..affacb098b81b1 100644 --- a/Resources/Prototypes/Recipes/Construction/modular.yml +++ b/Resources/Prototypes/Recipes/Construction/modular.yml @@ -20,6 +20,6 @@ category: construction-category-weapons description: Construct a landmine using a payload. icon: - sprite: Objects/Misc/uglymine.rsi - state: uglymine + sprite: Objects/Misc/landmine.rsi + state: landmine objectType: Item diff --git a/Resources/Textures/Objects/Misc/landmine.rsi/landmine-inactive.png b/Resources/Textures/Objects/Misc/landmine.rsi/landmine-inactive.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc68ec28b01e53c0e687bc445f9334f3b14138d GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQdZ z#WAE}PI96|g2AhXK=vN1ge#1T`6OoXUAS)ir{DL_qotpFOiCRxCS3m?T|Up4gPXhg z=Ogp^jW4Ia3Myz{xzfXEP2Be0jCO&y3=^K#FxeE?o%j?|>e%-D{XN4R#!ZQR3@aH| zs$LUJS3Tix@(quAla_WX%YLNXsWh@X#d%(S;xZ}Xk~ zEisgN((f-1xnp!gWj{z|81Pu!mJ+ sIc@SAh9aE>yO>w-y2-*kb3m4X;rRNHmFilOpfF(YboFyt=akR{0NSZ{=>Px# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/landmine.rsi/landmine.png b/Resources/Textures/Objects/Misc/landmine.rsi/landmine.png new file mode 100644 index 0000000000000000000000000000000000000000..1a95e1c37381f93e669632760d0511bb87ead813 GIT binary patch literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Vn- zPZ!6KiaBp*?e$`I6lp!*q|hO#+N9CZE0wz_Q%A?;sF$M00rwBAIkoKZ2iygkST=Iq z>R4;v+j)btvz}AP<@Ai1JDhnK%gu|G5ATgP-h6ZRoW1g=Cp`MrXsN_-MvyU~kAtDu zg<*y=(*YSlfv4WwCqwpLer~=!T&}9&?4JOpGNajFf43Vw`nY4Coc6RYzvj#^;5W0j z?OXgtv$NydpYx})_wwoJyPf0LacJe|<)4*(^-o?B%hN1T_1?Yuj#pPi-4?p_IrQ`G zV8cCEvvy>>spU-ktURA_)kEjMY!%CX#x0VvyO!UOKC9m;gK_Dl#W%y?a;rtlenZ3cWBk9@tkWr7^YL(W zcCO=8`3Q%H>mDT5t@{@~m+Si0X$w#Bm$I=`a&$e@{Ol~>G==w{`@TP-Y;X@VJnLXE zaA#@23=8$=%sH2?)*QH38MmH2Te@oLJpKg=pK2Pi>a>Nk<5E7mF-~t9; z>eXWTJ3Lk#yZ8IrKEq|j=kuSri+6ie@Y$$JF&LZ=O}=Z%o}Ig%|D#s?YZitDA^*zi zLMC>!+s0|Z_yw_zwPO`gnsjwKQ369!LLKbLh*2~7ZapJN&T diff --git a/Resources/Textures/Objects/Misc/uglymine.rsi/uglymine.png b/Resources/Textures/Objects/Misc/uglymine.rsi/uglymine.png deleted file mode 100644 index 52da78b13b58b5e691d7b33d9fe33369664ce6cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmVP>*7l7tjeCAG-@8~<-E&}Ujv^uwF2 Date: Sat, 14 Oct 2023 08:11:50 +0100 Subject: [PATCH 086/245] add igniter (#20962) Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../IgniteOnTriggerComponent.cs | 30 ++++++++++ .../IgnitionSource/IgniteOnTriggerSystem.cs | 55 ++++++++++++++++++ .../IgnitionSource/IgnitionSourceSystem.cs | 12 +++- .../VendingMachines/Inventories/robotics.yml | 1 + .../VendingMachines/Inventories/vendomat.yml | 3 +- .../Objects/Devices/Electronics/igniter.yml | 25 ++++++++ .../Entities/Structures/Machines/lathe.yml | 1 + .../Prototypes/Recipes/Lathes/devices.yml | 9 +++ Resources/Prototypes/Research/arsenal.yml | 1 + Resources/Prototypes/tags.yml | 3 + .../Objects/Devices/igniter.rsi/icon.png | Bin 0 -> 389 bytes .../Objects/Devices/igniter.rsi/meta.json | 14 +++++ 12 files changed, 150 insertions(+), 4 deletions(-) create mode 100644 Content.Server/IgnitionSource/IgniteOnTriggerComponent.cs create mode 100644 Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs create mode 100644 Resources/Prototypes/Entities/Objects/Devices/Electronics/igniter.yml create mode 100644 Resources/Textures/Objects/Devices/igniter.rsi/icon.png create mode 100644 Resources/Textures/Objects/Devices/igniter.rsi/meta.json diff --git a/Content.Server/IgnitionSource/IgniteOnTriggerComponent.cs b/Content.Server/IgnitionSource/IgniteOnTriggerComponent.cs new file mode 100644 index 00000000000000..2037b2ea492c32 --- /dev/null +++ b/Content.Server/IgnitionSource/IgniteOnTriggerComponent.cs @@ -0,0 +1,30 @@ +using Robust.Shared.Audio; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Server.IgnitionSource; + +/// +/// Ignites for a certain length of time when triggered. +/// Requires along with triggering components. +/// +[RegisterComponent, Access(typeof(IgniteOnTriggerSystem))] +public sealed partial class IgniteOnTriggerComponent : Component +{ + /// + /// Once ignited, the time it will unignite at. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] + public TimeSpan IgnitedUntil = TimeSpan.Zero; + + /// + /// How long the ignition source is active for after triggering. + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public TimeSpan IgnitedTime = TimeSpan.FromSeconds(0.5); + + /// + /// Sound to play when igniting. + /// + [DataField] + public SoundSpecifier IgniteSound = new SoundCollectionSpecifier("WelderOn"); +} diff --git a/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs b/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs new file mode 100644 index 00000000000000..1e4258869963b0 --- /dev/null +++ b/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs @@ -0,0 +1,55 @@ +using Content.Server.Explosion.EntitySystems; +using Content.Shared.Timing; +using Robust.Shared.Audio; +using Robust.Shared.Timing; + +namespace Content.Server.IgnitionSource; + +/// +/// Handles igniting when triggered and stopping ignition after the delay. +/// +public sealed class IgniteOnTriggerSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IgnitionSourceSystem _source = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly UseDelaySystem _useDelay = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTrigger); + } + + public override void Update(float deltaTime) + { + base.Update(deltaTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var source)) + { + if (!source.Ignited) + continue; + + if (_timing.CurTime < comp.IgnitedUntil) + continue; + + _source.SetIgnited(uid, false, source); + } + } + + private void OnTrigger(EntityUid uid, IgniteOnTriggerComponent comp, TriggerEvent args) + { + // prevent spamming sound and ignition + TryComp(uid, out var delay); + if (_useDelay.ActiveDelay(uid, delay)) + return; + + _source.SetIgnited(uid); + _audio.PlayPvs(comp.IgniteSound, uid); + + _useDelay.BeginDelay(uid, delay); + comp.IgnitedUntil = _timing.CurTime + comp.IgnitedTime; + } +} diff --git a/Content.Server/IgnitionSource/IgnitionSourceSystem.cs b/Content.Server/IgnitionSource/IgnitionSourceSystem.cs index 25a625180d0ff6..6984dbf56bcd46 100644 --- a/Content.Server/IgnitionSource/IgnitionSourceSystem.cs +++ b/Content.Server/IgnitionSource/IgnitionSourceSystem.cs @@ -23,12 +23,18 @@ public override void Initialize() private void OnIsHot(EntityUid uid, IgnitionSourceComponent component, IsHotEvent args) { - SetIgnited(uid,component,args.IsHot); + SetIgnited(uid, args.IsHot, component); } - private void SetIgnited(EntityUid uid, IgnitionSourceComponent component, bool newState) + /// + /// Simply sets the ignited field to the ignited param. + /// + public void SetIgnited(EntityUid uid, bool ignited = true, IgnitionSourceComponent? comp = null) { - component.Ignited = newState; + if (!Resolve(uid, ref comp)) + return; + + comp.Ignited = ignited; } public override void Update(float frameTime) diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/robotics.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/robotics.yml index 94e46d371a43c5..06a7398a23c6b5 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/robotics.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/robotics.yml @@ -5,6 +5,7 @@ Flash: 4 ProximitySensor: 3 RemoteSignaller: 3 + Igniter: 3 # its more ordnance but yeah HandheldHealthAnalyzer: 3 Scalpel: 2 SawElectric: 2 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/vendomat.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/vendomat.yml index 2ef1ad62fe65fc..da7e30fd763aaf 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/vendomat.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/vendomat.yml @@ -2,10 +2,11 @@ id: VendomatInventory startingInventory: RemoteSignaller: 1 + Igniter: 2 Wirecutter: 1 CableApcStack: 2 FlashlightLantern: 2 PowerCellSmallPrinted: 3 MatterBinStockPart: 4 CapacitorStockPart: 4 - MicroManipulatorStockPart: 4 \ No newline at end of file + MicroManipulatorStockPart: 4 diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/igniter.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/igniter.yml new file mode 100644 index 00000000000000..24843f608a74c8 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/igniter.yml @@ -0,0 +1,25 @@ +- type: entity + parent: BaseItem + id: Igniter + name: igniter + description: Creates a spark when activated by a signal. + components: + - type: Sprite + sprite: Objects/Devices/igniter.rsi + state: icon + - type: IgnitionSource + temperature: 800 + - type: IgniteOnTrigger + - type: TriggerOnSignal + - type: DeviceNetwork + deviceNetId: Wireless + receiveFrequencyId: BasicDevice + - type: WirelessNetworkConnection + range: 200 + - type: DeviceLinkSink + ports: + - Trigger + - type: UseDelay # prevent sound spam + - type: Tag + tags: + - Igniter diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index b1ea5f9e3d1da4..045ee40556fe12 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -243,6 +243,7 @@ - Signaller - SignalTrigger - VoiceTrigger + - Igniter - PowerCellMedium - PowerCellHigh - WeaponPistolCHIMP diff --git a/Resources/Prototypes/Recipes/Lathes/devices.yml b/Resources/Prototypes/Recipes/Lathes/devices.yml index ed73dc1b644c7c..01178b386c39fa 100644 --- a/Resources/Prototypes/Recipes/Lathes/devices.yml +++ b/Resources/Prototypes/Recipes/Lathes/devices.yml @@ -22,6 +22,15 @@ Steel: 300 Plastic: 200 +- type: latheRecipe + id: Igniter + result: Igniter + completetime: 2 + materials: + Steel: 300 + Plastic: 100 + Glass: 100 + - type: latheRecipe id: ChemicalPayload result: ChemicalPayload diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index cfd0faecd3c774..75107a1b5e9c7c 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -51,6 +51,7 @@ - TimerTrigger - FlashPayload - ExplosivePayload + - Igniter - type: technology id: WeaponizedLaserManipulation diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index ccd042dd002bf6..d7397d483c0899 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -599,6 +599,9 @@ - type: Tag id: Hotsauce +- type: Tag + id: Igniter + - type: Tag #Drop this innate tool instead of deleting it. id: InnateDontDelete diff --git a/Resources/Textures/Objects/Devices/igniter.rsi/icon.png b/Resources/Textures/Objects/Devices/igniter.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4074df008790dbf6a2437f6eb65cb6275650355a GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq~K7 z)5S5QVoq|RM1sMqhCp_nT=o+uPyVg{@(~6rlP5E#7;*%^;^30b6x-HJhfU=7t-a)6Yxr$=UpnU)C1mE>Oa7 zqCLRf;LiSf`JRa~Z0XH13zjWoOPchAqlu3})xy=)b;tR_#>MXaMt}bOo!uDX5F*0z zX->ikGa=T^{P%yIcwph#lvsa{n=RV3Zim#<#XdYw7$ylRo+)bc=82GX3}#n|K6in| zhrP5bq>$z1Q-%|tx&x|um6(?{WUx2XaDG~=eBqL@xVZ6*7soHDb2;41{wvPiHu<^2 z&V(|djyW7h)CB%n&e&!9K*#HA5ktf$LnhvT{d4|rWQ_QGz(Gkti%VneM~yND-GeKb h-DJUG)MLfK@Kt?6{_Oe*Nx*Pr@O1TaS?83{1OVL!lga=9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Devices/igniter.rsi/meta.json b/Resources/Textures/Objects/Devices/igniter.rsi/meta.json new file mode 100644 index 00000000000000..81a3a32786742f --- /dev/null +++ b/Resources/Textures/Objects/Devices/igniter.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/9a401d19045574f3ea7f2cf3feebf65989903ccc/icons/obj/assemblies/new_assemblies.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + } + ] +} From 65f5703731e1d46328acf6080cfdf74df57d76c9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 14 Oct 2023 03:12:57 -0400 Subject: [PATCH 087/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3e5f72dae35e53..f6513b06f6765e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Whisper - changes: - - {message: 'Added the SecHud to lockers, sec vendor, secfab.', type: Add} - - {message: Security will now receive the correct glasses box with their security - supplies from cargo., type: Fix} - id: 4503 - time: '2023-08-10T06:04:43.0000000+00:00' - author: emogarbage changes: - {message: Re-sprited grappling gun per artist request., type: Tweak} @@ -2951,3 +2944,9 @@ Entries: for the AME to overload.', type: Tweak} id: 5002 time: '2023-10-13T23:42:46.0000000+00:00' +- author: deltanedas + changes: + - {message: 'Added the igniter for sparking flames, can be found in the vendomat + and robotics vendor or produced by science.', type: Add} + id: 5003 + time: '2023-10-14T07:11:50.0000000+00:00' From 5ecd5f752179fe664a45bb81534f3423f013235a Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sat, 14 Oct 2023 03:15:20 -0400 Subject: [PATCH 088/245] Fix hostile simplemob rotation (#20900) --- Content.Client/CombatMode/CombatModeSystem.cs | 6 ++++++ Content.Server/CombatMode/CombatModeSystem.cs | 5 +++++ Content.Shared/CombatMode/SharedCombatModeSystem.cs | 10 ++++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Content.Client/CombatMode/CombatModeSystem.cs b/Content.Client/CombatMode/CombatModeSystem.cs index 69f149c310a95b..34ae0b1338b50d 100644 --- a/Content.Client/CombatMode/CombatModeSystem.cs +++ b/Content.Client/CombatMode/CombatModeSystem.cs @@ -1,4 +1,5 @@ using Content.Client.Hands.Systems; +using Content.Client.NPC.HTN; using Content.Shared.CCVar; using Content.Shared.CombatMode; using Robust.Client.Graphics; @@ -59,6 +60,11 @@ 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.LocalPlayer?.ControlledEntity || !Timing.IsFirstTimePredicted) diff --git a/Content.Server/CombatMode/CombatModeSystem.cs b/Content.Server/CombatMode/CombatModeSystem.cs index 1c1df817e68ca6..e04463c534dc89 100644 --- a/Content.Server/CombatMode/CombatModeSystem.cs +++ b/Content.Server/CombatMode/CombatModeSystem.cs @@ -1,7 +1,12 @@ +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); + } } diff --git a/Content.Shared/CombatMode/SharedCombatModeSystem.cs b/Content.Shared/CombatMode/SharedCombatModeSystem.cs index 5fe763370fdb0c..60d1362bb0bd9d 100644 --- a/Content.Shared/CombatMode/SharedCombatModeSystem.cs +++ b/Content.Shared/CombatMode/SharedCombatModeSystem.cs @@ -82,7 +82,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) + if (!component.ToggleMouseRotator || IsNpc(entity)) return; SetMouseRotatorComponents(entity, value); @@ -101,6 +101,12 @@ 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 { } +public sealed partial class ToggleCombatActionEvent : InstantActionEvent +{ + +} From 3a2482420feeca0da1f7955b733c5091ea3fd61b Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 14 Oct 2023 01:55:40 -0700 Subject: [PATCH 089/245] Show total playtime in player list and AHelp window (#20980) --- .../Administration/UI/Bwoink/BwoinkWindow.xaml.cs | 5 +++++ .../UI/Tabs/PlayerTab/PlayerTab.xaml.cs | 4 +++- .../UI/Tabs/PlayerTab/PlayerTabEntry.xaml | 4 ++++ .../UI/Tabs/PlayerTab/PlayerTabEntry.xaml.cs | 3 ++- .../UI/Tabs/PlayerTab/PlayerTabHeader.xaml | 6 ++++++ Content.Server/Administration/Systems/AdminSystem.cs | 12 +++++++++++- Content.Shared/Administration/PlayerInfo.cs | 9 ++++++++- Resources/Changelog/Admin.yml | 5 +++++ .../en-US/administration/ui/tabs/player-tab.ftl | 2 ++ Resources/Locale/en-US/generic.ftl | 2 ++ 10 files changed, 48 insertions(+), 4 deletions(-) diff --git a/Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs b/Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs index 984d8c5b1a8d11..2562da3fa77573 100644 --- a/Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs +++ b/Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs @@ -19,6 +19,11 @@ public BwoinkWindow() if (sel is not null) { Title = $"{sel.CharacterName} / {sel.Username}"; + + if (sel.OverallPlaytime != null) + { + Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString()}"; + } } }; diff --git a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs index 29f70057544c03..ad8e4392c2ab86 100644 --- a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs @@ -120,9 +120,11 @@ private void RefreshPlayerList(IReadOnlyList players) player.StartingJob, player.Antag ? "YES" : "NO", new StyleBoxFlat(useAltColor ? _altColor : _defaultColor), - player.Connected); + player.Connected, + player.PlaytimeString()); entry.PlayerEntity = player.NetEntity; entry.OnPressed += args => OnEntryPressed?.Invoke(args); + entry.ToolTip = Loc.GetString("player-tab-entry-tooltip"); PlayerList.AddChild(entry); useAltColor ^= true; diff --git a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml index 93482c294c4625..883681a28a954d 100644 --- a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml +++ b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml @@ -24,5 +24,9 @@ SizeFlagsStretchRatio="2" HorizontalExpand="True" ClipText="True"/> + private readonly Dictionary _unreadMessages = new(); - public readonly List<(GameTick, ChatMessage)> History = new(); + // TODO add a cap for this for non-replays + public readonly List<(GameTick Tick, ChatMessage Msg)> History = new(); // Maintains which channels a client should be able to filter (for showing in the chatbox) // and select (for attempting to send on). @@ -166,6 +165,7 @@ public override void Initialize() _player.LocalPlayerChanged += OnLocalPlayerChanged; _state.OnStateChanged += StateChanged; _net.RegisterNetMessage(OnChatMessage); + _net.RegisterNetMessage(OnDeleteChatMessagesBy); SubscribeNetworkEvent(OnDamageForceSay); _speechBubbleRoot = new LayoutContainer(); @@ -867,6 +867,16 @@ public void ProcessChatMessage(ChatMessage msg, bool speechBubble = true) } } + public void OnDeleteChatMessagesBy(MsgDeleteChatMessagesBy msg) + { + // This will delete messages from an entity even if different players were the author. + // Usages of the erase admin verb should be rare enough that this does not matter. + // Otherwise the client would need to know that one entity has multiple author players, + // or the server would need to track when and which entities a player sent messages as. + History.RemoveAll(h => h.Msg.SenderKey == msg.Key || msg.Entities.Contains(h.Msg.SenderEntity)); + Repopulate(); + } + public void RegisterChat(ChatBox chat) { _chats.Add(chat); diff --git a/Content.Client/UserInterface/Systems/Chat/Widgets/ChatBox.xaml.cs b/Content.Client/UserInterface/Systems/Chat/Widgets/ChatBox.xaml.cs index 09647bb5832a04..56c0c286348230 100644 --- a/Content.Client/UserInterface/Systems/Chat/Widgets/ChatBox.xaml.cs +++ b/Content.Client/UserInterface/Systems/Chat/Widgets/ChatBox.xaml.cs @@ -1,5 +1,3 @@ -using Content.Client.Chat; -using Content.Client.Chat.TypingIndicator; using Content.Client.UserInterface.Systems.Chat.Controls; using Content.Shared.Chat; using Content.Shared.Input; @@ -54,14 +52,12 @@ private void OnMessageAdded(ChatMessage msg) return; } - if (msg is { Read: false, AudioPath: { } }) + if (msg is { Read: false, AudioPath: not null }) SoundSystem.Play(msg.AudioPath, Filter.Local(), new AudioParams().WithVolume(msg.AudioVolume)); msg.Read = true; - var color = msg.MessageColorOverride != null - ? msg.MessageColorOverride.Value - : msg.Channel.TextColor(); + var color = msg.MessageColorOverride ?? msg.Channel.TextColor(); AddLine(msg.WrappedMessage, color); } diff --git a/Content.Server/Administration/BanPanelEui.cs b/Content.Server/Administration/BanPanelEui.cs index f4a1a308d0b699..2e6dfab18adce8 100644 --- a/Content.Server/Administration/BanPanelEui.cs +++ b/Content.Server/Administration/BanPanelEui.cs @@ -2,22 +2,29 @@ using System.Net; using System.Net.Sockets; using Content.Server.Administration.Managers; +using Content.Server.Administration.Systems; using Content.Server.Chat.Managers; using Content.Server.EUI; using Content.Shared.Administration; using Content.Shared.Database; using Content.Shared.Eui; +using Robust.Server.Player; using Robust.Shared.Network; namespace Content.Server.Administration; -public sealed class BanPanelEui : BaseEui +public sealed class BanPanelEui : BaseEui, IPostInjectInit { [Dependency] private readonly IBanManager _banManager = default!; + [Dependency] private readonly IEntityManager _entities = default!; + [Dependency] private readonly ILogManager _log = default!; [Dependency] private readonly IPlayerLocator _playerLocator = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly IAdminManager _admins = default!; + private ISawmill _sawmill = default!; + private NetUserId? PlayerId { get; set; } private string PlayerName { get; set; } = string.Empty; private IPAddress? LastAddress { get; set; } @@ -41,7 +48,7 @@ public override void HandleMessage(EuiMessageBase msg) switch (msg) { case BanPanelEuiStateMsg.CreateBanRequest r: - BanPlayer(r.Player, r.IpAddress, r.UseLastIp, r.Hwid?.ToImmutableArray(), r.UseLastHwid, r.Minutes, r.Severity, r.Reason, r.Roles); + BanPlayer(r.Player, r.IpAddress, r.UseLastIp, r.Hwid?.ToImmutableArray(), r.UseLastHwid, r.Minutes, r.Severity, r.Reason, r.Roles, r.Erase); break; case BanPanelEuiStateMsg.GetPlayerInfoRequest r: ChangePlayer(r.PlayerUsername); @@ -49,11 +56,11 @@ public override void HandleMessage(EuiMessageBase msg) } } - private async void BanPlayer(string? target, string? ipAddressString, bool useLastIp, ImmutableArray? hwid, bool useLastHwid, uint minutes, NoteSeverity severity, string reason, IReadOnlyCollection? roles) + private async void BanPlayer(string? target, string? ipAddressString, bool useLastIp, ImmutableArray? hwid, bool useLastHwid, uint minutes, NoteSeverity severity, string reason, IReadOnlyCollection? roles, bool erase) { if (!_admins.HasAdminFlag(Player, AdminFlags.Ban)) { - Logger.WarningS("admin.bans_eui", $"{Player.Name} ({Player.UserId}) tried to create a ban with no ban flag"); + _sawmill.Warning($"{Player.Name} ({Player.UserId}) tried to create a ban with no ban flag"); return; } if (target == null && string.IsNullOrWhiteSpace(ipAddressString) && hwid == null) @@ -120,7 +127,23 @@ private async void BanPlayer(string? target, string? ipAddressString, bool useLa return; } + if (erase && + targetUid != null && + _playerManager.TryGetSessionById(targetUid.Value, out var targetPlayer)) + { + try + { + if (_entities.TrySystem(out AdminSystem? adminSystem)) + adminSystem.Erase(targetPlayer); + } + catch (Exception e) + { + _sawmill.Error($"Error while erasing banned player:\n{e}"); + } + } + _banManager.CreateServerBan(targetUid, target, Player.UserId, addressRange, targetHWid, minutes, severity, reason); + Close(); } @@ -160,4 +183,9 @@ private void OnPermsChanged(AdminPermsChangedEventArgs args) StateDirty(); } + + public void PostInject() + { + _sawmill = _log.GetSawmill("admin.bans_eui"); + } } diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index e1d769b1b2471c..8a2b6d5119417e 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -1,17 +1,28 @@ using System.Linq; using Content.Server.Administration.Managers; using Content.Server.Chat.Managers; +using Content.Server.Forensics; +using Content.Server.GameTicking; +using Content.Server.Hands.Systems; using Content.Server.IdentityManagement; using Content.Server.Mind; using Content.Server.Players.PlayTimeTracking; +using Content.Server.Popups; +using Content.Server.StationRecords.Systems; using Content.Shared.Administration; using Content.Shared.Administration.Events; using Content.Shared.CCVar; using Content.Shared.GameTicking; +using Content.Shared.Hands.Components; using Content.Shared.IdentityManagement; +using Content.Shared.Inventory; +using Content.Shared.PDA; using Content.Shared.Players.PlayTimeTracking; +using Content.Shared.Popups; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; +using Content.Shared.StationRecords; +using Content.Shared.Throwing; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Configuration; @@ -27,10 +38,17 @@ public sealed class AdminSystem : EntitySystem [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly IConfigurationManager _config = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; - [Dependency] private readonly PlayTimeTrackingManager _playTime = default!; + [Dependency] private readonly HandsSystem _hands = default!; [Dependency] private readonly SharedJobSystem _jobs = default!; + [Dependency] private readonly InventorySystem _inventory = default!; [Dependency] private readonly MindSystem _minds = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly PhysicsSystem _physics = default!; + [Dependency] private readonly PlayTimeTrackingManager _playTime = default!; [Dependency] private readonly SharedRoleSystem _role = default!; + [Dependency] private readonly GameTicker _gameTicker = default!; + [Dependency] private readonly StationRecordsSystem _stationRecords = default!; + [Dependency] private readonly TransformSystem _transform = default!; private readonly Dictionary _playerList = new(); @@ -299,5 +317,76 @@ private void SendPanicBunkerStatusAll() RaiseNetworkEvent(ev, admin); } } + + /// + /// Erases a player from the round. + /// This removes them and any trace of them from the round, deleting their + /// chat messages and showing a popup to other players. + /// Their items are dropped on the ground. + /// + public void Erase(IPlayerSession player) + { + var entity = player.AttachedEntity; + _chat.DeleteMessagesBy(player); + + if (entity != null && !TerminatingOrDeleted(entity.Value)) + { + if (TryComp(entity.Value, out TransformComponent? transform)) + { + var coordinates = _transform.GetMoverCoordinates(entity.Value, transform); + var name = Identity.Entity(entity.Value, EntityManager); + _popup.PopupCoordinates(Loc.GetString("admin-erase-popup", ("user", name)), coordinates, PopupType.LargeCaution); + } + + foreach (var item in _inventory.GetHandOrInventoryEntities(entity.Value)) + { + if (TryComp(item, out PdaComponent? pda) && + TryComp(pda.ContainedId, out StationRecordKeyStorageComponent? keyStorage) && + keyStorage.Key is { } key && + _stationRecords.TryGetRecord(key.OriginStation, key, out GeneralStationRecord? record)) + { + if (TryComp(entity, out DnaComponent? dna) && + dna.DNA != record.DNA) + { + continue; + } + + if (TryComp(entity, out FingerprintComponent? fingerPrint) && + fingerPrint.Fingerprint != record.Fingerprint) + { + continue; + } + + _stationRecords.RemoveRecord(key.OriginStation, key); + Del(item); + } + } + + if (TryComp(entity.Value, out InventoryComponent? inventory) && + _inventory.TryGetSlots(entity.Value, out var slots, inventory)) + { + foreach (var slot in slots) + { + if (_inventory.TryUnequip(entity.Value, entity.Value, slot.Name, out var item, true, true)) + { + _physics.ApplyAngularImpulse(item.Value, ThrowingSystem.ThrowAngularImpulse); + } + } + } + + if (TryComp(entity.Value, out HandsComponent? hands)) + { + foreach (var hand in _hands.EnumerateHands(entity.Value, hands)) + { + _hands.TryDrop(entity.Value, hand, checkActionBlocker: false, doDropInteraction: false, handsComp: hands); + } + } + } + + _minds.WipeMind(player); + QueueDel(entity); + + _gameTicker.SpawnObserver(player); + } } } diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index 8b792b08926427..e493cea6a7b9f9 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -48,6 +48,7 @@ public sealed partial class AdminVerbSystem : EntitySystem [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly AdminSystem _adminSystem = default!; [Dependency] private readonly DisposalTubeSystem _disposalTubes = default!; [Dependency] private readonly EuiManager _euiManager = default!; [Dependency] private readonly GhostRoleSystem _ghostRoleSystem = default!; @@ -140,6 +141,20 @@ private void AddAdminVerbs(GetVerbsEvent args) }, Impact = LogImpact.Medium, }); + + // Erase + args.Verbs.Add(new Verb + { + Text = Loc.GetString("admin-verbs-erase"), + Category = VerbCategory.Admin, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/delete_transparent.svg.192dpi.png")), + Act = () => + { + _adminSystem.Erase(targetActor.PlayerSession); + }, + Impact = LogImpact.Extreme, + ConfirmationPopup = true + }); } // Admin Logs diff --git a/Content.Server/Chat/Managers/ChatManager.cs b/Content.Server/Chat/Managers/ChatManager.cs index aa055e44914f0b..88e143d24e37eb 100644 --- a/Content.Server/Chat/Managers/ChatManager.cs +++ b/Content.Server/Chat/Managers/ChatManager.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Runtime.InteropServices; using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Server.Administration.Systems; @@ -50,9 +51,13 @@ internal sealed class ChatManager : IChatManager private bool _oocEnabled = true; private bool _adminOocEnabled = true; + public Dictionary SenderKeys { get; } = new(); + public Dictionary> SenderEntities { get; } = new(); + public void Initialize() { _netManager.RegisterNetMessage(); + _netManager.RegisterNetMessage(); _configurationManager.OnValueChanged(CCVars.OocEnabled, OnOocEnabledChanged, true); _configurationManager.OnValueChanged(CCVars.AdminOocEnabled, OnAdminOocEnabledChanged, true); @@ -74,6 +79,15 @@ private void OnAdminOocEnabledChanged(bool val) DispatchServerAnnouncement(Loc.GetString(val ? "chat-manager-admin-ooc-chat-enabled-message" : "chat-manager-admin-ooc-chat-disabled-message")); } + public void DeleteMessagesBy(IPlayerSession player) + { + var key = SenderKeys.GetValueOrDefault(player); + var entities = SenderEntities.GetValueOrDefault(player) ?? new HashSet(); + var msg = new MsgDeleteChatMessagesBy { Key = key, Entities = entities }; + + _netManager.ServerSendToAll(msg); + } + #region Server Announcements public void DispatchServerAnnouncement(string message, Color? colorOverride = null) @@ -202,8 +216,12 @@ private void SendOOC(IPlayerSession player, string message) wrappedMessage = Loc.GetString("chat-manager-send-ooc-patron-wrap-message", ("patronColor", patronColor),("playerName", player.Name), ("message", FormattedMessage.EscapeText(message))); } + ref var key = ref CollectionsMarshal.GetValueRefOrAddDefault(SenderKeys, player, out var exists); + if (!exists) + key = SenderKeys.Count; + //TODO: player.Name color, this will need to change the structure of the MsgChatMessage - ChatMessageToAll(ChatChannel.OOC, message, wrappedMessage, EntityUid.Invalid, hideChat: false, recordReplay: true, colorOverride); + ChatMessageToAll(ChatChannel.OOC, message, wrappedMessage, EntityUid.Invalid, hideChat: false, recordReplay: true, colorOverride: colorOverride, senderKey: key); _mommiLink.SendOOCMessage(player.Name, message); _adminLogger.Add(LogType.Chat, LogImpact.Low, $"OOC from {player:Player}: {message}"); } @@ -220,6 +238,11 @@ private void SendAdminChat(IPlayerSession player, string message) var wrappedMessage = Loc.GetString("chat-manager-send-admin-chat-wrap-message", ("adminChannelName", Loc.GetString("chat-manager-admin-channel-name")), ("playerName", player.Name), ("message", FormattedMessage.EscapeText(message))); + + ref var key = ref CollectionsMarshal.GetValueRefOrAddDefault(SenderKeys, player, out var exists); + if (!exists) + key = SenderKeys.Count; + foreach (var client in clients) { var isSource = client != player.ConnectedClient; @@ -230,7 +253,7 @@ private void SendAdminChat(IPlayerSession player, string message) false, client, audioPath: isSource ? _netConfigManager.GetClientCVar(client, CCVars.AdminChatSoundPath) : default, - audioVolume: isSource ? _netConfigManager.GetClientCVar(client, CCVars.AdminChatSoundVolume) : default); + audioVolume: isSource ? _netConfigManager.GetClientCVar(client, CCVars.AdminChatSoundVolume) : default, senderKey: key); } _adminLogger.Add(LogType.Chat, $"Admin chat from {player:Player}: {message}"); @@ -240,9 +263,9 @@ private void SendAdminChat(IPlayerSession player, string message) #region Utility - public void ChatMessageToOne(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, INetChannel client, Color? colorOverride = null, bool recordReplay = false, string? audioPath = null, float audioVolume = 0) + public void ChatMessageToOne(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, INetChannel client, Color? colorOverride = null, bool recordReplay = false, string? audioPath = null, float audioVolume = 0, int? senderKey = null) { - var msg = new ChatMessage(channel, message, wrappedMessage, _entityManager.GetNetEntity(source), hideChat, colorOverride, audioPath, audioVolume); + var msg = new ChatMessage(channel, message, wrappedMessage, _entityManager.GetNetEntity(source), senderKey, hideChat, colorOverride, audioPath, audioVolume); _netManager.ServerSendMessage(new MsgChatMessage() { Message = msg }, client); if (!recordReplay) @@ -260,7 +283,7 @@ public void ChatMessageToMany(ChatChannel channel, string message, string wrappe public void ChatMessageToMany(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, List clients, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0) { - var msg = new ChatMessage(channel, message, wrappedMessage, _entityManager.GetNetEntity(source), hideChat, colorOverride, audioPath, audioVolume); + var msg = new ChatMessage(channel, message, wrappedMessage, _entityManager.GetNetEntity(source), null, hideChat, colorOverride, audioPath, audioVolume); _netManager.ServerSendToMany(new MsgChatMessage() { Message = msg }, clients); if (!recordReplay) @@ -288,9 +311,9 @@ public void ChatMessageToManyFiltered(Filter filter, ChatChannel channel, string ChatMessageToMany(channel, message, wrappedMessage, source, hideChat, recordReplay, clients, colorOverride, audioPath, audioVolume); } - public void ChatMessageToAll(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0) + public void ChatMessageToAll(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0, int? senderKey = null) { - var msg = new ChatMessage(channel, message, wrappedMessage, _entityManager.GetNetEntity(source), hideChat, colorOverride, audioPath, audioVolume); + var msg = new ChatMessage(channel, message, wrappedMessage, _entityManager.GetNetEntity(source), senderKey, hideChat, colorOverride, audioPath, audioVolume); _netManager.ServerSendToAll(new MsgChatMessage() { Message = msg }); if (!recordReplay) diff --git a/Content.Server/Chat/Managers/IChatManager.cs b/Content.Server/Chat/Managers/IChatManager.cs index a398be74fd263c..10103f011df2f7 100644 --- a/Content.Server/Chat/Managers/IChatManager.cs +++ b/Content.Server/Chat/Managers/IChatManager.cs @@ -8,6 +8,17 @@ namespace Content.Server.Chat.Managers { public interface IChatManager { + /// + /// Keys identifying messages sent by a specific player, used when sending + /// + /// + Dictionary SenderKeys { get; } + + /// + /// Tracks which entities a player was attached to while sending messages. + /// + Dictionary> SenderEntities { get; } + void Initialize(); /// @@ -27,15 +38,17 @@ public interface IChatManager void SendAdminAlert(EntityUid player, string message); void ChatMessageToOne(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, - INetChannel client, Color? colorOverride = null, bool recordReplay = false, string? audioPath = null, float audioVolume = 0); + INetChannel client, Color? colorOverride = null, bool recordReplay = false, string? audioPath = null, float audioVolume = 0, int? senderKey = null); void ChatMessageToMany(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, IEnumerable clients, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0); void ChatMessageToManyFiltered(Filter filter, ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, Color? colorOverride, string? audioPath = null, float audioVolume = 0); - void ChatMessageToAll(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0); + void ChatMessageToAll(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0, int? senderKey = null); bool MessageCharacterLimit(IPlayerSession player, string message); + + void DeleteMessagesBy(IPlayerSession player); } } diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index b8f4e116a45d6a..24e13bcde2830a 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -15,7 +15,6 @@ using Content.Shared.Ghost; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; -using Content.Shared.Inventory; using Content.Shared.Mobs.Systems; using Content.Shared.Radio; using Robust.Server.GameObjects; @@ -33,6 +32,7 @@ namespace Content.Server.Chat.Systems; +// TODO refactor whatever active warzone this class and chatmanager have become /// /// ChatSystem is responsible for in-simulation chat handling, such as whispering, speaking, emoting, etc. /// ChatSystem depends on ChatManager to actually send the messages. @@ -191,6 +191,9 @@ public void TrySendInGameICMessage( if (!CanSendInGame(message, shell, player)) return; + if (player != null) + _chatManager.SenderEntities.GetOrNew(player).Add(GetNetEntity(source)); + if (desiredType == InGameICChatType.Speak && message.StartsWith(LocalPrefix)) { // prevent radios and remove prefix. @@ -484,7 +487,7 @@ private void SendEntityWhisper( _chatManager.ChatMessageToOne(ChatChannel.Whisper, obfuscatedMessage, wrappedUnknownMessage, source, false, session.ConnectedClient); } - _replay.RecordServerMessage(new ChatMessage(ChatChannel.Whisper, message, wrappedMessage, GetNetEntity(source), MessageRangeHideChatForReplay(range))); + _replay.RecordServerMessage(new ChatMessage(ChatChannel.Whisper, message, wrappedMessage, GetNetEntity(source), null, MessageRangeHideChatForReplay(range))); var ev = new EntitySpokeEvent(source, message, channel, obfuscatedMessage); RaiseLocalEvent(source, ev, true); @@ -559,6 +562,8 @@ private void SendLOOC(EntityUid source, IPlayerSession player, string message, b ("entityName", name), ("message", FormattedMessage.EscapeText(message))); + _chatManager.SenderEntities.GetOrNew(player).Add(GetNetEntity(source)); + SendInVoiceRange(ChatChannel.LOOC, message, wrappedMessage, source, hideChat ? ChatTransmitRange.HideChat : ChatTransmitRange.Normal); _adminLogger.Add(LogType.Chat, LogImpact.Low, $"LOOC from {player:Player}: {message}"); } @@ -585,8 +590,9 @@ private void SendDeadChat(EntityUid source, IPlayerSession player, string messag _adminLogger.Add(LogType.Chat, LogImpact.Low, $"Dead chat from {player:Player}: {message}"); } - _chatManager.ChatMessageToMany(ChatChannel.Dead, message, wrappedMessage, source, hideChat, true, clients.ToList()); + _chatManager.SenderEntities.GetOrNew(player).Add(GetNetEntity(source)); + _chatManager.ChatMessageToMany(ChatChannel.Dead, message, wrappedMessage, source, hideChat, true, clients.ToList()); } #endregion @@ -651,7 +657,7 @@ private void SendInVoiceRange(ChatChannel channel, string message, string wrappe _chatManager.ChatMessageToOne(channel, message, wrappedMessage, source, entHideChat, session.ConnectedClient); } - _replay.RecordServerMessage(new ChatMessage(channel, message, wrappedMessage, GetNetEntity(source), MessageRangeHideChatForReplay(range))); + _replay.RecordServerMessage(new ChatMessage(channel, message, wrappedMessage, GetNetEntity(source), null, MessageRangeHideChatForReplay(range))); } /// @@ -893,4 +899,3 @@ public enum ChatTransmitRange : byte /// Ghosts can't hear or see it at all. Regular players can if in-range. NoGhosts } - diff --git a/Content.Server/CrewManifest/CrewManifestSystem.cs b/Content.Server/CrewManifest/CrewManifestSystem.cs index 9471c88c9eaa14..fa00648c555371 100644 --- a/Content.Server/CrewManifest/CrewManifestSystem.cs +++ b/Content.Server/CrewManifest/CrewManifestSystem.cs @@ -37,6 +37,7 @@ public override void Initialize() { SubscribeLocalEvent(AfterGeneralRecordCreated); SubscribeLocalEvent(OnRecordModified); + SubscribeLocalEvent(OnRecordRemoved); SubscribeLocalEvent(OnBoundUiClose); SubscribeLocalEvent(OpenEuiFromBui); SubscribeLocalEvent(OnRoundRestart); @@ -83,6 +84,12 @@ private void OnRecordModified(RecordModifiedEvent ev) UpdateEuis(ev.Key.OriginStation); } + private void OnRecordRemoved(RecordRemovedEvent ev) + { + BuildCrewManifest(ev.Key.OriginStation); + UpdateEuis(ev.Key.OriginStation); + } + private void OnBoundUiClose(EntityUid uid, CrewManifestViewerComponent component, BoundUIClosedEvent ev) { var owningStation = _stationSystem.GetOwningStation(uid); diff --git a/Content.Server/Radio/EntitySystems/RadioSystem.cs b/Content.Server/Radio/EntitySystems/RadioSystem.cs index c4f66a0cd9c232..4f9099d0af70fe 100644 --- a/Content.Server/Radio/EntitySystems/RadioSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioSystem.cs @@ -1,20 +1,18 @@ using Content.Server.Administration.Logs; using Content.Server.Chat.Systems; +using Content.Server.Power.Components; using Content.Server.Radio.Components; using Content.Server.VoiceMask; -using Content.Server.Popups; using Content.Shared.Chat; using Content.Shared.Database; using Content.Shared.Radio; +using Content.Shared.Radio.Components; using Robust.Server.GameObjects; +using Robust.Shared.Map; using Robust.Shared.Network; +using Robust.Shared.Random; using Robust.Shared.Replays; using Robust.Shared.Utility; -using Content.Shared.Popups; -using Robust.Shared.Map; -using Content.Shared.Radio.Components; -using Content.Server.Power.Components; -using Robust.Shared.Random; namespace Content.Server.Radio.EntitySystems; @@ -87,7 +85,8 @@ public void SendRadioMessage(EntityUid messageSource, string message, RadioChann ChatChannel.Radio, message, wrappedMessage, - NetEntity.Invalid); + NetEntity.Invalid, + null); var chatMsg = new MsgChatMessage { Message = chat }; var ev = new RadioReceiveEvent(message, messageSource, channel, chatMsg); diff --git a/Content.Server/StationRecords/Systems/GeneralStationRecordConsoleSystem.cs b/Content.Server/StationRecords/Systems/GeneralStationRecordConsoleSystem.cs index ea8eed84459017..f69caaa9a7e357 100644 --- a/Content.Server/StationRecords/Systems/GeneralStationRecordConsoleSystem.cs +++ b/Content.Server/StationRecords/Systems/GeneralStationRecordConsoleSystem.cs @@ -1,7 +1,7 @@ +using System.Linq; using Content.Server.Station.Systems; using Content.Shared.StationRecords; using Robust.Server.GameObjects; -using System.Linq; namespace Content.Server.StationRecords.Systems; @@ -18,6 +18,7 @@ public override void Initialize() SubscribeLocalEvent(OnFiltersChanged); SubscribeLocalEvent(UpdateUserInterface); SubscribeLocalEvent(UpdateUserInterface); + SubscribeLocalEvent(UpdateUserInterface); } private void UpdateUserInterface(EntityUid uid, GeneralStationRecordConsoleComponent component, T ev) diff --git a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs index c70e1d0d9a9f27..fd5094d5330a10 100644 --- a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs +++ b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; -using Content.Server.GameTicking; using Content.Server.Forensics; +using Content.Server.GameTicking; using Content.Shared.Inventory; using Content.Shared.PDA; using Content.Shared.Preferences; @@ -160,8 +160,13 @@ public bool RemoveRecord(EntityUid station, StationRecordKey key, StationRecords if (!Resolve(station, ref records)) return false; - RaiseLocalEvent(new RecordRemovedEvent(station, key)); - return records.Records.RemoveAllRecords(key); + if (records.Records.RemoveAllRecords(key)) + { + RaiseLocalEvent(new RecordRemovedEvent(station, key)); + return true; + } + + return false; } /// diff --git a/Content.Shared/Administration/BanPanelEuiState.cs b/Content.Shared/Administration/BanPanelEuiState.cs index 545c9c0071e148..dd10068e5da21c 100644 --- a/Content.Shared/Administration/BanPanelEuiState.cs +++ b/Content.Shared/Administration/BanPanelEuiState.cs @@ -1,8 +1,7 @@ -using System.Collections.Immutable; +using System.Net; using Content.Shared.Database; using Content.Shared.Eui; using Robust.Shared.Serialization; -using System.Net; namespace Content.Shared.Administration; @@ -33,8 +32,9 @@ public sealed class CreateBanRequest : EuiMessageBase public string[]? Roles { get; set; } public bool UseLastIp { get; set; } public bool UseLastHwid { get; set; } + public bool Erase { get; set; } - public CreateBanRequest(string? player, (IPAddress, int)? ipAddress, bool useLastIp, byte[]? hwid, bool useLastHwid, uint minutes, string reason, NoteSeverity severity, string[]? roles) + public CreateBanRequest(string? player, (IPAddress, int)? ipAddress, bool useLastIp, byte[]? hwid, bool useLastHwid, uint minutes, string reason, NoteSeverity severity, string[]? roles, bool erase) { Player = player; IpAddress = ipAddress == null ? null : $"{ipAddress.Value.Item1}/{ipAddress.Value.Item2}"; @@ -45,6 +45,7 @@ public CreateBanRequest(string? player, (IPAddress, int)? ipAddress, bool useLas Reason = reason; Severity = severity; Roles = roles; + Erase = erase; } } diff --git a/Content.Shared/Chat/MsgChatMessage.cs b/Content.Shared/Chat/MsgChatMessage.cs index 27ab203d6e8e1e..55a3a7342b7707 100644 --- a/Content.Shared/Chat/MsgChatMessage.cs +++ b/Content.Shared/Chat/MsgChatMessage.cs @@ -1,9 +1,9 @@ +using System.IO; using JetBrains.Annotations; using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; using Robust.Shared.Utility; -using System.IO; namespace Content.Shared.Chat { @@ -14,6 +14,14 @@ public sealed class ChatMessage public string Message; public string WrappedMessage; public NetEntity SenderEntity; + + /// + /// Identifier sent when is + /// if this was sent by a player to assign a key to the sender of this message. + /// This is unique per sender. + /// + public int? SenderKey; + public bool HideChat; public Color? MessageColorOverride; public string? AudioPath; @@ -22,12 +30,13 @@ public sealed class ChatMessage [NonSerialized] public bool Read; - public ChatMessage(ChatChannel channel, string message, string wrappedMessage, NetEntity source, bool hideChat = false, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0) + public ChatMessage(ChatChannel channel, string message, string wrappedMessage, NetEntity source, int? senderKey, bool hideChat = false, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0) { Channel = channel; Message = message; WrappedMessage = wrappedMessage; SenderEntity = source; + SenderKey = senderKey; HideChat = hideChat; MessageColorOverride = colorOverride; AudioPath = audioPath; diff --git a/Content.Shared/Chat/MsgDeleteChatMessagesBy.cs b/Content.Shared/Chat/MsgDeleteChatMessagesBy.cs new file mode 100644 index 00000000000000..55d27518d854ff --- /dev/null +++ b/Content.Shared/Chat/MsgDeleteChatMessagesBy.cs @@ -0,0 +1,37 @@ +using Lidgren.Network; +using Robust.Shared.Network; +using Robust.Shared.Serialization; + +namespace Content.Shared.Chat; + +public sealed class MsgDeleteChatMessagesBy : NetMessage +{ + public override MsgGroups MsgGroup => MsgGroups.Command; + + public int Key; + public HashSet Entities = default!; + + public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer) + { + Key = buffer.ReadInt32(); + + var entities = buffer.ReadInt32(); + Entities = new HashSet(entities); + + for (var i = 0; i < entities; i++) + { + Entities.Add(buffer.ReadNetEntity()); + } + } + + public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer) + { + buffer.Write(Key); + + buffer.Write(Entities.Count); + foreach (var ent in Entities) + { + buffer.Write(ent); + } + } +} diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 4a1905d110bfc1..93db39b973bd44 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -19,3 +19,8 @@ Entries: - {message: 'Added total playtime to the F7 player list and the AHelp window title.', type: Add} id: 3 time: '2023-10-14T08:55:00.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: 'Added admin Erase verb, add checkbox to erase from the ban panel.', type: Add} + id: 4 + time: '2023-10-14T09:00:00.0000000+00:00' diff --git a/Resources/Locale/en-US/administration/admin-verbs.ftl b/Resources/Locale/en-US/administration/admin-verbs.ftl index 6804171f7d2ffc..224ada4b639627 100644 --- a/Resources/Locale/en-US/administration/admin-verbs.ftl +++ b/Resources/Locale/en-US/administration/admin-verbs.ftl @@ -7,5 +7,6 @@ admin-verbs-teleport-to = Teleport To admin-verbs-teleport-here = Teleport Here admin-verbs-freeze = Freeze admin-verbs-unfreeze = Unfreeze +admin-verbs-erase = Erase toolshed-verb-mark = Mark toolshed-verb-mark-description = Places this entity into the $marked variable, a list of entities, replacing it's prior value. diff --git a/Resources/Locale/en-US/administration/ui/admin-erase.ftl b/Resources/Locale/en-US/administration/ui/admin-erase.ftl new file mode 100644 index 00000000000000..86b75196ac89d6 --- /dev/null +++ b/Resources/Locale/en-US/administration/ui/admin-erase.ftl @@ -0,0 +1 @@ +admin-erase-popup = {$user} disappears without a trace. You should keep playing as if they never existed. diff --git a/Resources/Locale/en-US/info/ban.ftl b/Resources/Locale/en-US/info/ban.ftl index f1e67c66cdfd0a..2804690fc5e8c4 100644 --- a/Resources/Locale/en-US/info/ban.ftl +++ b/Resources/Locale/en-US/info/ban.ftl @@ -76,6 +76,7 @@ ban-panel-years = Years ban-panel-permanent = Permanent ban-panel-ip-hwid-tooltip = Leave empty and check the checkbox below to use last connection's details ban-panel-severity = Severity: +ban-panel-erase = Erase chat messages and player from round # Ban string server-ban-string = {$admin} created a {$severity} severity server ban that expires {$expires} for [{$name}, {$ip}, {$hwid}], with reason: {$reason} From f02a54497dbf9b7df4e94315b4008ba5db40d385 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 14 Oct 2023 02:28:08 -0700 Subject: [PATCH 091/245] Make the panic bunker UI send cvar updates on focus exit, add erase verb tooltip message (#20987) --- .../PanicBunkerTab/PanicBunkerTab.xaml.cs | 43 ++++++++++++++----- .../Administration/Systems/AdminVerbSystem.cs | 1 + Resources/Changelog/Admin.yml | 7 +++ .../en-US/administration/admin-verbs.ftl | 3 ++ 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs index e9d3b95c5d8d97..f6212cd5ee1066 100644 --- a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs @@ -11,6 +11,9 @@ public sealed partial class PanicBunkerTab : Control { [Dependency] private readonly IConsoleHost _console = default!; + private string _minAccountAge; + private string _minOverallHours; + public PanicBunkerTab() { RobustXamlLoader.Load(this); @@ -18,21 +21,37 @@ public PanicBunkerTab() DisableAutomaticallyButton.ToolTip = Loc.GetString("admin-ui-panic-bunker-disable-automatically-tooltip"); - MinAccountAge.OnTextEntered += args => + MinAccountAge.OnTextEntered += args => SendMinAccountAge(args.Text); + MinAccountAge.OnFocusExit += args => SendMinAccountAge(args.Text); + _minAccountAge = MinAccountAge.Text; + + MinOverallHours.OnTextEntered += args => SendMinOverallHours(args.Text); + MinOverallHours.OnFocusExit += args => SendMinOverallHours(args.Text); + _minOverallHours = MinOverallHours.Text; + } + + private void SendMinAccountAge(string text) + { + if (string.IsNullOrWhiteSpace(text) || + text == _minAccountAge || + !int.TryParse(text, out var minutes)) { - if (string.IsNullOrWhiteSpace(args.Text) || !int.TryParse(args.Text, out var minutes)) - return; + return; + } - _console.ExecuteCommand($"panicbunker_min_account_age {minutes}"); - }; + _console.ExecuteCommand($"panicbunker_min_account_age {minutes}"); + } - MinOverallHours.OnTextEntered += args => + private void SendMinOverallHours(string text) + { + if (string.IsNullOrWhiteSpace(text) || + text == _minOverallHours || + !int.TryParse(text, out var hours)) { - if (string.IsNullOrWhiteSpace(args.Text) || !int.TryParse(args.Text, out var hours)) - return; + return; + } - _console.ExecuteCommand($"panicbunker_min_overall_hours {hours}"); - }; + _console.ExecuteCommand($"panicbunker_min_overall_hours {hours}"); } public void UpdateStatus(PanicBunkerStatus status) @@ -48,7 +67,11 @@ public void UpdateStatus(PanicBunkerStatus status) EnableAutomaticallyButton.Pressed = status.EnableWithoutAdmins; CountDeadminnedButton.Pressed = status.CountDeadminnedAdmins; ShowReasonButton.Pressed = status.ShowReason; + MinAccountAge.Text = status.MinAccountAgeHours.ToString(); + _minAccountAge = MinAccountAge.Text; + MinOverallHours.Text = status.MinOverallHours.ToString(); + _minOverallHours = MinOverallHours.Text; } } diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index e493cea6a7b9f9..4ed8e19f553f7a 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -146,6 +146,7 @@ private void AddAdminVerbs(GetVerbsEvent args) args.Verbs.Add(new Verb { Text = Loc.GetString("admin-verbs-erase"), + Message = Loc.GetString("admin-verbs-erase-description"), Category = VerbCategory.Admin, Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/delete_transparent.svg.192dpi.png")), Act = () => diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 93db39b973bd44..728859e3f426b4 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -24,3 +24,10 @@ Entries: - {message: 'Added admin Erase verb, add checkbox to erase from the ban panel.', type: Add} id: 4 time: '2023-10-14T09:00:00.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: 'Made the panic bunker UI also set the minimum account age/playtime + requirements when the two inputs lose focus, not just when pressing enter.', type: Tweak} + - {message: 'Added message tooltip to the erase verb.', type: Tweak} + id: 5 + time: '2023-10-14T09:21:00.0000000+00:00' diff --git a/Resources/Locale/en-US/administration/admin-verbs.ftl b/Resources/Locale/en-US/administration/admin-verbs.ftl index 224ada4b639627..03f92f7c420f01 100644 --- a/Resources/Locale/en-US/administration/admin-verbs.ftl +++ b/Resources/Locale/en-US/administration/admin-verbs.ftl @@ -8,5 +8,8 @@ admin-verbs-teleport-here = Teleport Here admin-verbs-freeze = Freeze admin-verbs-unfreeze = Unfreeze admin-verbs-erase = Erase +admin-verbs-erase-description = Removes the player from the round and crew manifest and deletes their chat messages. + Their items are dropped on the ground. + Players are shown a popup indicating them to play as if they never existed. toolshed-verb-mark = Mark toolshed-verb-mark-description = Places this entity into the $marked variable, a list of entities, replacing it's prior value. From d59dd0de36128fe92b839003bdbabc1177ebc7a3 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sat, 14 Oct 2023 10:36:10 +0100 Subject: [PATCH 092/245] saltern update (#20986) Co-authored-by: deltanedas <@deltanedas:kde.org> --- Resources/Maps/saltern.yml | 3619 ++---------------------------------- 1 file changed, 161 insertions(+), 3458 deletions(-) diff --git a/Resources/Maps/saltern.yml b/Resources/Maps/saltern.yml index 36f6a9a987d96d..85a2c766fdaa1d 100644 --- a/Resources/Maps/saltern.yml +++ b/Resources/Maps/saltern.yml @@ -5640,8 +5640,6 @@ entities: - pos: -16.5,17.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - loadingNetworkDemand: 30 supplyRampPosition: 1.347667 type: PowerNetworkBattery @@ -6074,20 +6072,21 @@ entities: - pos: -4.5,-11.5 parent: 31 type: Transform - - uid: 9573 +- proto: BarricadeBlock + entities: + - uid: 10 components: - - rot: 3.141592653589793 rad - pos: -21.5,-22.5 + - pos: -21.5,-22.5 parent: 31 type: Transform - - uid: 9744 + - uid: 769 components: - - pos: -14.5,-9.5 + - pos: -12.5,-8.5 parent: 31 type: Transform - - uid: 9746 + - uid: 3577 components: - - pos: -12.5,-8.5 + - pos: -14.5,-9.5 parent: 31 type: Transform - proto: BarSignEngineChange @@ -7006,8 +7005,6 @@ entities: - pos: 44.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 103 components: - pos: 28.5,1.5 @@ -7038,15 +7035,11 @@ entities: - pos: 13.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 198 components: - pos: -27.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 199 components: - pos: -28.5,16.5 @@ -7097,8 +7090,6 @@ entities: - pos: 16.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 269 components: - pos: -8.5,-19.5 @@ -7109,8 +7100,6 @@ entities: - pos: 62.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 299 components: - pos: -8.5,-15.5 @@ -7126,15 +7115,11 @@ entities: - pos: -5.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 329 components: - pos: 9.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 331 components: - pos: 10.5,-38.5 @@ -7150,8 +7135,6 @@ entities: - pos: 8.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 345 components: - pos: -9.5,-19.5 @@ -7192,8 +7175,6 @@ entities: - pos: 31.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 569 components: - pos: -20.5,-12.5 @@ -7204,8 +7185,6 @@ entities: - pos: 31.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 594 components: - pos: -10.5,-15.5 @@ -7281,8 +7260,6 @@ entities: - pos: 13.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 795 components: - pos: 19.5,16.5 @@ -7303,22 +7280,16 @@ entities: - pos: 16.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 866 components: - pos: 16.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 939 components: - pos: 8.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 948 components: - pos: -23.5,-23.5 @@ -7329,36 +7300,26 @@ entities: - pos: -41.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 971 components: - pos: -40.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 992 components: - pos: 1.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 996 components: - pos: 1.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 998 components: - pos: 6.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 999 components: - pos: 3.5,28.5 @@ -7404,8 +7365,6 @@ entities: - pos: 22.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1011 components: - pos: 9.5,-17.5 @@ -7416,8 +7375,6 @@ entities: - pos: -4.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1023 components: - pos: 15.5,-16.5 @@ -7463,8 +7420,6 @@ entities: - pos: 31.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1114 components: - pos: -3.5,-19.5 @@ -7480,8 +7435,6 @@ entities: - pos: 31.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1126 components: - pos: -1.5,-21.5 @@ -7502,8 +7455,6 @@ entities: - pos: 61.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1134 components: - pos: 56.5,5.5 @@ -7514,8 +7465,6 @@ entities: - pos: 32.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1145 components: - pos: 22.5,-4.5 @@ -7531,8 +7480,6 @@ entities: - pos: 31.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1172 components: - pos: -6.5,5.5 @@ -7543,8 +7490,6 @@ entities: - pos: 51.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1174 components: - pos: 11.5,24.5 @@ -7560,15 +7505,11 @@ entities: - pos: -43.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1198 components: - pos: 33.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1201 components: - pos: 27.5,3.5 @@ -7589,8 +7530,6 @@ entities: - pos: 31.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1240 components: - pos: -15.5,-23.5 @@ -7626,15 +7565,11 @@ entities: - pos: -31.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1327 components: - pos: 16.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1341 components: - pos: -12.5,8.5 @@ -7655,50 +7590,36 @@ entities: - pos: 52.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1421 components: - pos: -40.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1428 components: - pos: -42.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1429 components: - pos: -43.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1431 components: - pos: -41.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1433 components: - pos: -43.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1450 components: - pos: -23.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1466 components: - pos: -7.5,-27.5 @@ -7734,36 +7655,26 @@ entities: - pos: 31.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1532 components: - pos: 30.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1535 components: - pos: -12.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1539 components: - pos: 29.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1553 components: - pos: 31.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1554 components: - pos: -7.5,8.5 @@ -7814,22 +7725,16 @@ entities: - pos: -41.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1597 components: - pos: 13.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1598 components: - pos: 13.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1599 components: - pos: 15.5,14.5 @@ -7840,8 +7745,6 @@ entities: - pos: -18.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1659 components: - pos: -10.5,-25.5 @@ -7857,15 +7760,11 @@ entities: - pos: -18.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1694 components: - pos: -18.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1702 components: - pos: -11.5,-27.5 @@ -7876,15 +7775,11 @@ entities: - pos: -40.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1704 components: - pos: -42.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1705 components: - pos: -39.5,8.5 @@ -7935,15 +7830,11 @@ entities: - pos: 31.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1779 components: - pos: -10.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1838 components: - pos: 22.5,21.5 @@ -7979,8 +7870,6 @@ entities: - pos: -16.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2052 components: - pos: 0.5,-28.5 @@ -7996,15 +7885,11 @@ entities: - pos: 1.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2082 components: - pos: -33.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2126 components: - pos: -8.5,8.5 @@ -8020,8 +7905,6 @@ entities: - pos: -11.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2200 components: - pos: 0.5,-24.5 @@ -8032,8 +7915,6 @@ entities: - pos: 16.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2269 components: - pos: -18.5,-11.5 @@ -8059,8 +7940,6 @@ entities: - pos: 13.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2339 components: - pos: -1.5,-27.5 @@ -8116,15 +7995,11 @@ entities: - pos: -3.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2395 components: - pos: -2.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2398 components: - pos: -4.5,6.5 @@ -8135,8 +8010,6 @@ entities: - pos: -15.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2453 components: - pos: 10.5,-39.5 @@ -8147,8 +8020,6 @@ entities: - pos: -17.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2483 components: - pos: 12.5,25.5 @@ -8159,15 +8030,11 @@ entities: - pos: 43.5,-5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2506 components: - pos: -28.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2507 components: - pos: -28.5,11.5 @@ -8203,8 +8070,6 @@ entities: - pos: -25.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2514 components: - pos: -26.5,8.5 @@ -8255,8 +8120,6 @@ entities: - pos: -22.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2529 components: - pos: -23.5,13.5 @@ -8267,15 +8130,11 @@ entities: - pos: -24.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2532 components: - pos: -18.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2536 components: - pos: -13.5,14.5 @@ -8346,8 +8205,6 @@ entities: - pos: -10.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2551 components: - pos: -9.5,24.5 @@ -8368,8 +8225,6 @@ entities: - pos: -12.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2555 components: - pos: -12.5,11.5 @@ -8385,22 +8240,16 @@ entities: - pos: -9.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2560 components: - pos: 6.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2561 components: - pos: 8.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2562 components: - pos: -11.5,10.5 @@ -8496,22 +8345,16 @@ entities: - pos: -25.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2583 components: - pos: 8.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2584 components: - pos: -3.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2585 components: - pos: -3.5,16.5 @@ -8587,8 +8430,6 @@ entities: - pos: -10.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2600 components: - pos: -11.5,14.5 @@ -8704,8 +8545,6 @@ entities: - pos: -1.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2624 components: - pos: -0.5,14.5 @@ -8721,8 +8560,6 @@ entities: - pos: 1.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2627 components: - pos: 0.5,13.5 @@ -8738,8 +8575,6 @@ entities: - pos: -39.5,11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2630 components: - pos: -39.5,10.5 @@ -8910,8 +8745,6 @@ entities: - pos: -30.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2673 components: - pos: -30.5,-4.5 @@ -8927,8 +8760,6 @@ entities: - pos: -30.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2676 components: - pos: -30.5,-7.5 @@ -8954,8 +8785,6 @@ entities: - pos: -26.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2681 components: - pos: -25.5,-7.5 @@ -8986,8 +8815,6 @@ entities: - pos: 0.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2687 components: - pos: -30.5,-2.5 @@ -9003,8 +8830,6 @@ entities: - pos: -30.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2690 components: - pos: -30.5,0.5 @@ -9035,8 +8860,6 @@ entities: - pos: -27.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2696 components: - pos: -27.5,-1.5 @@ -9047,71 +8870,51 @@ entities: - pos: 8.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2698 components: - pos: -31.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2699 components: - pos: -0.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2700 components: - pos: -32.5,-5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2701 components: - pos: -32.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2702 components: - pos: -32.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2703 components: - pos: -32.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2704 components: - pos: -32.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2705 components: - pos: -32.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2706 components: - pos: -32.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2710 components: - pos: -7.5,-30.5 @@ -9137,15 +8940,11 @@ entities: - pos: -11.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2720 components: - pos: -14.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2722 components: - pos: -13.5,-11.5 @@ -9156,15 +8955,11 @@ entities: - pos: -12.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2724 components: - pos: -11.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2725 components: - pos: -12.5,-10.5 @@ -9220,8 +9015,6 @@ entities: - pos: -20.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2736 components: - pos: -18.5,-6.5 @@ -9287,8 +9080,6 @@ entities: - pos: -22.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2750 components: - pos: -23.5,0.5 @@ -9314,8 +9105,6 @@ entities: - pos: -11.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2755 components: - pos: -11.5,1.5 @@ -9341,8 +9130,6 @@ entities: - pos: -11.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2760 components: - pos: -11.5,-3.5 @@ -9543,43 +9330,31 @@ entities: - pos: -5.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2804 components: - pos: -5.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2805 components: - pos: -4.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2806 components: - pos: -3.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2808 components: - pos: -6.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2809 components: - pos: -7.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2810 components: - pos: -6.5,-6.5 @@ -9600,57 +9375,41 @@ entities: - pos: -5.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2814 components: - pos: -5.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2816 components: - pos: -4.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2817 components: - pos: -3.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2818 components: - pos: -2.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2819 components: - pos: -1.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2820 components: - pos: -0.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2821 components: - pos: 0.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2825 components: - pos: -0.5,-11.5 @@ -9696,22 +9455,16 @@ entities: - pos: -15.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2836 components: - pos: -14.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2837 components: - pos: -9.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2838 components: - pos: -0.5,-30.5 @@ -9722,8 +9475,6 @@ entities: - pos: -3.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2865 components: - pos: -14.5,-29.5 @@ -9734,15 +9485,11 @@ entities: - pos: -4.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2869 components: - pos: -5.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2870 components: - pos: 0.5,-29.5 @@ -9758,8 +9505,6 @@ entities: - pos: -13.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2875 components: - pos: -6.5,-31.5 @@ -9820,8 +9565,6 @@ entities: - pos: 13.5,-19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2898 components: - pos: 14.5,-19.5 @@ -9832,8 +9575,6 @@ entities: - pos: 14.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2900 components: - pos: 7.5,-16.5 @@ -9859,8 +9600,6 @@ entities: - pos: 6.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2905 components: - pos: 5.5,-13.5 @@ -9896,15 +9635,11 @@ entities: - pos: 25.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2915 components: - pos: 22.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2916 components: - pos: 22.5,-1.5 @@ -9930,8 +9665,6 @@ entities: - pos: 21.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2921 components: - pos: 23.5,0.5 @@ -9952,8 +9685,6 @@ entities: - pos: 25.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2925 components: - pos: 22.5,-6.5 @@ -10049,8 +9780,6 @@ entities: - pos: 8.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2955 components: - pos: 7.5,-11.5 @@ -10076,8 +9805,6 @@ entities: - pos: 8.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2960 components: - pos: 9.5,-7.5 @@ -10133,8 +9860,6 @@ entities: - pos: 16.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2972 components: - pos: 15.5,-17.5 @@ -10145,8 +9870,6 @@ entities: - pos: 16.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2974 components: - pos: 16.5,1.5 @@ -10287,8 +10010,6 @@ entities: - pos: 6.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3004 components: - pos: 2.5,-23.5 @@ -10324,8 +10045,6 @@ entities: - pos: 22.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3012 components: - pos: 31.5,0.5 @@ -10386,8 +10105,6 @@ entities: - pos: 31.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3024 components: - pos: 31.5,2.5 @@ -10553,71 +10270,51 @@ entities: - pos: 43.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3071 components: - pos: 43.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3072 components: - pos: 42.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3073 components: - pos: 41.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3074 components: - pos: 40.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3075 components: - pos: 39.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3076 components: - pos: 38.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3077 components: - pos: 37.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3078 components: - pos: 37.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3079 components: - pos: 37.5,-5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3080 components: - pos: 37.5,-6.5 @@ -10678,127 +10375,91 @@ entities: - pos: 27.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3092 components: - pos: 27.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3093 components: - pos: 27.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3094 components: - pos: 27.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3095 components: - pos: 27.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3096 components: - pos: 27.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3097 components: - pos: 27.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3098 components: - pos: 27.5,-14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3099 components: - pos: 27.5,-15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3100 components: - pos: 27.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3101 components: - pos: 27.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3102 components: - pos: 27.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3103 components: - pos: 26.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3104 components: - pos: 25.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3105 components: - pos: 24.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3119 components: - pos: 28.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3120 components: - pos: 28.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3121 components: - pos: 28.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3122 components: - pos: 23.5,9.5 @@ -10839,15 +10500,11 @@ entities: - pos: 27.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3148 components: - pos: 24.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3149 components: - pos: 24.5,13.5 @@ -10938,8 +10595,6 @@ entities: - pos: 17.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3172 components: - pos: 18.5,12.5 @@ -11000,8 +10655,6 @@ entities: - pos: 11.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3185 components: - pos: 10.5,10.5 @@ -11052,71 +10705,51 @@ entities: - pos: 8.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3195 components: - pos: 12.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3197 components: - pos: 11.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3198 components: - pos: 10.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3199 components: - pos: 9.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3200 components: - pos: 8.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3201 components: - pos: 7.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3202 components: - pos: 6.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3203 components: - pos: 12.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3204 components: - pos: 13.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3205 components: - pos: 14.5,14.5 @@ -11127,22 +10760,16 @@ entities: - pos: 13.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3209 components: - pos: 13.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3210 components: - pos: 9.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3211 components: - pos: 9.5,21.5 @@ -11313,8 +10940,6 @@ entities: - pos: -2.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3250 components: - pos: -2.5,28.5 @@ -11420,8 +11045,6 @@ entities: - pos: 31.5,26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3318 components: - pos: 13.5,-14.5 @@ -11447,22 +11070,16 @@ entities: - pos: 12.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3619 components: - pos: -4.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3625 components: - pos: 28.5,11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3626 components: - pos: 10.5,25.5 @@ -11478,22 +11095,16 @@ entities: - pos: 26.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3727 components: - pos: -16.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3830 components: - pos: -18.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3843 components: - pos: -4.5,12.5 @@ -11554,8 +11165,6 @@ entities: - pos: 1.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3937 components: - pos: -31.5,5.5 @@ -11591,15 +11200,11 @@ entities: - pos: -26.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3950 components: - pos: 27.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3951 components: - pos: -21.5,13.5 @@ -11610,8 +11215,6 @@ entities: - pos: -26.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3954 components: - pos: -26.5,5.5 @@ -11637,8 +11240,6 @@ entities: - pos: -32.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3966 components: - pos: 21.5,19.5 @@ -11649,15 +11250,11 @@ entities: - pos: -32.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3995 components: - pos: 23.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4008 components: - pos: -22.5,-22.5 @@ -11678,8 +11275,6 @@ entities: - pos: 13.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4035 components: - pos: -6.5,3.5 @@ -11695,15 +11290,11 @@ entities: - pos: -8.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4040 components: - pos: -32.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4043 components: - pos: -26.5,4.5 @@ -11719,15 +11310,11 @@ entities: - pos: -24.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4049 components: - pos: -22.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4111 components: - pos: 27.5,16.5 @@ -11738,15 +11325,11 @@ entities: - pos: -41.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4159 components: - pos: -42.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4208 components: - pos: -38.5,-11.5 @@ -11802,15 +11385,11 @@ entities: - pos: -40.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4379 components: - pos: 36.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4383 components: - pos: 33.5,-22.5 @@ -11821,43 +11400,31 @@ entities: - pos: 29.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4492 components: - pos: 28.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4495 components: - pos: 38.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4496 components: - pos: 37.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4497 components: - pos: 36.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4498 components: - pos: 38.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4505 components: - pos: 29.5,-9.5 @@ -11868,8 +11435,6 @@ entities: - pos: 36.5,-14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4592 components: - pos: 33.5,-9.5 @@ -11880,15 +11445,11 @@ entities: - pos: 34.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4623 components: - pos: 37.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4630 components: - pos: 42.5,-24.5 @@ -11899,36 +11460,26 @@ entities: - pos: 43.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4643 components: - pos: 30.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4644 components: - pos: 38.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4645 components: - pos: 37.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4647 components: - pos: 32.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4665 components: - pos: 39.5,-24.5 @@ -12009,8 +11560,6 @@ entities: - pos: 5.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4755 components: - pos: 6.5,-27.5 @@ -12021,8 +11570,6 @@ entities: - pos: 13.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4759 components: - pos: 10.5,-23.5 @@ -12073,15 +11620,11 @@ entities: - pos: 12.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4769 components: - pos: 22.5,-19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4770 components: - pos: 12.5,-25.5 @@ -12092,8 +11635,6 @@ entities: - pos: 10.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4786 components: - pos: 12.5,-26.5 @@ -12124,8 +11665,6 @@ entities: - pos: 31.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4832 components: - pos: 4.5,-25.5 @@ -12136,15 +11675,11 @@ entities: - pos: -15.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4859 components: - pos: -15.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4861 components: - pos: -13.5,-10.5 @@ -12155,22 +11690,16 @@ entities: - pos: 12.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4865 components: - pos: 12.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4866 components: - pos: 12.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4869 components: - pos: -15.5,-38.5 @@ -12196,71 +11725,51 @@ entities: - pos: 26.5,-19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4962 components: - pos: 26.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4963 components: - pos: 22.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4964 components: - pos: 23.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4965 components: - pos: 22.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4966 components: - pos: 22.5,-22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4967 components: - pos: 22.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4968 components: - pos: 22.5,-21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4970 components: - pos: 24.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4971 components: - pos: 47.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4972 components: - pos: 26.5,-24.5 @@ -12276,71 +11785,51 @@ entities: - pos: -20.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4997 components: - pos: -21.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4998 components: - pos: -23.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5000 components: - pos: -19.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5001 components: - pos: -18.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5023 components: - pos: 25.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5025 components: - pos: -25.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5026 components: - pos: -25.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5027 components: - pos: -25.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5125 components: - pos: 52.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5128 components: - pos: -23.5,-15.5 @@ -12366,8 +11855,6 @@ entities: - pos: -22.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5186 components: - pos: -22.5,22.5 @@ -12383,43 +11870,31 @@ entities: - pos: -22.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5189 components: - pos: -23.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5197 components: - pos: -25.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5207 components: - pos: -24.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5208 components: - pos: -22.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5243 components: - pos: -21.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5258 components: - pos: 8.5,-30.5 @@ -12430,15 +11905,11 @@ entities: - pos: 14.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5286 components: - pos: 15.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5287 components: - pos: 16.5,-29.5 @@ -12459,8 +11930,6 @@ entities: - pos: 15.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5293 components: - pos: -12.5,-29.5 @@ -12471,29 +11940,21 @@ entities: - pos: 15.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5303 components: - pos: 15.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5304 components: - pos: 16.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5317 components: - pos: 24.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5345 components: - pos: -7.5,-38.5 @@ -12504,15 +11965,11 @@ entities: - pos: -17.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5707 components: - pos: -18.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5711 components: - pos: -9.5,-38.5 @@ -12538,8 +11995,6 @@ entities: - pos: 46.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5976 components: - pos: -22.5,-9.5 @@ -12585,15 +12040,11 @@ entities: - pos: 1.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6316 components: - pos: -14.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6322 components: - pos: -15.5,-24.5 @@ -12614,29 +12065,21 @@ entities: - pos: 47.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6333 components: - pos: 45.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6336 components: - pos: 44.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6337 components: - pos: 44.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6338 components: - pos: 42.5,11.5 @@ -12652,29 +12095,21 @@ entities: - pos: 48.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6342 components: - pos: 48.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6343 components: - pos: 48.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6344 components: - pos: 49.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6345 components: - pos: 47.5,11.5 @@ -12685,22 +12120,16 @@ entities: - pos: 37.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6347 components: - pos: 44.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6350 components: - pos: 45.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6355 components: - pos: 40.5,9.5 @@ -12766,8 +12195,6 @@ entities: - pos: 46.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6399 components: - pos: 34.5,8.5 @@ -12803,15 +12230,11 @@ entities: - pos: 41.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6419 components: - pos: 40.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6420 components: - pos: 31.5,8.5 @@ -12822,8 +12245,6 @@ entities: - pos: 37.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6423 components: - pos: 35.5,11.5 @@ -12839,36 +12260,26 @@ entities: - pos: 31.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6428 components: - pos: 35.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6429 components: - pos: 31.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6430 components: - pos: 35.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6431 components: - pos: 34.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6433 components: - pos: 35.5,9.5 @@ -12919,8 +12330,6 @@ entities: - pos: 52.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6507 components: - pos: 49.5,8.5 @@ -12936,57 +12345,41 @@ entities: - pos: 42.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6515 components: - pos: 43.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6516 components: - pos: 39.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6517 components: - pos: 38.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6518 components: - pos: 36.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6519 components: - pos: 35.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6520 components: - pos: 34.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6521 components: - pos: 33.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6525 components: - pos: 30.5,14.5 @@ -12997,15 +12390,11 @@ entities: - pos: 32.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6529 components: - pos: 33.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6543 components: - pos: 39.5,9.5 @@ -13031,29 +12420,21 @@ entities: - pos: 46.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6560 components: - pos: 47.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6561 components: - pos: 48.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6574 components: - pos: 50.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6596 components: - pos: 44.5,6.5 @@ -13139,15 +12520,11 @@ entities: - pos: 43.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6825 components: - pos: 50.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6829 components: - pos: 41.5,6.5 @@ -13198,8 +12575,6 @@ entities: - pos: -9.5,-37.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6981 components: - pos: 41.5,-24.5 @@ -13220,36 +12595,26 @@ entities: - pos: 37.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7030 components: - pos: 31.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7031 components: - pos: 36.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7032 components: - pos: 36.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7033 components: - pos: 36.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7054 components: - pos: 33.5,-21.5 @@ -13260,15 +12625,11 @@ entities: - pos: 29.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7066 components: - pos: 35.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7106 components: - pos: 24.5,9.5 @@ -13284,15 +12645,11 @@ entities: - pos: -32.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7243 components: - pos: 23.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7251 components: - pos: -18.5,9.5 @@ -13368,15 +12725,11 @@ entities: - pos: 8.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7395 components: - pos: 8.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7396 components: - pos: -10.5,-29.5 @@ -13402,8 +12755,6 @@ entities: - pos: -12.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7401 components: - pos: -9.5,-33.5 @@ -13419,15 +12770,11 @@ entities: - pos: -16.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7404 components: - pos: 8.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7408 components: - pos: -10.5,-19.5 @@ -13443,15 +12790,11 @@ entities: - pos: 8.5,-37.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7423 components: - pos: -20.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7424 components: - pos: -15.5,-25.5 @@ -13462,8 +12805,6 @@ entities: - pos: -19.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7439 components: - pos: -8.5,-22.5 @@ -13474,8 +12815,6 @@ entities: - pos: -6.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7466 components: - pos: -22.5,-13.5 @@ -13526,8 +12865,6 @@ entities: - pos: 49.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7714 components: - pos: -36.5,11.5 @@ -13703,15 +13040,11 @@ entities: - pos: 53.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8053 components: - pos: -42.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8054 components: - pos: -38.5,2.5 @@ -13727,92 +13060,66 @@ entities: - pos: 33.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8060 components: - pos: 34.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8061 components: - pos: 35.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8062 components: - pos: 36.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8063 components: - pos: 37.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8064 components: - pos: 38.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8065 components: - pos: 39.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8066 components: - pos: 40.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8067 components: - pos: 41.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8068 components: - pos: 42.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8069 components: - pos: 43.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8070 components: - pos: 45.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8073 components: - pos: 43.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8087 components: - pos: -35.5,14.5 @@ -13883,29 +13190,21 @@ entities: - pos: 53.5,4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8167 components: - pos: 53.5,5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8168 components: - pos: 53.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8169 components: - pos: 53.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8170 components: - pos: 55.5,3.5 @@ -13916,8 +13215,6 @@ entities: - pos: 55.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8174 components: - pos: 56.5,6.5 @@ -13933,29 +13230,21 @@ entities: - pos: 58.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8177 components: - pos: 59.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8178 components: - pos: 60.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8179 components: - pos: 60.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8180 components: - pos: 56.5,4.5 @@ -14196,29 +13485,21 @@ entities: - pos: 33.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8359 components: - pos: 33.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8360 components: - pos: 33.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8361 components: - pos: 33.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8403 components: - pos: 33.5,-20.5 @@ -14234,8 +13515,6 @@ entities: - pos: 33.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8406 components: - pos: -23.5,4.5 @@ -14256,141 +13535,101 @@ entities: - pos: -21.5,-22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8497 components: - pos: -19.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8498 components: - pos: -19.5,-19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8499 components: - pos: -19.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8500 components: - pos: -19.5,-21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8501 components: - pos: -19.5,-22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8502 components: - pos: -19.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8503 components: - pos: -19.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8504 components: - pos: -19.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8505 components: - pos: -19.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8506 components: - pos: -19.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8507 components: - pos: -19.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8508 components: - pos: -19.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8509 components: - pos: -19.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8510 components: - pos: -20.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8511 components: - pos: -21.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8512 components: - pos: -22.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8513 components: - pos: -23.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8514 components: - pos: -24.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8677 components: - pos: -32.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8678 components: - pos: -32.5,-26.5 @@ -14401,22 +13640,16 @@ entities: - pos: -31.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8680 components: - pos: -30.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8681 components: - pos: -29.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8682 components: - pos: -33.5,-26.5 @@ -14597,15 +13830,11 @@ entities: - pos: -13.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8957 components: - pos: 1.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8958 components: - pos: 2.5,-10.5 @@ -14766,8 +13995,6 @@ entities: - pos: -12.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9142 components: - pos: 21.5,-10.5 @@ -14783,8 +14010,6 @@ entities: - pos: -43.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9210 components: - pos: -36.5,-7.5 @@ -14835,15 +14060,11 @@ entities: - pos: -2.5,-21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9269 components: - pos: -23.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9270 components: - pos: -23.5,-19.5 @@ -14854,22 +14075,16 @@ entities: - pos: -24.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9272 components: - pos: -25.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9273 components: - pos: -26.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9367 components: - pos: 26.5,20.5 @@ -14880,8 +14095,6 @@ entities: - pos: -19.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9412 components: - pos: -18.5,-31.5 @@ -14902,22 +14115,16 @@ entities: - pos: -21.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9442 components: - pos: -22.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9443 components: - pos: -23.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9504 components: - pos: -3.5,-21.5 @@ -14963,29 +14170,21 @@ entities: - pos: 30.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9829 components: - pos: 31.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9830 components: - pos: 32.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9831 components: - pos: 33.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9927 components: - pos: 27.5,17.5 @@ -15016,36 +14215,26 @@ entities: - pos: 33.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9937 components: - pos: 33.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9938 components: - pos: 34.5,28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9939 components: - pos: 34.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9945 components: - pos: 34.5,29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9947 components: - pos: 25.5,20.5 @@ -15056,15 +14245,11 @@ entities: - pos: 34.5,37.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9956 components: - pos: 34.5,36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10055 components: - pos: 21.5,23.5 @@ -15085,78 +14270,56 @@ entities: - pos: 21.5,26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10059 components: - pos: 20.5,26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10060 components: - pos: 22.5,26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10100 components: - pos: 31.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10101 components: - pos: 32.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10102 components: - pos: 34.5,30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10103 components: - pos: 34.5,31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10104 components: - pos: 34.5,32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10105 components: - pos: 34.5,33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10106 components: - pos: 34.5,34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10107 components: - pos: 34.5,35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10222 components: - pos: -38.5,18.5 @@ -15182,85 +14345,61 @@ entities: - pos: 7.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10332 components: - pos: 6.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10333 components: - pos: 5.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10334 components: - pos: 4.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10335 components: - pos: 3.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10336 components: - pos: 2.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10337 components: - pos: 1.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10338 components: - pos: 0.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10339 components: - pos: -0.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10340 components: - pos: -1.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10341 components: - pos: -2.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10342 components: - pos: 0.5,-39.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10343 components: - pos: 0.5,-40.5 @@ -15276,8 +14415,6 @@ entities: - pos: 0.5,-42.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10346 components: - pos: 0.5,-43.5 @@ -15288,8 +14425,6 @@ entities: - pos: -0.5,-43.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10348 components: - pos: -1.5,-43.5 @@ -15300,22 +14435,16 @@ entities: - pos: -2.5,-43.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10350 components: - pos: -2.5,-42.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10351 components: - pos: -3.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10496 components: - pos: -31.5,-13.5 @@ -15331,15 +14460,11 @@ entities: - pos: -30.5,-14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10502 components: - pos: -30.5,-15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10556 components: - pos: 22.5,-10.5 @@ -15350,148 +14475,106 @@ entities: - pos: -30.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10563 components: - pos: -30.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10564 components: - pos: -30.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10565 components: - pos: -30.5,-19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10566 components: - pos: -31.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10567 components: - pos: -32.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10568 components: - pos: -33.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10569 components: - pos: -34.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10570 components: - pos: -35.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10571 components: - pos: -31.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10572 components: - pos: -32.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10573 components: - pos: -33.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10574 components: - pos: -30.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10575 components: - pos: -29.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10576 components: - pos: -28.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10577 components: - pos: -27.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10578 components: - pos: -26.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10579 components: - pos: -29.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10580 components: - pos: -28.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10608 components: - pos: 51.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10615 components: - pos: 55.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10659 components: - pos: 56.5,-3.5 @@ -15502,15 +14585,11 @@ entities: - pos: 39.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10665 components: - pos: 40.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10666 components: - pos: 41.5,-12.5 @@ -15531,8 +14610,6 @@ entities: - pos: 44.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10670 components: - pos: 45.5,-12.5 @@ -15553,57 +14630,41 @@ entities: - pos: 43.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10674 components: - pos: 44.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10675 components: - pos: 45.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10676 components: - pos: 45.5,-5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10677 components: - pos: 45.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10678 components: - pos: 45.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10679 components: - pos: 45.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10680 components: - pos: 45.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10681 components: - pos: 58.5,-4.5 @@ -15624,22 +14685,16 @@ entities: - pos: 41.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10685 components: - pos: 41.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10686 components: - pos: 41.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10687 components: - pos: 41.5,-9.5 @@ -15650,64 +14705,46 @@ entities: - pos: 42.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10739 components: - pos: -13.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10740 components: - pos: -11.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10741 components: - pos: -9.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10742 components: - pos: -7.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10743 components: - pos: -8.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10744 components: - pos: -7.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10745 components: - pos: -12.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10746 components: - pos: -13.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10750 components: - pos: -7.5,10.5 @@ -15868,29 +14905,21 @@ entities: - pos: 53.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10844 components: - pos: 53.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10845 components: - pos: 53.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10846 components: - pos: 53.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10847 components: - pos: 53.5,-11.5 @@ -15901,85 +14930,61 @@ entities: - pos: 52.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10850 components: - pos: 51.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10851 components: - pos: 50.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10852 components: - pos: 49.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10853 components: - pos: 48.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10854 components: - pos: 47.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10855 components: - pos: 47.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10856 components: - pos: 48.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10857 components: - pos: 49.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10858 components: - pos: 50.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10859 components: - pos: 51.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10860 components: - pos: 52.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10861 components: - pos: 55.5,-7.5 @@ -15990,36 +14995,26 @@ entities: - pos: 55.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10863 components: - pos: 55.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10864 components: - pos: 56.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10865 components: - pos: 55.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10866 components: - pos: 56.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10870 components: - pos: 54.5,-9.5 @@ -16030,8 +15025,6 @@ entities: - pos: 55.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10966 components: - pos: 51.5,-3.5 @@ -16127,29 +15120,21 @@ entities: - pos: -28.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11214 components: - pos: -28.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11215 components: - pos: -28.5,-14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11216 components: - pos: -28.5,-15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11232 components: - pos: -2.5,-15.5 @@ -16215,22 +15200,16 @@ entities: - pos: -32.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11252 components: - pos: -32.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11253 components: - pos: -32.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11257 components: - pos: 3.5,-24.5 @@ -16241,8 +15220,6 @@ entities: - pos: 36.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11274 components: - pos: -24.5,-15.5 @@ -16263,8 +15240,6 @@ entities: - pos: -26.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11278 components: - pos: -16.5,-16.5 @@ -16275,8 +15250,6 @@ entities: - pos: -27.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - proto: CableApcStack entities: - uid: 94 @@ -16342,50 +15315,36 @@ entities: - pos: 19.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 29 components: - pos: 19.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 104 components: - pos: 21.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 128 components: - pos: -25.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 130 components: - pos: 21.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 140 components: - pos: -22.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 202 components: - pos: 55.5,5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 290 components: - pos: 3.5,-20.5 @@ -16401,351 +15360,251 @@ entities: - pos: 21.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 421 components: - pos: 21.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 422 components: - pos: 21.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 437 components: - pos: 19.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 442 components: - pos: -35.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 443 components: - pos: -35.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 444 components: - pos: -37.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 445 components: - pos: -37.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 450 components: - pos: -38.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 451 components: - pos: -37.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 452 components: - pos: -35.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 453 components: - pos: -33.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 455 components: - pos: -31.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 456 components: - pos: -33.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 457 components: - pos: -33.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 458 components: - pos: -35.5,26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 459 components: - pos: -35.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 460 components: - pos: -37.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 461 components: - pos: -37.5,26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 464 components: - pos: -37.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 465 components: - pos: 32.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 466 components: - pos: 30.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 468 components: - pos: 29.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 470 components: - pos: 31.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 471 components: - pos: 29.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 479 components: - pos: 27.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 480 components: - pos: 27.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 481 components: - pos: 29.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 482 components: - pos: 29.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 483 components: - pos: 27.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 485 components: - pos: 27.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 486 components: - pos: 25.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 487 components: - pos: 27.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 488 components: - pos: 27.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 489 components: - pos: 25.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 495 components: - pos: -19.5,-22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 499 components: - pos: 23.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 500 components: - pos: 23.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 502 components: - pos: 23.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 504 components: - pos: 23.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 505 components: - pos: 23.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 506 components: - pos: 23.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 507 components: - pos: 23.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 508 components: - pos: 23.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 509 components: - pos: 25.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 510 components: - pos: 25.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 511 components: - pos: 25.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 512 components: - pos: 25.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 513 components: - pos: 25.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 544 components: - pos: -24.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 562 components: - pos: -23.5,-16.5 @@ -16756,8 +15615,6 @@ entities: - pos: -19.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 617 components: - pos: 10.5,19.5 @@ -16768,8 +15625,6 @@ entities: - pos: -28.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 637 components: - pos: 3.5,-23.5 @@ -16780,22 +15635,16 @@ entities: - pos: 25.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 686 components: - pos: -19.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 692 components: - pos: -0.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 700 components: - pos: 3.5,-22.5 @@ -16811,15 +15660,11 @@ entities: - pos: -18.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 746 components: - pos: -19.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 756 components: - pos: 14.5,11.5 @@ -16830,22 +15675,16 @@ entities: - pos: -19.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 785 components: - pos: -26.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 805 components: - pos: -21.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 840 components: - pos: -12.5,-10.5 @@ -16861,15 +15700,11 @@ entities: - pos: 19.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 972 components: - pos: 29.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1057 components: - pos: -12.5,-12.5 @@ -16890,8 +15725,6 @@ entities: - pos: 32.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1119 components: - pos: 34.5,8.5 @@ -16947,8 +15780,6 @@ entities: - pos: -9.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1333 components: - pos: -22.5,-15.5 @@ -16974,8 +15805,6 @@ entities: - pos: 64.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1518 components: - pos: -10.5,-15.5 @@ -16996,8 +15825,6 @@ entities: - pos: 64.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1609 components: - pos: 32.5,3.5 @@ -17008,36 +15835,26 @@ entities: - pos: 70.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1615 components: - pos: 64.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1631 components: - pos: 65.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1640 components: - pos: -29.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1665 components: - pos: -5.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1696 components: - pos: 8.5,13.5 @@ -17048,15 +15865,11 @@ entities: - pos: 27.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1727 components: - pos: 27.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1728 components: - pos: 56.5,0.5 @@ -17072,22 +15885,16 @@ entities: - pos: 28.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1772 components: - pos: 27.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2000 components: - pos: -17.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2001 components: - pos: -16.5,14.5 @@ -17098,29 +15905,21 @@ entities: - pos: -18.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2055 components: - pos: -26.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2202 components: - pos: 53.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2281 components: - pos: 27.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2302 components: - pos: -18.5,-15.5 @@ -17131,8 +15930,6 @@ entities: - pos: 27.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2353 components: - pos: 34.5,3.5 @@ -17143,22 +15940,16 @@ entities: - pos: 27.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2534 components: - pos: -18.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2707 components: - pos: -27.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2713 components: - pos: -13.5,-12.5 @@ -17169,36 +15960,26 @@ entities: - pos: -14.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2839 components: - pos: -26.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2840 components: - pos: -19.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2841 components: - pos: -25.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2850 components: - pos: -15.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2937 components: - pos: -17.5,-15.5 @@ -17219,15 +16000,11 @@ entities: - pos: 53.5,4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3123 components: - pos: 29.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3143 components: - pos: 32.5,8.5 @@ -17258,204 +16035,146 @@ entities: - pos: -12.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3279 components: - pos: 42.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3280 components: - pos: 42.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3281 components: - pos: 42.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3282 components: - pos: 42.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3284 components: - pos: 42.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3285 components: - pos: 41.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3286 components: - pos: 40.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3287 components: - pos: 39.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3288 components: - pos: 38.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3289 components: - pos: 38.5,-5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3290 components: - pos: 38.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3291 components: - pos: 38.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3292 components: - pos: 37.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3293 components: - pos: 36.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3294 components: - pos: 35.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3295 components: - pos: 34.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3296 components: - pos: 33.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3297 components: - pos: 32.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3298 components: - pos: 31.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3299 components: - pos: 30.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3300 components: - pos: 29.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3301 components: - pos: 28.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3302 components: - pos: 27.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3309 components: - pos: 26.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3310 components: - pos: 26.5,-14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3311 components: - pos: 26.5,-15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3312 components: - pos: 26.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3313 components: - pos: 26.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3315 components: - pos: 6.5,13.5 @@ -17476,232 +16195,166 @@ entities: - pos: 25.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3320 components: - pos: 24.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3321 components: - pos: 23.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3322 components: - pos: 22.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3323 components: - pos: 22.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3324 components: - pos: 22.5,-19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3325 components: - pos: 22.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3326 components: - pos: 22.5,-21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3327 components: - pos: 22.5,-22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3328 components: - pos: 22.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3329 components: - pos: 22.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3330 components: - pos: 22.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3331 components: - pos: 21.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3332 components: - pos: 20.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3333 components: - pos: 19.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3334 components: - pos: 18.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3335 components: - pos: 17.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3336 components: - pos: 16.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3337 components: - pos: 15.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3338 components: - pos: 14.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3339 components: - pos: 14.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3340 components: - pos: 14.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3341 components: - pos: 14.5,-22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3342 components: - pos: 14.5,-21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3343 components: - pos: 14.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3344 components: - pos: 13.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3345 components: - pos: 12.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3346 components: - pos: 11.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3347 components: - pos: 10.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3348 components: - pos: 9.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3349 components: - pos: 8.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3350 components: - pos: 7.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3351 components: - pos: 6.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3352 components: - pos: 5.5,-20.5 @@ -17722,50 +16375,36 @@ entities: - pos: -13.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3360 components: - pos: -14.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3361 components: - pos: -15.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3362 components: - pos: -16.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3363 components: - pos: -19.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3364 components: - pos: -19.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3365 components: - pos: -10.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3374 components: - pos: -11.5,-10.5 @@ -17781,246 +16420,176 @@ entities: - pos: -9.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3393 components: - pos: -9.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3394 components: - pos: -9.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3395 components: - pos: -8.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3396 components: - pos: -7.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3397 components: - pos: -6.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3398 components: - pos: -5.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3399 components: - pos: -4.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3400 components: - pos: -3.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3401 components: - pos: -2.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3402 components: - pos: -1.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3403 components: - pos: -0.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3404 components: - pos: -0.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3426 components: - pos: -26.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3429 components: - pos: -28.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3430 components: - pos: -29.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3431 components: - pos: -30.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3432 components: - pos: -31.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3433 components: - pos: -32.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3434 components: - pos: -33.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3435 components: - pos: -33.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3436 components: - pos: -33.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3437 components: - pos: -33.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3438 components: - pos: -33.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3439 components: - pos: -33.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3440 components: - pos: -33.5,-5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3441 components: - pos: -33.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3442 components: - pos: -33.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3443 components: - pos: -33.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3444 components: - pos: -33.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3445 components: - pos: -33.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3446 components: - pos: -33.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3447 components: - pos: -32.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3448 components: - pos: -32.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3449 components: - pos: -32.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3450 components: - pos: -32.5,3.5 @@ -18041,372 +16610,266 @@ entities: - pos: -32.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3454 components: - pos: -32.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3455 components: - pos: -32.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3456 components: - pos: -32.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3457 components: - pos: -32.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3458 components: - pos: -32.5,11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3459 components: - pos: -32.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3460 components: - pos: -32.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3462 components: - pos: -32.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3463 components: - pos: -31.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3464 components: - pos: -30.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3465 components: - pos: -29.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3466 components: - pos: -28.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3467 components: - pos: -27.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3468 components: - pos: -26.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3469 components: - pos: -25.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3470 components: - pos: -24.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3471 components: - pos: -23.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3472 components: - pos: -22.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3473 components: - pos: -21.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3474 components: - pos: -20.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3478 components: - pos: -19.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3482 components: - pos: -18.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3483 components: - pos: -17.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3484 components: - pos: -16.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3486 components: - pos: -18.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3487 components: - pos: -18.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3488 components: - pos: -18.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3489 components: - pos: -18.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3490 components: - pos: -18.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3491 components: - pos: -18.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3492 components: - pos: -18.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3493 components: - pos: -18.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3494 components: - pos: -18.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3495 components: - pos: -17.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3496 components: - pos: -16.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3497 components: - pos: -15.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3498 components: - pos: -14.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3499 components: - pos: -13.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3500 components: - pos: -12.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3501 components: - pos: -11.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3502 components: - pos: -10.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3503 components: - pos: -9.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3504 components: - pos: -8.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3505 components: - pos: -7.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3510 components: - pos: -4.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3511 components: - pos: -4.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3512 components: - pos: -4.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3514 components: - pos: -4.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3515 components: - pos: -3.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3516 components: - pos: -2.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3517 components: - pos: -1.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3518 components: - pos: -0.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3519 components: - pos: -0.5,20.5 @@ -18417,8 +16880,6 @@ entities: - pos: 0.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3521 components: - pos: 1.5,20.5 @@ -18479,78 +16940,56 @@ entities: - pos: 12.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3533 components: - pos: 12.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3534 components: - pos: 12.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3539 components: - pos: 12.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3540 components: - pos: 12.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3541 components: - pos: 12.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3542 components: - pos: 12.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3543 components: - pos: 12.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3544 components: - pos: 12.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3545 components: - pos: 11.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3546 components: - pos: 10.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3547 components: - pos: 10.5,13.5 @@ -18616,8 +17055,6 @@ entities: - pos: 26.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3566 components: - pos: 24.5,12.5 @@ -18628,15 +17065,11 @@ entities: - pos: 27.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3568 components: - pos: 27.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3569 components: - pos: 30.5,12.5 @@ -18672,8 +17105,6 @@ entities: - pos: 34.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3580 components: - pos: 36.5,3.5 @@ -18709,8 +17140,6 @@ entities: - pos: -21.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3900 components: - pos: 34.5,5.5 @@ -18726,29 +17155,21 @@ entities: - pos: 19.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4226 components: - pos: 19.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4227 components: - pos: 21.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4233 components: - pos: -21.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4242 components: - pos: 35.5,5.5 @@ -18769,15 +17190,11 @@ entities: - pos: 55.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4307 components: - pos: -6.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4314 components: - pos: 47.5,7.5 @@ -18788,50 +17205,36 @@ entities: - pos: 14.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4341 components: - pos: 14.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4342 components: - pos: 14.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4343 components: - pos: 19.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4412 components: - pos: 21.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4413 components: - pos: 19.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4442 components: - pos: 48.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4443 components: - pos: 57.5,2.5 @@ -18857,15 +17260,11 @@ entities: - pos: 27.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4462 components: - pos: 25.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4465 components: - pos: 38.5,5.5 @@ -18876,8 +17275,6 @@ entities: - pos: -25.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4483 components: - pos: 55.5,2.5 @@ -18888,8 +17285,6 @@ entities: - pos: -25.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4563 components: - pos: 46.5,1.5 @@ -18900,8 +17295,6 @@ entities: - pos: 21.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4565 components: - pos: 45.5,1.5 @@ -18947,8 +17340,6 @@ entities: - pos: 29.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4774 components: - pos: 3.5,-24.5 @@ -18979,78 +17370,56 @@ entities: - pos: 29.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4875 components: - pos: 29.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4876 components: - pos: 27.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4947 components: - pos: -22.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4953 components: - pos: -29.5,26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4955 components: - pos: -29.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4956 components: - pos: -29.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4960 components: - pos: -33.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4992 components: - pos: -22.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4994 components: - pos: -25.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4995 components: - pos: -25.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5007 components: - pos: 35.5,9.5 @@ -19076,78 +17445,56 @@ entities: - pos: -31.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5039 components: - pos: -35.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5040 components: - pos: -29.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5041 components: - pos: -28.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5042 components: - pos: -31.5,26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5043 components: - pos: -31.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5051 components: - pos: -29.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5052 components: - pos: -31.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5053 components: - pos: -31.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5054 components: - pos: -33.5,26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5055 components: - pos: -33.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5098 components: - pos: 36.5,12.5 @@ -19158,127 +17505,91 @@ entities: - pos: -23.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5201 components: - pos: -22.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5202 components: - pos: -23.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5203 components: - pos: -24.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5204 components: - pos: -25.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5205 components: - pos: -26.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5206 components: - pos: -27.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5209 components: - pos: -20.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5210 components: - pos: -19.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5213 components: - pos: -21.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5259 components: - pos: 15.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5260 components: - pos: 15.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5262 components: - pos: 15.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5263 components: - pos: 15.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5264 components: - pos: 15.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5299 components: - pos: 16.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5300 components: - pos: 17.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5301 components: - pos: 18.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5307 components: - pos: 37.5,12.5 @@ -19289,29 +17600,21 @@ entities: - pos: -19.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5729 components: - pos: -19.5,-21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5730 components: - pos: -19.5,-20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5731 components: - pos: -19.5,-19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5732 components: - pos: -20.5,-18.5 @@ -19322,29 +17625,21 @@ entities: - pos: -22.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5734 components: - pos: -24.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5735 components: - pos: -27.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5738 components: - pos: -11.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5739 components: - pos: -11.5,-35.5 @@ -19355,50 +17650,36 @@ entities: - pos: -19.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5741 components: - pos: -19.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5742 components: - pos: -19.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5743 components: - pos: -17.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5747 components: - pos: -11.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5763 components: - pos: -23.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5893 components: - pos: -4.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6198 components: - pos: 42.5,6.5 @@ -19444,8 +17725,6 @@ entities: - pos: 54.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6313 components: - pos: 52.5,1.5 @@ -19466,15 +17745,11 @@ entities: - pos: 66.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6360 components: - pos: 64.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6365 components: - pos: 48.5,5.5 @@ -19485,29 +17760,21 @@ entities: - pos: 64.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6410 components: - pos: 48.5,11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6439 components: - pos: 68.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6465 components: - pos: 78.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6476 components: - pos: 31.5,12.5 @@ -19518,15 +17785,11 @@ entities: - pos: 69.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6530 components: - pos: 48.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6571 components: - pos: 56.5,2.5 @@ -19537,8 +17800,6 @@ entities: - pos: 64.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6610 components: - pos: 49.5,5.5 @@ -19549,29 +17810,21 @@ entities: - pos: 64.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6635 components: - pos: 48.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6642 components: - pos: 78.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6749 components: - pos: 71.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6817 components: - pos: 47.5,5.5 @@ -19582,8 +17835,6 @@ entities: - pos: 45.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6819 components: - pos: 50.5,5.5 @@ -19594,8 +17845,6 @@ entities: - pos: 48.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6821 components: - pos: 44.5,6.5 @@ -19611,8 +17860,6 @@ entities: - pos: 74.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6833 components: - pos: 44.5,7.5 @@ -19623,8 +17870,6 @@ entities: - pos: 48.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6835 components: - pos: 48.5,7.5 @@ -19635,15 +17880,11 @@ entities: - pos: 78.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6846 components: - pos: 78.5,5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6849 components: - pos: 46.5,7.5 @@ -19654,71 +17895,51 @@ entities: - pos: 78.5,4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6854 components: - pos: 78.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6855 components: - pos: 78.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6864 components: - pos: 78.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6866 components: - pos: 78.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6867 components: - pos: 77.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6868 components: - pos: 76.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6869 components: - pos: 75.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6871 components: - pos: 72.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6872 components: - pos: 73.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6911 components: - pos: 41.5,6.5 @@ -19729,8 +17950,6 @@ entities: - pos: 78.5,3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6913 components: - pos: 46.5,5.5 @@ -19746,22 +17965,16 @@ entities: - pos: 78.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6917 components: - pos: 78.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6918 components: - pos: 67.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6934 components: - pos: 40.5,5.5 @@ -19817,204 +18030,146 @@ entities: - pos: 64.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7187 components: - pos: 64.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7188 components: - pos: 64.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7189 components: - pos: 64.5,5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7190 components: - pos: 65.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7191 components: - pos: 64.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7192 components: - pos: 64.5,3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7193 components: - pos: 66.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7194 components: - pos: 67.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7195 components: - pos: 68.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7196 components: - pos: 70.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7197 components: - pos: 71.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7198 components: - pos: 73.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7199 components: - pos: 74.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7200 components: - pos: 75.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7201 components: - pos: 77.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7202 components: - pos: 78.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7203 components: - pos: 78.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7204 components: - pos: 78.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7213 components: - pos: 64.5,4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7214 components: - pos: 69.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7215 components: - pos: 72.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7216 components: - pos: 76.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7217 components: - pos: 64.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7370 components: - pos: 22.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7371 components: - pos: 0.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7384 components: - pos: -12.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7385 components: - pos: -27.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7415 components: - pos: -19.5,-18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7416 components: - pos: -19.5,-35.5 @@ -20035,15 +18190,11 @@ entities: - pos: 57.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8132 components: - pos: 56.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8134 components: - pos: 57.5,3.5 @@ -20054,43 +18205,31 @@ entities: - pos: 59.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8136 components: - pos: 58.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8140 components: - pos: 60.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8141 components: - pos: 61.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8142 components: - pos: 62.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8143 components: - pos: 63.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8303 components: - pos: 38.5,12.5 @@ -20106,365 +18245,261 @@ entities: - pos: -29.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8604 components: - pos: -28.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8605 components: - pos: -28.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8606 components: - pos: -28.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8607 components: - pos: -29.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8608 components: - pos: -31.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8609 components: - pos: -30.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8610 components: - pos: -32.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8611 components: - pos: -33.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8612 components: - pos: -34.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8613 components: - pos: -35.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8614 components: - pos: -35.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8615 components: - pos: -35.5,-32.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8616 components: - pos: -35.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8617 components: - pos: -36.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8618 components: - pos: -37.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8619 components: - pos: -38.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8620 components: - pos: -38.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8621 components: - pos: -38.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8622 components: - pos: -38.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8623 components: - pos: -39.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8624 components: - pos: -40.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8625 components: - pos: -41.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8626 components: - pos: -42.5,-28.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8627 components: - pos: -42.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8628 components: - pos: -42.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8629 components: - pos: -42.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8630 components: - pos: -40.5,-31.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8631 components: - pos: -40.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8632 components: - pos: -40.5,-29.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8633 components: - pos: -40.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8634 components: - pos: -40.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8635 components: - pos: -40.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8636 components: - pos: -42.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8637 components: - pos: -42.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8638 components: - pos: -42.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8639 components: - pos: -32.5,-35.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8640 components: - pos: -32.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8641 components: - pos: -32.5,-37.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8642 components: - pos: -32.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8643 components: - pos: -33.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8644 components: - pos: -34.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8645 components: - pos: -35.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8646 components: - pos: -31.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8647 components: - pos: -30.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8648 components: - pos: -29.5,-38.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8649 components: - pos: -29.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8650 components: - pos: -30.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8651 components: - pos: -31.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8652 components: - pos: -33.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8653 components: - pos: -34.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8654 components: - pos: -35.5,-36.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8665 components: - pos: -30.5,-31.5 @@ -20480,36 +18515,26 @@ entities: - pos: -23.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9077 components: - pos: 38.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9079 components: - pos: 38.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9166 components: - pos: 5.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9196 components: - pos: 54.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9390 components: - pos: 4.5,13.5 @@ -20655,50 +18680,36 @@ entities: - pos: 25.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9593 components: - pos: 23.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9594 components: - pos: 21.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9710 components: - pos: -7.5,25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9788 components: - pos: 24.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10230 components: - pos: 53.5,5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10236 components: - pos: 53.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10256 components: - pos: 49.5,0.5 @@ -20744,29 +18755,21 @@ entities: - pos: 52.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10265 components: - pos: 52.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10266 components: - pos: 52.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10267 components: - pos: 53.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10713 components: - pos: -15.5,14.5 @@ -20892,15 +18895,11 @@ entities: - pos: -16.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10738 components: - pos: -16.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11204 components: - pos: 16.5,-27.5 @@ -20911,57 +18910,41 @@ entities: - pos: -28.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11218 components: - pos: -28.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11219 components: - pos: -28.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11220 components: - pos: -28.5,-14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11221 components: - pos: -28.5,-15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11222 components: - pos: -28.5,-15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11223 components: - pos: -28.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11224 components: - pos: -28.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11247 components: - pos: -31.5,7.5 @@ -20993,7 +18976,7 @@ entities: entities: - uid: 4536 components: - - pos: 56.25787,8.577132 + - pos: 56.307724,8.484717 parent: 31 type: Transform - proto: CableMV @@ -21008,8 +18991,6 @@ entities: - pos: 13.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 428 components: - pos: -9.5,-28.5 @@ -21050,8 +19031,6 @@ entities: - pos: -14.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 605 components: - pos: -10.5,-23.5 @@ -21077,8 +19056,6 @@ entities: - pos: -14.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 694 components: - pos: -13.5,-10.5 @@ -21119,8 +19096,6 @@ entities: - pos: 12.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 931 components: - pos: 8.5,26.5 @@ -21161,8 +19136,6 @@ entities: - pos: 16.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1097 components: - pos: 13.5,-14.5 @@ -21173,22 +19146,16 @@ entities: - pos: -1.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1242 components: - pos: -28.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1297 components: - pos: 12.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1569 components: - pos: -15.5,-24.5 @@ -21214,36 +19181,26 @@ entities: - pos: 55.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1729 components: - pos: 64.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1731 components: - pos: 56.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1844 components: - pos: 57.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1873 components: - pos: 60.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2182 components: - pos: -11.5,-19.5 @@ -21254,8 +19211,6 @@ entities: - pos: -12.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2264 components: - pos: -11.5,-10.5 @@ -21266,22 +19221,16 @@ entities: - pos: 65.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2432 components: - pos: 15.5,-27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2433 components: - pos: 15.5,-26.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2715 components: - pos: -11.5,-35.5 @@ -21297,22 +19246,16 @@ entities: - pos: -0.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2823 components: - pos: -0.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2842 components: - pos: -11.5,-34.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2868 components: - pos: 9.5,-14.5 @@ -21343,43 +19286,31 @@ entities: - pos: 20.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2908 components: - pos: -12.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3108 components: - pos: 59.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3111 components: - pos: 58.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3140 components: - pos: 64.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3144 components: - pos: 43.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3147 components: - pos: 19.5,-13.5 @@ -21400,15 +19331,11 @@ entities: - pos: 14.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3357 components: - pos: 13.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3366 components: - pos: -9.5,-19.5 @@ -21424,8 +19351,6 @@ entities: - pos: -11.5,-33.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3373 components: - pos: -10.5,-35.5 @@ -21436,8 +19361,6 @@ entities: - pos: -16.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3589 components: - pos: 12.5,24.5 @@ -21448,36 +19371,26 @@ entities: - pos: 27.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3598 components: - pos: 28.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3599 components: - pos: 28.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3600 components: - pos: 26.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3601 components: - pos: 25.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3602 components: - pos: 24.5,13.5 @@ -21488,8 +19401,6 @@ entities: - pos: 24.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3604 components: - pos: 24.5,12.5 @@ -21530,8 +19441,6 @@ entities: - pos: 17.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3612 components: - pos: 16.5,12.5 @@ -21562,8 +19471,6 @@ entities: - pos: 12.5,13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3618 components: - pos: 11.5,24.5 @@ -21579,15 +19486,11 @@ entities: - pos: 9.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3622 components: - pos: 9.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3624 components: - pos: 9.5,25.5 @@ -21663,8 +19566,6 @@ entities: - pos: -2.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3643 components: - pos: 41.5,2.5 @@ -21725,15 +19626,11 @@ entities: - pos: 48.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3657 components: - pos: 47.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3659 components: - pos: 40.5,2.5 @@ -21789,8 +19686,6 @@ entities: - pos: 31.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3671 components: - pos: 43.5,2.5 @@ -21816,8 +19711,6 @@ entities: - pos: 21.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3682 components: - pos: 21.5,-7.5 @@ -21848,15 +19741,11 @@ entities: - pos: 22.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3688 components: - pos: 20.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3689 components: - pos: 19.5,-9.5 @@ -21932,8 +19821,6 @@ entities: - pos: 8.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3704 components: - pos: 8.5,-12.5 @@ -22034,8 +19921,6 @@ entities: - pos: 16.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3746 components: - pos: 17.5,-13.5 @@ -22046,78 +19931,56 @@ entities: - pos: -2.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3755 components: - pos: -2.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3756 components: - pos: -3.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3757 components: - pos: -4.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3758 components: - pos: -5.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3759 components: - pos: -5.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3760 components: - pos: -6.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3761 components: - pos: -7.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3762 components: - pos: -8.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3763 components: - pos: -9.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3764 components: - pos: -9.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3765 components: - pos: -9.5,-7.5 @@ -22148,8 +20011,6 @@ entities: - pos: -12.5,-5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3771 components: - pos: -12.5,-4.5 @@ -22195,8 +20056,6 @@ entities: - pos: -11.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3781 components: - pos: -21.5,-9.5 @@ -22232,22 +20091,16 @@ entities: - pos: -17.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3788 components: - pos: -16.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3789 components: - pos: -15.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3790 components: - pos: -14.5,-9.5 @@ -22308,8 +20161,6 @@ entities: - pos: -29.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3805 components: - pos: -29.5,-5.5 @@ -22330,36 +20181,26 @@ entities: - pos: -30.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3809 components: - pos: -32.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3810 components: - pos: -32.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3811 components: - pos: -32.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3812 components: - pos: -33.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3813 components: - pos: -34.5,9.5 @@ -22400,15 +20241,11 @@ entities: - pos: -39.5,11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3821 components: - pos: -28.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3822 components: - pos: -31.5,9.5 @@ -22454,15 +20291,11 @@ entities: - pos: -12.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3839 components: - pos: 21.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3846 components: - pos: -6.5,15.5 @@ -22478,29 +20311,21 @@ entities: - pos: -3.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3850 components: - pos: -16.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3870 components: - pos: -4.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3879 components: - pos: -31.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3896 components: - pos: -7.5,15.5 @@ -22511,29 +20336,21 @@ entities: - pos: 13.5,-24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3920 components: - pos: 13.5,-23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4054 components: - pos: -5.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4139 components: - pos: 8.5,27.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4201 components: - pos: -10.5,15.5 @@ -22544,15 +20361,11 @@ entities: - pos: 78.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4335 components: - pos: 78.5,4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4338 components: - pos: 18.5,-13.5 @@ -22563,225 +20376,161 @@ entities: - pos: 78.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4349 components: - pos: 78.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4350 components: - pos: 78.5,5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4351 components: - pos: 64.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4352 components: - pos: 64.5,8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4354 components: - pos: 66.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4355 components: - pos: 67.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4356 components: - pos: 69.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4357 components: - pos: 71.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4358 components: - pos: 73.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4359 components: - pos: 75.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4360 components: - pos: 77.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4362 components: - pos: 64.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4363 components: - pos: 64.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4365 components: - pos: 65.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4366 components: - pos: 68.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4367 components: - pos: 78.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4369 components: - pos: 76.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4370 components: - pos: 74.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4371 components: - pos: 72.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4372 components: - pos: 70.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4373 components: - pos: 64.5,5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4450 components: - pos: 74.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4543 components: - pos: 73.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4544 components: - pos: 77.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4545 components: - pos: 76.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4546 components: - pos: 78.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4547 components: - pos: 78.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4553 components: - pos: 78.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4651 components: - pos: 64.5,-1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4652 components: - pos: 64.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4653 components: - pos: 64.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4822 components: - pos: 23.5,-11.5 @@ -22802,50 +20551,36 @@ entities: - pos: 1.5,-30.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4911 components: - pos: 78.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4999 components: - pos: -0.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5014 components: - pos: 64.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5108 components: - pos: 66.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5122 components: - pos: 67.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5261 components: - pos: 68.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5650 components: - pos: -4.5,-21.5 @@ -22951,8 +20686,6 @@ entities: - pos: 64.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6296 components: - pos: -10.5,-20.5 @@ -22963,36 +20696,26 @@ entities: - pos: 78.5,0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6318 components: - pos: 78.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6319 components: - pos: 78.5,3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6325 components: - pos: 78.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6371 components: - pos: 34.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6372 components: - pos: 35.5,10.5 @@ -23003,8 +20726,6 @@ entities: - pos: 37.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6450 components: - pos: 43.5,6.5 @@ -23030,8 +20751,6 @@ entities: - pos: 34.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6556 components: - pos: 34.5,8.5 @@ -23042,8 +20761,6 @@ entities: - pos: 34.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6589 components: - pos: 34.5,6.5 @@ -23074,8 +20791,6 @@ entities: - pos: 34.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6595 components: - pos: 34.5,0.5 @@ -23091,78 +20806,56 @@ entities: - pos: 64.5,3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6856 components: - pos: 64.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6882 components: - pos: 64.5,4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6922 components: - pos: 69.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6923 components: - pos: 70.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6924 components: - pos: 71.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6925 components: - pos: 72.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7136 components: - pos: 23.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7168 components: - pos: 0.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7177 components: - pos: 75.5,-4.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7209 components: - pos: -26.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7255 components: - pos: -11.5,-18.5 @@ -23198,29 +20891,21 @@ entities: - pos: 15.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8071 components: - pos: -18.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8077 components: - pos: 12.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8078 components: - pos: 12.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8079 components: - pos: 11.5,19.5 @@ -23256,15 +20941,11 @@ entities: - pos: 61.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8162 components: - pos: 55.5,5.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8185 components: - pos: 50.5,1.5 @@ -23290,8 +20971,6 @@ entities: - pos: 54.5,1.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8190 components: - pos: 55.5,1.5 @@ -23332,22 +21011,16 @@ entities: - pos: 61.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8198 components: - pos: 62.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8199 components: - pos: 63.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8205 components: - pos: -6.5,-25.5 @@ -23363,8 +21036,6 @@ entities: - pos: -11.5,-17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8669 components: - pos: -31.5,-31.5 @@ -23405,8 +21076,6 @@ entities: - pos: -32.5,-25.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 8782 components: - pos: -8.5,15.5 @@ -23422,29 +21091,21 @@ entities: - pos: -18.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9082 components: - pos: -18.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9083 components: - pos: -17.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9084 components: - pos: -17.5,14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9141 components: - pos: 21.5,-11.5 @@ -23455,29 +21116,21 @@ entities: - pos: 55.5,6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9276 components: - pos: -9.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9278 components: - pos: -10.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9505 components: - pos: -2.5,-21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 9618 components: - pos: -16.5,14.5 @@ -23533,29 +21186,21 @@ entities: - pos: 62.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10235 components: - pos: 63.5,7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10269 components: - pos: 50.5,-7.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10270 components: - pos: 53.5,-0.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10305 components: - pos: 53.5,-1.5 @@ -23571,85 +21216,61 @@ entities: - pos: -15.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10357 components: - pos: -26.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10360 components: - pos: -27.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10361 components: - pos: -28.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10362 components: - pos: -29.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10363 components: - pos: -30.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10364 components: - pos: -31.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10365 components: - pos: -32.5,-11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10366 components: - pos: -32.5,-10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10367 components: - pos: -32.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10368 components: - pos: -32.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10369 components: - pos: -31.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10370 components: - pos: -30.5,-8.5 @@ -23665,8 +21286,6 @@ entities: - pos: -14.5,-12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10447 components: - pos: -13.5,-12.5 @@ -23697,8 +21316,6 @@ entities: - pos: 55.5,-3.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10609 components: - pos: 50.5,-6.5 @@ -23734,50 +21351,36 @@ entities: - pos: 55.5,-6.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10868 components: - pos: 53.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10869 components: - pos: 53.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10871 components: - pos: 55.5,-9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10872 components: - pos: 52.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10873 components: - pos: 51.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10874 components: - pos: 50.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10877 components: - pos: 55.5,-7.5 @@ -23788,8 +21391,6 @@ entities: - pos: 55.5,-8.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10963 components: - pos: 51.5,-3.5 @@ -23800,8 +21401,6 @@ entities: - pos: 51.5,-2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10965 components: - pos: 54.5,-9.5 @@ -23817,29 +21416,21 @@ entities: - pos: -28.5,-13.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11210 components: - pos: -28.5,-14.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11211 components: - pos: -28.5,-15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11212 components: - pos: -28.5,-16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11248 components: - pos: -31.5,7.5 @@ -23850,8 +21441,6 @@ entities: - pos: 58.5,2.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11285 components: - pos: 45.5,8.5 @@ -23917,29 +21506,21 @@ entities: - pos: 51.5,12.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11298 components: - pos: 51.5,11.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11299 components: - pos: 51.5,10.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11300 components: - pos: 51.5,9.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11301 components: - pos: 49.5,12.5 @@ -29449,13 +27030,6 @@ entities: pos: -19.198872,-5.9850674 parent: 31 type: Transform -- proto: ClothingNeckStethoscope - entities: - - uid: 10905 - components: - - pos: 8.569585,-4.4095354 - parent: 31 - type: Transform - proto: ClothingNeckTieRed entities: - uid: 7109 @@ -31355,12 +28929,6 @@ entities: - pos: -15.5,-25.5 parent: 31 type: Transform - - uid: 3946 - components: - - rot: 3.141592653589793 rad - pos: 12.5,1.5 - parent: 31 - type: Transform - proto: DisposalPipe entities: - uid: 56 @@ -32463,6 +30031,11 @@ entities: - pos: -5.5,9.5 parent: 31 type: Transform + - uid: 4325 + components: + - pos: 12.5,1.5 + parent: 31 + type: Transform - uid: 4329 components: - rot: -1.5707963267948966 rad @@ -33215,12 +30788,6 @@ entities: - pos: -22.5,6.5 parent: 31 type: Transform - - uid: 769 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,1.5 - parent: 31 - type: Transform - uid: 837 components: - pos: -29.5,11.5 @@ -33860,8 +31427,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 1187 components: @@ -33870,8 +31435,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 1224 components: @@ -33881,8 +31444,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 1226 components: @@ -33891,8 +31452,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 1248 components: @@ -33902,8 +31461,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 1293 components: @@ -33913,8 +31470,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 1299 components: @@ -33923,8 +31478,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 1345 components: @@ -33934,8 +31487,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 1512 components: @@ -33944,8 +31495,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 2080 components: @@ -33954,8 +31503,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 5354 components: @@ -33979,8 +31526,6 @@ entities: type: Transform - enabled: True type: PointLight - - enabled: True - type: AmbientSound - type: ActiveEmergencyLight - uid: 10310 components: @@ -34825,6 +32370,9 @@ entities: - pos: 38.5,-5.5 parent: 31 type: Transform + - secondsUntilStateChange: -574.4122 + state: Closing + type: Door - uid: 4019 components: - pos: 11.5,14.5 @@ -36373,15 +33921,11 @@ entities: - pos: 39.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 21 components: - pos: 41.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 129 components: - rot: 1.5707963267948966 rad @@ -36395,15 +33939,11 @@ entities: - pos: 45.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 898 components: - pos: 43.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 954 components: - rot: -1.5707963267948966 rad @@ -36412,8 +33952,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 981 components: - pos: 10.5,24.5 @@ -36436,8 +33974,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 2227 components: - rot: -1.5707963267948966 rad @@ -36449,15 +33985,11 @@ entities: - pos: 37.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3011 components: - pos: 35.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 3206 components: - rot: 3.141592653589793 rad @@ -36508,8 +34040,6 @@ entities: - pos: 47.5,23.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5456 components: - rot: 1.5707963267948966 rad @@ -36655,8 +34185,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5722 components: - rot: 3.141592653589793 rad @@ -36679,8 +34207,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5779 components: - pos: 15.5,-25.5 @@ -36688,8 +34214,14 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound + - uid: 5783 + components: + - rot: 1.5707963267948966 rad + pos: -22.5,23.5 + parent: 31 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor - uid: 5892 components: - rot: 3.141592653589793 rad @@ -36706,8 +34238,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5897 components: - rot: -1.5707963267948966 rad @@ -36716,17 +34246,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - - uid: 5925 - components: - - pos: -22.5,24.5 - parent: 31 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5944 components: - pos: 8.5,9.5 @@ -36862,30 +34381,22 @@ entities: pos: 56.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6559 components: - pos: 49.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6565 components: - pos: 56.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6633 components: - rot: 1.5707963267948966 rad pos: 48.5,24.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7091 components: - rot: 3.141592653589793 rad @@ -36915,16 +34426,12 @@ entities: pos: 54.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7228 components: - rot: 1.5707963267948966 rad pos: 54.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7426 components: - rot: 1.5707963267948966 rad @@ -36933,8 +34440,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7726 components: - rot: 3.141592653589793 rad @@ -36966,8 +34471,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 9354 components: - rot: 3.141592653589793 rad @@ -36976,8 +34479,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 9355 components: - rot: 1.5707963267948966 rad @@ -36986,8 +34487,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10381 components: - rot: 1.5707963267948966 rad @@ -37010,8 +34509,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10956 components: - rot: 3.141592653589793 rad @@ -37020,8 +34517,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10957 components: - rot: 1.5707963267948966 rad @@ -37030,8 +34525,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - proto: GasPipeFourway entities: - uid: 583 @@ -37139,15 +34632,11 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6483 components: - pos: 50.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7414 components: - pos: 2.5,-16.5 @@ -37169,22 +34658,16 @@ entities: - pos: 39.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 110 components: - pos: 39.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 111 components: - pos: 41.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 115 components: - rot: 1.5707963267948966 rad @@ -37193,8 +34676,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 132 components: - rot: 1.5707963267948966 rad @@ -37208,8 +34689,6 @@ entities: - pos: 39.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 347 components: - rot: -1.5707963267948966 rad @@ -37237,31 +34716,23 @@ entities: - pos: 45.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 561 components: - rot: 3.141592653589793 rad pos: 35.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 602 components: - rot: 3.141592653589793 rad pos: 42.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 715 components: - pos: 37.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 750 components: - pos: -24.5,12.5 @@ -37269,24 +34740,18 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 773 components: - rot: 3.141592653589793 rad pos: 40.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 789 components: - rot: 3.141592653589793 rad pos: 38.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 800 components: - pos: -9.5,-20.5 @@ -37299,16 +34764,12 @@ entities: - pos: 39.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 822 components: - rot: 3.141592653589793 rad pos: 40.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 899 components: - pos: -4.5,24.5 @@ -37316,16 +34777,12 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 925 components: - rot: 3.141592653589793 rad pos: 44.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 928 components: - rot: 1.5707963267948966 rad @@ -37340,8 +34797,6 @@ entities: pos: 38.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 980 components: - rot: 1.5707963267948966 rad @@ -37356,16 +34811,12 @@ entities: pos: 42.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1067 components: - rot: 3.141592653589793 rad pos: 44.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1086 components: - pos: -9.5,-17.5 @@ -37373,8 +34824,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 1093 components: - pos: -9.5,-18.5 @@ -37388,8 +34837,6 @@ entities: pos: 56.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1165 components: - rot: 1.5707963267948966 rad @@ -37451,37 +34898,27 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 1514 components: - rot: 3.141592653589793 rad pos: 35.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1515 components: - pos: 33.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1516 components: - pos: 36.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1533 components: - pos: 39.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1543 components: - rot: 1.5707963267948966 rad @@ -37522,8 +34959,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 1716 components: - rot: 1.5707963267948966 rad @@ -37555,8 +34990,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 1773 components: - rot: -1.5707963267948966 rad @@ -37573,16 +35006,12 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 1804 components: - rot: 3.141592653589793 rad pos: 35.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 1810 components: - rot: -1.5707963267948966 rad @@ -37599,8 +35028,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 2207 components: - rot: 3.141592653589793 rad @@ -37621,38 +35048,28 @@ entities: - pos: 34.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2333 components: - pos: 34.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2401 components: - rot: 3.141592653589793 rad pos: 42.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2414 components: - pos: 37.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2559 components: - rot: 3.141592653589793 rad pos: 44.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 2669 components: - rot: 3.141592653589793 rad @@ -37757,8 +35174,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 3411 components: - rot: -1.5707963267948966 rad @@ -37775,15 +35190,11 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 3873 components: - pos: 35.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4024 components: - rot: -1.5707963267948966 rad @@ -37852,8 +35263,6 @@ entities: pos: 38.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4200 components: - rot: -1.5707963267948966 rad @@ -37933,8 +35342,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 4485 components: - pos: -37.5,-8.5 @@ -37972,8 +35379,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 4687 components: - rot: -1.5707963267948966 rad @@ -37997,8 +35402,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 4704 components: - rot: -1.5707963267948966 rad @@ -38044,120 +35447,86 @@ entities: pos: 40.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4949 components: - pos: 47.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 4976 components: - pos: 41.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5012 components: - pos: 45.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5013 components: - pos: 43.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5015 components: - pos: 43.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5016 components: - pos: 45.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5030 components: - pos: 36.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5031 components: - pos: 36.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5044 components: - pos: 43.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5045 components: - pos: 45.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5046 components: - pos: 43.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5047 components: - pos: 45.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5048 components: - pos: 41.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5049 components: - pos: 41.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5050 components: - pos: 41.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5056 components: - pos: 43.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5123 components: - pos: -37.5,-10.5 @@ -38171,15 +35540,11 @@ entities: pos: 35.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5133 components: - pos: 37.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5155 components: - rot: 1.5707963267948966 rad @@ -38188,15 +35553,11 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5158 components: - pos: 49.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5240 components: - rot: 1.5707963267948966 rad @@ -38205,39 +35566,29 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5308 components: - pos: 48.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5309 components: - rot: -1.5707963267948966 rad pos: 54.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5310 components: - rot: -1.5707963267948966 rad pos: 53.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5311 components: - rot: -1.5707963267948966 rad pos: 54.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5323 components: - pos: 2.5,2.5 @@ -39132,8 +36483,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5480 components: - rot: 1.5707963267948966 rad @@ -39334,8 +36683,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5511 components: - rot: 1.5707963267948966 rad @@ -39653,8 +37000,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5568 components: - pos: 11.5,-7.5 @@ -39692,8 +37037,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5576 components: - rot: 1.5707963267948966 rad @@ -39741,8 +37084,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5588 components: - rot: 1.5707963267948966 rad @@ -39892,8 +37233,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5620 components: - rot: -1.5707963267948966 rad @@ -39902,8 +37241,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5621 components: - rot: -1.5707963267948966 rad @@ -39912,8 +37249,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5622 components: - rot: -1.5707963267948966 rad @@ -39946,8 +37281,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5641 components: - rot: 1.5707963267948966 rad @@ -40020,8 +37353,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5654 components: - rot: 1.5707963267948966 rad @@ -40062,8 +37393,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5659 components: - rot: 1.5707963267948966 rad @@ -40166,8 +37495,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5685 components: - pos: 14.5,-19.5 @@ -40183,8 +37510,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5688 components: - rot: -1.5707963267948966 rad @@ -40193,8 +37518,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5689 components: - rot: -1.5707963267948966 rad @@ -40203,8 +37526,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5690 components: - rot: -1.5707963267948966 rad @@ -40213,8 +37534,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5691 components: - rot: -1.5707963267948966 rad @@ -40223,8 +37542,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5693 components: - pos: 8.5,-21.5 @@ -40232,8 +37549,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5694 components: - pos: 8.5,-22.5 @@ -40263,8 +37578,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5716 components: - rot: 1.5707963267948966 rad @@ -40303,8 +37616,6 @@ entities: pos: 53.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 5762 components: - rot: -1.5707963267948966 rad @@ -40313,8 +37624,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5768 components: - rot: 1.5707963267948966 rad @@ -40331,8 +37640,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5775 components: - rot: 3.141592653589793 rad @@ -40341,8 +37648,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5776 components: - rot: 3.141592653589793 rad @@ -40351,8 +37656,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5777 components: - rot: 3.141592653589793 rad @@ -40361,8 +37664,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5780 components: - rot: 3.141592653589793 rad @@ -40371,8 +37672,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5781 components: - rot: 3.141592653589793 rad @@ -40381,38 +37680,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - - uid: 5782 - components: - - rot: 3.141592653589793 rad - pos: 15.5,-28.5 - parent: 31 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - enabled: True - type: AmbientSound - - uid: 5783 - components: - - rot: 3.141592653589793 rad - pos: 15.5,-29.5 - parent: 31 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - enabled: True - type: AmbientSound - - uid: 5784 - components: - - rot: 3.141592653589793 rad - pos: 15.5,-30.5 - parent: 31 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5786 components: - rot: 1.5707963267948966 rad @@ -40437,8 +37704,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5789 components: - rot: 1.5707963267948966 rad @@ -40591,8 +37856,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5814 components: - rot: 3.141592653589793 rad @@ -40609,8 +37872,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5816 components: - rot: 3.141592653589793 rad @@ -40683,8 +37944,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5827 components: - rot: 3.141592653589793 rad @@ -40836,8 +38095,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5853 components: - rot: -1.5707963267948966 rad @@ -41029,8 +38286,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5888 components: - rot: -1.5707963267948966 rad @@ -41071,8 +38326,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5900 components: - rot: 1.5707963267948966 rad @@ -41081,8 +38334,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5901 components: - pos: -18.5,20.5 @@ -41090,8 +38341,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5902 components: - pos: -18.5,21.5 @@ -41099,8 +38348,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5903 components: - pos: -18.5,22.5 @@ -41108,8 +38355,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5904 components: - pos: -18.5,23.5 @@ -41117,8 +38362,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5905 components: - pos: -18.5,24.5 @@ -41126,8 +38369,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5906 components: - rot: -1.5707963267948966 rad @@ -41136,8 +38377,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5907 components: - rot: -1.5707963267948966 rad @@ -41146,8 +38385,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5908 components: - rot: -1.5707963267948966 rad @@ -41156,8 +38393,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5909 components: - rot: -1.5707963267948966 rad @@ -41166,8 +38401,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5910 components: - rot: -1.5707963267948966 rad @@ -41176,8 +38409,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5911 components: - rot: -1.5707963267948966 rad @@ -41186,8 +38417,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5912 components: - rot: -1.5707963267948966 rad @@ -41196,8 +38425,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5913 components: - rot: -1.5707963267948966 rad @@ -41206,8 +38433,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5914 components: - rot: -1.5707963267948966 rad @@ -41216,8 +38441,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5915 components: - rot: -1.5707963267948966 rad @@ -41226,8 +38449,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5916 components: - pos: 50.5,18.5 @@ -41235,8 +38456,6 @@ entities: type: Transform - color: '#FF1212FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5918 components: - rot: 3.141592653589793 rad @@ -41245,8 +38464,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5919 components: - rot: 3.141592653589793 rad @@ -41255,8 +38472,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5920 components: - rot: 3.141592653589793 rad @@ -41265,8 +38480,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5921 components: - rot: 3.141592653589793 rad @@ -41275,8 +38488,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5922 components: - rot: 3.141592653589793 rad @@ -41285,8 +38496,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5923 components: - rot: 3.141592653589793 rad @@ -41295,26 +38504,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - uid: 5926 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,24.5 - parent: 31 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - enabled: True - type: AmbientSound - - uid: 5927 - components: - - rot: -1.5707963267948966 rad - pos: -24.5,24.5 - parent: 31 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5930 components: - rot: 1.5707963267948966 rad @@ -41323,8 +38512,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5931 components: - rot: 1.5707963267948966 rad @@ -41333,8 +38520,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5932 components: - rot: 1.5707963267948966 rad @@ -41343,8 +38528,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5933 components: - rot: 1.5707963267948966 rad @@ -41353,8 +38536,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5934 components: - rot: 1.5707963267948966 rad @@ -41363,8 +38544,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5935 components: - rot: 1.5707963267948966 rad @@ -41373,8 +38552,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5936 components: - rot: 1.5707963267948966 rad @@ -41383,8 +38560,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5937 components: - rot: 1.5707963267948966 rad @@ -41393,8 +38568,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5942 components: - rot: 3.141592653589793 rad @@ -41670,8 +38843,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6005 components: - rot: 3.141592653589793 rad @@ -41736,8 +38907,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6014 components: - rot: 3.141592653589793 rad @@ -41802,8 +38971,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6036 components: - rot: 1.5707963267948966 rad @@ -41828,8 +38995,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6039 components: - rot: 1.5707963267948966 rad @@ -42190,8 +39355,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6103 components: - rot: -1.5707963267948966 rad @@ -42515,8 +39678,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6170 components: - rot: 1.5707963267948966 rad @@ -42539,8 +39700,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6173 components: - pos: 32.5,8.5 @@ -42612,8 +39771,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6190 components: - pos: 32.5,0.5 @@ -42810,8 +39967,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6234 components: - pos: 49.5,2.5 @@ -42868,8 +40023,6 @@ entities: pos: 52.5,16.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6254 components: - rot: 3.141592653589793 rad @@ -42878,8 +40031,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6260 components: - pos: 22.5,14.5 @@ -42887,8 +40038,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6263 components: - pos: 38.5,2.5 @@ -42935,8 +40084,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6273 components: - rot: 3.141592653589793 rad @@ -42967,15 +40114,11 @@ entities: pos: 53.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6363 components: - pos: 37.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6392 components: - pos: 43.5,8.5 @@ -42991,8 +40134,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6394 components: - rot: 1.5707963267948966 rad @@ -43009,24 +40150,18 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6427 components: - rot: -1.5707963267948966 rad pos: 52.5,15.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6478 components: - rot: -1.5707963267948966 rad pos: 52.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6534 components: - rot: 1.5707963267948966 rad @@ -43056,8 +40191,6 @@ entities: - pos: 46.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6572 components: - rot: -1.5707963267948966 rad @@ -43079,22 +40212,16 @@ entities: - pos: 37.5,22.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6727 components: - pos: 49.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6743 components: - pos: 48.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6895 components: - rot: -1.5707963267948966 rad @@ -43142,8 +40269,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7076 components: - rot: 1.5707963267948966 rad @@ -43152,8 +40277,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7129 components: - rot: -1.5707963267948966 rad @@ -43175,8 +40298,6 @@ entities: - pos: 34.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 7143 components: - rot: -1.5707963267948966 rad @@ -43201,8 +40322,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7175 components: - rot: 3.141592653589793 rad @@ -43211,8 +40330,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7179 components: - rot: -1.5707963267948966 rad @@ -43253,8 +40370,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7207 components: - rot: -1.5707963267948966 rad @@ -43303,8 +40418,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7266 components: - rot: 3.141592653589793 rad @@ -43313,8 +40426,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7267 components: - rot: 3.141592653589793 rad @@ -43323,8 +40434,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7268 components: - rot: 3.141592653589793 rad @@ -43451,8 +40560,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7736 components: - rot: 3.141592653589793 rad @@ -43501,8 +40608,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7743 components: - rot: 3.141592653589793 rad @@ -43638,8 +40743,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 8793 components: - rot: -1.5707963267948966 rad @@ -43706,8 +40809,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 9350 components: - pos: -25.5,18.5 @@ -43715,8 +40816,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 9351 components: - rot: -1.5707963267948966 rad @@ -43725,8 +40824,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 9352 components: - rot: -1.5707963267948966 rad @@ -43735,8 +40832,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 9816 components: - rot: 3.141592653589793 rad @@ -43979,8 +41074,6 @@ entities: pos: 56.5,17.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 10432 components: - rot: 1.5707963267948966 rad @@ -44027,8 +41120,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10452 components: - pos: -8.5,-25.5 @@ -44089,8 +41180,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10460 components: - rot: -1.5707963267948966 rad @@ -44188,8 +41277,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10488 components: - pos: -7.5,-25.5 @@ -44237,8 +41324,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10494 components: - rot: -1.5707963267948966 rad @@ -44294,8 +41379,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10920 components: - rot: 3.141592653589793 rad @@ -44320,8 +41403,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10923 components: - rot: 3.141592653589793 rad @@ -44330,8 +41411,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10924 components: - rot: 3.141592653589793 rad @@ -44340,8 +41419,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10925 components: - rot: 3.141592653589793 rad @@ -44350,8 +41427,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10926 components: - rot: 3.141592653589793 rad @@ -44360,8 +41435,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10927 components: - rot: 1.5707963267948966 rad @@ -44370,8 +41443,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10928 components: - rot: 1.5707963267948966 rad @@ -44449,8 +41520,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10941 components: - rot: -1.5707963267948966 rad @@ -44474,8 +41543,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10945 components: - pos: 48.5,-7.5 @@ -44491,8 +41558,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10947 components: - rot: -1.5707963267948966 rad @@ -44501,8 +41566,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10948 components: - rot: -1.5707963267948966 rad @@ -44511,8 +41574,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10949 components: - rot: -1.5707963267948966 rad @@ -44521,8 +41582,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10950 components: - rot: -1.5707963267948966 rad @@ -44531,8 +41590,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10951 components: - rot: -1.5707963267948966 rad @@ -44541,8 +41598,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10952 components: - rot: 3.141592653589793 rad @@ -44551,8 +41606,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10953 components: - rot: 3.141592653589793 rad @@ -44561,8 +41614,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 11051 components: - rot: -1.5707963267948966 rad @@ -44574,57 +41625,41 @@ entities: - pos: 49.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11058 components: - pos: 48.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11063 components: - pos: 46.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11064 components: - pos: 47.5,21.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11065 components: - pos: 47.5,20.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11066 components: - pos: 47.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11067 components: - pos: 47.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 11068 components: - pos: 46.5,19.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - proto: GasPipeTJunction entities: - uid: 53 @@ -44830,8 +41865,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5392 components: - pos: 3.5,3.5 @@ -45099,8 +42132,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5715 components: - rot: -1.5707963267948966 rad @@ -45157,8 +42188,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 5822 components: - rot: 1.5707963267948966 rad @@ -45213,14 +42242,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - uid: 5924 - components: - - rot: 1.5707963267948966 rad - pos: -22.5,23.5 - parent: 31 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - uid: 5955 components: - rot: 3.141592653589793 rad @@ -45429,15 +42450,11 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 6906 components: - pos: 55.5,18.5 parent: 31 type: Transform - - enabled: True - type: AmbientSound - uid: 6943 components: - pos: 49.5,3.5 @@ -45460,8 +42477,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 7159 components: - pos: 8.5,20.5 @@ -45608,8 +42623,6 @@ entities: type: Transform - color: '#990000FF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - uid: 10931 components: - rot: 1.5707963267948966 rad @@ -45634,8 +42647,6 @@ entities: type: Transform - color: '#0055CCFF' type: AtmosPipeColor - - enabled: True - type: AmbientSound - proto: GasPort entities: - uid: 188 @@ -45821,8 +42832,6 @@ entities: type: Transform - open: False type: GasValve - - enabled: False - type: AmbientSound - uid: 6479 components: - pos: 50.5,19.5 @@ -45837,8 +42846,6 @@ entities: - pos: 15.5,-7.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 100 @@ -45847,8 +42854,6 @@ entities: pos: 3.5,-17.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 716 @@ -45856,8 +42861,6 @@ entities: - pos: 7.5,26.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 977 @@ -45865,8 +42868,6 @@ entities: - pos: 10.5,26.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 1094 @@ -45875,8 +42876,6 @@ entities: pos: 21.5,-9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 1230 @@ -45885,8 +42884,6 @@ entities: pos: 9.5,20.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 1305 @@ -45895,8 +42892,6 @@ entities: pos: -18.5,-12.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 1688 @@ -45904,8 +42899,6 @@ entities: - pos: -36.5,18.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 2213 @@ -45914,8 +42907,6 @@ entities: pos: 10.5,-14.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 3116 @@ -45924,8 +42915,6 @@ entities: pos: 26.5,9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 3368 @@ -45933,8 +42922,6 @@ entities: - pos: -5.5,16.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 3419 @@ -45942,8 +42929,6 @@ entities: - pos: 12.5,26.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 3835 @@ -45952,8 +42937,6 @@ entities: pos: 19.5,-17.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 4013 @@ -45965,8 +42948,6 @@ entities: - ShutdownSubscribers: - 7345 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 4185 @@ -45974,8 +42955,6 @@ entities: - pos: -7.5,20.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 4266 @@ -45984,8 +42963,6 @@ entities: pos: 23.5,15.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 4267 @@ -45997,8 +42974,6 @@ entities: - ShutdownSubscribers: - 7104 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 4303 @@ -46007,8 +42982,14 @@ entities: pos: -2.5,-15.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4468 + components: + - rot: 3.141592653589793 rad + pos: 15.5,-28.5 + parent: 31 + type: Transform - color: '#0055CCFF' type: AtmosPipeColor - uid: 4484 @@ -46017,8 +42998,6 @@ entities: pos: -35.5,-9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5365 @@ -46027,8 +43006,6 @@ entities: pos: 3.5,-5.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5472 @@ -46036,8 +43013,6 @@ entities: - pos: 3.5,6.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5476 @@ -46046,8 +43021,6 @@ entities: pos: 22.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5479 @@ -46055,8 +43028,6 @@ entities: - pos: 14.5,11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5495 @@ -46064,8 +43035,6 @@ entities: - pos: 8.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5542 @@ -46073,8 +43042,6 @@ entities: - pos: -12.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5543 @@ -46082,8 +43049,6 @@ entities: - pos: -1.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5546 @@ -46092,8 +43057,6 @@ entities: pos: -17.5,-1.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5605 @@ -46101,8 +43064,6 @@ entities: - pos: 16.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5606 @@ -46114,8 +43075,6 @@ entities: - ShutdownSubscribers: - 11002 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5638 @@ -46124,8 +43083,6 @@ entities: pos: 14.5,-16.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5666 @@ -46134,8 +43091,6 @@ entities: pos: 23.5,-5.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5698 @@ -46144,18 +43099,6 @@ entities: pos: 9.5,-25.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5785 - components: - - rot: 3.141592653589793 rad - pos: 15.5,-31.5 - parent: 31 - type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5848 @@ -46164,8 +43107,6 @@ entities: pos: 3.5,19.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5868 @@ -46174,8 +43115,6 @@ entities: pos: 3.5,24.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5869 @@ -46184,8 +43123,6 @@ entities: pos: -1.5,25.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5870 @@ -46193,18 +43130,6 @@ entities: - pos: 4.5,30.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5928 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,24.5 - parent: 31 - type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5929 @@ -46213,8 +43138,6 @@ entities: pos: -21.5,23.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5941 @@ -46223,8 +43146,6 @@ entities: pos: 13.5,14.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 5950 @@ -46233,8 +43154,6 @@ entities: pos: 7.5,9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6018 @@ -46243,8 +43162,6 @@ entities: pos: -12.5,15.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6033 @@ -46252,8 +43169,6 @@ entities: - pos: -12.5,19.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6041 @@ -46262,8 +43177,6 @@ entities: pos: -0.5,7.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6043 @@ -46272,8 +43185,6 @@ entities: pos: -2.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6071 @@ -46282,8 +43193,6 @@ entities: pos: -11.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6118 @@ -46292,8 +43201,6 @@ entities: pos: -27.5,8.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6119 @@ -46302,8 +43209,6 @@ entities: pos: -25.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6138 @@ -46312,8 +43217,6 @@ entities: pos: -29.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6151 @@ -46322,8 +43225,6 @@ entities: pos: -36.5,5.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6169 @@ -46332,8 +43233,6 @@ entities: pos: -36.5,-6.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6184 @@ -46342,8 +43241,6 @@ entities: pos: 34.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6197 @@ -46352,8 +43249,6 @@ entities: pos: 39.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6262 @@ -46362,8 +43257,6 @@ entities: pos: 20.5,9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6268 @@ -46372,8 +43265,6 @@ entities: pos: 38.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6275 @@ -46382,8 +43273,6 @@ entities: pos: 32.5,-2.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6294 @@ -46394,8 +43283,6 @@ entities: - ShutdownSubscribers: - 5107 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 6533 @@ -46404,8 +43291,6 @@ entities: pos: 49.5,7.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 7099 @@ -46413,8 +43298,6 @@ entities: - pos: 32.5,11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 7185 @@ -46423,8 +43306,6 @@ entities: pos: 56.5,1.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 7335 @@ -46436,8 +43317,6 @@ entities: - ShutdownSubscribers: - 7345 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 7746 @@ -46445,8 +43324,6 @@ entities: - pos: -35.5,14.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 8384 @@ -46458,8 +43335,6 @@ entities: - ShutdownSubscribers: - 5107 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 8417 @@ -46468,8 +43343,6 @@ entities: pos: 8.5,17.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 8794 @@ -46478,8 +43351,6 @@ entities: pos: -16.5,11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 8873 @@ -46488,8 +43359,6 @@ entities: pos: 3.5,13.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 8875 @@ -46498,8 +43367,6 @@ entities: pos: 28.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 8880 @@ -46507,8 +43374,6 @@ entities: - pos: 46.5,3.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 8944 @@ -46517,8 +43382,6 @@ entities: pos: 10.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 10376 @@ -46527,8 +43390,6 @@ entities: pos: 4.5,-30.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 10377 @@ -46540,8 +43401,6 @@ entities: - ShutdownSubscribers: - 7904 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 10386 @@ -46550,8 +43409,6 @@ entities: pos: -25.5,-3.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 10407 @@ -46563,8 +43420,6 @@ entities: - ShutdownSubscribers: - 10238 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 10424 @@ -46576,8 +43431,6 @@ entities: - ShutdownSubscribers: - 10371 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 10427 @@ -46589,8 +43442,6 @@ entities: - ShutdownSubscribers: - 10373 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 10929 @@ -46602,8 +43453,6 @@ entities: - ShutdownSubscribers: - 5107 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - uid: 10930 @@ -46615,8 +43464,6 @@ entities: - ShutdownSubscribers: - 5107 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#0055CCFF' type: AtmosPipeColor - proto: GasVentScrubber @@ -46627,8 +43474,6 @@ entities: pos: 15.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 753 @@ -46637,8 +43482,6 @@ entities: pos: 22.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 867 @@ -46647,8 +43490,6 @@ entities: pos: 7.5,23.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 1029 @@ -46657,8 +43498,6 @@ entities: pos: 3.5,-16.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 1032 @@ -46667,8 +43506,6 @@ entities: pos: 10.5,23.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 1140 @@ -46677,8 +43514,6 @@ entities: pos: -20.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 1542 @@ -46686,8 +43521,6 @@ entities: - pos: 35.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 2208 @@ -46695,8 +43528,6 @@ entities: - pos: -38.5,18.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 3117 @@ -46704,8 +43535,6 @@ entities: - pos: 21.5,12.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 3118 @@ -46714,8 +43543,6 @@ entities: pos: 26.5,10.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 3274 @@ -46723,8 +43550,6 @@ entities: - pos: 41.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 3840 @@ -46733,8 +43558,6 @@ entities: pos: 18.5,-18.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 4279 @@ -46746,8 +43569,6 @@ entities: - ShutdownSubscribers: - 7104 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 4436 @@ -46756,8 +43577,6 @@ entities: pos: -3.5,-17.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 4486 @@ -46766,8 +43585,6 @@ entities: pos: -37.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 4701 @@ -46776,8 +43593,6 @@ entities: pos: -7.5,21.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 4783 @@ -46786,8 +43601,6 @@ entities: pos: 9.5,-23.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5332 @@ -46796,8 +43609,6 @@ entities: pos: 3.5,-6.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5473 @@ -46806,8 +43617,6 @@ entities: pos: 3.5,2.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5474 @@ -46815,8 +43624,6 @@ entities: - pos: 7.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5477 @@ -46824,8 +43631,6 @@ entities: - pos: 21.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5478 @@ -46834,8 +43639,6 @@ entities: pos: 16.5,10.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5496 @@ -46844,8 +43647,6 @@ entities: pos: 9.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5541 @@ -46854,8 +43655,6 @@ entities: pos: -13.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5544 @@ -46864,8 +43663,6 @@ entities: pos: -8.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5545 @@ -46874,8 +43671,6 @@ entities: pos: -19.5,0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5597 @@ -46883,8 +43678,6 @@ entities: - pos: 17.5,-1.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5607 @@ -46896,8 +43689,6 @@ entities: - ShutdownSubscribers: - 11002 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5637 @@ -46906,8 +43697,6 @@ entities: pos: 14.5,-14.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5665 @@ -46916,8 +43705,6 @@ entities: pos: 22.5,-6.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5704 @@ -46926,8 +43713,6 @@ entities: pos: 3.5,-28.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5765 @@ -46936,8 +43721,6 @@ entities: pos: -7.5,13.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5849 @@ -46946,8 +43729,6 @@ entities: pos: 3.5,18.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5864 @@ -46956,8 +43737,6 @@ entities: pos: -1.5,24.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5865 @@ -46966,8 +43745,6 @@ entities: pos: 3.5,23.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5871 @@ -46975,8 +43752,6 @@ entities: - pos: 2.5,30.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5883 @@ -46985,8 +43760,6 @@ entities: pos: 9.5,17.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 5951 @@ -46994,8 +43767,6 @@ entities: - pos: 9.5,9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6024 @@ -47004,8 +43775,6 @@ entities: pos: -12.5,14.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6032 @@ -47014,8 +43783,6 @@ entities: pos: -12.5,20.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6042 @@ -47024,8 +43791,6 @@ entities: pos: -0.5,8.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6044 @@ -47033,8 +43798,6 @@ entities: - pos: -1.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6080 @@ -47042,8 +43805,6 @@ entities: - pos: -14.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6117 @@ -47051,8 +43812,6 @@ entities: - pos: -27.5,10.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6120 @@ -47060,8 +43819,6 @@ entities: - pos: -22.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6137 @@ -47069,8 +43826,6 @@ entities: - pos: -30.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6152 @@ -47078,8 +43833,6 @@ entities: - pos: -36.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6168 @@ -47088,8 +43841,6 @@ entities: pos: -36.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6267 @@ -47098,8 +43849,6 @@ entities: pos: 39.5,-0.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6276 @@ -47108,8 +43857,6 @@ entities: pos: 33.5,-1.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6413 @@ -47118,8 +43865,6 @@ entities: pos: 47.5,9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6552 @@ -47128,8 +43873,6 @@ entities: pos: 34.5,9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 6581 @@ -47138,8 +43881,6 @@ entities: pos: 21.5,15.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 7211 @@ -47148,8 +43889,6 @@ entities: pos: 56.5,3.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 7673 @@ -47158,8 +43897,6 @@ entities: pos: 7.5,-13.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 7745 @@ -47167,8 +43904,6 @@ entities: - pos: -37.5,14.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 8416 @@ -47176,8 +43911,6 @@ entities: - pos: 7.5,19.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 8438 @@ -47189,8 +43922,6 @@ entities: - ShutdownSubscribers: - 7345 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 8795 @@ -47199,8 +43930,6 @@ entities: pos: -16.5,10.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 8874 @@ -47209,8 +43938,6 @@ entities: pos: 3.5,12.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 8876 @@ -47218,8 +43945,6 @@ entities: - pos: 26.5,4.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 8879 @@ -47228,8 +43953,6 @@ entities: pos: 47.5,2.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10252 @@ -47238,8 +43961,6 @@ entities: pos: -36.5,-5.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10375 @@ -47251,8 +43972,6 @@ entities: - ShutdownSubscribers: - 7904 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10385 @@ -47261,8 +43980,6 @@ entities: pos: -22.5,-3.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10406 @@ -47274,8 +43991,6 @@ entities: - ShutdownSubscribers: - 10238 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10420 @@ -47287,8 +44002,6 @@ entities: - ShutdownSubscribers: - 7345 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10425 @@ -47300,8 +44013,6 @@ entities: - ShutdownSubscribers: - 10371 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10426 @@ -47313,8 +44024,6 @@ entities: - ShutdownSubscribers: - 10373 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10495 @@ -47323,8 +44032,6 @@ entities: pos: -32.5,-14.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10906 @@ -47336,8 +44043,6 @@ entities: - ShutdownSubscribers: - 5107 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10907 @@ -47349,8 +44054,6 @@ entities: - ShutdownSubscribers: - 5107 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10908 @@ -47362,8 +44065,6 @@ entities: - ShutdownSubscribers: - 5107 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - uid: 10909 @@ -47375,8 +44076,6 @@ entities: - ShutdownSubscribers: - 5107 type: DeviceNetwork - - enabled: False - type: AmbientSound - color: '#990000FF' type: AtmosPipeColor - proto: Gauze @@ -50658,6 +47357,13 @@ entities: - pos: 17.362448,-18.309433 parent: 31 type: Transform +- proto: HandheldStationMap + entities: + - uid: 5924 + components: + - pos: 40.50493,-0.0047982335 + parent: 31 + type: Transform - proto: HandLabeler entities: - uid: 695 @@ -50938,6 +47644,16 @@ entities: - pos: -2.8192544,-43.512707 parent: 31 type: Transform +- proto: Igniter + entities: + - uid: 4470 + components: + - pos: 55.552643,16.227009 + parent: 31 + type: Transform + - links: + - 4469 + type: DeviceLinkSink - proto: InflatableDoorStack entities: - uid: 3907 @@ -51234,13 +47950,6 @@ entities: pos: -19.5,-11.5 parent: 31 type: Transform -- proto: JawsOfLife - entities: - - uid: 5676 - components: - - pos: 40.49833,0.109007 - parent: 31 - type: Transform - proto: JetpackBlueFilled entities: - uid: 3862 @@ -51804,8 +48513,6 @@ entities: - pos: -5.5,-30.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - proto: MachineAnomalyVessel entities: - uid: 3422 @@ -52998,11 +49705,76 @@ entities: - pos: 41.74788,13.772052 parent: 31 type: Transform + - uid: 4467 + components: + - pos: 64.28407,4.268301 + parent: 31 + type: Transform + - uid: 5676 + components: + - pos: 64.28407,5.205801 + parent: 31 + type: Transform + - uid: 5782 + components: + - pos: 64.28407,3.346426 + parent: 31 + type: Transform + - uid: 5784 + components: + - pos: 56.151474,8.687842 + parent: 31 + type: Transform + - uid: 5785 + components: + - pos: 64.2372,1.2266263 + parent: 31 + type: Transform - uid: 6874 components: - pos: 41.718365,13.536064 parent: 31 type: Transform + - uid: 11326 + components: + - pos: 64.25282,0.19537628 + parent: 31 + type: Transform + - uid: 11327 + components: + - pos: 64.2372,-0.8046237 + parent: 31 + type: Transform + - uid: 11328 + components: + - pos: 78.24022,-0.8202487 + parent: 31 + type: Transform + - uid: 11329 + components: + - pos: 78.27147,0.13287628 + parent: 31 + type: Transform + - uid: 11330 + components: + - pos: 78.224594,1.1953763 + parent: 31 + type: Transform + - uid: 11331 + components: + - pos: 78.287094,3.1953764 + parent: 31 + type: Transform + - uid: 11332 + components: + - pos: 78.287094,4.1641264 + parent: 31 + type: Transform + - uid: 11333 + components: + - pos: 78.33397,5.1797514 + parent: 31 + type: Transform - proto: PlasticFlapsAirtightClear entities: - uid: 547 @@ -53693,6 +50465,11 @@ entities: type: Transform - canCollide: False type: Physics + - uid: 4264 + components: + - pos: 8.5,-4.5 + parent: 31 + type: Transform - uid: 6205 components: - pos: 18.5,17.5 @@ -53739,8 +50516,6 @@ entities: pos: -10.5,-31.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 303 components: - pos: 8.5,21.5 @@ -53754,8 +50529,6 @@ entities: pos: -25.5,-13.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 493 components: - rot: -1.5707963267948966 rad @@ -53784,8 +50557,6 @@ entities: pos: -15.5,13.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 857 components: - rot: -1.5707963267948966 rad @@ -53823,8 +50594,6 @@ entities: pos: 22.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 1033 components: - rot: 1.5707963267948966 rad @@ -54310,8 +51079,6 @@ entities: pos: 58.5,-5.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 1915 components: - pos: -8.5,1.5 @@ -54324,8 +51091,6 @@ entities: - pos: -0.5,-24.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 1965 components: - rot: -1.5707963267948966 rad @@ -54340,24 +51105,18 @@ entities: pos: -4.5,-23.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 2179 components: - rot: 1.5707963267948966 rad pos: 6.5,-3.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 2220 components: - rot: 3.141592653589793 rad pos: -18.5,-8.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 2247 components: - rot: 1.5707963267948966 rad @@ -54372,8 +51131,6 @@ entities: pos: -37.5,17.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 3380 components: - rot: -1.5707963267948966 rad @@ -54388,32 +51145,24 @@ entities: pos: 31.5,9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 3728 components: - rot: 3.141592653589793 rad pos: -14.5,-22.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 3732 components: - rot: 3.141592653589793 rad pos: -17.5,-27.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 3734 components: - rot: 1.5707963267948966 rad pos: -16.5,-29.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 3963 components: - rot: 3.141592653589793 rad @@ -54510,8 +51259,6 @@ entities: pos: -21.5,9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 4457 components: - pos: -1.5,1.5 @@ -54571,8 +51318,6 @@ entities: pos: 28.5,18.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 6327 components: - rot: 3.141592653589793 rad @@ -54637,8 +51382,6 @@ entities: - pos: 46.5,23.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 6436 components: - pos: 43.5,9.5 @@ -54673,8 +51416,6 @@ entities: pos: 48.5,21.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 6566 components: - pos: 39.5,19.5 @@ -54717,8 +51458,6 @@ entities: pos: 20.5,22.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 6921 components: - pos: 38.5,23.5 @@ -54753,24 +51492,18 @@ entities: - pos: 14.5,-13.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 7350 components: - rot: 3.141592653589793 rad pos: 18.5,-18.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 7586 components: - rot: 3.141592653589793 rad pos: 8.5,16.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 7653 components: - pos: 6.5,-7.5 @@ -54784,8 +51517,6 @@ entities: pos: -14.5,-17.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 7724 components: - rot: 1.5707963267948966 rad @@ -54807,32 +51538,24 @@ entities: - pos: -8.5,-14.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 7785 components: - rot: 3.141592653589793 rad pos: -50.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 7788 components: - rot: 3.141592653589793 rad pos: -45.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 7871 components: - rot: -1.5707963267948966 rad pos: -17.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 8074 components: - pos: 46.5,13.5 @@ -55015,134 +51738,100 @@ entities: pos: 19.5,27.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10063 components: - rot: -1.5707963267948966 rad pos: 23.5,27.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10301 components: - rot: 3.141592653589793 rad pos: -9.5,-22.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10302 components: - rot: 1.5707963267948966 rad pos: -12.5,-19.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10309 components: - rot: -1.5707963267948966 rad pos: 0.5,-31.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10355 components: - rot: 3.141592653589793 rad pos: -21.5,-9.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10423 components: - rot: -1.5707963267948966 rad pos: 53.5,18.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10767 components: - rot: 3.141592653589793 rad pos: -39.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10879 components: - rot: 3.141592653589793 rad pos: 56.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10880 components: - rot: -1.5707963267948966 rad pos: 53.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10881 components: - rot: 1.5707963267948966 rad pos: 47.5,-11.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 10882 components: - rot: 1.5707963267948966 rad pos: 48.5,-3.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 11007 components: - pos: 47.5,19.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 11084 components: - rot: -1.5707963267948966 rad pos: 53.5,14.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 11133 components: - pos: -2.5,26.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 11250 components: - rot: -1.5707963267948966 rad pos: -34.5,8.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - uid: 11255 components: - rot: 3.141592653589793 rad pos: -2.5,23.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - proto: PoweredlightExterior entities: - uid: 9926 @@ -55150,8 +51839,6 @@ entities: - pos: -1.5,-21.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - proto: PoweredLightPostSmall entities: - uid: 7709 @@ -55159,8 +51846,6 @@ entities: - pos: 30.5,28.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - proto: PoweredlightSodium entities: - uid: 8526 @@ -55168,8 +51853,6 @@ entities: - pos: -31.5,-13.5 parent: 31 type: Transform - - enabled: False - type: AmbientSound - proto: PoweredSmallLight entities: - uid: 14 @@ -55843,64 +52526,64 @@ entities: - pos: -5.5,29.5 parent: 31 type: Transform -- proto: RadiationCollector +- proto: RadiationCollectorNoTank entities: - - uid: 10 + - uid: 5925 components: - - pos: 64.5,-0.5 + - pos: 64.5,1.5 parent: 31 type: Transform - - uid: 3577 + - uid: 5926 components: - - pos: 78.5,5.5 + - pos: 78.5,3.5 parent: 31 type: Transform - - uid: 4264 + - uid: 5927 components: - pos: 78.5,4.5 parent: 31 type: Transform - - uid: 4325 + - uid: 5928 components: - pos: 64.5,0.5 parent: 31 type: Transform - - uid: 4467 - components: - - pos: 64.5,1.5 - parent: 31 - type: Transform - - uid: 4468 + - uid: 9573 components: - - pos: 64.5,3.5 + - pos: 64.5,-0.5 parent: 31 type: Transform - - uid: 4469 + - uid: 9744 components: - - pos: 64.5,4.5 + - pos: 78.5,-0.5 parent: 31 type: Transform - - uid: 4470 + - uid: 9746 components: - - pos: 64.5,5.5 + - pos: 78.5,0.5 parent: 31 type: Transform - uid: 10113 components: - - pos: 78.5,3.5 + - pos: 78.5,5.5 parent: 31 type: Transform - uid: 10114 components: - - pos: 78.5,-0.5 + - pos: 64.5,3.5 parent: 31 type: Transform - uid: 10115 components: - - pos: 78.5,0.5 + - pos: 64.5,4.5 parent: 31 type: Transform - uid: 10116 + components: + - pos: 64.5,5.5 + parent: 31 + type: Transform + - uid: 10905 components: - pos: 78.5,1.5 parent: 31 @@ -58338,6 +55021,19 @@ entities: - pos: -5.5,30.5 parent: 31 type: Transform +- proto: RemoteSignaller + entities: + - uid: 4469 + components: + - name: igniter remote + type: MetaData + - pos: 51.490143,16.211384 + parent: 31 + type: Transform + - linkedPorts: + 4470: + - Pressed: Trigger + type: DeviceLinkSource - proto: ResearchAndDevelopmentServer entities: - uid: 8437 @@ -64266,6 +60962,13 @@ entities: - pos: -17.5,11.5 parent: 31 type: Transform +- proto: VendingMachineTankDispenserEngineering + entities: + - uid: 3946 + components: + - pos: 57.5,5.5 + parent: 31 + type: Transform - proto: VendingMachineTankDispenserEVA entities: - uid: 9080 From 8639df7a74ee7c0a408e3acd9922272fe900c195 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 14 Oct 2023 02:53:02 -0700 Subject: [PATCH 093/245] Add pop sound effect when using the erase admin verb (#20988) --- .../Administration/Systems/AdminSystem.cs | 5 +++++ Resources/Audio/Effects/attributions.yml | 9 +++++++-- Resources/Audio/Effects/pop_high.ogg | Bin 0 -> 8524 bytes Resources/Changelog/Admin.yml | 5 +++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 Resources/Audio/Effects/pop_high.ogg diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index 8a2b6d5119417e..66f7a8999b33ca 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -25,6 +25,7 @@ using Content.Shared.Throwing; using Robust.Server.GameObjects; using Robust.Server.Player; +using Robust.Shared.Audio; using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Network; @@ -38,6 +39,7 @@ public sealed class AdminSystem : EntitySystem [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly IConfigurationManager _config = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; + [Dependency] private readonly AudioSystem _audio = default!; [Dependency] private readonly HandsSystem _hands = default!; [Dependency] private readonly SharedJobSystem _jobs = default!; [Dependency] private readonly InventorySystem _inventory = default!; @@ -336,6 +338,9 @@ public void Erase(IPlayerSession player) var coordinates = _transform.GetMoverCoordinates(entity.Value, transform); var name = Identity.Entity(entity.Value, EntityManager); _popup.PopupCoordinates(Loc.GetString("admin-erase-popup", ("user", name)), coordinates, PopupType.LargeCaution); + var filter = Filter.Pvs(coordinates, 1, EntityManager, _playerManager); + var audioParams = new AudioParams().WithVolume(3); + _audio.Play("/Audio/Effects/pop_high.ogg", filter, coordinates, true, audioParams); } foreach (var item in _inventory.GetHandOrInventoryEntities(entity.Value)) diff --git a/Resources/Audio/Effects/attributions.yml b/Resources/Audio/Effects/attributions.yml index 71a2ae2b53c0a0..556c4603a5a49b 100644 --- a/Resources/Audio/Effects/attributions.yml +++ b/Resources/Audio/Effects/attributions.yml @@ -57,8 +57,13 @@ license: "CC-BY-SA-3.0" copyright: "Taken from tgstation" source: "https://github.com/tgstation/tgstation/blob/e3a835b96043fad1269ee7b0c3a6cb340a466f3a/sound/effects/break_stone.ogg" - + - files: ["waterswirl.ogg"] - license: "CC0-1.0" + license: "CC-BY-4.0" copyright: "Taken from InspectorJ via freesound.org and mixed from stereo to mono." source: "https://freesound.org/people/InspectorJ/sounds/398703/" + +- files: ["pop_high.ogg"] + license: "CC-BY-4.0" + copyright: "Taken from InspectorJ via freesound.org and mixed from stereo to mono." + source: "https://freesound.org/people/InspectorJ/sounds/411642/" diff --git a/Resources/Audio/Effects/pop_high.ogg b/Resources/Audio/Effects/pop_high.ogg new file mode 100644 index 0000000000000000000000000000000000000000..679da25078ff9935e90c5ac81115062c016df958 GIT binary patch literal 8524 zcmaiY2Ut_h^7jcKT{;K?zM%=BY3M;fIud#yNbjN7P!tgaDN2zVklsN`K#CxsqSAYn zAc6u)5m8VP0cqa}y!YPsyWjWx|L584vu9^_W@qL%b7o`U;$jSt0DnJBGN*&o%};M2 z7a&1CSO+(M;uJ(3|M!v`kdr|R#DKW--w$yok@AL4w~N8!`2TwPNlzI`fpjxBUsrJh ztP9lB&B649JyaViaarQ>W!cM8P$3k?DbUf)+XbrO9pr}f@%F-a2f&EOqXT~?+9tXh zif~zRI9wbq%LvY>piH!lO%%1g{e3Zx0X|qHY!XU)$5pdFR3@kFzrh@HcIo)~tpyT^s? z<9U>er53Izyh|<72aVK~SSwA_mtU(WNtFL0^khtxM(oK1QWrjD>R9`N-1@fv2x2w& z?~dw34=8vRRdNm|231NT`}?r+Of1OiR4phF4yp-grLbt%vkcaA4Uh91{1i1}mL8YX zFgDRcgHNFK^&rf2P~db>sCj0zWlN}eOSI+NXzQJ5d-j;W+ivLm4zZo64ut@Pe29!s zuwvfx#UByHq){<=62OUQ5-3$FFD$i0yWH8m)-9*mwYu4But9XNf%aqxhygOpc%^u6%8b;7%FBev__MCDzhN*~i{|z5y&~Nr{*?aQt zLPHbD9awnEdD1QfB+;c6!uw#Q7ak;PA}b>eQ5=G00e4R{hXOzp!wHK2)tx~36vd^f zal!*ajYATHqQnm0IU>Ja*U6wp3kOjwDh;CeLDNdUe=XvgM_CiWLZl3bLc+>UBMNjX z)G1kooZ}=&VluGb{@3>J$kD>`gAI%v4J`jZBIgyHOAU;s22s7OQymq@L4yWp zocpH(0N_Xek;q!eh_bO7K006x&kQ4Dd|WL0lP zGfMah|Cu5Lc~KX8)FTE-TEto2fMgXx#gLYNfJX{|_uq)E(sGTXL9_MTQZ^DUy5VbiOVZx za*VA3HvtsjkEUoWnH8eU0ss!QC~8Nk$F8m$^_##G_o}5d*b0XQd!Q898(bj0O%_S_)`^8JsWze88gckc0D6- zUQ*8-d?kR?!0C)oTY{H$=HIOJSWZ~Upr@OqjRMd{XpFfD+B^tjzJtC_2-N|p#(FcX zXmm4rX4?y$5xN+Fw!V&;*+HALg;`EVFa8c)WG8Z-o(cr1_5_Um)4+Klw`@1};)<$l zp{lCNs%EdM+8WE^&sD`$0}U=!wfKRC$JMo->maqZqN+i(s!FuF0l!}*y53w-)mAgm zP?u9%z23Y@(%=37-;Tix)LNNuZG@9|r2yL`JGHdtQ$rLD59&3nDgZ>ZUetEB2n zyYOH~-9W?UdfTNZfjma&!1p-oPuD>`ylijeTkb?RcwKo}vp)bbnAk;(`f#;^+Zw$& z!MUC-k*oG{iDfR?;7O}$a;mD=8@xq2@$0Ha=uqo)%)G3%`8n@-*+k3f2gOxi+Jpz& zK|%1j9v`k}m$|HGWk5n+Lk&%+W8V(dsK;!N-@g2(-+?8MX{maXKx{yW*kB$|F5(d( z373NadW6ae1n#G7q6Bh23J#Q=$7#$fTR!f~mw5iIT5D6fw)xuIbRb*Ky ziw;uEbO;1;$%M+a%2Fm{?aC&QRaq&U4ietXV(AShaDh8YnJl$oJuJpvVm;Y>Jy4KU zKT-IJjO9!m$SNx`6^X1#Pel#orV&|1CL*fv6~0}2-?W7k2}H?etm!&lBD-D-%!E4$e&6G7p|9@6Cm zcOt>kOOcT6kE|iQK|KHoj$SXOvO_lirMZK?jRu>72mY-&fin|_Ztg5QHBoqh44>m-8KcYPBtloYY)kJ?A-wGvfjebec!(XdP(bG0*@L31P-4U8G=T1ZdHkKoAOL-9r}c zHBa6uQ`STiBy;z*q1A1Dj{$zGh7e%Kpb8Sedao!F?8bHN%$X!WFfnH$5fnu@O;`^Umx=<#fhtvEX+hg{n-U2)i?2`+8lKWY3?Qs}EYy%S z-DV!OJY@t2y!12(;--~s4s0SSmzE@GGKpZK4`-|Bn)tV4cNi3VyA7 z*f}Xrt8z`IlUGO2zl-$D)7O90?Ek6W|EH0qM-2$Me|CWKOKJ+>n1a((OAdCPMwF-{ z19;tF@5}^GOwJt@1N&SW1-hq54T%sE08s*if$#w%8fSsb@<*YB1FZyoUP(g_q8pX`o!Fn}yP zz@vMJ!I}sT2~D8=!3;rgh?gc<&;SeGzCif3I=`6o(#DSQg%e-%fW@}ziM5Fr0~F|s zLLypt)R7>nh#29C0^M*r7nS_)IR^RFQ)q#JT0LEdGgLi+7G)7Q2jd1oCUi0q07q1( z1>6Z3qnN-_4hM2Rox?GKGET}n9EylY&@@EC2~fX8=w_e7!OK{T zQ68Uj9TJQT@*I)yPCU*ODU@<|0*h}78Uk;iP)gu31CL~cGK7V_4-^zd1_KJ~UX8)6 z$jFwMB&cbrd!zg(+(-e2s6N`1`)0IE%vBM^4)TDRm0cf2IPHT6PvU7lOT0Q`Jr@X# zf|Bvv?}o4>hetAd-~4#ipyf4{yha(_>4g~rTmXR7vrt~%Y(yem5`8j53S%l$8Z!=r zF90k+!s&r<{xkRQ-*-+d>HI{>ukI98+O4jQZ_moV$P!q*i zw%hr$vv-dyObUs^CEmx zIghcL$mOB21M)*dLjtU|zQ_aYBF}`~A7w#s!_oLPr|74<%-m`H=RQSliXE@);jHFz zulV{9Qa@E*wR9Ydjf~cRAe&M7MVPQQ^_%XU?at#Fbg-AiI5!O#UWgJPf)SO)0zz**Bm4Bf-vW#%;DR=E*uUCqld@ozW7DZ zj1~BDeM|Jq7@!X3kW(^C|3!DZdR^lSAHko!cljvyw$Z|v{QkpS!6+&lXR85ro>bM> z=f%I>)g(!G&f)h#c3+EFO`GYTIy`QSq(5lI`W&Avcsu-URZY!(QY85GvK1@Elz7)$ z%_w2hsOb6EUo+;)mGC|y3GwEjUhW z+dVgc&oZ@qVQHNUR?8f(ViDWaWyxy!^V!gVbA5L2&i+V{c+7NAY`Y%Kh=|mR6~IB9-<-v~SIR;~6AOBjHwp4h9vz zm|h1xqXRfz$*@JY`_X2qr%tt_%kO=feeQYO<$aj-aQ(d!M(#+dTlq2q-~Mz|M&_YO zx{9i>(~yns(OB(7zwnN5BNsAmPVH#Fkl8k-vAt=&WA;`jPv)n*74E1;!PR@?nBQ`I zs!5tGDVgu>T^6n4TX)EAE&5vSbVNp^Q4#RH9+MJ(ebC#;SSP!YZu34!;O^w}0b>o; z*as5qtF8WqbsK}x6CySB;kX-r-i@k7H)#H1EA=0$-sWh0Z>=zLNk;YXeB0`qEw;H$ zt=}8CtrxFJ0XEHFO?gWsKiL|jrCzFq3S*&s=dLm)INCZU$TXm6t>$k({yf?H@E*n9 zVNSy?>jroao|!5dHAq_Z%V#($ifPV(7d~L@T(IYqdgb3FD0aMNJ3~r}E)GQhcERw~ zY%bA`&3$xRX2qLmczL|~M!nijsV*n1k+Fg@pZYj@(?xOj{x+nb+LFLe5@L`cfq5_#R>IXqJLeN5EvG9RAdP}BQkpYO)NdC!MsQ!6P0m1`1@ zqlFjS+tOzHD_*`WA)%JqrY12ouP%fg9_j#zeO2rmf0*K?mk#cZN^D+I#O!Y_qgv3< zX#o7;7$2x)8KeSd!V{e|-OJAQ*?Ni1e!5r&ZBM>gSrW&DKK z3aj?U#@EP+57RVvhIwapXiOuEtn??@RPx)E6H3Dpb{1#bOS`yxmsf1XJ7`)jaam5K z1iK3V&e)#`#U#?7^AHwZ8+gHh6zq_LOzIAtvv`q-jyKs(KA7atX_$?$8sZ2M1Z*@* z-RnsjHUA7-3kmeY*2-4c49Ui-k;`TloJB(7<(oO1GUi?nT`Z46K5uL`p8s|H-hQN4 z&(>hyG^O8W?dzaDFAwwutnRLP%o*FbJVTZ}yS?vgAKecy1p2xb9JN8xFRjCRXOuBc zsrC?(d-&!XQ`3Q2O{K-NpZ*=dx7@BvVhY0#Ny~?eb?(-?nk9=4S18U~{!R%|FKUru zPs3 ZmNkrhqywb|%Bx2Y|7 z_vj^4`h#~b{*rXcSBnsLp=OzHJQ`=x=9TWO)zZ&7@Xj!pp}mJ}?%hz*;^Q@_ID@3@ zKns*l86?fq40k%*pp|&FDayizw3T>3hRU{1EO?XCPg4ZF4hw6Ghv%ND z+9X1Qo7Jo#$K_`04ia;E@4p1l|zGBn@@S6<6CF+4|k z^#hNOhmeO&uD5W$#Gqps9-}rgvp84MGR>oz1822kg;T7GkiJ#XDf0$nXvnnI6gC~b8 ztU}hn-M-Y}yUfq|TTY+9j7BE-r-@w5eV+RK2k&RKyE6QwgEE z5tQWZYVTH_>qX{45v20oEYR4axMP0M``WF$WJ;R3&j+P(KY*s8>spyy47JV0qMYVh zCX(-rt@K7#x6?rSzh*B#g@HD*__2AWcwTQtTyBOJ`8BVYy)5J?JQ^i(-iI$*3KCg z1t+uqr5sp%v%l+TeJG_YUc3``%Sh?3HSbzR`4)zv690m~Fi&~*`_cHCxpWB~(j=c} z--Ld42Pw5H^DYRhCCx8N+L9q{{WM})3G;dm*bG6(q=gZsj#$O3ChO_iDc(C~T@}4% z`F+~boj2~KwDY5{N&JXbFnikUnolnmSn`uOH9w0tljtJ2M+(oh5zd83lY1Uq zK+B5!lDsb-u~~CJ)Gp1SbYf&x4)ZB#CQENv%y70k190 zL7{KplcEnEyRP$x>Hbz@Yd+ZREBT%bq8avewJYBauNKY71m77mPEGN#o~q-_tJT-R zLJ78K^G2W1c@MCK3D+saKb284D_IaW>WKVvQ%>_w ztU_aA!&Ws;@s+YE+Wp46R0jYKo8T4K%DDgG{+GsA-;T0vALrMpj0FE2 zkeI#Me50kZKUa!cPBtvnu;+{ydwC8)H;%DzroAPOf`(z;p!CkR1HUgsAxtxOmCXub z7dFMItd+cwfDQ}B7B`i@dhsI9%Qf&vdUWK<$In^&4%+@97{@i8^(%W>D|YywChu`F z^2rM>{YAdz#{o1-Dcr+}jPsShV({`T0q@z}g?H^NmAL4G%!aJqop;blFRHno^gQU_YyRD?A-gM+u(t_xuM?AXP?QSlSq{|6^#;G9MC~|mxKi5;^ z9<3PVcw05=%nzwWyntJt&^@PHUTx^V^d4Upjj zA|O6q^YI+SQDB_x0Bd9n4GwI;huLmZBsMo59~pdodB;mlP)Xr?w;F8f3Qy**;yaAK z{+*c@ANVWWSyks=%VtZysO}HVYepwq&KZVfJ(2$a@%+6T_C3PdK0pOy@jc`^!(#L; z%KXO`_o5HQY;JF(w+wDq=_cR{D+31l`Xsn(=pNP(R0w&4LQ4$qxtNr8x~@g|s9${} zChy-{hdOVx@Y=@niAy61(vZ_cLO+syP%Piex1uHzJIfYK(qp?4ucDx#sg$boa4#@ib01~99iPFGxW#Ilskze?%~ z3Ol#Td3K@T}#={0Fxz2q&v2UR^V}>ofSg^J$(6MrKCq{BHWk8*7j+~M<{IeK- z7H?W9KkFG*mD#`5{mzB#X5@FFa%a@%mt58@z?Y_*!ToD*_o{;3ygc46>_#eIJnz2Ww*FV&fV0!SYMLO^X05Y zVEIw~5qHH(M{`)crBv)LBb?Mx*3&6Fp^XYS`SXDcW%8dtA4tKW6MaS#X|oUH17_|* zZ;}K9nXi)X-q__8k%4878o;h&)7S%sY|m>V_;$=yG+cxE_S+ny}_;1Tat!*KWKr+)@QsI l-je-=f3+9r@u;eGa!V4b224{l89K@4Q}w<>e}@2c{|7ET9pC@} literal 0 HcmV?d00001 diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 728859e3f426b4..9aa77155cc50fe 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -31,3 +31,8 @@ Entries: - {message: 'Added message tooltip to the erase verb.', type: Tweak} id: 5 time: '2023-10-14T09:21:00.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: 'Add pop sound effect when using the erase admin verb.', type: Tweak} + id: 5 + time: '2023-10-14T09:47:00.0000000+00:00' From 546fa445260734de9dc72078f541676fa27e0b10 Mon Sep 17 00:00:00 2001 From: Kara Date: Sat, 14 Oct 2023 09:42:37 -0700 Subject: [PATCH 094/245] Kill `SharedUnoccludedExtensions` (#20914) --- .../Administration/Systems/AdminVerbSystem.cs | 5 +- .../Pointing/EntitySystems/PointingSystem.cs | 4 +- Content.Shared/Examine/ExamineSystemShared.cs | 8 +- .../Helpers/SharedUnoccludedExtensions.cs | 347 ------------------ 4 files changed, 9 insertions(+), 355 deletions(-) delete mode 100644 Content.Shared/Interaction/Helpers/SharedUnoccludedExtensions.cs diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index 4ed8e19f553f7a..709602a1b3c060 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -15,8 +15,8 @@ using Content.Shared.Administration; using Content.Shared.Configurable; using Content.Shared.Database; +using Content.Shared.Examine; using Content.Shared.GameTicking; -using Content.Shared.Interaction.Helpers; using Content.Shared.Inventory; using Content.Shared.Mind; using Content.Shared.Mind.Components; @@ -353,7 +353,8 @@ private void AddDebugVerbs(GetVerbsEvent args) Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/information.svg.192dpi.png")), Act = () => { - var message = args.User.InRangeUnOccluded(args.Target) + + var message = ExamineSystemShared.InRangeUnOccluded(args.User, args.Target) ? Loc.GetString("in-range-unoccluded-verb-on-activate-not-occluded") : Loc.GetString("in-range-unoccluded-verb-on-activate-occluded"); args.Target.PopupMessage(args.User, message); diff --git a/Content.Server/Pointing/EntitySystems/PointingSystem.cs b/Content.Server/Pointing/EntitySystems/PointingSystem.cs index 8756134310bde2..8f00125ea396e4 100644 --- a/Content.Server/Pointing/EntitySystems/PointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/PointingSystem.cs @@ -3,12 +3,12 @@ using Content.Server.Pointing.Components; using Content.Shared.Bed.Sleep; using Content.Shared.Database; +using Content.Shared.Examine; using Content.Shared.Eye; using Content.Shared.Ghost; using Content.Shared.IdentityManagement; using Content.Shared.Input; using Content.Shared.Interaction; -using Content.Shared.Interaction.Helpers; using Content.Shared.Mind; using Content.Shared.Mobs.Systems; using Content.Shared.Pointing; @@ -94,7 +94,7 @@ public bool InRange(EntityUid pointer, EntityCoordinates coordinates) } else { - return pointer.InRangeUnOccluded(coordinates, 15, e => e == pointer); + return ExamineSystemShared.InRangeUnOccluded(pointer, coordinates, 15, predicate: e => e == pointer); } } diff --git a/Content.Shared/Examine/ExamineSystemShared.cs b/Content.Shared/Examine/ExamineSystemShared.cs index 81fc016904191e..2e0cffd7d27729 100644 --- a/Content.Shared/Examine/ExamineSystemShared.cs +++ b/Content.Shared/Examine/ExamineSystemShared.cs @@ -204,7 +204,7 @@ public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinat return true; } - public static bool InRangeUnOccluded(EntityUid origin, EntityUid other, float range, Ignored? predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(EntityUid origin, EntityUid other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; @@ -213,7 +213,7 @@ public static bool InRangeUnOccluded(EntityUid origin, EntityUid other, float ra return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(EntityUid origin, IComponent other, float range, Ignored? predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(EntityUid origin, IComponent other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; @@ -222,7 +222,7 @@ public static bool InRangeUnOccluded(EntityUid origin, IComponent other, float r return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, float range, Ignored? predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; @@ -231,7 +231,7 @@ public static bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(EntityUid origin, MapCoordinates other, float range, Ignored? predicate, bool ignoreInsideBlocker = true) + public static bool InRangeUnOccluded(EntityUid origin, MapCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); var originPos = entMan.GetComponent(origin).MapPosition; diff --git a/Content.Shared/Interaction/Helpers/SharedUnoccludedExtensions.cs b/Content.Shared/Interaction/Helpers/SharedUnoccludedExtensions.cs deleted file mode 100644 index 9ea48a89c8eaf9..00000000000000 --- a/Content.Shared/Interaction/Helpers/SharedUnoccludedExtensions.cs +++ /dev/null @@ -1,347 +0,0 @@ -using Content.Shared.DragDrop; -using Content.Shared.Examine; -using Robust.Shared.Containers; -using Robust.Shared.Map; -using static Content.Shared.Examine.ExamineSystemShared; -using static Content.Shared.Interaction.SharedInteractionSystem; - -namespace Content.Shared.Interaction.Helpers -{ - public static class SharedUnoccludedExtensions - { - #region Entities - public static bool InRangeUnOccluded( - this EntityUid origin, - EntityUid other, - float range = ExamineRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this EntityUid origin, - IComponent other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this EntityUid origin, - BaseContainer other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var otherEntity = other.Owner; - - return ExamineSystemShared.InRangeUnOccluded(origin, otherEntity, range, predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this EntityUid origin, - EntityCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this EntityUid origin, - MapCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, ignoreInsideBlocker); - } - #endregion - - #region Components - public static bool InRangeUnOccluded( - this IComponent origin, - EntityUid other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this IComponent origin, - IComponent other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this IComponent origin, - BaseContainer other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - var otherEntity = other.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, otherEntity, range, predicate, - ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this IComponent origin, - EntityCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this IComponent origin, - MapCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, - ignoreInsideBlocker); - } - #endregion - - #region Containers - public static bool InRangeUnOccluded( - this BaseContainer origin, - EntityUid other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, - ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this BaseContainer origin, - IComponent other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this BaseContainer origin, - BaseContainer other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - var otherEntity = other.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, otherEntity, range, predicate, - ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this BaseContainer origin, - EntityCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this BaseContainer origin, - MapCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var originEntity = origin.Owner; - - return ExamineSystemShared.InRangeUnOccluded(originEntity, other, range, predicate, ignoreInsideBlocker); - } - #endregion - - #region EntityCoordinates - public static bool InRangeUnOccluded( - this EntityCoordinates origin, - EntityUid other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var entMan = IoCManager.Resolve(); - var originPosition = origin.ToMap(entMan); - var otherPosition = entMan.GetComponent(other).MapPosition; - - return ExamineSystemShared.InRangeUnOccluded(originPosition, otherPosition, range, - predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this EntityCoordinates origin, - IComponent other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var entMan = IoCManager.Resolve(); - var originPosition = origin.ToMap(entMan); - var otherPosition = entMan.GetComponent(other.Owner).MapPosition; - - return ExamineSystemShared.InRangeUnOccluded(originPosition, otherPosition, range, - predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this EntityCoordinates origin, - BaseContainer other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var entMan = IoCManager.Resolve(); - var originPosition = origin.ToMap(entMan); - var otherPosition = entMan.GetComponent(other.Owner).MapPosition; - - return ExamineSystemShared.InRangeUnOccluded(originPosition, otherPosition, range, - predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this EntityCoordinates origin, - EntityCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true, - IEntityManager? entityManager = null) - { - IoCManager.Resolve(ref entityManager); - - var originPosition = origin.ToMap(entityManager); - var otherPosition = other.ToMap(entityManager); - - return ExamineSystemShared.InRangeUnOccluded(originPosition, otherPosition, range, - predicate, ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this EntityCoordinates origin, - MapCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true, - IEntityManager? entityManager = null) - { - IoCManager.Resolve(ref entityManager); - - var originPosition = origin.ToMap(entityManager); - - return ExamineSystemShared.InRangeUnOccluded(originPosition, other, range, predicate, - ignoreInsideBlocker); - } - #endregion - - #region MapCoordinates - public static bool InRangeUnOccluded( - this MapCoordinates origin, - EntityUid other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var entMan = IoCManager.Resolve(); - var otherPosition = entMan.GetComponent(other).MapPosition; - - return ExamineSystemShared.InRangeUnOccluded(origin, otherPosition, range, predicate, - ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this MapCoordinates origin, - IComponent other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var entMan = IoCManager.Resolve(); - var otherPosition = entMan.GetComponent(other.Owner).MapPosition; - - return ExamineSystemShared.InRangeUnOccluded(origin, otherPosition, range, predicate, - ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this MapCoordinates origin, - BaseContainer other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - var entMan = IoCManager.Resolve(); - var otherPosition = entMan.GetComponent(other.Owner).MapPosition; - - return ExamineSystemShared.InRangeUnOccluded(origin, otherPosition, range, predicate, - ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this MapCoordinates origin, - EntityCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true, - IEntityManager? entityManager = null) - { - IoCManager.Resolve(ref entityManager); - - var otherPosition = other.ToMap(entityManager); - - return ExamineSystemShared.InRangeUnOccluded(origin, otherPosition, range, predicate, - ignoreInsideBlocker); - } - - public static bool InRangeUnOccluded( - this MapCoordinates origin, - MapCoordinates other, - float range = InteractionRange, - Ignored? predicate = null, - bool ignoreInsideBlocker = true) - { - return ExamineSystemShared.InRangeUnOccluded(origin, other, range, predicate, - ignoreInsideBlocker); - } - #endregion - } -} From 0775ab6a1475f51707f51eea93f7bf80a6a9a075 Mon Sep 17 00:00:00 2001 From: TemporalOroboros Date: Sat, 14 Oct 2023 09:45:28 -0700 Subject: [PATCH 095/245] Moves SolutionContainerManagerComponent to Shared. (#20944) --- .../Tests/Chemistry/SolutionSystemTests.cs | 2 +- .../Tests/Chemistry/TryAllReactionsTest.cs | 2 +- .../Administration/Commands/AddReagent.cs | 4 +- .../Commands/SetSolutionCapacity.cs | 4 +- .../Commands/SetSolutionTemperature.cs | 4 +- .../Commands/SetSolutionThermalEnergy.cs | 4 +- .../Administration/Systems/AdminVerbSystem.cs | 4 +- .../Toolshed/SolutionCommand.cs | 2 +- .../Administration/UI/EditSolutionsEui.cs | 2 +- Content.Server/Animals/Systems/UdderSystem.cs | 4 +- .../Anomaly/Effects/InjectionAnomalySystem.cs | 4 +- .../Effects/PuddleCreateAnomalySystem.cs | 2 +- .../Effects/ReagentProducerAnomalySystem.cs | 4 +- .../Body/Systems/BloodstreamSystem.cs | 5 +- Content.Server/Body/Systems/LungSystem.cs | 2 +- .../Body/Systems/MetabolizerSystem.cs | 4 +- Content.Server/Body/Systems/StomachSystem.cs | 4 +- .../Botany/Systems/BotanySystem.Seed.cs | 4 +- .../Botany/Systems/PlantHolderSystem.cs | 3 +- Content.Server/Cargo/Systems/PricingSystem.cs | 2 +- .../RandomFillSolutionComponent.cs | 2 +- .../DrawableSolutionComponent.cs | 16 ------- .../ExaminableSolutionComponent.cs | 10 ---- .../InjectableSolutionComponent.cs | 17 ------- .../SolutionContainerManagerComponent.cs | 14 ------ .../EntitySystems/ChemMasterSystem.cs | 1 + .../EntitySystems/ChemistrySystem.Injector.cs | 3 +- .../EntitySystems/ChemistrySystem.cs | 1 + .../EntitySystems/ChemistrySystemHypospray.cs | 3 +- .../EntitySystems/ReagentDispenserSystem.cs | 2 +- .../EntitySystems/RehydratableSystem.cs | 1 + .../EntitySystems/SolutionHeaterSystem.cs | 3 +- .../SolutionInjectOnCollideSystem.cs | 3 +- .../EntitySystems/SolutionPurgeSystem.cs | 3 +- .../EntitySystems/SolutionRandomFillSystem.cs | 3 +- .../SolutionRegenerationSystem.cs | 3 +- .../EntitySystems/SolutionSpikableSystem.cs | 3 +- .../EntitySystems/SolutionTransferSystem.cs | 3 +- .../TransformableContainerSystem.cs | 2 +- .../Chemistry/EntitySystems/VaporSystem.cs | 3 +- .../ReactionEffects/AreaReactionEffect.cs | 2 +- .../ReagentEffects/AddToSolutionReaction.cs | 2 +- .../Chemistry/ReagentEffects/AdjustReagent.cs | 4 +- .../TileReactions/CleanTileReaction.cs | 2 +- .../Destructible/DestructibleSystem.cs | 2 +- .../Behaviors/SolutionExplosionBehavior.cs | 3 -- .../Thresholds/Behaviors/SpillBehavior.cs | 2 +- .../Explosion/EntitySystems/TriggerSystem.cs | 3 +- .../Extinguisher/FireExtinguisherSystem.cs | 2 +- .../Fluids/EntitySystems/AbsorbentSystem.cs | 2 +- .../Fluids/EntitySystems/DrainSystem.cs | 3 +- .../EntitySystems/PuddleSystem.Spillable.cs | 1 + .../Fluids/EntitySystems/PuddleSystem.cs | 2 +- .../Fluids/EntitySystems/SmokeSystem.cs | 3 +- .../Fluids/EntitySystems/SpraySystem.cs | 1 + Content.Server/Glue/GlueSystem.cs | 3 +- .../Kitchen/EntitySystems/MicrowaveSystem.cs | 4 +- .../EntitySystems/ReagentGrinderSystem.cs | 3 +- Content.Server/Lube/LubeSystem.cs | 2 +- .../Materials/MaterialReclaimerSystem.cs | 4 +- Content.Server/Medical/CryoPodSystem.cs | 4 +- Content.Server/Medical/VomitSystem.cs | 3 +- .../Specific/MedibotInjectOperator.cs | 5 +- .../Specific/PickNearbyInjectableOperator.cs | 2 +- .../NPC/Systems/NPCUtilitySystem.cs | 3 +- .../Nutrition/EntitySystems/CreamPieSystem.cs | 2 +- .../Nutrition/EntitySystems/DrinkSystem.cs | 3 +- .../Nutrition/EntitySystems/FoodSystem.cs | 2 +- .../EntitySystems/SliceableFoodSystem.cs | 3 +- .../SmokingSystem.SmokingPipe.cs | 3 +- .../Nutrition/EntitySystems/SmokingSystem.cs | 2 +- .../EntitySystems/TrashOnEmptySystem.cs | 3 +- .../Payload/EntitySystems/PayloadSystem.cs | 2 +- .../Power/EntitySystems/RiggableSystem.cs | 4 +- .../ChemicalFuelGeneratorAdapterComponent.cs | 3 +- .../Power/Generator/GeneratorSystem.cs | 2 +- .../Stunnable/Systems/StunbatonSystem.cs | 2 +- Content.Server/Tools/ToolSystem.Welder.cs | 5 +- Content.Server/Tools/ToolSystem.cs | 2 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 3 +- .../Ranged/Systems/ChemicalAmmoSystem.cs | 2 +- .../Ranged/Systems/GunSystem.Solution.cs | 2 +- .../DrawableSolutionComponent.cs | 15 ++++++ .../ExaminableSolutionComponent.cs | 9 ++++ .../InjectableSolutionComponent.cs | 16 +++++++ .../SolutionContainerManagerComponent.cs | 12 +++++ .../SolutionContainerSystem.Capabilities.cs | 4 +- .../EntitySystems/SolutionContainerSystem.cs | 21 ++++---- .../Objects/Consumable/Food/meals.yml | 2 +- .../Objects/Consumable/Food/noodles.yml | 10 ++-- .../Entities/Objects/Consumable/Food/soup.yml | 48 +++++++++---------- 91 files changed, 200 insertions(+), 211 deletions(-) rename Content.Server/Chemistry/Components/{SolutionManager => }/RandomFillSolutionComponent.cs (93%) delete mode 100644 Content.Server/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs delete mode 100644 Content.Server/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs delete mode 100644 Content.Server/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs delete mode 100644 Content.Server/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs create mode 100644 Content.Shared/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs create mode 100644 Content.Shared/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs create mode 100644 Content.Shared/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs create mode 100644 Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs rename {Content.Server => Content.Shared}/Chemistry/EntitySystems/SolutionContainerSystem.Capabilities.cs (98%) rename {Content.Server => Content.Shared}/Chemistry/EntitySystems/SolutionContainerSystem.cs (97%) diff --git a/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs b/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs index 8d0bbbd067f465..8b489d27fc7d82 100644 --- a/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs +++ b/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs @@ -1,5 +1,5 @@ -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using Robust.Shared.GameObjects; using Robust.Shared.Prototypes; diff --git a/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs b/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs index 30c15e8da31cbf..5213747588a1d0 100644 --- a/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs +++ b/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs @@ -1,6 +1,6 @@ using System.Linq; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reaction; using Robust.Shared.GameObjects; using Robust.Shared.Map; diff --git a/Content.Server/Administration/Commands/AddReagent.cs b/Content.Server/Administration/Commands/AddReagent.cs index f18dd3e99d3fa3..b75e46ad9084a6 100644 --- a/Content.Server/Administration/Commands/AddReagent.cs +++ b/Content.Server/Administration/Commands/AddReagent.cs @@ -1,6 +1,6 @@ -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Administration; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/SetSolutionCapacity.cs b/Content.Server/Administration/Commands/SetSolutionCapacity.cs index 0c439227ff9ec7..e1e644f84f4cb1 100644 --- a/Content.Server/Administration/Commands/SetSolutionCapacity.cs +++ b/Content.Server/Administration/Commands/SetSolutionCapacity.cs @@ -1,6 +1,6 @@ -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Administration; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/SetSolutionTemperature.cs b/Content.Server/Administration/Commands/SetSolutionTemperature.cs index 6c6c618d17a24b..e8f58a50cfd3d2 100644 --- a/Content.Server/Administration/Commands/SetSolutionTemperature.cs +++ b/Content.Server/Administration/Commands/SetSolutionTemperature.cs @@ -1,6 +1,6 @@ -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Administration; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Robust.Shared.Console; namespace Content.Server.Administration.Commands diff --git a/Content.Server/Administration/Commands/SetSolutionThermalEnergy.cs b/Content.Server/Administration/Commands/SetSolutionThermalEnergy.cs index 07b51016cc9161..c2b7f9d25c2e46 100644 --- a/Content.Server/Administration/Commands/SetSolutionThermalEnergy.cs +++ b/Content.Server/Administration/Commands/SetSolutionThermalEnergy.cs @@ -1,6 +1,6 @@ -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Administration; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Robust.Shared.Console; namespace Content.Server.Administration.Commands diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index 709602a1b3c060..3a419b93f6f9af 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -2,8 +2,6 @@ using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Server.Administration.UI; -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Disposal.Tube; using Content.Server.Disposal.Tube.Components; using Content.Server.EUI; @@ -13,6 +11,8 @@ using Content.Server.Xenoarchaeology.XenoArtifacts; using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; using Content.Shared.Administration; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Configurable; using Content.Shared.Database; using Content.Shared.Examine; diff --git a/Content.Server/Administration/Toolshed/SolutionCommand.cs b/Content.Server/Administration/Toolshed/SolutionCommand.cs index 5cbd931a7014dd..1edf958c95e656 100644 --- a/Content.Server/Administration/Toolshed/SolutionCommand.cs +++ b/Content.Server/Administration/Toolshed/SolutionCommand.cs @@ -1,7 +1,7 @@ using System.Linq; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Administration; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Robust.Shared.Toolshed; diff --git a/Content.Server/Administration/UI/EditSolutionsEui.cs b/Content.Server/Administration/UI/EditSolutionsEui.cs index 5fa386aae7477e..5136b347a2e45a 100644 --- a/Content.Server/Administration/UI/EditSolutionsEui.cs +++ b/Content.Server/Administration/UI/EditSolutionsEui.cs @@ -1,7 +1,7 @@ using Content.Server.Administration.Systems; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.EUI; using Content.Shared.Administration; +using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Eui; using JetBrains.Annotations; diff --git a/Content.Server/Animals/Systems/UdderSystem.cs b/Content.Server/Animals/Systems/UdderSystem.cs index b57eeaf299ada4..4a90c3c3d8532c 100644 --- a/Content.Server/Animals/Systems/UdderSystem.cs +++ b/Content.Server/Animals/Systems/UdderSystem.cs @@ -1,10 +1,10 @@ using Content.Server.Animals.Components; -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Server.DoAfter; using Content.Server.Nutrition.Components; using Content.Server.Popups; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.DoAfter; using Content.Shared.IdentityManagement; using Content.Shared.Nutrition.Components; diff --git a/Content.Server/Anomaly/Effects/InjectionAnomalySystem.cs b/Content.Server/Anomaly/Effects/InjectionAnomalySystem.cs index acc0e2f0c383fc..0cc7883808ade1 100644 --- a/Content.Server/Anomaly/Effects/InjectionAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/InjectionAnomalySystem.cs @@ -1,7 +1,7 @@ using System.Linq; using Content.Server.Anomaly.Components; -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Anomaly.Components; namespace Content.Server.Anomaly.Effects; diff --git a/Content.Server/Anomaly/Effects/PuddleCreateAnomalySystem.cs b/Content.Server/Anomaly/Effects/PuddleCreateAnomalySystem.cs index deae38e5c8c851..9855e66cfe33c4 100644 --- a/Content.Server/Anomaly/Effects/PuddleCreateAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/PuddleCreateAnomalySystem.cs @@ -1,6 +1,6 @@ using Content.Server.Anomaly.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Anomaly.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Server.Fluids.EntitySystems; namespace Content.Server.Anomaly.Effects; diff --git a/Content.Server/Anomaly/Effects/ReagentProducerAnomalySystem.cs b/Content.Server/Anomaly/Effects/ReagentProducerAnomalySystem.cs index fdfff42d7ca03b..c87dcf4eaeb950 100644 --- a/Content.Server/Anomaly/Effects/ReagentProducerAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/ReagentProducerAnomalySystem.cs @@ -1,8 +1,8 @@ using Content.Server.Anomaly.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Anomaly.Components; using Robust.Shared.Random; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Robust.Shared.Prototypes; using Content.Shared.Sprite; using Robust.Server.GameObjects; @@ -32,7 +32,7 @@ public sealed class ReagentProducerAnomalySystem : EntitySystem [Dependency] private readonly PointLightSystem _light = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; - + public const string FallbackReagent = "Water"; public override void Initialize() diff --git a/Content.Server/Body/Systems/BloodstreamSystem.cs b/Content.Server/Body/Systems/BloodstreamSystem.cs index 9ed92da8fc40e4..39403288e95fdf 100644 --- a/Content.Server/Body/Systems/BloodstreamSystem.cs +++ b/Content.Server/Body/Systems/BloodstreamSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Body.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Chemistry.ReactionEffects; using Content.Server.Fluids.EntitySystems; using Content.Server.Forensics; @@ -7,6 +6,7 @@ using Content.Server.Popups; using Content.Shared.Alert; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reaction; using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; @@ -14,12 +14,9 @@ using Content.Shared.IdentityManagement; using Content.Shared.Popups; using Content.Shared.Drunk; -using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Rejuvenate; using Robust.Server.GameObjects; -using Robust.Shared.Audio; -using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Content.Shared.Speech.EntitySystems; diff --git a/Content.Server/Body/Systems/LungSystem.cs b/Content.Server/Body/Systems/LungSystem.cs index 042c90857ba51c..a66efbac089151 100644 --- a/Content.Server/Body/Systems/LungSystem.cs +++ b/Content.Server/Body/Systems/LungSystem.cs @@ -1,8 +1,8 @@ using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Server.Body.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Atmos; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Inventory.Events; namespace Content.Server.Body.Systems; diff --git a/Content.Server/Body/Systems/MetabolizerSystem.cs b/Content.Server/Body/Systems/MetabolizerSystem.cs index 1b4f85ae2854e0..5233b0166c1399 100644 --- a/Content.Server/Body/Systems/MetabolizerSystem.cs +++ b/Content.Server/Body/Systems/MetabolizerSystem.cs @@ -1,9 +1,9 @@ using Content.Server.Body.Components; -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Administration.Logs; using Content.Shared.Body.Organ; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Database; using Content.Shared.FixedPoint; diff --git a/Content.Server/Body/Systems/StomachSystem.cs b/Content.Server/Body/Systems/StomachSystem.cs index e33931315a6ef0..1d793887eef48c 100644 --- a/Content.Server/Body/Systems/StomachSystem.cs +++ b/Content.Server/Body/Systems/StomachSystem.cs @@ -1,8 +1,8 @@ using Content.Server.Body.Components; -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Body.Organ; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Robust.Shared.Utility; namespace Content.Server.Body.Systems diff --git a/Content.Server/Botany/Systems/BotanySystem.Seed.cs b/Content.Server/Botany/Systems/BotanySystem.Seed.cs index b2cad7e0120503..752d8e40043b19 100644 --- a/Content.Server/Botany/Systems/BotanySystem.Seed.cs +++ b/Content.Server/Botany/Systems/BotanySystem.Seed.cs @@ -1,10 +1,10 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Botany.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Kitchen.Components; using Content.Server.Popups; using Content.Shared.Botany; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Examine; using Content.Shared.Hands.EntitySystems; using Content.Shared.Physics; @@ -17,10 +17,8 @@ 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; -using Robust.Shared.Utility; namespace Content.Server.Botany.Systems; diff --git a/Content.Server/Botany/Systems/PlantHolderSystem.cs b/Content.Server/Botany/Systems/PlantHolderSystem.cs index 586fa9c2b0dbed..506b88f78b852d 100644 --- a/Content.Server/Botany/Systems/PlantHolderSystem.cs +++ b/Content.Server/Botany/Systems/PlantHolderSystem.cs @@ -1,13 +1,12 @@ using Content.Server.Atmos; using Content.Server.Atmos.EntitySystems; using Content.Server.Botany.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Fluids.Components; using Content.Server.Ghost.Roles.Components; using Content.Server.Kitchen.Components; using Content.Server.Popups; using Content.Shared.Botany; -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Coordinates.Helpers; using Content.Shared.Examine; diff --git a/Content.Server/Cargo/Systems/PricingSystem.cs b/Content.Server/Cargo/Systems/PricingSystem.cs index f66e6f02ac9aa4..289f383d29cfef 100644 --- a/Content.Server/Cargo/Systems/PricingSystem.cs +++ b/Content.Server/Cargo/Systems/PricingSystem.cs @@ -2,9 +2,9 @@ using Content.Server.Administration; using Content.Server.Body.Systems; using Content.Server.Cargo.Components; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Shared.Administration; using Content.Shared.Body.Components; +using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.Reagent; using Content.Shared.Materials; using Content.Shared.Mobs.Components; diff --git a/Content.Server/Chemistry/Components/SolutionManager/RandomFillSolutionComponent.cs b/Content.Server/Chemistry/Components/RandomFillSolutionComponent.cs similarity index 93% rename from Content.Server/Chemistry/Components/SolutionManager/RandomFillSolutionComponent.cs rename to Content.Server/Chemistry/Components/RandomFillSolutionComponent.cs index e4ee6bfc0b1c5b..d0f8c4ceb5ed09 100644 --- a/Content.Server/Chemistry/Components/SolutionManager/RandomFillSolutionComponent.cs +++ b/Content.Server/Chemistry/Components/RandomFillSolutionComponent.cs @@ -2,7 +2,7 @@ using Content.Shared.Random; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Server.Chemistry.Components.SolutionManager; +namespace Content.Server.Chemistry.Components; /// /// Fills a solution container randomly using a weighted random prototype diff --git a/Content.Server/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs b/Content.Server/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs deleted file mode 100644 index 2ecb7e8c430b6a..00000000000000 --- a/Content.Server/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Content.Server.Chemistry.Components.SolutionManager -{ - /// - /// Denotes the solution that can removed be with syringes. - /// - [RegisterComponent] - public sealed partial class DrawableSolutionComponent : Component - { - /// - /// Solution name that can be removed with syringes. - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("solution")] - public string Solution { get; set; } = "default"; - } -} diff --git a/Content.Server/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs b/Content.Server/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs deleted file mode 100644 index 52b8affb24df47..00000000000000 --- a/Content.Server/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Content.Server.Chemistry.Components.SolutionManager -{ - [RegisterComponent] - public sealed partial class ExaminableSolutionComponent: Component - { - [ViewVariables(VVAccess.ReadWrite)] - [DataField("solution")] - public string Solution { get; set; } = "default"; - } -} diff --git a/Content.Server/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs b/Content.Server/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs deleted file mode 100644 index 17fc34b5068b28..00000000000000 --- a/Content.Server/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Content.Server.Chemistry.Components.SolutionManager -{ - /// - /// Denotes a solution which can be added with syringes. - /// - [RegisterComponent] - public sealed partial class InjectableSolutionComponent : Component - { - - /// - /// Solution name which can be added with syringes. - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("solution")] - public string Solution { get; set; } = "default"; - } -} diff --git a/Content.Server/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs b/Content.Server/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs deleted file mode 100644 index d76237a80b240e..00000000000000 --- a/Content.Server/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Content.Server.Chemistry.EntitySystems; -using Content.Shared.Chemistry.Components; - -namespace Content.Server.Chemistry.Components.SolutionManager -{ - [RegisterComponent] - [Access(typeof(SolutionContainerSystem))] - public sealed partial class SolutionContainerManagerComponent : Component - { - [DataField("solutions")] - [Access(typeof(SolutionContainerSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends - public Dictionary Solutions = new(); - } -} diff --git a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs index 541fa4f3e7315c..c22e36c993c179 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Administration.Logs; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; diff --git a/Content.Server/Chemistry/EntitySystems/ChemistrySystem.Injector.cs b/Content.Server/Chemistry/EntitySystems/ChemistrySystem.Injector.cs index eb4c274c9405ba..708651d5cd06b6 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemistrySystem.Injector.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemistrySystem.Injector.cs @@ -1,8 +1,9 @@ using Content.Server.Body.Components; using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Database; using Content.Shared.FixedPoint; diff --git a/Content.Server/Chemistry/EntitySystems/ChemistrySystem.cs b/Content.Server/Chemistry/EntitySystems/ChemistrySystem.cs index b4425f66ce5f1a..fc4ea0a0b2a13e 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemistrySystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemistrySystem.cs @@ -4,6 +4,7 @@ using Content.Server.Popups; using Content.Shared.CombatMode; using Content.Shared.Chemistry; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.DoAfter; using Content.Shared.Mobs.Systems; diff --git a/Content.Server/Chemistry/EntitySystems/ChemistrySystemHypospray.cs b/Content.Server/Chemistry/EntitySystems/ChemistrySystemHypospray.cs index a352d51368e073..fcc3c58fa7b38a 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemistrySystemHypospray.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemistrySystemHypospray.cs @@ -1,8 +1,9 @@ using System.Linq; using System.Diagnostics.CodeAnalysis; using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Database; using Content.Shared.FixedPoint; diff --git a/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs b/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs index a84dff49d8bf67..ee3b038acc93aa 100644 --- a/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs @@ -3,12 +3,12 @@ using Content.Server.Chemistry.Components; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Dispenser; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; using Content.Shared.Emag.Components; using Content.Shared.Emag.Systems; -using Content.Shared.FixedPoint; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Audio; diff --git a/Content.Server/Chemistry/EntitySystems/RehydratableSystem.cs b/Content.Server/Chemistry/EntitySystems/RehydratableSystem.cs index 85f823f7aa9441..b75aa311e336a0 100644 --- a/Content.Server/Chemistry/EntitySystems/RehydratableSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/RehydratableSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using Content.Shared.Popups; using Robust.Shared.Random; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs index 31698cf175765c..3e839bee50e4c4 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs @@ -1,9 +1,10 @@ using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Construction; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Chemistry; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Placeable; namespace Content.Server.Chemistry.EntitySystems; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs index 666a90ce73d317..20d9246739d794 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs @@ -1,7 +1,8 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Inventory; using JetBrains.Annotations; using Robust.Shared.Physics.Dynamics; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionPurgeSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionPurgeSystem.cs index 4dde86eadbdf4c..c918fa929c5459 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionPurgeSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionPurgeSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using Robust.Shared.Timing; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionRandomFillSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionRandomFillSystem.cs index efd7857147de8a..c2b8efac6fe363 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionRandomFillSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionRandomFillSystem.cs @@ -1,4 +1,5 @@ -using Content.Server.Chemistry.Components.SolutionManager; +using Content.Server.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Random; using Content.Shared.Random.Helpers; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionRegenerationSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionRegenerationSystem.cs index 7e11044dc93675..95908dd703185b 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionRegenerationSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionRegenerationSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using Robust.Shared.Timing; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionSpikableSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionSpikableSystem.cs index b24a07b3359cd9..e27063b1b5766f 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionSpikableSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionSpikableSystem.cs @@ -1,8 +1,9 @@ using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Explosion.EntitySystems; using Content.Server.Popups; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using Content.Shared.Interaction; using Robust.Shared.Player; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionTransferSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionTransferSystem.cs index 893834f1767f42..99f8c1a517b8c3 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionTransferSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionTransferSystem.cs @@ -1,10 +1,11 @@ using Content.Server.Administration.Logs; using Content.Shared.Verbs; -using Content.Server.Chemistry.Components.SolutionManager; using JetBrains.Annotations; using Robust.Server.GameObjects; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.FixedPoint; using Content.Shared.Interaction; diff --git a/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs b/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs index 13246c22e129e1..ac1cc1edd5f82b 100644 --- a/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs @@ -1,6 +1,6 @@ using Content.Server.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; -using Robust.Shared.GameObjects; using Robust.Shared.Prototypes; namespace Content.Server.Chemistry.EntitySystems; diff --git a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs index d95490e9a01ae3..f9256c8ce7a656 100644 --- a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs @@ -1,8 +1,9 @@ using System.Numerics; using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Content.Shared.Physics; diff --git a/Content.Server/Chemistry/ReactionEffects/AreaReactionEffect.cs b/Content.Server/Chemistry/ReactionEffects/AreaReactionEffect.cs index 103433c9a53d75..e6eaab8a59bb84 100644 --- a/Content.Server/Chemistry/ReactionEffects/AreaReactionEffect.cs +++ b/Content.Server/Chemistry/ReactionEffects/AreaReactionEffect.cs @@ -1,7 +1,7 @@ using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Fluids.EntitySystems; using Content.Shared.Audio; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Coordinates.Helpers; using Content.Shared.Database; diff --git a/Content.Server/Chemistry/ReagentEffects/AddToSolutionReaction.cs b/Content.Server/Chemistry/ReagentEffects/AddToSolutionReaction.cs index e2d3af58f15985..d150854e1eacdf 100644 --- a/Content.Server/Chemistry/ReagentEffects/AddToSolutionReaction.cs +++ b/Content.Server/Chemistry/ReagentEffects/AddToSolutionReaction.cs @@ -1,4 +1,4 @@ -using Content.Server.Chemistry.EntitySystems; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using JetBrains.Annotations; using Robust.Shared.Prototypes; diff --git a/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs b/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs index c79dd243329423..5a216b9753e2a3 100644 --- a/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs +++ b/Content.Server/Chemistry/ReagentEffects/AdjustReagent.cs @@ -1,5 +1,5 @@ -using Content.Server.Chemistry.EntitySystems; -using Content.Shared.Body.Prototypes; +using Content.Shared.Body.Prototypes; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using JetBrains.Annotations; diff --git a/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs b/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs index b179adc37003ce..4e2f52d3bcc39a 100644 --- a/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs +++ b/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs @@ -1,6 +1,6 @@ using System.Linq; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reaction; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; diff --git a/Content.Server/Destructible/DestructibleSystem.cs b/Content.Server/Destructible/DestructibleSystem.cs index 0ef0d621f315ad..74e88292df35e8 100644 --- a/Content.Server/Destructible/DestructibleSystem.cs +++ b/Content.Server/Destructible/DestructibleSystem.cs @@ -2,7 +2,6 @@ using Content.Server.Administration.Logs; using Content.Server.Atmos.EntitySystems; using Content.Server.Body.Systems; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Construction; using Content.Server.Destructible.Thresholds; using Content.Server.Destructible.Thresholds.Behaviors; @@ -10,6 +9,7 @@ using Content.Server.Explosion.EntitySystems; using Content.Server.Fluids.EntitySystems; using Content.Server.Stack; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.Destructible; diff --git a/Content.Server/Destructible/Thresholds/Behaviors/SolutionExplosionBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/SolutionExplosionBehavior.cs index 024cb928d09122..97ea392450c622 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/SolutionExplosionBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/SolutionExplosionBehavior.cs @@ -1,6 +1,3 @@ -using Content.Server.Chemistry.EntitySystems; -using Content.Server.Fluids.Components; -using Content.Server.Fluids.EntitySystems; using Content.Server.Explosion.Components; using JetBrains.Annotations; diff --git a/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs index 588d26e6f474e2..66f42857cfbda2 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs @@ -1,6 +1,6 @@ -using Content.Server.Chemistry.EntitySystems; using Content.Server.Fluids.Components; using Content.Server.Fluids.EntitySystems; +using Content.Shared.Chemistry.EntitySystems; using JetBrains.Annotations; namespace Content.Server.Destructible.Thresholds.Behaviors diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs index b3027523f61555..91b32af870818f 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs @@ -1,11 +1,12 @@ using System.Linq; using Content.Server.Administration.Logs; using Content.Server.Body.Systems; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Explosion.Components; using Content.Server.Flash; using Content.Server.Flash.Components; using Content.Server.Radio.EntitySystems; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.Implants.Components; using Content.Shared.Interaction; diff --git a/Content.Server/Extinguisher/FireExtinguisherSystem.cs b/Content.Server/Extinguisher/FireExtinguisherSystem.cs index ea0fa7b195ca82..7b96b8b921787c 100644 --- a/Content.Server/Extinguisher/FireExtinguisherSystem.cs +++ b/Content.Server/Extinguisher/FireExtinguisherSystem.cs @@ -1,8 +1,8 @@ -using Content.Server.Chemistry.EntitySystems; using Content.Server.Fluids.EntitySystems; using Content.Server.Popups; using Content.Shared.Audio; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Extinguisher; using Content.Shared.FixedPoint; using Content.Shared.Interaction; diff --git a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs b/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs index 58757af66036e8..bf54a18f1af7c7 100644 --- a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs +++ b/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs @@ -1,6 +1,6 @@ -using Content.Server.Chemistry.EntitySystems; using Content.Server.Popups; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Content.Shared.Fluids; diff --git a/Content.Server/Fluids/EntitySystems/DrainSystem.cs b/Content.Server/Fluids/EntitySystems/DrainSystem.cs index 6ed72f4a3c9c83..cefc918b17b1cd 100644 --- a/Content.Server/Fluids/EntitySystems/DrainSystem.cs +++ b/Content.Server/Fluids/EntitySystems/DrainSystem.cs @@ -1,10 +1,11 @@ -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Fluids.Components; using Content.Server.Chemistry.EntitySystems; using Content.Server.DoAfter; using Content.Server.Popups; using Content.Shared.FixedPoint; using Content.Shared.Audio; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.DoAfter; using Content.Shared.Examine; diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs index 825c79e2ca15e1..39485d60f790c1 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs @@ -2,6 +2,7 @@ using Content.Server.Fluids.Components; using Content.Server.Nutrition.EntitySystems; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reaction; using Content.Shared.Chemistry.Reagent; using Content.Shared.Clothing.Components; diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs index 1fb56a7aa1f1d9..4870f4286fd4e7 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs @@ -1,10 +1,10 @@ using Content.Server.Administration.Logs; -using Content.Server.Chemistry.EntitySystems; using Content.Server.DoAfter; using Content.Server.Fluids.Components; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Reaction; using Content.Server.Spreader; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Database; using Content.Shared.Examine; diff --git a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs index 2f62f54fd16022..f7732fec62f046 100644 --- a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs +++ b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs @@ -1,9 +1,9 @@ using System.Linq; using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Chemistry.ReactionEffects; using Content.Server.Spreader; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reaction; using Content.Shared.FixedPoint; using Content.Shared.Smoking; @@ -11,7 +11,6 @@ using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Random; -using Robust.Shared.Spawners; using Robust.Shared.Timing; using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; diff --git a/Content.Server/Fluids/EntitySystems/SpraySystem.cs b/Content.Server/Fluids/EntitySystems/SpraySystem.cs index ad17b717e5ff15..8ae9b4b3da2fc4 100644 --- a/Content.Server/Fluids/EntitySystems/SpraySystem.cs +++ b/Content.Server/Fluids/EntitySystems/SpraySystem.cs @@ -6,6 +6,7 @@ using Content.Server.Fluids.Components; using Content.Server.Gravity; using Content.Server.Popups; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Cooldown; using Content.Shared.FixedPoint; using Content.Shared.Interaction; diff --git a/Content.Server/Glue/GlueSystem.cs b/Content.Server/Glue/GlueSystem.cs index ba8549be8e1ff4..eaf95a1f1dcab2 100644 --- a/Content.Server/Glue/GlueSystem.cs +++ b/Content.Server/Glue/GlueSystem.cs @@ -1,11 +1,10 @@ using Content.Server.Administration.Logs; -using Content.Shared.IdentityManagement; using Content.Shared.Popups; using Content.Shared.Item; using Content.Shared.Glue; using Content.Shared.Interaction; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Nutrition.EntitySystems; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.Hands; using Robust.Shared.Timing; diff --git a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs index 4af1584eae7a2f..1c8dbfb4df95db 100644 --- a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs @@ -1,7 +1,5 @@ using System.Linq; using Content.Server.Body.Systems; -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Construction; using Content.Server.Hands.Systems; using Content.Server.Kitchen.Components; @@ -10,6 +8,8 @@ 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.Construction.EntitySystems; using Content.Shared.Destructible; using Content.Shared.FixedPoint; diff --git a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs index 68d9577dd65080..2f34b4285d1a3f 100644 --- a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs @@ -1,11 +1,11 @@ using System.Linq; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Construction; using Content.Server.Kitchen.Components; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Stack; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Containers.ItemSlots; using Content.Shared.FixedPoint; using Content.Shared.Interaction; @@ -17,7 +17,6 @@ using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Containers; -using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Kitchen.EntitySystems diff --git a/Content.Server/Lube/LubeSystem.cs b/Content.Server/Lube/LubeSystem.cs index 6775b858d0d51c..10a30dc25cbdca 100644 --- a/Content.Server/Lube/LubeSystem.cs +++ b/Content.Server/Lube/LubeSystem.cs @@ -1,6 +1,6 @@ using Content.Server.Administration.Logs; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Nutrition.EntitySystems; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; diff --git a/Content.Server/Materials/MaterialReclaimerSystem.cs b/Content.Server/Materials/MaterialReclaimerSystem.cs index bb2bce544f2447..ce1f285fcf6123 100644 --- a/Content.Server/Materials/MaterialReclaimerSystem.cs +++ b/Content.Server/Materials/MaterialReclaimerSystem.cs @@ -1,5 +1,4 @@ using System.Linq; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Chemistry.EntitySystems; using Content.Server.Construction; using Content.Server.Fluids.EntitySystems; @@ -11,7 +10,8 @@ using Content.Server.Wires; using Content.Shared.Body.Systems; using Content.Shared.Chemistry.Components; -using Content.Shared.FixedPoint; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; diff --git a/Content.Server/Medical/CryoPodSystem.cs b/Content.Server/Medical/CryoPodSystem.cs index 98f8e305b631b7..7dbaf03a2e0a80 100644 --- a/Content.Server/Medical/CryoPodSystem.cs +++ b/Content.Server/Medical/CryoPodSystem.cs @@ -5,8 +5,6 @@ using Content.Server.Atmos.Piping.Unary.EntitySystems; using Content.Server.Body.Components; using Content.Server.Body.Systems; -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Medical.Components; using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; @@ -16,6 +14,8 @@ using Content.Server.UserInterface; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; diff --git a/Content.Server/Medical/VomitSystem.cs b/Content.Server/Medical/VomitSystem.cs index 37ad658825b57f..d754bfd05ef80f 100644 --- a/Content.Server/Medical/VomitSystem.cs +++ b/Content.Server/Medical/VomitSystem.cs @@ -1,12 +1,11 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Fluids.EntitySystems; using Content.Server.Forensics; -using Content.Server.Nutrition.EntitySystems; using Content.Server.Popups; using Content.Server.Stunnable; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.IdentityManagement; using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/MedibotInjectOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/MedibotInjectOperator.cs index fa43c111b9567d..311fd234684dbd 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/MedibotInjectOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/MedibotInjectOperator.cs @@ -1,13 +1,10 @@ using Content.Server.Chat.Systems; -using Content.Server.Chemistry.EntitySystems; using Content.Server.NPC.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Damage; -using Content.Shared.Emag.Components; using Content.Shared.Interaction; using Content.Shared.Popups; using Content.Shared.Silicons.Bots; -using Robust.Shared.Audio; -using Robust.Shared.Player; namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Specific; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs index 2103cd737fa7ab..dccd9f3fa4f22e 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs @@ -1,8 +1,8 @@ using System.Threading; using System.Threading.Tasks; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.NPC.Components; using Content.Server.NPC.Pathfinding; +using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Damage; using Content.Shared.Interaction; using Content.Shared.Mobs.Components; diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index e967964d90b059..d8ba19d2388a88 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -1,6 +1,4 @@ using System.Linq; -using Content.Server.Chemistry.EntitySystems; -using Content.Server.Examine; using Content.Server.Fluids.EntitySystems; using Content.Server.NPC.Queries; using Content.Server.NPC.Queries.Considerations; @@ -9,6 +7,7 @@ using Content.Server.Nutrition.Components; using Content.Server.Nutrition.EntitySystems; using Content.Server.Storage.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Examine; using Content.Shared.Fluids.Components; using Content.Shared.Hands.Components; diff --git a/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs b/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs index ee0e18e998fab8..586f965096c7b5 100644 --- a/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs @@ -1,9 +1,9 @@ -using Content.Server.Chemistry.EntitySystems; using Content.Server.Explosion.Components; using Content.Server.Explosion.EntitySystems; using Content.Server.Fluids.EntitySystems; using Content.Server.Nutrition.Components; using Content.Server.Popups; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Containers.ItemSlots; using Content.Shared.Interaction; using Content.Shared.Nutrition.Components; diff --git a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs index 2c8a0a768f61a5..e493a18ae70aaf 100644 --- a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs @@ -1,6 +1,5 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Chemistry.EntitySystems; using Content.Server.Chemistry.ReagentEffects; using Content.Server.Fluids.EntitySystems; @@ -12,6 +11,8 @@ using Content.Shared.Body.Components; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Database; using Content.Shared.DoAfter; diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index 6213b4e9c62bf7..8406ce222d8c67 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -1,6 +1,5 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Inventory; using Content.Server.Nutrition.Components; using Content.Server.Popups; @@ -9,6 +8,7 @@ using Content.Shared.Body.Components; using Content.Shared.Body.Organ; using Content.Shared.Chemistry; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Database; using Content.Shared.DoAfter; diff --git a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs index c344f1b325ec5c..81bba0eb79dc7b 100644 --- a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs @@ -1,8 +1,9 @@ -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Chemistry.EntitySystems; using Content.Server.Nutrition; using Content.Server.Nutrition.Components; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Examine; using Content.Shared.FixedPoint; using Content.Shared.Hands.EntitySystems; diff --git a/Content.Server/Nutrition/EntitySystems/SmokingSystem.SmokingPipe.cs b/Content.Server/Nutrition/EntitySystems/SmokingSystem.SmokingPipe.cs index 4817f2c246c0ef..772847e8df2abc 100644 --- a/Content.Server/Nutrition/EntitySystems/SmokingSystem.SmokingPipe.cs +++ b/Content.Server/Nutrition/EntitySystems/SmokingSystem.SmokingPipe.cs @@ -1,9 +1,8 @@ -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Nutrition.Components; using Content.Shared.Nutrition.Components; +using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Containers.ItemSlots; using Content.Shared.Interaction; -using Content.Shared.PDA; using Content.Shared.Smoking; using Content.Shared.Temperature; diff --git a/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs b/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs index 96c7f8a64c4bd0..276393b728b001 100644 --- a/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs @@ -1,9 +1,9 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Body.Components; using Content.Server.Body.Systems; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Nutrition.Components; using Content.Shared.Chemistry; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Clothing.Components; using Content.Shared.Clothing.EntitySystems; diff --git a/Content.Server/Nutrition/EntitySystems/TrashOnEmptySystem.cs b/Content.Server/Nutrition/EntitySystems/TrashOnEmptySystem.cs index 67f95b276479fc..e702247900468c 100644 --- a/Content.Server/Nutrition/EntitySystems/TrashOnEmptySystem.cs +++ b/Content.Server/Nutrition/EntitySystems/TrashOnEmptySystem.cs @@ -1,7 +1,8 @@ -using Content.Server.Chemistry.Components.SolutionManager; using Content.Server.Chemistry.EntitySystems; using Content.Server.Nutrition.Components; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Tag; namespace Content.Server.Nutrition.EntitySystems diff --git a/Content.Server/Payload/EntitySystems/PayloadSystem.cs b/Content.Server/Payload/EntitySystems/PayloadSystem.cs index 2bf78b2e9359a9..6e0b5cc51579df 100644 --- a/Content.Server/Payload/EntitySystems/PayloadSystem.cs +++ b/Content.Server/Payload/EntitySystems/PayloadSystem.cs @@ -1,8 +1,8 @@ using System.Linq; using Content.Server.Administration.Logs; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Explosion.EntitySystems; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.Examine; using Content.Shared.Payload.Components; diff --git a/Content.Server/Power/EntitySystems/RiggableSystem.cs b/Content.Server/Power/EntitySystems/RiggableSystem.cs index b35d936ace0784..995aeb7700014e 100644 --- a/Content.Server/Power/EntitySystems/RiggableSystem.cs +++ b/Content.Server/Power/EntitySystems/RiggableSystem.cs @@ -1,10 +1,8 @@ using Content.Server.Administration.Logs; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Explosion.EntitySystems; using Content.Server.Kitchen.Components; using Content.Server.Power.Components; -using Content.Server.Stunnable.Components; -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.Rejuvenate; diff --git a/Content.Server/Power/Generator/ChemicalFuelGeneratorAdapterComponent.cs b/Content.Server/Power/Generator/ChemicalFuelGeneratorAdapterComponent.cs index dd922368dab14c..abaf1c4d948eac 100644 --- a/Content.Server/Power/Generator/ChemicalFuelGeneratorAdapterComponent.cs +++ b/Content.Server/Power/Generator/ChemicalFuelGeneratorAdapterComponent.cs @@ -1,4 +1,5 @@ -using Content.Server.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; diff --git a/Content.Server/Power/Generator/GeneratorSystem.cs b/Content.Server/Power/Generator/GeneratorSystem.cs index 591fd7f300ba34..7d88061f622358 100644 --- a/Content.Server/Power/Generator/GeneratorSystem.cs +++ b/Content.Server/Power/Generator/GeneratorSystem.cs @@ -1,10 +1,10 @@ using Content.Server.Audio; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Fluids.EntitySystems; using Content.Server.Materials; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using Content.Shared.Popups; using Content.Shared.Power.Generator; diff --git a/Content.Server/Stunnable/Systems/StunbatonSystem.cs b/Content.Server/Stunnable/Systems/StunbatonSystem.cs index 1fef8f1159b08a..7a801765d85cd0 100644 --- a/Content.Server/Stunnable/Systems/StunbatonSystem.cs +++ b/Content.Server/Stunnable/Systems/StunbatonSystem.cs @@ -1,9 +1,9 @@ -using Content.Server.Chemistry.EntitySystems; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Power.Events; using Content.Server.Stunnable.Components; using Content.Shared.Audio; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Damage.Events; using Content.Shared.Examine; using Content.Shared.Interaction.Events; diff --git a/Content.Server/Tools/ToolSystem.Welder.cs b/Content.Server/Tools/ToolSystem.Welder.cs index bd626258ecd450..8a4b881f9f4310 100644 --- a/Content.Server/Tools/ToolSystem.Welder.cs +++ b/Content.Server/Tools/ToolSystem.Welder.cs @@ -1,8 +1,8 @@ using System.Linq; using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Tools.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.DoAfter; using Content.Shared.Examine; @@ -13,7 +13,6 @@ using Content.Shared.Toggleable; using Content.Shared.Tools.Components; using Content.Shared.Weapons.Melee.Events; -using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Utility; diff --git a/Content.Server/Tools/ToolSystem.cs b/Content.Server/Tools/ToolSystem.cs index a56dabaf8b74d7..63642338f38714 100644 --- a/Content.Server/Tools/ToolSystem.cs +++ b/Content.Server/Tools/ToolSystem.cs @@ -1,7 +1,7 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Popups; using Content.Server.Tools.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Maps; using Content.Shared.Tools; using Robust.Server.GameObjects; diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index 94ddc09e732665..ab7831b2a484f8 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -4,18 +4,17 @@ using Content.Server.Body.Systems; using Content.Server.Chat.Systems; using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Server.CombatMode.Disarm; using Content.Server.Contests; using Content.Server.Movement.Systems; using Content.Shared.Actions.Events; using Content.Shared.Administration.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.CombatMode; using Content.Shared.Damage.Events; using Content.Shared.Damage.Systems; using Content.Shared.Database; using Content.Shared.Effects; -using Content.Shared.FixedPoint; using Content.Shared.Hands.Components; using Content.Shared.IdentityManagement; using Content.Shared.Inventory; diff --git a/Content.Server/Weapons/Ranged/Systems/ChemicalAmmoSystem.cs b/Content.Server/Weapons/Ranged/Systems/ChemicalAmmoSystem.cs index c6bc89ffe40189..3d8601cc8e7dca 100644 --- a/Content.Server/Weapons/Ranged/Systems/ChemicalAmmoSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/ChemicalAmmoSystem.cs @@ -1,7 +1,7 @@ using System.Linq; -using Content.Server.Chemistry.EntitySystems; using Content.Server.Weapons.Ranged.Components; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Weapons.Ranged.Events; namespace Content.Server.Weapons.Ranged.Systems diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.Solution.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.Solution.cs index 4434c23ba5ef73..734a01602c8bc4 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.Solution.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.Solution.cs @@ -1,6 +1,6 @@ using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using Content.Shared.Vapor; using Content.Shared.Weapons.Ranged; diff --git a/Content.Shared/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs new file mode 100644 index 00000000000000..f9cd6e8e8e7e95 --- /dev/null +++ b/Content.Shared/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs @@ -0,0 +1,15 @@ +namespace Content.Shared.Chemistry.Components.SolutionManager; + +/// +/// Denotes the solution that can removed be with syringes. +/// +[RegisterComponent] +public sealed partial class DrawableSolutionComponent : Component +{ + /// + /// Solution name that can be removed with syringes. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField("solution")] + public string Solution { get; set; } = "default"; +} diff --git a/Content.Shared/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs new file mode 100644 index 00000000000000..b12a5bd6e4eeab --- /dev/null +++ b/Content.Shared/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs @@ -0,0 +1,9 @@ +namespace Content.Shared.Chemistry.Components.SolutionManager; + +[RegisterComponent] +public sealed partial class ExaminableSolutionComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite)] + [DataField("solution")] + public string Solution { get; set; } = "default"; +} diff --git a/Content.Shared/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs new file mode 100644 index 00000000000000..a696244956ef46 --- /dev/null +++ b/Content.Shared/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs @@ -0,0 +1,16 @@ +namespace Content.Shared.Chemistry.Components.SolutionManager; + +/// +/// Denotes a solution which can be added with syringes. +/// +[RegisterComponent] +public sealed partial class InjectableSolutionComponent : Component +{ + + /// + /// Solution name which can be added with syringes. + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField("solution")] + public string Solution { get; set; } = "default"; +} diff --git a/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs new file mode 100644 index 00000000000000..9dfa4a71fd4323 --- /dev/null +++ b/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs @@ -0,0 +1,12 @@ +using Content.Shared.Chemistry.EntitySystems; + +namespace Content.Shared.Chemistry.Components.SolutionManager; + +[RegisterComponent] +[Access(typeof(SolutionContainerSystem))] +public sealed partial class SolutionContainerManagerComponent : Component +{ + [DataField("solutions")] + [Access(typeof(SolutionContainerSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends + public Dictionary Solutions = new(); +} diff --git a/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.Capabilities.cs b/Content.Shared/Chemistry/EntitySystems/SolutionContainerSystem.Capabilities.cs similarity index 98% rename from Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.Capabilities.cs rename to Content.Shared/Chemistry/EntitySystems/SolutionContainerSystem.Capabilities.cs index 3b8505efd4098e..3647ddb8521181 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.Capabilities.cs +++ b/Content.Shared/Chemistry/EntitySystems/SolutionContainerSystem.Capabilities.cs @@ -1,10 +1,10 @@ using System.Diagnostics.CodeAnalysis; using System.Text; -using Content.Server.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.FixedPoint; -namespace Content.Server.Chemistry.EntitySystems; +namespace Content.Shared.Chemistry.EntitySystems; public sealed partial class SolutionContainerSystem { diff --git a/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs b/Content.Shared/Chemistry/EntitySystems/SolutionContainerSystem.cs similarity index 97% rename from Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs rename to Content.Shared/Chemistry/EntitySystems/SolutionContainerSystem.cs index 7ca92fab4e9174..d4c599557bc499 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SolutionContainerSystem.cs @@ -1,10 +1,8 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; -using Content.Server.Chemistry.Components.SolutionManager; -using Content.Server.Examine; -using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.Reaction; using Content.Shared.Chemistry.Reagent; using Content.Shared.Examine; @@ -15,7 +13,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Utility; -namespace Content.Server.Chemistry.EntitySystems; +namespace Content.Shared.Chemistry.EntitySystems; /// /// This event alerts system that the solution was changed @@ -38,14 +36,12 @@ public SolutionChangedEvent(Solution solution, string solutionId) [UsedImplicitly] public sealed partial class SolutionContainerSystem : EntitySystem { - [Dependency] - private readonly ChemicalReactionSystem _chemistrySystem = default!; + [Dependency] private readonly ChemicalReactionSystem _chemistrySystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - [Dependency] - private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly ExamineSystem _examine = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly ExamineSystemShared _examine = default!; public override void Initialize() { @@ -145,8 +141,7 @@ private void OnExamineSolution(EntityUid uid, ExaminableSolutionComponent examin if (!_prototypeManager.TryIndex(primaryReagent.Value.Prototype, out ReagentPrototype? primary)) { - Logger.Error( - $"{nameof(Solution)} could not find the prototype associated with {primaryReagent}."); + Log.Error($"{nameof(Solution)} could not find the prototype associated with {primaryReagent}."); return; } @@ -646,7 +641,7 @@ public Solution RemoveEachReagent(EntityUid uid, Solution solution, FixedPoint2 var removedSolution = new Solution(); // RemoveReagent does a RemoveSwap, meaning we don't have to copy the list if we iterate it backwards. - for (var i = solution.Contents.Count-1; i >= 0; i--) + for (var i = solution.Contents.Count - 1; i >= 0; i--) { var (reagent, _) = solution.Contents[i]; var removedQuantity = solution.RemoveReagent(reagent, quantity); @@ -685,7 +680,7 @@ public bool TryGetMixableSolution(EntityUid uid, var getMixableSolutionAttempt = new GetMixableSolutionAttemptEvent(uid); RaiseLocalEvent(uid, ref getMixableSolutionAttempt); - if(getMixableSolutionAttempt.MixedSolution != null) + if (getMixableSolutionAttempt.MixedSolution != null) { solution = getMixableSolutionAttempt.MixedSolution; return true; diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml index 595f6ec363ebbb..a55c53542138e6 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml @@ -563,7 +563,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 65 + maxVol: 65 reagents: - ReagentId: Nutriment Quantity: 30 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/noodles.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/noodles.yml index 7b9cdb51a23ef2..2fb16c7846c4cc 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/noodles.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/noodles.yml @@ -62,7 +62,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 25 + maxVol: 25 reagents: - ReagentId: Nutriment Quantity: 12 @@ -85,7 +85,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 @@ -111,7 +111,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 @@ -136,7 +136,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 7 @@ -159,7 +159,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml index 43e3dc9debb5f9..92946f6f7a2de5 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml @@ -76,7 +76,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 @@ -101,7 +101,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 @@ -131,7 +131,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 @@ -161,7 +161,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 @@ -193,7 +193,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 @@ -221,7 +221,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 @@ -246,7 +246,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 8 @@ -271,7 +271,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 10 + maxVol: 10 reagents: - ReagentId: Nutriment Quantity: 2 @@ -299,7 +299,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 15 + maxVol: 15 reagents: - ReagentId: Nutriment Quantity: 7 @@ -327,7 +327,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 38 + maxVol: 38 reagents: - ReagentId: Nutriment Quantity: 18 @@ -355,7 +355,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 25 + maxVol: 25 reagents: - ReagentId: Nutriment Quantity: 8 @@ -397,7 +397,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 12 + maxVol: 12 reagents: - ReagentId: Nutriment Quantity: 4 @@ -425,7 +425,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 40 + maxVol: 40 reagents: - ReagentId: Nutriment Quantity: 18 @@ -457,7 +457,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 25 + maxVol: 25 reagents: - ReagentId: Nutriment Quantity: 9 @@ -487,7 +487,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 12 + maxVol: 12 reagents: - ReagentId: Nutriment Quantity: 5 @@ -519,7 +519,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 20 + maxVol: 20 reagents: - ReagentId: Nutriment Quantity: 7 @@ -559,7 +559,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 12 + maxVol: 12 reagents: - ReagentId: Nutriment Quantity: 6 @@ -584,7 +584,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 12 + maxVol: 12 reagents: - ReagentId: Nutriment Quantity: 7 @@ -613,7 +613,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 12 + maxVol: 12 reagents: - ReagentId: Nutriment Quantity: 1 @@ -639,7 +639,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 12 + maxVol: 12 reagents: - ReagentId: Nutriment Quantity: 3 @@ -669,7 +669,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 30 + maxVol: 30 reagents: - ReagentId: Protein Quantity: 9 @@ -694,7 +694,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 12 + maxVol: 12 reagents: - ReagentId: Nutriment Quantity: 2 @@ -720,7 +720,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 12 + maxVol: 12 reagents: - ReagentId: Nutriment Quantity: 5 @@ -747,7 +747,7 @@ - type: SolutionContainerManager solutions: food: - maxvol: 12 + maxVol: 12 reagents: - ReagentId: Nutriment Quantity: 5 From ce76a03d5eb60448b94f3fb75dbdfe40acef1514 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Sun, 15 Oct 2023 03:48:25 +1100 Subject: [PATCH 096/245] Small ExplosionSystem Cleanup (#20817) --- .../ExplosionSystem.Processing.cs | 151 ++++++++---------- .../EntitySystems/ExplosionSystem.cs | 15 ++ 2 files changed, 85 insertions(+), 81 deletions(-) diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs index cce7050e3f436a..102b461fe02538 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs @@ -1,5 +1,6 @@ using System.Linq; using System.Numerics; +using System.Reflection; using Content.Server.Explosion.Components; using Content.Shared.CCVar; using Content.Shared.Damage; @@ -18,11 +19,12 @@ using Robust.Shared.Physics.Dynamics; using Robust.Shared.Random; using Robust.Shared.Timing; +using Robust.Shared.Utility; using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; namespace Content.Server.Explosion.EntitySystems; -public sealed partial class ExplosionSystem : EntitySystem +public sealed partial class ExplosionSystem { /// /// Used to limit explosion processing time. See . @@ -176,12 +178,12 @@ public override void Update(float frameTime) /// Used for a variation of that makes use of the fact that we have /// already done an entity lookup on a tile, and don't need to do so again. /// - public bool IsBlockingTurf(EntityUid uid, EntityQuery physicsQuery) + public bool IsBlockingTurf(EntityUid uid) { if (EntityManager.IsQueuedForDeletion(uid)) return false; - if (!physicsQuery.TryGetComponent(uid, out var physics)) + if (!_physicsQuery.TryGetComponent(uid, out var physics)) return false; return physics.CanCollide && physics.Hard && (physics.CollisionLayer & (int) CollisionGroup.Impassable) != 0; @@ -198,19 +200,14 @@ internal bool ExplodeTile(BroadphaseComponent lookup, DamageSpecifier damage, MapCoordinates epicenter, HashSet processed, - string id, - EntityQuery xformQuery, - EntityQuery damageQuery, - EntityQuery physicsQuery, - EntityQuery tagQuery, - EntityQuery projectileQuery) + string id) { var gridBox = new Box2(tile * grid.TileSize, (tile + 1) * grid.TileSize); // get the entities on a tile. Note that we cannot process them directly, or we get // enumerator-changed-while-enumerating errors. - List list = new(); - var state = (list, processed, xformQuery); + List<(EntityUid, TransformComponent)> list = new(); + var state = (list, processed, _transformQuery); // get entities: lookup.DynamicTree.QueryAabb(ref state, GridQueryCallback, gridBox, true); @@ -219,9 +216,9 @@ internal bool ExplodeTile(BroadphaseComponent lookup, lookup.StaticSundriesTree.QueryAabb(ref state, GridQueryCallback, gridBox, true); // process those entities - foreach (var xform in list) + foreach (var (uid, xform) in list) { - ProcessEntity(xform.Owner, epicenter, damage, throwForce, id, xform, damageQuery, physicsQuery, xformQuery, tagQuery, projectileQuery); + ProcessEntity(uid, epicenter, damage, throwForce, id, xform); } // process anchored entities @@ -230,7 +227,7 @@ internal bool ExplodeTile(BroadphaseComponent lookup, foreach (var entity in anchoredList) { processed.Add(entity); - ProcessEntity(entity, epicenter, damage, throwForce, id, null, damageQuery, physicsQuery, xformQuery, tagQuery, projectileQuery); + ProcessEntity(entity, epicenter, damage, throwForce, id, null); } // Walls and reinforced walls will break into girders. These girders will also be considered turf-blocking for @@ -241,7 +238,7 @@ internal bool ExplodeTile(BroadphaseComponent lookup, { foreach (var entity in grid.GetAnchoredEntities(tile)) { - tileBlocked |= IsBlockingTurf(entity, physicsQuery); + tileBlocked |= IsBlockingTurf(entity); } } @@ -260,28 +257,28 @@ internal bool ExplodeTile(BroadphaseComponent lookup, lookup.DynamicTree.QueryAabb(ref state, GridQueryCallback, gridBox, true); lookup.SundriesTree.QueryAabb(ref state, GridQueryCallback, gridBox, true); - foreach (var xform in list) + foreach (var (uid, xform) in list) { // Here we only throw, no dealing damage. Containers n such might drop their entities after being destroyed, but // they should handle their own damage pass-through, with their own damage reduction calculation. - ProcessEntity(xform.Owner, epicenter, null, throwForce, id, xform, damageQuery, physicsQuery, xformQuery, tagQuery, projectileQuery); + ProcessEntity(uid, epicenter, null, throwForce, id, xform); } return !tileBlocked; } private bool GridQueryCallback( - ref (List List, HashSet Processed, EntityQuery XformQuery) state, + ref (List<(EntityUid, TransformComponent)> List, HashSet Processed, EntityQuery XformQuery) state, in EntityUid uid) { if (state.Processed.Add(uid) && state.XformQuery.TryGetComponent(uid, out var xform)) - state.List.Add(xform); + state.List.Add((uid, xform)); return true; } private bool GridQueryCallback( - ref (List List, HashSet Processed, EntityQuery XformQuery) state, + ref (List<(EntityUid, TransformComponent)> List, HashSet Processed, EntityQuery XformQuery) state, in FixtureProxy proxy) { var owner = proxy.Entity; @@ -299,17 +296,12 @@ internal void ExplodeSpace(BroadphaseComponent lookup, DamageSpecifier damage, MapCoordinates epicenter, HashSet processed, - string id, - EntityQuery xformQuery, - EntityQuery damageQuery, - EntityQuery physicsQuery, - EntityQuery tagQuery, - EntityQuery projectileQuery) + string id) { var gridBox = Box2.FromDimensions(tile * DefaultTileSize, new Vector2(DefaultTileSize, DefaultTileSize)); var worldBox = spaceMatrix.TransformBox(gridBox); - var list = new List(); - var state = (list, processed, invSpaceMatrix, lookup.Owner, xformQuery, gridBox); + var list = new List<(EntityUid, TransformComponent)>(); + var state = (list, processed, invSpaceMatrix, lookup.Owner, _transformQuery, gridBox); // get entities: lookup.DynamicTree.QueryAabb(ref state, SpaceQueryCallback, worldBox, true); @@ -317,10 +309,10 @@ internal void ExplodeSpace(BroadphaseComponent lookup, lookup.SundriesTree.QueryAabb(ref state, SpaceQueryCallback, worldBox, true); lookup.StaticSundriesTree.QueryAabb(ref state, SpaceQueryCallback, worldBox, true); - foreach (var xform in state.Item1) + foreach (var (uid, xform) in state.Item1) { - processed.Add(xform.Owner); - ProcessEntity(xform.Owner, epicenter, damage, throwForce, id, xform, damageQuery, physicsQuery, xformQuery, tagQuery, projectileQuery); + processed.Add(uid); + ProcessEntity(uid, epicenter, damage, throwForce, id, xform); } if (throwForce <= 0) @@ -332,14 +324,14 @@ internal void ExplodeSpace(BroadphaseComponent lookup, lookup.DynamicTree.QueryAabb(ref state, SpaceQueryCallback, worldBox, true); lookup.SundriesTree.QueryAabb(ref state, SpaceQueryCallback, worldBox, true); - foreach (var xform in list) + foreach (var (uid, xform) in list) { - ProcessEntity(xform.Owner, epicenter, null, throwForce, id, xform, damageQuery, physicsQuery, xformQuery, tagQuery, projectileQuery); + ProcessEntity(uid, epicenter, null, throwForce, id, xform); } } private bool SpaceQueryCallback( - ref (List List, HashSet Processed, Matrix3 InvSpaceMatrix, EntityUid LookupOwner, EntityQuery XformQuery, Box2 GridBox) state, + ref (List<(EntityUid, TransformComponent)> List, HashSet Processed, Matrix3 InvSpaceMatrix, EntityUid LookupOwner, EntityQuery XformQuery, Box2 GridBox) state, in EntityUid uid) { if (state.Processed.Contains(uid)) @@ -351,20 +343,20 @@ private bool SpaceQueryCallback( { // parented directly to the map, use local position if (state.GridBox.Contains(state.InvSpaceMatrix.Transform(xform.LocalPosition))) - state.List.Add(xform); + state.List.Add((uid, xform)); return true; } // finally check if it intersects our tile if (state.GridBox.Contains(state.InvSpaceMatrix.Transform(_transformSystem.GetWorldPosition(xform, state.XformQuery)))) - state.List.Add(xform); + state.List.Add((uid, xform)); return true; } private bool SpaceQueryCallback( - ref (List List, HashSet Processed, Matrix3 InvSpaceMatrix, EntityUid LookupOwner, EntityQuery XformQuery, Box2 GridBox) state, + ref (List<(EntityUid, TransformComponent)> List, HashSet Processed, Matrix3 InvSpaceMatrix, EntityUid LookupOwner, EntityQuery XformQuery, Box2 GridBox) state, in FixtureProxy proxy) { var uid = proxy.Entity; @@ -380,44 +372,38 @@ private void ProcessEntity( DamageSpecifier? damage, float throwForce, string id, - TransformComponent? xform, - EntityQuery damageQuery, - EntityQuery physicsQuery, - EntityQuery transformQuery, - EntityQuery tagQuery, - EntityQuery projectileQuery) + TransformComponent? xform) { // damage - if (damage != null && damageQuery.TryGetComponent(uid, out var damageable)) + if (damage != null && _damageQuery.TryGetComponent(uid, out var damageable)) { + // TODO Explosion Performance + // Cache this? I.e., instead of raising an event, check for a component? var ev = new GetExplosionResistanceEvent(id); - RaiseLocalEvent(uid, ref ev, false); + RaiseLocalEvent(uid, ref ev); ev.DamageCoefficient = Math.Max(0, ev.DamageCoefficient); - //todo need a way to track origin of explosion - if (ev.DamageCoefficient == 1) + // TODO explosion entity + // Move explosion data into the existing explosion visuals entity + // Give each explosion a unique name, include in admin logs. + + // TODO Explosion Performance + // This creates a new dictionary. Maybe we should just re-use a private local damage specifier and update it. + // Though most entities shouldn't have explosion resistance, so maybe its fine. + // ReSharper disable once CompareOfFloatsByEqualityOperator + if (ev.DamageCoefficient != 1) + damage *= ev.DamageCoefficient; + + // Log damage to players. Damage is logged before dealing damage so that the position can be logged before + // the entity gets deleted. + if (_mindQuery.HasComponent(uid)) { - // no damage-dict multiplication required. - _damageableSystem.TryChangeDamage(uid, damage, ignoreResistances: true, damageable: damageable); - if (HasComp(uid) || HasComp(uid)) - { - var damageStr = string.Join(", ", damage.DamageDict.Select(entry => $"{entry.Key}: {entry.Value}")); - _adminLogger.Add(LogType.Explosion, LogImpact.Medium, - $"Explosion caused [{damageStr}] to {ToPrettyString(uid):target} at {Transform(uid).Coordinates}"); - } - } - else - { - var appliedDamage = damage * ev.DamageCoefficient; - _damageableSystem.TryChangeDamage(uid, appliedDamage, ignoreResistances: true, damageable: damageable); - if (HasComp(uid) || HasComp(uid)) - { - var damageStr = string.Join(", ", appliedDamage.DamageDict.Select(entry => $"{entry.Key}: {entry.Value}")); - _adminLogger.Add(LogType.Explosion, LogImpact.Medium, - $"Explosion caused [{damageStr}] to {ToPrettyString(uid):target} at {Transform(uid).Coordinates}"); - } + _adminLogger.Add(LogType.Explosion, LogImpact.Medium, + $"Explosion caused [{damage.Total}] damage to {ToPrettyString(uid):target} at {xform?.Coordinates}"); } + + _damageableSystem.TryChangeDamage(uid, damage, ignoreResistances: true, damageable: damageable); } // throw @@ -425,16 +411,16 @@ private void ProcessEntity( && !xform.Anchored && throwForce > 0 && !EntityManager.IsQueuedForDeletion(uid) - && physicsQuery.TryGetComponent(uid, out var physics) + && _physicsQuery.TryGetComponent(uid, out var physics) && physics.BodyType == BodyType.Dynamic) { - var pos = _transformSystem.GetWorldPosition(xform, transformQuery); + var pos = _transformSystem.GetWorldPosition(xform); _throwingSystem.TryThrow( uid, pos - epicenter.Position, physics, xform, - projectileQuery, + _projectileQuery, throwForce); } @@ -564,6 +550,9 @@ struct ExplosionData // Variables used for enumerating over tiles, grids, etc private DamageSpecifier _currentDamage = default!; +#if DEBUG + private DamageSpecifier? _expectedDamage; +#endif private BroadphaseComponent _currentLookup = default!; private MapGridComponent? _currentGrid; private float _currentIntensity; @@ -683,6 +672,16 @@ private bool TryGetNextTileEnumerator() while (CurrentIteration < _tileSetIntensity.Count) { _currentIntensity = _tileSetIntensity[CurrentIteration]; + + #if DEBUG + if (_expectedDamage != null) + { + // Check that explosion processing hasn't somehow accidentally mutated the damage set. + DebugTools.Assert(_expectedDamage.Equals(_currentDamage)); + _expectedDamage = ExplosionType.DamagePerIntensity * _currentIntensity; + } + #endif + _currentDamage = ExplosionType.DamagePerIntensity * _currentIntensity; // only throw if either the explosion is small, or if this is the outer ring of a large explosion. @@ -780,12 +779,7 @@ public int Process(int processingTarget) _currentDamage, Epicenter, ProcessedEntities, - ExplosionType.ID, - _xformQuery, - _damageQuery, - _physicsQuery, - _tagQuery, - _projectileQuery); + ExplosionType.ID); // If the floor is not blocked by some dense object, damage the floor tiles. if (canDamageFloor) @@ -802,12 +796,7 @@ public int Process(int processingTarget) _currentDamage, Epicenter, ProcessedEntities, - ExplosionType.ID, - _xformQuery, - _damageQuery, - _physicsQuery, - _tagQuery, - _projectileQuery); + ExplosionType.ID); } if (!MoveNext()) diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs index 5e5af03c17b3d3..aa1ad71b16c188 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs @@ -14,12 +14,15 @@ using Content.Shared.Explosion; using Content.Shared.GameTicking; using Content.Shared.Inventory; +using Content.Shared.Mind; +using Content.Shared.Projectiles; using Content.Shared.Throwing; using Robust.Server.GameStates; using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Configuration; using Robust.Shared.Map; +using Robust.Shared.Physics.Components; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -47,6 +50,12 @@ public sealed partial class ExplosionSystem : EntitySystem [Dependency] private readonly PvsOverrideSystem _pvsSys = default!; [Dependency] private readonly SharedTransformSystem _transformSystem = default!; + private EntityQuery _transformQuery; + private EntityQuery _damageQuery; + private EntityQuery _physicsQuery; + private EntityQuery _projectileQuery; + private EntityQuery _mindQuery; + /// /// "Tile-size" for space when there are no nearby grids to use as a reference. /// @@ -93,6 +102,12 @@ public override void Initialize() SubscribeCvars(); InitAirtightMap(); InitVisuals(); + + _transformQuery = GetEntityQuery(); + _damageQuery = GetEntityQuery(); + _physicsQuery = GetEntityQuery(); + _projectileQuery = GetEntityQuery(); + _mindQuery = GetEntityQuery(); } private void OnReset(RoundRestartCleanupEvent ev) From 49a584f12c8bbe7b4015b1a104133e4a1052a3f7 Mon Sep 17 00:00:00 2001 From: Interrobang01 <113810873+Interrobang01@users.noreply.github.com> Date: Sat, 14 Oct 2023 10:05:01 -0700 Subject: [PATCH 097/245] Update comms console description (#20974) --- .../Entities/Structures/Machines/Computers/computers.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml index 7a80ba37d89844..d4cc456eda89fb 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml @@ -522,7 +522,7 @@ parent: BaseComputer id: ComputerComms name: communications computer - description: A computer used to make station wide announcements, set the appropriate alert level, and call the emergency shuttle. + description: A computer used to make station wide announcements via keyboard, set the appropriate alert level, and call the emergency shuttle. components: - type: Sprite layers: @@ -558,7 +558,7 @@ parent: ComputerComms id: SyndicateComputerComms name: syndicate communications computer - description: This can be used for various important functions. Still under development. + description: A computer capable of remotely hacking into the station's communications systems. Using this to make an announcement will alert the station to your presence. components: - type: Sprite layers: From 9e1ecdea76f87f33751a4725621500a2e3200021 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 14 Oct 2023 10:28:06 -0700 Subject: [PATCH 098/245] Remove obsolete usages of AnimationPlayerComponent (#20806) --- .../EntityPickupAnimationComponent.cs | 11 +++ .../Animations/EntityPickupAnimationSystem.cs | 87 +++++++++++++++++++ .../Animations/ReusableAnimations.cs | 68 --------------- Content.Client/Jittering/JitteringSystem.cs | 18 ++-- .../Components/LightBehaviourComponent.cs | 25 ++++-- .../EntitySystems/RotatingLightSystem.cs | 13 ++- Content.Client/Orbit/OrbitVisualsSystem.cs | 27 +++--- .../Storage/Systems/StorageSystem.cs | 5 +- 8 files changed, 145 insertions(+), 109 deletions(-) create mode 100644 Content.Client/Animations/EntityPickupAnimationComponent.cs create mode 100644 Content.Client/Animations/EntityPickupAnimationSystem.cs delete mode 100644 Content.Client/Animations/ReusableAnimations.cs diff --git a/Content.Client/Animations/EntityPickupAnimationComponent.cs b/Content.Client/Animations/EntityPickupAnimationComponent.cs new file mode 100644 index 00000000000000..663ce628f6830f --- /dev/null +++ b/Content.Client/Animations/EntityPickupAnimationComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Client.Animations; + +/// +/// Applied to client-side clone entities to animate them approaching the player that +/// picked up the original entity. +/// +[RegisterComponent] +[Access(typeof(EntityPickupAnimationSystem))] +public sealed partial class EntityPickupAnimationComponent : Component +{ +} diff --git a/Content.Client/Animations/EntityPickupAnimationSystem.cs b/Content.Client/Animations/EntityPickupAnimationSystem.cs new file mode 100644 index 00000000000000..2ac51e6eba0274 --- /dev/null +++ b/Content.Client/Animations/EntityPickupAnimationSystem.cs @@ -0,0 +1,87 @@ +using System.Numerics; +using Robust.Client.Animations; +using Robust.Client.GameObjects; +using Robust.Shared.Animations; +using Robust.Shared.Map; +using Robust.Shared.Spawners; +using static Robust.Client.Animations.AnimationTrackProperty; + +namespace Content.Client.Animations; + +/// +/// System that handles animating an entity that a player has picked up. +/// +public sealed class EntityPickupAnimationSystem : EntitySystem +{ + [Dependency] private readonly AnimationPlayerSystem _animations = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly TransformSystem _transform = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnEntityPickupAnimationCompleted); + } + + private void OnEntityPickupAnimationCompleted(EntityUid uid, EntityPickupAnimationComponent component, AnimationCompletedEvent args) + { + Del(uid); + } + + /// + /// Animates a clone of an entity moving from one point to another before + /// being deleted. + /// Used when the player picks up an entity. + /// + public void AnimateEntityPickup(EntityUid uid, EntityCoordinates initial, Vector2 final, Angle initialAngle) + { + if (Deleted(uid) || !initial.IsValid(EntityManager)) + return; + + var metadata = MetaData(uid); + + if (IsPaused(uid, metadata)) + return; + + var animatableClone = Spawn("clientsideclone", initial); + EnsureComp(animatableClone); + var val = metadata.EntityName; + _metaData.SetEntityName(animatableClone, val); + + if (!TryComp(uid, out SpriteComponent? sprite0)) + { + Log.Error("Entity ({0}) couldn't be animated for pickup since it doesn't have a {1}!", metadata.EntityName, nameof(SpriteComponent)); + return; + } + + var sprite = Comp(animatableClone); + sprite.CopyFrom(sprite0); + sprite.Visible = true; + + var animations = Comp(animatableClone); + + var despawn = EnsureComp(animatableClone); + despawn.Lifetime = 0.25f; + _transform.SetLocalRotationNoLerp(animatableClone, initialAngle); + + _animations.Play(animatableClone, animations, new Animation + { + Length = TimeSpan.FromMilliseconds(125), + AnimationTracks = + { + new AnimationTrackComponentProperty + { + ComponentType = typeof(TransformComponent), + Property = nameof(TransformComponent.LocalPosition), + InterpolationMode = AnimationInterpolationMode.Linear, + KeyFrames = + { + new KeyFrame(initial.Position, 0), + new KeyFrame(final, 0.125f) + } + }, + } + }, "fancy_pickup_anim"); + } +} diff --git a/Content.Client/Animations/ReusableAnimations.cs b/Content.Client/Animations/ReusableAnimations.cs deleted file mode 100644 index 33e3eb25b4e052..00000000000000 --- a/Content.Client/Animations/ReusableAnimations.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System.Numerics; -using Robust.Shared.Spawners; -using Robust.Client.Animations; -using Robust.Client.GameObjects; -using Robust.Shared.Animations; -using Robust.Shared.Map; -using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; - -namespace Content.Client.Animations -{ - public static class ReusableAnimations - { - public static void AnimateEntityPickup(EntityUid entity, EntityCoordinates initialCoords, Vector2 finalPosition, Angle initialAngle, IEntityManager? entMan = null) - { - IoCManager.Resolve(ref entMan); - - if (entMan.Deleted(entity) || !initialCoords.IsValid(entMan)) - return; - - var metadata = entMan.GetComponent(entity); - - if (entMan.IsPaused(entity, metadata)) - return; - - var animatableClone = entMan.SpawnEntity("clientsideclone", initialCoords); - string val = entMan.GetComponent(entity).EntityName; - entMan.System().SetEntityName(animatableClone, val); - - if (!entMan.TryGetComponent(entity, out SpriteComponent? sprite0)) - { - Logger.Error("Entity ({0}) couldn't be animated for pickup since it doesn't have a {1}!", entMan.GetComponent(entity).EntityName, nameof(SpriteComponent)); - return; - } - var sprite = entMan.GetComponent(animatableClone); - sprite.CopyFrom(sprite0); - sprite.Visible = true; - - var animations = entMan.GetComponent(animatableClone); - animations.AnimationCompleted += (_) => - { - entMan.DeleteEntity(animatableClone); - }; - - var despawn = entMan.EnsureComponent(animatableClone); - despawn.Lifetime = 0.25f; - entMan.System().SetLocalRotationNoLerp(animatableClone, initialAngle); - - animations.Play(new Animation - { - Length = TimeSpan.FromMilliseconds(125), - AnimationTracks = - { - new AnimationTrackComponentProperty - { - ComponentType = typeof(TransformComponent), - Property = nameof(TransformComponent.LocalPosition), - InterpolationMode = AnimationInterpolationMode.Linear, - KeyFrames = - { - new AnimationTrackProperty.KeyFrame(initialCoords.Position, 0), - new AnimationTrackProperty.KeyFrame(finalPosition, 0.125f) - } - }, - } - }, "fancy_pickup_anim"); - } - } -} diff --git a/Content.Client/Jittering/JitteringSystem.cs b/Content.Client/Jittering/JitteringSystem.cs index 41f20634ab59c4..079fd60a46d260 100644 --- a/Content.Client/Jittering/JitteringSystem.cs +++ b/Content.Client/Jittering/JitteringSystem.cs @@ -25,20 +25,20 @@ public override void Initialize() private void OnStartup(EntityUid uid, JitteringComponent jittering, ComponentStartup args) { - if (!EntityManager.TryGetComponent(uid, out SpriteComponent? sprite)) + if (!TryComp(uid, out SpriteComponent? sprite)) return; - var animationPlayer = EntityManager.EnsureComponent(uid); + var animationPlayer = EnsureComp(uid); - _animationPlayer.Play(animationPlayer, GetAnimation(jittering, sprite), _jitterAnimationKey); + _animationPlayer.Play(uid, animationPlayer, GetAnimation(jittering, sprite), _jitterAnimationKey); } private void OnShutdown(EntityUid uid, JitteringComponent jittering, ComponentShutdown args) { - if (EntityManager.TryGetComponent(uid, out AnimationPlayerComponent? animationPlayer)) - _animationPlayer.Stop(animationPlayer, _jitterAnimationKey); + if (TryComp(uid, out AnimationPlayerComponent? animationPlayer)) + _animationPlayer.Stop(uid, animationPlayer, _jitterAnimationKey); - if (EntityManager.TryGetComponent(uid, out SpriteComponent? sprite)) + if (TryComp(uid, out SpriteComponent? sprite)) sprite.Offset = Vector2.Zero; } @@ -47,9 +47,9 @@ private void OnAnimationCompleted(EntityUid uid, JitteringComponent jittering, A if(args.Key != _jitterAnimationKey) return; - if (EntityManager.TryGetComponent(uid, out AnimationPlayerComponent? animationPlayer) - && EntityManager.TryGetComponent(uid, out SpriteComponent? sprite)) - _animationPlayer.Play(animationPlayer, GetAnimation(jittering, sprite), _jitterAnimationKey); + if (TryComp(uid, out AnimationPlayerComponent? animationPlayer) + && TryComp(uid, out SpriteComponent? sprite)) + _animationPlayer.Play(uid, animationPlayer, GetAnimation(jittering, sprite), _jitterAnimationKey); } private Animation GetAnimation(JitteringComponent jittering, SpriteComponent sprite) diff --git a/Content.Client/Light/Components/LightBehaviourComponent.cs b/Content.Client/Light/Components/LightBehaviourComponent.cs index b594411c352dab..282df5c8294b4a 100644 --- a/Content.Client/Light/Components/LightBehaviourComponent.cs +++ b/Content.Client/Light/Components/LightBehaviourComponent.cs @@ -431,20 +431,23 @@ private void CopyLightSettings(string property) /// public void StartLightBehaviour(string id = "") { - if (!_entMan.TryGetComponent(Owner, out AnimationPlayerComponent? animation)) + var uid = Owner; + if (!_entMan.TryGetComponent(uid, out AnimationPlayerComponent? animation)) { return; } + var animations = _entMan.System(); + foreach (var container in Animations) { if (container.LightBehaviour.ID == id || id == string.Empty) { - if (!animation.HasRunningAnimation(KeyPrefix + container.Key)) + if (!animations.HasRunningAnimation(uid, animation, KeyPrefix + container.Key)) { CopyLightSettings(container.LightBehaviour.Property); container.LightBehaviour.UpdatePlaybackValues(container.Animation); - animation.Play(container.Animation, KeyPrefix + container.Key); + animations.Play(uid, animation, container.Animation, KeyPrefix + container.Key); } } } @@ -460,20 +463,22 @@ public void StartLightBehaviour(string id = "") /// Should the light have its original settings applied? public void StopLightBehaviour(string id = "", bool removeBehaviour = false, bool resetToOriginalSettings = false) { - if (!_entMan.TryGetComponent(Owner, out AnimationPlayerComponent? animation)) + var uid = Owner; + if (!_entMan.TryGetComponent(uid, out AnimationPlayerComponent? animation)) { return; } var toRemove = new List(); + var animations = _entMan.System(); foreach (var container in Animations) { if (container.LightBehaviour.ID == id || id == string.Empty) { - if (animation.HasRunningAnimation(KeyPrefix + container.Key)) + if (animations.HasRunningAnimation(uid, animation, KeyPrefix + container.Key)) { - animation.Stop(KeyPrefix + container.Key); + animations.Stop(uid, animation, KeyPrefix + container.Key); } if (removeBehaviour) @@ -488,7 +493,7 @@ public void StopLightBehaviour(string id = "", bool removeBehaviour = false, boo Animations.Remove(container); } - if (resetToOriginalSettings && _entMan.TryGetComponent(Owner, out PointLightComponent? light)) + if (resetToOriginalSettings && _entMan.TryGetComponent(uid, out PointLightComponent? light)) { foreach (var (property, value) in _originalPropertyValues) { @@ -505,12 +510,14 @@ public void StopLightBehaviour(string id = "", bool removeBehaviour = false, boo /// Whether at least one behaviour is running, false if none is. public bool HasRunningBehaviours() { - if (!_entMan.TryGetComponent(Owner, out AnimationPlayerComponent? animation)) + var uid = Owner; + if (!_entMan.TryGetComponent(uid, out AnimationPlayerComponent? animation)) { return false; } - return Animations.Any(container => animation.HasRunningAnimation(KeyPrefix + container.Key)); + var animations = _entMan.System(); + return Animations.Any(container => animations.HasRunningAnimation(uid, animation, KeyPrefix + container.Key)); } /// diff --git a/Content.Client/Light/EntitySystems/RotatingLightSystem.cs b/Content.Client/Light/EntitySystems/RotatingLightSystem.cs index dc70fb6312744e..842c13dedfe933 100644 --- a/Content.Client/Light/EntitySystems/RotatingLightSystem.cs +++ b/Content.Client/Light/EntitySystems/RotatingLightSystem.cs @@ -3,14 +3,13 @@ using Robust.Client.Animations; using Robust.Client.GameObjects; using Robust.Shared.Animations; -using Robust.Shared.GameObjects; -using Robust.Shared.GameStates; -using Robust.Shared.Maths; -namespace Content.Client.Light.Systems; +namespace Content.Client.Light.EntitySystems; public sealed class RotatingLightSystem : SharedRotatingLightSystem { + [Dependency] private readonly AnimationPlayerSystem _animations = default!; + private Animation GetAnimation(float speed) { var third = 120f / speed; @@ -64,7 +63,7 @@ private void OnAfterAutoHandleState(EntityUid uid, RotatingLightComponent comp, } else { - player.Stop(AnimKey); + _animations.Stop(uid, player, AnimKey); } } @@ -81,9 +80,9 @@ public void PlayAnimation(EntityUid uid, RotatingLightComponent? comp = null, An if (!Resolve(uid, ref comp, ref player) || !comp.Enabled) return; - if (!player.HasRunningAnimation(AnimKey)) + if (!_animations.HasRunningAnimation(uid, player, AnimKey)) { - player.Play(GetAnimation(comp.Speed), AnimKey); + _animations.Play(uid, player, GetAnimation(comp.Speed), AnimKey); } } } diff --git a/Content.Client/Orbit/OrbitVisualsSystem.cs b/Content.Client/Orbit/OrbitVisualsSystem.cs index 74dcdc7d2f524e..1799e8ecc897a2 100644 --- a/Content.Client/Orbit/OrbitVisualsSystem.cs +++ b/Content.Client/Orbit/OrbitVisualsSystem.cs @@ -1,5 +1,4 @@ using System.Numerics; -using Content.Shared.Follower; using Content.Shared.Follower.Components; using Robust.Client.Animations; using Robust.Client.GameObjects; @@ -11,6 +10,7 @@ namespace Content.Client.Orbit; public sealed class OrbitVisualsSystem : EntitySystem { [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly AnimationPlayerSystem _animations = default!; private readonly string _orbitAnimationKey = "orbiting"; private readonly string _orbitStopKey = "orbiting_stop"; @@ -37,16 +37,16 @@ private void OnComponentInit(EntityUid uid, OrbitVisualsComponent component, Com sprite.DirectionOverride = Direction.South; } - var animationPlayer = EntityManager.EnsureComponent(uid); - if (animationPlayer.HasRunningAnimation(_orbitAnimationKey)) + var animationPlayer = EnsureComp(uid); + if (_animations.HasRunningAnimation(uid, animationPlayer, _orbitAnimationKey)) return; - if (animationPlayer.HasRunningAnimation(_orbitStopKey)) + if (_animations.HasRunningAnimation(uid, animationPlayer, _orbitStopKey)) { - animationPlayer.Stop(_orbitStopKey); + _animations.Stop(uid, animationPlayer, _orbitStopKey); } - animationPlayer.Play(GetOrbitAnimation(component), _orbitAnimationKey); + _animations.Play(uid, animationPlayer, GetOrbitAnimation(component), _orbitAnimationKey); } private void OnComponentRemove(EntityUid uid, OrbitVisualsComponent component, ComponentRemove args) @@ -56,15 +56,15 @@ private void OnComponentRemove(EntityUid uid, OrbitVisualsComponent component, C sprite.EnableDirectionOverride = false; - var animationPlayer = EntityManager.EnsureComponent(uid); - if (animationPlayer.HasRunningAnimation(_orbitAnimationKey)) + var animationPlayer = EnsureComp(uid); + if (_animations.HasRunningAnimation(uid, animationPlayer, _orbitAnimationKey)) { - animationPlayer.Stop(_orbitAnimationKey); + _animations.Stop(uid, animationPlayer, _orbitAnimationKey); } - if (!animationPlayer.HasRunningAnimation(_orbitStopKey)) + if (!_animations.HasRunningAnimation(uid, animationPlayer, _orbitStopKey)) { - animationPlayer.Play(GetStopAnimation(component, sprite), _orbitStopKey); + _animations.Play(uid, animationPlayer, GetStopAnimation(component, sprite), _orbitStopKey); } } @@ -84,10 +84,9 @@ public override void FrameUpdate(float frameTime) private void OnAnimationCompleted(EntityUid uid, OrbitVisualsComponent component, AnimationCompletedEvent args) { - if (args.Key == _orbitAnimationKey) + if (args.Key == _orbitAnimationKey && TryComp(uid, out AnimationPlayerComponent? animationPlayer)) { - if(EntityManager.TryGetComponent(uid, out AnimationPlayerComponent? animationPlayer)) - animationPlayer.Play(GetOrbitAnimation(component), _orbitAnimationKey); + _animations.Play(uid, animationPlayer, GetOrbitAnimation(component), _orbitAnimationKey); } } diff --git a/Content.Client/Storage/Systems/StorageSystem.cs b/Content.Client/Storage/Systems/StorageSystem.cs index 7391e11b3160b5..5b55c3c8d57ab6 100644 --- a/Content.Client/Storage/Systems/StorageSystem.cs +++ b/Content.Client/Storage/Systems/StorageSystem.cs @@ -11,6 +11,7 @@ namespace Content.Client.Storage.Systems; public sealed class StorageSystem : SharedStorageSystem { [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly EntityPickupAnimationSystem _entityPickupAnimation = default!; public event Action? StorageUpdated; @@ -57,7 +58,7 @@ public void PickupAnimation(EntityUid item, EntityCoordinates initialCoords, Ent var finalMapPos = finalCoords.ToMapPos(EntityManager, _transform); var finalPos = _transform.GetInvWorldMatrix(initialCoords.EntityId).Transform(finalMapPos); - ReusableAnimations.AnimateEntityPickup(item, initialCoords, finalPos, initialAngle); + _entityPickupAnimation.AnimateEntityPickup(item, initialCoords, finalPos, initialAngle); } /// @@ -75,7 +76,7 @@ public void HandleAnimatingInsertingEntities(AnimateInsertingEntitiesEvent msg) var initialPosition = msg.EntityPositions[i]; if (EntityManager.EntityExists(entity) && transformComp != null) { - ReusableAnimations.AnimateEntityPickup(entity, GetCoordinates(initialPosition), transformComp.LocalPosition, msg.EntityAngles[i], EntityManager); + _entityPickupAnimation.AnimateEntityPickup(entity, GetCoordinates(initialPosition), transformComp.LocalPosition, msg.EntityAngles[i]); } } } From ed15b93926f070736163d72b037003105baf27dc Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 14 Oct 2023 10:28:52 -0700 Subject: [PATCH 099/245] Make starting gear automatically find hands for inhand items (#20861) --- .../Commands/SetOutfitCommand.cs | 4 +- Content.Shared/Roles/StartingGearPrototype.cs | 40 ++++++++----------- .../Station/SharedStationSpawningSystem.cs | 8 +++- Resources/Prototypes/Roles/Antags/pirate.yml | 6 +-- .../Roles/Jobs/Cargo/cargo_technician.yml | 2 +- .../Roles/Jobs/Cargo/quartermaster.yml | 2 +- .../Roles/Jobs/Civilian/assistant.yml | 2 +- .../Roles/Jobs/Civilian/bartender.yml | 2 +- .../Roles/Jobs/Civilian/botanist.yml | 2 +- .../Roles/Jobs/Civilian/chaplain.yml | 2 +- .../Prototypes/Roles/Jobs/Civilian/chef.yml | 2 +- .../Roles/Jobs/Civilian/janitor.yml | 4 +- .../Prototypes/Roles/Jobs/Civilian/lawyer.yml | 4 +- .../Roles/Jobs/Civilian/librarian.yml | 2 +- .../Prototypes/Roles/Jobs/Civilian/mime.yml | 2 +- .../Roles/Jobs/Civilian/service_worker.yml | 2 +- .../Prototypes/Roles/Jobs/Command/captain.yml | 2 +- .../Roles/Jobs/Command/head_of_personnel.yml | 2 +- .../Engineering/atmospheric_technician.yml | 2 +- .../Roles/Jobs/Engineering/chief_engineer.yml | 2 +- .../Jobs/Engineering/senior_engineer.yml | 2 +- .../Jobs/Engineering/station_engineer.yml | 2 +- .../Jobs/Engineering/technical_assistant.yml | 2 +- .../Roles/Jobs/Fun/cult_startinggear.yml | 4 +- .../Roles/Jobs/Fun/misc_startinggear.yml | 40 +++++++++---------- .../Roles/Jobs/Fun/wizard_startinggear.yml | 8 ++-- .../Prototypes/Roles/Jobs/Medical/chemist.yml | 2 +- .../Jobs/Medical/chief_medical_officer.yml | 2 +- .../Roles/Jobs/Medical/medical_doctor.yml | 2 +- .../Roles/Jobs/Medical/medical_intern.yml | 2 +- .../Roles/Jobs/Medical/paramedic.yml | 2 +- .../Roles/Jobs/Medical/senior_physician.yml | 2 +- .../Roles/Jobs/Science/research_assistant.yml | 2 +- .../Roles/Jobs/Science/research_director.yml | 2 +- .../Roles/Jobs/Science/scientist.yml | 2 +- .../Roles/Jobs/Science/senior_researcher.yml | 2 +- .../Roles/Jobs/Security/detective.yml | 2 +- .../Roles/Jobs/Security/head_of_security.yml | 2 +- .../Roles/Jobs/Security/security_cadet.yml | 2 +- .../Roles/Jobs/Security/security_officer.yml | 2 +- .../Roles/Jobs/Security/senior_officer.yml | 2 +- .../Prototypes/Roles/Jobs/Security/warden.yml | 2 +- .../Roles/Jobs/Ship_VS_Ship/nanotrasen.yml | 10 ++--- .../Roles/Jobs/Ship_VS_Ship/syndicate.yml | 10 ++--- .../Prototypes/Roles/Jobs/Wildcards/boxer.yml | 2 +- .../Roles/Jobs/Wildcards/psychologist.yml | 2 +- .../Roles/Jobs/Wildcards/reporter.yml | 2 +- .../Roles/Jobs/Wildcards/zookeeper.yml | 2 +- 48 files changed, 105 insertions(+), 107 deletions(-) diff --git a/Content.Server/Administration/Commands/SetOutfitCommand.cs b/Content.Server/Administration/Commands/SetOutfitCommand.cs index 96fa46525316e8..28172ee6c5c858 100644 --- a/Content.Server/Administration/Commands/SetOutfitCommand.cs +++ b/Content.Server/Administration/Commands/SetOutfitCommand.cs @@ -121,10 +121,10 @@ public static bool SetOutfit(EntityUid target, string gear, IEntityManager entit { var handsSystem = entityManager.System(); var coords = entityManager.GetComponent(target).Coordinates; - foreach (var (hand, prototype) in startingGear.Inhand) + foreach (var prototype in startingGear.Inhand) { var inhandEntity = entityManager.SpawnEntity(prototype, coords); - handsSystem.TryPickup(target, inhandEntity, hand, checkActionBlocker: false, handsComp: handsComponent); + handsSystem.TryPickup(target, inhandEntity, checkActionBlocker: false, handsComp: handsComponent); } } diff --git a/Content.Shared/Roles/StartingGearPrototype.cs b/Content.Shared/Roles/StartingGearPrototype.cs index 533cfc0675f9cb..98e20fe53429b4 100644 --- a/Content.Shared/Roles/StartingGearPrototype.cs +++ b/Content.Shared/Roles/StartingGearPrototype.cs @@ -1,34 +1,28 @@ using Content.Shared.Preferences; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; namespace Content.Shared.Roles { [Prototype("startingGear")] public sealed class StartingGearPrototype : IPrototype { - [DataField("equipment", customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer))] - private Dictionary _equipment = new(); + [DataField] + public Dictionary Equipment = new(); /// /// if empty, there is no skirt override - instead the uniform provided in equipment is added. /// - [DataField("innerclothingskirt", customTypeSerializer:typeof(PrototypeIdSerializer))] - private string? _innerClothingSkirt; + [DataField] + public EntProtoId? InnerClothingSkirt; - [DataField("satchel", customTypeSerializer:typeof(PrototypeIdSerializer))] - private string? _satchel; + [DataField] + public EntProtoId? Satchel; - [DataField("duffelbag", customTypeSerializer:typeof(PrototypeIdSerializer))] - private string? _duffelbag; + [DataField] + public EntProtoId? Duffelbag; - public IReadOnlyDictionary Inhand => _inHand; - /// - /// hand index, item prototype - /// - [DataField("inhand")] - private Dictionary _inHand = new(0); + [DataField] + public List Inhand = new(0); [ViewVariables] [IdDataField] @@ -38,15 +32,15 @@ public string GetGear(string slot, HumanoidCharacterProfile? profile) { if (profile != null) { - if (slot == "jumpsuit" && profile.Clothing == ClothingPreference.Jumpskirt && !string.IsNullOrEmpty(_innerClothingSkirt)) - return _innerClothingSkirt; - if (slot == "back" && profile.Backpack == BackpackPreference.Satchel && !string.IsNullOrEmpty(_satchel)) - return _satchel; - if (slot == "back" && profile.Backpack == BackpackPreference.Duffelbag && !string.IsNullOrEmpty(_duffelbag)) - return _duffelbag; + if (slot == "jumpsuit" && profile.Clothing == ClothingPreference.Jumpskirt && !string.IsNullOrEmpty(InnerClothingSkirt)) + return InnerClothingSkirt; + if (slot == "back" && profile.Backpack == BackpackPreference.Satchel && !string.IsNullOrEmpty(Satchel)) + return Satchel; + if (slot == "back" && profile.Backpack == BackpackPreference.Duffelbag && !string.IsNullOrEmpty(Duffelbag)) + return Duffelbag; } - return _equipment.TryGetValue(slot, out var equipment) ? equipment : string.Empty; + return Equipment.TryGetValue(slot, out var equipment) ? equipment : string.Empty; } } } diff --git a/Content.Shared/Station/SharedStationSpawningSystem.cs b/Content.Shared/Station/SharedStationSpawningSystem.cs index cf575fb4f2f5ed..d392cf7bedab35 100644 --- a/Content.Shared/Station/SharedStationSpawningSystem.cs +++ b/Content.Shared/Station/SharedStationSpawningSystem.cs @@ -37,10 +37,14 @@ public void EquipStartingGear(EntityUid entity, StartingGearPrototype startingGe var inhand = startingGear.Inhand; var coords = EntityManager.GetComponent(entity).Coordinates; - foreach (var (hand, prototype) in inhand) + foreach (var prototype in inhand) { var inhandEntity = EntityManager.SpawnEntity(prototype, coords); - _handsSystem.TryPickup(entity, inhandEntity, hand, checkActionBlocker: false, handsComp: handsComponent); + + if (_handsSystem.TryGetEmptyHand(entity, out var emptyHand, handsComponent)) + { + _handsSystem.TryPickup(entity, inhandEntity, emptyHand, checkActionBlocker: false, handsComp: handsComponent); + } } } } diff --git a/Resources/Prototypes/Roles/Antags/pirate.yml b/Resources/Prototypes/Roles/Antags/pirate.yml index e325643d3ae2dd..59290acd047a30 100644 --- a/Resources/Prototypes/Roles/Antags/pirate.yml +++ b/Resources/Prototypes/Roles/Antags/pirate.yml @@ -8,7 +8,7 @@ id: PassengerPDA belt: ClothingBeltUtility pocket1: AppraisalTool - innerclothingskirt: ClothingUniformJumpsuitPirate + innerClothingSkirt: ClothingUniformJumpsuitPirate satchel: ClothingBackpackPirateFilled duffelbag: ClothingBackpackPirateFilled @@ -24,7 +24,7 @@ pocket1: AppraisalTool pocket2: EnergyCutlass outerClothing: ClothingOuterCoatPirate - innerclothingskirt: ClothingUniformJumpskirtColorLightBrown + innerClothingSkirt: ClothingUniformJumpskirtColorLightBrown satchel: ClothingBackpackPirateFilled duffelbag: ClothingBackpackPirateFilled @@ -39,6 +39,6 @@ belt: ClothingBeltUtility pocket1: AppraisalTool outerClothing: ClothingOuterCoatGentle - innerclothingskirt: ClothingUniformJumpsuitPirate + innerClothingSkirt: ClothingUniformJumpsuitPirate satchel: ClothingBackpackPirateFilled duffelbag: ClothingBackpackPirateFilled diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml b/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml index e199f168a2eacd..b9b02e134c5234 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml @@ -23,6 +23,6 @@ id: CargoPDA ears: ClothingHeadsetCargo pocket1: AppraisalTool - innerclothingskirt: ClothingUniformJumpskirtCargo + innerClothingSkirt: ClothingUniformJumpskirtCargo satchel: ClothingBackpackSatchelCargoFilled duffelbag: ClothingBackpackDuffelCargoFilled diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index d2dfafd32425a3..cb05847bebbfe2 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -45,6 +45,6 @@ ears: ClothingHeadsetQM belt: BoxFolderClipboard pocket1: AppraisalTool - innerclothingskirt: ClothingUniformJumpskirtQM + innerClothingSkirt: ClothingUniformJumpskirtQM satchel: ClothingBackpackSatchelQuartermasterFilled duffelbag: ClothingBackpackDuffelQuartermasterFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml b/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml index 0f7866f1a69f86..5cf4fd9449bb85 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml @@ -17,6 +17,6 @@ shoes: ClothingShoesColorBlack id: PassengerPDA ears: ClothingHeadsetGrey - innerclothingskirt: ClothingUniformJumpskirtColorGrey + innerClothingSkirt: ClothingUniformJumpskirtColorGrey satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml index 33d988749a74e2..5ef2008d1ad563 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml @@ -28,6 +28,6 @@ shoes: ClothingShoesColorBlack id: BartenderPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtBartender + innerClothingSkirt: ClothingUniformJumpskirtBartender satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml index 2647a93eec20ce..35b858fb388ac8 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml @@ -24,6 +24,6 @@ ears: ClothingHeadsetService outerClothing: ClothingOuterApronBotanist belt: ClothingBeltPlantFilled - innerclothingskirt: ClothingUniformJumpskirtHydroponics + innerClothingSkirt: ClothingUniformJumpskirtHydroponics satchel: ClothingBackpackSatchelHydroponicsFilled duffelbag: ClothingBackpackDuffelHydroponicsFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml index 300af57cd42db3..647a54c9e26ecf 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml @@ -22,6 +22,6 @@ shoes: ClothingShoesColorBlack id: ChaplainPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtChaplain + innerClothingSkirt: ClothingUniformJumpskirtChaplain satchel: ClothingBackpackSatchelChaplainFilled duffelbag: ClothingBackpackDuffelChaplainFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml index ff9a0ab477e69b..22532b071f8fd6 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml @@ -29,6 +29,6 @@ id: ChefPDA ears: ClothingHeadsetService outerClothing: ClothingOuterApronChef - innerclothingskirt: ClothingUniformJumpskirtChef + innerClothingSkirt: ClothingUniformJumpskirtChef satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml b/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml index c701ed67eee564..ed48ea2711f605 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml @@ -24,7 +24,7 @@ id: JanitorPDA ears: ClothingHeadsetService belt: ClothingBeltJanitorFilled - innerclothingskirt: ClothingUniformJumpskirtJanitor + innerClothingSkirt: ClothingUniformJumpskirtJanitor satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -37,6 +37,6 @@ head: ClothingHeadHatCatEars ears: ClothingHeadsetService belt: ClothingBeltJanitorFilled - innerclothingskirt: ClothingUniformJumpskirtJanimaid + innerClothingSkirt: ClothingUniformJumpskirtJanimaid satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml b/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml index 34a3ac74ac3817..2dd13d03a41bad 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml @@ -24,7 +24,7 @@ ears: ClothingHeadsetSecurity # TODO add copy of space law inhand: - right hand: BriefcaseBrownFilled - innerclothingskirt: ClothingUniformJumpskirtLawyerBlack + - BriefcaseBrownFilled + innerClothingSkirt: ClothingUniformJumpskirtLawyerBlack satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml index 68d075f89fc63c..02c26b2e9caa82 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml @@ -20,6 +20,6 @@ ears: ClothingHeadsetService pocket1: d10Dice pocket2: HandLabeler # for making named bestsellers - innerclothingskirt: ClothingUniformJumpskirtLibrarian + innerClothingSkirt: ClothingUniformJumpskirtLibrarian satchel: ClothingBackpackSatchelLibrarianFilled duffelbag: ClothingBackpackDuffelLibrarianFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml index 862a7c25a80432..76ae6a407afe0d 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml @@ -31,7 +31,7 @@ mask: ClothingMaskMime id: MimePDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtMime + innerClothingSkirt: ClothingUniformJumpskirtMime satchel: ClothingBackpackSatchelMimeFilled duffelbag: ClothingBackpackDuffelMimeFilled diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml index c4e1dd1dfb28d0..7b60f3f7f74035 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml @@ -23,6 +23,6 @@ shoes: ClothingShoesColorBlack id: ServiceWorkerPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtBartender + innerClothingSkirt: ClothingUniformJumpskirtBartender satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index 87c743463c096a..b72a7186973f81 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -44,6 +44,6 @@ outerClothing: ClothingOuterArmorCaptainCarapace id: CaptainPDA ears: ClothingHeadsetAltCommand - innerclothingskirt: ClothingUniformJumpskirtCaptain + innerClothingSkirt: ClothingUniformJumpskirtCaptain satchel: ClothingBackpackSatchelCaptainFilled duffelbag: ClothingBackpackDuffelCaptainFilled diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index 2a42d8e0c44e17..9444842c42809b 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -64,6 +64,6 @@ id: HoPPDA ears: ClothingHeadsetAltCommand belt: BoxFolderClipboard - innerclothingskirt: ClothingUniformJumpskirtHoP + innerClothingSkirt: ClothingUniformJumpskirtHoP satchel: ClothingBackpackSatchelHOPFilled duffelbag: ClothingBackpackDuffelHOPFilled diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml index 5c3f42693a4b1f..e09f48465c17af 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml @@ -26,6 +26,6 @@ id: AtmosPDA belt: ClothingBeltUtilityEngineering ears: ClothingHeadsetEngineering - innerclothingskirt: ClothingUniformJumpskirtAtmos + innerClothingSkirt: ClothingUniformJumpskirtAtmos satchel: ClothingBackpackSatchelAtmosphericsFilled duffelbag: ClothingBackpackDuffelAtmosphericsFilled diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index bddbd8f2cd453b..c539e142bb6677 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -46,6 +46,6 @@ eyes: ClothingEyesGlassesMeson ears: ClothingHeadsetCE belt: ClothingBeltUtilityEngineering - innerclothingskirt: ClothingUniformJumpskirtChiefEngineer + innerClothingSkirt: ClothingUniformJumpskirtChiefEngineer satchel: ClothingBackpackSatchelChiefEngineerFilled duffelbag: ClothingBackpackDuffelChiefEngineerFilled diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml index ba7eb3a9e839be..0b102894829985 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml @@ -33,6 +33,6 @@ eyes: ClothingEyesGlassesMeson belt: ClothingBeltUtilityEngineering ears: ClothingHeadsetEngineering - innerclothingskirt: ClothingUniformJumpskirtSeniorEngineer + innerClothingSkirt: ClothingUniformJumpskirtSeniorEngineer satchel: ClothingBackpackSatchelEngineeringFilled duffelbag: ClothingBackpackDuffelEngineeringFilled diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml index c77f79ccfcdf05..aa2adf09423fa7 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml @@ -29,6 +29,6 @@ eyes: ClothingEyesGlassesMeson belt: ClothingBeltUtilityEngineering ears: ClothingHeadsetEngineering - innerclothingskirt: ClothingUniformJumpskirtEngineering + innerClothingSkirt: ClothingUniformJumpskirtEngineering satchel: ClothingBackpackSatchelEngineeringFilled duffelbag: ClothingBackpackDuffelEngineeringFilled diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index 0127be9cca626a..4a8e91eb1739dd 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -27,6 +27,6 @@ id: TechnicalAssistantPDA belt: ClothingBeltUtilityEngineering ears: ClothingHeadsetEngineering - innerclothingskirt: ClothingUniformJumpskirtColorYellow + innerClothingSkirt: ClothingUniformJumpskirtColorYellow satchel: ClothingBackpackSatchelEngineeringFilled duffelbag: ClothingBackpackDuffelEngineeringFilled diff --git a/Resources/Prototypes/Roles/Jobs/Fun/cult_startinggear.yml b/Resources/Prototypes/Roles/Jobs/Fun/cult_startinggear.yml index e0b008b4fd27ec..6c97d377995f5d 100644 --- a/Resources/Prototypes/Roles/Jobs/Fun/cult_startinggear.yml +++ b/Resources/Prototypes/Roles/Jobs/Fun/cult_startinggear.yml @@ -10,7 +10,7 @@ shoes: ClothingShoesCult id: PassengerPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtColorBlack + innerClothingSkirt: ClothingUniformJumpskirtColorBlack satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -24,6 +24,6 @@ shoes: ClothingShoesColorRed id: PassengerPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtColorBlack + innerClothingSkirt: ClothingUniformJumpskirtColorBlack satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml b/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml index 146fa3ed96b95a..4a8ede58fe4391 100644 --- a/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml +++ b/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml @@ -15,7 +15,7 @@ ears: ClothingHeadsetGrey pocket1: VehicleSkeletonMotorcycle pocket2: VehicleKeySkeletonMotorcycle - innerclothingskirt: ClothingUniformJumpskirtColorBlack + innerClothingSkirt: ClothingUniformJumpskirtColorBlack satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -39,7 +39,7 @@ belt: EnergyKatana suitstorage: YellowOxygenTankFilled inhand: - left hand: JetpackBlackFilled + - JetpackBlackFilled #Deathsquad Outfit - type: startingGear @@ -57,7 +57,7 @@ id: DeathsquadPDA pocket1: EnergySword belt: ClothingBeltChiefEngineerFilled - innerclothingskirt: ClothingUniformJumpskirtColorBlack + innerClothingSkirt: ClothingUniformJumpskirtColorBlack satchel: ClothingBackpackDuffelSyndicateAmmo duffelbag: ClothingBackpackDuffelSyndicateAmmo @@ -68,7 +68,7 @@ head: ClothingHeadHatOutlawHat jumpsuit: ClothingUniformJumpsuitOperative mask: CigaretteSyndicate - innerclothingskirt: ClothingUniformJumpsuitOperative + innerClothingSkirt: ClothingUniformJumpsuitOperative # Syndicate Operative Outfit - Barratry - type: startingGear @@ -78,7 +78,7 @@ back: ClothingBackpackDuffelSyndicateOperative shoes: ClothingShoesBootsCombatFilled gloves: ClothingHandsGlovesColorBlack - innerclothingskirt: ClothingUniformJumpsuitOperative + innerClothingSkirt: ClothingUniformJumpsuitOperative satchel: ClothingBackpackDuffelSyndicateOperative duffelbag: ClothingBackpackDuffelSyndicateOperative @@ -93,7 +93,7 @@ shoes: ClothingShoesBootsCombatFilled pocket1: BaseUplinkRadio40TC id: AgentIDCard - innerclothingskirt: ClothingUniformJumpsuitOperative + innerClothingSkirt: ClothingUniformJumpsuitOperative satchel: ClothingBackpackDuffelSyndicateOperative duffelbag: ClothingBackpackDuffelSyndicateOperative @@ -114,7 +114,7 @@ pocket1: DoubleEmergencyOxygenTankFilled pocket2: BaseUplinkRadio40TC belt: ClothingBeltMilitaryWebbing - innerclothingskirt: ClothingUniformJumpskirtOperative + innerClothingSkirt: ClothingUniformJumpskirtOperative satchel: ClothingBackpackDuffelSyndicateOperative duffelbag: ClothingBackpackDuffelSyndicateOperative @@ -136,8 +136,8 @@ pocket2: BaseUplinkRadio40TC belt: ClothingBeltMilitaryWebbing inhand: - right hand: NukeOpsDeclarationOfWar - innerclothingskirt: ClothingUniformJumpskirtOperative + - NukeOpsDeclarationOfWar + innerClothingSkirt: ClothingUniformJumpskirtOperative satchel: ClothingBackpackDuffelSyndicateOperative duffelbag: ClothingBackpackDuffelSyndicateOperative @@ -157,7 +157,7 @@ pocket1: DoubleEmergencyOxygenTankFilled pocket2: BaseUplinkRadio40TC belt: ClothingBeltMilitaryWebbingMedFilled - innerclothingskirt: ClothingUniformJumpskirtOperative + innerClothingSkirt: ClothingUniformJumpskirtOperative satchel: ClothingBackpackDuffelSyndicateOperativeMedic duffelbag: ClothingBackpackDuffelSyndicateOperativeMedic @@ -174,7 +174,7 @@ back: ClothingBackpackFilled shoes: ClothingShoesBootsCombat id: SyndiPDA #a subtype of this for footsoldiers would probably be good to have - innerclothingskirt: ClothingUniformJumpsuitOperative + innerClothingSkirt: ClothingUniformJumpsuitOperative satchel: ClothingBackpackDuffelSyndicateOperative duffelbag: ClothingBackpackDuffelSyndicateOperative @@ -192,7 +192,7 @@ shoes: ClothingShoesBootsCombat pocket1: CombatKnife id: SyndiPDA - innerclothingskirt: ClothingUniformJumpsuitOperative + innerClothingSkirt: ClothingUniformJumpsuitOperative satchel: ClothingBackpackDuffelSyndicateOperative duffelbag: ClothingBackpackDuffelSyndicateOperative @@ -211,7 +211,7 @@ pocket1: EnergySword pocket2: EnergyShield id: SyndiPDA - innerclothingskirt: ClothingUniformJumpsuitOperative + innerClothingSkirt: ClothingUniformJumpsuitOperative satchel: ClothingBackpackDuffelSyndicateOperative duffelbag: ClothingBackpackDuffelSyndicateOperative @@ -229,7 +229,7 @@ shoes: ClothingShoesBootsCombat pocket1: WeaponPistolViper id: SyndiPDA - innerclothingskirt: ClothingUniformJumpsuitOperative + innerClothingSkirt: ClothingUniformJumpsuitOperative satchel: ClothingBackpackDuffelSyndicateOperative duffelbag: ClothingBackpackDuffelSyndicateOperative @@ -246,7 +246,7 @@ outerClothing: ClothingOuterArmorBasicSlim ears: ClothingHeadsetSecurity gloves: ClothingHandsGlovesCombat - innerclothingskirt: ClothingUniformJumpskirtSec + innerClothingSkirt: ClothingUniformJumpskirtSec satchel: ClothingBackpackSatchelSecurityFilled duffelbag: ClothingBackpackDuffelSecurityFilled @@ -267,7 +267,7 @@ pocket2: WeaponLaserGun suitstorage: YellowOxygenTankFilled belt: ClothingBeltBandolier - innerclothingskirt: ClothingUniformJumpsuitColorBrown + innerClothingSkirt: ClothingUniformJumpsuitColorBrown satchel: ClothingBackpackDuffelCBURN duffelbag: ClothingBackpackDuffelCBURN @@ -291,7 +291,7 @@ equipment: jumpsuit: ClothingUniformJumpsuitColorGrey shoes: ClothingShoesColorBlack - innerclothingskirt: ClothingUniformJumpskirtColorGrey + innerClothingSkirt: ClothingUniformJumpskirtColorGrey # DeathMatch Gear @@ -302,9 +302,9 @@ shoes: ClothingShoesBootsJack ears: ClothingHeadsetGrey gloves: ClothingHandsGlovesFingerless - innerclothingskirt: ClothingUniformJumpskirtColorWhite + innerClothingSkirt: ClothingUniformJumpskirtColorWhite inhand: - left hand: WeaponMeleeToolboxRobust + - WeaponMeleeToolboxRobust #Brigmedic @@ -322,7 +322,7 @@ ears: ClothingHeadsetBrigmedic mask: ClothingMaskBreathMedicalSecurity belt: ClothingBeltMedicalFilled - innerclothingskirt: ClothingUniformJumpskirtBrigmedic + innerClothingSkirt: ClothingUniformJumpskirtBrigmedic satchel: ClothingBackpackSatchelBrigmedicFilled duffelbag: ClothingBackpackDuffelBrigmedicFilled diff --git a/Resources/Prototypes/Roles/Jobs/Fun/wizard_startinggear.yml b/Resources/Prototypes/Roles/Jobs/Fun/wizard_startinggear.yml index a72ea59547920c..9f32796073a4ca 100644 --- a/Resources/Prototypes/Roles/Jobs/Fun/wizard_startinggear.yml +++ b/Resources/Prototypes/Roles/Jobs/Fun/wizard_startinggear.yml @@ -9,7 +9,7 @@ shoes: ClothingShoesWizard id: PassengerPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtColorDarkBlue + innerClothingSkirt: ClothingUniformJumpskirtColorDarkBlue satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -23,7 +23,7 @@ shoes: ClothingShoesWizard id: PassengerPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtColorRed + innerClothingSkirt: ClothingUniformJumpskirtColorRed satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -37,7 +37,7 @@ shoes: ClothingShoesWizard id: PassengerPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtColorPurple + innerClothingSkirt: ClothingUniformJumpskirtColorPurple satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -50,6 +50,6 @@ shoes: ClothingShoesWizard id: PassengerPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpskirtColorPurple + innerClothingSkirt: ClothingUniformJumpskirtColorPurple satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml index a8bd80cf6e38ee..bfa34d30a6448d 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml @@ -27,6 +27,6 @@ belt: ChemBag pocket1: HandLabeler # the purple glasses? - innerclothingskirt: ClothingUniformJumpskirtChemistry + innerClothingSkirt: ClothingUniformJumpskirtChemistry satchel: ClothingBackpackSatchelChemistryFilled duffelbag: ClothingBackpackDuffelChemistryFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index 785f7ad6263388..809d7cd24e6d33 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -46,6 +46,6 @@ id: CMOPDA ears: ClothingHeadsetCMO belt: ClothingBeltMedicalFilled - innerclothingskirt: ClothingUniformJumpskirtCMO + innerClothingSkirt: ClothingUniformJumpskirtCMO satchel: ClothingBackpackSatchelCMOFilled duffelbag: ClothingBackpackDuffelCMOFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml index b10c4a182d67f8..0c70272ccd49b2 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml @@ -26,6 +26,6 @@ id: MedicalPDA ears: ClothingHeadsetMedical belt: ClothingBeltMedicalFilled - innerclothingskirt: ClothingUniformJumpskirtMedicalDoctor + innerClothingSkirt: ClothingUniformJumpskirtMedicalDoctor satchel: ClothingBackpackSatchelMedicalFilled duffelbag: ClothingBackpackDuffelMedicalFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index 1b4ef7523c8c5c..c6ff734587c16b 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -25,6 +25,6 @@ id: MedicalInternPDA ears: ClothingHeadsetMedical belt: ClothingBeltMedicalFilled - innerclothingskirt: ClothingUniformJumpskirtColorWhite + innerClothingSkirt: ClothingUniformJumpskirtColorWhite satchel: ClothingBackpackSatchelMedicalFilled duffelbag: ClothingBackpackDuffelMedicalFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml index d453d4ff2e845d..b18055a9bb1796 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml @@ -28,6 +28,6 @@ id: ParamedicPDA ears: ClothingHeadsetMedical belt: ClothingBeltParamedicFilled - innerclothingskirt: ClothingUniformJumpskirtParamedic + innerClothingSkirt: ClothingUniformJumpskirtParamedic satchel: ClothingBackpackSatchelMedicalFilled duffelbag: ClothingBackpackDuffelMedicalFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml index ac49923eafbb2e..e0defc952d7c40 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml @@ -31,6 +31,6 @@ id: SeniorPhysicianPDA ears: ClothingHeadsetMedical belt: ClothingBeltMedicalFilled - innerclothingskirt: ClothingUniformJumpskirtSeniorPhysician + innerClothingSkirt: ClothingUniformJumpskirtSeniorPhysician satchel: ClothingBackpackSatchelMedicalFilled duffelbag: ClothingBackpackDuffelMedicalFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml index 03ef192be0b58f..379cfb8780b891 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml @@ -24,6 +24,6 @@ shoes: ClothingShoesColorWhite id: ResearchAssistantPDA ears: ClothingHeadsetScience - innerclothingskirt: ClothingUniformJumpskirtColorWhite + innerClothingSkirt: ClothingUniformJumpskirtColorWhite satchel: ClothingBackpackSatchelScienceFilled duffelbag: ClothingBackpackDuffelScienceFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 964bffb3a2da55..6060ed4d1a3baa 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -36,6 +36,6 @@ outerClothing: ClothingOuterCoatRnd id: RnDPDA ears: ClothingHeadsetRD - innerclothingskirt: ClothingUniformJumpskirtResearchDirector + innerClothingSkirt: ClothingUniformJumpskirtResearchDirector satchel: ClothingBackpackSatchelResearchDirectorFilled duffelbag: ClothingBackpackDuffelResearchDirectorFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml index 676514b121f5fc..bda5e84d22e579 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml @@ -23,6 +23,6 @@ outerClothing: ClothingOuterCoatRnd id: SciencePDA ears: ClothingHeadsetScience - innerclothingskirt: ClothingUniformJumpskirtScientist + innerClothingSkirt: ClothingUniformJumpskirtScientist satchel: ClothingBackpackSatchelScienceFilled duffelbag: ClothingBackpackDuffelScienceFilled diff --git a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml index 13375e271b73d2..036243e49b7e9b 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml @@ -24,6 +24,6 @@ outerClothing: ClothingOuterCoatLabSeniorResearcher id: SeniorResearcherPDA ears: ClothingHeadsetScience - innerclothingskirt: ClothingUniformJumpskirtSeniorResearcher + innerClothingSkirt: ClothingUniformJumpskirtSeniorResearcher satchel: ClothingBackpackSatchelScienceFilled duffelbag: ClothingBackpackDuffelScienceFilled diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml index feef05dc878f82..e8d6299f48b817 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml @@ -33,6 +33,6 @@ id: DetectivePDA ears: ClothingHeadsetSecurity belt: ClothingBeltHolsterFilled - innerclothingskirt: ClothingUniformJumpskirtDetective + innerClothingSkirt: ClothingUniformJumpskirtDetective satchel: ClothingBackpackSatchelSecurityFilledDetective duffelbag: ClothingBackpackDuffelSecurityFilledDetective diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index 58a96d1a5b5ced..7319fc44c7cc1a 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -52,6 +52,6 @@ ears: ClothingHeadsetAltSecurity belt: ClothingBeltSecurityFilled pocket1: WeaponPistolMk58Nonlethal - innerclothingskirt: ClothingUniformJumpskirtHoS + innerClothingSkirt: ClothingUniformJumpskirtHoS satchel: ClothingBackpackSatchelHOSFilled duffelbag: ClothingBackpackDuffelHOSFilled diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml index 30ab14486022d4..a4a5889ca1e33a 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml @@ -32,6 +32,6 @@ id: SecurityCadetPDA ears: ClothingHeadsetSecurity pocket1: WeaponPistolMk58Nonlethal - innerclothingskirt: ClothingUniformJumpskirtColorRed + innerClothingSkirt: ClothingUniformJumpskirtColorRed satchel: ClothingBackpackSatchelSecurityFilled duffelbag: ClothingBackpackDuffelSecurityFilled diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml index 01cf5b44b95cde..43d7db0472ea5c 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml @@ -34,6 +34,6 @@ ears: ClothingHeadsetSecurity belt: ClothingBeltSecurityFilled pocket1: WeaponPistolMk58Nonlethal - innerclothingskirt: ClothingUniformJumpskirtSec + innerClothingSkirt: ClothingUniformJumpskirtSec satchel: ClothingBackpackSatchelSecurityFilled duffelbag: ClothingBackpackDuffelSecurityFilled diff --git a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml index 46abc8664e86ac..d430853ad981b5 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml @@ -43,6 +43,6 @@ ears: ClothingHeadsetSecurity belt: ClothingBeltSecurityFilled pocket1: WeaponPistolMk58Nonlethal - innerclothingskirt: ClothingUniformJumpskirtSeniorOfficer + innerClothingSkirt: ClothingUniformJumpskirtSeniorOfficer satchel: ClothingBackpackSatchelSecurityFilled duffelbag: ClothingBackpackDuffelSecurityFilled diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index 46142d1550c6ab..d368f342139974 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -36,6 +36,6 @@ ears: ClothingHeadsetSecurity belt: ClothingBeltSecurityFilled pocket1: WeaponPistolMk58Nonlethal - innerclothingskirt: ClothingUniformJumpskirtWarden + innerClothingSkirt: ClothingUniformJumpskirtWarden satchel: ClothingBackpackSatchelSecurityFilled duffelbag: ClothingBackpackDuffelSecurityFilled diff --git a/Resources/Prototypes/Roles/Jobs/Ship_VS_Ship/nanotrasen.yml b/Resources/Prototypes/Roles/Jobs/Ship_VS_Ship/nanotrasen.yml index 637abd43c3dbf8..765c9a745e8bf4 100644 --- a/Resources/Prototypes/Roles/Jobs/Ship_VS_Ship/nanotrasen.yml +++ b/Resources/Prototypes/Roles/Jobs/Ship_VS_Ship/nanotrasen.yml @@ -13,7 +13,7 @@ gloves: ClothingHandsGlovesColorBlack id: PassengerPDA ears: ClothingHeadsetGrey - innerclothingskirt: ClothingUniformJumpsuitRecruitNT #Wearing a jumpskirt into combat is a little unfitting and silly, so there is no jumpskirt counterpart for any of the Ship VS. Ship suits. + innerClothingSkirt: ClothingUniformJumpsuitRecruitNT #Wearing a jumpskirt into combat is a little unfitting and silly, so there is no jumpskirt counterpart for any of the Ship VS. Ship suits. satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -30,7 +30,7 @@ eyes: ClothingEyesGlassesMeson belt: ClothingBeltUtilityEngineering ears: ClothingHeadsetAltCommand #Should use the "alt" engineering headset sprite. - innerclothingskirt: ClothingUniformJumpsuitRepairmanNT + innerClothingSkirt: ClothingUniformJumpsuitRepairmanNT satchel: ClothingBackpackSatchelEngineeringFilled duffelbag: ClothingBackpackDuffelEngineeringFilled @@ -46,7 +46,7 @@ eyes: ClothingEyesHudMedical gloves: ClothingHandsGlovesLatex belt: ClothingBeltMedicalFilled - innerclothingskirt: ClothingUniformJumpskirtMedicalDoctor + innerClothingSkirt: ClothingUniformJumpskirtMedicalDoctor satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -58,12 +58,12 @@ head: ClothingHeadHatHardhatArmored jumpsuit: ClothingUniformJumpsuitChiefEngineerNT back: ClothingBackpackFilled #Again, the regular sprite here looks way worse than the regular backpack. - shoes: ClothingShoesBootsJack + shoes: ClothingShoesBootsJack gloves: ClothingHandsGlovesCombat id: CEPDA eyes: ClothingEyesGlassesMeson ears: ClothingHeadsetAltCommand #Same as repairman - make this use the alt headset sprite. belt: ClothingBeltUtilityEngineering - innerclothingskirt: ClothingUniformJumpsuitChiefEngineerNT + innerClothingSkirt: ClothingUniformJumpsuitChiefEngineerNT satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Ship_VS_Ship/syndicate.yml b/Resources/Prototypes/Roles/Jobs/Ship_VS_Ship/syndicate.yml index 353b69730e5869..b7a4daf8f213ca 100644 --- a/Resources/Prototypes/Roles/Jobs/Ship_VS_Ship/syndicate.yml +++ b/Resources/Prototypes/Roles/Jobs/Ship_VS_Ship/syndicate.yml @@ -12,7 +12,7 @@ gloves: ClothingHandsGlovesColorBlack id: PassengerPDA ears: ClothingHeadsetGrey - innerclothingskirt: ClothingUniformJumpsuitRecruitSyndie #Wearing a jumpskirt into combat is a little unfitting and silly, so there is no jumpskirt counterpart for any of the Ship VS. Ship suits. + innerClothingSkirt: ClothingUniformJumpsuitRecruitSyndie #Wearing a jumpskirt into combat is a little unfitting and silly, so there is no jumpskirt counterpart for any of the Ship VS. Ship suits. satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -29,7 +29,7 @@ eyes: ClothingEyesGlassesMeson belt: ClothingBeltUtilityEngineering ears: ClothingHeadsetAltCommand #Should use the "alt" engineering headset sprite. - innerclothingskirt: ClothingUniformJumpsuitRepairmanSyndie + innerClothingSkirt: ClothingUniformJumpsuitRepairmanSyndie satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -45,7 +45,7 @@ eyes: ClothingEyesHudMedical gloves: ClothingHandsGlovesLatex belt: ClothingBeltMedicalFilled - innerclothingskirt: ClothingUniformJumpsuitParamedicSyndie + innerClothingSkirt: ClothingUniformJumpsuitParamedicSyndie satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled @@ -57,12 +57,12 @@ head: ClothingHeadHatHardhatArmored jumpsuit: ClothingUniformJumpsuitChiefEngineerSyndie back: ClothingBackpackFilled #In a running theme, the default station job backpack still continues to look strange in comparison to the regular one. It's not as bad as on the syndicate engineer here, though. - shoes: ClothingShoesBootsJack + shoes: ClothingShoesBootsJack gloves: ClothingHandsGlovesCombat id: CEPDA eyes: ClothingEyesGlassesMeson ears: ClothingHeadsetAltCommand belt: ClothingBeltUtilityEngineering - innerclothingskirt: ClothingUniformJumpsuitChiefEngineerSyndie + innerClothingSkirt: ClothingUniformJumpsuitChiefEngineerSyndie satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml index 1be182f1f720e4..d9fe88fc1422f4 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml @@ -20,6 +20,6 @@ gloves: ClothingHandsGlovesBoxingRed shoes: ClothingShoesColorRed belt: ClothingBeltChampion - innerclothingskirt: UniformShortsRedWithTop + innerClothingSkirt: UniformShortsRedWithTop satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml index f405d2ca9d542b..8861924cf6c6f4 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml @@ -20,6 +20,6 @@ shoes: ClothingShoesLeather id: PsychologistPDA ears: ClothingHeadsetMedical - innerclothingskirt: ClothingUniformJumpsuitPsychologist + innerClothingSkirt: ClothingUniformJumpsuitPsychologist satchel: ClothingBackpackSatchelMedicalFilled duffelbag: ClothingBackpackDuffelMedicalFilled diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml index 22d9cb91afd33f..60721273476cfd 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml @@ -18,6 +18,6 @@ shoes: ClothingShoesColorWhite id: ReporterPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpsuitJournalist + innerClothingSkirt: ClothingUniformJumpsuitJournalist satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml index 73b804db7a4e5c..bd8f5b85b6c893 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml @@ -19,6 +19,6 @@ shoes: ClothingShoesColorWhite id: ZookeeperPDA ears: ClothingHeadsetService - innerclothingskirt: ClothingUniformJumpsuitSafari + innerClothingSkirt: ClothingUniformJumpsuitSafari satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled From 5767a59d1af8a5edb3394c04f3bd1641f79d7ffb Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 14 Oct 2023 13:30:01 -0400 Subject: [PATCH 100/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f6513b06f6765e..aa4647f90738ea 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: emogarbage - changes: - - {message: Re-sprited grappling gun per artist request., type: Tweak} - id: 4504 - time: '2023-08-10T06:16:57.0000000+00:00' - author: CrigCrag changes: - {message: 'Advanced laser guns are now 30 size, like the antique laser gun.', @@ -2950,3 +2945,9 @@ Entries: and robotics vendor or produced by science.', type: Add} id: 5003 time: '2023-10-14T07:11:50.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: 'Fixed librarians, lawyers, ninjas and nukeops having their starting + in-hand items dropped on the floor.', type: Fix} + id: 5004 + time: '2023-10-14T17:28:52.0000000+00:00' From eba6e74f810201c499cb1fb4770b46d2a4780f7f Mon Sep 17 00:00:00 2001 From: liltenhead <104418166+liltenhead@users.noreply.github.com> Date: Sat, 14 Oct 2023 10:34:58 -0700 Subject: [PATCH 101/245] helm explosion resist nerf (#20943) --- Resources/Prototypes/Entities/Clothing/Head/helmets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml index c7622e60be620a..53d24b092ab013 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml @@ -103,7 +103,7 @@ sprite: Clothing/Head/Helmets/bombsuit.rsi - type: IngestionBlocker - type: ExplosionResistance - damageCoefficient: 0.5 + damageCoefficient: 0.9 - type: Armor modifiers: coefficients: From 8555a8e723f812ef34d29957ba1f3caa64b1d721 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 14 Oct 2023 13:36:25 -0400 Subject: [PATCH 102/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index aa4647f90738ea..02e19b66cca114 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: CrigCrag - changes: - - {message: 'Advanced laser guns are now 30 size, like the antique laser gun.', - type: Tweak} - - {message: Advanced laser guns recharge 25% slower than before., type: Tweak} - id: 4505 - time: '2023-08-10T07:27:02.0000000+00:00' - author: chromiumboy changes: - {message: Obstacles to deter hackers can now be added to airlocks., type: Add} @@ -2951,3 +2944,8 @@ Entries: in-hand items dropped on the floor.', type: Fix} id: 5004 time: '2023-10-14T17:28:52.0000000+00:00' +- author: liltenhead + changes: + - {message: Reduced the bombsuit helmet's explosive resistance., type: Tweak} + id: 5005 + time: '2023-10-14T17:34:58.0000000+00:00' From aac17c33210b15d144551cb677ed0bee94b55afd Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 15 Oct 2023 05:02:36 +1100 Subject: [PATCH 103/245] Cleanup more follower leaks (#20902) * Cleanup more follower leaks Rather than check stop everywhere we'll just check it on start and cleanup the old following. If someone were already following and followed something new the FollowedComponent would never get cleaned up and would never have its ref to the entity removed. * Don't cause archetype changes --- Content.Shared/Follower/FollowerSystem.cs | 27 ++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/Content.Shared/Follower/FollowerSystem.cs b/Content.Shared/Follower/FollowerSystem.cs index 38c0e5ada3f52b..e4a0488dfb5b6f 100644 --- a/Content.Shared/Follower/FollowerSystem.cs +++ b/Content.Shared/Follower/FollowerSystem.cs @@ -138,7 +138,20 @@ public void StartFollowingEntity(EntityUid follower, EntityUid entity) targetXform = Transform(targetXform.ParentUid); } - var followerComp = EnsureComp(follower); + // Cleanup old following. + if (TryComp(follower, out var followerComp)) + { + // Already following you goob + if (followerComp.Following == entity) + return; + + StopFollowingEntity(follower, followerComp.Following, deparent: false, removeComp: false); + } + else + { + followerComp = AddComp(follower); + } + followerComp.Following = entity; var followedComp = EnsureComp(entity); @@ -167,14 +180,14 @@ public void StartFollowingEntity(EntityUid follower, EntityUid entity) RaiseLocalEvent(follower, followerEv); RaiseLocalEvent(entity, entityEv); - Dirty(followedComp); + Dirty(entity, followedComp); } /// /// Forces an entity to stop following another entity, if it is doing so. /// /// Should the entity deparent itself - public void StopFollowingEntity(EntityUid uid, EntityUid target, FollowedComponent? followed = null, bool deparent = true) + public void StopFollowingEntity(EntityUid uid, EntityUid target, FollowedComponent? followed = null, bool deparent = true, bool removeComp = true) { if (!Resolve(target, ref followed, false)) return; @@ -186,8 +199,12 @@ public void StopFollowingEntity(EntityUid uid, EntityUid target, FollowedCompone if (followed.Following.Count == 0) RemComp(target); - RemComp(uid); - RemComp(uid); + if (removeComp) + { + RemComp(uid); + RemComp(uid); + } + var uidEv = new StoppedFollowingEntityEvent(target, uid); var targetEv = new EntityStoppedFollowingEvent(target, uid); From 38387ef9a648ad10c11b74b5a6c99173c4ef0fad Mon Sep 17 00:00:00 2001 From: JustCone <141039037+JustCone14@users.noreply.github.com> Date: Sat, 14 Oct 2023 22:43:42 +0100 Subject: [PATCH 104/245] atmos buttons and new jani sign (#20969) --- Resources/Maps/cluster.yml | 50 ++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/Resources/Maps/cluster.yml b/Resources/Maps/cluster.yml index 0e25239c362871..91430bb8f4655c 100644 --- a/Resources/Maps/cluster.yml +++ b/Resources/Maps/cluster.yml @@ -7908,6 +7908,11 @@ entities: - pos: 35.5,-24.5 parent: 1 type: Transform + - invokeCounter: 1 + links: + - 6068 + - 1357 + type: DeviceLinkSink - uid: 7432 components: - pos: 10.5,-28.5 @@ -51376,11 +51381,6 @@ entities: - pos: 36.5,-19.5 parent: 1 type: Transform - - uid: 1357 - components: - - pos: 37.5,-19.5 - parent: 1 - type: Transform - uid: 1358 components: - pos: 38.5,-19.5 @@ -63313,11 +63313,6 @@ entities: - pos: 38.5,-19.5 parent: 1 type: Transform - - uid: 1344 - components: - - pos: 37.5,-19.5 - parent: 1 - type: Transform - uid: 1345 components: - pos: 36.5,-19.5 @@ -65401,6 +65396,28 @@ entities: 11731: - Pressed: Toggle type: DeviceLinkSource +- proto: SignalButtonDirectional + entities: + - uid: 1357 + components: + - rot: 3.141592653589793 rad + pos: 37.5,-19.5 + parent: 1 + type: Transform + - linkedPorts: + 3795: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 6068 + components: + - rot: 3.141592653589793 rad + pos: 34.5,-24.5 + parent: 1 + type: Transform + - linkedPorts: + 3795: + - Pressed: Toggle + type: DeviceLinkSource - proto: SignAnomaly entities: - uid: 6077 @@ -65848,6 +65865,14 @@ entities: pos: 18.5,20.5 parent: 1 type: Transform +- proto: SignJanitor + entities: + - uid: 7181 + components: + - rot: 3.141592653589793 rad + pos: 16.5,0.5 + parent: 1 + type: Transform - proto: SignMedical entities: - uid: 5301 @@ -73531,6 +73556,11 @@ entities: - pos: 30.5,-19.5 parent: 1 type: Transform + - uid: 1344 + components: + - pos: 37.5,-19.5 + parent: 1 + type: Transform - uid: 1353 components: - pos: 33.5,-19.5 From d2ad01741c105de9392a92aac6d07eb1b670f09e Mon Sep 17 00:00:00 2001 From: JoeHammad1844 <130668733+JoeHammad1844@users.noreply.github.com> Date: Sun, 15 Oct 2023 08:50:44 +1100 Subject: [PATCH 105/245] meta update (#20916) --- Resources/Maps/meta.yml | 164 +++++++++++++++++++++++++++++++--------- 1 file changed, 129 insertions(+), 35 deletions(-) diff --git a/Resources/Maps/meta.yml b/Resources/Maps/meta.yml index 8fe9832d108516..cc3d925beb4e55 100644 --- a/Resources/Maps/meta.yml +++ b/Resources/Maps/meta.yml @@ -7032,7 +7032,8 @@ entities: -4,-12: 0: 65535 -3,-12: - 0: 65535 + 0: 65519 + 8: 16 -2,-12: 0: 65535 -1,-12: @@ -8050,6 +8051,21 @@ entities: - 0 - 0 - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 24.665516 + - 92.78932 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 chunkSize: 4 type: GridAtmosphere - id: Meta @@ -59656,6 +59672,11 @@ entities: type: Transform - proto: ClothingBackpackDuffelSurgeryFilled entities: + - uid: 9248 + components: + - pos: 6.8728313,-42.317707 + parent: 5350 + type: Transform - uid: 15816 components: - pos: -23.496162,-49.315388 @@ -59715,6 +59736,11 @@ entities: - pos: -35.5,-38.5 parent: 5350 type: Transform + - uid: 22286 + components: + - pos: 8.500981,-39.348957 + parent: 5350 + type: Transform - proto: ClothingBeltUtilityFilled entities: - uid: 3579 @@ -59997,6 +60023,11 @@ entities: - pos: -16.580141,-51.42727 parent: 5350 type: Transform + - uid: 19447 + components: + - pos: 8.404081,-42.442707 + parent: 5350 + type: Transform - proto: ClothingHandsGlovesLeather entities: - uid: 3133 @@ -60065,6 +60096,13 @@ entities: - pos: 45.50863,41.570244 parent: 5350 type: Transform +- proto: ClothingHeadHatBeretBrigmedic + entities: + - uid: 23959 + components: + - pos: -26.498873,-33.888706 + parent: 5350 + type: Transform - proto: ClothingHeadHatBunny entities: - uid: 12101 @@ -62906,6 +62944,13 @@ entities: - EntityStorageComponent - entity_storage type: Construction +- proto: CrateMindShieldImplants + entities: + - uid: 22284 + components: + - pos: -6.5,40.5 + parent: 5350 + type: Transform - proto: CrateNPCHamlet entities: - uid: 5346 @@ -69708,6 +69753,20 @@ entities: - pos: -48.518745,1.6357079 parent: 5350 type: Transform +- proto: DrinkMugMoebius + entities: + - uid: 24122 + components: + - pos: 16.475971,-35.413982 + parent: 5350 + type: Transform +- proto: DrinkMugOne + entities: + - uid: 24119 + components: + - pos: 23.373695,-35.101482 + parent: 5350 + type: Transform - proto: DrinkShaker entities: - uid: 1106 @@ -114515,13 +114574,6 @@ entities: - pos: 29.518621,-60.391666 parent: 5350 type: Transform -- proto: Hemostat - entities: - - uid: 22265 - components: - - pos: 7.4486217,-42.45404 - parent: 5350 - type: Transform - proto: HighSecCommandLocked entities: - uid: 1668 @@ -116530,6 +116582,14 @@ entities: - 0 - 0 type: EntityStorage + - uid: 22285 + components: + - desc: Not for casual browsing. + name: contraband locker + type: MetaData + - pos: -2.5,40.5 + parent: 5350 + type: Transform - proto: LockerFreezer entities: - uid: 1932 @@ -117999,6 +118059,13 @@ entities: - pos: -40.5,-5.5 parent: 5350 type: Transform +- proto: MMI + entities: + - uid: 22265 + components: + - pos: 7.5759563,-42.348957 + parent: 5350 + type: Transform - proto: ModularGrenade entities: - uid: 22321 @@ -118263,8 +118330,6 @@ entities: immutable: False temperature: 293.14938 moles: - - 2.8406363 - - 10.686202 - 0 - 0 - 0 @@ -118275,6 +118340,9 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + open: True type: EntityStorage - uid: 15014 components: @@ -131274,13 +131342,6 @@ entities: pos: -43.5,26.5 parent: 5350 type: Transform -- proto: Saw - entities: - - uid: 22266 - components: - - pos: 8.432997,-42.407166 - parent: 5350 - type: Transform - proto: SaxophoneInstrument entities: - uid: 3129 @@ -131295,11 +131356,6 @@ entities: - pos: -15.564329,-46.42406 parent: 5350 type: Transform - - uid: 22267 - components: - - pos: 6.5892467,-42.51654 - parent: 5350 - type: Transform - proto: ScalpelShiv entities: - uid: 6996 @@ -136414,6 +136470,13 @@ entities: - pos: -53.5,-30.5 parent: 5350 type: Transform +- proto: SpawnMobParrot + entities: + - uid: 25993 + components: + - pos: 44.5,8.5 + parent: 5350 + type: Transform - proto: SpawnMobRaccoonMorticia entities: - uid: 4006 @@ -138032,6 +138095,16 @@ entities: nameSet: True id: EVA type: SurveillanceCamera + - uid: 24485 + components: + - pos: 104.5,-13.5 + parent: 5350 + type: Transform + - setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: Telecomms + type: SurveillanceCamera - uid: 26400 components: - rot: 1.5707963267948966 rad @@ -138055,6 +138128,11 @@ entities: - pos: 103.5,4.5 parent: 5350 type: Transform + - setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: AI chamber south + type: SurveillanceCamera - uid: 26404 components: - rot: 3.141592653589793 rad @@ -138067,6 +138145,11 @@ entities: pos: 105.5,12.5 parent: 5350 type: Transform + - setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: AI chamber north + type: SurveillanceCamera - uid: 26406 components: - rot: 1.5707963267948966 rad @@ -138120,6 +138203,10 @@ entities: pos: 96.5,-0.5 parent: 5350 type: Transform + - setupAvailableNetworks: + - SurveillanceCameraCommand + type: SurveillanceCamera + - type: ActiveUserInterface - uid: 26415 components: - rot: 3.141592653589793 rad @@ -144235,18 +144322,16 @@ entities: type: Transform - proto: VendingMachineWallMedical entities: - - uid: 9248 + - uid: 14901 components: - flags: SessionSpecific type: MetaData - - pos: -16.5,32.5 + - pos: -18.5,-33.5 parent: 5350 type: Transform - - uid: 14901 + - uid: 22266 components: - - flags: SessionSpecific - type: MetaData - - pos: -18.5,-33.5 + - pos: -16.5,32.5 parent: 5350 type: Transform - proto: VendingMachineWinter @@ -161863,13 +161948,6 @@ entities: type: Transform - location: AI Upload type: WarpPoint - - uid: 24238 - components: - - pos: -20.5,14.5 - parent: 5350 - type: Transform - - location: Tool Room - type: WarpPoint - uid: 24239 components: - pos: -40.5,17.5 @@ -161982,6 +162060,22 @@ entities: type: Transform - location: Evac type: WarpPoint +- proto: WarpPointBombing + entities: + - uid: 22267 + components: + - pos: -20.5,14.5 + parent: 5350 + type: Transform + - location: Tool room + type: WarpPoint + - uid: 24238 + components: + - pos: 104.5,9.5 + parent: 5350 + type: Transform + - location: AI chamber + type: WarpPoint - proto: WaterCooler entities: - uid: 2088 From abf80c572eaff07c607af783615285c6afb89c50 Mon Sep 17 00:00:00 2001 From: JoeHammad1844 <130668733+JoeHammad1844@users.noreply.github.com> Date: Sun, 15 Oct 2023 08:51:33 +1100 Subject: [PATCH 106/245] Barratry update (#20810) --- Resources/Maps/barratry.yml | 204903 +++++++++++++++++---------------- 1 file changed, 102473 insertions(+), 102430 deletions(-) diff --git a/Resources/Maps/barratry.yml b/Resources/Maps/barratry.yml index 54996685b848b2..8f8815d9dbbad6 100644 --- a/Resources/Maps/barratry.yml +++ b/Resources/Maps/barratry.yml @@ -1,102430 +1,102473 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 2: FloorArcadeBlue2 - 7: FloorAsteroidSand - 11: FloorAsteroidTile - 15: FloorBlueCircuit - 18: FloorCarpetClown - 26: FloorDark - 27: FloorDarkDiagonal - 29: FloorDarkHerringbone - 31: FloorDarkMono - 33: FloorDarkPavement - 35: FloorDarkPlastic - 37: FloorDirt - 38: FloorEighties - 41: FloorFreezer - 42: FloorGlass - 44: FloorGrass - 51: FloorGreenCircuit - 55: FloorHydro - 59: FloorLino - 61: FloorMetalDiamond - 62: FloorMime - 67: FloorPlanetDirt - 70: FloorRGlass - 71: FloorReinforced - 73: FloorRockVault - 74: FloorShowroom - 83: FloorSteel - 85: FloorSteelCheckerLight - 88: FloorSteelDirty - 89: FloorSteelHerringbone - 93: FloorSteelPavement - 95: FloorTechMaint - 99: FloorWhite - 102: FloorWhiteHerringbone - 103: FloorWhiteMini - 109: FloorWood - 111: Lattice - 112: Plating - 113: PlatingAsteroid -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - - pos: 0.43985805,0.83991814 - parent: 5005 - type: Transform - - chunks: - -1,-1: - ind: -1,-1 - tiles: cAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAKBwAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAcAAAAAAACwAAAAAAcQAAAAAACwAAAAAAcQAAAAAACwAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAAcAAAAAAACwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAcAAAAAAACwAAAAAACwAAAAAAcQAAAAAACwAAAAAACwAAAAAAcQAAAAAABwAAAAAABwAAAAAABwAAAAAACwAAAAAAcQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAcQAAAAAACwAAAAAACwAAAAAAcQAAAAAACwAAAAAAcAAAAAAACwAAAAAAcQAAAAAAcQAAAAAACwAAAAAAcQAAAAAAcQAAAAAABwAAAAABBwAAAAAABwAAAAABcAAAAAAACwAAAAAAcQAAAAAACwAAAAAAcQAAAAAACwAAAAAAcAAAAAAACwAAAAAACwAAAAAAcQAAAAAABwAAAAAABwAAAAAACwAAAAAACwAAAAAACwAAAAAACwAAAAAAcAAAAAAAcQAAAAAACwAAAAAACwAAAAAACwAAAAAAcQAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAEBwAAAAACCwAAAAAAcQAAAAAACwAAAAAACwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAMBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAGBwAAAAAAcQAAAAAAcQAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAHQAAAAACHQAAAAAAHQAAAAACcAAAAAAABwAAAAAIBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAcQAAAAAABwAAAAAAXwAAAAAAcAAAAAAAHQAAAAABHQAAAAADHQAAAAABcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAJBwAAAAAABwAAAAAABwAAAAAABwAAAAAACwAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAHQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAABwAAAAAACwAAAAAABwAAAAAFbQAAAAADcAAAAAAAYwAAAAABYwAAAAABYwAAAAABYwAAAAAAYwAAAAACYwAAAAABcAAAAAAAUwAAAAAAUwAAAAABUwAAAAAAUwAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAbQAAAAABcAAAAAAAYwAAAAADYwAAAAAAYwAAAAABYwAAAAAAYwAAAAAAYwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcQAAAAAAUwAAAAACbQAAAAADcAAAAAAAYwAAAAADYwAAAAADYwAAAAACYwAAAAABYwAAAAAAYwAAAAAAcAAAAAAAUwAAAAABcAAAAAAADwAAAAAADwAAAAAADwAAAAAAUwAAAAACUwAAAAAAbQAAAAAAbQAAAAADUwAAAAADUwAAAAADUwAAAAADUwAAAAABUwAAAAACUwAAAAACUwAAAAACUwAAAAADUwAAAAAADwAAAAAADwAAAAAADwAAAAAAUwAAAAABUwAAAAACbQAAAAACcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAADcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABDwAAAAAAcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: cAAAAAAAcAAAAAAAIQAAAAADGgAAAAABGgAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADDwAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAACKgAAAAAAGgAAAAAAGgAAAAAAUwAAAAABUwAAAAABUwAAAAAAUwAAAAABDwAAAAAAcAAAAAAAbQAAAAACbQAAAAACbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAADGgAAAAABGgAAAAACcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAADUwAAAAADcAAAAAAAbQAAAAAAbQAAAAAAbQAAAAADcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAACUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAAAUwAAAAAAUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAACcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAUwAAAAABcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAABcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAAD - version: 6 - 0,-1: - ind: 0,-1 - tiles: RwAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAARwAAAAAARwAAAAAARwAAAAAAcAAAAAAABwAAAAAABwAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAARwAAAAAARwAAAAAAcAAAAAAABwAAAAAABwAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAABwAAAAAAbwAAAAAAAAAAAAAAcAAAAAAARwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAACwAAAAAAcQAAAAAACwAAAAAAcQAAAAAACwAAAAAACwAAAAAAcAAAAAAABwAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAACwAAAAAACwAAAAAAcQAAAAAAcQAAAAAACwAAAAAACwAAAAAAcAAAAAAABwAAAAAIBwAAAAAABwAAAAAABwAAAAAFBwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAADCwAAAAAAcQAAAAAACwAAAAAACwAAAAAACwAAAAAAcQAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAADcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADCwAAAAAACwAAAAAACwAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcAAAAAAABwAAAAAABwAAAAABBwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcQAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAABBwAAAAAJcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAADbQAAAAAAbQAAAAABUwAAAAADUwAAAAABUwAAAAACOwAAAAAAOwAAAAAAOwAAAAAAGgAAAAADGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAABcAAAAAAAUwAAAAABUwAAAAAAUwAAAAAAOwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAADOwAAAAAAOwAAAAAAOwAAAAAA - version: 6 - 0,0: - ind: 0,0 - tiles: DwAAAAAAUwAAAAAAMwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAAAbQAAAAABUwAAAAACUwAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAADwAAAAAAUwAAAAABMwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAADcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAADwAAAAAAUwAAAAADMwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAACcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAAUwAAAAABUwAAAAABUwAAAAACcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAAAUwAAAAADUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAACGgAAAAABGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAGgAAAAADGgAAAAACGgAAAAADGgAAAAADGgAAAAABGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAAAGgAAAAABGgAAAAAAGgAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADGgAAAAABGgAAAAADcAAAAAAAYwAAAAACYwAAAAADYwAAAAABYwAAAAACYwAAAAABYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAADGgAAAAABGgAAAAAAcAAAAAAAYwAAAAABYwAAAAADYwAAAAACYwAAAAABYwAAAAAAYwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAA - version: 6 - -1,-2: - ind: -1,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAEBwAAAAADAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAGBwAAAAAABwAAAAAKcAAAAAAABwAAAAAIBwAAAAAAAAAAAAAABwAAAAAABwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAABwAAAAAABwAAAAAJBwAAAAAABwAAAAAABwAAAAAAcAAAAAAAcAAAAAAABwAAAAAIBwAAAAAABwAAAAAABwAAAAAABwAAAAAA - version: 6 - 0,-2: - ind: 0,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAABwAAAAALBwAAAAAABwAAAAAABwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAABwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAABwAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAA - version: 6 - -2,-1: - ind: -2,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAJgAAAAAAJgAAAAAAcAAAAAAAcQAAAAAACwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAJgAAAAAAcAAAAAAAJgAAAAAAcAAAAAAACwAAAAAAcQAAAAAAcAAAAAAAcAAAAAAAIwAAAAAAIwAAAAABIwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAJgAAAAAAcAAAAAAAcAAAAAAACwAAAAAACwAAAAAAcAAAAAAAcAAAAAAAIwAAAAACIwAAAAAAIwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAcAAAAAAACwAAAAAAcQAAAAAAUwAAAAADcAAAAAAAIwAAAAAAIwAAAAADIwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcQAAAAAACwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAAAbQAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAAAbQAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAADbQAAAAACbQAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAAAbQAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - -2,0: - ind: -2,0 - tiles: UwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAUwAAAAACUwAAAAACUwAAAAADcAAAAAAAUwAAAAADUwAAAAABUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAACUwAAAAACUwAAAAADUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAADUwAAAAABUwAAAAADUwAAAAAAUwAAAAABUwAAAAABUwAAAAACUwAAAAABUwAAAAADcAAAAAAAUwAAAAAAUwAAAAADUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAAbQAAAAAAbQAAAAACbQAAAAAAbQAAAAADbQAAAAACbQAAAAADbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACOwAAAAAAOwAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAADbQAAAAABbQAAAAACbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAADbQAAAAACbQAAAAABbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAACbQAAAAABbQAAAAAAbQAAAAADbQAAAAADbQAAAAACcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAACbQAAAAADbQAAAAADbQAAAAACbQAAAAADbQAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAbQAAAAABbQAAAAACbQAAAAADbQAAAAAAbQAAAAABbQAAAAADbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAABbQAAAAACbQAAAAADbQAAAAAAbQAAAAAAbQAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - 1,-1: - ind: 1,-1 - tiles: bwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAARwAAAAAARwAAAAAARwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAARwAAAAAARwAAAAAARwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAARwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAXQAAAAADXQAAAAACXQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAOwAAAAAAOwAAAAAAXQAAAAACXQAAAAACXQAAAAAAXQAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAAAAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAXQAAAAADXQAAAAAAXQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAbwAAAAAA - version: 6 - 1,0: - ind: 1,0 - tiles: OwAAAAAAOwAAAAAAcAAAAAAAGwAAAAABGwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAGwAAAAACGwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAACXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAGwAAAAAAGwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAABcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAUwAAAAACUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAADcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAACUwAAAAAAUwAAAAADUwAAAAADUwAAAAADUwAAAAADcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAABUwAAAAACcAAAAAAAbwAAAAAAbwAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAbwAAAAAAbwAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - 1,-2: - ind: 1,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAA - version: 6 - 1,1: - ind: 1,1 - tiles: EgAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAABcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAACUwAAAAABcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAADGgAAAAACGgAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAACGgAAAAABGgAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAABGgAAAAABcAAAAAAAbwAAAAAAAAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAABGgAAAAACGgAAAAABcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAGgAAAAADGgAAAAABGgAAAAACGgAAAAABcAAAAAAAbwAAAAAAAAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAACGgAAAAAAGgAAAAACcAAAAAAAbwAAAAAAAAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 2,0: - ind: 2,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 2,1: - ind: 2,1 - tiles: cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 0,1: - ind: 0,1 - tiles: GgAAAAADGgAAAAABGgAAAAAAGgAAAAADGgAAAAABcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAABYwAAAAACYwAAAAADYwAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAADGgAAAAACGgAAAAAAGgAAAAAAGgAAAAACcAAAAAAAYwAAAAADYwAAAAACYwAAAAAAYwAAAAADYwAAAAAAYwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAADYwAAAAADYwAAAAAAYwAAAAACYwAAAAAAYwAAAAADYwAAAAABYwAAAAACYwAAAAACYwAAAAABYwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAYwAAAAABYwAAAAACYwAAAAAAcAAAAAAAYwAAAAACYwAAAAADcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAADYwAAAAADYwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAYwAAAAADcAAAAAAAYwAAAAABYwAAAAABYwAAAAAAcAAAAAAAYwAAAAABYwAAAAAAYwAAAAADYwAAAAABYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAYwAAAAABYwAAAAADYwAAAAACYwAAAAAAYwAAAAAAcAAAAAAAYwAAAAACYwAAAAACYwAAAAACYwAAAAABYwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAYwAAAAADcAAAAAAAYwAAAAABYwAAAAADYwAAAAADYwAAAAADYwAAAAADYwAAAAADYwAAAAADYwAAAAADYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAACYwAAAAADYwAAAAAAYwAAAAABYwAAAAADYwAAAAADYwAAAAACYwAAAAABYwAAAAACYwAAAAAAYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAAAYwAAAAACYwAAAAABcAAAAAAAYwAAAAABYwAAAAAAYwAAAAACYwAAAAACYwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAcAAAAAAAYwAAAAADYwAAAAAAYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAABYwAAAAAAYwAAAAADYwAAAAACYwAAAAACYwAAAAABYwAAAAADYwAAAAADYwAAAAADYwAAAAACYwAAAAABUwAAAAACUwAAAAAAUwAAAAACYwAAAAAAYwAAAAACYwAAAAABYwAAAAACYwAAAAACYwAAAAABYwAAAAABYwAAAAABYwAAAAABYwAAAAABYwAAAAAAYwAAAAAAYwAAAAADcAAAAAAAUwAAAAAAUwAAAAADYwAAAAADYwAAAAABYwAAAAABYwAAAAADYwAAAAAAYwAAAAADcAAAAAAAYwAAAAACYwAAAAABYwAAAAACYwAAAAABYwAAAAADYwAAAAABcAAAAAAAUwAAAAADUwAAAAAAYwAAAAADcAAAAAAAYwAAAAAAYwAAAAABYwAAAAAAYwAAAAACcAAAAAAAYwAAAAADYwAAAAACYwAAAAABYwAAAAADYwAAAAAAYwAAAAADcAAAAAAAUwAAAAAAUwAAAAAD - version: 6 - -1,1: - ind: -1,1 - tiles: cAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAABYwAAAAABYwAAAAABYwAAAAACYwAAAAACcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAYwAAAAAAcAAAAAAAZwAAAAACZwAAAAABYwAAAAACcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAZwAAAAADZwAAAAACZwAAAAADYwAAAAADGgAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAZwAAAAACZwAAAAAAYwAAAAACGgAAAAACcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAZwAAAAABZwAAAAACZwAAAAABUwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAZwAAAAABcAAAAAAAZwAAAAACZwAAAAABUwAAAAADcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAYwAAAAADZwAAAAADZwAAAAAAZwAAAAADZwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAACZwAAAAABZwAAAAAAZwAAAAACZwAAAAACUwAAAAACUwAAAAADcAAAAAAAUwAAAAABUwAAAAABWQAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAACcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAACYwAAAAABYwAAAAABUwAAAAADcAAAAAAAUwAAAAACUwAAAAADUwAAAAACWQAAAAACWQAAAAABWQAAAAAAWQAAAAABWQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAABUwAAAAACcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADWQAAAAAAWQAAAAADWQAAAAADWQAAAAAAWQAAAAADcAAAAAAAYwAAAAADYwAAAAADYwAAAAABYwAAAAADYwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAAAWQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAAAcAAAAAAAYwAAAAACYwAAAAACYwAAAAACYwAAAAACYwAAAAACUwAAAAACcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAABUwAAAAADUwAAAAAAUwAAAAAAUwAAAAAAYwAAAAADYwAAAAABYwAAAAABYwAAAAACYwAAAAAAYwAAAAAA - version: 6 - 0,2: - ind: 0,2 - tiles: YwAAAAABcAAAAAAAYwAAAAADYwAAAAABYwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABYwAAAAAAYwAAAAAAYwAAAAACYwAAAAADYwAAAAABYwAAAAACYwAAAAACKgAAAAABKgAAAAAAKgAAAAACKgAAAAADKgAAAAAAYwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAACcAAAAAAAYwAAAAABYwAAAAACYwAAAAADcAAAAAAAYwAAAAAAYwAAAAABYwAAAAADYwAAAAADYwAAAAADYwAAAAABYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAZgAAAAADZgAAAAAAZgAAAAACZgAAAAAAZgAAAAADYwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAABcAAAAAAAcAAAAAAAYwAAAAABcAAAAAAAcAAAAAAAYwAAAAACZgAAAAABZgAAAAADZgAAAAACZgAAAAADZgAAAAAAYwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAAAYwAAAAADKgAAAAADYwAAAAACcAAAAAAAYwAAAAAAZgAAAAABZgAAAAACZgAAAAACZgAAAAACZgAAAAABYwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAcAAAAAAAYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACcAAAAAAAcAAAAAAAKgAAAAAAYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAIQAAAAACIQAAAAACYwAAAAAAYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAUwAAAAABUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAPQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAPQAAAAAAPQAAAAAAPQAAAAAAPQAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAPQAAAAAAPQAAAAAAPQAAAAAAPQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAABbQAAAAACbQAAAAABcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAADbQAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - -1,2: - ind: -1,2 - tiles: UwAAAAABUwAAAAABcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAAAUwAAAAACUwAAAAADcAAAAAAAYwAAAAABYwAAAAABYwAAAAAAYwAAAAAAYwAAAAAAUwAAAAADUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAACUwAAAAADUwAAAAADYwAAAAACYwAAAAACYwAAAAADYwAAAAADYwAAAAABYwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAYwAAAAACYwAAAAADYwAAAAADYwAAAAAAYwAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAACUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAIQAAAAACUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAADGgAAAAAAGgAAAAAAGgAAAAACGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAABUwAAAAACcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAACGgAAAAADGgAAAAABcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADGgAAAAABGgAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAADGgAAAAABGgAAAAADGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAADGgAAAAABGgAAAAADGgAAAAADGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAACGgAAAAADGgAAAAADcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAUwAAAAADUwAAAAABUwAAAAACUwAAAAABUwAAAAACUwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - 1,2: - ind: 1,2 - tiles: UwAAAAACUwAAAAACXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAADcAAAAAAAbQAAAAACcAAAAAAAbQAAAAADbQAAAAACbQAAAAADcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAABbQAAAAAAbQAAAAABbQAAAAABcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABJQAAAAACQwAAAAAAbQAAAAACbQAAAAACcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAAAbQAAAAABJQAAAAACJQAAAAACcAAAAAAAbQAAAAAAbQAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACQwAAAAAAcAAAAAAAbQAAAAACbQAAAAACcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAABbQAAAAADcAAAAAAAbQAAAAABbQAAAAABcAAAAAAAbQAAAAABcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAbQAAAAADbQAAAAABcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -2,2: - ind: -2,2 - tiles: cAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAAAUwAAAAACUwAAAAABXwAAAAAAUwAAAAABUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAABUwAAAAACUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAUwAAAAACLAAAAAAALAAAAAAALAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAGgAAAAACGgAAAAADcAAAAAAAGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAABUwAAAAACUwAAAAABcAAAAAAAGgAAAAADGgAAAAAAcAAAAAAAGgAAAAACGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACcAAAAAAAUwAAAAAAcAAAAAAAGgAAAAAAGgAAAAABGgAAAAADGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAADGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAUwAAAAABGgAAAAACGgAAAAAAcAAAAAAAGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAADGgAAAAABGgAAAAACcAAAAAAAcAAAAAAAUwAAAAACGgAAAAABGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAABGgAAAAAAcAAAAAAAUwAAAAABcAAAAAAAGgAAAAAAGgAAAAADcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAABGgAAAAADGgAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAABGgAAAAAAGgAAAAAAcAAAAAAAUwAAAAACUwAAAAACVQAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAABGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAACVQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAVQAAAAABcAAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAAAbQAAAAAAbQAAAAADcAAAAAAAUwAAAAAAUwAAAAABVQAAAAAAcAAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAACbQAAAAAAbQAAAAAAUwAAAAABUwAAAAADUwAAAAAAVQAAAAADUwAAAAACKQAAAAAAKQAAAAAAKQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAACbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAVQAAAAADcAAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAACbQAAAAAAbQAAAAACcAAAAAAAUwAAAAAAcAAAAAAA - version: 6 - -2,1: - ind: -2,1 - tiles: cAAAAAAAXwAAAAAAcAAAAAAAbQAAAAAAbQAAAAACbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAADbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAACbQAAAAABbQAAAAADbQAAAAADbQAAAAADbQAAAAABbQAAAAABcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAALAAAAAAALAAAAAAAcAAAAAAAbQAAAAADbQAAAAACbQAAAAACbQAAAAABbQAAAAADbQAAAAAAbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAADbQAAAAAAbQAAAAABcAAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAAAGgAAAAADGgAAAAADbQAAAAADbQAAAAADbQAAAAADcAAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABGgAAAAACbQAAAAACbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAADGgAAAAABbQAAAAABbQAAAAAAbQAAAAACcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADcAAAAAAAUwAAAAADcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAUwAAAAACGgAAAAAAbQAAAAABbQAAAAADbQAAAAABcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAACGgAAAAAAbQAAAAACbQAAAAABcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAAAGgAAAAAAbQAAAAACbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAUwAAAAABUwAAAAACUwAAAAADXwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAUwAAAAABUwAAAAADXwAAAAAAXwAAAAAAUwAAAAACUwAAAAABUwAAAAAB - version: 6 - -2,-2: - ind: -2,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAA - version: 6 - -3,0: - ind: -3,0 - tiles: cAAAAAAAUwAAAAABUwAAAAADUwAAAAAAUwAAAAACcAAAAAAAUwAAAAACUwAAAAABUwAAAAACUwAAAAADUwAAAAAAUwAAAAABUwAAAAACUwAAAAABUwAAAAABUwAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAACUwAAAAABUwAAAAACUwAAAAABUwAAAAABUwAAAAABUwAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAAAUwAAAAABcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAABcAAAAAAAUwAAAAACUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAADUwAAAAABUwAAAAACUwAAAAAAUwAAAAABUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAADUwAAAAABUwAAAAADUwAAAAABUwAAAAADUwAAAAADcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAADUwAAAAADUwAAAAABUwAAAAAAUwAAAAADUwAAAAAAUwAAAAACcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADUwAAAAADcAAAAAAAUwAAAAADcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAWAAAAAAAWAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAACUwAAAAAAUwAAAAABUwAAAAADcAAAAAAAbQAAAAABbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAADcAAAAAAAUwAAAAABUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAACbQAAAAACcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAA - version: 6 - -3,1: - ind: -3,1 - tiles: cAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAWAAAAAAAcAAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAWAAAAAAAWAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAALAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAAAGgAAAAACcAAAAAAAGgAAAAABcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADGgAAAAADGgAAAAAAGgAAAAACGgAAAAADUwAAAAADcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAGgAAAAABGgAAAAAAGgAAAAAAGgAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADGgAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACGgAAAAACGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAACUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAACUwAAAAABUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAA - version: 6 - -3,2: - ind: -3,2 - tiles: cAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAACUwAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAACUwAAAAABUwAAAAADUwAAAAACXwAAAAAAUwAAAAAAUwAAAAACcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAADUwAAAAACUwAAAAACUwAAAAADUwAAAAABUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAACbQAAAAADbQAAAAAAbQAAAAADbQAAAAACbQAAAAAAbQAAAAACbQAAAAADGgAAAAACGgAAAAACGgAAAAADcAAAAAAAUwAAAAADcAAAAAAAbQAAAAACbQAAAAABbQAAAAACcAAAAAAAbQAAAAAAbQAAAAADbQAAAAABbQAAAAADbQAAAAACbQAAAAABGgAAAAACGgAAAAAAGgAAAAADUwAAAAACUwAAAAABcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAACbQAAAAABbQAAAAADGgAAAAADGgAAAAACGgAAAAADcAAAAAAAUwAAAAADcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAAAbQAAAAADbQAAAAAAbQAAAAAAbQAAAAABGgAAAAABGgAAAAADGgAAAAADcAAAAAAAUwAAAAAAcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAAAbQAAAAAAbQAAAAACbQAAAAABbQAAAAADcAAAAAAAGgAAAAACUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAADbQAAAAABbQAAAAADbQAAAAACGgAAAAACGgAAAAABUwAAAAADUwAAAAABcAAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAGgAAAAADGgAAAAACGgAAAAACGgAAAAACGgAAAAADcAAAAAAAcAAAAAAAVQAAAAADVQAAAAAAVQAAAAACVQAAAAADVQAAAAADVQAAAAACVQAAAAABUwAAAAABUwAAAAADGgAAAAADGgAAAAAANwAAAAAANwAAAAAANwAAAAAAGgAAAAADGgAAAAADVQAAAAABVQAAAAACVQAAAAABVQAAAAADVQAAAAACVQAAAAADVQAAAAAAUwAAAAADUwAAAAABGgAAAAACGgAAAAADNwAAAAAANwAAAAAANwAAAAAAGgAAAAAAGgAAAAACVQAAAAABVQAAAAACVQAAAAABVQAAAAADVQAAAAADVQAAAAABVQAAAAACUwAAAAACcAAAAAAAcAAAAAAAGgAAAAAANwAAAAAANwAAAAAANwAAAAAAGgAAAAABGgAAAAACVQAAAAADVQAAAAABVQAAAAADVQAAAAABVQAAAAACVQAAAAAAVQAAAAADUwAAAAACUwAAAAACGgAAAAACGgAAAAABGgAAAAACGgAAAAAAGgAAAAAAGgAAAAABGgAAAAAAVQAAAAADVQAAAAADVQAAAAABVQAAAAACVQAAAAADVQAAAAAAVQAAAAADUwAAAAACUwAAAAABcAAAAAAAGgAAAAACGgAAAAABGgAAAAADGgAAAAADGgAAAAABcAAAAAAAVQAAAAAAVQAAAAAAVQAAAAACVQAAAAABVQAAAAABVQAAAAAAVQAAAAAB - version: 6 - -3,-1: - ind: -3,-1 - tiles: bwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAABcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABUwAAAAAAUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAACUwAAAAABUwAAAAADUwAAAAAAXwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAADUwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAADUwAAAAABUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADcAAAAAAAUwAAAAAAUwAAAAADUwAAAAABUwAAAAABUwAAAAAAUwAAAAACUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAbQAAAAADbQAAAAACbQAAAAAAbQAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAAAbQAAAAADcAAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAACcAAAAAAAUwAAAAABcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACcAAAAAAAbQAAAAAAbQAAAAAAbQAAAAABcAAAAAAAbQAAAAAAUwAAAAABUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAABUwAAAAABUwAAAAADcAAAAAAAbQAAAAAAbQAAAAABbQAAAAADbQAAAAACcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAC - version: 6 - -4,-1: - ind: -4,-1 - tiles: cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAABUwAAAAADUwAAAAACcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAbQAAAAADcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAbQAAAAADbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAADcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAACcAAAAAAAbQAAAAACcAAAAAAAbQAAAAACbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - -4,0: - ind: -4,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAABUwAAAAAAUwAAAAADUwAAAAACUwAAAAABUwAAAAABUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAAAUwAAAAAAUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAAAcAAAAAAAWAAAAAAAWAAAAAAAWAAAAAAAUwAAAAAAUwAAAAACWAAAAAAAWAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAADcAAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAACbQAAAAAAbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAADcAAAAAAAbQAAAAABbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAABbQAAAAAAbQAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADcAAAAAAAbQAAAAAAbQAAAAADbQAAAAACbQAAAAADbQAAAAAAbQAAAAADbQAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADbQAAAAABbQAAAAABbQAAAAAAbQAAAAACcAAAAAAAbQAAAAACbQAAAAABbQAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACbQAAAAAAbQAAAAABbQAAAAACbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADbQAAAAAAbQAAAAABbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAABbQAAAAACbQAAAAADbQAAAAADbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - -4,1: - ind: -4,1 - tiles: XwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADbQAAAAACbQAAAAADbQAAAAACbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAGgAAAAAAGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAACGgAAAAABcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAGgAAAAABGgAAAAABGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAADGgAAAAADGgAAAAACGgAAAAACGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAAAGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAABcAAAAAAAIQAAAAADIQAAAAAAIQAAAAABIQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAIQAAAAABIQAAAAAAIQAAAAADIQAAAAADcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAIQAAAAADIQAAAAABIQAAAAAAIQAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAACcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADcAAAAAAAUwAAAAADUwAAAAACUwAAAAAAUwAAAAAAWAAAAAAAUwAAAAACUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAUwAAAAAAUwAAAAADUwAAAAABUwAAAAAAUwAAAAAAWAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAABUwAAAAAAUwAAAAADUwAAAAADUwAAAAABUwAAAAADUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAAAUwAAAAABcAAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAACUwAAAAACWAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - -4,2: - ind: -4,2 - tiles: UwAAAAACUwAAAAADUwAAAAABUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABcAAAAAAAUwAAAAACUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAACUwAAAAADcAAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAANwAAAAAANwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAACNwAAAAAANwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAACNwAAAAAANwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAABNwAAAAAANwAAAAAAcAAAAAAAUwAAAAADcAAAAAAASgAAAAAAUwAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAADGgAAAAACcAAAAAAAUwAAAAACSgAAAAAAcAAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACSgAAAAAASgAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAASgAAAAAASgAAAAAAcAAAAAAAUwAAAAAASgAAAAAAUwAAAAACSgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAASgAAAAAASgAAAAAASgAAAAAAcAAAAAAAUwAAAAACSgAAAAAAUwAAAAADUwAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAACSgAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADSgAAAAAAUwAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAADWAAAAAAA - version: 6 - -5,-1: - ind: -5,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAUwAAAAADUwAAAAABUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAUwAAAAACbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAADUwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAABUwAAAAABUwAAAAACUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAACbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -5,0: - ind: -5,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAABUwAAAAACbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAACbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAADGgAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAGgAAAAADGgAAAAACGgAAAAAAGgAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAGgAAAAAAGgAAAAADGgAAAAACGgAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAGgAAAAABGgAAAAADGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAABUwAAAAAAUwAAAAACUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - -2,3: - ind: -2,3 - tiles: cAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAAAbQAAAAADcAAAAAAAUwAAAAACcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAARwAAAAAARwAAAAAARwAAAAAARwAAAAAAcAAAAAAAGgAAAAAAGgAAAAADGgAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAARwAAAAAAGgAAAAABGgAAAAABGgAAAAADRwAAAAAAGgAAAAADGgAAAAABGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAARwAAAAAAGgAAAAACRgAAAAAAGgAAAAACcAAAAAAAGgAAAAACGgAAAAACGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAADwAAAAAAGgAAAAACRgAAAAADGgAAAAACcAAAAAAAGgAAAAAAGgAAAAABGgAAAAADcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAARwAAAAAAGgAAAAAAGgAAAAAAGgAAAAACcAAAAAAAGgAAAAABGgAAAAACGgAAAAABcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABGgAAAAAAGgAAAAADGgAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAADGgAAAAADGgAAAAADGgAAAAACbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAAAcAAAAAAAGgAAAAAAGgAAAAACbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAADUwAAAAABUwAAAAABUwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAAB - version: 6 - -1,3: - ind: -1,3 - tiles: cAAAAAAAUwAAAAAAUwAAAAABUwAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAGgAAAAADGgAAAAADcAAAAAAAUwAAAAADUwAAAAABUwAAAAABUwAAAAABUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAGgAAAAABGgAAAAABcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAACUwAAAAABUwAAAAACUwAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAGgAAAAACGgAAAAABcAAAAAAAUwAAAAAAUwAAAAADUwAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAGgAAAAADGgAAAAABcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAbQAAAAACcAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAAADGgAAAAADUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAGgAAAAADGgAAAAADGgAAAAACbQAAAAAAbQAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAGgAAAAAAGgAAAAAAUwAAAAABUwAAAAABUwAAAAADcAAAAAAAGgAAAAABGgAAAAAAGgAAAAAAbQAAAAABbQAAAAACcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAGgAAAAACcAAAAAAAUwAAAAADUwAAAAADUwAAAAACcAAAAAAAGgAAAAABGgAAAAAAGgAAAAABbQAAAAADbQAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAUwAAAAACUwAAAAACUwAAAAACUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAA - version: 6 - 0,3: - ind: 0,3 - tiles: cAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAbQAAAAABbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAbQAAAAABbQAAAAACbQAAAAABEgAAAAAAcAAAAAAAbQAAAAADcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAbQAAAAAAbQAAAAADbQAAAAACEgAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAbQAAAAACbQAAAAACbQAAAAACEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 1,3: - ind: 1,3 - tiles: cAAAAAAAbQAAAAAAbQAAAAABcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAABbQAAAAADcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAbQAAAAACbQAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAbQAAAAABbQAAAAACcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAbQAAAAADbQAAAAADcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,4: - ind: -1,4 - tiles: UwAAAAABUwAAAAABUwAAAAADUwAAAAACcAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -2,4: - ind: -2,4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAABUwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -3,3: - ind: -3,3 - tiles: UwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAABcAAAAAAAUwAAAAACcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAADcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAADcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAABcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAGgAAAAABGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAGgAAAAABGgAAAAADGgAAAAACUwAAAAACUwAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAGgAAAAABGgAAAAABGgAAAAABGgAAAAADUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAGgAAAAACcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -4,3: - ind: -4,3 - tiles: XwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAWAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAACUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAACUwAAAAABUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAADUwAAAAACUwAAAAAAUwAAAAACUwAAAAABUwAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAADUwAAAAACUwAAAAACUwAAAAADUwAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAAAUwAAAAABUwAAAAACcAAAAAAAUwAAAAAAUwAAAAABUwAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAABUwAAAAAAUwAAAAABUwAAAAACUwAAAAAAUwAAAAACUwAAAAADUwAAAAACUwAAAAACUwAAAAADUwAAAAABUwAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABUwAAAAACUwAAAAAAUwAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAACUwAAAAABUwAAAAADUwAAAAADUwAAAAABUwAAAAACUwAAAAADUwAAAAACUwAAAAADcAAAAAAAGgAAAAAAGgAAAAABcAAAAAAAGgAAAAACGgAAAAACGgAAAAABcAAAAAAAUwAAAAAAUwAAAAACUwAAAAACUwAAAAADUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAACcAAAAAAAGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAADcAAAAAAAGgAAAAAAGgAAAAACHwAAAAADUwAAAAADUwAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAADUwAAAAAAUwAAAAADUwAAAAABUwAAAAAAcAAAAAAAGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAACUwAAAAABUwAAAAADUwAAAAABUwAAAAABUwAAAAABUwAAAAACUwAAAAAAUwAAAAABUwAAAAADGgAAAAADGgAAAAADAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAABcAAAAAAAGgAAAAACAAAAAAAAcAAAAAAAbQAAAAACbQAAAAACbQAAAAAAbQAAAAAAcAAAAAAAbQAAAAACbQAAAAABbQAAAAABcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAcAAAAAAA - version: 6 - -4,-2: - ind: -4,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAA - version: 6 - -3,-2: - ind: -3,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -5,2: - ind: -5,2 - tiles: UwAAAAABUwAAAAADUwAAAAADUwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAADcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACUwAAAAAAUwAAAAAAUwAAAAACUwAAAAADUwAAAAACUwAAAAACUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAADUwAAAAAAUwAAAAACUwAAAAABUwAAAAACUwAAAAABUwAAAAACUwAAAAABUwAAAAACUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAABbQAAAAACbQAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAACbQAAAAABbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAABbQAAAAABcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAABbQAAAAABbQAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAAC - version: 6 - -5,3: - ind: -5,3 - tiles: bwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAABbwAAAAAAcAAAAAAAGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABbwAAAAAAcAAAAAAAGgAAAAACGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACbwAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAABbwAAAAAAcAAAAAAAGgAAAAAAGgAAAAABGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAA - version: 6 - -3,4: - ind: -3,4 - tiles: UwAAAAADUwAAAAADUwAAAAABUwAAAAADUwAAAAABUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -4,4: - ind: -4,4 - tiles: AAAAAAAAcAAAAAAAbQAAAAABbQAAAAADbQAAAAABbQAAAAAAcAAAAAAAbQAAAAABbQAAAAADbQAAAAABcAAAAAAAUwAAAAADUwAAAAAAUwAAAAACUwAAAAABUwAAAAACbwAAAAAAcAAAAAAAbQAAAAADbQAAAAABbQAAAAABbQAAAAAAcAAAAAAAbQAAAAADbQAAAAACbQAAAAACcAAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAAAUwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAA - version: 6 - -4,5: - ind: -4,5 - tiles: AAAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACcAAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAGcAAAAAAALAAAAAAAUwAAAAADcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAUwAAAAABcAAAAAAAUwAAAAADUwAAAAADUwAAAAABcAAAAAAAUwAAAAABcAAAAAAABwAAAAAAcAAAAAAALAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAALAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADcAAAAAAABwAAAAABcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAACcAAAAAAAUwAAAAADSgAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAABwAAAAAAAAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAABcAAAAAAABwAAAAAAbwAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAABwAAAAAAAAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACUwAAAAADUwAAAAABUwAAAAABUwAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAABwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAABcAAAAAAABwAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAADBwAAAAAMBwAAAAAABwAAAAAHBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAIBwAAAAAJBwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -3,5: - ind: -3,5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -5,5: - ind: -5,5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -5,1: - ind: -5,1 - tiles: bwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADUwAAAAADcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACcAAAAAAAUwAAAAACUwAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAABUwAAAAADUwAAAAABUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAABUwAAAAAAUwAAAAACcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAUwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAA - version: 6 - -6,1: - ind: -6,1 - tiles: AAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAADbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAUwAAAAABUwAAAAABUwAAAAABAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAABUwAAAAAAUwAAAAACUwAAAAADUwAAAAADUwAAAAABbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAACbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAAC - version: 6 - -6,2: - ind: -6,2 - tiles: bwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAADbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA - version: 6 - -7,1: - ind: -7,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAA - version: 6 - -7,2: - ind: -7,2 - tiles: bwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -6,3: - ind: -6,3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -5,4: - ind: -5,4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -7,0: - ind: -7,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -6,0: - ind: -6,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAA - version: 6 - 2,-1: - ind: 2,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 2,2: - ind: 2,2 - tiles: bwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - type: MapGrid - - type: Broadphase - - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - type: Physics - - fixtures: {} - type: Fixtures - - type: OccluderTree - - type: Shuttle - - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - type: Gravity - - chunkCollection: - version: 2 - nodes: - - node: - color: '#DE3A3A96' - id: Bot - decals: - 7285: -43,66 - - node: - color: '#52B4E996' - id: BotGreyscale - decals: - 6936: 25,28 - 6939: 28,28 - - node: - color: '#9FED5896' - id: BotGreyscale - decals: - 6940: 25,26 - 6941: 25,25 - - node: - color: '#A4610696' - id: BotGreyscale - decals: - 6943: 28,25 - - node: - color: '#D381C996' - id: BotGreyscale - decals: - 6942: 28,26 - - node: - color: '#DE3A3A96' - id: BotGreyscale - decals: - 6937: 26,28 - - node: - color: '#EFB34196' - id: BotGreyscale - decals: - 6938: 27,28 - - node: - color: '#A46106FF' - id: BotLeft - decals: - 7159: -45,-11 - 7160: -45,-12 - 7161: -44,-12 - 7162: -44,-11 - 7163: -43,-11 - 7164: -43,-12 - 7165: -42,-11 - 7166: -42,-12 - - node: - color: '#A46106FF' - id: Box - decals: - 2154: -11,56 - - node: - color: '#EFB341FF' - id: Box - decals: - 2152: -10,54 - - node: - color: '#334E6DC8' - id: BoxGreyscale - decals: - 2156: -9,56 - - node: - color: '#334E6DFF' - id: BoxGreyscale - decals: - 2155: -8,55 - - node: - color: '#52B4E9FF' - id: BoxGreyscale - decals: - 2158: -10,56 - - node: - color: '#D381C9FF' - id: BoxGreyscale - decals: - 2153: -11,54 - - node: - color: '#DE3A3AFF' - id: BoxGreyscale - decals: - 2157: -9,54 - - node: - color: '#D381C9FF' - id: BrickTileSteelBox - decals: - 13: -13,-7 - 63: -11,1 - 64: 0,-2 - - node: - color: '#52B4E9FF' - id: BrickTileSteelCornerNe - decals: - 2674: 4,17 - - node: - color: '#D381C9FF' - id: BrickTileSteelCornerNe - decals: - 8: -12,-8 - 62: -12,2 - - node: - color: '#52B4E9FF' - id: BrickTileSteelCornerNw - decals: - 2675: -2,17 - 2705: 2,40 - - node: - color: '#D381C9FF' - id: BrickTileSteelCornerNw - decals: - 7: -14,-8 - - node: - color: '#52B4E9FF' - id: BrickTileSteelCornerSe - decals: - 2616: 16,28 - 2676: 4,14 - - node: - color: '#D381C9FF' - id: BrickTileSteelCornerSe - decals: - 10: -12,-9 - 61: -12,0 - 70: 2,-3 - - node: - color: '#52B4E9FF' - id: BrickTileSteelCornerSw - decals: - 2613: 14,28 - 2677: -2,14 - - node: - color: '#D381C9FF' - id: BrickTileSteelCornerSw - decals: - 9: -14,-9 - 69: 1,-3 - - node: - color: '#52B4E9FF' - id: BrickTileSteelEndN - decals: - 2713: 0,39 - - node: - color: '#52B4E9FF' - id: BrickTileSteelLineE - decals: - 2617: 16,29 - 2678: 4,15 - 2679: 4,16 - 2698: 4,37 - 2699: 4,38 - 2700: 4,39 - - node: - color: '#D381C9FF' - id: BrickTileSteelLineE - decals: - 59: -12,1 - 65: 2,-1 - 66: 2,-2 - - node: - color: '#52B4E9FF' - id: BrickTileSteelLineN - decals: - 2680: -1,17 - 2681: 0,17 - 2682: 1,17 - 2683: 2,17 - 2684: 2,17 - 2685: 3,17 - 2701: 3,40 - - node: - color: '#D381C9FF' - id: BrickTileSteelLineN - decals: - 11: -13,-8 - 58: -13,2 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelLineN - decals: - 0: -13,-4 - 1: -12,-4 - 2: -11,-4 - 3: -10,-4 - - node: - color: '#52B4E9FF' - id: BrickTileSteelLineS - decals: - 2615: 15,28 - 2688: -1,14 - 2689: 0,14 - 2690: 1,14 - 2691: 2,14 - 2692: 3,14 - 2702: 3,36 - - node: - color: '#D381C9FF' - id: BrickTileSteelLineS - decals: - 12: -13,-9 - 60: -13,0 - - node: - color: '#52B4E9FF' - id: BrickTileSteelLineW - decals: - 2614: 14,29 - 2686: -2,16 - 2687: -2,15 - 2703: 2,37 - 2704: 2,38 - - node: - color: '#D381C9FF' - id: BrickTileSteelLineW - decals: - 67: 1,-1 - 68: 1,-2 - - node: - color: '#334E6DFF' - id: BrickTileWhiteCornerNe - decals: - 5525: -8,57 - 5526: -7,56 - - node: - color: '#52B4E9FF' - id: BrickTileWhiteCornerNe - decals: - 2694: 11,33 - - node: - color: '#9FED58FF' - id: BrickTileWhiteCornerNe - decals: - 2634: 11,13 - 2635: 9,13 - 2636: 7,13 - - node: - color: '#A46106FF' - id: BrickTileWhiteCornerNe - decals: - 722: -37,1 - 747: -44,-7 - - node: - color: '#D381C9FF' - id: BrickTileWhiteCornerNe - decals: - 43: -1,-2 - 78: -3,-3 - - node: - color: '#DE3A3AFF' - id: BrickTileWhiteCornerNe - decals: - 3351: -42,65 - - node: - color: '#EFB341FF' - id: BrickTileWhiteCornerNe - decals: - 4225: -70,31 - - node: - color: '#334E6DC8' - id: BrickTileWhiteCornerNw - decals: - 2159: -13,57 - - node: - color: '#334E6DFF' - id: BrickTileWhiteCornerNw - decals: - 2160: -13,57 - - node: - color: '#52B4E9FF' - id: BrickTileWhiteCornerNw - decals: - 2693: 7,33 - - node: - color: '#9FED58FF' - id: BrickTileWhiteCornerNw - decals: - 2631: 6,13 - 2632: 8,13 - 2633: 10,13 - - node: - color: '#A46106FF' - id: BrickTileWhiteCornerNw - decals: - 721: -39,1 - 746: -46,-7 - - node: - color: '#D381C9FF' - id: BrickTileWhiteCornerNw - decals: - 41: -14,-2 - 42: -10,2 - 80: -5,-3 - - node: - color: '#DE3A3AFF' - id: BrickTileWhiteCornerNw - decals: - 3352: -44,65 - - node: - color: '#EFB341FF' - id: BrickTileWhiteCornerNw - decals: - 4208: -75,17 - 4211: -68,31 - - node: - color: '#334E6DFF' - id: BrickTileWhiteCornerSe - decals: - 2161: -7,54 - 2162: -8,53 - - node: - color: '#9FED58FF' - id: BrickTileWhiteCornerSe - decals: - 2628: 7,11 - 2629: 9,11 - 2630: 11,11 - - node: - color: '#A46106FF' - id: BrickTileWhiteCornerSe - decals: - 720: -37,0 - 745: -44,-8 - - node: - color: '#D381C9FF' - id: BrickTileWhiteCornerSe - decals: - 79: -3,-4 - - node: - color: '#DE3A3AFF' - id: BrickTileWhiteCornerSe - decals: - 3353: -42,61 - - node: - color: '#EFB341FF' - id: BrickTileWhiteCornerSe - decals: - 4212: -64,25 - - node: - color: '#334E6DFF' - id: BrickTileWhiteCornerSw - decals: - 2163: -13,53 - - node: - color: '#9FED58FF' - id: BrickTileWhiteCornerSw - decals: - 2637: 6,11 - 2638: 8,11 - 2639: 10,11 - - node: - color: '#A46106FF' - id: BrickTileWhiteCornerSw - decals: - 719: -39,0 - 748: -46,-8 - - node: - color: '#D381C9FF' - id: BrickTileWhiteCornerSw - decals: - 44: -7,-6 - 81: -5,-4 - - node: - color: '#DE3A3AFF' - id: BrickTileWhiteCornerSw - decals: - 3354: -44,61 - - node: - color: '#EFB341FF' - id: BrickTileWhiteCornerSw - decals: - 4209: -75,15 - 4210: -68,25 - - node: - color: '#D381C9FF' - id: BrickTileWhiteEndE - decals: - 57: -6,2 - - node: - color: '#334E6DFF' - id: BrickTileWhiteInnerNe - decals: - 5527: -8,56 - - node: - color: '#A4610696' - id: BrickTileWhiteInnerNe - decals: - 6947: 27,24 - - node: - color: '#D381C9FF' - id: BrickTileWhiteInnerNe - decals: - 45: -7,-2 - - node: - color: '#9FED5896' - id: BrickTileWhiteInnerNw - decals: - 6955: 26,24 - - node: - color: '#D381C9FF' - id: BrickTileWhiteInnerNw - decals: - 48: -10,-2 - 56: -14,-4 - - node: - color: '#334E6DFF' - id: BrickTileWhiteInnerSe - decals: - 2174: -8,54 - 2187: -20,62 - - node: - color: '#D381C996' - id: BrickTileWhiteInnerSe - decals: - 6951: 27,27 - - node: - color: '#D381C9FF' - id: BrickTileWhiteInnerSe - decals: - 46: -9,-3 - 49: -7,2 - - node: - color: '#334E6DFF' - id: BrickTileWhiteInnerSw - decals: - 2186: -14,62 - - node: - color: '#9FED5896' - id: BrickTileWhiteInnerSw - decals: - 6948: 26,27 - - node: - color: '#D381C9FF' - id: BrickTileWhiteInnerSw - decals: - 47: -7,-3 - - node: - color: '#334E6DFF' - id: BrickTileWhiteLineE - decals: - 2164: -7,55 - 2175: -20,59 - 2176: -20,60 - 2177: -20,61 - - node: - color: '#9FED58FF' - id: BrickTileWhiteLineE - decals: - 2640: 7,12 - 2641: 9,12 - 2645: 11,12 - 7329: -12,15 - 7330: -12,14 - - node: - color: '#A4610696' - id: BrickTileWhiteLineE - decals: - 6946: 27,25 - - node: - color: '#D381C996' - id: BrickTileWhiteLineE - decals: - 6952: 27,26 - - node: - color: '#D381C9FF' - id: BrickTileWhiteLineE - decals: - 24: -7,-1 - 25: -7,0 - 26: -7,1 - 27: -1,-3 - 28: -1,-4 - 29: -1,-5 - - node: - color: '#DE3A3AFF' - id: BrickTileWhiteLineE - decals: - 3344: -42,64 - 3345: -42,63 - 3346: -42,62 - - node: - color: '#EFB341FF' - id: BrickTileWhiteLineE - decals: - 4213: -64,26 - 4214: -64,27 - 4215: -64,28 - 4228: -70,30 - 4229: -70,29 - 4230: -70,28 - 7334: -12,8 - 7335: -12,9 - - node: - color: '#334E6DC8' - id: BrickTileWhiteLineN - decals: - 6932: 25,27 - - node: - color: '#334E6DFF' - id: BrickTileWhiteLineN - decals: - 2165: -11,57 - 2166: -12,57 - 5523: -10,57 - 5524: -9,57 - - node: - color: '#52B4E996' - id: BrickTileWhiteLineN - decals: - 6935: 28,27 - - node: - color: '#52B4E9FF' - id: BrickTileWhiteLineN - decals: - 2695: 8,33 - 2696: 9,33 - 2697: 10,33 - - node: - color: '#9FED5896' - id: BrickTileWhiteLineN - decals: - 6945: 25,24 - - node: - color: '#A4610696' - id: BrickTileWhiteLineN - decals: - 6944: 28,24 - - node: - color: '#A46106FF' - id: BrickTileWhiteLineN - decals: - 718: -38,1 - 750: -45,-7 - - node: - color: '#D381C9FF' - id: BrickTileWhiteLineN - decals: - 30: -6,-2 - 31: -5,-2 - 32: -4,-2 - 33: -3,-2 - 34: -2,-2 - 35: -7,2 - 36: -8,2 - 37: -9,2 - 38: -11,-2 - 39: -12,-2 - 40: -13,-2 - 50: -9,-4 - 51: -10,-4 - 52: -11,-4 - 53: -12,-4 - 54: -13,-4 - 55: -14,-4 - 83: -4,-3 - - node: - color: '#DE3A3A96' - id: BrickTileWhiteLineN - decals: - 6933: 26,27 - - node: - color: '#DE3A3AFF' - id: BrickTileWhiteLineN - decals: - 3343: -43,65 - - node: - color: '#EFB34196' - id: BrickTileWhiteLineN - decals: - 6934: 27,27 - - node: - color: '#EFB341FF' - id: BrickTileWhiteLineN - decals: - 4205: -74,17 - 4206: -73,17 - 4207: -72,17 - 4216: -67,31 - 4226: -71,31 - 4227: -72,31 - - node: - color: '#334E6DFF' - id: BrickTileWhiteLineS - decals: - 2167: -12,53 - 2168: -11,53 - 2169: -10,53 - 2170: -9,53 - 2178: -19,62 - 2179: -18,62 - 2180: -17,62 - 2181: -16,62 - 2182: -15,62 - - node: - color: '#9FED5896' - id: BrickTileWhiteLineS - decals: - 6949: 25,27 - - node: - color: '#A46106FF' - id: BrickTileWhiteLineS - decals: - 717: -38,0 - 749: -45,-8 - - node: - color: '#D381C996' - id: BrickTileWhiteLineS - decals: - 6950: 28,27 - - node: - color: '#D381C9FF' - id: BrickTileWhiteLineS - decals: - 20: -8,-3 - 21: -6,-6 - 22: -5,-6 - 23: -4,-6 - 82: -4,-4 - - node: - color: '#DE3A3AFF' - id: BrickTileWhiteLineS - decals: - 3347: -43,61 - - node: - color: '#EFB341FF' - id: BrickTileWhiteLineS - decals: - 4203: -72,15 - 4217: -67,25 - 4218: -66,25 - 4219: -65,25 - 7292: -74,15 - 7293: -73,15 - - node: - color: '#334E6DFF' - id: BrickTileWhiteLineW - decals: - 2171: -13,54 - 2172: -13,55 - 2173: -13,56 - 2183: -14,59 - 2184: -14,60 - 2185: -14,61 - - node: - color: '#52B4E9FF' - id: BrickTileWhiteLineW - decals: - 7331: -14,14 - 7332: -14,13 - 7333: -14,12 - - node: - color: '#9FED5896' - id: BrickTileWhiteLineW - decals: - 6953: 26,26 - 6954: 26,25 - - node: - color: '#9FED58FF' - id: BrickTileWhiteLineW - decals: - 2642: 6,12 - 2643: 8,12 - 2644: 10,12 - - node: - color: '#D381C9FF' - id: BrickTileWhiteLineW - decals: - 14: -14,-3 - 15: -7,-4 - 16: -7,-5 - 17: -10,0 - 18: -10,1 - 19: -10,-1 - - node: - color: '#DE3A3AFF' - id: BrickTileWhiteLineW - decals: - 3348: -44,62 - 3349: -44,63 - 3350: -44,64 - 7326: -14,8 - 7327: -14,9 - 7328: -14,10 - - node: - color: '#EFB341FF' - id: BrickTileWhiteLineW - decals: - 4204: -75,16 - 4220: -68,26 - 4221: -68,27 - 4222: -68,28 - 4223: -68,29 - 4224: -68,30 - - node: - color: '#FFFFFFFF' - id: Bushb1 - decals: - 7311: 17,37 - 7312: 22,37 - 7313: 19,40 - - node: - color: '#FFFFFFFF' - id: Bushc3 - decals: - 7309: 21,43 - 7310: 23,43 - - node: - color: '#FFFFFFFF' - id: Bushf2 - decals: - 7308: 21,40 - - node: - color: '#FFFFFFFF' - id: Bushh2 - decals: - 7307: 21,38 - - node: - color: '#FFFFFFFF' - id: Bushi3 - decals: - 7305: 17,40 - 7306: 18,41 - - node: - color: '#DE3A3A96' - id: CheckerNWSE - decals: - 3416: -57,57 - 3417: -57,56 - 3418: -57,55 - 3419: -57,54 - 3420: -56,54 - 3421: -56,55 - 3422: -56,56 - 3423: -56,57 - 3424: -55,57 - 3425: -55,56 - 3426: -55,55 - 3427: -55,54 - 3428: -54,54 - 3429: -54,55 - 3430: -54,56 - 3431: -54,57 - 3432: -53,57 - 3433: -53,56 - 3434: -53,55 - 3435: -53,54 - 3436: -52,54 - 3437: -52,55 - 3438: -52,56 - 3439: -52,57 - 3444: -58,58 - 3445: -57,58 - 3446: -56,58 - 3447: -55,58 - 3448: -54,58 - 3449: -53,58 - 3450: -52,58 - 3451: -51,58 - 3452: -51,57 - 3453: -51,56 - 3454: -51,55 - 3455: -51,54 - 3456: -51,53 - 3457: -52,53 - 3458: -53,53 - 3459: -54,53 - 3460: -55,53 - 3461: -56,53 - 3462: -57,53 - 3463: -58,53 - 3464: -58,54 - 3465: -58,55 - 3466: -58,56 - 3467: -58,57 - - node: - color: '#FF00FFFF' - id: CheckerNWSE - decals: - 693: -30,-13 - 694: -30,-12 - 695: -30,-11 - 696: -29,-11 - 697: -29,-12 - 698: -29,-13 - 699: -28,-13 - 700: -28,-12 - 701: -28,-11 - - node: - cleanable: True - color: '#0000008F' - id: Damaged - decals: - 7776: 26,16 - 7777: 19,6 - 7778: 15,6 - 7779: 16,6 - 7780: 11,3 - 7781: 11,3 - - node: - color: '#FFFFFFFF' - id: Dirt - decals: - 7299: -55,7 - 7300: -54,7 - 7301: -53,7 - 7302: -50,7 - 7303: -48,7 - 7304: -47,7 - - node: - cleanable: True - color: '#FFFFFFFF' - id: Dirt - decals: - 4577: -68,44 - 7347: -13,55 - 7348: -13,55 - 7349: -13,55 - 7350: -13,56 - 7351: -9,57 - 7352: -9,56 - 7353: -10,56 - 7354: -12,56 - 7355: -10,54 - 7356: -9,53 - 7357: -8,54 - 7358: -8,53 - 7359: -15,53 - 7360: -15,54 - 7361: -16,55 - 7362: -16,54 - 7363: -17,55 - 7364: -19,55 - 7365: -14,57 - 7366: -17,57 - 7367: -15,57 - 7368: -17,53 - 7369: -18,59 - 7370: -21,60 - 7371: -21,60 - 7372: -20,62 - 7373: -19,64 - 7374: -17,62 - 7375: -19,61 - 7376: -17,62 - 7377: -17,61 - 7378: -16,60 - 7379: -17,60 - 7380: -16,60 - 7381: -16,59 - 7382: -15,60 - 7383: -18,60 - 7384: -15,59 - 7385: -16,61 - 7386: -17,59 - 7387: -18,61 - 7388: -19,59 - 7389: -19,60 - 7390: -20,59 - 7391: -20,60 - 7392: -20,61 - 7393: -15,64 - 7394: -16,64 - 7395: -16,62 - 7396: -18,65 - 7397: -18,51 - 7398: -16,51 - 7399: -17,50 - 7400: -17,49 - 7401: -17,48 - 7402: -16,47 - 7403: -16,46 - 7404: -17,46 - 7405: -17,44 - 7406: -18,42 - 7407: -16,39 - 7408: -17,40 - 7409: -17,39 - 7410: -16,38 - 7411: -16,35 - 7412: -17,36 - 7413: -17,35 - 7414: -18,34 - 7415: -17,34 - 7416: -16,34 - 7417: -17,33 - 7418: -18,31 - 7419: -19,31 - 7420: -20,31 - 7421: -21,31 - 7422: -24,31 - 7423: -25,31 - 7424: -25,32 - 7425: -26,31 - 7426: -27,31 - 7427: -23,31 - 7428: -25,32 - 7429: -24,32 - 7430: -23,34 - 7431: -25,33 - 7432: -25,34 - 7433: -26,33 - 7434: -20,38 - 7435: -20,37 - 7436: -22,38 - 7437: -21,40 - 7438: -23,40 - 7439: -22,41 - 7440: -21,42 - 7441: -22,39 - 7442: -21,44 - 7443: -21,45 - 7444: -20,45 - 7445: -20,44 - 7446: -22,44 - 7447: -23,44 - 7448: -21,46 - 7449: -20,46 - 7450: -20,47 - 7451: -21,47 - 7452: -21,48 - 7453: -22,48 - 7454: -23,48 - 7455: -20,48 - 7456: -16,40 - 7457: -15,40 - 7458: -15,37 - 7459: -8,36 - 7460: -9,37 - 7461: -4,31 - 7462: -4,30 - 7463: -2,30 - 7464: -1,30 - 7465: 3,26 - 7466: 3,27 - 7467: 3,24 - 7468: 3,23 - 7469: 3,21 - 7470: 3,20 - 7471: 3,28 - 7472: 2,27 - 7473: 2,19 - 7474: 3,16 - 7475: 3,17 - 7476: 1,16 - 7477: -1,16 - 7478: 0,15 - 7479: 2,15 - 7480: 3,14 - 7481: 9,15 - 7482: 8,15 - 7483: 9,16 - 7484: 10,16 - 7485: 9,17 - 7486: 10,18 - 7487: 10,19 - 7488: 9,22 - 7489: 7,22 - 7490: 6,22 - 7491: 6,23 - 7492: 6,24 - 7493: 6,26 - 7494: 7,26 - 7495: 8,26 - 7496: 8,25 - 7497: 7,28 - 7498: 7,29 - 7499: 7,29 - 7500: 9,29 - 7501: 10,30 - 7502: 11,30 - 7503: 11,29 - 7504: 9,30 - 7505: 9,31 - 7506: 2,29 - 7507: 2,30 - 7508: 3,29 - 7509: 5,30 - 7510: 5,29 - 7511: 3,32 - 7512: 2,32 - 7513: 0,33 - 7514: -1,32 - 7515: -7,31 - 7516: -9,31 - 7517: -8,32 - 7518: -8,33 - 7519: -10,33 - 7520: -12,32 - 7521: -11,31 - 7522: -12,31 - 7523: -12,29 - 7524: -14,30 - 7525: -14,30 - 7526: -13,31 - 7527: -14,31 - 7528: -15,32 - 7529: -15,31 - 7530: -15,33 - 7531: -42,36 - 7532: -42,38 - 7533: -43,38 - 7534: -45,37 - 7535: -44,37 - 7536: -44,36 - 7537: -39,35 - 7538: -40,36 - 7539: -40,37 - 7540: -40,38 - 7541: -38,39 - 7542: -36,36 - 7543: -35,36 - 7544: -35,37 - 7545: -36,37 - 7546: -36,38 - 7547: -35,39 - 7548: -35,40 - 7549: -36,40 - 7550: -37,40 - 7551: -33,35 - 7552: -32,35 - 7553: -33,36 - 7554: -32,37 - 7555: -31,37 - 7556: -33,39 - 7557: -32,40 - 7558: -38,42 - 7559: -39,43 - 7560: -39,44 - 7561: -36,43 - 7562: -36,46 - 7563: -37,46 - 7564: -34,46 - 7565: -32,46 - 7566: -32,45 - 7567: -33,49 - 7568: -31,50 - 7569: -29,50 - 7570: -26,45 - 7571: -26,44 - 7572: -25,45 - 7573: -26,41 - 7574: -25,40 - 7575: -25,39 - 7576: -26,40 - 7577: -28,44 - 7578: -28,45 - 7579: -29,45 - 7580: -30,45 - 7581: -29,46 - 7582: -30,47 - 7583: -30,44 - 7584: -28,46 - 7585: -28,47 - 7586: -35,43 - 7587: -36,43 - 7588: -37,43 - 7589: -36,42 - 7590: -39,44 - 7591: -39,43 - 7592: -38,44 - 7593: -38,45 - 7594: -37,46 - 7595: -35,46 - 7596: -35,47 - 7597: -34,47 - 7598: -42,42 - 7599: -43,42 - 7600: -44,42 - 7601: -45,42 - 7602: -45,43 - 7603: -45,44 - 7604: -44,44 - 7605: -43,44 - 7606: -42,44 - 7607: -42,45 - 7608: -43,45 - 7609: -43,46 - 7610: -42,46 - 7611: -41,45 - 7612: -48,41 - 7613: -48,42 - 7614: -47,42 - 7615: -48,43 - 7616: -49,43 - 7617: -50,43 - 7618: -49,44 - 7619: -50,45 - 7620: -53,43 - 7621: -53,43 - 7622: -54,43 - 7623: -56,42 - 7624: -55,41 - 7625: -55,42 - 7626: -55,40 - 7627: -55,39 - 7628: -52,41 - 7629: -52,40 - 7630: -51,40 - 7631: -51,41 - 7632: -52,31 - 7633: -52,32 - 7634: -53,31 - 7635: -54,33 - 7636: -54,32 - 7637: -53,33 - 7638: -49,29 - 7639: -50,28 - 7640: -51,27 - 7641: -52,28 - 7642: -51,28 - 7643: -53,28 - 7644: -44,31 - 7645: -44,32 - 7646: -41,25 - 7647: -42,25 - 7648: -43,25 - 7649: -43,24 - 7650: -42,24 - 7651: -41,24 - 7652: -41,23 - 7653: -42,23 - 7654: -43,23 - 7655: -41,26 - 7656: -42,26 - 7657: -43,26 - 7658: -43,27 - 7659: -42,27 - 7660: -41,27 - 7661: -41,28 - 7662: -42,28 - 7663: -43,28 - 7664: -36,24 - 7665: -36,25 - 7666: -36,26 - 7667: -37,24 - 7668: -38,24 - 7669: -38,25 - 7670: -37,23 - 7671: -36,23 - 7672: -36,17 - 7673: -37,11 - 7674: -37,12 - 7675: -38,12 - 7676: -39,13 - 7677: -39,12 - 7678: -39,8 - 7679: -37,8 - 7680: -39,7 - 7681: -39,5 - 7682: -41,6 - 7683: -41,2 - 7684: -42,0 - 7685: -42,1 - 7686: -39,-4 - 7687: -39,-11 - 7688: -40,-12 - 7689: -41,-11 - 7690: -41,-11 - 7691: -41,-13 - 7692: -36,-7 - 7693: -36,-6 - 7694: -37,-6 - 7695: -34,-8 - 7696: -40,-6 - 7697: -39,-3 - 7698: -38,-4 - 7699: -43,-5 - 7700: -42,-5 - 7701: -42,-13 - 7702: -43,-13 - 7703: -45,-13 - 7704: -46,-11 - 7705: -45,-10 - 7706: 1,0 - 7707: 1,1 - 7708: 1,2 - 7709: 1,2 - 7710: 1,1 - 7711: 1,3 - 7712: 0,3 - 7713: 1,3 - 7714: 2,3 - 7715: 1,4 - 7716: 0,4 - 7717: 1,4 - 7718: 2,4 - 7719: 1,5 - 7720: 0,5 - 7721: -1,4 - 7722: -1,5 - 7723: 0,6 - 7724: -3,6 - 7725: -4,5 - 7726: -5,5 - 7727: 24,11 - 7728: 24,12 - 7729: 24,12 - 7730: 23,12 - 7731: 23,13 - 7732: 23,13 - 7733: 24,14 - 7734: 23,16 - 7735: 23,17 - 7736: 24,18 - 7737: 24,15 - 7738: 23,14 - 7739: 22,16 - 7740: 22,18 - 7741: 23,19 - 7742: 23,13 - 7782: 11,3 - 7783: 10,3 - 7784: 11,2 - 7785: 10,2 - 7786: 11,4 - 7787: 9,4 - 7788: 8,5 - 7789: 8,6 - 7790: 7,6 - 7791: 5,6 - 7792: 3,6 - 7793: 1,6 - 7794: -1,5 - 7795: -4,5 - 7796: -7,6 - 7797: -9,5 - 7798: -12,5 - 7799: -12,4 - 7800: -17,5 - 7801: -19,4 - 7802: -21,4 - 7803: -24,6 - 7804: -26,5 - 7805: -28,6 - 7806: -28,4 - 7807: -27,4 - 7808: -28,5 - 7809: -28,6 - 7810: -32,5 - 7811: -35,6 - 7812: -33,5 - 7813: -33,6 - 7814: -36,4 - 7815: -41,6 - 7816: -41,6 - 7817: -45,5 - 7818: -49,6 - 7819: -50,5 - 7820: -50,4 - 7821: -51,4 - 7822: -54,4 - 7823: -57,4 - 7824: -59,6 - 7825: -58,8 - 7826: -58,9 - 7827: -59,13 - 7828: -59,16 - 7829: -59,18 - 7830: -58,20 - 7831: -58,22 - 7832: -58,24 - 7833: -59,24 - 7834: -60,22 - 7835: -60,23 - 7836: -61,23 - 7837: -61,22 - 7838: -62,20 - 7839: -63,21 - 7840: -62,22 - 7841: -62,22 - 7842: -61,23 - 7843: -61,24 - 7844: -61,24 - 7845: -66,20 - 7846: -66,21 - 7847: -69,21 - 7848: -71,22 - 7849: -70,22 - 7850: -58,36 - 7851: -59,36 - 7852: -59,38 - 7853: -59,39 - 7854: -59,39 - 7855: -59,40 - 7856: -57,38 - 7857: -57,38 - 7858: -58,38 - 7859: -57,39 - 7860: -57,40 - 7861: -57,41 - 7862: -57,42 - 7863: -57,42 - 7864: -57,42 - 7865: -57,43 - 7866: -57,43 - 7867: -57,44 - 7868: -57,44 - 7869: -58,45 - 7870: -59,45 - 7871: -58,44 - 7872: -59,42 - 7873: -58,39 - 7874: -58,34 - 7875: -57,34 - 7876: -56,33 - 7877: -56,32 - 7878: -53,32 - 7879: -51,32 - 7880: -49,32 - 7881: -47,33 - 7882: -46,33 - 7883: -45,33 - 7884: -43,33 - 7885: -42,33 - 7886: -40,33 - 7887: -39,33 - 7888: -58,12 - 7889: -58,12 - 7890: -59,12 - 7891: -59,12 - 7892: -59,11 - 7893: -59,11 - 7894: -59,10 - 7895: -59,10 - 7896: -59,10 - 7897: -59,10 - 7898: -59,8 - 7899: -59,5 - 7900: -59,5 - 7901: -58,3 - 7902: -58,0 - 7903: -58,-2 - 7904: -58,-5 - 7905: -58,-7 - 7906: -65,31 - 7907: -65,31 - 7908: -65,32 - 7909: -67,33 - 7910: -66,33 - 7911: -66,33 - 7912: -66,34 - 7913: -70,34 - 7914: -72,34 - 7915: -75,33 - 7916: -75,32 - 7917: -75,28 - 7918: -75,29 - 7919: -74,32 - 7920: -74,31 - 7921: -74,33 - 7922: -64,20 - 7923: -64,19 - 7924: -65,19 - 7925: -64,21 - 7926: -64,22 - 7927: -64,23 - 7928: -65,23 - 7929: -67,23 - 7930: -70,23 - 7931: -72,23 - 7932: -71,21 - 7933: -70,19 - 7934: -69,19 - 7935: -68,19 - 7936: -68,21 - 7937: -69,22 - 7938: -69,17 - 7939: -75,17 - 7940: -75,17 - 7941: -75,17 - 7942: -74,17 - 7943: -74,17 - 7944: -74,18 - 7945: -75,18 - 7946: -79,19 - 7947: -81,20 - 7948: -82,20 - 7949: -82,24 - 7950: -83,24 - 7951: -84,24 - 7952: -82,26 - 7953: -82,25 - 7954: -80,25 - 7955: -79,25 - 7956: -79,24 - 7957: -77,26 - 7958: -77,24 - 7959: -74,25 - 7960: -75,21 - 7961: -74,21 - 7962: -81,33 - 7963: -82,32 - 7964: -83,32 - 7965: -81,32 - 7966: -80,31 - 7967: -80,30 - 7968: -3,31 - 7969: -3,32 - 7970: -2,31 - 7975: 0,29 - 7976: 0,30 - 7977: -2,29 - 7978: -5,30 - 7979: 8,30 - 7980: -34,-3 - 7981: -35,-3 - 7982: -35,-3 - 7983: -34,-4 - 7984: -33,-4 - 7985: -33,-4 - 7986: -32,-3 - 7987: -32,-2 - 7988: -34,-2 - 7989: -35,-2 - 7990: -46,61 - 7991: -46,62 - 7992: -47,62 - 7993: -44,62 - 7994: -43,62 - 7995: -43,63 - 7996: -44,63 - 8002: -63,60 - 8003: -64,59 - 8004: -64,60 - 8005: -64,57 - 8006: -66,57 - 8007: -68,54 - 8008: -68,53 - 8009: -70,53 - 8010: -71,53 - 8011: -73,52 - 8012: -72,54 - 8013: -73,55 - - node: - color: '#FFFFFFFF' - id: DirtHeavy - decals: - 1623: -30,52 - 1624: -29,53 - 1625: -28,54 - 1626: -26,54 - 1627: -26,55 - 1628: -26,55 - 1629: -26,53 - 1630: -40,45 - 1637: -35,35 - 1638: -37,37 - 1639: -36,34 - 1640: -35,38 - 1641: -37,39 - 1642: -40,38 - 1643: -41,36 - 1644: -38,39 - 1645: -42,38 - 1646: -44,37 - 1647: -41,37 - 1648: -43,39 - 1649: -44,38 - 1650: -44,36 - 1651: -39,36 - 1652: -37,39 - 1653: -37,38 - 1654: -36,36 - 1655: -36,40 - 1656: -38,40 - 1657: -41,37 - 1658: -43,36 - 1659: -41,35 - 1660: -39,36 - 1661: -45,39 - 1662: -45,39 - 1663: -41,37 - 1664: -39,36 - 1665: -37,38 - 1666: -39,39 - 1713: -28,40 - 1714: -29,41 - 1715: -29,42 - 1716: -27,42 - 1717: -29,42 - 1718: -29,41 - 1719: -28,40 - 1720: -28,40 - 1721: -29,42 - 1722: -29,42 - 1723: -29,42 - 1724: -30,25 - 1725: -29,23 - 1726: -29,25 - 1727: -30,27 - 1728: -31,28 - 1729: -31,24 - 1730: -30,24 - 1731: -29,27 - 1732: -30,29 - 1733: -31,27 - 1734: -31,24 - 1735: -29,27 - 1736: -30,28 - 1737: -28,12 - 1738: -29,11 - 1739: -29,9 - 1740: -27,8 - 1741: -25,12 - 1742: -27,12 - 1743: -27,10 - 1744: -25,10 - 1745: -24,12 - 1746: -24,11 - 1747: -24,9 - 1748: -26,8 - 1749: -28,12 - 1750: -26,12 - 1751: -28,11 - 1752: -28,9 - 1753: -26,8 - 1754: -24,12 - 1755: -26,13 - 1756: -28,11 - 1757: -27,9 - 1758: -24,9 - 1759: -28,12 - 1760: -29,10 - 1761: -25,10 - 1762: -24,16 - 1763: -26,18 - 1764: -29,17 - 1765: -28,16 - 1766: -25,17 - 1767: -27,17 - 1768: -26,16 - 1769: -23,15 - 1770: -25,17 - 1771: -30,17 - 1772: -28,16 - 1773: -27,18 - 1774: -29,17 - 1775: -27,15 - 1776: -23,15 - 1777: -24,17 - 1778: -28,18 - 1779: -29,16 - 1780: -26,16 - 1781: -30,25 - 1782: -30,24 - 1783: -31,25 - 1784: -30,28 - 1785: -31,27 - 1786: -17,-3 - 1787: -17,-3 - 1788: -18,-5 - 1789: -17,-5 - 1790: -17,-3 - 1791: -18,-4 - 1792: -18,-5 - 1793: -16,-5 - 1794: -17,-2 - 1795: -19,-3 - 1796: -19,-5 - 1797: -17,-5 - 1798: -17,-2 - 1799: -19,-3 - 1800: -19,-9 - 1801: -18,-9 - 1802: -16,-8 - 1803: -16,-8 - 1804: -16,-9 - 1805: -18,-8 - 1806: -29,-9 - 1807: -30,-8 - 1808: -27,-6 - 1809: -28,-5 - 1810: -30,-8 - 1811: -28,-9 - 1812: -29,-6 - 1813: -29,-4 - 1814: -30,-5 - 1815: -29,-7 - 1816: -25,-9 - 1817: -25,-9 - 1818: -22,-9 - 1819: -22,-8 - 1820: -22,-8 - 1821: -21,-6 - 1822: -22,-2 - 1823: -21,0 - 1824: -19,1 - 1825: -17,1 - 1826: -30,2 - 1827: -30,1 - 1828: -29,0 - 1829: -29,-2 - 1830: -26,-2 - 1831: -27,-1 - 1832: -26,-2 - 1833: -26,1 - 1834: -27,1 - 1835: -27,2 - 1836: -26,0 - 1837: -27,1 - 1838: -27,2 - 1839: -27,0 - 1840: -27,-1 - 1841: -26,-2 - 1842: -24,-2 - 1843: -24,-2 - 1844: -24,1 - 1845: -24,2 - 1846: -26,1 - 1847: -27,1 - 1848: -26,-1 - 1849: -28,-2 - 1850: -33,-2 - 1851: -34,-2 - 1852: -36,-4 - 1853: -33,-2 - 1854: -33,-3 - 1855: -34,-4 - 1856: -33,-3 - 1857: -33,-3 - 1858: -33,-3 - 1859: -45,-3 - 1860: -45,-2 - 1861: -46,-3 - 1862: -47,-4 - 1863: -45,-5 - 1864: -44,-4 - 1865: -44,-2 - 1866: -45,-2 - 1867: -46,-3 - 1868: -46,-4 - 1869: -47,-4 - 1870: -45,-3 - 1871: -44,1 - 1872: -46,1 - 1873: -46,1 - 1874: -44,1 - 1875: -45,2 - 1876: -46,2 - 1877: -46,0 - 1878: -44,0 - 1879: -46,1 - 1880: -46,2 - 1881: -47,1 - 1882: -47,1 - 1883: -44,1 - 1884: -45,2 - 1885: -46,1 - 1886: -45,1 - 1887: -45,0 - 1888: -46,0 - 1889: -47,1 - 1890: -52,-2 - 1891: -51,-1 - 1892: -53,-1 - 1893: -52,-3 - 1894: -51,-2 - 1895: -52,-1 - 1896: -55,-1 - 1897: -55,-2 - 1898: -53,-2 - 1899: -54,-2 - 1900: -55,-3 - 1901: -52,-1 - 1902: -53,-1 - 1903: -52,-3 - 1904: -51,-3 - 1905: -52,-7 - 1906: -52,-6 - 1907: -54,-6 - 1908: -52,-8 - 1909: -51,-5 - 1910: -53,-5 - 1911: -54,-7 - 1912: -55,-8 - 1913: -53,-8 - 1914: -51,-7 - 1915: -53,-5 - 1916: -55,-6 - 1917: -53,-7 - 1918: -53,-5 - 1919: -53,-4 - 1920: -53,46 - 1921: -53,46 - 1922: -59,36 - 1923: -59,33 - 1924: -59,32 - 2364: -36,-11 - 2619: 8,21 - 2620: 11,32 - 5513: -35,36 - 5514: -35,37 - 5515: -35,37 - 5516: -35,37 - 5517: -35,36 - 5518: -35,36 - 5519: -35,35 - 5520: -35,35 - 5521: -35,36 - 5522: -35,36 - 6886: -1,43 - 6887: -1,42 - 6888: 0,42 - 6889: 0,43 - 6890: 0,43 - 6891: 1,42 - 6892: 1,42 - 6893: 2,43 - 6894: 2,44 - 6895: 3,44 - 6896: 4,44 - 6897: 4,43 - 6898: 4,42 - 6899: 4,43 - 6900: 3,43 - 6901: 3,42 - 6902: 2,42 - 6903: 2,43 - 6904: 0,43 - 6905: 0,43 - 6921: 18,45 - 6922: 18,46 - 6924: 10,52 - 6925: 11,52 - 6926: 11,52 - 6927: 11,51 - 6928: 10,52 - 6929: 17,46 - 6930: 17,46 - 6931: 17,46 - 6956: 25,26 - 6957: 25,25 - 6958: 26,25 - 6959: 26,26 - 6960: 27,26 - 6961: 28,25 - 6962: 28,25 - 6963: 28,26 - 6964: 27,27 - 6965: 26,27 - 6966: 25,27 - 6967: 26,27 - 6968: 28,27 - 6969: 28,28 - 6970: 26,28 - 6971: 25,28 - 6972: 26,28 - 6973: 27,28 - 6974: 27,28 - 7005: -60,-10 - 7006: -60,-11 - 7007: -59,-12 - 7008: -59,-12 - 7009: -58,-12 - 7010: -59,-12 - 7011: -61,-12 - 7012: -61,-10 - 7013: -62,-10 - 7014: -63,-11 - 7015: -61,-12 - 7016: -61,-11 - 7017: -62,-11 - 7018: -63,-11 - 7019: -62,-12 - 7020: -63,-10 - 7021: -64,-10 - 7022: -64,-11 - 7023: -64,-12 - 7024: -64,-12 - 7025: -65,-11 - 7026: -66,-11 - 7027: -65,-11 - 7028: -66,-11 - 7029: -67,-11 - 7030: -67,-11 - 7031: -66,-12 - 7032: -65,-12 - 7033: -66,-10 - 7034: -68,-10 - 7035: -69,-11 - 7036: -69,-12 - 7037: -68,-11 - 7038: -67,-10 - 7039: -66,-10 - 7040: -65,-10 - 7041: -67,-11 - 7042: -67,-12 - 7043: -68,-11 - 7044: -69,-10 - 7045: -70,-11 - 7046: -70,-12 - 7047: -71,-12 - 7048: -71,-11 - 7049: -71,-10 - 7050: -72,-10 - 7051: -73,-11 - 7052: -73,-12 - 7053: -72,-12 - 7054: -72,-11 - 7055: -75,-10 - 7056: -76,-10 - 7057: -75,-11 - 7058: -74,-12 - 7059: -73,-11 - 7060: -73,-10 - 7061: -74,-11 - 7062: -75,-12 - 7063: -76,-11 - 7064: -75,-11 - 7065: -74,-11 - 7066: -72,-11 - 7067: -71,-10 - 7068: -68,-11 - 7069: -67,-12 - 7070: -67,-12 - 7071: -68,-12 - 7072: -76,-12 - 7073: -62,-12 - 7074: -62,-12 - 7075: -63,-12 - 7076: -67,-10 - 7077: -68,-10 - 7078: -69,-10 - 7079: -70,-10 - 7080: -73,-10 - 7081: -74,-10 - 7113: -67,-14 - 7114: -67,-14 - 7115: -65,-14 - 7116: -65,-15 - 7117: -65,-15 - 7118: -73,-14 - 7119: -73,-15 - 7120: -75,-14 - 7121: -75,-14 - 7122: -75,-15 - 7123: -78,-11 - 7124: -78,-11 - 7125: -77,-11 - 7126: -79,-11 - 7127: -75,-13 - 7128: -73,-13 - 7129: -67,-13 - 7130: -67,-13 - 7131: -64,-13 - 7132: -65,-13 - 7133: -75,-13 - 7134: -75,-16 - 7135: -73,-16 - 7136: -67,-16 - 7137: -73,-16 - 7138: -65,-16 - 7139: -74,-9 - 7140: -74,-9 - 7141: -74,-8 - 7142: -74,-9 - 7143: -67,-9 - 7144: -67,-8 - 7145: -67,-9 - 7146: -74,3 - 7147: -74,3 - 7148: -74,2 - 7149: -67,3 - 7150: -67,3 - 7151: -67,2 - 7152: -67,2 - - node: - cleanable: True - color: '#FFFFFFFF' - id: DirtHeavy - decals: - 160: 27,23 - 161: 26,24 - 162: 27,24 - 163: 25,24 - 164: 27,21 - 165: 26,20 - 166: 26,18 - 167: 27,17 - 168: 28,17 - 169: 27,18 - 170: 25,18 - 171: 25,17 - 172: 26,16 - 173: 27,16 - 174: 27,17 - 175: 26,17 - 176: 27,16 - 177: 27,15 - 178: 27,14 - 179: 27,13 - 180: 26,12 - 181: 26,12 - 182: 25,11 - 183: 27,11 - 184: 27,10 - 185: 28,9 - 186: 27,8 - 187: 26,8 - 188: 25,8 - 189: 26,7 - 190: 27,5 - 191: 28,6 - 192: 27,6 - 193: 26,6 - 194: 23,6 - 195: 21,5 - 196: 21,4 - 197: 22,4 - 198: 21,5 - 199: 19,5 - 200: 17,6 - 201: 16,5 - 202: 16,5 - 203: 16,6 - 204: 14,6 - 205: 12,6 - 206: 11,5 - 207: 12,5 - 208: 12,6 - 209: 9,6 - 210: 9,4 - 211: 10,4 - 212: 10,3 - 213: 11,2 - 214: 9,4 - 215: 8,5 - 216: 6,5 - 217: 6,6 - 218: 5,5 - 219: 5,4 - 220: 5,6 - 221: 2,5 - 222: 1,5 - 223: 1,5 - 224: -1,5 - 225: -1,4 - 226: -1,6 - 227: -2,6 - 228: -4,5 - 229: -5,4 - 230: -7,5 - 231: -6,6 - 232: -5,7 - 233: -6,6 - 234: -6,5 - 235: -8,5 - 236: -9,6 - 237: -10,6 - 238: -11,5 - 239: -12,4 - 240: -14,5 - 241: -13,6 - 242: -13,6 - 243: -13,4 - 244: -12,2 - 245: -12,0 - 246: -12,0 - 247: -13,2 - 248: -13,2 - 249: -12,1 - 250: -13,0 - 251: -12,1 - 252: -9,-1 - 253: -7,-2 - 254: -7,-1 - 255: -8,0 - 256: -9,-1 - 257: -10,-2 - 296: -8,-13 - 297: -8,-12 - 298: -10,-12 - 299: -7,-14 - 300: -6,-13 - 301: -4,-12 - 302: -3,-12 - 303: -2,-10 - 304: 3,-10 - 305: 1,-11 - 306: 0,-9 - 392: 1,-2 - 393: 2,-1 - 394: 2,-2 - 395: 1,-2 - 396: 1,-1 - 397: 2,-1 - 399: -13,8 - 400: -12,8 - 401: -12,10 - 402: -13,10 - 403: -14,11 - 404: -16,8 - 405: -17,8 - 406: -17,10 - 407: -18,10 - 408: -18,9 - 455: -12,18 - 456: -13,19 - 457: -14,20 - 458: -13,22 - 459: -12,23 - 460: -12,24 - 461: -14,26 - 462: -13,27 - 463: -12,28 - 464: -13,28 - 465: -14,28 - 466: -13,26 - 467: -12,25 - 468: -13,29 - 469: -14,32 - 470: -12,28 - 471: -12,30 - 472: -13,32 - 473: -15,32 - 474: -15,31 - 475: -13,30 - 476: -13,29 - 477: -12,32 - 478: -12,33 - 479: -13,33 - 480: -10,31 - 481: -9,32 - 482: -9,32 - 483: -8,33 - 484: -8,32 - 485: -8,31 - 486: -9,32 - 487: -10,32 - 488: -10,32 - 500: 0,29 - 501: -1,30 - 502: -3,30 - 503: -4,31 - 504: -4,32 - 505: -3,33 - 506: -4,32 - 507: -5,32 - 508: 0,33 - 509: -1,33 - 510: -1,34 - 511: -4,25 - 512: -4,26 - 513: -2,26 - 514: -1,26 - 515: -1,27 - 516: -4,27 - 517: -5,26 - 518: -4,24 - 519: -2,23 - 520: -3,22 - 521: -3,20 - 522: -4,19 - 523: -2,19 - 524: -2,20 - 537: -2,7 - 574: 13,-8 - 575: 13,-9 - 576: 14,-9 - 577: 15,-8 - 578: 15,-8 - 579: 14,-10 - 580: 15,-11 - 581: 13,-11 - 582: 13,-12 - 583: 14,-12 - 584: 19,-2 - 585: 20,-3 - 586: 20,-2 - 587: 21,-1 - 588: 20,-2 - 603: 19,1 - 604: 19,1 - 605: 20,1 - 606: 26,1 - 607: 26,2 - 608: 26,2 - 609: 25,2 - 610: 27,3 - 611: 28,3 - 612: 29,1 - 613: 27,1 - 614: 28,2 - 615: 29,3 - 616: 26,1 - 617: 25,2 - 618: 26,2 - 619: 27,3 - 620: 28,3 - 621: 29,3 - 622: 29,3 - 623: 11,-2 - 624: -3,-5 - 625: -5,-5 - 626: -5,-6 - 627: -6,-6 - 628: -7,-5 - 629: -6,-4 - 630: -10,-5 - 631: -9,-5 - 632: -9,-4 - 633: -9,-5 - 634: -13,-8 - 635: -12,-8 - 636: -13,-9 - 637: -14,-9 - 638: -14,-9 - 639: -13,-8 - 640: -12,-9 - 641: -14,-13 - 642: -15,-13 - 643: -16,-15 - 644: -16,-15 - 645: -16,-15 - 646: -16,-14 - 647: -9,30 - 648: -7,28 - 649: -8,27 - 650: -10,27 - 651: -10,27 - 652: -17,29 - 653: -16,29 - 654: -16,28 - 655: -16,27 - 656: -17,27 - 657: -18,29 - 658: -18,29 - 751: -45,-7 - 752: -46,-7 - 753: -45,-8 - 754: -44,-8 - 840: -39,1 - 841: -38,0 - 842: -37,1 - 843: -38,4 - 844: -37,6 - 845: -34,6 - 846: -37,7 - 847: -40,6 - 848: -41,5 - 849: -40,4 - 850: -37,4 - 851: -34,3 - 852: -32,1 - 853: -34,1 - 854: -35,1 - 855: -35,1 - 856: -33,0 - 857: -32,0 - 987: -37,9 - 988: -38,9 - 989: -38,9 - 990: -39,11 - 991: -39,12 - 992: -39,14 - 993: -38,15 - 994: -37,16 - 995: -38,17 - 996: -38,19 - 997: -39,19 - 998: -38,20 - 999: -38,21 - 1000: -39,18 - 1001: -39,17 - 1002: -37,21 - 1003: -37,23 - 1004: -39,24 - 1005: -39,23 - 1006: -37,22 - 1007: -37,26 - 1008: -38,27 - 1009: -39,25 - 1010: -38,25 - 1011: -38,29 - 1012: -39,29 - 1013: -38,27 - 1014: -38,27 - 1015: -37,27 - 1016: -37,27 - 1017: -34,25 - 1018: -32,26 - 1019: -33,28 - 1020: -35,28 - 1021: -35,25 - 1022: -33,25 - 1023: -32,27 - 1024: -34,28 - 1025: -35,28 - 1026: -33,26 - 1027: -34,25 - 1028: -35,28 - 1029: -27,28 - 1030: -26,28 - 1031: -25,28 - 1032: -26,27 - 1033: -24,28 - 1034: -23,28 - 1035: -26,28 - 1036: -24,26 - 1037: -23,26 - 1038: -24,27 - 1039: -26,28 - 1040: -24,27 - 1041: -18,33 - 1042: -17,31 - 1043: -15,32 - 1044: -16,33 - 1045: -20,32 - 1046: -19,32 - 1047: -19,32 - 1048: -21,33 - 1049: -22,32 - 1050: -21,32 - 1051: -23,33 - 1052: -27,33 - 1053: -28,33 - 1054: -29,32 - 1055: -27,32 - 1056: -29,33 - 1057: -31,32 - 1058: -29,31 - 1059: -30,32 - 1060: -32,32 - 1061: -32,31 - 1062: -32,32 - 1063: -34,32 - 1064: -35,31 - 1065: -38,32 - 1066: -38,33 - 1067: -40,32 - 1068: -39,31 - 1069: -40,32 - 1070: -43,32 - 1071: -42,31 - 1072: -42,30 - 1073: -43,32 - 1074: -45,32 - 1075: -42,31 - 1076: -42,32 - 1077: -45,31 - 1078: -46,30 - 1079: -44,30 - 1080: -45,32 - 1081: -47,33 - 1082: -48,33 - 1083: -50,32 - 1084: -49,31 - 1085: -48,32 - 1086: -50,33 - 1087: -51,32 - 1088: -50,31 - 1089: -51,32 - 1090: -53,33 - 1091: -52,33 - 1092: -53,32 - 1093: -54,31 - 1094: -56,33 - 1095: -56,32 - 1096: -53,32 - 1097: -52,31 - 1098: -54,31 - 1099: -57,33 - 1100: -58,32 - 1101: -57,33 - 1102: -59,32 - 1103: -58,30 - 1104: -57,29 - 1105: -57,29 - 1106: -58,29 - 1107: -59,27 - 1108: -58,25 - 1109: -57,26 - 1110: -57,28 - 1111: -58,27 - 1112: -58,23 - 1113: -58,20 - 1114: -57,20 - 1115: -57,22 - 1116: -57,23 - 1117: -59,21 - 1118: -58,20 - 1119: -57,20 - 1120: -57,21 - 1121: -58,20 - 1122: -59,18 - 1123: -58,17 - 1124: -58,16 - 1125: -57,17 - 1126: -57,19 - 1127: -58,18 - 1128: -59,16 - 1129: -58,14 - 1130: -58,14 - 1131: -54,19 - 1132: -54,20 - 1133: -55,19 - 1134: -54,18 - 1135: -53,19 - 1136: -54,20 - 1137: -59,14 - 1138: -58,13 - 1139: -57,12 - 1140: -58,11 - 1141: -58,13 - 1142: -58,11 - 1143: -59,10 - 1144: -58,12 - 1145: -58,11 - 1146: -57,8 - 1147: -58,7 - 1148: -58,7 - 1149: -57,9 - 1150: -58,9 - 1151: -58,5 - 1152: -58,4 - 1153: -58,4 - 1154: -57,5 - 1155: -59,6 - 1156: -58,3 - 1157: -57,1 - 1158: -58,-1 - 1159: -57,-2 - 1160: -58,1 - 1161: -58,2 - 1162: -59,0 - 1163: -58,-1 - 1164: -58,-3 - 1165: -58,-4 - 1166: -57,-4 - 1167: -59,-4 - 1168: -58,-4 - 1169: -57,-2 - 1170: -59,-3 - 1171: -58,-5 - 1172: -58,-7 - 1173: -57,-6 - 1174: -58,-5 - 1175: -59,-7 - 1176: -59,-8 - 1177: -57,-9 - 1178: -57,-9 - 1179: -58,-10 - 1180: -59,-10 - 1181: -75,5 - 1182: -75,5 - 1183: -73,5 - 1184: -72,5 - 1185: -70,6 - 1186: -71,5 - 1187: -75,5 - 1188: -73,5 - 1189: -73,6 - 1190: -75,6 - 1191: -74,4 - 1192: -70,4 - 1193: -68,5 - 1194: -67,5 - 1195: -75,5 - 1196: -74,4 - 1197: -71,5 - 1198: -66,6 - 1199: -64,6 - 1200: -66,5 - 1201: -62,4 - 1202: -61,5 - 1203: -64,5 - 1204: -66,5 - 1205: -62,5 - 1206: -68,4 - 1207: -67,6 - 1208: -54,5 - 1209: -56,6 - 1210: -53,6 - 1211: -51,6 - 1212: -50,5 - 1213: -49,4 - 1214: -46,5 - 1215: -44,5 - 1216: -45,6 - 1217: -49,6 - 1218: -47,5 - 1219: -44,4 - 1220: -45,5 - 1221: -46,5 - 1222: -55,28 - 1223: -54,27 - 1224: -51,28 - 1225: -49,28 - 1226: -51,29 - 1227: -53,28 - 1228: -52,27 - 1229: -49,27 - 1230: -50,29 - 1231: -52,29 - 1232: -54,28 - 1233: -54,28 - 1234: -50,27 - 1235: -49,27 - 1236: -50,29 - 1442: -42,10 - 1443: -43,10 - 1444: -42,9 - 1445: -41,8 - 1446: -41,11 - 1447: -43,11 - 1932: -59,31 - 1933: -22,35 - 1934: -20,35 - 1935: -19,35 - 1936: -19,35 - 1937: -22,35 - 1938: -23,35 - 1939: -20,35 - 1940: -16,36 - 1941: -16,37 - 1942: -17,37 - 1943: -18,35 - 1944: -16,36 - 1945: -17,38 - 1946: -18,38 - 1947: -18,36 - 1948: -16,37 - 1949: -17,40 - 1950: -18,39 - 1951: -17,38 - 1952: -17,42 - 1953: -18,41 - 1954: -17,39 - 1955: -16,42 - 1956: -17,43 - 1957: -17,41 - 1958: -16,44 - 1959: -17,45 - 1960: -18,43 - 1961: -16,45 - 1962: -17,47 - 1963: -17,45 - 1964: -16,48 - 1965: -18,49 - 1966: -17,47 - 1967: -16,49 - 1968: -18,49 - 1969: -18,47 - 1970: -16,50 - 1971: -18,49 - 1972: -16,50 - 1973: -17,50 - 1974: -17,46 - 1975: -18,45 - 1976: -17,45 - 1977: -18,47 - 1978: -17,45 - 1979: -15,47 - 1980: -16,47 - 1981: -16,45 - 1982: -14,48 - 1983: -14,48 - 1984: -13,47 - 1985: -12,48 - 1986: -13,47 - 1987: -11,48 - 1988: -13,48 - 1989: -12,46 - 1990: -11,47 - 1991: -12,48 - 1992: -13,49 - 1993: -13,47 - 1994: -12,47 - 1995: -12,47 - 2093: -22,40 - 2094: -21,41 - 2095: -22,42 - 2096: -23,42 - 2097: -23,40 - 2098: -21,39 - 2099: -20,38 - 2100: -21,38 - 2101: -22,40 - 2102: -23,39 - 2103: -23,39 - 2104: -22,41 - 2105: -23,41 - 2106: -22,40 - 2107: -22,38 - 2108: -23,38 - 2109: -23,37 - 2110: -22,37 - 2111: -21,39 - 2112: -22,39 - 2113: -21,37 - 2114: -20,39 - 2115: -21,41 - 2116: -23,42 - 2117: -22,39 - 2118: -21,39 - 2119: -21,42 - 2120: -20,42 - 2121: -22,42 - 2122: -21,41 - 2123: -20,44 - 2124: -20,45 - 2125: -21,46 - 2126: -20,48 - 2127: -22,48 - 2128: -22,46 - 2129: -20,45 - 2130: -22,44 - 2131: -22,48 - 2132: -22,48 - 2133: -23,45 - 2134: -22,44 - 2135: -21,44 - 2136: -20,46 - 2137: -21,48 - 2138: -23,48 - 2139: -23,46 - 2140: -21,44 - 2141: -21,44 - 2142: -22,45 - 2143: -20,47 - 2144: -22,48 - 2145: -22,46 - 2146: -22,44 - 2147: -20,44 - 2148: -21,48 - 2149: -22,48 - 2150: -23,47 - 2151: -22,44 - 2195: -17,53 - 2196: -18,53 - 2197: -19,53 - 2198: -19,56 - 2199: -19,57 - 2200: -19,57 - 2201: -15,57 - 2202: -15,55 - 2203: -15,54 - 2204: -16,53 - 2205: -18,53 - 2206: -12,55 - 2207: -13,54 - 2208: -12,53 - 2209: -11,53 - 2210: -10,55 - 2211: -12,56 - 2212: -12,54 - 2213: -11,54 - 2214: -9,54 - 2215: -7,54 - 2216: -9,53 - 2217: -10,53 - 2218: -10,56 - 2219: -12,55 - 2220: -11,54 - 2221: -8,54 - 2222: -12,57 - 2223: -13,57 - 2224: -11,56 - 2225: -11,57 - 2226: -12,57 - 2227: -6,59 - 2228: -6,58 - 2229: -6,60 - 2230: -6,60 - 2231: -12,59 - 2232: -13,59 - 2233: -13,60 - 2234: -13,62 - 2235: -14,60 - 2236: -13,60 - 2237: -13,62 - 2238: -14,63 - 2239: -15,63 - 2240: -14,63 - 2241: -15,63 - 2242: -16,62 - 2243: -15,62 - 2244: -15,64 - 2245: -17,64 - 2246: -17,63 - 2247: -16,63 - 2248: -17,65 - 2249: -19,64 - 2250: -20,63 - 2251: -17,64 - 2252: -17,66 - 2253: -19,65 - 2254: -20,63 - 2255: -21,62 - 2256: -20,63 - 2257: -21,61 - 2258: -20,60 - 2259: -22,60 - 2260: -20,62 - 2261: -19,63 - 2262: -18,64 - 2263: -19,65 - 2264: -19,65 - 2265: -17,66 - 2266: -15,65 - 2267: -14,64 - 2268: -14,64 - 2269: -19,64 - 2270: -22,63 - 2271: -22,62 - 2272: -22,60 - 2273: -22,59 - 2274: -20,59 - 2275: -19,63 - 2276: -17,64 - 2277: -15,62 - 2278: -19,60 - 2279: -19,59 - 2280: -18,61 - 2281: -15,59 - 2362: -36,-9 - 2423: -41,-8 - 2424: -41,-8 - 2425: -42,-7 - 2426: -41,-5 - 2427: -41,-4 - 2428: -40,-3 - 2429: -38,-5 - 2430: -38,-7 - 2431: -40,-7 - 2432: -41,-4 - 2433: -38,-3 - 2434: -38,-2 - 2435: -41,-3 - 2436: -40,-5 - 2437: -38,-7 - 2438: -37,-7 - 2439: -38,-4 - 2440: -38,-4 - 2441: -39,-5 - 2442: -35,-8 - 2443: -33,-7 - 2444: -33,-6 - 2445: -35,-7 - 2446: -34,-9 - 2447: -33,-8 - 2448: -34,-7 - 2449: -33,-10 - 2450: -33,-9 - 2451: -37,-7 - 2452: -38,-7 - 2453: -35,-7 - 2454: -37,-7 - 2455: -38,-8 - 2456: -40,-7 - 2457: -41,-5 - 2458: -41,-4 - 2459: -41,-5 - 2460: -41,-7 - 2461: -40,-7 - 2462: -39,-4 - 2463: -41,-7 - 2464: -42,-7 - 2465: -42,-8 - 2466: -42,-6 - 2467: -42,-3 - 2468: -42,-2 - 2469: -40,-2 - 2470: -38,-2 - 2471: -37,-2 - 2472: -37,-3 - 2473: -37,-5 - 2474: -34,-6 - 2475: -32,-7 - 2476: -32,-8 - 2477: -33,-11 - 2478: -32,-11 - 2479: -33,-11 - 2480: -35,-11 - 2481: -35,-10 - 2482: -35,-9 - 2483: -36,-10 - 2484: -36,-11 - 2485: -37,-8 - 2486: -37,-8 - 2487: -38,-8 - 2488: -40,-8 - 2803: 6,12 - 2804: 6,11 - 2805: 7,11 - 2806: 7,12 - 2807: 6,13 - 2808: 7,14 - 2809: 9,15 - 2810: 10,15 - 2811: 8,15 - 2812: 7,14 - 2813: 9,14 - 2814: 10,15 - 2815: 9,17 - 2816: 7,15 - 2817: 6,14 - 2818: 9,14 - 2819: 11,16 - 2820: 10,19 - 2821: 10,20 - 2822: 9,19 - 2823: 10,18 - 2824: 11,18 - 2825: 10,20 - 2826: 10,17 - 2827: 8,15 - 2828: 7,15 - 2829: 7,13 - 2830: 8,12 - 2831: 9,11 - 2832: 9,11 - 2833: 10,12 - 2834: 11,11 - 2835: 11,11 - 2836: 11,13 - 2837: 10,13 - 2838: 3,17 - 2839: 1,16 - 2840: -1,15 - 2841: -1,14 - 2842: 2,15 - 2843: 2,17 - 2844: -1,16 - 2845: 0,14 - 2846: 3,14 - 2847: 1,16 - 2848: -1,16 - 2849: -1,15 - 2850: 3,16 - 2851: 3,17 - 2852: 4,15 - 2853: 3,14 - 2854: 1,14 - 2855: -1,15 - 2856: -2,14 - 2857: -2,17 - 2858: -2,17 - 2859: 1,17 - 2860: 2,20 - 2861: 1,19 - 2862: 2,19 - 2863: 4,20 - 2864: 2,21 - 2865: 1,19 - 2866: 3,20 - 2867: 3,22 - 2868: 2,21 - 2869: 2,21 - 2870: 2,23 - 2871: 2,26 - 2872: 2,28 - 2873: 2,31 - 2874: 2,34 - 2875: 4,34 - 2876: 4,33 - 2877: 4,33 - 2878: 4,31 - 2879: 4,29 - 2880: 4,27 - 2881: 4,25 - 2882: 4,23 - 2883: 4,21 - 2884: 4,19 - 2885: 3,19 - 2886: 3,20 - 2887: 3,21 - 2888: 3,23 - 2889: 3,25 - 2890: 3,28 - 2891: 3,30 - 2892: 3,32 - 2893: 3,33 - 2894: 3,33 - 2895: 2,34 - 2896: 2,33 - 2897: 7,29 - 2898: 7,28 - 2899: 9,28 - 2900: 11,28 - 2901: 12,29 - 2902: 10,30 - 2903: 8,30 - 2904: 9,28 - 2905: 12,30 - 2906: 11,31 - 2907: 8,31 - 2908: 9,29 - 2909: 11,29 - 2910: 10,30 - 2911: 8,25 - 2912: 7,26 - 2913: 7,24 - 2914: 7,23 - 2915: 6,22 - 2916: 7,25 - 2917: 9,25 - 2918: 9,23 - 2919: 8,22 - 2920: 10,24 - 2921: 8,25 - 2922: 7,24 - 2923: 7,23 - 2924: 6,25 - 2925: 8,36 - 2926: 8,37 - 2927: 6,36 - 2928: 7,35 - 2929: 8,34 - 2930: 10,34 - 2931: 8,35 - 2932: 6,34 - 2933: 8,33 - 2934: 11,34 - 2935: 11,36 - 2936: 10,37 - 2937: 12,35 - 2938: 11,33 - 2939: 11,35 - 2940: 9,37 - 2941: 9,35 - 2942: 11,34 - 2943: 11,37 - 2944: 9,36 - 2945: 7,36 - 2946: 7,37 - 2947: 6,35 - 2948: 7,34 - 2949: 8,33 - 2950: 9,33 - 2951: 6,33 - 2952: 12,34 - 2953: 12,37 - 2954: 11,34 - 2955: 4,40 - 2956: 2,42 - 2957: 0,41 - 2958: 1,40 - 2959: 0,40 - 2960: -1,39 - 2961: 0,37 - 2962: 4,40 - 2963: 0,38 - 2964: 0,38 - 2965: 2,36 - 2966: 4,36 - 2967: 2,38 - 2968: 0,37 - 2969: -1,37 - 2970: 1,38 - 2971: 4,39 - 2972: 2,40 - 2973: 0,39 - 2974: 2,37 - 2975: 3,40 - 2976: 2,39 - 2977: 3,36 - 2978: 2,36 - 2979: 2,39 - 2980: -1,39 - 2981: 1,37 - 3307: -2,8 - 3308: -2,8 - 3309: -2,9 - 3310: -1,10 - 3311: 1,9 - 3312: 0,8 - 3313: -1,8 - 3314: -1,9 - 3315: 1,10 - 3316: 1,9 - 3317: -2,9 - 3318: -3,9 - 3319: -3,10 - 3320: -3,10 - 3490: -60,50 - 3491: -60,51 - 3492: -61,53 - 3493: -63,54 - 3494: -64,55 - 3495: -65,54 - 3496: -65,52 - 3497: -63,51 - 3498: -61,51 - 3499: -63,50 - 3500: -65,53 - 3501: -62,53 - 3502: -62,53 - 3503: -64,52 - 3504: -60,54 - 3505: -59,55 - 3506: -62,54 - 3507: -61,54 - 3508: -58,53 - 3509: -57,53 - 3510: -54,54 - 3511: -51,54 - 3512: -52,55 - 3513: -54,56 - 3514: -55,56 - 3515: -55,54 - 3516: -53,54 - 3517: -52,56 - 3518: -54,57 - 3519: -56,57 - 3520: -57,56 - 3521: -57,55 - 3522: -56,54 - 3523: -58,55 - 3524: -58,58 - 3525: -55,57 - 3526: -53,57 - 3527: -52,57 - 3528: -51,56 - 3529: -52,55 - 3530: -54,55 - 3531: -55,57 - 3532: -54,58 - 3533: -52,57 - 3534: -49,58 - 3535: -48,58 - 3536: -47,59 - 3537: -48,61 - 3538: -49,61 - 3539: -48,58 - 3540: -47,60 - 3541: -47,62 - 3542: -49,61 - 3543: -49,59 - 3544: -48,58 - 3545: -47,59 - 3546: -48,55 - 3547: -49,55 - 3548: -47,55 - 3549: -47,55 - 3550: -47,54 - 3551: -47,54 - 3552: -48,50 - 3553: -49,50 - 3554: -48,51 - 3555: -47,51 - 3556: -61,60 - 3557: -61,60 - 3558: -60,61 - 3559: -58,61 - 3560: -56,60 - 3561: -53,60 - 3562: -53,61 - 3563: -55,61 - 3564: -59,60 - 3565: -60,60 - 3566: -57,60 - 3567: -54,60 - 3568: -53,60 - 3569: -52,62 - 3570: -52,63 - 3571: -50,63 - 3572: -49,65 - 3573: -51,65 - 3574: -52,64 - 3575: -53,63 - 3576: -52,64 - 3577: -50,65 - 3578: -47,64 - 3579: -45,64 - 3580: -43,64 - 3581: -43,65 - 3582: -43,64 - 3583: -43,62 - 3584: -42,62 - 3585: -42,64 - 3586: -44,65 - 3587: -43,62 - 3588: -43,61 - 3589: -43,63 - 3590: -47,64 - 3591: -49,65 - 3592: -50,65 - 3593: -48,64 - 3594: -48,65 - 3595: -50,64 - 3596: -53,82 - 3597: -53,82 - 3598: -53,83 - 3599: -51,84 - 3600: -51,86 - 3601: -52,89 - 3602: -53,89 - 3603: -53,88 - 3604: -52,87 - 3605: -51,89 - 3606: -53,90 - 3607: -53,89 - 3608: -53,87 - 3609: -53,85 - 3610: -52,83 - 3611: -51,83 - 3612: -51,86 - 3613: -51,89 - 3614: -52,89 - 3615: -56,89 - 3616: -56,89 - 3617: -55,88 - 3618: -55,90 - 3619: -56,90 - 3620: -55,86 - 3621: -55,86 - 3622: -56,86 - 3623: -56,86 - 3624: -55,83 - 3625: -55,84 - 3626: -56,83 - 3627: -55,82 - 3628: -55,82 - 3629: -54,83 - 3630: -54,83 - 3631: -54,89 - 3632: -57,86 - 3633: -57,86 - 3634: -58,89 - 3635: -59,89 - 3636: -61,88 - 3637: -61,87 - 3638: -61,85 - 3639: -59,83 - 3640: -59,83 - 3641: -58,86 - 3642: -60,88 - 3643: -61,88 - 3644: -61,86 - 3645: -62,85 - 3646: -62,84 - 3647: -61,83 - 3648: -60,86 - 3649: -61,88 - 3650: -62,89 - 3651: -61,87 - 3652: -60,85 - 3653: -59,84 - 3654: -59,83 - 3655: -60,84 - 3656: -62,84 - 3657: -60,87 - 3658: -60,89 - 3659: -60,89 - 3660: -58,89 - 3700: -61,58 - 3701: -62,58 - 3702: -61,57 - 3703: -61,57 - 3704: -61,58 - 3705: -61,57 - 3706: -60,57 - 4096: -58,52 - 4097: -58,50 - 4098: -58,50 - 4099: -57,50 - 4100: -57,51 - 4101: -58,49 - 4102: -57,49 - 4103: -55,52 - 4104: -55,50 - 4105: -54,49 - 4106: -54,51 - 4107: -52,52 - 4108: -52,51 - 4109: -52,50 - 4110: -51,49 - 4111: -51,51 - 4112: -51,51 - 4252: -83,33 - 4253: -82,32 - 4254: -82,31 - 4255: -82,30 - 4256: -81,30 - 4257: -80,33 - 4258: -79,33 - 4259: -78,33 - 4260: -80,32 - 4261: -82,32 - 4262: -81,31 - 4263: -79,30 - 4264: -77,30 - 4265: -77,32 - 4266: -78,31 - 4267: -78,28 - 4268: -78,29 - 4269: -79,31 - 4270: -77,32 - 4271: -80,33 - 4272: -81,30 - 4273: -80,32 - 4274: -81,33 - 4275: -67,31 - 4276: -68,31 - 4277: -68,30 - 4278: -67,28 - 4279: -67,26 - 4280: -66,26 - 4281: -64,27 - 4282: -67,27 - 4283: -65,26 - 4284: -64,25 - 4285: -65,28 - 4286: -67,28 - 4287: -68,26 - 4288: -67,25 - 4289: -67,30 - 4290: -64,30 - 4291: -64,32 - 4292: -65,33 - 4293: -66,33 - 4294: -65,34 - 4295: -66,34 - 4296: -68,34 - 4297: -70,33 - 4298: -68,33 - 4299: -70,34 - 4300: -72,35 - 4301: -74,34 - 4302: -73,33 - 4303: -71,34 - 4304: -73,35 - 4305: -75,34 - 4306: -75,33 - 4307: -75,31 - 4308: -75,30 - 4309: -74,29 - 4310: -75,26 - 4311: -75,27 - 4312: -75,27 - 4313: -75,25 - 4314: -74,23 - 4315: -74,26 - 4316: -75,26 - 4317: -76,25 - 4318: -77,25 - 4319: -76,24 - 4320: -76,26 - 4321: -76,25 - 4322: -74,23 - 4323: -74,20 - 4324: -75,19 - 4325: -75,22 - 4326: -75,23 - 4327: -74,22 - 4328: -70,22 - 4329: -70,22 - 4330: -65,22 - 4331: -63,22 - 4332: -66,21 - 4333: -68,22 - 4334: -70,21 - 4335: -66,20 - 4336: -69,20 - 4337: -71,20 - 4338: -67,20 - 4339: -70,22 - 4340: -66,22 - 4341: -68,20 - 4342: -81,23 - 4343: -83,23 - 4344: -85,23 - 4345: -86,23 - 4346: -87,26 - 4347: -86,27 - 4348: -85,27 - 4349: -82,27 - 4350: -81,26 - 4351: -80,25 - 4352: -80,23 - 4353: -80,23 - 4354: -79,26 - 4355: -80,27 - 4356: -80,24 - 4357: -81,23 - 4358: -82,22 - 4359: -84,23 - 4360: -86,25 - 4361: -86,26 - 4362: -86,26 - 4363: -86,23 - 4364: -85,30 - 4365: -86,30 - 4366: -86,29 - 4367: -85,30 - 4368: -85,21 - 4369: -86,21 - 4370: -86,20 - 4371: -85,21 - 4372: -82,19 - 4373: -82,19 - 4374: -82,20 - 4375: -83,18 - 4376: -82,18 - 4377: -80,19 - 4378: -78,19 - 4379: -79,19 - 4380: -81,19 - 4381: -80,18 - 4382: -79,18 - 4383: -77,19 - 4384: -77,21 - 4385: -77,22 - 4386: -78,21 - 4387: -77,20 - 4388: -77,21 - 4389: -77,20 - 4390: -78,18 - 4391: -80,19 - 4392: -81,20 - 4393: -82,19 - 4394: -80,20 - 4395: -80,20 - 4396: -74,17 - 4397: -75,16 - 4398: -73,15 - 4399: -73,16 - 4400: -74,17 - 4401: -73,16 - 4402: -72,15 - 4403: -72,16 - 4404: -74,17 - 4405: -74,17 - 4414: -62,42 - 4415: -63,42 - 4416: -64,41 - 4417: -64,39 - 4418: -64,41 - 4419: -65,40 - 4420: -65,39 - 4421: -64,40 - 4422: -63,41 - 4423: -61,41 - 4424: -61,38 - 4425: -62,38 - 4426: -61,41 - 4427: -63,41 - 4428: -63,39 - 4429: -62,39 - 4430: -63,42 - 4431: -64,41 - 4432: -64,41 - 4433: -63,39 - 4434: -61,40 - 4435: -62,42 - 4436: -64,41 - 4437: -65,40 - 4438: -65,39 - 4439: -65,40 - 4440: -64,41 - 4441: -62,42 - 4442: -64,44 - 4443: -65,44 - 4444: -64,44 - 4445: -61,45 - 4446: -63,45 - 4447: -64,45 - 4448: -64,44 - 4449: -62,44 - 4450: -62,45 - 4451: -64,45 - 4511: -73,49 - 4512: -73,48 - 4513: -73,47 - 4514: -71,48 - 4515: -72,49 - 4516: -72,48 - 4517: -70,49 - 4518: -70,49 - 4519: -70,48 - 4520: -69,47 - 4521: -71,48 - 4522: -72,48 - 4523: -72,49 - 4565: -67,49 - 4566: -68,49 - 4567: -67,50 - 4568: -67,50 - 4569: -66,48 - 4570: -67,47 - 4571: -66,46 - 4572: -66,47 - 4573: -67,46 - 4578: -67,45 - 4579: -67,44 - 4580: -68,42 - 4581: -68,40 - 4582: -68,38 - 4583: -67,38 - 4584: -67,43 - 4585: -67,46 - 4586: -67,45 - 4587: -67,41 - 4588: -67,37 - 4589: -68,37 - 4590: -70,37 - 4591: -72,37 - 4592: -74,37 - 4593: -76,37 - 4594: -76,39 - 4595: -76,41 - 4596: -76,43 - 4597: -76,45 - 4598: -76,48 - 4599: -75,48 - 4600: -75,45 - 4601: -75,43 - 4602: -75,43 - 4603: -76,47 - 4604: -76,50 - 4605: -76,52 - 4606: -76,50 - 4607: -74,52 - 4608: -74,52 - 4609: -72,51 - 4610: -72,53 - 4611: -72,52 - 4612: -71,51 - 4613: -70,53 - 4614: -71,55 - 4615: -72,55 - 4616: -72,52 - 4617: -72,52 - 4618: -71,55 - 4619: -72,55 - 4620: -72,53 - 4621: -70,51 - 4622: -70,53 - 4623: -70,55 - 4624: -71,56 - 4625: -71,55 - 4626: -70,54 - 4656: -76,54 - 4657: -77,54 - 4658: -78,54 - 4659: -78,53 - 4660: -68,57 - 4661: -68,56 - 4662: -68,55 - 4663: -68,52 - 4664: -68,50 - 4665: -61,35 - 4666: -62,36 - 4667: -62,36 - 4668: -64,36 - 4669: -67,36 - 4670: -68,36 - 4671: -68,38 - 4672: -68,40 - 4673: -68,39 - 4674: -71,43 - 4675: -70,43 - 4676: -71,44 - 4677: -72,44 - 4678: -73,44 - 4679: -71,43 - 4680: -71,41 - 4681: -72,40 - 4682: -72,42 - 4683: -72,42 - 4684: -73,40 - 4685: -72,39 - 4686: -70,39 - 4687: -70,41 - 4688: -71,43 - 4689: -72,44 - 4690: -72,44 - 4691: -73,43 - 4692: -61,33 - 4693: -60,33 - 4694: -62,33 - 4695: -61,32 - 4696: -60,31 - 4697: -60,32 - 4698: -61,33 - 4699: -62,32 - 4700: -62,31 - 4701: -61,31 - 4788: -69,16 - 4789: -71,17 - 4790: -71,16 - 4791: -70,15 - 4792: -69,16 - 4793: -71,16 - 4794: -71,22 - 4795: -71,21 - 4796: -71,22 - 4797: -68,22 - 4798: -69,22 - 4799: -65,22 - 4800: -70,20 - 4801: -63,19 - 4802: -68,20 - 4803: -70,22 - 4976: -84,32 - 4977: -85,33 - 4978: -84,35 - 4979: -84,38 - 4980: -84,40 - 4981: -84,43 - 4982: -83,45 - 4983: -82,46 - 4984: -80,46 - 4985: -80,45 - 4986: -82,46 - 4987: -84,45 - 4988: -82,43 - 4989: -81,44 - 4990: -84,45 - 4991: -85,46 - 4992: -82,44 - 4993: -80,43 - 4994: -82,42 - 4995: -84,42 - 4996: -83,41 - 4997: -79,42 - 4998: -80,43 - 4999: -83,40 - 5000: -81,39 - 5001: -82,40 - 5002: -83,41 - 5003: -82,40 - 5004: -80,39 - 5005: -83,39 - 5006: -84,38 - 5007: -82,36 - 5008: -80,35 - 5009: -80,36 - 5010: -82,39 - 5011: -81,41 - 5012: -80,42 - 5013: -81,44 - 5014: -64,14 - 5015: -65,14 - 5016: -65,13 - 5017: -65,11 - 5018: -64,10 - 5019: -64,13 - 5020: -65,14 - 5021: -65,12 - 5022: -64,11 - 5023: -62,12 - 5024: -62,14 - 5025: -63,11 - 5026: -61,11 - 5027: -61,13 - 5028: -62,14 - 5029: -62,12 - 5030: -62,10 - 5062: -67,8 - 5063: -66,8 - 5064: -63,8 - 5065: -62,8 - 5066: -62,8 - 5067: -65,8 - 5068: -67,8 - 5069: -68,9 - 5070: -68,12 - 5071: -67,13 - 5072: -67,13 - 5073: -67,15 - 5074: -67,16 - 5075: -66,17 - 5076: -63,16 - 5077: -62,16 - 5078: -62,16 - 5079: -64,17 - 5080: -64,16 - 5081: -62,17 - 5082: -61,19 - 5083: -62,19 - 5084: -61,20 - 5085: -61,21 - 5086: -61,23 - 5087: -62,22 - 5088: -61,23 - 5089: -61,24 - 5090: -62,26 - 5091: -62,27 - 5092: -62,28 - 5093: -61,36 - 5094: -61,36 - 5095: -55,44 - 5096: -45,50 - 5097: -45,51 - 5098: -45,53 - 5099: -44,55 - 5100: -43,55 - 5101: -42,55 - 5102: -41,55 - 5103: -41,54 - 5104: -39,55 - 5105: -38,55 - 5106: -39,55 - 5107: -38,54 - 5108: -35,54 - 5109: -34,55 - 5110: -35,55 - 5111: -33,54 - 5112: -32,54 - 5113: -33,53 - 5114: -33,51 - 5115: -32,49 - 5116: -31,49 - 5117: -30,50 - 5118: -30,50 - 5119: -28,50 - 5120: -27,50 - 5121: -26,50 - 5122: -26,49 - 5123: -24,51 - 5124: -24,51 - 5125: -22,51 - 5126: -20,51 - 5127: -20,51 - 5128: -23,51 - 5129: -26,50 - 5130: -26,48 - 5131: -25,46 - 5132: -25,48 - 5133: -26,47 - 5134: -26,45 - 5135: -25,43 - 5136: -25,44 - 5137: -26,44 - 5138: -26,42 - 5139: -25,40 - 5140: -25,41 - 5141: -26,41 - 5142: -26,38 - 5143: -25,37 - 5144: -25,38 - 5145: -26,38 - 5146: -26,36 - 5147: -26,36 - 5148: -26,39 - 5149: -26,41 - 5150: -25,39 - 5151: -25,39 - 5152: -26,40 - 5153: -26,40 - 5154: -26,41 - 5155: -26,43 - 5156: -26,43 - 5157: -13,51 - 5158: -12,51 - 5159: -10,51 - 5160: -8,51 - 5161: -8,50 - 5162: -9,49 - 5163: -9,47 - 5164: -8,47 - 5165: -6,47 - 5166: -4,47 - 5167: -5,46 - 5168: -5,46 - 5169: -3,47 - 5170: -2,47 - 5171: -2,46 - 5172: 0,46 - 5173: 0,47 - 5174: 0,46 - 5175: 2,47 - 5176: 2,47 - 5177: 1,46 - 5178: 4,46 - 5179: 4,47 - 5180: 4,47 - 5181: 5,46 - 5182: 7,47 - 5183: 7,48 - 5184: 7,48 - 5185: 9,48 - 5186: 10,48 - 5187: 11,48 - 5188: 10,48 - 5189: 13,48 - 5190: 14,48 - 5191: 15,48 - 5192: 16,48 - 5193: 15,47 - 5194: 14,45 - 5195: 15,46 - 5196: 14,45 - 5197: 15,45 - 5198: 15,46 - 5199: 14,44 - 5200: 14,42 - 5201: 15,42 - 5202: 15,42 - 5203: 15,41 - 5204: 15,40 - 5205: 14,41 - 5206: 14,39 - 5207: 14,39 - 5208: 12,40 - 5209: 10,39 - 5210: 12,39 - 5211: 11,40 - 5212: 9,40 - 5213: 8,39 - 5214: 8,40 - 5215: 8,39 - 5216: 8,39 - 5217: 7,40 - 5218: 7,41 - 5219: 7,43 - 5220: 6,45 - 5221: 6,44 - 5222: 6,46 - 5223: 6,45 - 5224: 6,45 - 5225: 3,47 - 5226: 2,46 - 5227: 2,46 - 5228: 1,47 - 5229: 1,47 - 5230: 0,46 - 5231: -3,45 - 5232: -3,43 - 5233: -3,42 - 5234: -4,44 - 5235: -4,43 - 5236: -4,42 - 5237: -3,40 - 5238: -3,41 - 5239: -4,40 - 5240: -4,40 - 5241: -4,44 - 5242: -4,44 - 5243: -3,40 - 5244: -3,38 - 5245: -3,37 - 5246: -5,36 - 5247: -5,36 - 5248: -4,37 - 5249: -6,36 - 5250: -7,36 - 5251: -8,37 - 5252: -9,36 - 5253: -9,37 - 5254: -10,36 - 5255: -9,36 - 5256: -8,37 - 5257: -9,36 - 5258: 14,37 - 5259: 14,37 - 5260: 14,35 - 5261: 15,36 - 5262: 15,36 - 5263: 14,33 - 5264: 15,35 - 5265: 15,34 - 5266: 15,34 - 5267: 15,34 - 5268: 14,34 - 5269: 17,34 - 5270: 20,35 - 5271: 18,35 - 5272: 17,34 - 5273: 19,34 - 5274: 19,35 - 5275: 20,35 - 5276: 22,35 - 5277: 22,34 - 5278: 23,33 - 5279: 21,35 - 5280: 20,35 - 5281: 18,35 - 5282: 23,32 - 5283: 22,31 - 5284: 22,30 - 5285: 23,31 - 5286: 22,30 - 5287: 23,28 - 5288: 23,27 - 5289: 23,27 - 5290: 22,26 - 5291: 23,25 - 5292: 23,23 - 5293: 23,22 - 5294: 22,23 - 5295: 22,24 - 5296: 22,24 - 5297: 22,23 - 5298: 21,26 - 5299: 18,26 - 5300: 17,25 - 5301: 19,25 - 5302: 16,26 - 5303: 15,26 - 5304: 14,25 - 5305: 15,23 - 5306: 14,22 - 5307: 14,22 - 5308: 13,20 - 5309: 14,21 - 5310: 13,21 - 5311: 14,19 - 5312: 14,18 - 5313: 14,18 - 5314: 14,18 - 5315: 13,16 - 5316: 13,16 - 5317: 13,17 - 5318: 14,16 - 5319: 14,15 - 5320: 13,14 - 5321: 13,14 - 5322: 14,13 - 5323: 14,13 - 5324: 13,12 - 5325: 14,12 - 5326: 13,11 - 5327: 14,10 - 5328: 13,11 - 5329: 13,9 - 5330: 14,9 - 5331: 14,8 - 5332: 12,8 - 5333: 12,8 - 5334: 11,8 - 5335: 10,8 - 5336: 10,8 - 5337: 9,9 - 5338: 8,9 - 5339: 7,9 - 5340: 6,9 - 5341: 4,9 - 5342: 4,9 - 5343: 4,10 - 5344: 4,12 - 5345: 3,12 - 5346: 2,12 - 5347: 1,12 - 5348: -1,12 - 5349: -1,12 - 5350: -3,12 - 5351: -4,12 - 5352: -5,12 - 5353: -6,11 - 5354: -6,10 - 5355: -7,10 - 5356: -6,11 - 5357: -6,14 - 5358: -5,14 - 5359: -4,16 - 5360: -5,17 - 5361: -7,17 - 5362: -8,17 - 5363: -8,17 - 5364: -9,17 - 5365: -9,17 - 5366: -7,18 - 5367: -7,19 - 5368: -7,21 - 5369: -7,22 - 5370: -7,23 - 5371: -8,25 - 5372: -9,25 - 5373: -9,24 - 5374: -8,24 - 5375: -8,25 - 5376: -9,25 - 5377: -10,25 - 5378: -8,15 - 5379: -9,15 - 5380: -10,14 - 5381: -10,14 - 5382: -8,12 - 5383: -9,12 - 5384: -9,12 - 5385: -10,11 - 5386: -9,8 - 5387: -9,9 - 5388: -10,9 - 5389: -9,8 - 5390: -21,9 - 5391: -20,9 - 5392: -20,10 - 5393: -21,12 - 5394: -21,11 - 5395: -20,13 - 5396: -20,14 - 5397: -21,16 - 5398: -21,14 - 5399: -20,18 - 5400: -21,17 - 5401: -21,16 - 5402: -20,18 - 5403: -17,20 - 5404: -16,20 - 5405: -18,20 - 5406: -20,20 - 5407: -20,20 - 5408: -21,20 - 5409: -20,22 - 5410: -20,23 - 5411: -21,24 - 5412: -20,23 - 5413: -20,26 - 5414: -20,27 - 5415: -20,28 - 5416: -21,26 - 5417: -21,24 - 5418: -20,21 - 5419: -22,20 - 5420: -22,22 - 5421: -23,22 - 5422: -24,21 - 5423: -23,21 - 5424: -25,21 - 5425: -27,21 - 5426: -28,21 - 5427: -29,21 - 5428: -30,21 - 5429: -31,20 - 5430: -31,20 - 5431: -32,18 - 5432: -31,17 - 5433: -31,15 - 5434: -31,15 - 5435: -31,13 - 5436: -31,13 - 5437: -32,12 - 5438: -33,12 - 5439: -34,12 - 5440: -34,11 - 5441: -34,11 - 5442: -34,12 - 5443: -34,10 - 5444: -34,9 - 5445: -35,12 - 5446: -34,12 - 5447: -33,13 - 5448: -32,13 - 5449: -31,13 - 5450: -31,14 - 5451: -45,9 - 5452: -45,9 - 5453: -45,10 - 5454: -45,11 - 5455: -45,12 - 5456: -45,13 - 5457: -45,14 - 5458: -46,14 - 5459: -48,14 - 5460: -49,14 - 5461: -50,14 - 5462: -51,14 - 5463: -51,14 - 5464: -51,16 - 5465: -51,17 - 5466: -51,18 - 5467: -51,19 - 5468: -51,20 - 5469: -51,21 - 5470: -51,21 - 5471: -49,21 - 5472: -48,21 - 5473: -47,21 - 5474: -46,21 - 5475: -46,21 - 5476: -42,20 - 5477: -42,20 - 5478: -45,21 - 5479: -46,20 - 5480: -45,20 - 5481: -42,18 - 5482: -42,18 - 5483: -42,17 - 5484: -43,18 - 5485: -42,17 - 5486: -42,17 - 5487: -46,18 - 5488: -45,17 - 5489: -45,17 - 5490: -46,18 - 5491: -48,18 - 5492: -48,17 - 5493: -49,19 - 5494: -49,18 - 5495: -49,17 - 5496: -48,19 - 5497: -45,21 - 5498: -45,22 - 5499: -45,23 - 5500: -46,23 - 5501: -45,24 - 5502: -46,25 - 5503: -46,25 - 5504: -45,26 - 5505: -46,27 - 5506: -45,27 - 5507: -46,28 - 5508: -46,27 - 5532: -10,57 - 5533: -10,57 - 5534: -9,57 - 5535: -8,57 - 5536: -8,57 - 5537: -10,57 - 5538: -11,57 - 5539: -8,56 - 5540: -7,56 - 5541: -7,55 - 5542: -8,56 - 5543: -8,56 - 5544: -8,56 - 5545: -7,56 - 5546: -9,59 - 5547: -8,59 - 5548: -9,59 - 5549: -10,59 - 5550: -10,60 - 5551: -10,61 - 5552: -9,61 - 5553: -9,60 - 5554: -8,59 - 5555: -8,60 - 5556: -8,61 - 5557: -10,61 - 5558: -10,60 - 5559: -9,59 - 5560: -8,59 - 5561: -9,61 - 5562: -10,61 - 5563: -10,60 - 5564: -9,60 - 5565: -8,61 - 5566: -10,60 - 5567: -8,59 - 5568: -8,60 - 5569: -9,60 - 5570: -8,61 - 5571: -10,61 - 5572: -14,61 - 5573: -14,61 - 5574: -17,62 - 5575: -19,62 - 5576: -18,63 - 5577: -18,64 - 5578: -18,65 - 5579: -16,65 - 5580: -18,66 - 5581: -20,65 - 5582: -19,66 - 5583: -21,64 - 5584: -15,66 - 5585: -14,65 - 5586: -16,66 - 5587: -13,64 - 5588: -14,59 - 5589: -21,59 - 5590: -22,59 - 5591: -22,61 - 5592: -22,62 - 5593: -16,64 - 5594: -18,62 - 5595: -27,53 - 5596: -27,53 - 5597: -51,62 - 5598: -51,62 - 5599: -51,63 - 5600: -51,64 - 5601: -50,64 - 5602: -49,64 - 5603: -49,64 - 5604: -51,64 - 5605: -53,65 - 5606: -53,65 - 5607: -44,63 - 5608: -44,62 - 5609: -44,62 - 5610: -56,61 - 5611: -54,61 - 5612: -54,61 - 5613: -58,56 - 5614: -51,55 - 5615: -51,54 - 5616: -51,53 - 5617: -52,53 - 5618: -54,53 - 5619: -55,53 - 5620: -57,53 - 5621: -57,53 - 5622: -52,53 - 5623: -54,54 - 5624: -55,54 - 5625: -55,56 - 5626: -56,56 - 5627: -57,57 - 5628: -57,57 - 5629: -57,34 - 5630: -58,34 - 5631: -59,35 - 5632: -59,35 - 5633: -58,35 - 5634: -58,35 - 5635: -56,35 - 5636: -57,36 - 5637: -58,36 - 5638: -56,37 - 5639: -58,37 - 5640: -58,37 - 5641: -58,36 - 5642: -57,37 - 5643: -58,38 - 5644: -59,37 - 5645: -57,37 - 5646: -58,39 - 5647: -59,38 - 5648: -58,37 - 5649: -57,38 - 5650: -58,40 - 5651: -59,40 - 5652: -59,41 - 5653: -59,44 - 5654: -59,45 - 5655: -59,46 - 5656: -57,46 - 5657: -57,45 - 5658: -57,42 - 5659: -57,41 - 5660: -57,40 - 5661: -57,38 - 5662: -58,39 - 5663: -58,40 - 5664: -58,42 - 5665: -58,43 - 5666: -58,45 - 5667: -58,45 - 5668: -58,46 - 5669: -58,46 - 5670: -59,43 - 5671: -59,42 - 5672: -58,42 - 5673: -59,39 - 5674: -59,38 - 5675: -57,39 - 5676: -57,40 - 5677: -58,41 - 5678: -59,41 - 5679: -59,43 - 5680: -57,43 - 5681: -57,44 - 5682: -59,46 - 5683: -59,46 - 5684: -59,47 - 5685: -58,47 - 5686: -56,47 - 5687: -55,47 - 5688: -55,47 - 5689: -56,47 - 5690: -56,46 - 5691: -58,47 - 5692: -53,47 - 5693: -53,47 - 5694: -55,47 - 5695: -54,46 - 5696: -53,46 - 5697: -52,46 - 5698: -54,47 - 5699: -54,46 - 5700: -51,47 - 5701: -52,46 - 5702: -50,46 - 5703: -49,46 - 5704: -49,47 - 5705: -51,47 - 5706: -50,46 - 5707: -48,46 - 5708: -48,47 - 5709: -48,47 - 5710: -47,47 - 5711: -47,48 - 5712: -48,49 - 5713: -49,49 - 5714: -49,48 - 5715: -50,47 - 5716: -50,46 - 5717: -48,47 - 5718: -48,48 - 5719: -47,49 - 5720: -52,46 - 5721: -50,46 - 5722: -48,46 - 5723: -48,46 - 5724: -48,48 - 5725: -47,47 - 5726: -47,46 - 5727: -48,44 - 5728: -49,45 - 5729: -49,44 - 5730: -48,43 - 5731: -47,45 - 5732: -47,45 - 5733: -49,45 - 5734: -50,44 - 5735: -50,43 - 5736: -49,43 - 5737: -50,45 - 5738: -49,44 - 5739: -49,42 - 5740: -48,42 - 5741: -47,43 - 5742: -47,44 - 5743: -47,42 - 5744: -47,41 - 5745: -48,41 - 5746: -49,40 - 5747: -48,40 - 5748: -47,41 - 5749: -49,42 - 5750: -49,42 - 5751: -49,40 - 5752: -48,39 - 5753: -47,38 - 5754: -47,39 - 5755: -48,39 - 5756: -49,38 - 5757: -49,37 - 5758: -48,35 - 5759: -47,36 - 5760: -48,37 - 5761: -48,38 - 5762: -48,38 - 5763: -48,36 - 5764: -47,35 - 5765: -47,35 - 5766: -48,36 - 5767: -49,35 - 5768: -49,35 - 5769: -49,38 - 5770: -48,39 - 5771: -48,40 - 5772: -49,42 - 5773: -49,41 - 5774: -47,39 - 5775: -49,39 - 5776: -47,37 - 5777: -49,34 - 5778: -48,34 - 5779: -47,34 - 5780: -47,34 - 5781: -48,34 - 5782: -10,34 - 5783: -11,33 - 5784: -11,32 - 5785: -11,31 - 5786: -13,30 - 5787: -14,31 - 5788: -14,29 - 5789: -14,29 - 5790: -11,32 - 5791: -10,33 - 5792: -9,33 - 5793: -10,34 - 5794: -11,34 - 5795: -10,34 - 5796: -8,34 - 5797: -7,33 - 5798: -7,32 - 5799: -8,31 - 5800: -10,31 - 5801: -12,30 - 5802: -13,29 - 5803: -12,28 - 5804: -14,25 - 5805: -14,23 - 5806: -14,22 - 5807: -12,21 - 5808: -12,22 - 5809: -12,20 - 5810: -12,19 - 5811: -14,21 - 5812: -14,21 - 5813: -13,20 - 5814: -13,22 - 5815: -14,24 - 5816: -14,25 - 5817: -14,15 - 5818: -13,13 - 5819: -12,15 - 5820: -13,16 - 5821: -14,17 - 5822: -13,16 - 5823: -13,16 - 5824: -14,16 - 5825: -14,19 - 5826: -13,21 - 5827: -13,23 - 5828: -13,25 - 5829: -13,11 - 5830: -12,13 - 5831: -13,12 - 5832: -13,12 - 5833: -12,6 - 5834: -13,6 - 5835: -14,6 - 5836: -13,4 - 5837: -12,5 - 5838: -12,5 - 5839: -13,5 - 5840: -14,4 - 5841: -10,5 - 5842: -9,5 - 5843: -10,4 - 5844: -9,4 - 5845: -8,4 - 5846: -8,4 - 5847: -8,4 - 5848: -6,4 - 5849: -7,6 - 5850: -8,6 - 5851: -6,7 - 5852: -4,6 - 5853: -3,6 - 5854: -3,5 - 5855: -3,4 - 5856: -4,4 - 5857: -2,5 - 5858: -2,5 - 5859: -3,4 - 5860: -1,5 - 5861: 1,6 - 5862: 0,5 - 5863: 0,5 - 5864: 2,4 - 5865: 4,5 - 5866: 2,6 - 5867: 2,5 - 5868: 4,4 - 5869: 4,5 - 5870: 3,6 - 5871: 3,4 - 5872: 4,5 - 5873: 3,5 - 5874: 4,6 - 5875: 7,4 - 5876: 6,4 - 5877: 7,4 - 5878: 8,4 - 5879: 5,3 - 5880: 4,3 - 5881: 9,4 - 5882: 10,4 - 5883: 10,4 - 5884: 10,5 - 5885: 11,4 - 5886: 11,6 - 5887: 11,6 - 5888: 14,5 - 5889: 15,5 - 5890: 17,6 - 5891: 18,6 - 5892: 17,5 - 5893: 18,6 - 5894: 20,6 - 5895: 21,6 - 5896: 22,6 - 5897: 23,5 - 5898: 23,5 - 5899: 22,4 - 5900: 23,4 - 5901: 21,5 - 5902: 19,6 - 5903: 25,5 - 5904: 25,6 - 5905: 25,7 - 5906: 26,6 - 5907: 26,5 - 5908: 28,7 - 5909: 29,7 - 5910: 28,8 - 5911: 27,9 - 5912: 26,9 - 5913: 26,9 - 5914: 26,10 - 5915: 25,11 - 5916: 25,12 - 5917: 26,13 - 5918: 26,14 - 5919: 26,15 - 5920: 25,16 - 5921: 28,13 - 5922: 28,13 - 5923: 28,14 - 5924: 28,16 - 5925: 27,17 - 5926: 27,18 - 5927: 28,19 - 5928: 27,19 - 5929: 25,20 - 5930: 27,20 - 5931: 27,21 - 5932: 28,21 - 5933: 28,20 - 5934: 26,22 - 5935: 28,24 - 5936: 28,24 - 5937: 26,25 - 5938: 25,25 - 5939: 25,25 - 5940: 25,23 - 5941: 26,23 - 5942: 28,11 - 5943: 28,10 - 5944: 28,12 - 5945: 28,12 - 5952: -22,55 - 5953: -23,54 - 5954: -22,54 - 5955: -21,54 - 5956: -21,55 - 5957: -21,56 - 5958: -22,57 - 5959: -22,57 - 5960: -23,55 - 5961: -23,54 - 5962: -22,55 - 5963: -22,56 - 5964: -22,57 - 5965: -23,56 - 5966: -23,55 - 5967: -23,54 - 5968: -23,54 - 5969: -23,56 - 5970: -22,57 - 5971: -21,57 - 5972: -24,54 - 5973: -24,53 - 5974: -23,53 - 5975: -21,53 - 5976: -21,53 - 5977: -24,54 - 5978: -24,55 - 5979: -24,56 - 5980: -24,56 - 5981: -21,54 - 5982: -21,54 - 5983: -21,55 - 5984: -22,57 - 5985: -23,55 - 5986: -51,33 - 5987: -49,32 - 5988: -51,31 - 5989: -55,31 - 5990: -54,32 - 5991: -55,33 - 5992: -57,25 - 5993: -58,22 - 5994: -58,21 - 5995: -59,20 - 5996: -57,18 - 5997: -59,17 - 5998: -59,12 - 5999: -57,10 - 6000: -58,10 - 6001: -59,8 - 6002: -59,9 - 6003: -59,4 - 6004: -59,5 - 6005: -57,4 - 6006: -61,4 - 6007: -56,4 - 6008: -65,4 - 6009: -67,4 - 6010: -69,5 - 6011: -69,4 - 6012: -70,5 - 6013: -72,6 - 6014: -74,5 - 6015: -75,4 - 6016: -57,0 - 6017: -58,0 - 6018: -59,-2 - 6019: -59,-1 - 6020: -58,-2 - 6021: -58,-6 - 6022: -57,-5 - 6023: -57,-8 - 6024: -58,-8 - 6025: -59,-9 - 6026: -57,-10 - 6027: -52,6 - 6028: -50,6 - 6029: -51,4 - 6030: -49,3 - 6031: -50,3 - 6032: -48,6 - 6033: -46,6 - 6034: -48,5 - 6035: -47,6 - 6036: -44,6 - 6037: -43,5 - 6038: -43,6 - 6039: -42,6 - 6040: -39,6 - 6041: -34,7 - 6042: -39,4 - 6043: -35,4 - 6044: -37,3 - 6045: -38,3 - 6046: -39,3 - 6047: -41,3 - 6048: -35,3 - 6049: -33,4 - 6050: -29,4 - 6051: -28,4 - 6052: -39,4 - 6053: -38,4 - 6054: -36,5 - 6055: -37,6 - 6056: -39,6 - 6057: -40,5 - 6058: -39,4 - 6059: -37,4 - 6060: -37,6 - 6061: -38,6 - 6062: -38,5 - 6063: -38,7 - 6064: -38,8 - 6065: -41,5 - 6066: -42,5 - 6067: -32,5 - 6068: -32,5 - 6069: -34,6 - 6070: -33,6 - 6071: -33,5 - 6072: -38,18 - 6073: -39,16 - 6074: -37,14 - 6075: -39,13 - 6076: -38,23 - 6077: -38,23 - 6078: -39,26 - 6079: -39,26 - 6080: -39,27 - 6081: -38,26 - 6082: -37,24 - 6083: -37,25 - 6084: -38,24 - 6085: -37,29 - 6086: -38,30 - 6087: -38,31 - 6088: -37,31 - 6089: -38,30 - 6090: -37,32 - 6091: -39,32 - 6092: -40,33 - 6093: -41,32 - 6094: -42,32 - 6095: -41,33 - 6096: -39,33 - 6097: -38,32 - 6098: -38,31 - 6099: -37,31 - 6100: -35,32 - 6101: -35,33 - 6102: -36,33 - 6103: -39,32 - 6104: -39,32 - 6105: -38,32 - 6106: -37,33 - 6107: -39,33 - 6108: -39,33 - 6109: -38,31 - 6110: -37,31 - 6111: -36,32 - 6112: -35,32 - 6113: -36,31 - 6114: -34,33 - 6115: -33,32 - 6116: -31,31 - 6117: -30,31 - 6118: -29,32 - 6119: -28,32 - 6120: -38,30 - 6121: -39,30 - 6122: -39,28 - 6123: -37,30 - 6124: -39,28 - 6125: -39,27 - 6126: -28,35 - 6127: -29,35 - 6128: -29,36 - 6129: -29,37 - 6130: -28,37 - 6131: -28,37 - 6132: -28,36 - 6133: -28,37 - 6134: -29,38 - 6135: -29,38 - 6136: -29,36 - 6137: -29,35 - 6138: -29,35 - 6139: -28,37 - 6140: -28,38 - 6141: -31,39 - 6142: -31,40 - 6143: -32,40 - 6144: -33,39 - 6145: -32,39 - 6146: -32,40 - 6147: -33,40 - 6148: -32,38 - 6149: -31,39 - 6150: -32,40 - 6151: -33,38 - 6152: -32,38 - 6153: -31,39 - 6154: -33,39 - 6155: -33,37 - 6156: -32,36 - 6157: -31,37 - 6158: -33,37 - 6159: -33,35 - 6160: -31,35 - 6161: -31,37 - 6162: -33,36 - 6163: -32,35 - 6164: -32,37 - 6165: -32,36 - 6166: -33,35 - 6167: -33,37 - 6168: -33,36 - 6169: -33,35 - 6170: -34,36 - 6171: -34,38 - 6173: -51,35 - 6174: -52,36 - 6175: -53,35 - 6176: -51,34 - 6177: -52,34 - 6178: -52,34 - 6179: -52,35 - 6180: -51,35 - 6181: -53,36 - 6182: -54,35 - 6183: -54,36 - 6184: -53,37 - 6185: -52,38 - 6186: -52,38 - 6187: -51,37 - 6188: -51,36 - 6189: -52,36 - 6190: -52,37 - 6191: -52,36 - 6192: -53,35 - 6193: -53,36 - 6194: -53,38 - 6195: -53,40 - 6196: -53,40 - 6197: -51,40 - 6198: -52,41 - 6199: -53,41 - 6200: -53,40 - 6201: -51,40 - 6202: -52,41 - 6203: -53,41 - 6204: -53,38 - 6205: -53,38 - 6206: -54,37 - 6207: -54,36 - 6208: -53,36 - 6209: -52,38 - 6210: -51,38 - 6211: -51,37 - 6212: -52,36 - 6213: -53,36 - 6214: -53,35 - 6215: -45,47 - 6216: -45,46 - 6217: -45,45 - 6218: -45,44 - 6219: -45,43 - 6220: -45,42 - 6221: -45,41 - 6222: -44,41 - 6223: -44,42 - 6224: -44,43 - 6225: -44,45 - 6226: -44,46 - 6227: -43,46 - 6228: -43,46 - 6229: -43,46 - 6230: -43,44 - 6231: -43,43 - 6232: -43,42 - 6233: -43,42 - 6234: -43,41 - 6235: -42,41 - 6236: -42,43 - 6237: -42,44 - 6238: -42,45 - 6239: -42,46 - 6240: -42,47 - 6241: -43,47 - 6242: -43,46 - 6243: -43,46 - 6244: -42,46 - 6245: -41,46 - 6246: -41,46 - 6247: -41,44 - 6248: -41,42 - 6249: -41,42 - 6250: -41,41 - 6251: -41,44 - 6252: -41,46 - 6253: -41,47 - 6254: -42,47 - 6255: -43,43 - 6256: -43,42 - 6257: -44,42 - 6258: -44,44 - 6259: -44,45 - 6260: -43,45 - 6261: -43,44 - 6262: -44,43 - 6263: -43,43 - 6264: -42,45 - 6265: -43,45 - 6266: -44,45 - 6267: -43,46 - 6268: -45,47 - 6269: -45,44 - 6270: -45,42 - 6271: -45,41 - 6272: -44,41 - 6273: -43,41 - 6274: -42,42 - 6275: -42,43 - 6276: -43,45 - 6277: -43,45 - 6278: -44,44 - 6279: -45,44 - 6280: -45,43 - 6281: -45,41 - 6282: -44,41 - 6283: -43,42 - 6284: -44,45 - 6285: -44,46 - 6286: -45,45 - 6287: -44,44 - 6288: -43,43 - 6289: -42,45 - 6290: -44,46 - 6291: -44,46 - 6292: -45,45 - 6293: -45,43 - 6294: -43,42 - 6295: -42,42 - 6296: -41,44 - 6297: -42,46 - 6298: -42,47 - 6299: -44,47 - 6300: -40,44 - 6301: -40,45 - 6302: -40,46 - 6303: -39,46 - 6304: -38,47 - 6305: -39,47 - 6306: -39,45 - 6307: -38,45 - 6308: -37,47 - 6309: -38,46 - 6310: -38,45 - 6311: -38,43 - 6312: -37,43 - 6313: -37,46 - 6314: -39,45 - 6315: -39,42 - 6316: -38,42 - 6317: -36,43 - 6318: -36,43 - 6319: -37,43 - 6320: -36,42 - 6321: -35,42 - 6322: -34,43 - 6323: -34,42 - 6324: -33,42 - 6325: -33,43 - 6326: -34,43 - 6327: -33,42 - 6328: -32,43 - 6329: -32,44 - 6330: -33,45 - 6331: -33,47 - 6332: -34,46 - 6333: -33,45 - 6334: -32,46 - 6335: -34,47 - 6336: -35,46 - 6337: -36,45 - 6338: -35,44 - 6339: -34,44 - 6340: -35,46 - 6341: -36,46 - 6342: -38,46 - 6343: -39,47 - 6344: -38,47 - 6345: -34,46 - 6346: -33,46 - 6347: -33,47 - 6348: -33,47 - 6349: -33,44 - 6350: -32,44 - 6351: -32,43 - 6352: -33,44 - 6353: -34,43 - 6354: -35,43 - 6355: -36,43 - 6356: -37,42 - 6357: -38,42 - 6358: -38,43 - 6359: -39,44 - 6360: -39,43 - 6361: -39,42 - 6362: -39,45 - 6363: -38,46 - 6364: -39,47 - 6365: -39,47 - 6366: -37,44 - 6367: -36,44 - 6368: -34,45 - 6369: -37,45 - 6370: -32,45 - 6371: -32,46 - 6372: -32,46 - 6373: -32,44 - 6374: -32,43 - 6375: -33,43 - 6376: -35,42 - 6377: -33,42 - 6378: -33,42 - 6379: -32,47 - 6380: -29,44 - 6381: -29,45 - 6382: -29,47 - 6383: -30,46 - 6384: -30,45 - 6385: -30,44 - 6386: -28,44 - 6387: -28,45 - 6388: -28,46 - 6389: -29,47 - 6390: -29,47 - 6391: -30,45 - 6392: -29,45 - 6393: -29,44 - 6394: -28,44 - 6395: -29,45 - 6396: -30,46 - 6397: -30,46 - 6398: -29,45 - 6399: -28,45 - 6400: -29,46 - 6401: -29,47 - 6402: -30,47 - 6403: -30,44 - 6404: -29,44 - 6405: -28,44 - 6406: -28,47 - 6407: -36,49 - 6408: -36,49 - 6409: -35,51 - 6410: -35,51 - 6411: -37,51 - 6412: -38,43 - 6413: -38,44 - 6414: -38,44 - 6415: -36,41 - 6416: -37,41 - 6417: -37,41 - 6418: -38,41 - 6419: -38,41 - 6420: -37,41 - 6421: -37,41 - 6422: -36,49 - 6423: -36,50 - 6424: -36,51 - 6425: -36,51 - 6426: -37,50 - 6427: -37,49 - 6428: -37,49 - 6429: -38,50 - 6430: -38,50 - 6431: -38,49 - 6432: -38,51 - 6433: -37,52 - 6434: -37,52 - 6435: -38,52 - 6436: -38,51 - 6437: -37,51 - 6438: -35,50 - 6439: -35,49 - 6440: -35,50 - 6441: -36,51 - 6442: -37,51 - 6443: -38,52 - 6444: -38,51 - 6445: -38,50 - 6446: -38,50 - 6447: -38,51 - 6448: -41,51 - 6449: -41,52 - 6450: -42,52 - 6451: -43,51 - 6452: -43,51 - 6453: -42,50 - 6454: -42,50 - 6455: -42,52 - 6456: -43,52 - 6457: -43,50 - 6458: -43,50 - 6459: -42,49 - 6460: -41,49 - 6461: -40,50 - 6462: -40,52 - 6463: -41,52 - 6464: -42,51 - 6465: -41,50 - 6466: -40,51 - 6467: -42,51 - 6468: -30,47 - 6469: -29,41 - 6470: -30,42 - 6471: -30,42 - 6472: -29,42 - 6473: -28,42 - 6474: -28,41 - 6475: -28,40 - 6476: -29,41 - 6477: -35,43 - 6478: -37,42 - 6479: -4,33 - 6480: -5,34 - 6481: -4,32 - 6482: -3,30 - 6483: -2,30 - 6484: -1,30 - 6485: -1,29 - 6486: 0,31 - 6487: 0,32 - 6488: 0,33 - 6489: -1,33 - 6490: -1,31 - 6491: 0,30 - 6492: -4,29 - 6493: -5,29 - 6494: -5,29 - 6495: -5,31 - 6496: -5,33 - 6497: -4,34 - 6498: -4,34 - 6499: 2,29 - 6500: 4,30 - 6501: 4,30 - 6502: 4,32 - 6503: 3,34 - 6504: 2,33 - 6505: 2,31 - 6506: 2,24 - 6507: 4,26 - 6508: 2,20 - 6509: 3,19 - 6510: 4,19 - 6511: 6,19 - 6512: 7,20 - 6513: 9,20 - 6514: 9,18 - 6515: 6,15 - 6516: 6,14 - 6517: 6,16 - 6518: 6,17 - 6519: 7,17 - 6520: 7,17 - 6521: 7,16 - 6522: 9,16 - 6523: 11,14 - 6524: -2,19 - 6525: -1,19 - 6526: -2,20 - 6527: -3,21 - 6528: -2,22 - 6529: -1,23 - 6530: 0,24 - 6531: 0,25 - 6532: 0,26 - 6533: -1,26 - 6534: -2,27 - 6535: -4,27 - 6536: -5,26 - 6537: -5,25 - 6538: -5,24 - 6539: -1,25 - 6540: -1,27 - 6541: -3,27 - 6542: -4,26 - 6543: -3,25 - 6544: -1,23 - 6545: -2,22 - 6546: -3,22 - 6547: -3,20 - 6548: -1,24 - 6549: -1,24 - 6550: -2,24 - 6551: -2,22 - 6552: 0,22 - 6553: 0,23 - 6554: -3,23 - 6555: -2,25 - 6556: 0,25 - 6557: -1,26 - 6558: -2,26 - 6559: -4,25 - 6560: -4,24 - 6561: -4,21 - 6562: -5,19 - 6563: -4,19 - 6564: -5,20 - 6565: -4,21 - 6566: 10,29 - 6567: 11,28 - 6568: 11,28 - 6569: 12,29 - 6570: 12,30 - 6571: 11,32 - 6572: 9,31 - 6573: 8,31 - 6574: 8,28 - 6575: 10,28 - 6576: 7,31 - 6577: 7,31 - 6578: 6,36 - 6579: 6,37 - 6580: 3,36 - 6581: 2,37 - 6582: 0,36 - 6583: -1,37 - 6584: 2,40 - 6585: 4,39 - 6586: 4,37 - 6587: 4,37 - 6588: 3,37 - 6589: 10,40 - 6590: 10,40 - 6591: 9,43 - 6592: 9,42 - 6593: 10,42 - 6594: 10,43 - 6595: 11,43 - 6596: 12,43 - 6597: 12,42 - 6598: -25,33 - 6599: -24,32 - 6600: -25,34 - 6601: -23,34 - 6602: -22,34 - 6603: -21,34 - 6604: -20,34 - 6605: -22,33 - 6606: -18,31 - 6607: -17,34 - 6608: -18,34 - 6609: -16,34 - 6610: -17,35 - 6611: -17,35 - 6612: -17,36 - 6613: -18,37 - 6614: -18,42 - 6615: -18,44 - 6616: -18,46 - 6617: -18,48 - 6618: -17,48 - 6619: -17,49 - 6620: -18,51 - 6621: -17,51 - 6622: -16,51 - 6623: -17,51 - 6624: -14,47 - 6625: -14,46 - 6626: -13,46 - 6627: -11,46 - 6628: -11,46 - 6629: -11,49 - 6630: -12,49 - 6631: -14,49 - 6632: -14,49 - 6633: -14,33 - 6634: -15,33 - 6635: -15,31 - 6636: -16,31 - 6637: -14,29 - 6638: -12,29 - 6639: -14,30 - 6640: -11,28 - 6641: -11,27 - 6642: -9,28 - 6643: -10,30 - 6644: -11,30 - 6645: -12,27 - 6646: -14,27 - 6647: -13,26 - 6648: -14,26 - 6649: -12,22 - 6650: -13,17 - 6651: -12,17 - 6652: -12,9 - 6653: -15,4 - 6654: -16,4 - 6655: -15,3 - 6656: -16,3 - 6657: -18,3 - 6658: -19,3 - 6659: -20,6 - 6660: -21,6 - 6661: -22,5 - 6662: -23,4 - 6663: -26,4 - 6664: -26,6 - 6665: -7,4 - 6666: -10,2 - 6667: -10,0 - 6668: -10,-1 - 6669: -9,-2 - 6670: -9,-2 - 6671: -10,0 - 6672: -10,1 - 6673: -9,-3 - 6674: -10,-3 - 6675: -11,-2 - 6676: -13,-2 - 6677: -14,-2 - 6678: -13,-4 - 6679: -14,-6 - 6680: -12,-5 - 6681: -10,-6 - 6682: -9,-6 - 6683: -12,-6 - 6684: -13,-6 - 6685: -12,-8 - 6686: -13,-8 - 6687: -14,-8 - 6688: -7,-6 - 6689: -7,-5 - 6690: -6,-3 - 6691: -6,-3 - 6692: -4,-2 - 6693: -5,-2 - 6694: -2,-4 - 6695: -3,-5 - 6696: -4,-5 - 6697: -6,-6 - 6698: -7,-6 - 6699: 1,-2 - 6700: 1,-1 - 6701: 1,4 - 6702: 0,4 - 6703: -5,5 - 6704: 10,2 - 6705: 10,1 - 6706: 11,0 - 6707: 10,-4 - 6708: 10,0 - 6709: 13,5 - 6710: 13,6 - 6711: 20,5 - 6712: 19,4 - 6713: 22,5 - 6714: 25,8 - 6715: 25,9 - 6716: 25,10 - 6717: 25,9 - 6718: -35,7 - 6719: -36,7 - 6720: -38,14 - 6721: -40,20 - 6722: -41,30 - 6723: -41,30 - 6724: -45,30 - 6725: -45,30 - 6726: -46,31 - 6727: -46,33 - 6728: -48,31 - 6729: -47,32 - 6730: -55,31 - 6731: -56,31 - 6732: -49,36 - 6733: -50,36 - 6734: -48,45 - 6735: -49,46 - 6736: -51,46 - 6737: -53,47 - 6738: -57,47 - 6739: -57,36 - 6740: -57,35 - 6741: -56,35 - 6742: -56,36 - 6743: -57,32 - 6744: -58,31 - 6745: -59,29 - 6746: -59,30 - 6747: -58,26 - 6748: -59,26 - 6749: -58,28 - 6750: -58,23 - 6751: -58,22 - 6752: -59,21 - 6753: -58,18 - 6754: -59,22 - 6755: -59,23 - 6756: -60,24 - 6757: -60,24 - 6758: -57,14 - 6759: -58,15 - 6760: -59,15 - 6761: -59,17 - 6762: -59,20 - 6763: -57,7 - 6764: -57,6 - 6765: -58,6 - 6766: -59,7 - 6767: -59,4 - 6768: -59,3 - 6769: -60,5 - 6770: -60,6 - 6771: -60,5 - 6772: -60,4 - 6773: -62,6 - 6774: -68,6 - 6775: -69,6 - 6776: -71,4 - 6777: -72,4 - 6778: -73,4 - 6779: -75,6 - 6780: -76,6 - 6781: -73,6 - 6782: -52,4 - 6783: -54,4 - 6784: -55,4 - 6785: -54,4 - 6786: -53,5 - 6787: -46,4 - 6788: -45,4 - 6789: -48,4 - 6790: -49,3 - 6791: -59,2 - 6792: -59,-4 - 6793: -59,-8 - 6794: -50,3 - 6795: -31,31 - 6796: -29,31 - 6797: -28,31 - 6798: -28,31 - 6799: -47,49 - 6800: -72,33 - 6801: -71,33 - 6802: -71,33 - 6803: -73,34 - 6804: -73,34 - 6805: -75,32 - 6806: -69,34 - 6807: -70,33 - 6808: -72,33 - 6809: -72,35 - 6810: -73,35 - 6811: -74,34 - 6812: -74,28 - 6813: -64,31 - 6814: -64,31 - 6815: -66,28 - 6816: -65,27 - 6817: -64,26 - 6818: -65,21 - 6831: 1,23 - 6832: 1,23 - 6833: 1,23 - 6834: 1,29 - 6835: 1,30 - 6836: 1,30 - 6837: 1,29 - 6838: 1,30 - 6839: 6,29 - 6840: 6,28 - 6841: 6,28 - 6842: 6,29 - 6843: 6,29 - 6844: 5,33 - 6845: 5,33 - 6846: 1,33 - 6847: 1,33 - 6848: 1,33 - 6849: 3,35 - 6850: 3,35 - 6851: 3,35 - 6852: 3,35 - 6853: 5,25 - 6854: 5,24 - 6855: 5,25 - 6856: 5,19 - 6857: 5,19 - 6858: 8,19 - 6859: 8,19 - 6860: 8,19 - 6861: -52,7 - 6862: -51,7 - 6863: -55,18 - 6864: -55,18 - 6865: -55,18 - 6866: -55,20 - 6867: -54,20 - 6868: -53,19 - 6869: -53,18 - 6870: -53,18 - 6871: -23,32 - 6872: -22,31 - 6873: -23,31 - 6874: -26,34 - 6875: -26,32 - 6876: -31,32 - 6877: -30,33 - 6881: -20,33 - 6882: -20,33 - 6883: -19,33 - 6884: -24,33 - 6885: -21,35 - 7167: -46,-10 - 7168: -45,-10 - 7169: -44,-10 - 7170: -42,-11 - 7171: -41,-11 - 7172: -41,-12 - 7173: -44,-12 - 7174: -45,-12 - 7175: -45,-13 - 7176: -43,-14 - 7177: -41,-14 - 7178: -41,-14 - 7179: -43,-14 - 7180: -45,-14 - 7181: -46,-14 - 7182: -46,-12 - 7183: -46,-11 - 7184: -43,-11 - 7185: -40,-11 - 7186: -39,-12 - 7187: -39,-13 - 7188: -41,-13 - 7189: -43,-13 - 7190: -44,-13 - 7191: -43,-14 - 7192: -40,-14 - 7193: -38,-14 - 7194: -38,-12 - 7195: -39,-11 - 7196: -40,-10 - 7197: -41,-10 - 7198: -42,-10 - 7199: -43,-10 - 7200: -43,-12 - 7201: -42,-12 - 7202: -42,-13 - 7277: -43,1 - 7278: -43,1 - 7286: -43,66 - 7287: -43,66 - 7288: -43,66 - 7294: -73,15 - 7295: -74,15 - 7296: -74,15 - 7297: -75,15 - 7298: -74,15 - 7337: -17,54 - 7338: -18,54 - 7339: -18,55 - 7340: -17,55 - 7341: -16,56 - 7342: -17,57 - 7343: -17,56 - 7344: -18,57 - 7345: -16,55 - 7346: -16,54 - 7743: 23,13 - 7744: 23,13 - 7745: 22,11 - 7746: 22,12 - 7747: 22,13 - 7748: 24,13 - 7749: 25,14 - 7750: 25,15 - 7751: 25,16 - 7752: 25,18 - 7753: 25,18 - 7754: 26,15 - 7755: 26,15 - 7756: 26,13 - 7757: 25,12 - 7758: 25,11 - 7759: 25,13 - 7760: 26,13 - 7971: -3,31 - 7972: -3,32 - 7973: -2,31 - 7974: -3,29 - 7998: -64,60 - 7999: -64,59 - 8000: -64,58 - 8001: -66,57 - - node: - cleanable: True - angle: 3.141592653589793 rad - color: '#FFFFFFFF' - id: DirtHeavy - decals: - 2573: -18,22 - 2574: -17,22 - 2575: -16,22 - 2576: -16,23 - 2577: -17,24 - 2578: -18,23 - 2579: -16,23 - 2580: -16,25 - 2581: -18,26 - 2582: -18,24 - 2583: -16,25 - 2584: -17,26 - 2585: -17,26 - 2586: -17,24 - - node: - cleanable: True - color: '#FFFFFFFF' - id: DirtHeavyMonotile - decals: - 7761: 26,13 - 7762: 26,12 - 7763: 26,11 - 7764: 26,11 - 7765: 26,10 - 7766: 25,13 - 7767: 24,13 - 7768: 25,15 - 7769: 24,15 - 7770: 24,17 - 7771: 23,15 - 7772: 22,17 - 7773: 23,16 - 7774: 23,13 - 7775: 22,12 - 7997: -63,60 - - node: - color: '#FFFFFFFF' - id: DirtLight - decals: - 1616: -30,52 - 1617: -29,53 - 1618: -27,54 - 1619: -27,54 - 1620: -28,55 - 1621: -30,54 - 1622: -29,53 - 1631: -44,50 - 1632: -44,50 - 1633: -44,49 - 1634: -40,45 - 1667: -43,36 - 1668: -43,37 - 1669: -44,39 - 1670: -45,37 - 1671: -43,36 - 1672: -40,38 - 1673: -37,39 - 1674: -39,40 - 1675: -42,38 - 1676: -46,38 - 1677: -40,35 - 1678: -39,39 - 1679: -41,38 - 1680: -44,37 - 1681: -41,39 - 1682: -37,36 - 1683: -40,36 - 1684: -43,37 - 1685: -36,37 - 1686: -35,38 - 1687: -35,38 - 1688: -35,37 - 1689: -35,35 - 1925: -54,46 - 1926: -47,40 - 1927: -48,37 - 2621: 3,27 - 2622: 13,28 - 2623: 10,37 - 6975: 25,24 - 6976: 26,24 - 6977: 27,24 - 6978: 28,24 - 6979: 28,25 - 6980: 26,25 - 6981: 25,25 - 6982: 25,26 - 6983: 26,26 - 6984: 27,25 - 6985: 27,25 - 6986: 28,26 - 6987: 27,26 - 6988: 26,26 - 6989: 25,26 - 6990: 26,27 - 6991: 28,27 - 6992: 28,27 - 6993: 28,28 - 6994: 26,28 - 6995: 25,27 - 6996: 25,27 - 6997: 25,28 - 6998: 27,25 - 6999: 27,25 - 7000: 27,24 - 7001: 25,23 - 7002: 27,23 - 7003: 28,23 - 7004: 27,23 - 7082: -75,-10 - 7083: -75,-10 - 7084: -76,-11 - 7085: -76,-12 - 7086: -75,-12 - 7087: -74,-11 - 7088: -74,-10 - 7089: -73,-10 - 7090: -74,-11 - 7091: -73,-11 - 7092: -72,-10 - 7093: -71,-11 - 7094: -70,-12 - 7095: -67,-12 - 7096: -68,-12 - 7097: -69,-12 - 7098: -70,-11 - 7099: -70,-11 - 7100: -69,-11 - 7101: -65,-11 - 7102: -62,-11 - 7103: -63,-12 - 7104: -63,-12 - 7105: -60,-11 - 7106: -60,-12 - 7107: -60,-12 - 7108: -60,-12 - 7109: -60,-10 - 7110: -62,-10 - 7111: -64,-10 - 7112: -65,-10 - - node: - cleanable: True - color: '#FFFFFFFF' - id: DirtLight - decals: - 258: -9,1 - 259: -9,0 - 260: -10,0 - 261: -9,1 - 262: -7,2 - 263: -7,1 - 264: -7,-1 - 265: -7,-3 - 266: -6,-4 - 267: -5,-3 - 268: -3,-2 - 269: -2,-2 - 270: -2,-3 - 271: -2,-4 - 272: -3,-5 - 273: -4,-5 - 274: -6,-5 - 275: -10,-4 - 276: -11,-4 - 277: -12,-5 - 278: -13,-5 - 279: -14,-5 - 288: -18,-12 - 289: -17,-11 - 290: -15,-12 - 291: -13,-11 - 292: -13,-12 - 293: -12,-13 - 294: -12,-14 - 295: -13,-14 - 307: 4,-11 - 308: 5,-11 - 309: 5,-12 - 310: -11,5 - 311: -9,6 - 312: -5,5 - 313: -5,4 - 314: -3,4 - 315: 0,6 - 316: 2,7 - 317: 4,5 - 318: 5,4 - 319: 7,5 - 320: 7,5 - 321: 6,5 - 322: 7,5 - 323: 9,6 - 324: 11,5 - 325: 12,5 - 326: 15,5 - 327: 18,6 - 328: 21,5 - 329: 20,4 - 330: 20,5 - 331: 21,6 - 332: 26,5 - 333: 27,6 - 334: 27,7 - 335: 28,9 - 336: 27,11 - 337: 25,12 - 338: 27,14 - 339: 27,15 - 340: 27,17 - 341: 25,17 - 342: 26,19 - 343: 27,19 - 370: 10,-3 - 371: 10,-1 - 372: 10,0 - 373: 4,3 - 374: 4,5 - 375: 1,5 - 376: 0,4 - 377: 2,3 - 378: 2,4 - 379: 2,6 - 380: 2,6 - 381: 1,4 - 382: 1,-2 - 383: 2,-1 - 384: 2,-2 - 385: 1,-3 - 386: 1,-1 - 387: 2,-1 - 388: 2,-2 - 389: 2,-3 - 390: 1,-2 - 391: 2,-1 - 409: -9,9 - 410: -9,8 - 411: -9,8 - 412: -13,12 - 413: -12,12 - 414: -13,13 - 415: -13,9 - 416: -13,9 - 417: -12,9 - 418: -13,10 - 419: -16,14 - 420: -18,12 - 421: -9,12 - 422: -8,12 - 423: -12,13 - 424: -13,15 - 425: -12,16 - 426: -12,16 - 427: -13,15 - 428: -13,17 - 429: -12,18 - 430: -14,17 - 431: -16,17 - 432: -17,17 - 433: -18,16 - 434: -16,18 - 435: -12,18 - 436: -13,17 - 437: -13,18 - 438: -13,20 - 439: -14,20 - 440: -13,19 - 441: -12,21 - 442: -13,22 - 443: -13,22 - 444: -14,22 - 445: -13,22 - 446: -13,22 - 447: -13,24 - 448: -14,25 - 449: -13,24 - 450: -12,23 - 451: -13,25 - 452: -13,27 - 453: -12,27 - 454: -13,27 - 489: -3,33 - 490: -4,34 - 491: -4,32 - 492: -4,32 - 493: -4,30 - 494: -2,30 - 495: -1,30 - 496: 0,31 - 497: -1,30 - 498: -2,29 - 499: -3,29 - 525: -2,20 - 526: -2,21 - 527: -3,25 - 528: -1,25 - 529: 0,25 - 530: 0,24 - 531: -1,23 - 532: -2,24 - 533: -2,25 - 534: -2,24 - 535: -3,22 - 536: -3,21 - 538: -12,31 - 539: -13,31 - 540: -13,31 - 541: -13,29 - 542: -14,29 - 543: -13,27 - 544: -10,9 - 545: -11,8 - 546: -6,-15 - 547: -6,-15 - 548: -8,-13 - 549: 0,-15 - 550: 0,-16 - 551: 0,-15 - 552: 0,-15 - 553: 1,-14 - 554: 2,-14 - 555: 2,-15 - 556: 1,-15 - 557: 1,-15 - 558: 15,-10 - 559: 14,-10 - 560: 14,-9 - 561: 15,-8 - 562: 14,-8 - 563: 13,-8 - 564: 14,-10 - 565: 15,-11 - 566: 15,-11 - 567: 14,-12 - 568: 13,-11 - 569: 13,-10 - 570: 15,-11 - 571: 15,-9 - 572: 13,-8 - 573: 13,-8 - 589: 19,-1 - 590: 20,-1 - 591: 21,-1 - 592: 20,-3 - 593: 20,-3 - 594: 19,-2 - 595: 20,0 - 596: 20,1 - 597: 19,1 - 598: 19,0 - 599: 20,2 - 600: 19,2 - 601: 19,2 - 602: 20,0 - 659: -17,28 - 660: -16,28 - 661: -18,28 - 662: -17,27 - 663: -9,27 - 664: -10,28 - 665: -7,29 - 666: -7,30 - 667: -8,30 - 668: -11,29 - 669: -5,29 - 670: -5,30 - 671: -5,31 - 672: -5,32 - 673: -5,33 - 674: -4,33 - 675: -3,34 - 676: -2,34 - 677: 0,33 - 678: 0,32 - 679: 0,31 - 680: -1,30 - 681: -2,29 - 682: -3,29 - 683: -4,30 - 684: -4,30 - 685: -5,30 - 686: -9,29 - 687: -8,29 - 688: -8,28 - 689: -9,28 - 690: -9,29 - 691: -8,29 - 692: -8,28 - 755: -45,-8 - 756: -46,-7 - 757: -44,-8 - 758: -44,-8 - 759: -44,-7 - 760: -45,-7 - 795: -41,4 - 796: -41,5 - 797: -42,3 - 798: -41,1 - 799: -41,0 - 800: -42,1 - 801: -42,5 - 802: -41,6 - 803: -38,6 - 804: -35,5 - 805: -34,5 - 806: -34,3 - 807: -33,2 - 808: -32,4 - 809: -33,5 - 810: -35,5 - 811: -34,4 - 812: -33,1 - 813: -33,1 - 814: -34,1 - 815: -35,3 - 816: -36,5 - 817: -37,5 - 818: -37,7 - 819: -35,7 - 820: -35,7 - 821: -37,7 - 822: -38,7 - 823: -35,6 - 824: -32,5 - 825: -31,5 - 826: -33,6 - 827: -33,6 - 828: -36,6 - 829: -37,4 - 830: -37,3 - 831: -38,3 - 832: -39,2 - 833: -38,0 - 834: -37,2 - 835: -39,2 - 836: -38,0 - 837: -37,0 - 838: -37,1 - 839: -38,1 - 877: -29,5 - 878: -30,5 - 879: -30,4 - 880: -27,5 - 881: -27,6 - 882: -28,6 - 883: -27,5 - 884: -24,4 - 885: -21,5 - 886: -20,5 - 887: -22,6 - 888: -21,5 - 889: -17,4 - 890: -16,5 - 891: -16,6 - 892: -18,6 - 893: -19,6 - 894: -22,6 - 895: -25,5 - 896: -27,5 - 897: -24,4 - 898: -21,4 - 899: -17,4 - 900: -17,5 - 901: -20,6 - 902: -23,6 - 903: -25,6 - 904: -28,5 - 905: -29,5 - 906: -30,4 - 907: -27,4 - 908: -21,4 - 909: -19,4 - 910: -17,5 - 911: -20,6 - 912: -26,5 - 913: -29,5 - 914: -30,5 - 915: -19,6 - 916: -20,7 - 917: -21,7 - 918: -21,7 - 919: -18,4 - 920: -18,3 - 921: -16,3 - 922: -17,3 - 923: -18,3 - 1237: -38,9 - 1238: -39,11 - 1239: -39,11 - 1240: -38,12 - 1241: -38,14 - 1242: -38,13 - 1243: -37,15 - 1244: -38,16 - 1245: -39,16 - 1246: -39,15 - 1247: -37,15 - 1248: -38,16 - 1249: -38,17 - 1250: -39,17 - 1251: -38,17 - 1252: -37,19 - 1253: -38,21 - 1254: -39,20 - 1255: -38,21 - 1256: -39,21 - 1257: -40,21 - 1258: -38,21 - 1259: -37,23 - 1260: -37,25 - 1261: -38,22 - 1262: -38,21 - 1263: -37,23 - 1264: -38,26 - 1265: -39,26 - 1266: -38,28 - 1267: -37,30 - 1268: -38,32 - 1269: -38,33 - 1270: -39,32 - 1271: -39,31 - 1272: -39,32 - 1273: -42,32 - 1274: -43,31 - 1275: -44,33 - 1276: -45,33 - 1277: -44,31 - 1278: -43,31 - 1279: -40,32 - 1280: -36,33 - 1281: -33,33 - 1282: -30,32 - 1283: -31,33 - 1284: -31,33 - 1285: -27,32 - 1286: -27,33 - 1287: -29,33 - 1288: -24,33 - 1289: -22,33 - 1290: -23,32 - 1291: -22,32 - 1292: -21,32 - 1293: -23,31 - 1294: -22,32 - 1295: -19,33 - 1296: -16,32 - 1297: -16,31 - 1298: -17,32 - 1299: -16,33 - 1300: -18,33 - 1301: -21,33 - 1302: -25,33 - 1303: -26,32 - 1304: -24,27 - 1305: -23,26 - 1306: -24,27 - 1307: -27,28 - 1308: -26,27 - 1309: -24,33 - 1310: -27,34 - 1311: -30,33 - 1312: -32,33 - 1313: -33,33 - 1314: -36,33 - 1315: -39,32 - 1316: -41,32 - 1317: -43,32 - 1318: -45,32 - 1319: -49,33 - 1320: -50,32 - 1321: -49,31 - 1322: -48,32 - 1323: -47,31 - 1324: -47,31 - 1325: -47,32 - 1326: -49,33 - 1327: -52,33 - 1328: -55,33 - 1329: -57,32 - 1330: -57,31 - 1331: -55,33 - 1332: -54,32 - 1333: -56,32 - 1334: -58,31 - 1335: -58,30 - 1336: -59,28 - 1337: -58,27 - 1338: -57,27 - 1339: -59,26 - 1340: -59,23 - 1341: -57,22 - 1342: -57,24 - 1343: -59,24 - 1344: -59,23 - 1345: -59,21 - 1346: -59,19 - 1347: -59,16 - 1348: -58,14 - 1349: -57,14 - 1350: -57,16 - 1351: -58,16 - 1352: -59,14 - 1353: -54,18 - 1354: -55,18 - 1355: -54,20 - 1356: -55,20 - 1357: -54,18 - 1358: -53,18 - 1359: -53,20 - 1360: -54,20 - 1361: -58,15 - 1362: -53,21 - 1363: -53,21 - 1364: -55,21 - 1365: -55,21 - 1366: -53,20 - 1367: -53,21 - 1368: -59,15 - 1369: -58,13 - 1370: -58,11 - 1371: -58,8 - 1372: -58,9 - 1373: -59,10 - 1374: -57,11 - 1375: -57,6 - 1376: -58,5 - 1377: -59,6 - 1378: -62,5 - 1379: -63,4 - 1380: -63,4 - 1381: -64,4 - 1382: -66,4 - 1383: -66,4 - 1384: -62,6 - 1385: -61,7 - 1386: -64,6 - 1387: -68,6 - 1388: -71,5 - 1389: -71,4 - 1390: -73,4 - 1391: -74,6 - 1392: -74,6 - 1393: -75,6 - 1394: -76,5 - 1395: -76,4 - 1396: -75,5 - 1397: -59,1 - 1398: -59,1 - 1399: -58,2 - 1400: -57,1 - 1401: -57,0 - 1402: -58,-1 - 1403: -58,-3 - 1404: -57,-4 - 1405: -58,-5 - 1406: -59,-5 - 1407: -59,-7 - 1408: -58,-10 - 1409: -58,-7 - 1410: -58,-5 - 1411: -59,-5 - 1412: -59,-8 - 1413: -57,-9 - 1414: -58,-10 - 1415: -58,-12 - 1416: -50,4 - 1417: -50,4 - 1418: -51,4 - 1419: -49,3 - 1420: -45,6 - 1421: -46,5 - 1422: -47,4 - 1423: -46,4 - 1424: -45,4 - 1425: -48,6 - 1426: -41,8 - 1427: -41,8 - 1428: -42,9 - 1429: -43,10 - 1430: -43,10 - 1431: -43,11 - 1432: -42,11 - 1433: -41,11 - 1434: -41,11 - 1435: -43,10 - 1436: -42,9 - 1437: -43,8 - 1438: -41,9 - 1439: -42,10 - 1440: -41,9 - 1441: -52,12 - 1448: -54,28 - 1449: -55,28 - 1450: -54,28 - 1451: -52,28 - 1452: -52,28 - 1453: -49,28 - 1454: -49,29 - 1455: -52,29 - 1456: -55,28 - 1595: -75,4 - 1596: -76,4 - 1597: -76,5 - 1996: -8,42 - 1997: -9,43 - 1998: -9,40 - 1999: -7,40 - 2000: -7,43 - 2001: -9,41 - 2002: -9,39 - 2003: -6,40 - 2004: -7,43 - 2005: -8,44 - 2006: -10,42 - 2007: -8,39 - 2008: -6,41 - 2489: -40,-8 - 2490: -40,-7 - 2491: -41,-6 - 2492: -41,-6 - 2493: -39,-6 - 2494: -41,-5 - 2495: -42,-4 - 2496: -42,-6 - 2497: -42,-4 - 2498: -41,-3 - 2499: -40,-2 - 2500: -38,-3 - 2501: -39,-3 - 2502: -39,-4 - 2503: -40,-2 - 2504: -41,-4 - 2505: -40,-4 - 2506: -39,-3 - 2507: -41,-2 - 2508: -41,-3 - 2509: -39,-3 - 2510: -38,-4 - 2511: -39,-6 - 2512: -36,-8 - 2513: -35,-8 - 2514: -36,-8 - 2515: -35,-7 - 2516: -33,-8 - 2517: -33,-8 - 2518: -35,-8 - 2519: -34,-8 - 2520: -34,-9 - 2521: -34,-10 - 2522: -35,-10 - 2523: -34,-10 - 2524: -34,-11 - 2525: -33,-11 - 2526: -32,-9 - 2527: -34,-8 - 2528: -37,-7 - 2529: -38,-7 - 2530: -38,-8 - 2531: -37,-8 - 2532: -39,-7 - 2533: -39,-8 - 2534: -39,-8 - 2535: -40,-5 - 2536: -40,-6 - 2537: -39,-7 - 2538: -38,-5 - 2539: -40,-6 - 2982: 7,12 - 2983: 6,12 - 2984: 7,11 - 2985: 10,12 - 2986: 11,12 - 2987: 11,11 - 2988: 9,12 - 2989: 8,12 - 2990: 11,12 - 2991: 10,13 - 2992: 7,12 - 2993: 10,13 - 2994: 10,15 - 2995: 8,16 - 2996: 8,16 - 2997: 10,16 - 2998: 8,16 - 2999: 6,16 - 3000: 8,16 - 3001: 10,16 - 3002: 10,17 - 3003: 8,16 - 3004: 8,17 - 3005: 7,17 - 3006: 7,17 - 3007: 9,20 - 3008: 10,20 - 3009: 12,20 - 3010: 12,20 - 3011: 11,20 - 3012: 11,18 - 3013: 11,16 - 3014: 10,15 - 3015: 11,15 - 3016: 11,15 - 3017: 10,14 - 3018: 10,14 - 3019: 11,14 - 3020: 8,15 - 3021: 8,16 - 3022: 7,16 - 3023: 9,16 - 3024: 9,16 - 3025: 3,16 - 3026: 0,17 - 3027: -1,16 - 3028: -2,15 - 3029: -2,15 - 3030: -2,15 - 3031: -2,17 - 3032: -1,17 - 3033: 2,16 - 3034: 3,16 - 3035: 3,15 - 3036: 2,16 - 3037: 0,15 - 3038: 0,15 - 3039: 1,15 - 3040: 3,14 - 3041: 4,14 - 3042: 4,15 - 3043: 4,16 - 3044: 2,16 - 3045: -1,15 - 3046: 4,20 - 3047: 3,21 - 3048: 2,21 - 3049: 2,22 - 3050: 3,22 - 3051: 4,22 - 3052: 3,23 - 3053: 2,23 - 3054: 2,25 - 3055: 3,26 - 3056: 4,26 - 3057: 4,25 - 3058: 3,26 - 3059: 2,27 - 3060: 5,28 - 3061: 5,29 - 3062: 4,29 - 3063: 3,29 - 3064: 2,29 - 3065: 4,29 - 3066: 5,30 - 3067: 3,30 - 3068: 3,30 - 3069: 4,30 - 3070: 2,32 - 3071: 2,31 - 3072: 3,32 - 3073: 3,34 - 3074: 3,34 - 3075: 4,33 - 3076: 4,33 - 3077: 6,25 - 3078: 6,25 - 3079: 6,24 - 3080: 7,23 - 3081: 9,23 - 3082: 8,24 - 3083: 8,23 - 3084: 10,22 - 3085: 10,22 - 3086: 7,23 - 3087: 5,23 - 3088: 9,24 - 3089: 9,25 - 3090: 8,24 - 3091: 12,29 - 3092: 11,29 - 3093: 9,29 - 3094: 8,28 - 3095: 10,28 - 3096: 9,29 - 3097: 7,29 - 3098: 10,28 - 3099: 12,29 - 3100: 11,31 - 3101: 9,31 - 3102: 7,30 - 3103: 8,29 - 3104: 12,28 - 3105: 12,29 - 3106: 6,34 - 3107: 9,34 - 3108: 9,34 - 3109: 12,34 - 3110: 12,35 - 3111: 12,36 - 3112: 7,36 - 3113: 6,37 - 3114: 6,37 - 3115: 12,36 - 3116: 12,37 - 3117: 12,36 - 3118: 11,34 - 3119: 9,34 - 3120: 9,33 - 3121: 11,33 - 3122: 12,33 - 3123: 3,36 - 3124: 4,36 - 3125: 4,38 - 3126: 2,40 - 3127: 0,39 - 3128: -1,38 - 3129: 0,36 - 3130: 2,39 - 3131: 0,40 - 3132: 0,38 - 3133: -1,37 - 3134: 0,36 - 3321: -2,10 - 3322: -2,10 - 3323: -3,9 - 3324: -1,8 - 3325: 0,8 - 3326: 1,8 - 3327: 1,10 - 3328: 0,10 - 3329: -2,10 - 3330: 0,9 - 3331: 1,9 - 3332: 0,9 - 3333: -3,8 - 3661: -65,54 - 3662: -66,55 - 3663: -65,54 - 3664: -64,53 - 3665: -63,52 - 3666: -62,55 - 3667: -65,55 - 3668: -66,54 - 3669: -64,51 - 3670: -60,50 - 3671: -60,50 - 3672: -61,51 - 3673: -63,51 - 3674: -61,51 - 3675: -62,52 - 3676: -63,53 - 3677: -63,53 - 3678: -61,52 - 3679: -60,52 - 3680: -60,53 - 3681: -62,53 - 3682: -61,54 - 3683: -61,55 - 3684: -61,55 - 3685: -64,55 - 3686: -65,54 - 3687: -65,53 - 3688: -63,51 - 3689: -61,51 - 3690: -57,54 - 3691: -57,53 - 3692: -57,54 - 3693: -57,54 - 3694: -58,53 - 3695: -57,55 - 3696: -58,57 - 3697: -57,58 - 3698: -55,57 - 3699: -53,57 - 3707: -53,58 - 3708: -56,58 - 3709: -59,58 - 3710: -58,56 - 3711: -58,55 - 3712: -56,54 - 3713: -52,54 - 3714: -51,54 - 3715: -52,54 - 3716: -52,57 - 3717: -54,57 - 3718: -56,56 - 3719: -57,55 - 3720: -55,54 - 3721: -55,55 - 3722: -56,56 - 3723: -56,55 - 3724: -55,55 - 3725: -53,55 - 3726: -47,55 - 3727: -47,55 - 3728: -47,54 - 3729: -47,54 - 3730: -49,55 - 3731: -49,55 - 3732: -49,50 - 3733: -47,51 - 3734: -47,50 - 3735: -47,50 - 3736: -47,51 - 3737: -49,57 - 3738: -49,57 - 3739: -48,60 - 3740: -49,61 - 3741: -49,60 - 3742: -47,58 - 3743: -47,58 - 3744: -48,58 - 3745: -49,62 - 3746: -49,61 - 3747: -48,58 - 3748: -47,61 - 3749: -47,62 - 3750: -43,63 - 3751: -44,62 - 3752: -44,62 - 3753: -44,64 - 3754: -43,64 - 3755: -43,63 - 3756: -43,62 - 3757: -42,61 - 3758: -42,64 - 3759: -43,65 - 3760: -44,64 - 3761: -44,63 - 3762: -48,65 - 3763: -47,65 - 3764: -48,65 - 3765: -46,64 - 3766: -48,64 - 3767: -49,64 - 3768: -51,64 - 3769: -53,65 - 3770: -45,64 - 3771: -46,65 - 3772: -46,65 - 3773: -46,64 - 3774: -52,64 - 3775: -52,64 - 3776: -53,63 - 3777: -52,61 - 3778: -51,60 - 3779: -52,61 - 3780: -54,60 - 3781: -57,60 - 3782: -60,61 - 3783: -62,60 - 3784: -62,60 - 3785: -59,60 - 3786: -57,61 - 3787: -55,61 - 3788: -55,60 - 3789: -59,61 - 3790: -60,61 - 3791: -57,60 - 3792: -55,60 - 3793: -56,61 - 3794: -57,61 - 3795: -59,61 - 3796: -53,82 - 3797: -53,83 - 3798: -53,83 - 3799: -52,86 - 3800: -51,88 - 3801: -52,90 - 3802: -53,90 - 3803: -53,89 - 3804: -53,87 - 3805: -53,85 - 3806: -52,84 - 3807: -51,83 - 3808: -50,86 - 3809: -51,88 - 3810: -52,88 - 3811: -52,87 - 3812: -52,85 - 3813: -52,84 - 3814: -55,84 - 3815: -56,84 - 3816: -56,83 - 3817: -55,82 - 3818: -55,83 - 3819: -55,83 - 3820: -56,83 - 3821: -56,84 - 3822: -55,86 - 3823: -56,86 - 3824: -56,88 - 3825: -55,89 - 3826: -55,90 - 3827: -56,89 - 3828: -54,89 - 3829: -56,89 - 3830: -57,89 - 3831: -57,86 - 3832: -58,88 - 3833: -59,89 - 3834: -60,89 - 3835: -61,88 - 3836: -61,87 - 3837: -60,86 - 3838: -61,89 - 3839: -62,88 - 3840: -62,86 - 3841: -61,85 - 3842: -61,87 - 3843: -62,89 - 3844: -62,87 - 3845: -62,85 - 3846: -60,85 - 3847: -61,86 - 3848: -62,85 - 3849: -61,83 - 3850: -60,84 - 3851: -59,84 - 3852: -61,83 - 3853: -61,83 - 3854: -62,83 - 3855: -59,83 - 3856: -57,84 - 3857: -58,84 - 3858: -58,86 - 3859: -58,85 - 3860: -58,84 - 3861: -58,87 - 3862: -60,88 - 3863: -61,87 - 3864: -61,89 - 3865: -62,89 - 3866: -62,88 - 4075: -58,52 - 4076: -58,50 - 4077: -58,49 - 4078: -57,50 - 4079: -58,51 - 4080: -58,50 - 4081: -55,51 - 4082: -55,50 - 4083: -54,49 - 4084: -55,50 - 4085: -55,52 - 4086: -55,52 - 4087: -52,51 - 4088: -52,51 - 4089: -52,49 - 4090: -52,49 - 4091: -51,50 - 4092: -51,51 - 4093: -52,50 - 4094: -51,49 - 4095: -52,52 - 4452: -61,45 - 4453: -63,45 - 4454: -64,45 - 4455: -65,44 - 4456: -62,44 - 4457: -61,45 - 4458: -63,45 - 4459: -65,45 - 4460: -64,44 - 4461: -62,44 - 4462: -63,45 - 4463: -64,45 - 4464: -63,44 - 4465: -63,44 - 4466: -63,42 - 4467: -64,42 - 4468: -62,42 - 4469: -61,41 - 4470: -61,40 - 4471: -61,38 - 4472: -62,38 - 4473: -62,39 - 4474: -62,40 - 4475: -63,39 - 4476: -63,38 - 4477: -65,39 - 4478: -65,39 - 4479: -65,38 - 4480: -65,41 - 4481: -64,42 - 4482: -63,42 - 4483: -62,42 - 4524: -71,49 - 4525: -73,49 - 4526: -73,48 - 4527: -73,47 - 4528: -72,47 - 4529: -70,48 - 4530: -71,49 - 4531: -71,47 - 4532: -69,47 - 4533: -69,47 - 4534: -70,48 - 4535: -70,49 - 4536: -72,48 - 4537: -72,48 - 4574: -67,50 - 4575: -67,49 - 4576: -68,49 - 4627: -71,54 - 4628: -71,55 - 4629: -71,54 - 4630: -70,53 - 4631: -70,51 - 4632: -70,51 - 4633: -72,52 - 4634: -75,51 - 4635: -73,51 - 4636: -70,54 - 4637: -71,56 - 4638: -71,55 - 4639: -71,54 - 4640: -71,53 - 4702: -60,31 - 4703: -61,33 - 4704: -62,33 - 4705: -62,32 - 4706: -61,31 - 4707: -62,31 - 4708: -62,34 - 4709: -60,33 - 4710: -60,33 - 4711: -60,32 - 4712: -60,31 - 4713: -62,31 - 4718: -82,29 - 4719: -82,30 - 4720: -82,32 - 4721: -83,33 - 4722: -83,31 - 4723: -83,29 - 4724: -83,29 - 4725: -82,33 - 4726: -81,33 - 4727: -79,33 - 4728: -77,33 - 4729: -77,33 - 4730: -79,32 - 4731: -81,32 - 4732: -82,31 - 4733: -81,30 - 4734: -78,30 - 4735: -79,32 - 4736: -80,30 - 4737: -79,29 - 4738: -77,29 - 4739: -79,32 - 4740: -81,31 - 4741: -80,29 - 4742: -78,29 - 4743: -74,35 - 4744: -75,34 - 4745: -74,30 - 4746: -75,31 - 4747: -75,31 - 4748: -75,27 - 4749: -74,25 - 4750: -75,25 - 4751: -74,26 - 4752: -75,25 - 4753: -76,25 - 4754: -75,23 - 4755: -75,25 - 4756: -76,25 - 4757: -77,25 - 4758: -75,24 - 4759: -74,24 - 4760: -75,26 - 4761: -76,26 - 4762: -75,23 - 4763: -74,21 - 4764: -75,20 - 4765: -75,19 - 4766: -75,22 - 4767: -75,23 - 4768: -75,20 - 4769: -75,16 - 4770: -75,15 - 4771: -74,16 - 4772: -74,16 - 4773: -75,17 - 4774: -73,17 - 4775: -72,17 - 4776: -71,17 - 4777: -73,16 - 4778: -74,16 - 4779: -73,15 - 4780: -72,16 - 4781: -75,16 - 4782: -72,15 - 4783: -70,17 - 4784: -71,17 - 4785: -69,16 - 4786: -69,17 - 4787: -71,16 - 4804: -78,21 - 4805: -77,21 - 4806: -77,22 - 4807: -78,22 - 4808: -77,20 - 4809: -79,19 - 4810: -81,20 - 4811: -82,20 - 4812: -83,19 - 4813: -81,18 - 4814: -79,18 - 4815: -77,19 - 4816: -77,19 - 4817: -86,20 - 4818: -86,20 - 4819: -86,21 - 4820: -86,24 - 4821: -86,24 - 4822: -86,23 - 4823: -86,25 - 4824: -86,27 - 4825: -84,27 - 4826: -81,27 - 4827: -80,26 - 4828: -80,25 - 4829: -80,23 - 4830: -81,23 - 4831: -82,22 - 4832: -82,23 - 4833: -82,23 - 4834: -81,23 - 4835: -79,26 - 4836: -80,26 - 4837: -80,25 - 4838: -79,24 - 4839: -79,24 - 4840: -71,31 - 4841: -72,31 - 4842: -71,31 - 4843: -70,31 - 4844: -70,30 - 4845: -70,28 - 4846: -70,28 - 5031: -64,13 - 5032: -65,14 - 5033: -64,11 - 5034: -64,10 - 5035: -64,12 - 5036: -65,13 - 5037: -65,13 - 5038: -65,11 - 5039: -61,12 - 5040: -62,14 - 5041: -62,11 - 5042: -62,10 - 5043: -61,10 - 5044: -62,13 - 7229: -45,-10 - 7230: -46,-10 - 7231: -46,-11 - 7232: -46,-12 - 7233: -45,-13 - 7234: -45,-14 - 7235: -46,-14 - 7236: -43,-14 - 7237: -40,-13 - 7238: -40,-10 - 7239: -41,-9 - 7240: -41,-9 - 7241: -39,-10 - 7242: -38,-11 - 7243: -38,-11 - 7244: -40,-11 - 7245: -41,-11 - 7246: -41,-12 - 7247: -41,-13 - 7248: -42,-12 - 7249: -42,-11 - 7250: -43,-11 - 7251: -40,-13 - 7252: -38,-12 - 7253: -40,-11 - 7254: -42,-12 - 7255: -41,-13 - 7256: -40,-12 - 7257: -42,-13 - 7258: -43,-14 - 7259: -43,-13 - 7260: -42,-14 - 7261: -44,-14 - 7262: -44,-14 - 7263: -44,-14 - 7264: -41,-14 - 7265: -39,-14 - 7266: -38,-14 - 7267: -38,-14 - 7268: -39,-13 - 7269: -38,-12 - 7270: -38,-10 - 7271: -38,-10 - 7272: -39,-11 - 7273: -39,-14 - 7274: -39,-14 - 7275: -41,-14 - 7279: -43,1 - 7280: -43,1 - 7289: -43,66 - 7290: -43,66 - - node: - cleanable: True - angle: 3.141592653589793 rad - color: '#FFFFFFFF' - id: DirtLight - decals: - 2587: -17,26 - 2588: -16,26 - 2589: -16,26 - 2590: -17,25 - 2591: -18,24 - 2592: -18,23 - 2593: -17,22 - 2594: -16,22 - 2595: -17,23 - 2596: -17,22 - 2597: -16,23 - 2598: -17,26 - 2599: -18,26 - 2600: -18,25 - - node: - color: '#FFFFFFFF' - id: DirtMedium - decals: - 1598: -29,54 - 1599: -29,54 - 1600: -30,54 - 1601: -30,53 - 1602: -30,55 - 1603: -28,53 - 1604: -28,52 - 1605: -27,54 - 1606: -27,55 - 1607: -28,55 - 1608: -29,54 - 1609: -29,53 - 1610: -30,53 - 1611: -28,53 - 1612: -27,54 - 1613: -26,54 - 1614: -27,55 - 1615: -29,55 - 1635: -31,47 - 1636: -37,40 - 1690: -35,38 - 1691: -35,38 - 1692: -37,40 - 1693: -38,38 - 1694: -37,36 - 1695: -36,36 - 1696: -37,39 - 1697: -39,39 - 1698: -41,38 - 1699: -41,36 - 1700: -39,37 - 1701: -42,39 - 1702: -44,38 - 1703: -42,35 - 1704: -43,36 - 1705: -44,36 - 1706: -45,36 - 1707: -44,39 - 1708: -38,35 - 1709: -36,35 - 1710: -36,37 - 1711: -39,35 - 1712: -39,34 - 1928: -50,36 - 1929: -50,45 - 1930: -53,46 - 1931: -55,46 - 2624: 12,32 - 2625: 13,34 - 2626: 13,30 - 2627: 12,17 - 6906: -1,42 - 6907: 0,42 - 6908: 1,43 - 6909: 1,42 - 6910: 2,42 - 6911: 2,43 - 6912: 3,44 - 6913: 1,43 - 6914: 1,43 - 6915: 3,44 - 6916: 3,44 - 6917: 4,43 - 6918: 4,42 - 6919: 3,42 - 6920: 2,42 - - node: - cleanable: True - color: '#FFFFFFFF' - id: DirtMedium - decals: - 280: -13,-5 - 281: -14,-4 - 282: -14,-3 - 283: -12,-3 - 284: -11,-3 - 285: -14,-15 - 286: -15,-14 - 287: -17,-13 - 344: 27,20 - 345: 26,19 - 346: 26,17 - 347: 27,16 - 348: 27,15 - 349: 27,12 - 350: 26,8 - 351: 26,6 - 352: 23,5 - 353: 22,4 - 354: 20,5 - 355: 18,5 - 356: 15,6 - 357: 14,5 - 358: 11,6 - 359: 9,6 - 360: 11,3 - 361: 11,2 - 362: 10,-1 - 363: 11,-3 - 364: 11,-1 - 365: 10,-2 - 366: 10,-3 - 367: 11,1 - 368: 11,1 - 369: 11,-3 - 761: -42,1 - 762: -42,1 - 763: -41,3 - 764: -40,4 - 765: -38,4 - 766: -35,5 - 767: -38,5 - 768: -41,5 - 769: -40,5 - 770: -36,5 - 771: -34,5 - 772: -34,3 - 773: -34,1 - 774: -33,1 - 775: -32,4 - 776: -34,6 - 777: -35,6 - 778: -38,6 - 779: -42,6 - 780: -42,5 - 781: -40,3 - 782: -36,4 - 783: -33,4 - 784: -34,1 - 785: -33,1 - 786: -33,3 - 787: -34,4 - 788: -35,2 - 789: -33,1 - 790: -34,4 - 791: -40,5 - 792: -40,4 - 793: -41,3 - 794: -41,3 - 858: -34,0 - 859: -34,0 - 860: -35,0 - 861: -35,1 - 862: -34,2 - 863: -34,3 - 864: -36,4 - 865: -38,5 - 866: -39,5 - 867: -37,5 - 868: -36,6 - 869: -36,6 - 870: -38,7 - 871: -39,7 - 872: -40,6 - 873: -40,5 - 874: -41,4 - 875: -41,3 - 876: -42,2 - 924: -31,4 - 925: -30,5 - 926: -28,5 - 927: -26,5 - 928: -25,4 - 929: -24,4 - 930: -24,5 - 931: -27,6 - 932: -30,6 - 933: -31,5 - 934: -28,5 - 935: -24,6 - 936: -22,6 - 937: -21,5 - 938: -21,5 - 939: -22,4 - 940: -21,4 - 941: -18,5 - 942: -18,5 - 943: -21,5 - 944: -21,5 - 945: -20,5 - 946: -19,5 - 947: -20,4 - 948: -21,4 - 949: -23,5 - 950: -23,5 - 951: -25,4 - 952: -27,4 - 953: -29,4 - 954: -30,5 - 955: -30,6 - 956: -32,6 - 957: -31,6 - 958: -25,6 - 959: -19,6 - 960: -17,6 - 961: -16,5 - 962: -17,4 - 963: -15,4 - 964: -15,4 - 965: -18,4 - 966: -41,2 - 967: -42,2 - 968: -41,1 - 969: -41,0 - 970: -41,0 - 971: -42,4 - 972: -42,4 - 973: -29,6 - 1457: -39,10 - 1458: -38,10 - 1459: -38,10 - 1460: -39,10 - 1461: -39,9 - 1462: -38,12 - 1463: -37,15 - 1464: -37,15 - 1465: -39,15 - 1466: -38,13 - 1467: -37,18 - 1468: -38,21 - 1469: -38,22 - 1470: -39,21 - 1471: -37,21 - 1472: -37,26 - 1473: -38,28 - 1474: -39,28 - 1475: -38,28 - 1476: -38,32 - 1477: -37,33 - 1478: -34,32 - 1479: -32,32 - 1480: -32,31 - 1481: -30,32 - 1482: -28,33 - 1483: -26,33 - 1484: -23,33 - 1485: -22,32 - 1486: -19,32 - 1487: -17,33 - 1488: -17,32 - 1489: -17,31 - 1490: -18,32 - 1491: -20,32 - 1492: -23,27 - 1493: -23,26 - 1494: -26,28 - 1495: -28,29 - 1496: -26,27 - 1497: -17,29 - 1498: -18,28 - 1499: -18,27 - 1500: -32,33 - 1501: -35,33 - 1502: -37,32 - 1503: -34,32 - 1504: -33,33 - 1505: -36,33 - 1506: -35,27 - 1507: -35,25 - 1508: -35,23 - 1509: -33,24 - 1510: -35,27 - 1511: -36,27 - 1512: -36,25 - 1513: -35,24 - 1514: -32,26 - 1515: -37,32 - 1516: -40,33 - 1517: -43,32 - 1518: -44,30 - 1519: -43,32 - 1520: -45,33 - 1521: -48,33 - 1522: -52,32 - 1523: -53,31 - 1524: -55,32 - 1525: -56,33 - 1526: -58,33 - 1527: -59,31 - 1528: -58,28 - 1529: -57,27 - 1530: -59,28 - 1531: -59,29 - 1532: -58,25 - 1533: -58,23 - 1534: -59,22 - 1535: -59,21 - 1536: -59,19 - 1537: -58,17 - 1538: -57,15 - 1539: -57,13 - 1540: -59,13 - 1541: -59,11 - 1542: -58,8 - 1543: -58,7 - 1544: -58,5 - 1545: -57,5 - 1546: -58,6 - 1547: -61,6 - 1548: -62,5 - 1549: -63,5 - 1550: -65,5 - 1551: -66,5 - 1552: -64,4 - 1553: -63,5 - 1554: -65,6 - 1555: -70,6 - 1556: -72,5 - 1557: -72,4 - 1558: -73,6 - 1559: -76,6 - 1560: -75,5 - 1561: -71,6 - 1562: -66,6 - 1563: -62,5 - 1564: -58,3 - 1565: -58,3 - 1566: -59,2 - 1567: -59,1 - 1568: -57,-1 - 1569: -57,2 - 1570: -58,1 - 1571: -58,-2 - 1572: -58,-4 - 1573: -59,-6 - 1574: -58,-9 - 1575: -57,-7 - 1576: -58,-10 - 1577: -58,-10 - 1578: -59,-11 - 1579: -57,-11 - 1580: -58,-11 - 1581: -59,-11 - 1582: -57,-11 - 1583: -55,5 - 1584: -55,5 - 1585: -54,6 - 1586: -55,6 - 1587: -56,5 - 1588: -44,5 - 1589: -46,5 - 1590: -48,4 - 1591: -38,20 - 1592: -37,19 - 1593: -37,17 - 1594: -37,20 - 2009: -7,42 - 2010: -9,44 - 2011: -10,43 - 2012: -10,41 - 2013: -10,39 - 2014: -6,39 - 2015: -6,42 - 2016: -7,44 - 2017: -8,42 - 2018: -7,40 - 2019: -7,41 - 2020: 4,49 - 2021: 2,50 - 2022: 2,52 - 2023: 2,51 - 2024: 4,49 - 2025: 4,51 - 2026: 3,50 - 2027: 11,51 - 2028: 10,51 - 2029: 10,50 - 2030: 11,52 - 2031: 10,51 - 2032: 11,50 - 2033: 10,46 - 2034: 11,45 - 2035: 11,46 - 2036: 10,45 - 2037: 12,44 - 2038: 11,46 - 2039: 10,46 - 2040: 9,46 - 2041: 9,43 - 2042: 9,42 - 2043: 11,42 - 2044: 12,43 - 2045: 10,43 - 2046: 11,42 - 2047: 12,42 - 2048: 10,42 - 2049: 11,43 - 2050: 18,38 - 2051: 21,39 - 2052: 22,38 - 2053: 23,37 - 2054: 20,38 - 2055: 17,38 - 2056: 19,37 - 2057: 22,39 - 2058: 22,40 - 2059: 19,42 - 2060: 17,42 - 2061: 16,40 - 2062: 18,39 - 2063: 20,40 - 2064: 19,42 - 2065: 18,42 - 2066: 18,39 - 2067: 21,42 - 2068: 22,43 - 2069: 23,41 - 2070: 22,40 - 2071: 22,42 - 2072: 20,42 - 2073: 19,40 - 2074: 18,41 - 2075: 18,42 - 2076: 17,40 - 2077: 18,38 - 2078: -21,38 - 2079: -22,37 - 2080: -23,37 - 2081: -22,40 - 2082: -22,42 - 2083: -24,42 - 2084: -22,40 - 2085: -21,39 - 2086: -21,41 - 2087: -21,42 - 2088: -20,40 - 2089: -21,39 - 2090: -21,39 - 2091: -22,42 - 2092: -23,42 - 2282: -22,60 - 2283: -20,59 - 2284: -21,60 - 2285: -20,61 - 2286: -19,63 - 2287: -18,63 - 2288: -18,62 - 2289: -19,62 - 2290: -17,62 - 2291: -15,62 - 2292: -16,63 - 2293: -17,65 - 2294: -16,65 - 2295: -18,66 - 2296: -19,65 - 2297: -18,64 - 2298: -17,65 - 2299: -15,66 - 2300: -14,65 - 2301: -14,64 - 2302: -20,64 - 2303: -21,63 - 2304: -21,62 - 2305: -20,62 - 2306: -21,61 - 2307: -22,59 - 2308: -22,59 - 2309: -13,59 - 2310: -12,59 - 2311: -14,59 - 2312: -14,60 - 2313: -14,62 - 2314: -17,61 - 2315: -19,59 - 2316: -19,57 - 2317: -19,56 - 2318: -19,54 - 2319: -16,53 - 2320: -15,55 - 2321: -15,56 - 2322: -15,53 - 2323: -16,53 - 2324: -16,41 - 2325: -17,41 - 2326: -18,39 - 2327: -17,37 - 2328: -16,38 - 2329: -17,41 - 2330: -17,42 - 2331: -18,40 - 2332: -16,40 - 2333: -16,43 - 2334: -17,45 - 2335: -18,43 - 2336: -18,40 - 2540: -40,-7 - 2541: -39,-6 - 2542: -39,-7 - 2543: -39,-8 - 2544: -41,-6 - 2545: -41,-5 - 2546: -41,-4 - 2547: -42,-6 - 2548: -42,-4 - 2549: -40,-2 - 2550: -38,-3 - 2551: -39,-5 - 2552: -42,-2 - 2553: -42,-2 - 2554: -41,-2 - 2555: -40,-3 - 2556: -35,-8 - 2557: -32,-9 - 2558: -33,-6 - 2559: -32,-6 - 2560: -32,-6 - 2561: -32,-10 - 2562: -33,-10 - 2563: -34,-10 - 2564: -32,-10 - 2565: -34,-10 - 2566: -37,-8 - 2567: -36,-8 - 2568: -35,-8 - 2569: -40,-7 - 2570: -40,-7 - 3135: 6,13 - 3136: 6,12 - 3137: 8,11 - 3138: 10,11 - 3139: 11,13 - 3140: 9,15 - 3141: 7,15 - 3142: 7,15 - 3143: 10,17 - 3144: 9,19 - 3145: 9,19 - 3146: 9,18 - 3147: 9,19 - 3148: 11,20 - 3149: 11,20 - 3150: 11,17 - 3151: 11,15 - 3152: 10,14 - 3153: 9,14 - 3154: 10,12 - 3155: 8,14 - 3156: 8,14 - 3157: 2,15 - 3158: 2,16 - 3159: -1,16 - 3160: -2,16 - 3161: 0,14 - 3162: 3,15 - 3163: 3,16 - 3164: 0,16 - 3165: 0,16 - 3166: 2,15 - 3167: 1,16 - 3168: 0,16 - 3169: -2,17 - 3170: -2,16 - 3171: -2,15 - 3172: 1,14 - 3173: 3,14 - 3174: 4,15 - 3175: 4,17 - 3176: 3,17 - 3177: 1,17 - 3178: 2,20 - 3179: 1,19 - 3180: 4,20 - 3181: 3,20 - 3182: 7,20 - 3183: 6,19 - 3184: 7,19 - 3185: 7,20 - 3186: 6,20 - 3187: 7,19 - 3188: 1,20 - 3189: 1,20 - 3190: 3,20 - 3191: 3,21 - 3192: 2,21 - 3193: 2,22 - 3194: 2,23 - 3195: 2,25 - 3196: 2,25 - 3197: 2,24 - 3198: 3,23 - 3199: 4,22 - 3200: 4,21 - 3201: 4,24 - 3202: 3,25 - 3203: 3,24 - 3204: 4,24 - 3205: 4,25 - 3206: 3,26 - 3207: 2,26 - 3208: 4,27 - 3209: 4,29 - 3210: 2,28 - 3211: 4,28 - 3212: 5,28 - 3213: 4,29 - 3214: 4,28 - 3215: 3,29 - 3216: 2,30 - 3217: 3,31 - 3218: 3,32 - 3219: 3,34 - 3220: 2,33 - 3221: 4,31 - 3222: 4,32 - 3223: 3,32 - 3224: 2,32 - 3225: 6,25 - 3226: 6,25 - 3227: 6,24 - 3228: 6,23 - 3229: 8,22 - 3230: 9,22 - 3231: 10,22 - 3232: 9,23 - 3233: 8,23 - 3234: 9,24 - 3235: 9,25 - 3236: 7,25 - 3237: 9,25 - 3238: 8,26 - 3239: 7,26 - 3240: 10,26 - 3241: 9,26 - 3242: 9,26 - 3243: 12,28 - 3244: 10,29 - 3245: 9,29 - 3246: 8,28 - 3247: 7,28 - 3248: 7,30 - 3249: 8,31 - 3250: 11,31 - 3251: 12,31 - 3252: 12,30 - 3253: 11,30 - 3254: 9,31 - 3255: 7,30 - 3256: 8,29 - 3257: 12,28 - 3258: 6,34 - 3259: 6,34 - 3260: 7,33 - 3261: 9,34 - 3262: 10,34 - 3263: 11,34 - 3264: 12,33 - 3265: 12,36 - 3266: 11,37 - 3267: 10,36 - 3268: 10,36 - 3269: 8,36 - 3270: 7,37 - 3271: 6,35 - 3272: 6,34 - 3273: 11,34 - 3274: 11,36 - 3275: 9,37 - 3276: -1,36 - 3277: 0,36 - 3278: 0,37 - 3279: -1,39 - 3280: 1,40 - 3281: 3,40 - 3282: 4,37 - 3283: 4,36 - 3284: 3,36 - 3285: 2,37 - 3286: 2,38 - 3287: 0,37 - 3288: 1,36 - 3289: 0,37 - 3290: -1,36 - 3291: 0,38 - 3292: -1,39 - 3293: 1,40 - 3294: 2,39 - 3334: -3,10 - 3335: -3,9 - 3336: -2,8 - 3337: 0,9 - 3338: 1,9 - 3339: 1,8 - 3340: 0,10 - 3341: -2,10 - 3342: -3,10 - 3867: -66,54 - 3868: -66,55 - 3869: -66,55 - 3870: -66,53 - 3871: -65,52 - 3872: -63,52 - 3873: -62,53 - 3874: -61,51 - 3875: -62,51 - 3876: -62,50 - 3877: -62,52 - 3878: -62,53 - 3879: -64,54 - 3880: -65,53 - 3881: -64,53 - 3882: -60,54 - 3883: -61,55 - 3884: -62,55 - 3885: -64,55 - 3886: -59,54 - 3887: -60,52 - 3888: -60,51 - 3889: -62,51 - 3890: -61,52 - 3891: -61,52 - 3892: -58,53 - 3893: -59,55 - 3894: -59,55 - 3895: -58,53 - 3896: -58,53 - 3897: -55,53 - 3898: -51,53 - 3899: -51,54 - 3900: -52,54 - 3901: -55,54 - 3902: -57,54 - 3903: -52,55 - 3904: -53,56 - 3905: -53,56 - 3906: -53,55 - 3907: -53,55 - 3908: -56,56 - 3909: -57,56 - 3910: -57,55 - 3911: -58,57 - 3912: -57,58 - 3913: -53,58 - 3914: -51,57 - 3915: -52,56 - 3916: -56,56 - 3917: -56,55 - 3918: -47,54 - 3919: -48,55 - 3920: -49,55 - 3921: -49,55 - 3922: -48,52 - 3923: -49,50 - 3924: -49,49 - 3925: -47,50 - 3926: -47,52 - 3927: -47,52 - 3928: -49,58 - 3929: -49,58 - 3930: -48,57 - 3931: -47,59 - 3932: -47,61 - 3933: -48,61 - 3934: -49,61 - 3935: -49,59 - 3936: -48,58 - 3937: -44,62 - 3938: -44,61 - 3939: -43,63 - 3940: -44,65 - 3941: -44,64 - 3942: -43,62 - 3943: -42,61 - 3944: -42,64 - 3945: -43,65 - 3946: -48,64 - 3947: -48,65 - 3948: -50,65 - 3949: -52,65 - 3950: -52,64 - 3951: -53,63 - 3952: -53,65 - 3953: -52,64 - 3954: -51,61 - 3955: -52,62 - 3956: -53,64 - 3957: -53,64 - 3958: -53,62 - 3959: -53,60 - 3960: -51,60 - 3961: -51,61 - 3962: -53,60 - 3963: -52,60 - 3964: -52,60 - 3965: -56,62 - 3966: -58,61 - 3967: -57,61 - 3968: -55,60 - 3969: -58,60 - 3970: -61,61 - 3971: -62,60 - 3972: -59,60 - 3973: -58,60 - 3974: -60,61 - 3975: -62,61 - 3976: -57,61 - 3977: -53,61 - 3978: -52,61 - 3979: -52,61 - 3980: -53,83 - 3981: -53,82 - 3982: -52,83 - 3983: -51,84 - 3984: -51,83 - 3985: -51,84 - 3986: -52,84 - 3987: -53,85 - 3988: -52,85 - 3989: -51,86 - 3990: -51,89 - 3991: -52,90 - 3992: -53,89 - 3993: -53,88 - 3994: -52,87 - 3995: -51,87 - 3996: -51,87 - 3997: -51,89 - 3998: -51,90 - 3999: -51,89 - 4000: -55,86 - 4001: -56,86 - 4002: -57,86 - 4003: -59,86 - 4004: -55,89 - 4005: -55,90 - 4006: -56,89 - 4007: -56,88 - 4008: -56,88 - 4009: -58,89 - 4010: -60,89 - 4011: -61,88 - 4012: -62,86 - 4013: -62,85 - 4014: -62,84 - 4015: -62,83 - 4016: -62,83 - 4017: -62,86 - 4018: -62,88 - 4019: -61,89 - 4020: -60,88 - 4021: -60,86 - 4022: -61,85 - 4023: -60,84 - 4024: -58,83 - 4025: -58,83 - 4026: -58,87 - 4027: -59,89 - 4028: -61,88 - 4029: -60,87 - 4030: -60,87 - 4031: -55,83 - 4032: -56,84 - 4033: -56,83 - 4034: -55,82 - 4035: -55,84 - 4036: -56,83 - 4037: -56,82 - 4038: -53,82 - 4039: -53,83 - 4040: -51,84 - 4041: -52,85 - 4042: -53,84 - 4043: -52,83 - 4044: -52,85 - 4045: -52,87 - 4046: -52,88 - 4047: -53,86 - 4048: -53,85 - 4049: -57,49 - 4050: -58,49 - 4051: -57,50 - 4052: -58,52 - 4053: -58,49 - 4054: -57,50 - 4055: -58,52 - 4056: -58,51 - 4057: -57,50 - 4058: -57,50 - 4059: -58,51 - 4060: -58,49 - 4061: -55,51 - 4062: -55,52 - 4063: -55,50 - 4064: -54,50 - 4065: -54,51 - 4066: -55,50 - 4067: -54,49 - 4068: -52,52 - 4069: -52,51 - 4070: -52,50 - 4071: -51,49 - 4072: -51,51 - 4073: -52,50 - 4074: -52,49 - 4484: -62,45 - 4485: -64,45 - 4486: -65,45 - 4487: -64,44 - 4488: -62,44 - 4489: -61,45 - 4490: -62,45 - 4491: -63,44 - 4492: -62,40 - 4493: -61,42 - 4494: -61,42 - 4495: -61,40 - 4496: -61,39 - 4497: -61,38 - 4498: -62,38 - 4499: -63,38 - 4500: -64,38 - 4501: -65,39 - 4502: -64,40 - 4503: -65,39 - 4504: -65,38 - 4505: -64,39 - 4506: -62,40 - 4507: -62,41 - 4508: -64,42 - 4509: -64,42 - 4510: -63,40 - 4538: -72,48 - 4539: -73,49 - 4540: -73,48 - 4541: -71,47 - 4542: -70,48 - 4543: -70,49 - 4544: -70,48 - 4545: -69,47 - 4546: -69,49 - 4547: -67,49 - 4548: -68,49 - 4549: -69,49 - 4550: -67,50 - 4551: -67,49 - 4552: -66,48 - 4553: -66,47 - 4554: -66,49 - 4555: -68,49 - 4556: -67,48 - 4557: -67,47 - 4558: -66,47 - 4559: -67,46 - 4560: -66,48 - 4561: -65,48 - 4562: -65,47 - 4563: -67,49 - 4564: -67,50 - 4641: -71,51 - 4642: -73,52 - 4643: -74,52 - 4644: -71,51 - 4645: -70,52 - 4646: -71,55 - 4647: -72,56 - 4648: -70,55 - 4649: -71,56 - 4650: -76,54 - 4651: -77,54 - 4652: -78,54 - 4653: -78,53 - 4654: -78,54 - 4655: -76,54 - 4714: -60,31 - 4715: -62,32 - 4716: -62,33 - 4717: -62,32 - 4847: -72,31 - 4848: -71,31 - 4849: -70,31 - 4850: -70,29 - 4851: -71,30 - 4852: -72,30 - 4853: -72,28 - 4854: -67,31 - 4855: -68,31 - 4856: -68,29 - 4857: -68,27 - 4858: -68,26 - 4859: -68,26 - 4860: -67,25 - 4861: -65,26 - 4862: -66,27 - 4863: -67,27 - 4864: -66,26 - 4865: -64,25 - 4866: -64,27 - 4867: -66,28 - 4868: -67,30 - 4869: -67,30 - 4870: -62,32 - 4871: -62,33 - 4872: -61,32 - 4873: -61,32 - 4874: -62,34 - 4875: -64,30 - 4876: -64,32 - 4877: -64,34 - 4878: -65,34 - 4879: -65,33 - 4880: -64,32 - 4881: -64,33 - 4882: -65,34 - 4883: -67,34 - 4884: -68,34 - 4885: -69,33 - 4886: -69,33 - 4887: -72,34 - 4888: -73,33 - 4889: -74,35 - 4890: -75,35 - 4891: -75,34 - 4892: -74,30 - 4893: -74,30 - 4894: -74,30 - 4895: -75,27 - 4896: -75,25 - 4897: -74,26 - 4898: -74,26 - 4899: -76,26 - 4900: -76,25 - 4901: -75,24 - 4902: -74,24 - 4903: -77,25 - 4904: -77,25 - 4905: -76,24 - 4906: -74,22 - 4907: -74,22 - 4908: -74,20 - 4909: -75,20 - 4910: -75,22 - 4911: -75,17 - 4912: -75,16 - 4913: -74,16 - 4914: -72,16 - 4915: -71,17 - 4916: -73,17 - 4917: -74,16 - 4918: -74,16 - 4919: -71,20 - 4920: -71,20 - 4921: -68,20 - 4922: -66,20 - 4923: -65,22 - 4924: -67,22 - 4925: -79,26 - 4926: -80,26 - 4927: -81,25 - 4928: -80,23 - 4929: -80,23 - 4930: -83,24 - 4931: -82,25 - 4932: -83,25 - 4933: -84,25 - 4934: -84,24 - 4935: -82,26 - 4936: -85,26 - 4937: -86,26 - 4938: -86,26 - 4939: -87,25 - 4940: -85,24 - 4941: -83,24 - 4942: -83,26 - 4943: -84,26 - 4944: -83,25 - 4945: -82,23 - 4946: -84,23 - 4947: -86,24 - 4948: -83,23 - 4949: -82,23 - 4950: -81,22 - 4951: -81,26 - 4952: -82,27 - 4953: -84,27 - 4954: -85,27 - 4955: -85,29 - 4956: -86,29 - 4957: -85,30 - 4958: -86,30 - 4959: -85,20 - 4960: -86,21 - 4961: -86,20 - 4962: -83,19 - 4963: -82,18 - 4964: -80,19 - 4965: -81,20 - 4966: -80,29 - 4967: -82,30 - 4968: -82,30 - 4969: -80,29 - 4970: -80,29 - 4971: -81,32 - 4972: -82,33 - 4973: -81,33 - 4974: -80,32 - 4975: -77,33 - 5045: -64,12 - 5046: -65,14 - 5047: -65,13 - 5048: -65,11 - 5049: -65,10 - 5050: -63,10 - 5051: -62,12 - 5052: -62,13 - 5053: -63,12 - 5054: -62,10 - 5055: -61,10 - 5056: -62,13 - 5057: -63,14 - 5058: -64,13 - 5059: -64,14 - 5060: -65,14 - 5061: -65,13 - 7203: -44,-11 - 7204: -44,-11 - 7205: -45,-11 - 7206: -45,-12 - 7207: -46,-13 - 7208: -46,-13 - 7209: -46,-14 - 7210: -43,-14 - 7211: -40,-14 - 7212: -38,-13 - 7213: -40,-13 - 7214: -40,-13 - 7215: -38,-14 - 7216: -38,-13 - 7217: -39,-11 - 7218: -40,-11 - 7219: -41,-10 - 7220: -40,-12 - 7221: -42,-12 - 7222: -43,-12 - 7223: -44,-12 - 7224: -45,-11 - 7225: -38,-10 - 7226: -39,-10 - 7227: -38,-10 - 7228: -38,-11 - 7281: -43,1 - 7282: -43,1 - 7283: -43,1 - 7291: -43,66 - - node: - cleanable: True - angle: 3.141592653589793 rad - color: '#FFFFFFFF' - id: DirtMedium - decals: - 2601: -17,25 - 2602: -17,26 - 2603: -18,25 - 2604: -17,23 - 2605: -16,23 - 2606: -18,23 - - node: - color: '#FFFFFFFF' - id: FlowersBROne - decals: - 6879: -20.998013,33.948563 - - node: - color: '#FFFFFFFF' - id: Flowersbr1 - decals: - 985: -34.770348,20.675009 - 2342: -13.913108,42.25173 - 2343: -12.522483,38.829857 - - node: - color: '#FFFFFFFF' - id: Flowersbr2 - decals: - 977: -31.035973,18.003134 - - node: - color: '#FFFFFFFF' - id: Flowersbr3 - decals: - 982: -33.082848,20.175009 - - node: - color: '#FFFFFFFF' - id: Flowerspv1 - decals: - 2341: -13.334983,39.50173 - - node: - color: '#FFFFFFFF' - id: Flowerspv3 - decals: - 986: -33.910973,21.581259 - - node: - color: '#FFFFFFFF' - id: Flowersy1 - decals: - 981: -34.192223,19.378134 - - node: - color: '#FFFFFFFF' - id: Flowersy2 - decals: - 978: -33.379723,16.550009 - 2338: -12.163108,42.62673 - 2339: -13.631858,41.18923 - 6878: -21.904263,33.948563 - - node: - color: '#FFFFFFFF' - id: Flowersy3 - decals: - 2340: -12.397483,40.892357 - - node: - color: '#334E6DC8' - id: FullTileOverlayGreyscale - decals: - 2188: -17,65 - 2189: -14,64 - 2190: -20,64 - 2191: -21,61 - 2192: -21,60 - 2193: -13,61 - 2194: -13,60 - - node: - color: '#52B4E996' - id: FullTileOverlayGreyscale - decals: - 6819: 1,23 - 6820: 6,28 - 6821: 6,29 - 6822: 1,29 - 6823: 1,30 - 6824: 1,33 - 6825: 3,35 - 6826: 5,33 - 6827: 5,25 - 6828: 5,24 - 6829: 5,19 - - node: - color: '#52B4E9FF' - id: FullTileOverlayGreyscale - decals: - 109: -1,28 - - node: - color: '#9FED5896' - id: FullTileOverlayGreyscale - decals: - 6830: 8,19 - - node: - color: '#A4610696' - id: FullTileOverlayGreyscale - decals: - 7276: -43,1 - - node: - color: '#A46106FF' - id: FullTileOverlayGreyscale - decals: - 702: -40,0 - 703: -40,1 - 704: -39,2 - 705: -38,2 - 706: -37,2 - 707: -36,1 - 708: -36,0 - - node: - color: '#DE3A3A96' - id: FullTileOverlayGreyscale - decals: - 3411: -53,59 - 3412: -51,59 - 3413: -46,64 - 3414: -46,65 - 3415: -45,64 - 3440: -50,55 - 3441: -50,53 - 3442: -59,53 - 3443: -59,55 - 7284: -43,66 - - node: - color: '#FFFFFFFF' - id: Grassa2 - decals: - 2344: -13.600608,37.69732 - 7314: 19,39 - - node: - color: '#FFFFFFFF' - id: Grassa4 - decals: - 974: -33.176598,15.425009 - 975: -34.785973,16.596884 - 976: -33.801598,18.065634 - - node: - color: '#FFFFFFFF' - id: Grassa5 - decals: - 984: -34.801598,15.284384 - 7318: 23,41 - - node: - color: '#FFFFFFFF' - id: Grassb1 - decals: - 7317: 21,39 - - node: - color: '#FFFFFFFF' - id: Grassb5 - decals: - 983: -32.160973,18.596884 - 2345: -13.788108,40.38482 - 2349: -11.991233,43.725113 - 7315: 17,39 - 7316: 17,40 - 7319: 18,37 - - node: - color: '#FFFFFFFF' - id: Grassc1 - decals: - 979: -34.910973,18.518759 - 2337: -13.616233,43.18923 - 6880: -20.044888,33.964188 - - node: - color: '#FFFFFFFF' - id: Grassc3 - decals: - 980: -32.395348,19.096884 - - node: - color: '#FFFFFFFF' - id: Grassc4 - decals: - 2346: -12.381858,37.369194 - - node: - color: '#FFFFFFFF' - id: Grassd1 - decals: - 2347: -13.881858,35.712944 - 2348: -12.897483,36.35357 - - node: - color: '#FFFFFFFF' - id: Grasse2 - decals: - 2350: -13.834983,36.936462 - - node: - color: '#52B4E996' - id: HalfTileOverlayGreyscale - decals: - 2777: 8,31 - 2778: 9,31 - 2779: 10,31 - 2780: 11,31 - 2781: 3,34 - 2782: 7,26 - 2783: 8,26 - 2784: 9,26 - - node: - color: '#9FED5896' - id: HalfTileOverlayGreyscale - decals: - 2651: 7,17 - 2652: 8,17 - 2653: 10,20 - - node: - color: '#DE3A3A96' - id: HalfTileOverlayGreyscale - decals: - 3298: -2,10 - 3299: -1,10 - 3300: 0,10 - 3355: -62,61 - 3356: -61,61 - 3357: -60,61 - 3358: -59,61 - 3359: -58,61 - 3360: -56,61 - 3361: -57,61 - 3362: -55,61 - 3363: -54,61 - 3364: -52,65 - 3365: -51,65 - 3366: -50,65 - 3367: -49,65 - 3368: -48,65 - 3369: -47,65 - 3468: -65,55 - 3469: -64,55 - 3470: -63,55 - 3471: -62,55 - 3472: -61,55 - - node: - color: '#EFB34196' - id: HalfTileOverlayGreyscale - decals: - 4179: -66,34 - 4180: -67,34 - 4181: -68,34 - 4182: -69,34 - 4183: -72,35 - 4184: -73,35 - 4185: -74,35 - 4186: -76,26 - 4198: -65,34 - 4201: -71,35 - 4231: -86,27 - 4232: -85,27 - 4233: -84,27 - 4234: -83,27 - 4235: -82,27 - 4236: -81,27 - 4413: -61,33 - - node: - color: '#52B4E996' - id: HalfTileOverlayGreyscale180 - decals: - 2768: 3,19 - 2769: 2,19 - 2770: 8,28 - 2771: 9,28 - 2772: 10,28 - 2773: 11,28 - 2774: 7,22 - 2775: 8,22 - 2776: 9,22 - - node: - color: '#DE3A3A96' - id: HalfTileOverlayGreyscale180 - decals: - 3295: -2,8 - 3296: -1,8 - 3297: 0,8 - 3370: -62,60 - 3371: -61,60 - 3372: -60,60 - 3373: -59,60 - 3374: -58,60 - 3375: -57,60 - 3376: -56,60 - 3377: -55,60 - 3378: -53,60 - 3379: -54,60 - 3380: -52,60 - 3381: -50,64 - 3382: -49,64 - 3383: -47,64 - 3384: -48,64 - 3473: -63,50 - 3474: -62,50 - 3475: -61,50 - 3476: -65,52 - - node: - color: '#EFB34196' - id: HalfTileOverlayGreyscale180 - decals: - 4171: -73,33 - 4172: -72,33 - 4173: -71,33 - 4174: -70,33 - 4175: -69,33 - 4176: -68,33 - 4177: -67,33 - 4178: -66,33 - 4187: -76,24 - 4243: -82,22 - 4244: -81,22 - 4245: -84,23 - 4246: -85,23 - 4247: -86,23 - 4410: -61,31 - - node: - color: '#52B4E996' - id: HalfTileOverlayGreyscale270 - decals: - 2728: 6,33 - 2729: 6,34 - 2730: 6,35 - 2731: 6,36 - 2732: 6,37 - 2733: 2,33 - 2734: 2,32 - 2735: 2,31 - 2736: 2,29 - 2737: 2,30 - 2738: 2,28 - 2739: 2,27 - 2740: 2,26 - 2741: 2,25 - 2742: 2,24 - 2743: 2,23 - 2744: 2,22 - 2745: 2,21 - 2746: 6,23 - 2747: 6,24 - 2748: 6,25 - 2749: 7,29 - 2750: 7,30 - - node: - color: '#9FED5896' - id: HalfTileOverlayGreyscale270 - decals: - 2646: 6,14 - 2647: 6,15 - 2648: 6,16 - 2649: 9,18 - 2650: 9,19 - - node: - color: '#DE3A3A96' - id: HalfTileOverlayGreyscale270 - decals: - 3306: -3,9 - 3388: -53,62 - 3389: -53,63 - 3390: -53,64 - 3481: -66,54 - 3482: -66,53 - 3489: -64,51 - - node: - color: '#EFB34196' - id: HalfTileOverlayGreyscale270 - decals: - 4147: -75,21 - 4148: -75,22 - 4149: -75,23 - 4150: -75,27 - 4151: -75,30 - 4152: -75,31 - 4153: -75,32 - 4154: -75,33 - 4155: -75,34 - 4156: -77,25 - 4193: -75,20 - 4411: -62,32 - - node: - color: '#52B4E996' - id: HalfTileOverlayGreyscale90 - decals: - 2618: 10,25 - 2723: 12,33 - 2724: 12,34 - 2725: 12,35 - 2726: 12,36 - 2727: 12,37 - 2751: 12,30 - 2752: 12,29 - 2753: 10,25 - 2754: 10,24 - 2755: 10,23 - 2756: 4,33 - 2757: 4,32 - 2758: 5,30 - 2759: 5,29 - 2760: 4,27 - 2761: 4,26 - 2762: 4,25 - 2763: 4,23 - 2764: 4,24 - 2765: 4,22 - 2766: 4,21 - 2767: 4,20 - - node: - color: '#9FED5896' - id: HalfTileOverlayGreyscale90 - decals: - 2654: 11,19 - 2655: 11,18 - 2656: 11,17 - 2657: 11,16 - 2658: 11,15 - 2659: 11,14 - - node: - color: '#DE3A3A96' - id: HalfTileOverlayGreyscale90 - decals: - 3301: 1,9 - 3385: -51,61 - 3386: -51,62 - 3387: -51,63 - 3477: -60,54 - 3478: -60,53 - 3479: -60,52 - 3480: -60,51 - - node: - color: '#EFB34196' - id: HalfTileOverlayGreyscale90 - decals: - 4157: -64,31 - 4158: -64,32 - 4159: -64,33 - 4160: -74,30 - 4161: -74,29 - 4162: -74,28 - 4163: -74,27 - 4164: -74,26 - 4165: -74,25 - 4166: -74,24 - 4167: -74,23 - 4168: -74,22 - 4169: -74,21 - 4170: -74,20 - 4248: -80,23 - 4251: -79,25 - 4412: -60,32 - - node: - color: '#FFFFFFFF' - id: LoadingArea - decals: - 2363: -36,-10 - - node: - angle: 3.141592653589793 rad - color: '#FFFFFFFF' - id: LoadingArea - decals: - 2571: -40,-11 - 2572: -40,-7 - - node: - cleanable: True - color: '#FFFFFFFF' - id: MiniTileDarkBox - decals: - 398: -13,1 - - node: - color: '#A46106FF' - id: MiniTileWhiteBox - decals: - 2421: -41,-9 - 2422: -40,-9 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteCornerNe - decals: - 89: 0,34 - - node: - color: '#A46106FF' - id: MiniTileWhiteCornerNe - decals: - 716: -32,-2 - 2411: -38,-10 - 2412: -32,-6 - 2413: -37,-2 - - node: - color: '#EF8941FF' - id: MiniTileWhiteCornerNe - decals: - 116: -1,26 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteCornerNw - decals: - 103: -5,34 - - node: - color: '#A46106FF' - id: MiniTileWhiteCornerNw - decals: - 709: -35,-2 - 2416: -42,-2 - 2417: -46,-10 - - node: - color: '#D4D4D4FF' - id: MiniTileWhiteCornerNw - decals: - 157: -11,30 - - node: - color: '#EF8941FF' - id: MiniTileWhiteCornerNw - decals: - 117: -4,26 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteCornerSe - decals: - 90: 0,29 - - node: - color: '#A46106FF' - id: MiniTileWhiteCornerSe - decals: - 2414: -38,-14 - 2415: -32,-11 - - node: - color: '#EF8941FF' - id: MiniTileWhiteCornerSe - decals: - 118: -1,23 - 149: -2,20 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteCornerSw - decals: - 104: -5,29 - - node: - color: '#A46106FF' - id: MiniTileWhiteCornerSw - decals: - 2418: -42,-8 - 2419: -36,-11 - 7153: -46,-14 - - node: - color: '#52B4E996' - id: MiniTileWhiteInnerNe - decals: - 158: -7,30 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteInnerNe - decals: - 88: -7,30 - 159: -7,30 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteInnerSe - decals: - 87: -7,34 - - node: - color: '#EF8941FF' - id: MiniTileWhiteInnerSe - decals: - 119: -2,23 - - node: - color: '#A46106FF' - id: MiniTileWhiteInnerSw - decals: - 2420: -36,-8 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteLineE - decals: - 84: -7,31 - 85: -7,32 - 86: -7,33 - 95: 0,30 - 96: 0,31 - 97: 0,32 - 98: 0,33 - - node: - color: '#A46106FF' - id: MiniTileWhiteLineE - decals: - 710: -32,-3 - 711: -32,-4 - 2400: -37,-3 - 2401: -37,-4 - 2402: -37,-5 - 2403: -32,-7 - 2404: -32,-7 - 2405: -32,-8 - 2406: -32,-9 - 2407: -32,-10 - 2408: -38,-11 - 2409: -38,-12 - 2410: -38,-13 - - node: - color: '#EF8941FF' - id: MiniTileWhiteLineE - decals: - 110: -1,25 - 111: -1,24 - 145: -2,22 - 146: -2,21 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteLineN - decals: - 99: -1,34 - 100: -2,34 - 101: -3,34 - 102: -4,34 - - node: - color: '#A46106FF' - id: MiniTileWhiteLineN - decals: - 714: -34,-2 - 715: -33,-2 - 2384: -45,-10 - 2385: -44,-10 - 2386: -43,-10 - 2387: -42,-10 - 2388: -42,-10 - 2389: -41,-10 - 2390: -40,-10 - 2391: -40,-10 - 2392: -40,-10 - 2393: -39,-10 - 2394: -34,-6 - 2395: -33,-6 - 2396: -41,-2 - 2397: -40,-2 - 2398: -40,-2 - 2399: -38,-2 - - node: - color: '#D4D4D4FF' - id: MiniTileWhiteLineN - decals: - 153: -10,30 - 154: -9,30 - 155: -8,30 - 156: -7,30 - - node: - color: '#EF8941FF' - id: MiniTileWhiteLineN - decals: - 114: -3,26 - 115: -2,26 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteLineS - decals: - 91: -1,29 - 92: -3,29 - 93: -2,29 - 94: -4,29 - - node: - color: '#A46106FF' - id: MiniTileWhiteLineS - decals: - 2365: -41,-8 - 2366: -40,-8 - 2367: -39,-8 - 2368: -37,-8 - 2369: -38,-8 - 2370: -35,-11 - 2371: -34,-11 - 2372: -33,-11 - 2373: -39,-14 - 2374: -40,-14 - 2375: -41,-14 - 2376: -43,-14 - 2377: -42,-14 - 7154: -45,-14 - 7155: -44,-14 - - node: - color: '#EF8941FF' - id: MiniTileWhiteLineS - decals: - 148: -3,20 - - node: - color: '#52B4E9FF' - id: MiniTileWhiteLineW - decals: - 105: -5,30 - 106: -5,31 - 107: -5,32 - 108: -5,33 - - node: - color: '#A46106FF' - id: MiniTileWhiteLineW - decals: - 712: -35,-4 - 713: -35,-3 - 2378: -42,-7 - 2379: -42,-6 - 2380: -42,-4 - 2381: -42,-3 - 2382: -36,-9 - 2383: -36,-10 - 7156: -46,-13 - 7157: -46,-12 - 7158: -46,-11 - - node: - color: '#D4D4D4FF' - id: MiniTileWhiteLineW - decals: - 150: -11,27 - 151: -11,28 - 152: -11,29 - - node: - color: '#EF8941FF' - id: MiniTileWhiteLineW - decals: - 112: -4,24 - 113: -4,25 - 147: -4,21 - - node: - color: '#52B4E996' - id: QuarterTileOverlayGreyscale - decals: - 2802: 2,20 - - node: - color: '#9FED5896' - id: QuarterTileOverlayGreyscale - decals: - 2660: 9,17 - - node: - color: '#DE3A3A96' - id: QuarterTileOverlayGreyscale - decals: - 3391: -53,61 - 3395: -49,62 - 3396: -49,61 - 3397: -49,60 - 3398: -49,58 - 3399: -49,59 - 3400: -49,57 - 3407: -47,62 - 3408: -48,62 - - node: - color: '#EF8941FF' - id: QuarterTileOverlayGreyscale - decals: - 134: -5,19 - 135: -5,20 - 136: -5,25 - 137: -5,26 - 138: -5,27 - 139: -4,27 - 140: -3,27 - 141: -2,27 - 142: -1,27 - 143: -1,27 - 144: 0,27 - - node: - color: '#EFB34196' - id: QuarterTileOverlayGreyscale - decals: - 4202: -75,26 - - node: - color: '#52B4E996' - id: QuarterTileOverlayGreyscale180 - decals: - 2801: 4,28 - - node: - color: '#A46106FF' - id: QuarterTileOverlayGreyscale180 - decals: - 723: -41,0 - 724: -41,1 - 725: -41,2 - 726: -41,3 - 727: -40,3 - 728: -39,3 - 736: -33,0 - 737: -32,0 - 738: -32,1 - 739: -32,2 - 740: -32,3 - - node: - color: '#DE3A3A96' - id: QuarterTileOverlayGreyscale180 - decals: - 3392: -51,64 - 3401: -47,57 - 3402: -47,58 - 3403: -47,59 - 3404: -47,60 - 3405: -47,61 - 3406: -47,62 - 3409: -48,57 - 3410: -49,57 - - node: - color: '#EF8941FF' - id: QuarterTileOverlayGreyscale180 - decals: - 120: 0,22 - 121: -1,22 - 122: -1,21 - 123: -1,20 - 124: -1,19 - 125: -2,19 - 126: -3,19 - 127: -4,19 - 128: -5,19 - 129: 0,23 - 130: 0,24 - 131: 0,25 - 132: 0,26 - 133: 0,27 - - node: - color: '#EFB34196' - id: QuarterTileOverlayGreyscale180 - decals: - 4249: -80,24 - - node: - color: '#A46106FF' - id: QuarterTileOverlayGreyscale270 - decals: - 729: -34,0 - 730: -35,0 - 731: -35,1 - 732: -35,2 - 733: -35,3 - 734: -36,3 - 735: -37,3 - 741: -42,0 - 742: -42,1 - 743: -42,2 - 744: -42,3 - - node: - color: '#DE3A3A96' - id: QuarterTileOverlayGreyscale270 - decals: - 3488: -64,52 - - node: - color: '#EFB34196' - id: QuarterTileOverlayGreyscale270 - decals: - 4195: -75,24 - 4197: -65,33 - 4242: -83,23 - - node: - color: '#52B4E996' - id: QuarterTileOverlayGreyscale90 - decals: - 2800: 4,31 - - node: - color: '#EFB34196' - id: QuarterTileOverlayGreyscale90 - decals: - 4199: -70,34 - 4250: -80,26 - - node: - color: '#FFFFFFFF' - id: Remains - decals: - 77: 18.227499,-11.4046755 - - node: - cleanable: True - color: '#FFFFFFFF' - id: Remains - decals: - 2607: -3.964231,22.551708 - - node: - color: '#52B4E996' - id: ThreeQuarterTileOverlayGreyscale - decals: - 2785: 2,34 - 2786: 7,31 - 2787: 1,20 - 2788: 6,26 - - node: - color: '#9FED5896' - id: ThreeQuarterTileOverlayGreyscale - decals: - 2661: 6,17 - 2662: 9,20 - - node: - color: '#DE3A3A96' - id: ThreeQuarterTileOverlayGreyscale - decals: - 3302: -3,10 - 3393: -53,65 - 3483: -66,55 - - node: - color: '#EFB34196' - id: ThreeQuarterTileOverlayGreyscale - decals: - 4188: -77,26 - 4194: -75,35 - 4406: -62,33 - - node: - color: '#52B4E996' - id: ThreeQuarterTileOverlayGreyscale180 - decals: - 2789: 10,22 - 2790: 12,28 - 2791: 4,19 - 2792: 5,28 - - node: - color: '#DE3A3A96' - id: ThreeQuarterTileOverlayGreyscale180 - decals: - 3303: 1,8 - 3394: -51,60 - 3484: -60,50 - - node: - color: '#EFB34196' - id: ThreeQuarterTileOverlayGreyscale180 - decals: - 4190: -64,30 - 4192: -74,19 - 4239: -79,24 - 4240: -80,22 - 4407: -60,31 - - node: - color: '#52B4E996' - id: ThreeQuarterTileOverlayGreyscale270 - decals: - 2797: 7,28 - 2798: 1,19 - 2799: 6,22 - - node: - color: '#DE3A3A96' - id: ThreeQuarterTileOverlayGreyscale270 - decals: - 3305: -3,8 - 3486: -66,52 - 3487: -64,50 - - node: - color: '#EFB34196' - id: ThreeQuarterTileOverlayGreyscale270 - decals: - 4189: -77,24 - 4191: -75,19 - 4241: -83,22 - 4408: -62,31 - - node: - color: '#52B4E996' - id: ThreeQuarterTileOverlayGreyscale90 - decals: - 2793: 5,31 - 2794: 12,31 - 2795: 4,34 - 2796: 10,26 - - node: - color: '#9FED5896' - id: ThreeQuarterTileOverlayGreyscale90 - decals: - 2663: 11,20 - - node: - color: '#DE3A3A96' - id: ThreeQuarterTileOverlayGreyscale90 - decals: - 3304: 1,10 - 3485: -60,55 - - node: - color: '#EFB34196' - id: ThreeQuarterTileOverlayGreyscale90 - decals: - 4196: -64,34 - 4200: -70,35 - 4237: -80,27 - 4238: -79,26 - 4409: -60,33 - - node: - color: '#601F95FF' - id: Tunnel - decals: - 6923: 11,50 - - node: - color: '#FFFFFFFF' - id: WarnCornerNE - decals: - 2358: 12,43 - 2671: 7,20 - 2706: 1,40 - - node: - color: '#FFFFFFFF' - id: WarnCornerNW - decals: - 2357: 9,43 - 2670: 6,20 - 4128: -79,31 - - node: - color: '#FFFFFFFF' - id: WarnCornerSE - decals: - 2356: 12,42 - 2672: 7,19 - 2714: 11,35 - 4119: -77,34 - - node: - color: '#FFFFFFFF' - id: WarnCornerSW - decals: - 2359: 9,42 - 2673: 6,19 - 2707: -1,36 - 2715: 7,35 - 5947: -23,54 - - node: - color: '#FFFFFFFF' - id: WarnCornerSmallNE - decals: - 2361: 9,40 - 4144: -86,23 - - node: - color: '#FFFFFFFF' - id: WarnCornerSmallNW - decals: - 2360: 11,40 - 4143: -81,23 - - node: - color: '#FFFFFFFF' - id: WarnCornerSmallSE - decals: - 4123: -84,34 - 4145: -86,27 - - node: - color: '#FFFFFFFF' - id: WarnCornerSmallSW - decals: - 4146: -81,27 - 5946: -20,54 - - node: - color: '#FFFFFFFF' - id: WarnLineE - decals: - 4: -14,0 - 5: -14,1 - 6: -14,2 - 2711: 1,37 - 2721: 11,36 - 2722: 11,37 - 4120: -77,35 - 4121: -84,33 - 4122: -84,32 - 4129: -86,26 - 4130: -86,24 - 4131: -86,25 - - node: - color: '#FFFFFFFF' - id: WarnLineN - decals: - 73: 1,0 - 74: 2,0 - 75: 0,0 - 2351: 11,42 - 2352: 10,42 - 2664: 6,14 - 2665: 7,14 - 2666: 8,14 - 2667: 9,14 - 2668: 10,14 - 2669: 11,14 - 2710: 0,36 - 2718: 8,35 - 2719: 9,35 - 2720: 10,35 - 4113: -83,34 - 4114: -82,34 - 4115: -80,34 - 4116: -81,34 - 4117: -79,34 - 4118: -78,34 - 4136: -85,27 - 4137: -83,27 - 4138: -82,27 - 4139: -84,27 - 5948: -22,54 - 5949: -21,54 - - node: - color: '#FFFFFFFF' - id: WarnLineS - decals: - 2708: -1,37 - 2709: -1,39 - 2716: 7,36 - 2717: 7,37 - 4124: -79,30 - 4125: -79,29 - 4140: -81,24 - 4141: -81,25 - 4142: -81,26 - 5950: -23,55 - 5951: -23,56 - 7336: -23,57 - - node: - color: '#FFFFFFFF' - id: WarnLineW - decals: - 71: 1,-1 - 72: 2,-1 - 2353: 10,40 - 2354: 10,43 - 2355: 11,43 - 2712: 0,40 - 4126: -78,31 - 4127: -77,31 - 4132: -84,23 - 4133: -83,23 - 4134: -82,23 - 4135: -85,23 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerNw - decals: - 5509: -35,38 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerNe - decals: - 5531: -8,58 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerNw - decals: - 6172: -34,38 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineE - decals: - 5528: -8,61 - 5529: -8,60 - 5530: -8,59 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineW - decals: - 5510: -35,37 - 5511: -35,35 - 5512: -35,36 - - node: - cleanable: True - color: '#FFFFFFFF' - id: body - decals: - 2612: 2.8074994,42.80365 - - node: - color: '#790906FF' - id: cyka - decals: - 7321: 19,38 - 7322: -25,-14 - - node: - color: '#B02E26FF' - id: cyka - decals: - 7320: 19,38 - - node: - cleanable: True - color: '#D381C996' - id: safe - decals: - 76: 19,-8 - - node: - color: '#DE3A3A96' - id: shop - decals: - 7325: -27,6 - - node: - color: '#FFFFFFFF' - id: shop - decals: - 7323: -12.9947195,8.064248 - 7324: -13.0103445,16.085691 - - node: - cleanable: True - color: '#A40000FF' - id: splatter - decals: - 2608: 1.6512494,42.225525 - 2609: 3.7762494,43.506775 - 2610: 2.3387494,43.413025 - 2611: 3.9168744,42.038025 - type: DecalGrid - - version: 2 - data: - tiles: - -1,-1: - 0: 65535 - -1,0: - 0: 65535 - -4,-3: - 0: 65535 - -4,-2: - 0: 65535 - -4,-1: - 0: 65535 - -4,-4: - 0: 65535 - -3,-4: - 0: 65535 - -3,-3: - 0: 65535 - -3,-2: - 0: 65535 - -3,-1: - 0: 65535 - -2,-4: - 0: 65535 - -2,-3: - 0: 65535 - -2,-2: - 0: 64511 - 1: 1024 - -2,-1: - 0: 65535 - -1,-4: - 0: 65535 - -1,-3: - 0: 65535 - -1,-2: - 0: 65535 - -4,0: - 0: 65535 - -4,1: - 0: 65535 - -3,0: - 0: 65535 - -3,1: - 0: 65535 - -2,0: - 0: 65535 - -2,1: - 0: 65535 - -1,1: - 0: 65535 - 0,-4: - 0: 65535 - 0,-3: - 0: 65535 - 0,-2: - 0: 65535 - 0,-1: - 0: 65535 - 1,-4: - 0: 63359 - 2: 2176 - 1,-3: - 0: 65535 - 1,-2: - 0: 65535 - 1,-1: - 0: 65535 - 2,-4: - 2: 65520 - 0: 15 - 2,-3: - 0: 65535 - 2,-2: - 0: 65535 - 2,-1: - 0: 65535 - 3,-4: - 0: 63324 - 3,-3: - 0: 65535 - 3,-2: - 0: 65535 - 3,-1: - 0: 65535 - 0,0: - 0: 65535 - 0,1: - 0: 65535 - 1,0: - 0: 65535 - 1,1: - 0: 65535 - 2,0: - 0: 65535 - 2,1: - 0: 65535 - 3,0: - 0: 65535 - 3,1: - 0: 65535 - -3,-5: - 0: 63504 - -2,-5: - 0: 65525 - -1,-5: - 0: 64836 - 0,-5: - 0: 65524 - 1,-5: - 0: 64426 - -5,-3: - 0: 65535 - -5,-2: - 0: 65535 - -5,-1: - 0: 65535 - -5,0: - 0: 65535 - -5,1: - 0: 65535 - 4,-4: - 0: 63997 - 4,-3: - 0: 65535 - 4,-2: - 0: 65535 - 4,-1: - 0: 65535 - 5,-4: - 0: 4351 - 5,-3: - 0: 65439 - 5,-2: - 0: 65535 - 5,-1: - 0: 65535 - 6,-3: - 0: 65295 - 6,-2: - 0: 65535 - 6,-1: - 0: 65535 - 7,-2: - 0: 30583 - 7,-1: - 0: 63359 - 4,0: - 0: 65535 - 4,1: - 0: 65535 - 5,0: - 0: 65535 - 5,1: - 0: 65535 - 6,0: - 0: 65535 - 6,1: - 0: 65535 - 6,2: - 0: 65535 - 7,0: - 0: 65535 - 7,1: - 0: 63487 - 7,2: - 0: 65535 - -4,2: - 0: 65535 - -4,3: - 0: 65535 - -3,2: - 0: 65535 - -3,3: - 0: 65535 - -2,2: - 0: 65535 - -2,3: - 0: 65535 - -1,2: - 0: 65535 - -1,3: - 0: 65535 - 0,2: - 0: 65535 - 0,3: - 0: 65535 - 1,2: - 0: 65535 - 1,3: - 0: 65535 - 2,2: - 0: 65535 - 2,3: - 0: 65535 - 3,2: - 0: 65535 - 3,3: - 0: 65535 - -8,-3: - 0: 65535 - -8,-2: - 0: 65535 - -7,-3: - 0: 65535 - -7,-2: - 0: 65535 - -7,-1: - 0: 65535 - -6,-3: - 0: 65535 - -6,-2: - 0: 65535 - -6,-1: - 0: 65535 - -7,0: - 0: 65535 - -7,1: - 0: 65535 - -6,0: - 0: 65535 - -6,1: - 0: 65535 - -5,2: - 0: 65535 - -5,3: - 0: 65535 - 6,-4: - 0: 255 - 7,-4: - 0: 21847 - 7,-3: - 0: 63447 - 4,2: - 0: 65535 - 4,3: - 0: 65535 - 5,2: - 0: 65535 - 5,3: - 0: 65535 - 6,3: - 0: 65535 - 7,3: - 0: 65535 - 4,-5: - 0: 53754 - 4,-6: - 0: 41700 - 5,-7: - 0: 62704 - 5,-6: - 0: 62207 - 5,-5: - 0: 61951 - 6,-7: - 0: 61564 - 6,-6: - 0: 61695 - 6,-5: - 0: 61695 - 7,-8: - 0: 22272 - 7,-7: - 0: 21847 - 7,-6: - 0: 21847 - 7,-5: - 0: 21847 - 4,4: - 0: 65535 - 4,5: - 0: 65535 - 4,6: - 0: 65535 - 4,7: - 0: 65535 - 5,4: - 0: 65535 - 5,5: - 0: 65535 - 5,6: - 0: 65535 - 5,7: - 0: 65535 - 6,4: - 0: 65535 - 6,5: - 0: 65535 - 6,6: - 0: 65535 - 6,7: - 0: 24575 - 7,4: - 0: 65535 - 7,5: - 0: 63351 - 7,6: - 0: 32631 - 8,1: - 0: 4096 - 8,2: - 0: 4369 - 8,3: - 0: 4096 - 8,4: - 0: 4369 - 0,4: - 0: 65535 - 0,5: - 0: 65535 - 0,6: - 0: 65535 - 0,7: - 0: 65535 - 1,4: - 0: 65535 - 1,5: - 0: 65535 - 1,6: - 0: 65535 - 1,7: - 0: 65535 - 2,4: - 0: 65535 - 2,5: - 0: 65535 - 2,6: - 0: 65535 - 2,7: - 0: 65535 - 3,4: - 0: 65535 - 3,5: - 0: 65535 - 3,6: - 0: 65535 - 3,7: - 0: 65535 - -4,4: - 0: 65535 - -4,5: - 0: 65535 - -4,6: - 0: 65535 - -4,7: - 0: 65535 - -3,4: - 0: 65535 - -3,5: - 0: 65535 - -3,6: - 0: 65535 - -3,7: - 0: 65535 - -2,4: - 0: 65535 - -2,5: - 0: 65535 - -2,6: - 0: 65535 - -2,7: - 0: 65535 - -1,4: - 0: 65535 - -1,5: - 0: 65535 - -1,6: - 0: 65535 - -1,7: - 0: 65535 - 0,8: - 0: 65535 - 0,9: - 0: 65535 - 0,10: - 0: 65535 - 0,11: - 0: 65535 - 1,8: - 0: 65535 - 1,9: - 0: 65535 - 1,10: - 0: 65535 - 1,11: - 0: 65535 - 2,8: - 0: 65535 - 2,9: - 0: 65535 - 2,10: - 0: 65535 - 3,8: - 0: 65535 - 3,9: - 0: 65535 - 3,10: - 0: 65535 - -4,8: - 0: 65535 - -3,8: - 0: 65535 - -2,8: - 0: 65535 - -1,8: - 0: 65535 - -1,9: - 0: 65535 - -1,10: - 0: 65535 - -1,11: - 0: 65535 - 4,8: - 0: 65535 - 4,9: - 0: 65535 - 4,10: - 0: 65535 - 5,8: - 0: 65535 - 5,9: - 0: 65535 - 5,10: - 0: 65535 - 6,8: - 0: 30039 - 6,9: - 0: 4437 - 6,10: - 0: 21877 - -6,8: - 0: 65535 - -5,8: - 0: 65535 - -5,4: - 0: 65535 - -5,-4: - 0: 65535 - -4,-5: - 0: 62704 - -6,7: - 0: 65535 - -5,7: - 0: 65535 - -5,6: - 0: 65535 - -5,-5: - 0: 36736 - -8,1: - 0: 65535 - -8,2: - 0: 65535 - -8,3: - 0: 65535 - -7,2: - 0: 65535 - -7,3: - 0: 65535 - -6,2: - 0: 65535 - -6,3: - 0: 65535 - -8,8: - 0: 65535 - -7,8: - 0: 65535 - -8,4: - 0: 65535 - -8,5: - 0: 65535 - -8,6: - 0: 65535 - -8,7: - 0: 65535 - -7,4: - 0: 65535 - -7,5: - 0: 65535 - -7,6: - 0: 65535 - -7,7: - 0: 65535 - -6,4: - 0: 65535 - -6,5: - 0: 65535 - -6,6: - 0: 65535 - -5,5: - 0: 65535 - -10,1: - 0: 65535 - -10,2: - 0: 65535 - -10,3: - 0: 65535 - -9,1: - 0: 65535 - -9,2: - 0: 65535 - -9,3: - 0: 65535 - -10,4: - 0: 65535 - -10,5: - 0: 65535 - -10,6: - 0: 65535 - -10,7: - 0: 65535 - -9,5: - 0: 65535 - -9,6: - 0: 65535 - -9,7: - 0: 65535 - -10,8: - 0: 65535 - -9,8: - 0: 65535 - -8,-4: - 0: 65328 - -8,-1: - 0: 65535 - -7,-4: - 0: 65504 - -6,-4: - 0: 65534 - -8,0: - 0: 65535 - -4,9: - 0: 65535 - -4,10: - 0: 65535 - -6,9: - 0: 65535 - -6,10: - 0: 65535 - -5,9: - 0: 65535 - -5,10: - 0: 65535 - -12,0: - 0: 65535 - -12,1: - 0: 65535 - -11,0: - 0: 65535 - -11,1: - 0: 65535 - -10,0: - 0: 65535 - -9,0: - 0: 65535 - -9,4: - 0: 65535 - -12,-3: - 0: 65535 - -12,-2: - 0: 65535 - -12,-1: - 0: 65535 - -11,-3: - 0: 65535 - -11,-2: - 0: 65535 - -11,-1: - 0: 65535 - -11,-4: - 0: 65535 - -10,-4: - 0: 65523 - -10,-3: - 0: 65535 - -10,-2: - 0: 65535 - -10,-1: - 0: 65535 - -9,-4: - 0: 65520 - -9,-3: - 0: 65535 - -9,-2: - 0: 65535 - -9,-1: - 0: 65535 - -13,-3: - 0: 65535 - -13,-2: - 0: 65535 - -13,-1: - 0: 65535 - -13,0: - 0: 65535 - -13,1: - 0: 65535 - -12,2: - 0: 65535 - -12,3: - 0: 65535 - -11,2: - 0: 65535 - -11,3: - 0: 65535 - -12,4: - 0: 65535 - -12,5: - 0: 65535 - -12,6: - 0: 65535 - -12,7: - 0: 65535 - -11,4: - 0: 65535 - -11,5: - 0: 65535 - -11,6: - 0: 65535 - -11,7: - 0: 65535 - -12,8: - 0: 65535 - -11,8: - 0: 65535 - -16,-3: - 0: 65535 - -16,-2: - 0: 28943 - -16,-1: - 0: 30583 - -15,-3: - 0: 65535 - -15,-2: - 0: 65535 - -15,-1: - 0: 65535 - -14,-3: - 0: 65535 - -14,-2: - 0: 65535 - -14,-1: - 0: 65535 - -16,0: - 0: 61463 - -16,1: - 0: 65535 - -15,0: - 0: 65535 - -15,1: - 0: 65535 - -15,2: - 0: 65535 - -15,3: - 0: 65535 - -14,0: - 0: 65535 - -14,1: - 0: 65535 - -14,2: - 0: 65535 - -14,3: - 0: 65535 - -13,2: - 0: 65535 - -13,3: - 0: 65535 - -15,4: - 0: 65535 - -15,5: - 0: 65535 - -15,6: - 0: 65535 - -15,7: - 0: 65535 - -14,4: - 0: 65535 - -14,5: - 0: 65535 - -14,6: - 0: 65535 - -14,7: - 0: 65535 - -13,4: - 0: 65535 - -13,5: - 0: 65535 - -13,6: - 0: 65535 - -13,7: - 0: 65535 - -15,8: - 0: 65535 - -14,8: - 0: 65535 - -13,8: - 0: 65535 - -20,-3: - 0: 65535 - -20,-1: - 0: 65535 - -20,-2: - 0: 59407 - -19,-3: - 0: 65535 - -19,-2: - 0: 65519 - -19,-1: - 0: 65535 - -18,-3: - 0: 65535 - -18,-2: - 0: 65295 - -18,-1: - 0: 65535 - -17,-3: - 0: 65535 - -17,-2: - 0: 65407 - -17,-1: - 0: 65535 - -20,0: - 0: 53390 - -20,1: - 0: 56799 - -19,0: - 0: 65279 - -19,1: - 0: 65535 - -18,0: - 0: 61695 - -18,1: - 0: 65535 - -17,0: - 0: 63487 - -17,1: - 0: 65535 - 2,11: - 0: 65535 - 3,11: - 0: 65535 - -4,11: - 0: 65535 - -3,9: - 0: 65535 - -3,10: - 0: 65535 - -3,11: - 0: 65535 - -2,9: - 0: 65535 - -2,10: - 0: 65535 - -2,11: - 0: 65535 - 4,11: - 0: 65535 - 5,11: - 0: 3983 - 6,11: - 0: 327 - -6,11: - 0: 65535 - -5,11: - 0: 65535 - -7,13: - 0: 65535 - -7,14: - 0: 8191 - -6,12: - 0: 65535 - -6,13: - 0: 65407 - 3: 128 - -6,14: - 0: 65535 - -6,15: - 0: 65535 - -5,12: - 0: 65535 - -5,13: - 0: 65535 - -5,14: - 0: 65535 - -5,15: - 0: 65535 - -4,12: - 0: 65535 - -4,13: - 0: 65535 - -4,14: - 0: 65535 - -4,15: - 0: 65535 - -3,12: - 0: 65535 - -3,13: - 0: 65535 - -3,14: - 0: 65535 - -3,15: - 0: 65535 - -2,12: - 0: 63487 - -2,13: - 0: 65527 - -2,14: - 0: 65535 - -2,15: - 0: 65535 - -1,12: - 0: 65535 - -1,13: - 0: 16383 - -1,14: - 0: 20795 - -1,15: - 0: 22359 - 0,12: - 0: 65535 - 0,13: - 0: 9215 - 1,12: - 0: 65535 - 1,13: - 0: 39423 - 2,12: - 0: 65535 - 2,13: - 0: 61951 - 3,12: - 0: 65535 - 3,13: - 0: 63999 - 4,12: - 0: 65535 - 4,13: - 0: 62719 - -4,16: - 0: 65535 - -4,17: - 0: 1839 - -3,16: - 0: 46003 - -6,16: - 0: 61167 - -6,17: - 0: 1595 - -5,16: - 0: 65535 - -5,17: - 0: 3919 - -8,9: - 0: 65535 - -8,10: - 0: 65535 - -8,11: - 0: 65535 - -7,9: - 0: 65535 - -7,10: - 0: 65535 - -7,11: - 0: 65535 - -12,9: - 0: 65535 - -12,10: - 0: 65535 - -12,11: - 0: 65535 - -11,9: - 0: 65535 - -11,10: - 0: 65535 - -11,11: - 0: 65535 - -10,9: - 0: 65535 - -10,10: - 0: 65535 - -10,11: - 0: 65535 - -9,9: - 0: 65535 - -9,10: - 0: 65535 - -9,11: - 0: 65535 - -13,9: - 0: 65535 - -13,10: - 0: 65535 - -13,11: - 0: 65535 - -8,12: - 0: 65535 - -8,13: - 0: 65535 - -8,14: - 0: 49087 - -8,15: - 0: 3999 - -7,12: - 0: 65535 - -7,15: - 0: 50447 - -12,12: - 0: 65535 - -12,13: - 0: 65535 - -12,14: - 0: 65535 - -11,12: - 0: 65535 - -11,13: - 0: 65535 - -11,14: - 0: 65535 - -10,12: - 0: 65535 - -10,13: - 0: 65535 - -10,14: - 0: 65535 - -9,12: - 0: 65535 - -9,13: - 0: 65535 - -9,14: - 0: 53247 - -9,15: - 0: 11055 - -15,9: - 0: 65535 - -15,10: - 0: 65535 - -15,11: - 0: 65535 - -14,9: - 0: 65535 - -14,10: - 0: 65535 - -14,11: - 0: 65535 - -12,15: - 0: 65535 - -11,15: - 0: 65535 - -10,15: - 0: 65535 - -16,12: - 0: 65535 - -16,13: - 0: 65535 - -16,14: - 0: 65535 - -16,15: - 0: 65535 - -15,12: - 0: 65535 - -15,13: - 0: 65535 - -15,14: - 0: 65535 - -15,15: - 0: 65535 - -14,12: - 0: 65535 - -14,13: - 0: 65535 - -14,14: - 0: 65535 - -14,15: - 0: 65535 - -13,12: - 0: 65535 - -13,13: - 0: 65535 - -13,14: - 0: 65535 - -13,15: - 0: 65535 - -20,13: - 0: 65535 - -20,14: - 0: 65535 - -20,15: - 0: 255 - -19,13: - 0: 65535 - -19,14: - 0: 65535 - -19,15: - 0: 255 - -18,13: - 0: 65535 - -18,14: - 0: 65535 - -18,15: - 0: 52479 - -17,13: - 0: 65535 - -17,14: - 0: 65535 - -17,15: - 0: 65535 - -17,12: - 0: 65535 - -16,16: - 0: 65535 - -16,17: - 0: 65535 - -16,18: - 0: 15 - -15,16: - 0: 65535 - -15,17: - 0: 65535 - -15,18: - 0: 239 - -14,16: - 0: 65535 - -14,17: - 0: 65535 - -14,18: - 0: 65023 - -13,16: - 0: 65535 - -13,17: - 0: 30719 - -13,18: - 0: 32631 - -12,16: - 0: 65535 - -12,17: - 0: 61951 - -18,16: - 0: 3276 - -17,16: - 0: 36863 - -17,17: - 0: 34952 - -17,18: - 0: 8 - -21,13: - 0: 61439 - -21,14: - 0: 8942 - -16,2: - 0: 65535 - -16,3: - 0: 65535 - -16,4: - 0: 65535 - -16,5: - 0: 65535 - -16,6: - 0: 65535 - -16,7: - 0: 65535 - -16,8: - 0: 65535 - -16,9: - 0: 65535 - -16,10: - 0: 65535 - -16,11: - 0: 65535 - -20,3: - 0: 65450 - -20,2: - 0: 44719 - -19,2: - 0: 65263 - -19,3: - 0: 65534 - -18,2: - 0: 65535 - -18,3: - 0: 65535 - -17,2: - 0: 65535 - -17,3: - 0: 65535 - -20,12: - 0: 65535 - -19,12: - 0: 65535 - -18,12: - 0: 65535 - -23,12: - 0: 52478 - -23,13: - 0: 3276 - -22,12: - 0: 65535 - -22,13: - 0: 4095 - -21,12: - 0: 63743 - 2: 1792 - -20,8: - 0: 65535 - -20,9: - 0: 65535 - -20,10: - 0: 65535 - -20,11: - 0: 65535 - -19,8: - 0: 65535 - -19,9: - 0: 65535 - -19,10: - 0: 65535 - -19,11: - 0: 65535 - -18,8: - 0: 65535 - -18,9: - 0: 65535 - -18,10: - 0: 65535 - -18,11: - 0: 65535 - -17,8: - 0: 65535 - -17,9: - 0: 65535 - -17,10: - 0: 65535 - -17,11: - 0: 65535 - -20,4: - 0: 65535 - -20,5: - 0: 65535 - -20,6: - 0: 65535 - -20,7: - 0: 65535 - -19,4: - 0: 65535 - -19,5: - 0: 65535 - -19,6: - 0: 65535 - -19,7: - 0: 65535 - -18,4: - 0: 65407 - 4: 128 - -18,5: - 0: 65535 - -18,6: - 0: 65535 - -18,7: - 0: 65535 - -17,4: - 0: 65535 - -17,5: - 0: 65535 - -17,6: - 0: 65535 - -17,7: - 0: 65535 - -24,8: - 0: 65535 - -24,9: - 0: 44719 - -23,8: - 0: 8191 - 5: 57344 - -23,9: - 0: 7967 - 6: 224 - 2: 57344 - -23,10: - 0: 7967 - 2: 224 - 7: 57344 - -23,11: - 0: 65311 - 2: 224 - -22,8: - 0: 65535 - -22,9: - 0: 65535 - -22,10: - 0: 65535 - -22,11: - 0: 65535 - -21,8: - 0: 65535 - -21,9: - 0: 65535 - -21,10: - 0: 65535 - -21,11: - 0: 65535 - -21,3: - 0: 57088 - -24,5: - 0: 57343 - -24,6: - 0: 56797 - -24,7: - 0: 63999 - -24,4: - 0: 65524 - -23,4: - 0: 65524 - -23,5: - 0: 65535 - -23,6: - 0: 65535 - -23,7: - 0: 65535 - -22,4: - 0: 65528 - -22,5: - 0: 65535 - -22,6: - 0: 65535 - -22,7: - 0: 65535 - -21,4: - 0: 65535 - -21,5: - 0: 65535 - -21,6: - 0: 65535 - -21,7: - 0: 65535 - -28,8: - 0: 65359 - -28,9: - 0: 8 - -27,8: - 0: 65503 - -27,9: - 0: 15 - -26,8: - 0: 65535 - -26,9: - 0: 15 - -25,8: - 0: 65535 - -25,9: - 0: 15 - -28,5: - 0: 4088 - -27,5: - 0: 24575 - -27,6: - 0: 21975 - -27,7: - 0: 62943 - -26,5: - 0: 20479 - -26,6: - 0: 56703 - -26,7: - 0: 64989 - -25,5: - 0: 49151 - -25,6: - 0: 48847 - -25,7: - 0: 63217 - -29,5: - 0: 224 - -29,8: - 0: 57344 - -21,15: - 0: 226 - -12,-4: - 0: 65535 - -16,-4: - 0: 65521 - -13,-4: - 0: 65535 - -19,-4: - 0: 65535 - -18,-4: - 0: 65521 - -17,-4: - 0: 65535 - -13,-5: - 0: 65280 - -12,-5: - 0: 65280 - -11,16: - 0: 65535 - -10,16: - 0: 65535 - -16,19: - 0: 61152 - -15,19: - 0: 65520 - -14,19: - 0: 65533 - -13,19: - 0: 30711 - -16,20: - 0: 65535 - -16,21: - 0: 61439 - -16,22: - 0: 61167 - -15,20: - 0: 65535 - -15,21: - 0: 65535 - -15,22: - 0: 65535 - -14,20: - 0: 65535 - -14,21: - 0: 65535 - -14,22: - 0: 65535 - -13,20: - 0: 65535 - -13,21: - 0: 65535 - -13,22: - 0: 32767 - 0,14: - 0: 15 - 1,14: - 0: 3 - -3,17: - 0: 878 - -2,16: - 0: 249 - -1,16: - 0: 20 - -7,16: - 0: 32836 - -7,17: - 0: 8 - -12,18: - 0: 4368 - -12,19: - 0: 273 - -11,17: - 0: 61951 - -10,17: - 0: 62207 - -16,23: - 0: 143 - -15,23: - 0: 3839 - -14,23: - 0: 2047 - -13,23: - 0: 119 - -12,20: - 0: 4369 - -12,21: - 0: 4369 - -12,22: - 0: 4369 - -12,23: - 0: 1 - -17,20: - 0: 50184 - -17,21: - 0: 19524 - -17,22: - 0: 2188 - -28,4: - 0: 36608 - -28,7: - 0: 32776 - -27,4: - 0: 65480 - -26,4: - 0: 65524 - -25,4: - 0: 65520 - 4,-7: - 0: 17600 - 6,-8: - 0: 19456 - 7,7: - 0: 12151 - -6,-5: - 0: 19968 - -15,-4: - 0: 63472 - -14,-4: - 0: 44936 - -20,-4: - 0: 64640 - -24,10: - 0: 43658 - -24,11: - 0: 44718 - -24,12: - 0: 192 - -27,3: - 0: 49152 - -26,3: - 0: 61440 - -25,3: - 0: 4096 - -24,3: - 0: 61440 - -23,3: - 0: 61440 - -22,3: - 0: 3584 - 8,-3: - 0: 4368 - 8,-2: - 0: 4369 - 8,-1: - 0: 4369 - 2,-5: - 0: 49151 - 5,12: - 0: 8754 - 5,13: - 0: 8754 - 8,5: - 0: 4368 - 8,6: - 0: 4369 - 8,7: - 0: 4368 - 7,8: - 0: 15 - 8,8: - 0: 1 - -9,16: - 0: 8994 - -9,17: - 0: 12835 - -2,-6: - 0: 63984 - -1,-6: - 0: 62672 - 0,-6: - 0: 61904 - 1,-6: - 0: 63984 - 2,-6: - 0: 63696 - 3,-6: - 0: 21616 - 3,-5: - 0: 17909 - -14,-5: - 0: 34816 - -11,-5: - 0: 61440 - -10,-5: - 0: 4096 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 21.6852 - - 81.57766 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 25.17718 - - 94.71416 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.14996 - moles: - - 20.078888 - - 75.53487 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 6666.982 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 0 - - 6666.982 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 0 - - 0 - - 0 - - 6666.982 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - type: GridAtmosphere - - type: GasTileOverlay - - type: RadiationGridResistance - - id: Barratry - type: BecomesStation - - type: SpreaderGrid - - type: GridPathfinding - - uid: 5005 - components: - - type: MetaData - - type: Transform - - type: Map - - type: PhysicsMap - - type: Broadphase - - type: OccluderTree - - type: LoadedMap - - type: GridTree - - type: MovedGrids -- proto: AcousticGuitarInstrument - entities: - - uid: 14704 - components: - - pos: 28.538687,-28.497456 - parent: 1 - type: Transform -- proto: ActionToggleLight - entities: - - uid: 7458 - components: - - flags: InContainer - type: MetaData - - parent: 7940 - type: Transform - - container: 7940 - type: InstantAction -- proto: AirAlarm - entities: - - uid: 316 - components: - - pos: -10.5,-0.5 - parent: 1 - type: Transform - - devices: - - 1749 - - 1741 - - 1747 - - 1750 - - 12320 - - 12321 - - 12353 - - 12352 - - 12416 - - 12413 - - 12332 - - 12331 - - 12414 - - 12415 - - 12384 - - 14970 - type: DeviceList - - uid: 317 - components: - - pos: 3.5,-7.5 - parent: 1 - type: Transform - - uid: 8960 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,56.5 - parent: 1 - type: Transform - - devices: - - 8573 - - 8574 - - 8578 - - 8576 - - 8575 - - 8757 - - 8764 - - 8778 - - 8779 - - 8765 - - 8766 - - 8690 - - 8686 - - 8697 - - 8754 - - 8761 - - 8755 - - 8762 - - 8756 - - 8763 - type: DeviceList - - uid: 8962 - components: - - pos: -47.5,66.5 - parent: 1 - type: Transform - - uid: 8965 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,88.5 - parent: 1 - type: Transform - - devices: - - 5742 - - 5579 - - 5501 - - 5496 - - 8883 - - 8884 - - 8887 - - 8888 - - 8886 - - 8885 - - 8925 - - 8967 - - 8928 - - 8924 - type: DeviceList - - uid: 13040 - components: - - rot: 3.141592653589793 rad - pos: -50.5,45.5 - parent: 1 - type: Transform - - devices: - - 7995 - - 7996 - - 7997 - - 8003 - - 8002 - - 8001 - - 11119 - - 11122 - - 11270 - - 11272 - - 11175 - - 11172 - - 11145 - - 11146 - - 11319 - - 11318 - - 11317 - - 8573 - - 8574 - type: DeviceList - - uid: 13047 - components: - - rot: 3.141592653589793 rad - pos: -47.5,30.5 - parent: 1 - type: Transform - - devices: - - 5240 - - 5241 - - 5242 - - 7995 - - 7996 - - 7997 - - 5233 - - 5232 - - 5231 - - 11303 - - 11306 - - 11305 - - 11304 - - 11321 - - 11320 - - 11555 - - 11557 - type: DeviceList - - uid: 13051 - components: - - pos: -68.5,7.5 - parent: 1 - type: Transform - - devices: - - 5213 - - 5214 - - 5215 - type: DeviceList - - uid: 13053 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,-3.5 - parent: 1 - type: Transform - - devices: - - 5216 - - 5217 - - 5218 - - 11842 - - 11841 - - 11840 - - 11843 - - 4749 - - 4807 - - 4802 - - 4750 - - 4800 - - 3967 - - 4912 - - 4913 - - 4126 - type: DeviceList - - uid: 13055 - components: - - pos: -45.5,7.5 - parent: 1 - type: Transform - - devices: - - 11968 - - 11970 - - 11926 - - 11925 - - 11789 - - 11790 - - 4112 - - 4111 - - 4110 - - 5212 - - 5211 - - 5210 - type: DeviceList - - uid: 13057 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,-3.5 - parent: 1 - type: Transform - - devices: - - 3718 - - 3719 - - 3720 - - 3721 - - 3722 - - 3723 - - 3724 - - 3717 - - 3716 - - 3726 - - 12016 - - 12018 - - 11970 - - 12079 - - 12063 - - 11996 - - 11998 - - 12001 - type: DeviceList - - uid: 13058 - components: - - pos: -35.5,8.5 - parent: 1 - type: Transform - - devices: - - 4110 - - 4111 - - 4112 - - 4114 - - 4115 - - 4116 - - 4109 - - 4108 - - 4107 - - 12079 - - 12080 - - 12063 - - 12064 - - 11968 - - 11970 - - 11926 - - 11925 - - 12140 - - 12139 - - 11642 - - 11645 - type: DeviceList - - uid: 13061 - components: - - pos: -21.5,7.5 - parent: 1 - type: Transform - - devices: - - 1766 - - 1765 - - 1764 - - 4107 - - 4108 - - 4109 - - 12296 - - 12297 - - 12139 - - 12140 - - 12130 - - 12128 - type: DeviceList - - uid: 13063 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,18.5 - parent: 1 - type: Transform - - devices: - - 4114 - - 4115 - - 4116 - - 4117 - - 4118 - - 4119 - - 4120 - - 4121 - - 4122 - - 4123 - - 5227 - - 5226 - - 5225 - - 11642 - - 11645 - - 11641 - - 11644 - - 11643 - - 11640 - type: DeviceList - - uid: 13065 - components: - - pos: -41.5,40.5 - parent: 1 - type: Transform - - devices: - - 5233 - - 5232 - - 5231 - - 5225 - - 5226 - - 5227 - - 5228 - - 5229 - - 5230 - - 11592 - - 11596 - - 11593 - - 11597 - - 11594 - - 11599 - - 9786 - - 9787 - - 9788 - - 9789 - - 9784 - - 9785 - type: DeviceList - - uid: 13067 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,45.5 - parent: 1 - type: Transform - - devices: - - 11238 - - 11237 - - 11239 - - 11236 - - 11240 - - 9784 - - 9785 - - 9790 - - 9791 - - 9792 - - 9793 - - 11235 - type: DeviceList - - uid: 13069 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,42.5 - parent: 1 - type: Transform - - devices: - - 9790 - - 9791 - - 9793 - - 9792 - - 11196 - - 11192 - - 11209 - - 11208 - type: DeviceList - - uid: 13071 - components: - - pos: -29.5,34.5 - parent: 1 - type: Transform - - devices: - - 12172 - - 12173 - - 5228 - - 5229 - - 5230 - - 5236 - - 5235 - - 5234 - type: DeviceList - - uid: 13073 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,42.5 - parent: 1 - type: Transform - - devices: - - 5237 - - 5238 - - 5239 - - 12259 - - 12255 - - 12256 - - 12260 - - 12273 - - 12272 - type: DeviceList - - uid: 13074 - components: - - pos: -22.5,43.5 - parent: 1 - type: Transform - - devices: - - 9819 - - 12257 - - 12261 - - 12258 - - 12190 - type: DeviceList - - uid: 13077 - components: - - pos: -13.5,34.5 - parent: 1 - type: Transform - - devices: - - 5237 - - 5238 - - 5239 - - 12259 - - 12255 - - 12256 - - 12260 - - 12273 - - 12272 - - 3064 - - 3122 - - 2814 - - 2881 - - 3175 - - 3176 - - 3177 - - 2866 - - 2865 - - 12485 - - 12482 - - 12486 - - 12481 - type: DeviceList - - uid: 13079 - components: - - pos: -18.5,58.5 - parent: 1 - type: Transform - - devices: - - 6496 - - 6497 - - 9808 - - 6498 - - 6499 - - 6500 - - 6501 - - 6502 - - 6503 - - 6504 - - 13010 - - 13004 - - 13011 - - 13005 - - 13012 - - 13006 - - 13013 - - 13007 - - 13031 - - 13034 - - 13032 - - 13033 - type: DeviceList - - uid: 13096 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,19.5 - parent: 1 - type: Transform - - devices: - - 1763 - - 1762 - - 1761 - - 3177 - - 3176 - - 3175 - - 12506 - - 12507 - - 12508 - - 12509 - - 12510 - - 12484 - - 12488 - - 12487 - - 12483 - type: DeviceList - - uid: 13099 - components: - - pos: -1.5,7.5 - parent: 1 - type: Transform - - devices: - - 1758 - - 1759 - - 1760 - - 1768 - - 1767 - - 1753 - - 1752 - - 12586 - - 12582 - - 12583 - - 12587 - type: DeviceList - - uid: 13100 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,-0.5 - parent: 1 - type: Transform - - devices: - - 12585 - - 12588 - - 12589 - - 12584 - - 1753 - - 1752 - - 12595 - - 12596 - - 12605 - - 12606 - type: DeviceList - - uid: 13103 - components: - - pos: 21.5,7.5 - parent: 1 - type: Transform - - devices: - - 1767 - - 1768 - - 1755 - - 1754 - - 12656 - - 12652 - - 12658 - - 12654 - - 12587 - - 12583 - type: DeviceList - - uid: 13105 - components: - - rot: 3.141592653589793 rad - pos: 28.5,4.5 - parent: 1 - type: Transform - - devices: - - 12658 - - 12654 - - 12715 - - 12710 - - 12716 - - 12713 - - 12714 - - 12717 - - 1755 - - 1754 - type: DeviceList - - uid: 13299 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,32.5 - parent: 1 - type: Transform - - devices: - - 2055 - - 2868 - - 2867 - - 2869 - - 13306 - - 13305 - - 2052 - - 2051 - - 13309 - - 13308 - - 13307 - - 2053 - - 2054 - - 12736 - - 2102 - - 3023 - - 3019 - - 2674 - - 2490 - - 2666 - - 2487 - - 2671 - - 2488 - - 2670 - - 2489 - - 3022 - - 3021 - - 15082 - - 15083 - type: DeviceList - - uid: 13304 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,22.5 - parent: 1 - type: Transform - - devices: - - 13301 - - 13302 - - 2051 - - 2052 - - 2880 - - 2878 - - 2879 - - 2869 - - 2870 - - 12859 - - 12858 - - 3021 - - 3022 - - 3023 - - 3019 - - 3020 - - 3024 - - 12766 - - 12765 - - 12759 - - 12760 - - 12761 - - 12762 - - 12763 - - 13307 - - 13308 - - 13309 - - 15079 - - 15080 - - 15081 - type: DeviceList - - uid: 14286 - components: - - rot: -1.5707963267948966 rad - pos: -72.5,32.5 - parent: 1 - type: Transform - - devices: - - 10685 - - 10684 - - 10688 - - 10689 - - 14115 - - 14116 - - 14038 - - 14045 - - 14148 - - 14149 - - 14160 - - 14161 - - 14040 - type: DeviceList - - uid: 14297 - components: - - rot: -1.5707963267948966 rad - pos: -76.5,38.5 - parent: 1 - type: Transform - - devices: - - 10676 - - 10675 - - 10674 - - 10673 - - 10672 - - 10671 - - 10670 - - 10669 - - 10668 - - 10667 - - 10666 - - 14046 - - 14047 - type: DeviceList - - uid: 14301 - components: - - rot: 1.5707963267948966 rad - pos: -75.5,20.5 - parent: 1 - type: Transform - - devices: - - 14304 - - 14302 - - 10686 - - 10687 - - 14303 - - 10684 - - 10685 - - 10682 - - 10683 - - 14114 - - 14109 - - 14111 - - 14110 - - 14112 - - 14113 - - 14116 - - 14115 - - 14159 - - 14158 - type: DeviceList -- proto: AirAlarmElectronics - entities: - - uid: 5539 - components: - - pos: -47.591698,28.816675 - parent: 1 - type: Transform - - uid: 5540 - components: - - pos: -47.388573,28.48855 - parent: 1 - type: Transform -- proto: AirCanister - entities: - - uid: 1153 - components: - - pos: 21.5,25.5 - parent: 1 - type: Transform - - uid: 1189 - components: - - pos: -3.5,13.5 - parent: 1 - type: Transform - - uid: 2400 - components: - - pos: 6.5,37.5 - parent: 1 - type: Transform - - uid: 5586 - components: - - pos: -2.5,36.5 - parent: 1 - type: Transform - - uid: 5673 - components: - - pos: -27.5,20.5 - parent: 1 - type: Transform - - uid: 6080 - components: - - pos: -76.5,31.5 - parent: 1 - type: Transform - - uid: 7930 - components: - - pos: -77.5,31.5 - parent: 1 - type: Transform - - uid: 9267 - components: - - pos: 25.5,-4.5 - parent: 1 - type: Transform - - uid: 9469 - components: - - pos: 22.5,25.5 - parent: 1 - type: Transform - - uid: 9470 - components: - - pos: -48.5,19.5 - parent: 1 - type: Transform - - uid: 10041 - components: - - pos: 14.5,43.5 - parent: 1 - type: Transform - - uid: 10127 - components: - - pos: -39.5,54.5 - parent: 1 - type: Transform - - uid: 10352 - components: - - pos: -78.5,31.5 - parent: 1 - type: Transform - - uid: 12895 - components: - - pos: 14.5,15.5 - parent: 1 - type: Transform - - uid: 14335 - components: - - pos: -75.5,42.5 - parent: 1 - type: Transform - - uid: 14579 - components: - - pos: -60.5,18.5 - parent: 1 - type: Transform - - uid: 15906 - components: - - pos: 5.5,-18.5 - parent: 1 - type: Transform -- proto: Airlock - entities: - - uid: 1600 - components: - - pos: 9.5,0.5 - parent: 1 - type: Transform - - uid: 1601 - components: - - pos: 9.5,-2.5 - parent: 1 - type: Transform - - uid: 1608 - components: - - pos: -26.5,3.5 - parent: 1 - type: Transform - - uid: 1609 - components: - - pos: -24.5,2.5 - parent: 1 - type: Transform - - uid: 1610 - components: - - pos: -24.5,0.5 - parent: 1 - type: Transform - - uid: 1611 - components: - - pos: -24.5,-1.5 - parent: 1 - type: Transform - - uid: 3412 - components: - - pos: -23.5,14.5 - parent: 1 - type: Transform - - uid: 5299 - components: - - pos: -55.5,24.5 - parent: 1 - type: Transform - - uid: 7276 - components: - - pos: -56.5,86.5 - parent: 1 - type: Transform - - uid: 9211 - components: - - rot: 3.141592653589793 rad - pos: -59.5,44.5 - parent: 1 - type: Transform -- proto: AirlockArmoryGlassLocked - entities: - - uid: 336 - components: - - pos: -49.5,65.5 - parent: 1 - type: Transform - - uid: 7431 - components: - - pos: -49.5,64.5 - parent: 1 - type: Transform -- proto: AirlockArmoryLocked - entities: - - uid: 7876 - components: - - pos: -49.5,61.5 - parent: 1 - type: Transform -- proto: AirlockAtmosphericsGlassLocked - entities: - - uid: 10695 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,34.5 - parent: 1 - type: Transform - - uid: 10696 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,35.5 - parent: 1 - type: Transform -- proto: AirlockBarGlassLocked - entities: - - uid: 5282 - components: - - pos: -55.5,20.5 - parent: 1 - type: Transform -- proto: AirlockBarLocked - entities: - - uid: 7369 - components: - - pos: -33.5,40.5 - parent: 1 - type: Transform - - uid: 7370 - components: - - pos: -29.5,37.5 - parent: 1 - type: Transform -- proto: AirlockBrigGlassLocked - entities: - - uid: 7879 - components: - - pos: -49.5,55.5 - parent: 1 - type: Transform - - uid: 7880 - components: - - pos: -49.5,53.5 - parent: 1 - type: Transform - - uid: 7881 - components: - - pos: -48.5,52.5 - parent: 1 - type: Transform - - uid: 7882 - components: - - pos: -46.5,52.5 - parent: 1 - type: Transform - - uid: 10935 - components: - - pos: -62.5,43.5 - parent: 1 - type: Transform -- proto: AirlockCaptainLocked - entities: - - uid: 6507 - components: - - pos: -7.5,58.5 - parent: 1 - type: Transform -- proto: AirlockCargo - entities: - - uid: 3646 - components: - - pos: -44.5,-0.5 - parent: 1 - type: Transform -- proto: AirlockCargoGlassLocked - entities: - - uid: 3620 - components: - - pos: -41.5,-0.5 - parent: 1 - type: Transform - - uid: 3621 - components: - - pos: -40.5,-0.5 - parent: 1 - type: Transform - - uid: 3622 - components: - - pos: -42.5,-2.5 - parent: 1 - type: Transform - - uid: 3639 - components: - - pos: -37.5,-0.5 - parent: 1 - type: Transform -- proto: AirlockChapelLocked - entities: - - uid: 1644 - components: - - pos: 18.5,-1.5 - parent: 1 - type: Transform -- proto: AirlockChemistryLocked - entities: - - uid: 1898 - components: - - pos: 1.5,23.5 - parent: 1 - type: Transform -- proto: AirlockChiefEngineerLocked - entities: - - uid: 5301 - components: - - pos: -50.5,26.5 - parent: 1 - type: Transform - - uid: 10697 - components: - - rot: -1.5707963267948966 rad - pos: -74.5,18.5 - parent: 1 - type: Transform -- proto: AirlockChiefMedicalOfficerLocked - entities: - - uid: 1240 - components: - - pos: 17.5,32.5 - parent: 1 - type: Transform - - uid: 1323 - components: - - pos: 13.5,28.5 - parent: 1 - type: Transform -- proto: AirlockCommandGlassLocked - entities: - - uid: 6392 - components: - - rot: 3.141592653589793 rad - pos: -16.5,52.5 - parent: 1 - type: Transform - - uid: 6393 - components: - - rot: 3.141592653589793 rad - pos: -13.5,55.5 - parent: 1 - type: Transform - - uid: 6394 - components: - - rot: 3.141592653589793 rad - pos: -15.5,58.5 - parent: 1 - type: Transform - - uid: 6395 - components: - - rot: 3.141592653589793 rad - pos: -17.5,58.5 - parent: 1 - type: Transform - - uid: 6651 - components: - - pos: -14.5,48.5 - parent: 1 - type: Transform - - uid: 6652 - components: - - pos: -14.5,47.5 - parent: 1 - type: Transform -- proto: AirlockCommandLocked - entities: - - uid: 3220 - components: - - pos: -41.5,7.5 - parent: 1 - type: Transform -- proto: AirlockEngineeringGlassLocked - entities: - - uid: 10679 - components: - - rot: 3.141592653589793 rad - pos: -84.5,22.5 - parent: 1 - type: Transform - - uid: 10680 - components: - - rot: 3.141592653589793 rad - pos: -84.5,28.5 - parent: 1 - type: Transform - - uid: 10681 - components: - - rot: 3.141592653589793 rad - pos: -77.5,25.5 - parent: 1 - type: Transform - - uid: 10692 - components: - - rot: -1.5707963267948966 rad - pos: -72.5,21.5 - parent: 1 - type: Transform - - uid: 10694 - components: - - rot: -1.5707963267948966 rad - pos: -64.5,29.5 - parent: 1 - type: Transform -- proto: AirlockEngineeringLocked - entities: - - uid: 607 - components: - - pos: 11.5,-6.5 - parent: 1 - type: Transform - - uid: 2694 - components: - - pos: 22.5,7.5 - parent: 1 - type: Transform - - uid: 3933 - components: - - pos: -22.5,-4.5 - parent: 1 - type: Transform - - uid: 4338 - components: - - pos: -42.5,14.5 - parent: 1 - type: Transform - - uid: 5300 - components: - - pos: -48.5,30.5 - parent: 1 - type: Transform - - uid: 5655 - components: - - rot: 3.141592653589793 rad - pos: -17.5,17.5 - parent: 1 - type: Transform - - uid: 6197 - components: - - pos: 16.5,45.5 - parent: 1 - type: Transform - - uid: 6807 - components: - - pos: -34.5,56.5 - parent: 1 - type: Transform - - uid: 10142 - components: - - pos: -65.5,58.5 - parent: 1 - type: Transform - - uid: 11061 - components: - - rot: -1.5707963267948966 rad - pos: -72.5,26.5 - parent: 1 - type: Transform - - uid: 13619 - components: - - pos: -62.5,32.5 - parent: 1 - type: Transform - - uid: 15044 - components: - - pos: -8.5,7.5 - parent: 1 - type: Transform -- proto: AirlockExternal - entities: - - uid: 184 - components: - - pos: -5.5,-17.5 - parent: 1 - type: Transform - - uid: 217 - components: - - pos: -5.5,-15.5 - parent: 1 - type: Transform - - uid: 1640 - components: - - pos: 29.5,18.5 - parent: 1 - type: Transform - - uid: 1641 - components: - - pos: 29.5,16.5 - parent: 1 - type: Transform - - uid: 1642 - components: - - pos: 29.5,10.5 - parent: 1 - type: Transform - - uid: 1645 - components: - - pos: 29.5,8.5 - parent: 1 - type: Transform - - uid: 4101 - components: - - rot: 3.141592653589793 rad - pos: -72.5,-12.5 - parent: 1 - type: Transform - - uid: 4102 - components: - - rot: 3.141592653589793 rad - pos: -74.5,-12.5 - parent: 1 - type: Transform - - uid: 4751 - components: - - rot: 3.141592653589793 rad - pos: -66.5,-12.5 - parent: 1 - type: Transform - - uid: 4754 - components: - - rot: 3.141592653589793 rad - pos: -64.5,-12.5 - parent: 1 - type: Transform -- proto: AirlockExternalAtmosphericsLocked - entities: - - uid: 9252 - components: - - rot: 1.5707963267948966 rad - pos: -77.5,47.5 - parent: 1 - type: Transform - - uid: 9256 - components: - - rot: 1.5707963267948966 rad - pos: -78.5,48.5 - parent: 1 - type: Transform - - uid: 10665 - components: - - rot: 1.5707963267948966 rad - pos: -76.5,48.5 - parent: 1 - type: Transform -- proto: AirlockExternalGlass - entities: - - uid: 1770 - components: - - rot: 3.141592653589793 rad - pos: -78.5,-10.5 - parent: 1 - type: Transform - - uid: 3969 - components: - - rot: 3.141592653589793 rad - pos: -76.5,-10.5 - parent: 1 - type: Transform - - uid: 4850 - components: - - pos: -66.5,3.5 - parent: 1 - type: Transform - - uid: 4871 - components: - - pos: -73.5,3.5 - parent: 1 - type: Transform - - uid: 4951 - components: - - rot: 3.141592653589793 rad - pos: -66.5,-8.5 - parent: 1 - type: Transform - - uid: 4952 - components: - - rot: 3.141592653589793 rad - pos: -73.5,-8.5 - parent: 1 - type: Transform - - uid: 7196 - components: - - pos: -52.5,66.5 - parent: 1 - type: Transform - - uid: 7199 - components: - - pos: -50.5,66.5 - parent: 1 - type: Transform - - uid: 7203 - components: - - pos: -50.5,70.5 - parent: 1 - type: Transform - - uid: 7206 - components: - - pos: -52.5,70.5 - parent: 1 - type: Transform - - uid: 7219 - components: - - pos: -52.5,77.5 - parent: 1 - type: Transform - - uid: 7220 - components: - - pos: -50.5,77.5 - parent: 1 - type: Transform - - uid: 7334 - components: - - pos: -52.5,81.5 - parent: 1 - type: Transform - - uid: 7335 - components: - - pos: -50.5,81.5 - parent: 1 - type: Transform -- proto: AirlockExternalGlassCargoLocked - entities: - - uid: 7343 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,-12.5 - parent: 1 - type: Transform - - uid: 7345 - components: - - pos: -48.5,-14.5 - parent: 1 - type: Transform - - uid: 9129 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,-13.5 - parent: 1 - type: Transform - - uid: 10260 - components: - - pos: -34.5,-11.5 - parent: 1 - type: Transform - - uid: 10261 - components: - - pos: -32.5,-11.5 - parent: 1 - type: Transform -- proto: AirlockExternalGlassEngineeringLocked - entities: - - uid: 10677 - components: - - rot: 3.141592653589793 rad - pos: -86.5,30.5 - parent: 1 - type: Transform - - uid: 10678 - components: - - rot: 3.141592653589793 rad - pos: -86.5,20.5 - parent: 1 - type: Transform -- proto: AirlockExternalGlassShuttleArrivals - entities: - - uid: 4844 - components: - - pos: -73.5,2.5 - parent: 1 - type: Transform - - uid: 4876 - components: - - pos: -66.5,2.5 - parent: 1 - type: Transform - - uid: 4964 - components: - - rot: 3.141592653589793 rad - pos: -73.5,-7.5 - parent: 1 - type: Transform - - uid: 4984 - components: - - rot: 3.141592653589793 rad - pos: -66.5,-7.5 - parent: 1 - type: Transform -- proto: AirlockExternalGlassShuttleEmergencyLocked - entities: - - uid: 1636 - components: - - rot: 1.5707963267948966 rad - pos: 32.5,10.5 - parent: 1 - type: Transform - - uid: 1637 - components: - - rot: 1.5707963267948966 rad - pos: 32.5,8.5 - parent: 1 - type: Transform - - uid: 1638 - components: - - rot: 1.5707963267948966 rad - pos: 32.5,16.5 - parent: 1 - type: Transform - - uid: 1639 - components: - - rot: 1.5707963267948966 rad - pos: 32.5,18.5 - parent: 1 - type: Transform -- proto: AirlockExternalGlassShuttleLocked - entities: - - uid: 3966 - components: - - pos: -64.5,-15.5 - parent: 1 - type: Transform - - uid: 4100 - components: - - pos: -74.5,-15.5 - parent: 1 - type: Transform - - uid: 4105 - components: - - pos: -72.5,-15.5 - parent: 1 - type: Transform - - uid: 4756 - components: - - pos: -66.5,-15.5 - parent: 1 - type: Transform - - uid: 10292 - components: - - pos: -34.5,-14.5 - parent: 1 - type: Transform - - uid: 10302 - components: - - pos: -32.5,-14.5 - parent: 1 - type: Transform -- proto: AirlockExternalLocked - entities: - - uid: 748 - components: - - pos: 28.5,-9.5 - parent: 1 - type: Transform - - uid: 909 - components: - - rot: 1.5707963267948966 rad - pos: 28.5,-6.5 - parent: 1 - type: Transform - - uid: 6966 - components: - - pos: -31.5,56.5 - parent: 1 - type: Transform - - uid: 6967 - components: - - pos: -31.5,58.5 - parent: 1 - type: Transform -- proto: AirlockFreezerLocked - entities: - - uid: 6926 - components: - - pos: -26.5,45.5 - parent: 1 - type: Transform - - uid: 6927 - components: - - pos: -30.5,46.5 - parent: 1 - type: Transform -- proto: AirlockGlass - entities: - - uid: 1597 - components: - - pos: 12.5,-0.5 - parent: 1 - type: Transform - - uid: 1598 - components: - - pos: 12.5,-1.5 - parent: 1 - type: Transform - - uid: 1599 - components: - - pos: 12.5,-2.5 - parent: 1 - type: Transform - - uid: 1756 - components: - - pos: 24.5,6.5 - parent: 1 - type: Transform - - uid: 1757 - components: - - pos: 24.5,5.5 - parent: 1 - type: Transform - - uid: 3396 - components: - - pos: -23.5,7.5 - parent: 1 - type: Transform - - uid: 7364 - components: - - pos: -38.5,34.5 - parent: 1 - type: Transform - - uid: 7365 - components: - - pos: -36.5,34.5 - parent: 1 - type: Transform - - uid: 10799 - components: - - pos: -22.5,30.5 - parent: 1 - type: Transform - - uid: 11909 - components: - - pos: -59.5,12.5 - parent: 1 - type: Transform - - uid: 15377 - components: - - rot: 3.141592653589793 rad - pos: 19.5,7.5 - parent: 1 - type: Transform -- proto: AirlockHeadOfPersonnelGlassLocked - entities: - - uid: 3454 - components: - - pos: -20.5,43.5 - parent: 1 - type: Transform - - uid: 5835 - components: - - pos: -18.5,45.5 - parent: 1 - type: Transform -- proto: AirlockHeadOfSecurityLocked - entities: - - uid: 5740 - components: - - pos: -59.5,62.5 - parent: 1 - type: Transform -- proto: AirlockHydroGlassLocked - entities: - - uid: 6879 - components: - - pos: -40.5,48.5 - parent: 1 - type: Transform -- proto: AirlockHydroponicsLocked - entities: - - uid: 6880 - components: - - pos: -45.5,46.5 - parent: 1 - type: Transform - - uid: 6881 - components: - - pos: -40.5,40.5 - parent: 1 - type: Transform -- proto: AirlockJanitorLocked - entities: - - uid: 7046 - components: - - pos: -52.5,39.5 - parent: 1 - type: Transform - - uid: 7051 - components: - - pos: -49.5,36.5 - parent: 1 - type: Transform -- proto: AirlockKitchenGlassLocked - entities: - - uid: 6903 - components: - - pos: -37.5,41.5 - parent: 1 - type: Transform -- proto: AirlockMaint - entities: - - uid: 1605 - components: - - pos: 24.5,-6.5 - parent: 1 - type: Transform - - uid: 2239 - components: - - pos: 15.5,18.5 - parent: 1 - type: Transform - - uid: 2240 - components: - - pos: 20.5,21.5 - parent: 1 - type: Transform - - uid: 3161 - components: - - pos: -31.5,16.5 - parent: 1 - type: Transform - - uid: 3504 - components: - - pos: -24.5,-9.5 - parent: 1 - type: Transform - - uid: 3505 - components: - - pos: -20.5,-9.5 - parent: 1 - type: Transform - - uid: 3506 - components: - - pos: -20.5,-12.5 - parent: 1 - type: Transform - - uid: 5369 - components: - - pos: -51.5,-3.5 - parent: 1 - type: Transform - - uid: 5463 - components: - - pos: -10.5,37.5 - parent: 1 - type: Transform - - uid: 6073 - components: - - pos: 7.5,49.5 - parent: 1 - type: Transform - - uid: 6075 - components: - - pos: 13.5,45.5 - parent: 1 - type: Transform - - uid: 6076 - components: - - pos: 10.5,49.5 - parent: 1 - type: Transform - - uid: 6078 - components: - - pos: 3.5,48.5 - parent: 1 - type: Transform - - uid: 6081 - components: - - pos: -0.5,48.5 - parent: 1 - type: Transform - - uid: 7586 - components: - - pos: -26.5,41.5 - parent: 1 - type: Transform - - uid: 13362 - components: - - pos: -73.5,44.5 - parent: 1 - type: Transform - - uid: 13363 - components: - - pos: -68.5,40.5 - parent: 1 - type: Transform - - uid: 13364 - components: - - pos: -74.5,52.5 - parent: 1 - type: Transform - - uid: 13365 - components: - - pos: -68.5,52.5 - parent: 1 - type: Transform - - uid: 14011 - components: - - rot: -1.5707963267948966 rad - pos: -63.5,15.5 - parent: 1 - type: Transform - - uid: 14465 - components: - - pos: -68.5,12.5 - parent: 1 - type: Transform -- proto: AirlockMaintBarLocked - entities: - - uid: 6710 - components: - - pos: -26.5,36.5 - parent: 1 - type: Transform -- proto: AirlockMaintCargoLocked - entities: - - uid: 3623 - components: - - pos: -47.5,-2.5 - parent: 1 - type: Transform - - uid: 3624 - components: - - pos: -30.5,-6.5 - parent: 1 - type: Transform -- proto: AirlockMaintChapelLocked - entities: - - uid: 1646 - components: - - pos: 19.5,-3.5 - parent: 1 - type: Transform -- proto: AirlockMaintChemLocked - entities: - - uid: 1620 - components: - - pos: -3.5,18.5 - parent: 1 - type: Transform -- proto: AirlockMaintCommandLocked - entities: - - uid: 6313 - components: - - pos: 16.5,37.5 - parent: 1 - type: Transform - - uid: 6397 - components: - - pos: -5.5,55.5 - parent: 1 - type: Transform - - uid: 6661 - components: - - pos: -9.5,47.5 - parent: 1 - type: Transform - - uid: 11896 - components: - - pos: 16.5,38.5 - parent: 1 - type: Transform -- proto: AirlockMaintEngiLocked - entities: - - uid: 612 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,18.5 - parent: 1 - type: Transform - - uid: 13621 - components: - - pos: -63.5,35.5 - parent: 1 - type: Transform -- proto: AirlockMaintGlass - entities: - - uid: 5878 - components: - - pos: -7.5,45.5 - parent: 1 - type: Transform -- proto: AirlockMaintHOPLocked - entities: - - uid: 3448 - components: - - pos: -23.5,41.5 - parent: 1 - type: Transform -- proto: AirlockMaintHydroLocked - entities: - - uid: 7896 - components: - - pos: -43.5,50.5 - parent: 1 - type: Transform -- proto: AirlockMaintJanitorLocked - entities: - - uid: 7063 - components: - - pos: -53.5,41.5 - parent: 1 - type: Transform -- proto: AirlockMaintKitchenLocked - entities: - - uid: 6693 - components: - - pos: -32.5,48.5 - parent: 1 - type: Transform -- proto: AirlockMaintLocked - entities: - - uid: 1602 - components: - - pos: 10.5,-4.5 - parent: 1 - type: Transform - - uid: 1603 - components: - - pos: 4.5,2.5 - parent: 1 - type: Transform - - uid: 1604 - components: - - pos: 22.5,3.5 - parent: 1 - type: Transform - - uid: 1606 - components: - - pos: -15.5,2.5 - parent: 1 - type: Transform - - uid: 1607 - components: - - pos: -26.5,-3.5 - parent: 1 - type: Transform - - uid: 1612 - components: - - pos: -5.5,8.5 - parent: 1 - type: Transform - - uid: 1613 - components: - - pos: -10.5,25.5 - parent: 1 - type: Transform - - uid: 3173 - components: - - pos: -33.5,8.5 - parent: 1 - type: Transform - - uid: 3180 - components: - - pos: -21.5,26.5 - parent: 1 - type: Transform - - uid: 3181 - components: - - pos: -19.5,8.5 - parent: 1 - type: Transform - - uid: 3391 - components: - - rot: 3.141592653589793 rad - pos: -21.5,16.5 - parent: 1 - type: Transform - - uid: 3392 - components: - - rot: 3.141592653589793 rad - pos: -29.5,15.5 - parent: 1 - type: Transform - - uid: 3393 - components: - - rot: 3.141592653589793 rad - pos: -21.5,12.5 - parent: 1 - type: Transform - - uid: 3906 - components: - - pos: -28.5,3.5 - parent: 1 - type: Transform - - uid: 4257 - components: - - pos: -44.5,29.5 - parent: 1 - type: Transform - - uid: 4258 - components: - - pos: -40.5,21.5 - parent: 1 - type: Transform - - uid: 4590 - components: - - pos: -51.5,15.5 - parent: 1 - type: Transform - - uid: 4741 - components: - - pos: -44.5,7.5 - parent: 1 - type: Transform - - uid: 5365 - components: - - pos: -48.5,2.5 - parent: 1 - type: Transform - - uid: 5366 - components: - - pos: -55.5,1.5 - parent: 1 - type: Transform - - uid: 5367 - components: - - pos: -55.5,-9.5 - parent: 1 - type: Transform - - uid: 5368 - components: - - pos: -55.5,-6.5 - parent: 1 - type: Transform - - uid: 5577 - components: - - rot: 3.141592653589793 rad - pos: -14.5,20.5 - parent: 1 - type: Transform - - uid: 6072 - components: - - pos: -18.5,51.5 - parent: 1 - type: Transform - - uid: 6074 - components: - - pos: -14.5,51.5 - parent: 1 - type: Transform - - uid: 7093 - components: - - pos: -55.5,39.5 - parent: 1 - type: Transform - - uid: 7094 - components: - - pos: -50.5,43.5 - parent: 1 - type: Transform - - uid: 7585 - components: - - pos: -24.5,35.5 - parent: 1 - type: Transform - - uid: 7897 - components: - - pos: -45.5,49.5 - parent: 1 - type: Transform - - uid: 9258 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,7.5 - parent: 1 - type: Transform - - uid: 9288 - components: - - pos: -59.5,47.5 - parent: 1 - type: Transform - - uid: 13622 - components: - - pos: -60.5,34.5 - parent: 1 - type: Transform - - uid: 13623 - components: - - pos: -60.5,30.5 - parent: 1 - type: Transform -- proto: AirlockMaintMedLocked - entities: - - uid: 1365 - components: - - pos: 12.5,15.5 - parent: 1 - type: Transform - - uid: 1901 - components: - - pos: 13.5,35.5 - parent: 1 - type: Transform - - uid: 1971 - components: - - pos: 11.5,22.5 - parent: 1 - type: Transform - - uid: 2008 - components: - - pos: 5.5,40.5 - parent: 1 - type: Transform - - uid: 2050 - components: - - rot: 3.141592653589793 rad - pos: -2.5,16.5 - parent: 1 - type: Transform -- proto: AirlockMaintRnDLocked - entities: - - uid: 226 - components: - - pos: 0.5,-5.5 - parent: 1 - type: Transform - - uid: 1094 - components: - - pos: -17.5,-9.5 - parent: 1 - type: Transform - - uid: 1515 - components: - - pos: -16.5,-6.5 - parent: 1 - type: Transform -- proto: AirlockMaintSalvageLocked - entities: - - uid: 5382 - components: - - pos: -46.5,-9.5 - parent: 1 - type: Transform -- proto: AirlockMaintSecLocked - entities: - - uid: 2848 - components: - - pos: -18.5,29.5 - parent: 1 - type: Transform - - uid: 7867 - components: - - pos: -64.5,57.5 - parent: 1 - type: Transform - - uid: 7883 - components: - - pos: -45.5,54.5 - parent: 1 - type: Transform -- proto: AirlockMaintTheatreLocked - entities: - - uid: 3419 - components: - - pos: -21.5,23.5 - parent: 1 - type: Transform - - uid: 4234 - components: - - pos: -43.5,27.5 - parent: 1 - type: Transform -- proto: AirlockMedicalGlass - entities: - - uid: 1995 - components: - - pos: -5.5,31.5 - parent: 1 - type: Transform - - uid: 1996 - components: - - pos: -5.5,33.5 - parent: 1 - type: Transform -- proto: AirlockMedicalGlassLocked - entities: - - uid: 1320 - components: - - pos: 6.5,28.5 - parent: 1 - type: Transform - - uid: 1354 - components: - - pos: 6.5,29.5 - parent: 1 - type: Transform - - uid: 1617 - components: - - pos: 1.5,29.5 - parent: 1 - type: Transform - - uid: 1618 - components: - - pos: 1.5,30.5 - parent: 1 - type: Transform - - uid: 10538 - components: - - rot: 3.141592653589793 rad - pos: -14.5,15.5 - parent: 1 - type: Transform -- proto: AirlockMedicalLocked - entities: - - uid: 1319 - components: - - pos: 5.5,24.5 - parent: 1 - type: Transform - - uid: 1351 - components: - - pos: 3.5,35.5 - parent: 1 - type: Transform - - uid: 1352 - components: - - pos: 5.5,33.5 - parent: 1 - type: Transform - - uid: 1353 - components: - - pos: 5.5,25.5 - parent: 1 - type: Transform - - uid: 1629 - components: - - pos: 1.5,33.5 - parent: 1 - type: Transform - - uid: 2312 - components: - - pos: 3.5,18.5 - parent: 1 - type: Transform -- proto: AirlockQuartermasterLocked - entities: - - uid: 3666 - components: - - pos: -44.5,-5.5 - parent: 1 - type: Transform -- proto: AirlockResearchDirectorLocked - entities: - - uid: 252 - components: - - pos: -2.5,-0.5 - parent: 1 - type: Transform - - uid: 256 - components: - - pos: -12.5,-6.5 - parent: 1 - type: Transform -- proto: AirlockSalvageGlassLocked - entities: - - uid: 3566 - components: - - pos: -40.5,-8.5 - parent: 1 - type: Transform - - uid: 10278 - components: - - pos: -35.5,-2.5 - parent: 1 - type: Transform -- proto: AirlockSalvageLocked - entities: - - uid: 3669 - components: - - pos: -32.5,-0.5 - parent: 1 - type: Transform -- proto: AirlockScienceLocked - entities: - - uid: 221 - components: - - pos: -0.5,-10.5 - parent: 1 - type: Transform - - uid: 222 - components: - - pos: 1.5,-12.5 - parent: 1 - type: Transform - - uid: 223 - components: - - pos: -12.5,3.5 - parent: 1 - type: Transform - - uid: 224 - components: - - pos: -10.5,1.5 - parent: 1 - type: Transform - - uid: 225 - components: - - pos: 0.5,-1.5 - parent: 1 - type: Transform - - uid: 283 - components: - - pos: -10.5,-12.5 - parent: 1 - type: Transform - - uid: 532 - components: - - pos: 19.5,-6.5 - parent: 1 - type: Transform - - uid: 1514 - components: - - rot: 3.141592653589793 rad - pos: -14.5,-2.5 - parent: 1 - type: Transform -- proto: AirlockSecurityGlassLocked - entities: - - uid: 2017 - components: - - pos: 1.5,7.5 - parent: 1 - type: Transform - - uid: 5477 - components: - - pos: -50.5,69.5 - parent: 1 - type: Transform - - uid: 5481 - components: - - pos: -52.5,69.5 - parent: 1 - type: Transform - - uid: 5739 - components: - - pos: -55.5,62.5 - parent: 1 - type: Transform - - uid: 5743 - components: - - pos: -50.5,78.5 - parent: 1 - type: Transform - - uid: 5744 - components: - - pos: -52.5,78.5 - parent: 1 - type: Transform - - uid: 7336 - components: - - pos: -53.5,83.5 - parent: 1 - type: Transform - - uid: 7337 - components: - - pos: -53.5,89.5 - parent: 1 - type: Transform - - uid: 7644 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,83.5 - parent: 1 - type: Transform - - uid: 7645 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,89.5 - parent: 1 - type: Transform - - uid: 7863 - components: - - pos: -52.5,59.5 - parent: 1 - type: Transform - - uid: 7864 - components: - - pos: -50.5,59.5 - parent: 1 - type: Transform - - uid: 7865 - components: - - pos: -58.5,55.5 - parent: 1 - type: Transform - - uid: 7866 - components: - - pos: -58.5,53.5 - parent: 1 - type: Transform -- proto: AirlockSecurityLocked - entities: - - uid: 2847 - components: - - rot: 3.141592653589793 rad - pos: -14.5,27.5 - parent: 1 - type: Transform - - uid: 7895 - components: - - pos: -58.5,57.5 - parent: 1 - type: Transform - - uid: 8601 - components: - - pos: -16.5,7.5 - parent: 1 - type: Transform - - uid: 9158 - components: - - pos: -67.5,47.5 - parent: 1 - type: Transform -- proto: AirlockServiceGlassLocked - entities: - - uid: 8236 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,16.5 - parent: 1 - type: Transform -- proto: AirlockServiceLocked - entities: - - uid: 3394 - components: - - pos: -29.5,8.5 - parent: 1 - type: Transform - - uid: 3395 - components: - - rot: 3.141592653589793 rad - pos: -32.5,10.5 - parent: 1 - type: Transform -- proto: AirlockTheatreLocked - entities: - - uid: 3418 - components: - - pos: -27.5,23.5 - parent: 1 - type: Transform - - uid: 4176 - components: - - pos: -39.5,24.5 - parent: 1 - type: Transform -- proto: AirlockVirologyLocked - entities: - - uid: 1147 - components: - - pos: 5.5,19.5 - parent: 1 - type: Transform - - uid: 1148 - components: - - pos: 8.5,19.5 - parent: 1 - type: Transform -- proto: AltarChaos - entities: - - uid: 5926 - components: - - pos: -7.5,39.5 - parent: 1 - type: Transform -- proto: AltarDruid - entities: - - uid: 14452 - components: - - pos: -71.5,8.5 - parent: 1 - type: Transform - - uid: 14453 - components: - - pos: -70.5,8.5 - parent: 1 - type: Transform -- proto: AltarSpawner - entities: - - uid: 1810 - components: - - pos: 15.5,3.5 - parent: 1 - type: Transform -- proto: AmeController - entities: - - uid: 10656 - components: - - pos: -71.5,19.5 - parent: 1 - type: Transform -- proto: AmeJar - entities: - - uid: 5545 - components: - - pos: -53.477688,27.48855 - parent: 1 - type: Transform -- proto: AnomalyScanner - entities: - - uid: 313 - components: - - pos: -17.139996,-14.28252 - parent: 1 - type: Transform - - uid: 327 - components: - - pos: -16.577496,-14.37627 - parent: 1 - type: Transform -- proto: APCBasic - entities: - - uid: 315 - components: - - pos: -4.5,-0.5 - parent: 1 - type: Transform - - uid: 348 - components: - - pos: 2.5,-7.5 - parent: 1 - type: Transform - - uid: 937 - components: - - rot: 3.141592653589793 rad - pos: 26.5,0.5 - parent: 1 - type: Transform - - uid: 1019 - components: - - rot: -1.5707963267948966 rad - pos: 29.5,24.5 - parent: 1 - type: Transform - - uid: 1674 - components: - - rot: -1.5707963267948966 rad - pos: 12.5,0.5 - parent: 1 - type: Transform - - uid: 2080 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,21.5 - parent: 1 - type: Transform - - uid: 2081 - components: - - pos: 4.5,35.5 - parent: 1 - type: Transform - - uid: 2514 - components: - - pos: 22.5,10.5 - parent: 1 - type: Transform - - uid: 2697 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,17.5 - parent: 1 - type: Transform - - uid: 3211 - components: - - pos: -24.5,19.5 - parent: 1 - type: Transform - - uid: 3527 - components: - - pos: -29.5,30.5 - parent: 1 - type: Transform - - uid: 3776 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,-5.5 - parent: 1 - type: Transform - - uid: 3872 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,-2.5 - parent: 1 - type: Transform - - uid: 4340 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,20.5 - parent: 1 - type: Transform - - uid: 4341 - components: - - pos: -41.5,12.5 - parent: 1 - type: Transform - - uid: 4610 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,14.5 - parent: 1 - type: Transform - - uid: 4611 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,27.5 - parent: 1 - type: Transform - - uid: 5103 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,-7.5 - parent: 1 - type: Transform - - uid: 6204 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,49.5 - parent: 1 - type: Transform - - uid: 6259 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,9.5 - parent: 1 - type: Transform - - uid: 6528 - components: - - pos: -4.5,57.5 - parent: 1 - type: Transform - - uid: 7743 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,85.5 - parent: 1 - type: Transform - - uid: 7842 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,63.5 - parent: 1 - type: Transform - - uid: 7843 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,56.5 - parent: 1 - type: Transform - - uid: 9395 - components: - - pos: -31.5,48.5 - parent: 1 - type: Transform - - uid: 9417 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,38.5 - parent: 1 - type: Transform - - uid: 9494 - components: - - rot: 1.5707963267948966 rad - pos: -23.5,40.5 - parent: 1 - type: Transform - - uid: 10426 - components: - - pos: -42.5,-8.5 - parent: 1 - type: Transform - - uid: 10998 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,44.5 - parent: 1 - type: Transform - - uid: 11058 - components: - - pos: -68.5,35.5 - parent: 1 - type: Transform - - uid: 11059 - components: - - rot: -1.5707963267948966 rad - pos: -76.5,36.5 - parent: 1 - type: Transform - - uid: 11060 - components: - - rot: 1.5707963267948966 rad - pos: -75.5,21.5 - parent: 1 - type: Transform - - uid: 15234 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,44.5 - parent: 1 - type: Transform -- proto: APCElectronics - entities: - - uid: 5534 - components: - - pos: -51.59716,29.743225 - parent: 1 - type: Transform - - uid: 5535 - components: - - pos: -51.50341,29.555725 - parent: 1 - type: Transform -- proto: APECircuitboard - entities: - - uid: 13662 - components: - - pos: -15.288552,-14.404373 - parent: 1 - type: Transform -- proto: AsteroidRock - entities: - - uid: 87 - components: - - pos: -4.5,-6.5 - parent: 1 - type: Transform - - uid: 89 - components: - - pos: -2.5,-6.5 - parent: 1 - type: Transform - - uid: 97 - components: - - pos: -0.5,-6.5 - parent: 1 - type: Transform - - uid: 170 - components: - - pos: -0.5,-7.5 - parent: 1 - type: Transform - - uid: 171 - components: - - pos: -0.5,-8.5 - parent: 1 - type: Transform - - uid: 174 - components: - - pos: 4.5,-7.5 - parent: 1 - type: Transform - - uid: 200 - components: - - pos: 7.5,-9.5 - parent: 1 - type: Transform - - uid: 471 - components: - - pos: 11.5,-9.5 - parent: 1 - type: Transform - - uid: 474 - components: - - pos: 9.5,-7.5 - parent: 1 - type: Transform - - uid: 475 - components: - - pos: 9.5,-8.5 - parent: 1 - type: Transform - - uid: 506 - components: - - pos: 8.5,-9.5 - parent: 1 - type: Transform - - uid: 507 - components: - - pos: 7.5,-7.5 - parent: 1 - type: Transform - - uid: 508 - components: - - pos: 9.5,-9.5 - parent: 1 - type: Transform - - uid: 510 - components: - - pos: 8.5,-7.5 - parent: 1 - type: Transform - - uid: 511 - components: - - pos: 7.5,-8.5 - parent: 1 - type: Transform - - uid: 592 - components: - - pos: 11.5,-10.5 - parent: 1 - type: Transform - - uid: 8978 - components: - - pos: -52.5,93.5 - parent: 1 - type: Transform - - uid: 8980 - components: - - pos: -53.5,93.5 - parent: 1 - type: Transform - - uid: 8982 - components: - - pos: -54.5,93.5 - parent: 1 - type: Transform - - uid: 8983 - components: - - pos: -55.5,93.5 - parent: 1 - type: Transform - - uid: 8996 - components: - - pos: -56.5,92.5 - parent: 1 - type: Transform - - uid: 8998 - components: - - pos: -56.5,94.5 - parent: 1 - type: Transform - - uid: 8999 - components: - - pos: -54.5,92.5 - parent: 1 - type: Transform - - uid: 9003 - components: - - pos: -61.5,91.5 - parent: 1 - type: Transform - - uid: 9004 - components: - - pos: -60.5,91.5 - parent: 1 - type: Transform - - uid: 9005 - components: - - pos: -60.5,92.5 - parent: 1 - type: Transform - - uid: 9007 - components: - - pos: -59.5,92.5 - parent: 1 - type: Transform - - uid: 9011 - components: - - pos: -48.5,83.5 - parent: 1 - type: Transform - - uid: 9012 - components: - - pos: -48.5,82.5 - parent: 1 - type: Transform - - uid: 9015 - components: - - pos: -48.5,81.5 - parent: 1 - type: Transform - - uid: 9017 - components: - - pos: -47.5,82.5 - parent: 1 - type: Transform - - uid: 9019 - components: - - pos: -47.5,83.5 - parent: 1 - type: Transform - - uid: 9021 - components: - - pos: -47.5,84.5 - parent: 1 - type: Transform - - uid: 9038 - components: - - pos: -62.5,81.5 - parent: 1 - type: Transform - - uid: 9057 - components: - - pos: -48.5,84.5 - parent: 1 - type: Transform - - uid: 9060 - components: - - pos: -48.5,86.5 - parent: 1 - type: Transform - - uid: 9062 - components: - - pos: -48.5,87.5 - parent: 1 - type: Transform - - uid: 9063 - components: - - pos: -48.5,88.5 - parent: 1 - type: Transform - - uid: 9065 - components: - - pos: -48.5,89.5 - parent: 1 - type: Transform - - uid: 9068 - components: - - pos: -47.5,85.5 - parent: 1 - type: Transform - - uid: 9071 - components: - - pos: -47.5,86.5 - parent: 1 - type: Transform - - uid: 9072 - components: - - pos: -47.5,87.5 - parent: 1 - type: Transform - - uid: 9075 - components: - - pos: -58.5,92.5 - parent: 1 - type: Transform - - uid: 9076 - components: - - pos: -57.5,94.5 - parent: 1 - type: Transform - - uid: 9087 - components: - - pos: -51.5,92.5 - parent: 1 - type: Transform - - uid: 9089 - components: - - pos: -53.5,92.5 - parent: 1 - type: Transform - - uid: 9101 - components: - - pos: -52.5,92.5 - parent: 1 - type: Transform - - uid: 15259 - components: - - pos: -56.5,93.5 - parent: 1 - type: Transform - - uid: 15260 - components: - - pos: -57.5,93.5 - parent: 1 - type: Transform - - uid: 15261 - components: - - pos: -58.5,93.5 - parent: 1 - type: Transform - - uid: 15262 - components: - - pos: -59.5,93.5 - parent: 1 - type: Transform - - uid: 15263 - components: - - pos: -58.5,91.5 - parent: 1 - type: Transform - - uid: 15264 - components: - - pos: -57.5,91.5 - parent: 1 - type: Transform - - uid: 15265 - components: - - pos: -61.5,81.5 - parent: 1 - type: Transform - - uid: 15266 - components: - - pos: -60.5,81.5 - parent: 1 - type: Transform - - uid: 15267 - components: - - pos: -59.5,81.5 - parent: 1 - type: Transform - - uid: 15268 - components: - - pos: -58.5,81.5 - parent: 1 - type: Transform - - uid: 15269 - components: - - pos: -57.5,81.5 - parent: 1 - type: Transform - - uid: 15270 - components: - - pos: -57.5,80.5 - parent: 1 - type: Transform - - uid: 15271 - components: - - pos: -58.5,80.5 - parent: 1 - type: Transform - - uid: 15272 - components: - - pos: -59.5,80.5 - parent: 1 - type: Transform - - uid: 15273 - components: - - pos: -60.5,80.5 - parent: 1 - type: Transform - - uid: 15274 - components: - - pos: -51.5,93.5 - parent: 1 - type: Transform - - uid: 15275 - components: - - pos: -50.5,92.5 - parent: 1 - type: Transform - - uid: 15276 - components: - - pos: -55.5,94.5 - parent: 1 - type: Transform - - uid: 15277 - components: - - pos: -54.5,94.5 - parent: 1 - type: Transform -- proto: AsteroidRockMining - entities: - - uid: 38 - components: - - pos: -6.5,-7.5 - parent: 1 - type: Transform - - uid: 59 - components: - - pos: -7.5,-6.5 - parent: 1 - type: Transform - - uid: 63 - components: - - pos: -6.5,-8.5 - parent: 1 - type: Transform - - uid: 72 - components: - - pos: -9.5,-8.5 - parent: 1 - type: Transform - - uid: 74 - components: - - pos: -9.5,-7.5 - parent: 1 - type: Transform - - uid: 75 - components: - - pos: -5.5,-8.5 - parent: 1 - type: Transform - - uid: 84 - components: - - pos: -4.5,-7.5 - parent: 1 - type: Transform - - uid: 90 - components: - - pos: -4.5,-10.5 - parent: 1 - type: Transform - - uid: 91 - components: - - pos: -5.5,-10.5 - parent: 1 - type: Transform - - uid: 92 - components: - - pos: -3.5,-9.5 - parent: 1 - type: Transform - - uid: 93 - components: - - pos: -3.5,-8.5 - parent: 1 - type: Transform - - uid: 94 - components: - - pos: -2.5,-8.5 - parent: 1 - type: Transform - - uid: 95 - components: - - pos: -4.5,-9.5 - parent: 1 - type: Transform - - uid: 98 - components: - - pos: -6.5,-9.5 - parent: 1 - type: Transform - - uid: 99 - components: - - pos: -5.5,-9.5 - parent: 1 - type: Transform - - uid: 100 - components: - - pos: -3.5,-7.5 - parent: 1 - type: Transform - - uid: 101 - components: - - pos: -2.5,-7.5 - parent: 1 - type: Transform - - uid: 102 - components: - - pos: -6.5,-10.5 - parent: 1 - type: Transform - - uid: 103 - components: - - pos: -5.5,-7.5 - parent: 1 - type: Transform - - uid: 104 - components: - - pos: -6.5,-11.5 - parent: 1 - type: Transform - - uid: 106 - components: - - pos: -5.5,-11.5 - parent: 1 - type: Transform - - uid: 107 - components: - - pos: -7.5,-10.5 - parent: 1 - type: Transform - - uid: 108 - components: - - pos: -8.5,-10.5 - parent: 1 - type: Transform - - uid: 111 - components: - - pos: -9.5,-10.5 - parent: 1 - type: Transform - - uid: 112 - components: - - pos: -9.5,-14.5 - parent: 1 - type: Transform - - uid: 114 - components: - - pos: -6.5,-14.5 - parent: 1 - type: Transform - - uid: 123 - components: - - pos: -9.5,-13.5 - parent: 1 - type: Transform - - uid: 127 - components: - - pos: -7.5,-13.5 - parent: 1 - type: Transform - - uid: 129 - components: - - pos: -7.5,-14.5 - parent: 1 - type: Transform - - uid: 130 - components: - - pos: -8.5,-14.5 - parent: 1 - type: Transform - - uid: 131 - components: - - pos: -8.5,-15.5 - parent: 1 - type: Transform - - uid: 132 - components: - - pos: -7.5,-15.5 - parent: 1 - type: Transform - - uid: 134 - components: - - pos: -3.5,-16.5 - parent: 1 - type: Transform - - uid: 135 - components: - - pos: -3.5,-15.5 - parent: 1 - type: Transform - - uid: 136 - components: - - pos: -3.5,-14.5 - parent: 1 - type: Transform - - uid: 138 - components: - - pos: -4.5,-13.5 - parent: 1 - type: Transform - - uid: 139 - components: - - pos: -3.5,-13.5 - parent: 1 - type: Transform - - uid: 140 - components: - - pos: -3.5,-12.5 - parent: 1 - type: Transform - - uid: 141 - components: - - pos: -2.5,-12.5 - parent: 1 - type: Transform - - uid: 142 - components: - - pos: -2.5,-13.5 - parent: 1 - type: Transform - - uid: 144 - components: - - pos: -2.5,-15.5 - parent: 1 - type: Transform - - uid: 145 - components: - - pos: -1.5,-15.5 - parent: 1 - type: Transform - - uid: 146 - components: - - pos: -1.5,-14.5 - parent: 1 - type: Transform - - uid: 147 - components: - - pos: -1.5,-13.5 - parent: 1 - type: Transform - - uid: 148 - components: - - pos: -1.5,-12.5 - parent: 1 - type: Transform - - uid: 150 - components: - - pos: 4.5,-13.5 - parent: 1 - type: Transform - - uid: 151 - components: - - pos: 5.5,-13.5 - parent: 1 - type: Transform - - uid: 152 - components: - - pos: 5.5,-14.5 - parent: 1 - type: Transform - - uid: 153 - components: - - pos: 4.5,-16.5 - parent: 1 - type: Transform - - uid: 154 - components: - - pos: 3.5,-17.5 - parent: 1 - type: Transform - - uid: 155 - components: - - pos: 2.5,-17.5 - parent: 1 - type: Transform - - uid: 156 - components: - - pos: 1.5,-17.5 - parent: 1 - type: Transform - - uid: 157 - components: - - pos: 0.5,-17.5 - parent: 1 - type: Transform - - uid: 158 - components: - - pos: -0.5,-16.5 - parent: 1 - type: Transform - - uid: 159 - components: - - pos: -1.5,-16.5 - parent: 1 - type: Transform - - uid: 160 - components: - - pos: 0.5,-16.5 - parent: 1 - type: Transform - - uid: 161 - components: - - pos: 3.5,-16.5 - parent: 1 - type: Transform - - uid: 162 - components: - - pos: 3.5,-15.5 - parent: 1 - type: Transform - - uid: 163 - components: - - pos: -0.5,-13.5 - parent: 1 - type: Transform - - uid: 165 - components: - - pos: 7.5,-10.5 - parent: 1 - type: Transform - - uid: 166 - components: - - pos: 7.5,-11.5 - parent: 1 - type: Transform - - uid: 291 - components: - - pos: -8.5,-7.5 - parent: 1 - type: Transform - - uid: 292 - components: - - pos: -8.5,-8.5 - parent: 1 - type: Transform - - uid: 293 - components: - - pos: -8.5,-9.5 - parent: 1 - type: Transform - - uid: 414 - components: - - pos: -7.5,-7.5 - parent: 1 - type: Transform - - uid: 415 - components: - - pos: -7.5,-8.5 - parent: 1 - type: Transform - - uid: 495 - components: - - pos: 8.5,-10.5 - parent: 1 - type: Transform - - uid: 501 - components: - - pos: 9.5,-10.5 - parent: 1 - type: Transform - - uid: 505 - components: - - pos: 10.5,-10.5 - parent: 1 - type: Transform - - uid: 3965 - components: - - pos: -9.5,-9.5 - parent: 1 - type: Transform - - uid: 14845 - components: - - pos: 6.5,-15.5 - parent: 1 - type: Transform -- proto: AtmosDeviceFanTiny - entities: - - uid: 3569 - components: - - pos: -66.5,-15.5 - parent: 1 - type: Transform - - uid: 3968 - components: - - pos: -64.5,-15.5 - parent: 1 - type: Transform - - uid: 4745 - components: - - pos: -74.5,-15.5 - parent: 1 - type: Transform - - uid: 4761 - components: - - pos: -72.5,-15.5 - parent: 1 - type: Transform - - uid: 4851 - components: - - pos: -66.5,2.5 - parent: 1 - type: Transform - - uid: 4854 - components: - - pos: -73.5,2.5 - parent: 1 - type: Transform - - uid: 4972 - components: - - pos: -73.5,-7.5 - parent: 1 - type: Transform - - uid: 4973 - components: - - pos: -66.5,-7.5 - parent: 1 - type: Transform - - uid: 14853 - components: - - pos: -34.5,-14.5 - parent: 1 - type: Transform - - uid: 14854 - components: - - pos: -32.5,-14.5 - parent: 1 - type: Transform - - uid: 15074 - components: - - pos: 32.5,8.5 - parent: 1 - type: Transform - - uid: 15076 - components: - - pos: 32.5,10.5 - parent: 1 - type: Transform - - uid: 15077 - components: - - pos: 32.5,16.5 - parent: 1 - type: Transform - - uid: 15078 - components: - - pos: 32.5,18.5 - parent: 1 - type: Transform - - uid: 15111 - components: - - pos: -30.5,46.5 - parent: 1 - type: Transform - - uid: 15112 - components: - - pos: -26.5,45.5 - parent: 1 - type: Transform -- proto: AtmosFixBlockerMarker - entities: - - uid: 13045 - components: - - pos: -90.5,45.5 - parent: 1 - type: Transform - - uid: 13048 - components: - - pos: -89.5,45.5 - parent: 1 - type: Transform - - uid: 13049 - components: - - pos: -88.5,45.5 - parent: 1 - type: Transform - - uid: 13345 - components: - - pos: -90.5,41.5 - parent: 1 - type: Transform - - uid: 13346 - components: - - pos: -89.5,41.5 - parent: 1 - type: Transform - - uid: 13347 - components: - - pos: -88.5,41.5 - parent: 1 - type: Transform - - uid: 13348 - components: - - pos: -90.5,39.5 - parent: 1 - type: Transform - - uid: 13349 - components: - - pos: -89.5,39.5 - parent: 1 - type: Transform - - uid: 13350 - components: - - pos: -88.5,39.5 - parent: 1 - type: Transform - - uid: 13357 - components: - - pos: -83.5,50.5 - parent: 1 - type: Transform - - uid: 13358 - components: - - pos: -82.5,50.5 - parent: 1 - type: Transform - - uid: 13359 - components: - - pos: -81.5,50.5 - parent: 1 - type: Transform -- proto: AtmosFixNitrogenMarker - entities: - - uid: 13354 - components: - - pos: -90.5,37.5 - parent: 1 - type: Transform - - uid: 13355 - components: - - pos: -89.5,37.5 - parent: 1 - type: Transform - - uid: 13356 - components: - - pos: -88.5,37.5 - parent: 1 - type: Transform -- proto: AtmosFixOxygenMarker - entities: - - uid: 13351 - components: - - pos: -90.5,35.5 - parent: 1 - type: Transform - - uid: 13352 - components: - - pos: -89.5,35.5 - parent: 1 - type: Transform - - uid: 13353 - components: - - pos: -88.5,35.5 - parent: 1 - type: Transform -- proto: AtmosFixPlasmaMarker - entities: - - uid: 13042 - components: - - pos: -90.5,43.5 - parent: 1 - type: Transform - - uid: 13043 - components: - - pos: -89.5,43.5 - parent: 1 - type: Transform - - uid: 13044 - components: - - pos: -88.5,43.5 - parent: 1 - type: Transform -- proto: Autolathe - entities: - - uid: 255 - components: - - pos: -5.5,-0.5 - parent: 1 - type: Transform - - uid: 14169 - components: - - pos: -38.5,-1.5 - parent: 1 - type: Transform -- proto: BananaPhoneInstrument - entities: - - uid: 4230 - components: - - pos: -40.3798,27.56435 - parent: 1 - type: Transform - - uid: 7304 - components: - - pos: -59.52376,89.56535 - parent: 1 - type: Transform -- proto: BannerScience - entities: - - uid: 229 - components: - - pos: -8.5,-5.5 - parent: 1 - type: Transform - - uid: 10082 - components: - - pos: -11.5,0.5 - parent: 1 - type: Transform -- proto: Barricade - entities: - - uid: 720 - components: - - pos: 12.5,-5.5 - parent: 1 - type: Transform - - uid: 1498 - components: - - pos: 13.5,39.5 - parent: 1 - type: Transform - - uid: 2037 - components: - - pos: 18.5,32.5 - parent: 1 - type: Transform - - uid: 2731 - components: - - pos: -28.5,53.5 - parent: 1 - type: Transform - - uid: 2794 - components: - - pos: 15.5,39.5 - parent: 1 - type: Transform - - uid: 5451 - components: - - pos: -21.5,-6.5 - parent: 1 - type: Transform - - uid: 5453 - components: - - pos: -25.5,-7.5 - parent: 1 - type: Transform - - uid: 5454 - components: - - pos: -25.5,-8.5 - parent: 1 - type: Transform - - uid: 5456 - components: - - pos: -20.5,-6.5 - parent: 1 - type: Transform - - uid: 5457 - components: - - pos: -19.5,-7.5 - parent: 1 - type: Transform - - uid: 5458 - components: - - pos: -19.5,-8.5 - parent: 1 - type: Transform - - uid: 5517 - components: - - pos: -54.5,-7.5 - parent: 1 - type: Transform - - uid: 5518 - components: - - pos: -51.5,-4.5 - parent: 1 - type: Transform - - uid: 6058 - components: - - pos: -17.5,50.5 - parent: 1 - type: Transform - - uid: 6067 - components: - - pos: -15.5,50.5 - parent: 1 - type: Transform - - uid: 7509 - components: - - pos: -28.5,52.5 - parent: 1 - type: Transform - - uid: 7510 - components: - - pos: -27.5,55.5 - parent: 1 - type: Transform - - uid: 9801 - components: - - pos: -31.5,52.5 - parent: 1 - type: Transform - - uid: 14839 - components: - - pos: 8.5,-14.5 - parent: 1 - type: Transform - - uid: 15914 - components: - - pos: 14.5,39.5 - parent: 1 - type: Transform - - uid: 15918 - components: - - pos: 17.5,35.5 - parent: 1 - type: Transform - - uid: 15919 - components: - - pos: 17.5,34.5 - parent: 1 - type: Transform -- proto: BarSign - entities: - - uid: 5279 - components: - - pos: -53.5,22.5 - parent: 1 - type: Transform - - uid: 7368 - components: - - pos: -33.5,34.5 - parent: 1 - type: Transform -- proto: BaseComputer - entities: - - uid: 5338 - components: - - rot: 3.141592653589793 rad - pos: 22.5,42.5 - parent: 1 - type: Transform -- proto: Beaker - entities: - - uid: 1959 - components: - - pos: -0.3099949,22.624739 - parent: 1 - type: Transform - - uid: 1960 - components: - - pos: -0.70061994,22.327864 - parent: 1 - type: Transform - - uid: 1961 - components: - - pos: -0.6683643,21.869993 - parent: 1 - type: Transform - - uid: 2382 - components: - - pos: 10.321079,33.83294 - parent: 1 - type: Transform - - uid: 2383 - components: - - pos: 10.680454,33.64544 - parent: 1 - type: Transform -- proto: Bed - entities: - - uid: 616 - components: - - pos: 18.5,-8.5 - parent: 1 - type: Transform - - uid: 617 - components: - - pos: 18.5,-7.5 - parent: 1 - type: Transform - - uid: 625 - components: - - pos: 8.5,2.5 - parent: 1 - type: Transform - - uid: 626 - components: - - pos: 6.5,-1.5 - parent: 1 - type: Transform - - uid: 1831 - components: - - pos: 21.5,-0.5 - parent: 1 - type: Transform - - uid: 1909 - components: - - pos: -53.5,49.5 - parent: 1 - type: Transform - - uid: 1916 - components: - - pos: -50.5,49.5 - parent: 1 - type: Transform - - uid: 1918 - components: - - pos: -56.5,49.5 - parent: 1 - type: Transform - - uid: 2266 - components: - - pos: 17.5,23.5 - parent: 1 - type: Transform - - uid: 2345 - components: - - pos: 6.5,11.5 - parent: 1 - type: Transform - - uid: 2346 - components: - - pos: 8.5,11.5 - parent: 1 - type: Transform - - uid: 2347 - components: - - pos: 10.5,11.5 - parent: 1 - type: Transform - - uid: 2905 - components: - - pos: -17.5,22.5 - parent: 1 - type: Transform - - uid: 2907 - components: - - pos: -15.5,22.5 - parent: 1 - type: Transform - - uid: 2993 - components: - - pos: 11.5,31.5 - parent: 1 - type: Transform - - uid: 2994 - components: - - pos: 7.5,31.5 - parent: 1 - type: Transform - - uid: 3406 - components: - - pos: -31.5,8.5 - parent: 1 - type: Transform - - uid: 3480 - components: - - pos: 9.5,31.5 - parent: 1 - type: Transform - - uid: 7347 - components: - - pos: -54.5,84.5 - parent: 1 - type: Transform - - uid: 7527 - components: - - pos: -54.5,90.5 - parent: 1 - type: Transform - - uid: 10903 - components: - - pos: -5.5,58.5 - parent: 1 - type: Transform - - uid: 15164 - components: - - pos: 17.5,48.5 - parent: 1 - type: Transform -- proto: BedsheetCaptain - entities: - - uid: 10904 - components: - - pos: -5.5,58.5 - parent: 1 - type: Transform -- proto: BedsheetClown - entities: - - uid: 2267 - components: - - pos: 17.5,23.5 - parent: 1 - type: Transform -- proto: BedsheetCult - entities: - - uid: 1830 - components: - - pos: 21.5,-0.5 - parent: 1 - type: Transform -- proto: BedsheetGreen - entities: - - uid: 622 - components: - - pos: 18.5,-7.5 - parent: 1 - type: Transform - - uid: 623 - components: - - pos: 18.5,-8.5 - parent: 1 - type: Transform - - uid: 2348 - components: - - rot: 3.141592653589793 rad - pos: 6.5,11.5 - parent: 1 - type: Transform - - uid: 2349 - components: - - rot: 3.141592653589793 rad - pos: 8.5,11.5 - parent: 1 - type: Transform - - uid: 2350 - components: - - rot: 3.141592653589793 rad - pos: 10.5,11.5 - parent: 1 - type: Transform -- proto: BedsheetMedical - entities: - - uid: 2062 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,31.5 - parent: 1 - type: Transform - - uid: 2063 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,31.5 - parent: 1 - type: Transform - - uid: 2065 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,31.5 - parent: 1 - type: Transform -- proto: BedsheetOrange - entities: - - uid: 1910 - components: - - pos: -56.5,49.5 - parent: 1 - type: Transform - - uid: 1912 - components: - - pos: -53.5,49.5 - parent: 1 - type: Transform - - uid: 1922 - components: - - pos: -50.5,49.5 - parent: 1 - type: Transform - - uid: 5555 - components: - - rot: 3.141592653589793 rad - pos: -15.5,22.5 - parent: 1 - type: Transform - - uid: 5565 - components: - - rot: 3.141592653589793 rad - pos: -17.5,22.5 - parent: 1 - type: Transform -- proto: BedsheetPurple - entities: - - uid: 15165 - components: - - pos: 17.5,48.5 - parent: 1 - type: Transform -- proto: BedsheetSpawner - entities: - - uid: 624 - components: - - pos: 6.5,-1.5 - parent: 1 - type: Transform - - uid: 627 - components: - - pos: 8.5,2.5 - parent: 1 - type: Transform - - uid: 3399 - components: - - pos: -31.5,8.5 - parent: 1 - type: Transform -- proto: BedsheetSyndie - entities: - - uid: 7352 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,90.5 - parent: 1 - type: Transform - - uid: 7356 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,84.5 - parent: 1 - type: Transform -- proto: Bible - entities: - - uid: 2750 - components: - - pos: 21.54948,-1.5566196 - parent: 1 - type: Transform -- proto: BlastDoor - entities: - - uid: 42 - components: - - pos: 3.5,-14.5 - parent: 1 - type: Transform - - links: - - 351 - type: DeviceLinkSink - - uid: 590 - components: - - pos: 15.5,-6.5 - parent: 1 - type: Transform - - links: - - 615 - type: DeviceLinkSink - - uid: 7204 - components: - - pos: -53.5,71.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7207 - components: - - pos: -53.5,72.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7208 - components: - - pos: -53.5,73.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7209 - components: - - pos: -53.5,74.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7210 - components: - - pos: -53.5,75.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7211 - components: - - pos: -53.5,76.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7212 - components: - - pos: -49.5,71.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7213 - components: - - pos: -49.5,72.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7214 - components: - - pos: -49.5,73.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7215 - components: - - pos: -49.5,74.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7216 - components: - - pos: -49.5,75.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 7217 - components: - - pos: -49.5,76.5 - parent: 1 - type: Transform - - links: - - 7192 - - 7218 - type: DeviceLinkSink - - uid: 13360 - components: - - pos: -82.5,51.5 - parent: 1 - type: Transform - - links: - - 13361 - type: DeviceLinkSink - - uid: 13366 - components: - - pos: -73.5,57.5 - parent: 1 - type: Transform - - links: - - 13367 - type: DeviceLinkSink - - uid: 13817 - components: - - pos: -35.5,-14.5 - parent: 1 - type: Transform - - links: - - 13821 - type: DeviceLinkSink - - uid: 13818 - components: - - pos: -35.5,-11.5 - parent: 1 - type: Transform - - links: - - 13821 - type: DeviceLinkSink - - uid: 13819 - components: - - pos: -31.5,-11.5 - parent: 1 - type: Transform - - links: - - 13822 - type: DeviceLinkSink - - uid: 13820 - components: - - pos: -31.5,-14.5 - parent: 1 - type: Transform - - links: - - 13822 - type: DeviceLinkSink -- proto: BlastDoorOpen - entities: - - uid: 15173 - components: - - pos: 13.5,53.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15174 - components: - - pos: 14.5,53.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15175 - components: - - pos: 15.5,53.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15176 - components: - - pos: 16.5,53.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15177 - components: - - pos: 17.5,53.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15178 - components: - - pos: 18.5,53.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15179 - components: - - pos: 19.5,53.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15180 - components: - - pos: 19.5,52.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15181 - components: - - pos: 19.5,51.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15182 - components: - - pos: 19.5,50.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15183 - components: - - pos: 19.5,49.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink - - uid: 15184 - components: - - pos: 19.5,48.5 - parent: 1 - type: Transform - - links: - - 15185 - type: DeviceLinkSink -- proto: Blunt - entities: - - uid: 14943 - components: - - pos: 23.683538,-11.353635 - parent: 1 - type: Transform -- proto: BookBase - entities: - - uid: 15231 - components: - - pos: 18.514118,48.62632 - parent: 1 - type: Transform -- proto: BookRandom - entities: - - uid: 3400 - components: - - pos: -26.002151,9.728267 - parent: 1 - type: Transform - - uid: 3402 - components: - - pos: -25.757227,9.715086 - parent: 1 - type: Transform - - uid: 3403 - components: - - pos: -26.484095,9.587642 - parent: 1 - type: Transform - - uid: 3404 - components: - - pos: -27.526798,9.572017 - parent: 1 - type: Transform - - uid: 3405 - components: - - pos: -26.984095,9.728267 - parent: 1 - type: Transform -- proto: BooksBag - entities: - - uid: 3401 - components: - - pos: -25.267776,9.592309 - parent: 1 - type: Transform -- proto: BookshelfFilled - entities: - - uid: 912 - components: - - pos: 27.5,-0.5 - parent: 1 - type: Transform - - uid: 3036 - components: - - pos: -22.5,15.5 - parent: 1 - type: Transform - - uid: 3089 - components: - - pos: -25.5,13.5 - parent: 1 - type: Transform - - uid: 3090 - components: - - pos: -26.5,13.5 - parent: 1 - type: Transform - - uid: 3091 - components: - - pos: -24.5,11.5 - parent: 1 - type: Transform - - uid: 3092 - components: - - pos: -25.5,11.5 - parent: 1 - type: Transform - - uid: 3093 - components: - - pos: -26.5,11.5 - parent: 1 - type: Transform - - uid: 3094 - components: - - pos: -27.5,11.5 - parent: 1 - type: Transform - - uid: 3095 - components: - - pos: -28.5,11.5 - parent: 1 - type: Transform - - uid: 3098 - components: - - pos: -22.5,8.5 - parent: 1 - type: Transform - - uid: 3099 - components: - - pos: -22.5,9.5 - parent: 1 - type: Transform - - uid: 3100 - components: - - pos: -22.5,10.5 - parent: 1 - type: Transform - - uid: 3101 - components: - - pos: -22.5,11.5 - parent: 1 - type: Transform - - uid: 3102 - components: - - pos: -24.5,13.5 - parent: 1 - type: Transform - - uid: 5357 - components: - - pos: -50.5,-0.5 - parent: 1 - type: Transform - - uid: 6334 - components: - - pos: 13.5,52.5 - parent: 1 - type: Transform - - uid: 7721 - components: - - pos: -61.5,87.5 - parent: 1 - type: Transform -- proto: BoozeDispenser - entities: - - uid: 6337 - components: - - rot: 3.141592653589793 rad - pos: 14.5,50.5 - parent: 1 - type: Transform - - uid: 9739 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,39.5 - parent: 1 - type: Transform - - uid: 9740 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,36.5 - parent: 1 - type: Transform -- proto: BorgCharger - entities: - - uid: 77 - components: - - pos: 0.5,0.5 - parent: 1 - type: Transform -- proto: BoxBeaker - entities: - - uid: 261 - components: - - pos: -9.507762,2.683241 - parent: 1 - type: Transform -- proto: BoxBodyBag - entities: - - uid: 2352 - components: - - pos: 4.501326,17.543652 - parent: 1 - type: Transform - - uid: 15780 - components: - - pos: 4.42369,38.89373 - parent: 1 - type: Transform -- proto: BoxCardboard - entities: - - uid: 15368 - components: - - desc: A box of spare encryption keys. - name: spare encryption keys box - type: MetaData - - pos: 27.49369,23.624804 - parent: 1 - type: Transform - - storageUsed: 30 - type: Storage - - containers: - storagebase: !type:Container - showEnts: False - occludes: True - ents: - - 15369 - - 15370 - - 15371 - - 15372 - - 15373 - - 15374 - type: ContainerContainer -- proto: BoxFlashbang - entities: - - uid: 8008 - components: - - pos: -62.513317,50.638466 - parent: 1 - type: Transform -- proto: BoxFolderBlack - entities: - - uid: 309 - components: - - pos: -0.32900378,-4.3884926 - parent: 1 - type: Transform - - uid: 10950 - components: - - pos: -62.793716,39.585648 - parent: 1 - type: Transform - - uid: 12801 - components: - - rot: -1.5707963267948966 rad - pos: 4.444498,15.859739 - parent: 1 - type: Transform - - uid: 12802 - components: - - rot: -1.5707963267948966 rad - pos: 4.491373,15.625364 - parent: 1 - type: Transform -- proto: BoxFolderBlue - entities: - - uid: 310 - components: - - pos: -0.45400378,-4.4353676 - parent: 1 - type: Transform - - uid: 3701 - components: - - pos: -3.3766222,0.6332265 - parent: 1 - type: Transform - - uid: 7554 - components: - - pos: -19.563011,46.957428 - parent: 1 - type: Transform - - uid: 7555 - components: - - pos: -19.391136,46.754303 - parent: 1 - type: Transform - - uid: 10942 - components: - - pos: -61.137554,41.601273 - parent: 1 - type: Transform -- proto: BoxFolderRed - entities: - - uid: 311 - components: - - pos: -0.5790038,-4.4666176 - parent: 1 - type: Transform - - uid: 7988 - components: - - pos: -60.701515,58.61342 - parent: 1 - type: Transform - - uid: 10943 - components: - - pos: -63.62193,41.570023 - parent: 1 - type: Transform - - uid: 14295 - components: - - pos: -70.85199,49.55786 - parent: 1 - type: Transform -- proto: BoxFolderWhite - entities: - - uid: 2330 - components: - - pos: 8.338302,31.568537 - parent: 1 - type: Transform - - uid: 2331 - components: - - pos: 10.338302,26.224789 - parent: 1 - type: Transform - - uid: 2372 - components: - - rot: -1.5707963267948966 rad - pos: 11.49155,19.354616 - parent: 1 - type: Transform - - uid: 12782 - components: - - pos: 15.076297,31.544756 - parent: 1 - type: Transform -- proto: BoxFolderYellow - entities: - - uid: 3756 - components: - - pos: -46.603218,1.8100886 - parent: 1 - type: Transform - - uid: 3757 - components: - - pos: -46.571968,1.5132136 - parent: 1 - type: Transform - - uid: 4264 - components: - - pos: -45.621056,-6.4408264 - parent: 1 - type: Transform - - uid: 5516 - components: - - pos: -53.308907,-5.477154 - parent: 1 - type: Transform - - uid: 8997 - components: - - pos: -32.463276,-5.5537453 - parent: 1 - type: Transform - - uid: 9001 - components: - - pos: -32.69765,-5.3818703 - parent: 1 - type: Transform - - uid: 12031 - components: - - pos: -31.49165,-1.6362362 - parent: 1 - type: Transform - - uid: 15795 - components: - - pos: -70.32392,16.415482 - parent: 1 - type: Transform - - uid: 15796 - components: - - pos: -70.60517,16.399857 - parent: 1 - type: Transform -- proto: BoxHandcuff - entities: - - uid: 7993 - components: - - pos: -56.703358,58.661354 - parent: 1 - type: Transform - - uid: 7994 - components: - - pos: -63.575817,51.607216 - parent: 1 - type: Transform -- proto: BoxLatexGloves - entities: - - uid: 2365 - components: - - pos: 7.4180007,17.608612 - parent: 1 - type: Transform -- proto: BoxLethalshot - entities: - - uid: 8376 - components: - - pos: -41.582264,61.530586 - parent: 1 - type: Transform - - uid: 8377 - components: - - pos: -41.582264,61.530586 - parent: 1 - type: Transform -- proto: BoxMouthSwab - entities: - - uid: 2364 - components: - - pos: 6.4961257,16.733612 - parent: 1 - type: Transform -- proto: BoxMRE - entities: - - uid: 620 - components: - - pos: 20.242428,-8.30875 - parent: 1 - type: Transform -- proto: BoxSterileMask - entities: - - uid: 2363 - components: - - pos: 6.4805007,17.592987 - parent: 1 - type: Transform -- proto: BoxSyringe - entities: - - uid: 372 - components: - - pos: 5.09082,-11.326899 - parent: 1 - type: Transform -- proto: BoxZiptie - entities: - - uid: 7998 - components: - - pos: -63.419567,51.34159 - parent: 1 - type: Transform -- proto: BrigTimer - entities: - - uid: 4985 - components: - - pos: -56.5,52.5 - parent: 1 - type: Transform - - linkedPorts: - 7871: - - Start: Close - - Timer: AutoClose - - Timer: Open - type: DeviceLinkSource - - uid: 4986 - components: - - pos: -53.5,52.5 - parent: 1 - type: Transform - - linkedPorts: - 7872: - - Start: Close - - Timer: AutoClose - - Timer: Open - type: DeviceLinkSource - - uid: 4987 - components: - - pos: -50.5,52.5 - parent: 1 - type: Transform - - linkedPorts: - 7873: - - Start: Close - - Timer: AutoClose - - Timer: Open - type: DeviceLinkSource -- proto: Brutepack - entities: - - uid: 1990 - components: - - pos: -1.3334682,33.60299 - parent: 1 - type: Transform - - uid: 1991 - components: - - pos: -1.5990932,33.97799 - parent: 1 - type: Transform -- proto: Bucket - entities: - - uid: 6946 - components: - - pos: -42.23494,47.51451 - parent: 1 - type: Transform - - uid: 6947 - components: - - pos: -42.42244,47.655136 - parent: 1 - type: Transform -- proto: CableApcExtension - entities: - - uid: 388 - components: - - pos: -4.5,-0.5 - parent: 1 - type: Transform - - uid: 389 - components: - - pos: -5.5,-0.5 - parent: 1 - type: Transform - - uid: 390 - components: - - pos: -6.5,-0.5 - parent: 1 - type: Transform - - uid: 391 - components: - - pos: -7.5,-0.5 - parent: 1 - type: Transform - - uid: 392 - components: - - pos: -7.5,0.5 - parent: 1 - type: Transform - - uid: 393 - components: - - pos: -7.5,1.5 - parent: 1 - type: Transform - - uid: 394 - components: - - pos: -8.5,1.5 - parent: 1 - type: Transform - - uid: 395 - components: - - pos: -9.5,1.5 - parent: 1 - type: Transform - - uid: 396 - components: - - pos: -10.5,1.5 - parent: 1 - type: Transform - - uid: 397 - components: - - pos: -11.5,1.5 - parent: 1 - type: Transform - - uid: 398 - components: - - pos: -12.5,1.5 - parent: 1 - type: Transform - - uid: 399 - components: - - pos: -7.5,-1.5 - parent: 1 - type: Transform - - uid: 400 - components: - - pos: -7.5,-2.5 - parent: 1 - type: Transform - - uid: 401 - components: - - pos: -9.5,-2.5 - parent: 1 - type: Transform - - uid: 402 - components: - - pos: -10.5,-2.5 - parent: 1 - type: Transform - - uid: 403 - components: - - pos: -11.5,-2.5 - parent: 1 - type: Transform - - uid: 404 - components: - - pos: -12.5,-2.5 - parent: 1 - type: Transform - - uid: 405 - components: - - pos: -8.5,-2.5 - parent: 1 - type: Transform - - uid: 406 - components: - - pos: -12.5,-3.5 - parent: 1 - type: Transform - - uid: 407 - components: - - pos: -12.5,-4.5 - parent: 1 - type: Transform - - uid: 408 - components: - - pos: -12.5,-5.5 - parent: 1 - type: Transform - - uid: 409 - components: - - pos: -12.5,-6.5 - parent: 1 - type: Transform - - uid: 410 - components: - - pos: -12.5,-7.5 - parent: 1 - type: Transform - - uid: 411 - components: - - pos: -12.5,-8.5 - parent: 1 - type: Transform - - uid: 412 - components: - - pos: -11.5,-8.5 - parent: 1 - type: Transform - - uid: 416 - components: - - pos: -9.5,-3.5 - parent: 1 - type: Transform - - uid: 417 - components: - - pos: -9.5,-4.5 - parent: 1 - type: Transform - - uid: 418 - components: - - pos: -4.5,-1.5 - parent: 1 - type: Transform - - uid: 419 - components: - - pos: -4.5,-2.5 - parent: 1 - type: Transform - - uid: 420 - components: - - pos: -4.5,-3.5 - parent: 1 - type: Transform - - uid: 421 - components: - - pos: -4.5,-4.5 - parent: 1 - type: Transform - - uid: 422 - components: - - pos: -3.5,-1.5 - parent: 1 - type: Transform - - uid: 423 - components: - - pos: -2.5,-1.5 - parent: 1 - type: Transform - - uid: 424 - components: - - pos: -1.5,-1.5 - parent: 1 - type: Transform - - uid: 425 - components: - - pos: -0.5,-1.5 - parent: 1 - type: Transform - - uid: 426 - components: - - pos: 0.5,-1.5 - parent: 1 - type: Transform - - uid: 427 - components: - - pos: 1.5,-1.5 - parent: 1 - type: Transform - - uid: 428 - components: - - pos: -2.5,-0.5 - parent: 1 - type: Transform - - uid: 429 - components: - - pos: -2.5,0.5 - parent: 1 - type: Transform - - uid: 430 - components: - - pos: -2.5,1.5 - parent: 1 - type: Transform - - uid: 431 - components: - - pos: 1.5,-0.5 - parent: 1 - type: Transform - - uid: 432 - components: - - pos: 1.5,0.5 - parent: 1 - type: Transform - - uid: 433 - components: - - pos: 1.5,1.5 - parent: 1 - type: Transform - - uid: 434 - components: - - pos: -1.5,-2.5 - parent: 1 - type: Transform - - uid: 435 - components: - - pos: -1.5,-3.5 - parent: 1 - type: Transform - - uid: 436 - components: - - pos: -1.5,-4.5 - parent: 1 - type: Transform - - uid: 437 - components: - - pos: 2.5,-8.5 - parent: 1 - type: Transform - - uid: 438 - components: - - pos: 2.5,-9.5 - parent: 1 - type: Transform - - uid: 439 - components: - - pos: 3.5,-9.5 - parent: 1 - type: Transform - - uid: 440 - components: - - pos: 4.5,-9.5 - parent: 1 - type: Transform - - uid: 441 - components: - - pos: 1.5,-9.5 - parent: 1 - type: Transform - - uid: 442 - components: - - pos: 1.5,-10.5 - parent: 1 - type: Transform - - uid: 443 - components: - - pos: 1.5,-11.5 - parent: 1 - type: Transform - - uid: 444 - components: - - pos: 1.5,-12.5 - parent: 1 - type: Transform - - uid: 445 - components: - - pos: 1.5,-13.5 - parent: 1 - type: Transform - - uid: 446 - components: - - pos: 1.5,-14.5 - parent: 1 - type: Transform - - uid: 447 - components: - - pos: 0.5,-10.5 - parent: 1 - type: Transform - - uid: 448 - components: - - pos: -0.5,-10.5 - parent: 1 - type: Transform - - uid: 449 - components: - - pos: -1.5,-10.5 - parent: 1 - type: Transform - - uid: 450 - components: - - pos: -2.5,-10.5 - parent: 1 - type: Transform - - uid: 451 - components: - - pos: -2.5,-11.5 - parent: 1 - type: Transform - - uid: 452 - components: - - pos: -3.5,-11.5 - parent: 1 - type: Transform - - uid: 453 - components: - - pos: -4.5,-11.5 - parent: 1 - type: Transform - - uid: 454 - components: - - pos: -4.5,-12.5 - parent: 1 - type: Transform - - uid: 455 - components: - - pos: -5.5,-12.5 - parent: 1 - type: Transform - - uid: 456 - components: - - pos: -6.5,-12.5 - parent: 1 - type: Transform - - uid: 457 - components: - - pos: -7.5,-12.5 - parent: 1 - type: Transform - - uid: 458 - components: - - pos: -8.5,-12.5 - parent: 1 - type: Transform - - uid: 459 - components: - - pos: -5.5,-13.5 - parent: 1 - type: Transform - - uid: 460 - components: - - pos: -5.5,-14.5 - parent: 1 - type: Transform - - uid: 461 - components: - - pos: -5.5,-15.5 - parent: 1 - type: Transform - - uid: 464 - components: - - pos: 16.5,-10.5 - parent: 1 - type: Transform - - uid: 588 - components: - - pos: 18.5,-10.5 - parent: 1 - type: Transform - - uid: 932 - components: - - pos: 26.5,0.5 - parent: 1 - type: Transform - - uid: 933 - components: - - pos: 26.5,1.5 - parent: 1 - type: Transform - - uid: 934 - components: - - pos: 26.5,2.5 - parent: 1 - type: Transform - - uid: 935 - components: - - pos: 27.5,2.5 - parent: 1 - type: Transform - - uid: 936 - components: - - pos: 28.5,2.5 - parent: 1 - type: Transform - - uid: 940 - components: - - pos: 29.5,2.5 - parent: 1 - type: Transform - - uid: 941 - components: - - pos: 30.5,3.5 - parent: 1 - type: Transform - - uid: 942 - components: - - pos: 30.5,2.5 - parent: 1 - type: Transform - - uid: 943 - components: - - pos: 30.5,1.5 - parent: 1 - type: Transform - - uid: 984 - components: - - pos: 26.5,27.5 - parent: 1 - type: Transform - - uid: 986 - components: - - pos: 26.5,26.5 - parent: 1 - type: Transform - - uid: 1016 - components: - - pos: 27.5,24.5 - parent: 1 - type: Transform - - uid: 1017 - components: - - pos: 26.5,24.5 - parent: 1 - type: Transform - - uid: 1021 - components: - - pos: 26.5,25.5 - parent: 1 - type: Transform - - uid: 1022 - components: - - pos: 26.5,23.5 - parent: 1 - type: Transform - - uid: 1031 - components: - - pos: 29.5,24.5 - parent: 1 - type: Transform - - uid: 1032 - components: - - pos: 28.5,24.5 - parent: 1 - type: Transform - - uid: 1418 - components: - - pos: -24.5,-12.5 - parent: 1 - type: Transform - - uid: 1422 - components: - - pos: 24.5,37.5 - parent: 1 - type: Transform - - uid: 1423 - components: - - pos: 21.5,36.5 - parent: 1 - type: Transform - - uid: 1425 - components: - - pos: 24.5,38.5 - parent: 1 - type: Transform - - uid: 1439 - components: - - pos: 20.5,36.5 - parent: 1 - type: Transform - - uid: 1440 - components: - - pos: 24.5,39.5 - parent: 1 - type: Transform - - uid: 1516 - components: - - pos: -13.5,-2.5 - parent: 1 - type: Transform - - uid: 1517 - components: - - pos: -14.5,-2.5 - parent: 1 - type: Transform - - uid: 1518 - components: - - pos: -15.5,-2.5 - parent: 1 - type: Transform - - uid: 1519 - components: - - pos: -16.5,-2.5 - parent: 1 - type: Transform - - uid: 1523 - components: - - pos: -16.5,-3.5 - parent: 1 - type: Transform - - uid: 1524 - components: - - pos: -16.5,-4.5 - parent: 1 - type: Transform - - uid: 1525 - components: - - pos: -16.5,-5.5 - parent: 1 - type: Transform - - uid: 1526 - components: - - pos: -16.5,-6.5 - parent: 1 - type: Transform - - uid: 1655 - components: - - pos: 16.5,-5.5 - parent: 1 - type: Transform - - uid: 1658 - components: - - pos: 15.5,-6.5 - parent: 1 - type: Transform - - uid: 1659 - components: - - pos: 15.5,-7.5 - parent: 1 - type: Transform - - uid: 1660 - components: - - pos: 15.5,-9.5 - parent: 1 - type: Transform - - uid: 1662 - components: - - pos: 15.5,-10.5 - parent: 1 - type: Transform - - uid: 1665 - components: - - pos: 17.5,-10.5 - parent: 1 - type: Transform - - uid: 1683 - components: - - pos: 12.5,0.5 - parent: 1 - type: Transform - - uid: 1684 - components: - - pos: 11.5,0.5 - parent: 1 - type: Transform - - uid: 1685 - components: - - pos: 10.5,0.5 - parent: 1 - type: Transform - - uid: 1686 - components: - - pos: 9.5,0.5 - parent: 1 - type: Transform - - uid: 1687 - components: - - pos: 8.5,0.5 - parent: 1 - type: Transform - - uid: 1688 - components: - - pos: 8.5,1.5 - parent: 1 - type: Transform - - uid: 1689 - components: - - pos: 10.5,-0.5 - parent: 1 - type: Transform - - uid: 1690 - components: - - pos: 10.5,-1.5 - parent: 1 - type: Transform - - uid: 1691 - components: - - pos: 10.5,-2.5 - parent: 1 - type: Transform - - uid: 1692 - components: - - pos: 9.5,-2.5 - parent: 1 - type: Transform - - uid: 1693 - components: - - pos: 8.5,-2.5 - parent: 1 - type: Transform - - uid: 1694 - components: - - pos: 7.5,-2.5 - parent: 1 - type: Transform - - uid: 1695 - components: - - pos: 11.5,-2.5 - parent: 1 - type: Transform - - uid: 1696 - components: - - pos: 12.5,-2.5 - parent: 1 - type: Transform - - uid: 1697 - components: - - pos: 13.5,-2.5 - parent: 1 - type: Transform - - uid: 1698 - components: - - pos: 14.5,-2.5 - parent: 1 - type: Transform - - uid: 1699 - components: - - pos: 15.5,-2.5 - parent: 1 - type: Transform - - uid: 1700 - components: - - pos: 16.5,-2.5 - parent: 1 - type: Transform - - uid: 1701 - components: - - pos: 17.5,-2.5 - parent: 1 - type: Transform - - uid: 1702 - components: - - pos: 15.5,-1.5 - parent: 1 - type: Transform - - uid: 1703 - components: - - pos: 15.5,-0.5 - parent: 1 - type: Transform - - uid: 1704 - components: - - pos: 15.5,0.5 - parent: 1 - type: Transform - - uid: 1705 - components: - - pos: 15.5,1.5 - parent: 1 - type: Transform - - uid: 1706 - components: - - pos: 15.5,2.5 - parent: 1 - type: Transform - - uid: 1707 - components: - - pos: 15.5,3.5 - parent: 1 - type: Transform - - uid: 1708 - components: - - pos: 17.5,-1.5 - parent: 1 - type: Transform - - uid: 1709 - components: - - pos: 18.5,-1.5 - parent: 1 - type: Transform - - uid: 1710 - components: - - pos: 19.5,-1.5 - parent: 1 - type: Transform - - uid: 1711 - components: - - pos: 20.5,-1.5 - parent: 1 - type: Transform - - uid: 1712 - components: - - pos: 20.5,-0.5 - parent: 1 - type: Transform - - uid: 1713 - components: - - pos: 20.5,0.5 - parent: 1 - type: Transform - - uid: 1714 - components: - - pos: 20.5,1.5 - parent: 1 - type: Transform - - uid: 1715 - components: - - pos: 21.5,-1.5 - parent: 1 - type: Transform - - uid: 1716 - components: - - pos: 20.5,-2.5 - parent: 1 - type: Transform - - uid: 1717 - components: - - pos: 10.5,-3.5 - parent: 1 - type: Transform - - uid: 1718 - components: - - pos: 10.5,-4.5 - parent: 1 - type: Transform - - uid: 1719 - components: - - pos: 10.5,-5.5 - parent: 1 - type: Transform - - uid: 1720 - components: - - pos: 11.5,-5.5 - parent: 1 - type: Transform - - uid: 1721 - components: - - pos: 12.5,-5.5 - parent: 1 - type: Transform - - uid: 1722 - components: - - pos: 13.5,-5.5 - parent: 1 - type: Transform - - uid: 1723 - components: - - pos: 14.5,-5.5 - parent: 1 - type: Transform - - uid: 1724 - components: - - pos: 15.5,-5.5 - parent: 1 - type: Transform - - uid: 1725 - components: - - pos: 15.5,-8.5 - parent: 1 - type: Transform - - uid: 1726 - components: - - pos: 17.5,-5.5 - parent: 1 - type: Transform - - uid: 1727 - components: - - pos: 18.5,-5.5 - parent: 1 - type: Transform - - uid: 1728 - components: - - pos: 19.5,-5.5 - parent: 1 - type: Transform - - uid: 1729 - components: - - pos: 20.5,-5.5 - parent: 1 - type: Transform - - uid: 1730 - components: - - pos: 21.5,-5.5 - parent: 1 - type: Transform - - uid: 1731 - components: - - pos: 22.5,-5.5 - parent: 1 - type: Transform - - uid: 1732 - components: - - pos: 23.5,-5.5 - parent: 1 - type: Transform - - uid: 1733 - components: - - pos: 24.5,-5.5 - parent: 1 - type: Transform - - uid: 1734 - components: - - pos: 25.5,-5.5 - parent: 1 - type: Transform - - uid: 1735 - components: - - pos: 26.5,-5.5 - parent: 1 - type: Transform - - uid: 1736 - components: - - pos: 27.5,-5.5 - parent: 1 - type: Transform - - uid: 1737 - components: - - pos: 28.5,-5.5 - parent: 1 - type: Transform - - uid: 1738 - components: - - pos: 28.5,-6.5 - parent: 1 - type: Transform - - uid: 1739 - components: - - pos: 28.5,-7.5 - parent: 1 - type: Transform - - uid: 1740 - components: - - pos: 28.5,-8.5 - parent: 1 - type: Transform - - uid: 1769 - components: - - pos: -61.5,-10.5 - parent: 1 - type: Transform - - uid: 1847 - components: - - pos: 10.5,1.5 - parent: 1 - type: Transform - - uid: 1848 - components: - - pos: 10.5,2.5 - parent: 1 - type: Transform - - uid: 1849 - components: - - pos: 10.5,3.5 - parent: 1 - type: Transform - - uid: 1850 - components: - - pos: 10.5,4.5 - parent: 1 - type: Transform - - uid: 1851 - components: - - pos: 9.5,4.5 - parent: 1 - type: Transform - - uid: 1852 - components: - - pos: 8.5,4.5 - parent: 1 - type: Transform - - uid: 1853 - components: - - pos: 7.5,4.5 - parent: 1 - type: Transform - - uid: 1854 - components: - - pos: 6.5,4.5 - parent: 1 - type: Transform - - uid: 1855 - components: - - pos: 5.5,4.5 - parent: 1 - type: Transform - - uid: 1860 - components: - - pos: -9.5,-12.5 - parent: 1 - type: Transform - - uid: 1861 - components: - - pos: -10.5,-12.5 - parent: 1 - type: Transform - - uid: 1862 - components: - - pos: -11.5,-12.5 - parent: 1 - type: Transform - - uid: 1863 - components: - - pos: -12.5,-12.5 - parent: 1 - type: Transform - - uid: 1864 - components: - - pos: -13.5,-12.5 - parent: 1 - type: Transform - - uid: 1865 - components: - - pos: -14.5,-12.5 - parent: 1 - type: Transform - - uid: 1866 - components: - - pos: -15.5,-12.5 - parent: 1 - type: Transform - - uid: 1867 - components: - - pos: -16.5,-12.5 - parent: 1 - type: Transform - - uid: 1877 - components: - - pos: -17.5,-12.5 - parent: 1 - type: Transform - - uid: 1878 - components: - - pos: -17.5,-11.5 - parent: 1 - type: Transform - - uid: 2082 - components: - - pos: 1.5,29.5 - parent: 1 - type: Transform - - uid: 2083 - components: - - pos: 2.5,29.5 - parent: 1 - type: Transform - - uid: 2084 - components: - - pos: 3.5,29.5 - parent: 1 - type: Transform - - uid: 2085 - components: - - pos: 4.5,29.5 - parent: 1 - type: Transform - - uid: 2086 - components: - - pos: 5.5,29.5 - parent: 1 - type: Transform - - uid: 2087 - components: - - pos: 6.5,29.5 - parent: 1 - type: Transform - - uid: 2088 - components: - - pos: 7.5,29.5 - parent: 1 - type: Transform - - uid: 2089 - components: - - pos: 8.5,29.5 - parent: 1 - type: Transform - - uid: 2090 - components: - - pos: 9.5,29.5 - parent: 1 - type: Transform - - uid: 2091 - components: - - pos: 10.5,29.5 - parent: 1 - type: Transform - - uid: 2092 - components: - - pos: 11.5,29.5 - parent: 1 - type: Transform - - uid: 2093 - components: - - pos: 12.5,29.5 - parent: 1 - type: Transform - - uid: 2094 - components: - - pos: 4.5,30.5 - parent: 1 - type: Transform - - uid: 2095 - components: - - pos: 4.5,31.5 - parent: 1 - type: Transform - - uid: 2096 - components: - - pos: 4.5,32.5 - parent: 1 - type: Transform - - uid: 2097 - components: - - pos: 4.5,33.5 - parent: 1 - type: Transform - - uid: 2098 - components: - - pos: 4.5,34.5 - parent: 1 - type: Transform - - uid: 2099 - components: - - pos: 4.5,35.5 - parent: 1 - type: Transform - - uid: 2100 - components: - - pos: 5.5,33.5 - parent: 1 - type: Transform - - uid: 2101 - components: - - pos: 6.5,33.5 - parent: 1 - type: Transform - - uid: 2105 - components: - - pos: 7.5,33.5 - parent: 1 - type: Transform - - uid: 2106 - components: - - pos: 8.5,33.5 - parent: 1 - type: Transform - - uid: 2107 - components: - - pos: 9.5,33.5 - parent: 1 - type: Transform - - uid: 2108 - components: - - pos: 8.5,34.5 - parent: 1 - type: Transform - - uid: 2109 - components: - - pos: 8.5,35.5 - parent: 1 - type: Transform - - uid: 2110 - components: - - pos: 8.5,36.5 - parent: 1 - type: Transform - - uid: 2111 - components: - - pos: 8.5,37.5 - parent: 1 - type: Transform - - uid: 2112 - components: - - pos: 11.5,33.5 - parent: 1 - type: Transform - - uid: 2113 - components: - - pos: 11.5,34.5 - parent: 1 - type: Transform - - uid: 2114 - components: - - pos: 11.5,35.5 - parent: 1 - type: Transform - - uid: 2115 - components: - - pos: 11.5,36.5 - parent: 1 - type: Transform - - uid: 2116 - components: - - pos: 11.5,37.5 - parent: 1 - type: Transform - - uid: 2117 - components: - - pos: 4.5,36.5 - parent: 1 - type: Transform - - uid: 2119 - components: - - pos: 4.5,37.5 - parent: 1 - type: Transform - - uid: 2120 - components: - - pos: 4.5,38.5 - parent: 1 - type: Transform - - uid: 2121 - components: - - pos: 3.5,38.5 - parent: 1 - type: Transform - - uid: 2122 - components: - - pos: 2.5,38.5 - parent: 1 - type: Transform - - uid: 2123 - components: - - pos: 1.5,38.5 - parent: 1 - type: Transform - - uid: 2124 - components: - - pos: 0.5,38.5 - parent: 1 - type: Transform - - uid: 2125 - components: - - pos: 1.5,21.5 - parent: 1 - type: Transform - - uid: 2126 - components: - - pos: 2.5,21.5 - parent: 1 - type: Transform - - uid: 2127 - components: - - pos: 3.5,21.5 - parent: 1 - type: Transform - - uid: 2128 - components: - - pos: 3.5,22.5 - parent: 1 - type: Transform - - uid: 2129 - components: - - pos: 3.5,23.5 - parent: 1 - type: Transform - - uid: 2130 - components: - - pos: 3.5,24.5 - parent: 1 - type: Transform - - uid: 2131 - components: - - pos: 3.5,25.5 - parent: 1 - type: Transform - - uid: 2132 - components: - - pos: 3.5,26.5 - parent: 1 - type: Transform - - uid: 2133 - components: - - pos: 3.5,27.5 - parent: 1 - type: Transform - - uid: 2134 - components: - - pos: 2.5,23.5 - parent: 1 - type: Transform - - uid: 2135 - components: - - pos: 4.5,25.5 - parent: 1 - type: Transform - - uid: 2138 - components: - - pos: 5.5,25.5 - parent: 1 - type: Transform - - uid: 2139 - components: - - pos: 6.5,25.5 - parent: 1 - type: Transform - - uid: 2140 - components: - - pos: 7.5,25.5 - parent: 1 - type: Transform - - uid: 2141 - components: - - pos: 8.5,25.5 - parent: 1 - type: Transform - - uid: 2142 - components: - - pos: 9.5,25.5 - parent: 1 - type: Transform - - uid: 2143 - components: - - pos: 9.5,24.5 - parent: 1 - type: Transform - - uid: 2144 - components: - - pos: 9.5,23.5 - parent: 1 - type: Transform - - uid: 2145 - components: - - pos: 9.5,22.5 - parent: 1 - type: Transform - - uid: 2146 - components: - - pos: 7.5,24.5 - parent: 1 - type: Transform - - uid: 2147 - components: - - pos: 7.5,23.5 - parent: 1 - type: Transform - - uid: 2148 - components: - - pos: 7.5,22.5 - parent: 1 - type: Transform - - uid: 2149 - components: - - pos: 3.5,20.5 - parent: 1 - type: Transform - - uid: 2150 - components: - - pos: 3.5,19.5 - parent: 1 - type: Transform - - uid: 2151 - components: - - pos: 3.5,18.5 - parent: 1 - type: Transform - - uid: 2152 - components: - - pos: 3.5,17.5 - parent: 1 - type: Transform - - uid: 2153 - components: - - pos: 3.5,16.5 - parent: 1 - type: Transform - - uid: 2154 - components: - - pos: 3.5,15.5 - parent: 1 - type: Transform - - uid: 2155 - components: - - pos: 2.5,16.5 - parent: 1 - type: Transform - - uid: 2156 - components: - - pos: 1.5,16.5 - parent: 1 - type: Transform - - uid: 2157 - components: - - pos: 0.5,16.5 - parent: 1 - type: Transform - - uid: 2158 - components: - - pos: -0.5,16.5 - parent: 1 - type: Transform - - uid: 2159 - components: - - pos: 4.5,19.5 - parent: 1 - type: Transform - - uid: 2160 - components: - - pos: 5.5,19.5 - parent: 1 - type: Transform - - uid: 2161 - components: - - pos: 6.5,19.5 - parent: 1 - type: Transform - - uid: 2162 - components: - - pos: 7.5,19.5 - parent: 1 - type: Transform - - uid: 2163 - components: - - pos: 8.5,19.5 - parent: 1 - type: Transform - - uid: 2164 - components: - - pos: 9.5,19.5 - parent: 1 - type: Transform - - uid: 2165 - components: - - pos: 10.5,19.5 - parent: 1 - type: Transform - - uid: 2166 - components: - - pos: 10.5,18.5 - parent: 1 - type: Transform - - uid: 2173 - components: - - pos: 10.5,17.5 - parent: 1 - type: Transform - - uid: 2174 - components: - - pos: 10.5,16.5 - parent: 1 - type: Transform - - uid: 2175 - components: - - pos: 10.5,15.5 - parent: 1 - type: Transform - - uid: 2176 - components: - - pos: 10.5,14.5 - parent: 1 - type: Transform - - uid: 2177 - components: - - pos: 10.5,13.5 - parent: 1 - type: Transform - - uid: 2178 - components: - - pos: 10.5,12.5 - parent: 1 - type: Transform - - uid: 2179 - components: - - pos: 9.5,15.5 - parent: 1 - type: Transform - - uid: 2180 - components: - - pos: 8.5,15.5 - parent: 1 - type: Transform - - uid: 2181 - components: - - pos: 7.5,15.5 - parent: 1 - type: Transform - - uid: 2185 - components: - - pos: 9.5,12.5 - parent: 1 - type: Transform - - uid: 2186 - components: - - pos: 8.5,12.5 - parent: 1 - type: Transform - - uid: 2187 - components: - - pos: 7.5,12.5 - parent: 1 - type: Transform - - uid: 2220 - components: - - pos: 12.5,28.5 - parent: 1 - type: Transform - - uid: 2221 - components: - - pos: 13.5,28.5 - parent: 1 - type: Transform - - uid: 2222 - components: - - pos: 14.5,28.5 - parent: 1 - type: Transform - - uid: 2223 - components: - - pos: 15.5,28.5 - parent: 1 - type: Transform - - uid: 2224 - components: - - pos: 15.5,29.5 - parent: 1 - type: Transform - - uid: 2225 - components: - - pos: 15.5,30.5 - parent: 1 - type: Transform - - uid: 2226 - components: - - pos: 15.5,31.5 - parent: 1 - type: Transform - - uid: 2227 - components: - - pos: 15.5,32.5 - parent: 1 - type: Transform - - uid: 2228 - components: - - pos: 16.5,32.5 - parent: 1 - type: Transform - - uid: 2229 - components: - - pos: 17.5,32.5 - parent: 1 - type: Transform - - uid: 2230 - components: - - pos: 18.5,32.5 - parent: 1 - type: Transform - - uid: 2231 - components: - - pos: 19.5,32.5 - parent: 1 - type: Transform - - uid: 2232 - components: - - pos: 19.5,31.5 - parent: 1 - type: Transform - - uid: 2233 - components: - - pos: 19.5,30.5 - parent: 1 - type: Transform - - uid: 2234 - components: - - pos: 19.5,29.5 - parent: 1 - type: Transform - - uid: 2241 - components: - - pos: 11.5,15.5 - parent: 1 - type: Transform - - uid: 2242 - components: - - pos: 12.5,15.5 - parent: 1 - type: Transform - - uid: 2243 - components: - - pos: 13.5,15.5 - parent: 1 - type: Transform - - uid: 2244 - components: - - pos: 13.5,16.5 - parent: 1 - type: Transform - - uid: 2245 - components: - - pos: 13.5,17.5 - parent: 1 - type: Transform - - uid: 2246 - components: - - pos: 13.5,18.5 - parent: 1 - type: Transform - - uid: 2247 - components: - - pos: 6.5,12.5 - parent: 1 - type: Transform - - uid: 2248 - components: - - pos: 6.5,15.5 - parent: 1 - type: Transform - - uid: 2269 - components: - - pos: 1.5,23.5 - parent: 1 - type: Transform - - uid: 2270 - components: - - pos: 0.5,23.5 - parent: 1 - type: Transform - - uid: 2271 - components: - - pos: -0.5,23.5 - parent: 1 - type: Transform - - uid: 2272 - components: - - pos: -1.5,23.5 - parent: 1 - type: Transform - - uid: 2273 - components: - - pos: -2.5,23.5 - parent: 1 - type: Transform - - uid: 2274 - components: - - pos: -2.5,22.5 - parent: 1 - type: Transform - - uid: 2275 - components: - - pos: -2.5,21.5 - parent: 1 - type: Transform - - uid: 2276 - components: - - pos: -2.5,20.5 - parent: 1 - type: Transform - - uid: 2277 - components: - - pos: -2.5,19.5 - parent: 1 - type: Transform - - uid: 2278 - components: - - pos: -2.5,24.5 - parent: 1 - type: Transform - - uid: 2279 - components: - - pos: -2.5,25.5 - parent: 1 - type: Transform - - uid: 2280 - components: - - pos: -2.5,26.5 - parent: 1 - type: Transform - - uid: 2281 - components: - - pos: 0.5,24.5 - parent: 1 - type: Transform - - uid: 2282 - components: - - pos: 0.5,25.5 - parent: 1 - type: Transform - - uid: 2283 - components: - - pos: 0.5,26.5 - parent: 1 - type: Transform - - uid: 2284 - components: - - pos: 0.5,27.5 - parent: 1 - type: Transform - - uid: 2288 - components: - - pos: 0.5,29.5 - parent: 1 - type: Transform - - uid: 2289 - components: - - pos: -0.5,29.5 - parent: 1 - type: Transform - - uid: 2290 - components: - - pos: -1.5,29.5 - parent: 1 - type: Transform - - uid: 2291 - components: - - pos: -2.5,29.5 - parent: 1 - type: Transform - - uid: 2292 - components: - - pos: -3.5,29.5 - parent: 1 - type: Transform - - uid: 2293 - components: - - pos: -3.5,30.5 - parent: 1 - type: Transform - - uid: 2294 - components: - - pos: -3.5,31.5 - parent: 1 - type: Transform - - uid: 2295 - components: - - pos: -3.5,32.5 - parent: 1 - type: Transform - - uid: 2296 - components: - - pos: -3.5,33.5 - parent: 1 - type: Transform - - uid: 2297 - components: - - pos: -0.5,30.5 - parent: 1 - type: Transform - - uid: 2298 - components: - - pos: -0.5,31.5 - parent: 1 - type: Transform - - uid: 2299 - components: - - pos: -0.5,32.5 - parent: 1 - type: Transform - - uid: 2300 - components: - - pos: -0.5,33.5 - parent: 1 - type: Transform - - uid: 2399 - components: - - pos: 16.5,36.5 - parent: 1 - type: Transform - - uid: 2519 - components: - - pos: 22.5,10.5 - parent: 1 - type: Transform - - uid: 2520 - components: - - pos: 22.5,9.5 - parent: 1 - type: Transform - - uid: 2521 - components: - - pos: 22.5,8.5 - parent: 1 - type: Transform - - uid: 2522 - components: - - pos: 22.5,7.5 - parent: 1 - type: Transform - - uid: 2523 - components: - - pos: 22.5,6.5 - parent: 1 - type: Transform - - uid: 2524 - components: - - pos: 21.5,6.5 - parent: 1 - type: Transform - - uid: 2525 - components: - - pos: 20.5,6.5 - parent: 1 - type: Transform - - uid: 2526 - components: - - pos: 19.5,6.5 - parent: 1 - type: Transform - - uid: 2527 - components: - - pos: 18.5,6.5 - parent: 1 - type: Transform - - uid: 2528 - components: - - pos: 17.5,6.5 - parent: 1 - type: Transform - - uid: 2529 - components: - - pos: 16.5,6.5 - parent: 1 - type: Transform - - uid: 2530 - components: - - pos: 15.5,6.5 - parent: 1 - type: Transform - - uid: 2531 - components: - - pos: 14.5,6.5 - parent: 1 - type: Transform - - uid: 2532 - components: - - pos: 13.5,6.5 - parent: 1 - type: Transform - - uid: 2533 - components: - - pos: 22.5,5.5 - parent: 1 - type: Transform - - uid: 2534 - components: - - pos: 22.5,4.5 - parent: 1 - type: Transform - - uid: 2535 - components: - - pos: 22.5,3.5 - parent: 1 - type: Transform - - uid: 2536 - components: - - pos: 17.5,7.5 - parent: 1 - type: Transform - - uid: 2537 - components: - - pos: 17.5,8.5 - parent: 1 - type: Transform - - uid: 2538 - components: - - pos: 17.5,9.5 - parent: 1 - type: Transform - - uid: 2539 - components: - - pos: 17.5,10.5 - parent: 1 - type: Transform - - uid: 2540 - components: - - pos: 17.5,11.5 - parent: 1 - type: Transform - - uid: 2541 - components: - - pos: 17.5,12.5 - parent: 1 - type: Transform - - uid: 2542 - components: - - pos: 22.5,11.5 - parent: 1 - type: Transform - - uid: 2543 - components: - - pos: 22.5,12.5 - parent: 1 - type: Transform - - uid: 2544 - components: - - pos: 22.5,13.5 - parent: 1 - type: Transform - - uid: 2545 - components: - - pos: 22.5,14.5 - parent: 1 - type: Transform - - uid: 2546 - components: - - pos: 22.5,15.5 - parent: 1 - type: Transform - - uid: 2547 - components: - - pos: 22.5,16.5 - parent: 1 - type: Transform - - uid: 2548 - components: - - pos: 22.5,17.5 - parent: 1 - type: Transform - - uid: 2549 - components: - - pos: 22.5,18.5 - parent: 1 - type: Transform - - uid: 2550 - components: - - pos: 22.5,19.5 - parent: 1 - type: Transform - - uid: 2551 - components: - - pos: 22.5,20.5 - parent: 1 - type: Transform - - uid: 2552 - components: - - pos: 22.5,21.5 - parent: 1 - type: Transform - - uid: 2553 - components: - - pos: 22.5,22.5 - parent: 1 - type: Transform - - uid: 2554 - components: - - pos: 22.5,23.5 - parent: 1 - type: Transform - - uid: 2555 - components: - - pos: 22.5,24.5 - parent: 1 - type: Transform - - uid: 2556 - components: - - pos: 22.5,25.5 - parent: 1 - type: Transform - - uid: 2557 - components: - - pos: 23.5,6.5 - parent: 1 - type: Transform - - uid: 2558 - components: - - pos: 24.5,6.5 - parent: 1 - type: Transform - - uid: 2559 - components: - - pos: 25.5,6.5 - parent: 1 - type: Transform - - uid: 2560 - components: - - pos: 26.5,6.5 - parent: 1 - type: Transform - - uid: 2561 - components: - - pos: 27.5,6.5 - parent: 1 - type: Transform - - uid: 2562 - components: - - pos: 27.5,7.5 - parent: 1 - type: Transform - - uid: 2563 - components: - - pos: 27.5,8.5 - parent: 1 - type: Transform - - uid: 2564 - components: - - pos: 27.5,9.5 - parent: 1 - type: Transform - - uid: 2565 - components: - - pos: 27.5,10.5 - parent: 1 - type: Transform - - uid: 2566 - components: - - pos: 28.5,8.5 - parent: 1 - type: Transform - - uid: 2567 - components: - - pos: 29.5,8.5 - parent: 1 - type: Transform - - uid: 2568 - components: - - pos: 30.5,8.5 - parent: 1 - type: Transform - - uid: 2569 - components: - - pos: 27.5,11.5 - parent: 1 - type: Transform - - uid: 2570 - components: - - pos: -7.5,2.5 - parent: 1 - type: Transform - - uid: 2571 - components: - - pos: -7.5,3.5 - parent: 1 - type: Transform - - uid: 2572 - components: - - pos: 23.5,14.5 - parent: 1 - type: Transform - - uid: 2573 - components: - - pos: 24.5,14.5 - parent: 1 - type: Transform - - uid: 2574 - components: - - pos: 25.5,14.5 - parent: 1 - type: Transform - - uid: 2575 - components: - - pos: 26.5,14.5 - parent: 1 - type: Transform - - uid: 2576 - components: - - pos: 27.5,14.5 - parent: 1 - type: Transform - - uid: 2577 - components: - - pos: 25.5,13.5 - parent: 1 - type: Transform - - uid: 2578 - components: - - pos: 25.5,12.5 - parent: 1 - type: Transform - - uid: 2579 - components: - - pos: 25.5,11.5 - parent: 1 - type: Transform - - uid: 2580 - components: - - pos: 23.5,18.5 - parent: 1 - type: Transform - - uid: 2581 - components: - - pos: 24.5,18.5 - parent: 1 - type: Transform - - uid: 2582 - components: - - pos: 25.5,18.5 - parent: 1 - type: Transform - - uid: 2583 - components: - - pos: 26.5,18.5 - parent: 1 - type: Transform - - uid: 2584 - components: - - pos: 27.5,18.5 - parent: 1 - type: Transform - - uid: 2585 - components: - - pos: 28.5,18.5 - parent: 1 - type: Transform - - uid: 2586 - components: - - pos: 29.5,18.5 - parent: 1 - type: Transform - - uid: 2587 - components: - - pos: 30.5,18.5 - parent: 1 - type: Transform - - uid: 2588 - components: - - pos: 26.5,19.5 - parent: 1 - type: Transform - - uid: 2594 - components: - - pos: 31.5,18.5 - parent: 1 - type: Transform - - uid: 2595 - components: - - pos: 31.5,8.5 - parent: 1 - type: Transform - - uid: 2596 - components: - - pos: -7.5,4.5 - parent: 1 - type: Transform - - uid: 2597 - components: - - pos: -7.5,5.5 - parent: 1 - type: Transform - - uid: 2598 - components: - - pos: -6.5,5.5 - parent: 1 - type: Transform - - uid: 2599 - components: - - pos: -5.5,5.5 - parent: 1 - type: Transform - - uid: 2600 - components: - - pos: -4.5,5.5 - parent: 1 - type: Transform - - uid: 2601 - components: - - pos: -3.5,5.5 - parent: 1 - type: Transform - - uid: 2602 - components: - - pos: -2.5,5.5 - parent: 1 - type: Transform - - uid: 2603 - components: - - pos: -1.5,5.5 - parent: 1 - type: Transform - - uid: 2604 - components: - - pos: -0.5,5.5 - parent: 1 - type: Transform - - uid: 2605 - components: - - pos: 0.5,5.5 - parent: 1 - type: Transform - - uid: 2606 - components: - - pos: 1.5,5.5 - parent: 1 - type: Transform - - uid: 2607 - components: - - pos: -5.5,6.5 - parent: 1 - type: Transform - - uid: 2608 - components: - - pos: -8.5,5.5 - parent: 1 - type: Transform - - uid: 2609 - components: - - pos: -9.5,5.5 - parent: 1 - type: Transform - - uid: 2610 - components: - - pos: -10.5,5.5 - parent: 1 - type: Transform - - uid: 2611 - components: - - pos: -11.5,5.5 - parent: 1 - type: Transform - - uid: 2612 - components: - - pos: -12.5,5.5 - parent: 1 - type: Transform - - uid: 2613 - components: - - pos: -13.5,5.5 - parent: 1 - type: Transform - - uid: 2614 - components: - - pos: -14.5,5.5 - parent: 1 - type: Transform - - uid: 2615 - components: - - pos: -15.5,5.5 - parent: 1 - type: Transform - - uid: 2616 - components: - - pos: -16.5,5.5 - parent: 1 - type: Transform - - uid: 2617 - components: - - pos: -16.5,4.5 - parent: 1 - type: Transform - - uid: 2618 - components: - - pos: -4.5,33.5 - parent: 1 - type: Transform - - uid: 2619 - components: - - pos: -5.5,33.5 - parent: 1 - type: Transform - - uid: 2620 - components: - - pos: -6.5,33.5 - parent: 1 - type: Transform - - uid: 2621 - components: - - pos: -7.5,33.5 - parent: 1 - type: Transform - - uid: 2622 - components: - - pos: -8.5,33.5 - parent: 1 - type: Transform - - uid: 2623 - components: - - pos: -8.5,32.5 - parent: 1 - type: Transform - - uid: 2624 - components: - - pos: -8.5,31.5 - parent: 1 - type: Transform - - uid: 2625 - components: - - pos: -8.5,30.5 - parent: 1 - type: Transform - - uid: 2626 - components: - - pos: -8.5,29.5 - parent: 1 - type: Transform - - uid: 2627 - components: - - pos: -8.5,28.5 - parent: 1 - type: Transform - - uid: 2628 - components: - - pos: -9.5,32.5 - parent: 1 - type: Transform - - uid: 2629 - components: - - pos: -10.5,32.5 - parent: 1 - type: Transform - - uid: 2630 - components: - - pos: -11.5,32.5 - parent: 1 - type: Transform - - uid: 2631 - components: - - pos: -12.5,32.5 - parent: 1 - type: Transform - - uid: 2699 - components: - - pos: -10.5,17.5 - parent: 1 - type: Transform - - uid: 2700 - components: - - pos: -11.5,17.5 - parent: 1 - type: Transform - - uid: 2701 - components: - - pos: -12.5,17.5 - parent: 1 - type: Transform - - uid: 2702 - components: - - pos: -12.5,16.5 - parent: 1 - type: Transform - - uid: 2703 - components: - - pos: -12.5,15.5 - parent: 1 - type: Transform - - uid: 2704 - components: - - pos: -12.5,14.5 - parent: 1 - type: Transform - - uid: 2705 - components: - - pos: -12.5,13.5 - parent: 1 - type: Transform - - uid: 2706 - components: - - pos: -12.5,12.5 - parent: 1 - type: Transform - - uid: 2707 - components: - - pos: -12.5,11.5 - parent: 1 - type: Transform - - uid: 2708 - components: - - pos: -12.5,10.5 - parent: 1 - type: Transform - - uid: 2709 - components: - - pos: -12.5,9.5 - parent: 1 - type: Transform - - uid: 2710 - components: - - pos: -11.5,9.5 - parent: 1 - type: Transform - - uid: 2711 - components: - - pos: -10.5,9.5 - parent: 1 - type: Transform - - uid: 2712 - components: - - pos: -9.5,9.5 - parent: 1 - type: Transform - - uid: 2713 - components: - - pos: -8.5,9.5 - parent: 1 - type: Transform - - uid: 2714 - components: - - pos: -13.5,9.5 - parent: 1 - type: Transform - - uid: 2715 - components: - - pos: -14.5,9.5 - parent: 1 - type: Transform - - uid: 2716 - components: - - pos: -15.5,9.5 - parent: 1 - type: Transform - - uid: 2717 - components: - - pos: -16.5,9.5 - parent: 1 - type: Transform - - uid: 2718 - components: - - pos: -13.5,13.5 - parent: 1 - type: Transform - - uid: 2719 - components: - - pos: -14.5,13.5 - parent: 1 - type: Transform - - uid: 2720 - components: - - pos: -15.5,13.5 - parent: 1 - type: Transform - - uid: 2721 - components: - - pos: -16.5,13.5 - parent: 1 - type: Transform - - uid: 2722 - components: - - pos: -11.5,12.5 - parent: 1 - type: Transform - - uid: 2723 - components: - - pos: -10.5,12.5 - parent: 1 - type: Transform - - uid: 2724 - components: - - pos: -9.5,12.5 - parent: 1 - type: Transform - - uid: 2725 - components: - - pos: -8.5,12.5 - parent: 1 - type: Transform - - uid: 2726 - components: - - pos: -11.5,15.5 - parent: 1 - type: Transform - - uid: 2727 - components: - - pos: -10.5,15.5 - parent: 1 - type: Transform - - uid: 2728 - components: - - pos: -9.5,15.5 - parent: 1 - type: Transform - - uid: 2729 - components: - - pos: -8.5,15.5 - parent: 1 - type: Transform - - uid: 2734 - components: - - pos: -12.5,18.5 - parent: 1 - type: Transform - - uid: 2735 - components: - - pos: -12.5,19.5 - parent: 1 - type: Transform - - uid: 2736 - components: - - pos: -12.5,20.5 - parent: 1 - type: Transform - - uid: 2737 - components: - - pos: -12.5,21.5 - parent: 1 - type: Transform - - uid: 2738 - components: - - pos: -12.5,22.5 - parent: 1 - type: Transform - - uid: 2739 - components: - - pos: -12.5,23.5 - parent: 1 - type: Transform - - uid: 2740 - components: - - pos: -12.5,24.5 - parent: 1 - type: Transform - - uid: 2741 - components: - - pos: -12.5,25.5 - parent: 1 - type: Transform - - uid: 2742 - components: - - pos: -12.5,26.5 - parent: 1 - type: Transform - - uid: 2743 - components: - - pos: -12.5,27.5 - parent: 1 - type: Transform - - uid: 2744 - components: - - pos: -12.5,28.5 - parent: 1 - type: Transform - - uid: 2745 - components: - - pos: -12.5,29.5 - parent: 1 - type: Transform - - uid: 2746 - components: - - pos: -9.5,17.5 - parent: 1 - type: Transform - - uid: 2747 - components: - - pos: -8.5,17.5 - parent: 1 - type: Transform - - uid: 2748 - components: - - pos: -7.5,17.5 - parent: 1 - type: Transform - - uid: 2778 - components: - - pos: -20.5,17.5 - parent: 1 - type: Transform - - uid: 2779 - components: - - pos: -20.5,16.5 - parent: 1 - type: Transform - - uid: 2783 - components: - - pos: -21.5,16.5 - parent: 1 - type: Transform - - uid: 2785 - components: - - pos: -19.5,17.5 - parent: 1 - type: Transform - - uid: 2793 - components: - - pos: -15.5,8.5 - parent: 1 - type: Transform - - uid: 2853 - components: - - pos: -13.5,28.5 - parent: 1 - type: Transform - - uid: 2854 - components: - - pos: -14.5,28.5 - parent: 1 - type: Transform - - uid: 2855 - components: - - pos: -15.5,28.5 - parent: 1 - type: Transform - - uid: 2856 - components: - - pos: -16.5,28.5 - parent: 1 - type: Transform - - uid: 2857 - components: - - pos: -14.5,29.5 - parent: 1 - type: Transform - - uid: 2858 - components: - - pos: -16.5,29.5 - parent: 1 - type: Transform - - uid: 2859 - components: - - pos: -16.5,30.5 - parent: 1 - type: Transform - - uid: 2860 - components: - - pos: -17.5,30.5 - parent: 1 - type: Transform - - uid: 2861 - components: - - pos: -15.5,30.5 - parent: 1 - type: Transform - - uid: 2862 - components: - - pos: 2.5,-7.5 - parent: 1 - type: Transform - - uid: 3041 - components: - - pos: -16.5,27.5 - parent: 1 - type: Transform - - uid: 3042 - components: - - pos: -16.5,26.5 - parent: 1 - type: Transform - - uid: 3159 - components: - - pos: -29.5,30.5 - parent: 1 - type: Transform - - uid: 3174 - components: - - pos: -16.5,25.5 - parent: 1 - type: Transform - - uid: 3178 - components: - - pos: -16.5,24.5 - parent: 1 - type: Transform - - uid: 3212 - components: - - pos: -24.5,19.5 - parent: 1 - type: Transform - - uid: 3224 - components: - - pos: -19.5,24.5 - parent: 1 - type: Transform - - uid: 3225 - components: - - pos: -20.5,24.5 - parent: 1 - type: Transform - - uid: 3226 - components: - - pos: -20.5,25.5 - parent: 1 - type: Transform - - uid: 3227 - components: - - pos: -20.5,26.5 - parent: 1 - type: Transform - - uid: 3228 - components: - - pos: -21.5,26.5 - parent: 1 - type: Transform - - uid: 3229 - components: - - pos: -22.5,26.5 - parent: 1 - type: Transform - - uid: 3230 - components: - - pos: -23.5,26.5 - parent: 1 - type: Transform - - uid: 3231 - components: - - pos: -24.5,26.5 - parent: 1 - type: Transform - - uid: 3232 - components: - - pos: -24.5,27.5 - parent: 1 - type: Transform - - uid: 3233 - components: - - pos: -24.5,28.5 - parent: 1 - type: Transform - - uid: 3234 - components: - - pos: -24.5,29.5 - parent: 1 - type: Transform - - uid: 3235 - components: - - pos: -23.5,29.5 - parent: 1 - type: Transform - - uid: 3236 - components: - - pos: -20.5,23.5 - parent: 1 - type: Transform - - uid: 3237 - components: - - pos: -21.5,23.5 - parent: 1 - type: Transform - - uid: 3238 - components: - - pos: -22.5,23.5 - parent: 1 - type: Transform - - uid: 3239 - components: - - pos: -23.5,23.5 - parent: 1 - type: Transform - - uid: 3240 - components: - - pos: -24.5,23.5 - parent: 1 - type: Transform - - uid: 3241 - components: - - pos: -25.5,23.5 - parent: 1 - type: Transform - - uid: 3242 - components: - - pos: -26.5,23.5 - parent: 1 - type: Transform - - uid: 3243 - components: - - pos: -27.5,23.5 - parent: 1 - type: Transform - - uid: 3244 - components: - - pos: -28.5,23.5 - parent: 1 - type: Transform - - uid: 3245 - components: - - pos: -29.5,23.5 - parent: 1 - type: Transform - - uid: 3246 - components: - - pos: -29.5,24.5 - parent: 1 - type: Transform - - uid: 3247 - components: - - pos: -29.5,25.5 - parent: 1 - type: Transform - - uid: 3248 - components: - - pos: -29.5,26.5 - parent: 1 - type: Transform - - uid: 3249 - components: - - pos: -29.5,27.5 - parent: 1 - type: Transform - - uid: 3250 - components: - - pos: -29.5,28.5 - parent: 1 - type: Transform - - uid: 3251 - components: - - pos: -30.5,28.5 - parent: 1 - type: Transform - - uid: 3252 - components: - - pos: -31.5,28.5 - parent: 1 - type: Transform - - uid: 3253 - components: - - pos: -32.5,28.5 - parent: 1 - type: Transform - - uid: 3254 - components: - - pos: -33.5,28.5 - parent: 1 - type: Transform - - uid: 3255 - components: - - pos: -30.5,25.5 - parent: 1 - type: Transform - - uid: 3256 - components: - - pos: -31.5,25.5 - parent: 1 - type: Transform - - uid: 3257 - components: - - pos: -32.5,25.5 - parent: 1 - type: Transform - - uid: 3258 - components: - - pos: -33.5,25.5 - parent: 1 - type: Transform - - uid: 3259 - components: - - pos: -34.5,25.5 - parent: 1 - type: Transform - - uid: 3260 - components: - - pos: -34.5,28.5 - parent: 1 - type: Transform - - uid: 3261 - components: - - pos: -24.5,18.5 - parent: 1 - type: Transform - - uid: 3262 - components: - - pos: -24.5,17.5 - parent: 1 - type: Transform - - uid: 3263 - components: - - pos: -24.5,16.5 - parent: 1 - type: Transform - - uid: 3264 - components: - - pos: -24.5,15.5 - parent: 1 - type: Transform - - uid: 3265 - components: - - pos: -25.5,15.5 - parent: 1 - type: Transform - - uid: 3266 - components: - - pos: -26.5,15.5 - parent: 1 - type: Transform - - uid: 3267 - components: - - pos: -27.5,15.5 - parent: 1 - type: Transform - - uid: 3268 - components: - - pos: -28.5,15.5 - parent: 1 - type: Transform - - uid: 3269 - components: - - pos: -25.5,18.5 - parent: 1 - type: Transform - - uid: 3270 - components: - - pos: -26.5,18.5 - parent: 1 - type: Transform - - uid: 3271 - components: - - pos: -27.5,18.5 - parent: 1 - type: Transform - - uid: 3272 - components: - - pos: -28.5,18.5 - parent: 1 - type: Transform - - uid: 3273 - components: - - pos: -23.5,16.5 - parent: 1 - type: Transform - - uid: 3274 - components: - - pos: -22.5,16.5 - parent: 1 - type: Transform - - uid: 3275 - components: - - pos: -23.5,15.5 - parent: 1 - type: Transform - - uid: 3276 - components: - - pos: -23.5,14.5 - parent: 1 - type: Transform - - uid: 3277 - components: - - pos: -23.5,13.5 - parent: 1 - type: Transform - - uid: 3278 - components: - - pos: -23.5,12.5 - parent: 1 - type: Transform - - uid: 3279 - components: - - pos: -23.5,11.5 - parent: 1 - type: Transform - - uid: 3280 - components: - - pos: -23.5,10.5 - parent: 1 - type: Transform - - uid: 3281 - components: - - pos: -23.5,9.5 - parent: 1 - type: Transform - - uid: 3282 - components: - - pos: -23.5,8.5 - parent: 1 - type: Transform - - uid: 3283 - components: - - pos: -24.5,8.5 - parent: 1 - type: Transform - - uid: 3284 - components: - - pos: -25.5,8.5 - parent: 1 - type: Transform - - uid: 3285 - components: - - pos: -26.5,8.5 - parent: 1 - type: Transform - - uid: 3286 - components: - - pos: -27.5,8.5 - parent: 1 - type: Transform - - uid: 3287 - components: - - pos: -28.5,8.5 - parent: 1 - type: Transform - - uid: 3288 - components: - - pos: -29.5,8.5 - parent: 1 - type: Transform - - uid: 3289 - components: - - pos: -30.5,8.5 - parent: 1 - type: Transform - - uid: 3290 - components: - - pos: -30.5,9.5 - parent: 1 - type: Transform - - uid: 3291 - components: - - pos: -30.5,10.5 - parent: 1 - type: Transform - - uid: 3292 - components: - - pos: -31.5,10.5 - parent: 1 - type: Transform - - uid: 3293 - components: - - pos: -31.5,10.5 - parent: 1 - type: Transform - - uid: 3294 - components: - - pos: -32.5,10.5 - parent: 1 - type: Transform - - uid: 3295 - components: - - pos: -33.5,10.5 - parent: 1 - type: Transform - - uid: 3296 - components: - - pos: -33.5,9.5 - parent: 1 - type: Transform - - uid: 3297 - components: - - pos: -23.5,7.5 - parent: 1 - type: Transform - - uid: 3298 - components: - - pos: -23.5,6.5 - parent: 1 - type: Transform - - uid: 3299 - components: - - pos: -23.5,5.5 - parent: 1 - type: Transform - - uid: 3300 - components: - - pos: -24.5,5.5 - parent: 1 - type: Transform - - uid: 3301 - components: - - pos: -25.5,5.5 - parent: 1 - type: Transform - - uid: 3302 - components: - - pos: -26.5,5.5 - parent: 1 - type: Transform - - uid: 3303 - components: - - pos: -27.5,5.5 - parent: 1 - type: Transform - - uid: 3304 - components: - - pos: -28.5,5.5 - parent: 1 - type: Transform - - uid: 3305 - components: - - pos: -29.5,5.5 - parent: 1 - type: Transform - - uid: 3306 - components: - - pos: -30.5,5.5 - parent: 1 - type: Transform - - uid: 3307 - components: - - pos: -31.5,5.5 - parent: 1 - type: Transform - - uid: 3308 - components: - - pos: -32.5,5.5 - parent: 1 - type: Transform - - uid: 3309 - components: - - pos: -33.5,5.5 - parent: 1 - type: Transform - - uid: 3310 - components: - - pos: -22.5,5.5 - parent: 1 - type: Transform - - uid: 3311 - components: - - pos: -21.5,5.5 - parent: 1 - type: Transform - - uid: 3312 - components: - - pos: -20.5,5.5 - parent: 1 - type: Transform - - uid: 3313 - components: - - pos: -19.5,5.5 - parent: 1 - type: Transform - - uid: 3314 - components: - - pos: -19.5,6.5 - parent: 1 - type: Transform - - uid: 3323 - components: - - pos: -42.5,-11.5 - parent: 1 - type: Transform - - uid: 3352 - components: - - pos: -42.5,-13.5 - parent: 1 - type: Transform - - uid: 3353 - components: - - pos: -43.5,-13.5 - parent: 1 - type: Transform - - uid: 3354 - components: - - pos: -47.5,-13.5 - parent: 1 - type: Transform - - uid: 3355 - components: - - pos: -42.5,-12.5 - parent: 1 - type: Transform - - uid: 3359 - components: - - pos: -39.5,-12.5 - parent: 1 - type: Transform - - uid: 3479 - components: - - pos: 17.5,36.5 - parent: 1 - type: Transform - - uid: 3485 - components: - - pos: 21.5,40.5 - parent: 1 - type: Transform - - uid: 3531 - components: - - pos: -29.5,29.5 - parent: 1 - type: Transform - - uid: 3556 - components: - - pos: -42.5,-10.5 - parent: 1 - type: Transform - - uid: 3557 - components: - - pos: -39.5,-13.5 - parent: 1 - type: Transform - - uid: 3681 - components: - - pos: -39.5,-10.5 - parent: 1 - type: Transform - - uid: 3702 - components: - - pos: -34.5,-6.5 - parent: 1 - type: Transform - - uid: 3703 - components: - - pos: -48.5,-13.5 - parent: 1 - type: Transform - - uid: 3707 - components: - - pos: -42.5,-8.5 - parent: 1 - type: Transform - - uid: 3709 - components: - - pos: -34.5,-10.5 - parent: 1 - type: Transform - - uid: 3711 - components: - - pos: -44.5,-13.5 - parent: 1 - type: Transform - - uid: 3712 - components: - - pos: -45.5,-13.5 - parent: 1 - type: Transform - - uid: 3713 - components: - - pos: -46.5,-13.5 - parent: 1 - type: Transform - - uid: 3777 - components: - - pos: -42.5,-5.5 - parent: 1 - type: Transform - - uid: 3778 - components: - - pos: -41.5,-5.5 - parent: 1 - type: Transform - - uid: 3779 - components: - - pos: -40.5,-5.5 - parent: 1 - type: Transform - - uid: 3780 - components: - - pos: -39.5,-5.5 - parent: 1 - type: Transform - - uid: 3781 - components: - - pos: -38.5,-5.5 - parent: 1 - type: Transform - - uid: 3782 - components: - - pos: -37.5,-5.5 - parent: 1 - type: Transform - - uid: 3783 - components: - - pos: -40.5,-4.5 - parent: 1 - type: Transform - - uid: 3784 - components: - - pos: -40.5,-3.5 - parent: 1 - type: Transform - - uid: 3785 - components: - - pos: -40.5,-2.5 - parent: 1 - type: Transform - - uid: 3786 - components: - - pos: -40.5,-1.5 - parent: 1 - type: Transform - - uid: 3787 - components: - - pos: -40.5,-0.5 - parent: 1 - type: Transform - - uid: 3788 - components: - - pos: -40.5,0.5 - parent: 1 - type: Transform - - uid: 3789 - components: - - pos: -40.5,1.5 - parent: 1 - type: Transform - - uid: 3790 - components: - - pos: -40.5,2.5 - parent: 1 - type: Transform - - uid: 3791 - components: - - pos: -37.5,-4.5 - parent: 1 - type: Transform - - uid: 3792 - components: - - pos: -37.5,-3.5 - parent: 1 - type: Transform - - uid: 3793 - components: - - pos: -37.5,-2.5 - parent: 1 - type: Transform - - uid: 3794 - components: - - pos: -37.5,-1.5 - parent: 1 - type: Transform - - uid: 3795 - components: - - pos: -37.5,-0.5 - parent: 1 - type: Transform - - uid: 3796 - components: - - pos: -37.5,0.5 - parent: 1 - type: Transform - - uid: 3797 - components: - - pos: -37.5,1.5 - parent: 1 - type: Transform - - uid: 3798 - components: - - pos: -37.5,2.5 - parent: 1 - type: Transform - - uid: 3799 - components: - - pos: -36.5,-2.5 - parent: 1 - type: Transform - - uid: 3800 - components: - - pos: -35.5,-2.5 - parent: 1 - type: Transform - - uid: 3801 - components: - - pos: -34.5,-2.5 - parent: 1 - type: Transform - - uid: 3802 - components: - - pos: -33.5,-2.5 - parent: 1 - type: Transform - - uid: 3803 - components: - - pos: -32.5,-2.5 - parent: 1 - type: Transform - - uid: 3804 - components: - - pos: -32.5,-1.5 - parent: 1 - type: Transform - - uid: 3805 - components: - - pos: -32.5,-0.5 - parent: 1 - type: Transform - - uid: 3806 - components: - - pos: -32.5,0.5 - parent: 1 - type: Transform - - uid: 3807 - components: - - pos: -32.5,1.5 - parent: 1 - type: Transform - - uid: 3808 - components: - - pos: -32.5,2.5 - parent: 1 - type: Transform - - uid: 3809 - components: - - pos: -37.5,3.5 - parent: 1 - type: Transform - - uid: 3810 - components: - - pos: -37.5,4.5 - parent: 1 - type: Transform - - uid: 3811 - components: - - pos: -37.5,5.5 - parent: 1 - type: Transform - - uid: 3812 - components: - - pos: -36.5,5.5 - parent: 1 - type: Transform - - uid: 3813 - components: - - pos: -35.5,5.5 - parent: 1 - type: Transform - - uid: 3814 - components: - - pos: -38.5,5.5 - parent: 1 - type: Transform - - uid: 3815 - components: - - pos: -39.5,5.5 - parent: 1 - type: Transform - - uid: 3816 - components: - - pos: -40.5,5.5 - parent: 1 - type: Transform - - uid: 3817 - components: - - pos: -41.5,-2.5 - parent: 1 - type: Transform - - uid: 3818 - components: - - pos: -42.5,-2.5 - parent: 1 - type: Transform - - uid: 3819 - components: - - pos: -43.5,-2.5 - parent: 1 - type: Transform - - uid: 3820 - components: - - pos: -44.5,-2.5 - parent: 1 - type: Transform - - uid: 3821 - components: - - pos: -44.5,-3.5 - parent: 1 - type: Transform - - uid: 3822 - components: - - pos: -44.5,-4.5 - parent: 1 - type: Transform - - uid: 3823 - components: - - pos: -44.5,-5.5 - parent: 1 - type: Transform - - uid: 3824 - components: - - pos: -44.5,-6.5 - parent: 1 - type: Transform - - uid: 3825 - components: - - pos: -45.5,-2.5 - parent: 1 - type: Transform - - uid: 3826 - components: - - pos: -44.5,-1.5 - parent: 1 - type: Transform - - uid: 3827 - components: - - pos: -44.5,-0.5 - parent: 1 - type: Transform - - uid: 3828 - components: - - pos: -44.5,0.5 - parent: 1 - type: Transform - - uid: 3829 - components: - - pos: -44.5,1.5 - parent: 1 - type: Transform - - uid: 3830 - components: - - pos: -45.5,1.5 - parent: 1 - type: Transform - - uid: 3831 - components: - - pos: -39.5,-6.5 - parent: 1 - type: Transform - - uid: 3834 - components: - - pos: -39.5,-9.5 - parent: 1 - type: Transform - - uid: 3836 - components: - - pos: -39.5,-11.5 - parent: 1 - type: Transform - - uid: 3838 - components: - - pos: -37.5,-6.5 - parent: 1 - type: Transform - - uid: 3839 - components: - - pos: -37.5,-7.5 - parent: 1 - type: Transform - - uid: 3845 - components: - - pos: -32.5,-3.5 - parent: 1 - type: Transform - - uid: 3847 - components: - - pos: -32.5,-12.5 - parent: 1 - type: Transform - - uid: 3848 - components: - - pos: -32.5,-11.5 - parent: 1 - type: Transform - - uid: 3849 - components: - - pos: -32.5,-10.5 - parent: 1 - type: Transform - - uid: 3850 - components: - - pos: -34.5,-12.5 - parent: 1 - type: Transform - - uid: 3852 - components: - - pos: -33.5,-9.5 - parent: 1 - type: Transform - - uid: 3853 - components: - - pos: -33.5,-10.5 - parent: 1 - type: Transform - - uid: 3855 - components: - - pos: -40.5,-9.5 - parent: 1 - type: Transform - - uid: 3856 - components: - - pos: -41.5,-9.5 - parent: 1 - type: Transform - - uid: 3857 - components: - - pos: -42.5,-9.5 - parent: 1 - type: Transform - - uid: 3858 - components: - - pos: -43.5,-9.5 - parent: 1 - type: Transform - - uid: 3859 - components: - - pos: -44.5,-9.5 - parent: 1 - type: Transform - - uid: 3860 - components: - - pos: -45.5,-9.5 - parent: 1 - type: Transform - - uid: 3861 - components: - - pos: -46.5,-9.5 - parent: 1 - type: Transform - - uid: 3862 - components: - - pos: -47.5,-9.5 - parent: 1 - type: Transform - - uid: 3863 - components: - - pos: -47.5,-2.5 - parent: 1 - type: Transform - - uid: 3864 - components: - - pos: -48.5,-2.5 - parent: 1 - type: Transform - - uid: 3866 - components: - - pos: -48.5,-1.5 - parent: 1 - type: Transform - - uid: 3867 - components: - - pos: -48.5,-0.5 - parent: 1 - type: Transform - - uid: 3868 - components: - - pos: -48.5,0.5 - parent: 1 - type: Transform - - uid: 3869 - components: - - pos: -48.5,1.5 - parent: 1 - type: Transform - - uid: 3870 - components: - - pos: -44.5,2.5 - parent: 1 - type: Transform - - uid: 3873 - components: - - pos: -27.5,-2.5 - parent: 1 - type: Transform - - uid: 3874 - components: - - pos: -26.5,-2.5 - parent: 1 - type: Transform - - uid: 3875 - components: - - pos: -26.5,-1.5 - parent: 1 - type: Transform - - uid: 3876 - components: - - pos: -26.5,-0.5 - parent: 1 - type: Transform - - uid: 3877 - components: - - pos: -26.5,0.5 - parent: 1 - type: Transform - - uid: 3878 - components: - - pos: -26.5,1.5 - parent: 1 - type: Transform - - uid: 3879 - components: - - pos: -26.5,2.5 - parent: 1 - type: Transform - - uid: 3880 - components: - - pos: -25.5,2.5 - parent: 1 - type: Transform - - uid: 3881 - components: - - pos: -25.5,0.5 - parent: 1 - type: Transform - - uid: 3882 - components: - - pos: -25.5,-1.5 - parent: 1 - type: Transform - - uid: 3883 - components: - - pos: -26.5,3.5 - parent: 1 - type: Transform - - uid: 3884 - components: - - pos: -26.5,-3.5 - parent: 1 - type: Transform - - uid: 3885 - components: - - pos: -26.5,-4.5 - parent: 1 - type: Transform - - uid: 3886 - components: - - pos: -26.5,-5.5 - parent: 1 - type: Transform - - uid: 3887 - components: - - pos: -26.5,-6.5 - parent: 1 - type: Transform - - uid: 3888 - components: - - pos: -26.5,-7.5 - parent: 1 - type: Transform - - uid: 3890 - components: - - pos: -25.5,-7.5 - parent: 1 - type: Transform - - uid: 3891 - components: - - pos: -24.5,-7.5 - parent: 1 - type: Transform - - uid: 3892 - components: - - pos: -23.5,-7.5 - parent: 1 - type: Transform - - uid: 3893 - components: - - pos: -22.5,-7.5 - parent: 1 - type: Transform - - uid: 3894 - components: - - pos: -21.5,-7.5 - parent: 1 - type: Transform - - uid: 3895 - components: - - pos: -20.5,-7.5 - parent: 1 - type: Transform - - uid: 3896 - components: - - pos: -20.5,-8.5 - parent: 1 - type: Transform - - uid: 3897 - components: - - pos: -20.5,-9.5 - parent: 1 - type: Transform - - uid: 3898 - components: - - pos: -20.5,-10.5 - parent: 1 - type: Transform - - uid: 3899 - components: - - pos: -20.5,-11.5 - parent: 1 - type: Transform - - uid: 3900 - components: - - pos: -20.5,-12.5 - parent: 1 - type: Transform - - uid: 3901 - components: - - pos: -24.5,-8.5 - parent: 1 - type: Transform - - uid: 3902 - components: - - pos: -24.5,-9.5 - parent: 1 - type: Transform - - uid: 4098 - components: - - pos: -21.5,-6.5 - parent: 1 - type: Transform - - uid: 4254 - components: - - pos: -22.5,29.5 - parent: 1 - type: Transform - - uid: 4255 - components: - - pos: -21.5,29.5 - parent: 1 - type: Transform - - uid: 4256 - components: - - pos: -20.5,29.5 - parent: 1 - type: Transform - - uid: 4342 - components: - - pos: -41.5,12.5 - parent: 1 - type: Transform - - uid: 4343 - components: - - pos: -41.5,13.5 - parent: 1 - type: Transform - - uid: 4344 - components: - - pos: -41.5,14.5 - parent: 1 - type: Transform - - uid: 4345 - components: - - pos: -41.5,11.5 - parent: 1 - type: Transform - - uid: 4346 - components: - - pos: -41.5,10.5 - parent: 1 - type: Transform - - uid: 4347 - components: - - pos: -41.5,9.5 - parent: 1 - type: Transform - - uid: 4348 - components: - - pos: -41.5,8.5 - parent: 1 - type: Transform - - uid: 4424 - components: - - pos: -41.5,7.5 - parent: 1 - type: Transform - - uid: 4425 - components: - - pos: -41.5,6.5 - parent: 1 - type: Transform - - uid: 4426 - components: - - pos: -41.5,5.5 - parent: 1 - type: Transform - - uid: 4427 - components: - - pos: -42.5,5.5 - parent: 1 - type: Transform - - uid: 4428 - components: - - pos: -43.5,5.5 - parent: 1 - type: Transform - - uid: 4429 - components: - - pos: -44.5,5.5 - parent: 1 - type: Transform - - uid: 4434 - components: - - pos: -50.5,7.5 - parent: 1 - type: Transform - - uid: 4435 - components: - - pos: -42.5,14.5 - parent: 1 - type: Transform - - uid: 4436 - components: - - pos: -43.5,14.5 - parent: 1 - type: Transform - - uid: 4437 - components: - - pos: -44.5,14.5 - parent: 1 - type: Transform - - uid: 4438 - components: - - pos: -45.5,14.5 - parent: 1 - type: Transform - - uid: 4439 - components: - - pos: -46.5,14.5 - parent: 1 - type: Transform - - uid: 4440 - components: - - pos: -47.5,14.5 - parent: 1 - type: Transform - - uid: 4441 - components: - - pos: -48.5,14.5 - parent: 1 - type: Transform - - uid: 4442 - components: - - pos: -49.5,14.5 - parent: 1 - type: Transform - - uid: 4443 - components: - - pos: -40.5,20.5 - parent: 1 - type: Transform - - uid: 4444 - components: - - pos: -40.5,21.5 - parent: 1 - type: Transform - - uid: 4445 - components: - - pos: -41.5,21.5 - parent: 1 - type: Transform - - uid: 4446 - components: - - pos: -42.5,21.5 - parent: 1 - type: Transform - - uid: 4447 - components: - - pos: -43.5,21.5 - parent: 1 - type: Transform - - uid: 4448 - components: - - pos: -44.5,21.5 - parent: 1 - type: Transform - - uid: 4449 - components: - - pos: -45.5,21.5 - parent: 1 - type: Transform - - uid: 4450 - components: - - pos: -46.5,21.5 - parent: 1 - type: Transform - - uid: 4451 - components: - - pos: -47.5,21.5 - parent: 1 - type: Transform - - uid: 4452 - components: - - pos: -48.5,21.5 - parent: 1 - type: Transform - - uid: 4453 - components: - - pos: -49.5,21.5 - parent: 1 - type: Transform - - uid: 4454 - components: - - pos: -44.5,22.5 - parent: 1 - type: Transform - - uid: 4455 - components: - - pos: -44.5,23.5 - parent: 1 - type: Transform - - uid: 4456 - components: - - pos: -44.5,24.5 - parent: 1 - type: Transform - - uid: 4457 - components: - - pos: -44.5,25.5 - parent: 1 - type: Transform - - uid: 4458 - components: - - pos: -44.5,26.5 - parent: 1 - type: Transform - - uid: 4459 - components: - - pos: -44.5,27.5 - parent: 1 - type: Transform - - uid: 4460 - components: - - pos: -39.5,21.5 - parent: 1 - type: Transform - - uid: 4461 - components: - - pos: -38.5,21.5 - parent: 1 - type: Transform - - uid: 4462 - components: - - pos: -37.5,21.5 - parent: 1 - type: Transform - - uid: 4463 - components: - - pos: -37.5,20.5 - parent: 1 - type: Transform - - uid: 4464 - components: - - pos: -37.5,19.5 - parent: 1 - type: Transform - - uid: 4465 - components: - - pos: -37.5,18.5 - parent: 1 - type: Transform - - uid: 4466 - components: - - pos: -37.5,17.5 - parent: 1 - type: Transform - - uid: 4467 - components: - - pos: -37.5,16.5 - parent: 1 - type: Transform - - uid: 4468 - components: - - pos: -37.5,15.5 - parent: 1 - type: Transform - - uid: 4469 - components: - - pos: -37.5,14.5 - parent: 1 - type: Transform - - uid: 4470 - components: - - pos: -37.5,13.5 - parent: 1 - type: Transform - - uid: 4471 - components: - - pos: -37.5,12.5 - parent: 1 - type: Transform - - uid: 4472 - components: - - pos: -37.5,11.5 - parent: 1 - type: Transform - - uid: 4473 - components: - - pos: -37.5,10.5 - parent: 1 - type: Transform - - uid: 4474 - components: - - pos: -37.5,9.5 - parent: 1 - type: Transform - - uid: 4475 - components: - - pos: -37.5,8.5 - parent: 1 - type: Transform - - uid: 4476 - components: - - pos: -37.5,22.5 - parent: 1 - type: Transform - - uid: 4477 - components: - - pos: -37.5,23.5 - parent: 1 - type: Transform - - uid: 4478 - components: - - pos: -37.5,24.5 - parent: 1 - type: Transform - - uid: 4479 - components: - - pos: -37.5,25.5 - parent: 1 - type: Transform - - uid: 4480 - components: - - pos: -37.5,26.5 - parent: 1 - type: Transform - - uid: 4481 - components: - - pos: -37.5,27.5 - parent: 1 - type: Transform - - uid: 4482 - components: - - pos: -37.5,28.5 - parent: 1 - type: Transform - - uid: 4483 - components: - - pos: -37.5,29.5 - parent: 1 - type: Transform - - uid: 4484 - components: - - pos: -37.5,30.5 - parent: 1 - type: Transform - - uid: 4485 - components: - - pos: -42.5,20.5 - parent: 1 - type: Transform - - uid: 4486 - components: - - pos: -42.5,19.5 - parent: 1 - type: Transform - - uid: 4487 - components: - - pos: -42.5,18.5 - parent: 1 - type: Transform - - uid: 4488 - components: - - pos: -45.5,20.5 - parent: 1 - type: Transform - - uid: 4489 - components: - - pos: -45.5,19.5 - parent: 1 - type: Transform - - uid: 4490 - components: - - pos: -45.5,18.5 - parent: 1 - type: Transform - - uid: 4491 - components: - - pos: -48.5,20.5 - parent: 1 - type: Transform - - uid: 4492 - components: - - pos: -48.5,19.5 - parent: 1 - type: Transform - - uid: 4493 - components: - - pos: -48.5,18.5 - parent: 1 - type: Transform - - uid: 4524 - components: - - pos: -56.5,-7.5 - parent: 1 - type: Transform - - uid: 4543 - components: - - pos: -50.5,8.5 - parent: 1 - type: Transform - - uid: 4547 - components: - - pos: -47.5,11.5 - parent: 1 - type: Transform - - uid: 4548 - components: - - pos: -50.5,11.5 - parent: 1 - type: Transform - - uid: 4593 - components: - - pos: 21.5,37.5 - parent: 1 - type: Transform - - uid: 4599 - components: - - pos: -50.5,9.5 - parent: 1 - type: Transform - - uid: 4601 - components: - - pos: -49.5,9.5 - parent: 1 - type: Transform - - uid: 4608 - components: - - pos: -57.5,-8.5 - parent: 1 - type: Transform - - uid: 4612 - components: - - pos: -46.5,27.5 - parent: 1 - type: Transform - - uid: 4613 - components: - - pos: -47.5,27.5 - parent: 1 - type: Transform - - uid: 4614 - components: - - pos: -48.5,27.5 - parent: 1 - type: Transform - - uid: 4615 - components: - - pos: -49.5,27.5 - parent: 1 - type: Transform - - uid: 4616 - components: - - pos: -50.5,27.5 - parent: 1 - type: Transform - - uid: 4617 - components: - - pos: -51.5,27.5 - parent: 1 - type: Transform - - uid: 4618 - components: - - pos: -52.5,27.5 - parent: 1 - type: Transform - - uid: 4619 - components: - - pos: -53.5,27.5 - parent: 1 - type: Transform - - uid: 4620 - components: - - pos: -48.5,29.5 - parent: 1 - type: Transform - - uid: 4621 - components: - - pos: -48.5,28.5 - parent: 1 - type: Transform - - uid: 4622 - components: - - pos: -48.5,30.5 - parent: 1 - type: Transform - - uid: 4623 - components: - - pos: -48.5,31.5 - parent: 1 - type: Transform - - uid: 4624 - components: - - pos: -48.5,32.5 - parent: 1 - type: Transform - - uid: 4625 - components: - - pos: -44.5,28.5 - parent: 1 - type: Transform - - uid: 4626 - components: - - pos: -44.5,29.5 - parent: 1 - type: Transform - - uid: 4627 - components: - - pos: -44.5,30.5 - parent: 1 - type: Transform - - uid: 4628 - components: - - pos: -44.5,31.5 - parent: 1 - type: Transform - - uid: 4629 - components: - - pos: -44.5,32.5 - parent: 1 - type: Transform - - uid: 4630 - components: - - pos: -37.5,31.5 - parent: 1 - type: Transform - - uid: 4631 - components: - - pos: -37.5,32.5 - parent: 1 - type: Transform - - uid: 4632 - components: - - pos: -38.5,32.5 - parent: 1 - type: Transform - - uid: 4633 - components: - - pos: -39.5,32.5 - parent: 1 - type: Transform - - uid: 4634 - components: - - pos: -40.5,32.5 - parent: 1 - type: Transform - - uid: 4635 - components: - - pos: -43.5,32.5 - parent: 1 - type: Transform - - uid: 4636 - components: - - pos: -42.5,32.5 - parent: 1 - type: Transform - - uid: 4637 - components: - - pos: -29.5,31.5 - parent: 1 - type: Transform - - uid: 4638 - components: - - pos: -29.5,32.5 - parent: 1 - type: Transform - - uid: 4639 - components: - - pos: -47.5,32.5 - parent: 1 - type: Transform - - uid: 4640 - components: - - pos: -30.5,32.5 - parent: 1 - type: Transform - - uid: 4641 - components: - - pos: -31.5,32.5 - parent: 1 - type: Transform - - uid: 4642 - components: - - pos: -32.5,32.5 - parent: 1 - type: Transform - - uid: 4643 - components: - - pos: -33.5,32.5 - parent: 1 - type: Transform - - uid: 4644 - components: - - pos: -34.5,32.5 - parent: 1 - type: Transform - - uid: 4645 - components: - - pos: -35.5,32.5 - parent: 1 - type: Transform - - uid: 4646 - components: - - pos: -28.5,32.5 - parent: 1 - type: Transform - - uid: 4647 - components: - - pos: -27.5,32.5 - parent: 1 - type: Transform - - uid: 4648 - components: - - pos: -26.5,32.5 - parent: 1 - type: Transform - - uid: 4649 - components: - - pos: -25.5,32.5 - parent: 1 - type: Transform - - uid: 4650 - components: - - pos: -46.5,32.5 - parent: 1 - type: Transform - - uid: 4651 - components: - - pos: -49.5,32.5 - parent: 1 - type: Transform - - uid: 4652 - components: - - pos: -50.5,32.5 - parent: 1 - type: Transform - - uid: 4653 - components: - - pos: -51.5,32.5 - parent: 1 - type: Transform - - uid: 4654 - components: - - pos: -52.5,32.5 - parent: 1 - type: Transform - - uid: 4655 - components: - - pos: -53.5,32.5 - parent: 1 - type: Transform - - uid: 4656 - components: - - pos: -54.5,32.5 - parent: 1 - type: Transform - - uid: 4657 - components: - - pos: -55.5,32.5 - parent: 1 - type: Transform - - uid: 4658 - components: - - pos: -52.5,14.5 - parent: 1 - type: Transform - - uid: 4659 - components: - - pos: -53.5,14.5 - parent: 1 - type: Transform - - uid: 4660 - components: - - pos: -54.5,14.5 - parent: 1 - type: Transform - - uid: 4661 - components: - - pos: -55.5,14.5 - parent: 1 - type: Transform - - uid: 4662 - components: - - pos: -56.5,14.5 - parent: 1 - type: Transform - - uid: 4663 - components: - - pos: -57.5,14.5 - parent: 1 - type: Transform - - uid: 4664 - components: - - pos: -57.5,15.5 - parent: 1 - type: Transform - - uid: 4665 - components: - - pos: -57.5,15.5 - parent: 1 - type: Transform - - uid: 4666 - components: - - pos: -57.5,16.5 - parent: 1 - type: Transform - - uid: 4667 - components: - - pos: -57.5,17.5 - parent: 1 - type: Transform - - uid: 4668 - components: - - pos: -57.5,18.5 - parent: 1 - type: Transform - - uid: 4669 - components: - - pos: -57.5,19.5 - parent: 1 - type: Transform - - uid: 4670 - components: - - pos: -57.5,20.5 - parent: 1 - type: Transform - - uid: 4671 - components: - - pos: -57.5,21.5 - parent: 1 - type: Transform - - uid: 4672 - components: - - pos: -57.5,22.5 - parent: 1 - type: Transform - - uid: 4673 - components: - - pos: -57.5,23.5 - parent: 1 - type: Transform - - uid: 4674 - components: - - pos: -57.5,24.5 - parent: 1 - type: Transform - - uid: 4675 - components: - - pos: -57.5,25.5 - parent: 1 - type: Transform - - uid: 4676 - components: - - pos: -56.5,32.5 - parent: 1 - type: Transform - - uid: 4677 - components: - - pos: -57.5,32.5 - parent: 1 - type: Transform - - uid: 4678 - components: - - pos: -57.5,31.5 - parent: 1 - type: Transform - - uid: 4679 - components: - - pos: -57.5,30.5 - parent: 1 - type: Transform - - uid: 4680 - components: - - pos: -57.5,29.5 - parent: 1 - type: Transform - - uid: 4681 - components: - - pos: -51.5,14.5 - parent: 1 - type: Transform - - uid: 4682 - components: - - pos: -53.5,15.5 - parent: 1 - type: Transform - - uid: 4683 - components: - - pos: -53.5,16.5 - parent: 1 - type: Transform - - uid: 4684 - components: - - pos: -53.5,17.5 - parent: 1 - type: Transform - - uid: 4685 - components: - - pos: -53.5,18.5 - parent: 1 - type: Transform - - uid: 4686 - components: - - pos: -53.5,19.5 - parent: 1 - type: Transform - - uid: 4687 - components: - - pos: -53.5,20.5 - parent: 1 - type: Transform - - uid: 4688 - components: - - pos: -57.5,13.5 - parent: 1 - type: Transform - - uid: 4689 - components: - - pos: -57.5,12.5 - parent: 1 - type: Transform - - uid: 4690 - components: - - pos: -57.5,11.5 - parent: 1 - type: Transform - - uid: 4691 - components: - - pos: -57.5,10.5 - parent: 1 - type: Transform - - uid: 4692 - components: - - pos: -57.5,9.5 - parent: 1 - type: Transform - - uid: 4693 - components: - - pos: -57.5,8.5 - parent: 1 - type: Transform - - uid: 4700 - components: - - pos: -45.5,9.5 - parent: 1 - type: Transform - - uid: 4701 - components: - - pos: -46.5,9.5 - parent: 1 - type: Transform - - uid: 4702 - components: - - pos: -47.5,9.5 - parent: 1 - type: Transform - - uid: 4704 - components: - - pos: -48.5,9.5 - parent: 1 - type: Transform - - uid: 4713 - components: - - pos: 20.5,40.5 - parent: 1 - type: Transform - - uid: 4714 - components: - - pos: 20.5,43.5 - parent: 1 - type: Transform - - uid: 4715 - components: - - pos: 20.5,42.5 - parent: 1 - type: Transform - - uid: 4716 - components: - - pos: -47.5,5.5 - parent: 1 - type: Transform - - uid: 4717 - components: - - pos: -48.5,5.5 - parent: 1 - type: Transform - - uid: 4718 - components: - - pos: -46.5,5.5 - parent: 1 - type: Transform - - uid: 4719 - components: - - pos: -49.5,5.5 - parent: 1 - type: Transform - - uid: 4720 - components: - - pos: -50.5,5.5 - parent: 1 - type: Transform - - uid: 4721 - components: - - pos: -51.5,5.5 - parent: 1 - type: Transform - - uid: 4722 - components: - - pos: -52.5,5.5 - parent: 1 - type: Transform - - uid: 4723 - components: - - pos: -53.5,5.5 - parent: 1 - type: Transform - - uid: 4724 - components: - - pos: -54.5,5.5 - parent: 1 - type: Transform - - uid: 4725 - components: - - pos: -57.5,4.5 - parent: 1 - type: Transform - - uid: 4726 - components: - - pos: -57.5,5.5 - parent: 1 - type: Transform - - uid: 4727 - components: - - pos: -58.5,5.5 - parent: 1 - type: Transform - - uid: 4728 - components: - - pos: 20.5,41.5 - parent: 1 - type: Transform - - uid: 4731 - components: - - pos: 21.5,38.5 - parent: 1 - type: Transform - - uid: 4742 - components: - - pos: -73.5,-14.5 - parent: 1 - type: Transform - - uid: 4759 - components: - - pos: -66.5,-9.5 - parent: 1 - type: Transform - - uid: 4783 - components: - - pos: -65.5,-13.5 - parent: 1 - type: Transform - - uid: 4785 - components: - - pos: -73.5,-11.5 - parent: 1 - type: Transform - - uid: 4786 - components: - - pos: -62.5,-10.5 - parent: 1 - type: Transform - - uid: 4787 - components: - - pos: -63.5,-10.5 - parent: 1 - type: Transform - - uid: 4788 - components: - - pos: -73.5,4.5 - parent: 1 - type: Transform - - uid: 4789 - components: - - pos: -73.5,-12.5 - parent: 1 - type: Transform - - uid: 4790 - components: - - pos: -66.5,4.5 - parent: 1 - type: Transform - - uid: 4791 - components: - - pos: -66.5,-10.5 - parent: 1 - type: Transform - - uid: 4794 - components: - - pos: -65.5,-11.5 - parent: 1 - type: Transform - - uid: 4795 - components: - - pos: -65.5,-12.5 - parent: 1 - type: Transform - - uid: 4796 - components: - - pos: -73.5,-9.5 - parent: 1 - type: Transform - - uid: 4797 - components: - - pos: -67.5,-10.5 - parent: 1 - type: Transform - - uid: 4798 - components: - - pos: -68.5,-10.5 - parent: 1 - type: Transform - - uid: 4806 - components: - - pos: -73.5,-13.5 - parent: 1 - type: Transform - - uid: 4811 - components: - - pos: -75.5,-10.5 - parent: 1 - type: Transform - - uid: 4812 - components: - - pos: -76.5,-10.5 - parent: 1 - type: Transform - - uid: 4813 - components: - - pos: -73.5,-10.5 - parent: 1 - type: Transform - - uid: 4814 - components: - - pos: -74.5,-10.5 - parent: 1 - type: Transform - - uid: 4815 - components: - - pos: -77.5,-10.5 - parent: 1 - type: Transform - - uid: 4842 - components: - - pos: -69.5,-10.5 - parent: 1 - type: Transform - - uid: 4869 - components: - - pos: -71.5,-10.5 - parent: 1 - type: Transform - - uid: 4870 - components: - - pos: -64.5,-10.5 - parent: 1 - type: Transform - - uid: 4872 - components: - - pos: -70.5,-10.5 - parent: 1 - type: Transform - - uid: 4874 - components: - - pos: -65.5,-10.5 - parent: 1 - type: Transform - - uid: 4875 - components: - - pos: -72.5,-10.5 - parent: 1 - type: Transform - - uid: 4879 - components: - - pos: -57.5,-10.5 - parent: 1 - type: Transform - - uid: 4880 - components: - - pos: -58.5,-10.5 - parent: 1 - type: Transform - - uid: 4881 - components: - - pos: -59.5,-10.5 - parent: 1 - type: Transform - - uid: 4904 - components: - - pos: -65.5,-14.5 - parent: 1 - type: Transform - - uid: 4958 - components: - - pos: -60.5,-10.5 - parent: 1 - type: Transform - - uid: 5102 - components: - - pos: -55.5,-7.5 - parent: 1 - type: Transform - - uid: 5106 - components: - - pos: -57.5,-9.5 - parent: 1 - type: Transform - - uid: 5127 - components: - - pos: -57.5,-7.5 - parent: 1 - type: Transform - - uid: 5128 - components: - - pos: -57.5,-6.5 - parent: 1 - type: Transform - - uid: 5129 - components: - - pos: -57.5,-5.5 - parent: 1 - type: Transform - - uid: 5130 - components: - - pos: -57.5,-4.5 - parent: 1 - type: Transform - - uid: 5131 - components: - - pos: -57.5,-3.5 - parent: 1 - type: Transform - - uid: 5132 - components: - - pos: -57.5,-2.5 - parent: 1 - type: Transform - - uid: 5133 - components: - - pos: -57.5,-1.5 - parent: 1 - type: Transform - - uid: 5134 - components: - - pos: -57.5,-0.5 - parent: 1 - type: Transform - - uid: 5135 - components: - - pos: -57.5,0.5 - parent: 1 - type: Transform - - uid: 5136 - components: - - pos: -57.5,1.5 - parent: 1 - type: Transform - - uid: 5137 - components: - - pos: -57.5,2.5 - parent: 1 - type: Transform - - uid: 5138 - components: - - pos: -57.5,3.5 - parent: 1 - type: Transform - - uid: 5139 - components: - - pos: -59.5,5.5 - parent: 1 - type: Transform - - uid: 5140 - components: - - pos: -60.5,5.5 - parent: 1 - type: Transform - - uid: 5141 - components: - - pos: -61.5,5.5 - parent: 1 - type: Transform - - uid: 5142 - components: - - pos: -62.5,5.5 - parent: 1 - type: Transform - - uid: 5143 - components: - - pos: -63.5,5.5 - parent: 1 - type: Transform - - uid: 5144 - components: - - pos: -64.5,5.5 - parent: 1 - type: Transform - - uid: 5145 - components: - - pos: -65.5,5.5 - parent: 1 - type: Transform - - uid: 5146 - components: - - pos: -66.5,5.5 - parent: 1 - type: Transform - - uid: 5147 - components: - - pos: -67.5,5.5 - parent: 1 - type: Transform - - uid: 5148 - components: - - pos: -68.5,5.5 - parent: 1 - type: Transform - - uid: 5149 - components: - - pos: -69.5,5.5 - parent: 1 - type: Transform - - uid: 5150 - components: - - pos: -70.5,5.5 - parent: 1 - type: Transform - - uid: 5151 - components: - - pos: -71.5,5.5 - parent: 1 - type: Transform - - uid: 5152 - components: - - pos: -72.5,5.5 - parent: 1 - type: Transform - - uid: 5153 - components: - - pos: -73.5,5.5 - parent: 1 - type: Transform - - uid: 5154 - components: - - pos: -74.5,5.5 - parent: 1 - type: Transform - - uid: 5155 - components: - - pos: -54.5,-7.5 - parent: 1 - type: Transform - - uid: 5156 - components: - - pos: -53.5,-7.5 - parent: 1 - type: Transform - - uid: 5157 - components: - - pos: -52.5,-7.5 - parent: 1 - type: Transform - - uid: 5158 - components: - - pos: -52.5,-6.5 - parent: 1 - type: Transform - - uid: 5159 - components: - - pos: -52.5,-5.5 - parent: 1 - type: Transform - - uid: 5160 - components: - - pos: -52.5,-4.5 - parent: 1 - type: Transform - - uid: 5161 - components: - - pos: -52.5,-3.5 - parent: 1 - type: Transform - - uid: 5162 - components: - - pos: -52.5,-2.5 - parent: 1 - type: Transform - - uid: 5163 - components: - - pos: -52.5,-1.5 - parent: 1 - type: Transform - - uid: 5195 - components: - - pos: 16.5,38.5 - parent: 1 - type: Transform - - uid: 5205 - components: - - pos: -50.5,26.5 - parent: 1 - type: Transform - - uid: 5206 - components: - - pos: -50.5,25.5 - parent: 1 - type: Transform - - uid: 5207 - components: - - pos: -50.5,24.5 - parent: 1 - type: Transform - - uid: 5311 - components: - - pos: 16.5,40.5 - parent: 1 - type: Transform - - uid: 5312 - components: - - pos: 19.5,39.5 - parent: 1 - type: Transform - - uid: 5313 - components: - - pos: 16.5,39.5 - parent: 1 - type: Transform - - uid: 5314 - components: - - pos: 16.5,41.5 - parent: 1 - type: Transform - - uid: 5322 - components: - - pos: 24.5,36.5 - parent: 1 - type: Transform - - uid: 5378 - components: - - pos: -35.5,-6.5 - parent: 1 - type: Transform - - uid: 5432 - components: - - pos: -21.5,-5.5 - parent: 1 - type: Transform - - uid: 5448 - components: - - pos: -21.5,-4.5 - parent: 1 - type: Transform - - uid: 5449 - components: - - pos: -21.5,-3.5 - parent: 1 - type: Transform - - uid: 5450 - components: - - pos: -21.5,-2.5 - parent: 1 - type: Transform - - uid: 5634 - components: - - pos: -54.5,9.5 - parent: 1 - type: Transform - - uid: 5661 - components: - - pos: -16.5,23.5 - parent: 1 - type: Transform - - uid: 5700 - components: - - pos: -30.5,23.5 - parent: 1 - type: Transform - - uid: 5701 - components: - - pos: -33.5,11.5 - parent: 1 - type: Transform - - uid: 5702 - components: - - pos: -33.5,12.5 - parent: 1 - type: Transform - - uid: 5703 - components: - - pos: -33.5,13.5 - parent: 1 - type: Transform - - uid: 5704 - components: - - pos: -29.5,15.5 - parent: 1 - type: Transform - - uid: 5705 - components: - - pos: -30.5,15.5 - parent: 1 - type: Transform - - uid: 5773 - components: - - pos: -53.5,48.5 - parent: 1 - type: Transform - - uid: 5805 - components: - - pos: 15.5,42.5 - parent: 1 - type: Transform - - uid: 5806 - components: - - pos: 15.5,41.5 - parent: 1 - type: Transform - - uid: 6199 - components: - - pos: 16.5,44.5 - parent: 1 - type: Transform - - uid: 6203 - components: - - pos: 13.5,51.5 - parent: 1 - type: Transform - - uid: 6205 - components: - - pos: 15.5,45.5 - parent: 1 - type: Transform - - uid: 6206 - components: - - pos: 15.5,44.5 - parent: 1 - type: Transform - - uid: 6207 - components: - - pos: 13.5,45.5 - parent: 1 - type: Transform - - uid: 6208 - components: - - pos: 12.5,45.5 - parent: 1 - type: Transform - - uid: 6209 - components: - - pos: 11.5,45.5 - parent: 1 - type: Transform - - uid: 6210 - components: - - pos: 10.5,45.5 - parent: 1 - type: Transform - - uid: 6211 - components: - - pos: 15.5,43.5 - parent: 1 - type: Transform - - uid: 6212 - components: - - pos: 8.5,48.5 - parent: 1 - type: Transform - - uid: 6214 - components: - - pos: 7.5,48.5 - parent: 1 - type: Transform - - uid: 6219 - components: - - pos: 9.5,48.5 - parent: 1 - type: Transform - - uid: 6220 - components: - - pos: 7.5,49.5 - parent: 1 - type: Transform - - uid: 6221 - components: - - pos: 7.5,47.5 - parent: 1 - type: Transform - - uid: 6222 - components: - - pos: 6.5,47.5 - parent: 1 - type: Transform - - uid: 6223 - components: - - pos: 7.5,49.5 - parent: 1 - type: Transform - - uid: 6224 - components: - - pos: 7.5,50.5 - parent: 1 - type: Transform - - uid: 6225 - components: - - pos: 7.5,51.5 - parent: 1 - type: Transform - - uid: 6227 - components: - - pos: 5.5,47.5 - parent: 1 - type: Transform - - uid: 6228 - components: - - pos: 4.5,47.5 - parent: 1 - type: Transform - - uid: 6229 - components: - - pos: 3.5,47.5 - parent: 1 - type: Transform - - uid: 6230 - components: - - pos: 3.5,48.5 - parent: 1 - type: Transform - - uid: 6231 - components: - - pos: 3.5,49.5 - parent: 1 - type: Transform - - uid: 6232 - components: - - pos: 3.5,50.5 - parent: 1 - type: Transform - - uid: 6233 - components: - - pos: 3.5,51.5 - parent: 1 - type: Transform - - uid: 6234 - components: - - pos: 2.5,47.5 - parent: 1 - type: Transform - - uid: 6235 - components: - - pos: 1.5,47.5 - parent: 1 - type: Transform - - uid: 6236 - components: - - pos: 0.5,47.5 - parent: 1 - type: Transform - - uid: 6237 - components: - - pos: -0.5,47.5 - parent: 1 - type: Transform - - uid: 6238 - components: - - pos: -0.5,48.5 - parent: 1 - type: Transform - - uid: 6239 - components: - - pos: -0.5,49.5 - parent: 1 - type: Transform - - uid: 6240 - components: - - pos: -0.5,50.5 - parent: 1 - type: Transform - - uid: 6241 - components: - - pos: -0.5,51.5 - parent: 1 - type: Transform - - uid: 6242 - components: - - pos: 16.5,49.5 - parent: 1 - type: Transform - - uid: 6246 - components: - - pos: 14.5,40.5 - parent: 1 - type: Transform - - uid: 6247 - components: - - pos: 13.5,40.5 - parent: 1 - type: Transform - - uid: 6248 - components: - - pos: 12.5,40.5 - parent: 1 - type: Transform - - uid: 6249 - components: - - pos: 11.5,40.5 - parent: 1 - type: Transform - - uid: 6250 - components: - - pos: 10.5,40.5 - parent: 1 - type: Transform - - uid: 6251 - components: - - pos: 15.5,40.5 - parent: 1 - type: Transform - - uid: 6252 - components: - - pos: 15.5,39.5 - parent: 1 - type: Transform - - uid: 6258 - components: - - pos: -52.5,9.5 - parent: 1 - type: Transform - - uid: 6260 - components: - - pos: -50.5,10.5 - parent: 1 - type: Transform - - uid: 6261 - components: - - pos: -47.5,10.5 - parent: 1 - type: Transform - - uid: 6262 - components: - - pos: -53.5,9.5 - parent: 1 - type: Transform - - uid: 6263 - components: - - pos: -51.5,9.5 - parent: 1 - type: Transform - - uid: 6271 - components: - - pos: 15.5,35.5 - parent: 1 - type: Transform - - uid: 6273 - components: - - pos: 17.5,35.5 - parent: 1 - type: Transform - - uid: 6274 - components: - - pos: 18.5,35.5 - parent: 1 - type: Transform - - uid: 6276 - components: - - pos: 20.5,35.5 - parent: 1 - type: Transform - - uid: 6278 - components: - - pos: 23.5,36.5 - parent: 1 - type: Transform - - uid: 6279 - components: - - pos: 23.5,35.5 - parent: 1 - type: Transform - - uid: 6280 - components: - - pos: 9.5,40.5 - parent: 1 - type: Transform - - uid: 6281 - components: - - pos: 8.5,40.5 - parent: 1 - type: Transform - - uid: 6282 - components: - - pos: -1.5,47.5 - parent: 1 - type: Transform - - uid: 6283 - components: - - pos: -2.5,47.5 - parent: 1 - type: Transform - - uid: 6284 - components: - - pos: -2.5,46.5 - parent: 1 - type: Transform - - uid: 6285 - components: - - pos: -2.5,45.5 - parent: 1 - type: Transform - - uid: 6286 - components: - - pos: -2.5,44.5 - parent: 1 - type: Transform - - uid: 6287 - components: - - pos: -2.5,43.5 - parent: 1 - type: Transform - - uid: 6288 - components: - - pos: -2.5,42.5 - parent: 1 - type: Transform - - uid: 6289 - components: - - pos: -3.5,38.5 - parent: 1 - type: Transform - - uid: 6290 - components: - - pos: -3.5,39.5 - parent: 1 - type: Transform - - uid: 6291 - components: - - pos: -3.5,40.5 - parent: 1 - type: Transform - - uid: 6293 - components: - - pos: -3.5,42.5 - parent: 1 - type: Transform - - uid: 6294 - components: - - pos: -3.5,37.5 - parent: 1 - type: Transform - - uid: 6295 - components: - - pos: -4.5,37.5 - parent: 1 - type: Transform - - uid: 6296 - components: - - pos: -5.5,37.5 - parent: 1 - type: Transform - - uid: 6297 - components: - - pos: -6.5,37.5 - parent: 1 - type: Transform - - uid: 6298 - components: - - pos: -7.5,37.5 - parent: 1 - type: Transform - - uid: 6299 - components: - - pos: -8.5,37.5 - parent: 1 - type: Transform - - uid: 6300 - components: - - pos: -9.5,37.5 - parent: 1 - type: Transform - - uid: 6301 - components: - - pos: -3.5,47.5 - parent: 1 - type: Transform - - uid: 6302 - components: - - pos: -4.5,47.5 - parent: 1 - type: Transform - - uid: 6315 - components: - - pos: 20.5,44.5 - parent: 1 - type: Transform - - uid: 6562 - components: - - pos: -4.5,57.5 - parent: 1 - type: Transform - - uid: 6563 - components: - - pos: -4.5,56.5 - parent: 1 - type: Transform - - uid: 6564 - components: - - pos: -4.5,55.5 - parent: 1 - type: Transform - - uid: 6565 - components: - - pos: -5.5,55.5 - parent: 1 - type: Transform - - uid: 6566 - components: - - pos: -6.5,55.5 - parent: 1 - type: Transform - - uid: 6567 - components: - - pos: -7.5,55.5 - parent: 1 - type: Transform - - uid: 6568 - components: - - pos: -8.5,55.5 - parent: 1 - type: Transform - - uid: 6569 - components: - - pos: -9.5,55.5 - parent: 1 - type: Transform - - uid: 6570 - components: - - pos: -10.5,55.5 - parent: 1 - type: Transform - - uid: 6571 - components: - - pos: -11.5,55.5 - parent: 1 - type: Transform - - uid: 6572 - components: - - pos: -12.5,55.5 - parent: 1 - type: Transform - - uid: 6573 - components: - - pos: -13.5,55.5 - parent: 1 - type: Transform - - uid: 6574 - components: - - pos: -14.5,55.5 - parent: 1 - type: Transform - - uid: 6575 - components: - - pos: -15.5,55.5 - parent: 1 - type: Transform - - uid: 6576 - components: - - pos: -16.5,55.5 - parent: 1 - type: Transform - - uid: 6577 - components: - - pos: -7.5,56.5 - parent: 1 - type: Transform - - uid: 6578 - components: - - pos: -7.5,57.5 - parent: 1 - type: Transform - - uid: 6579 - components: - - pos: -7.5,58.5 - parent: 1 - type: Transform - - uid: 6580 - components: - - pos: -7.5,59.5 - parent: 1 - type: Transform - - uid: 6581 - components: - - pos: -7.5,60.5 - parent: 1 - type: Transform - - uid: 6582 - components: - - pos: -16.5,54.5 - parent: 1 - type: Transform - - uid: 6583 - components: - - pos: -17.5,54.5 - parent: 1 - type: Transform - - uid: 6584 - components: - - pos: -18.5,54.5 - parent: 1 - type: Transform - - uid: 6585 - components: - - pos: -19.5,54.5 - parent: 1 - type: Transform - - uid: 6586 - components: - - pos: -20.5,54.5 - parent: 1 - type: Transform - - uid: 6587 - components: - - pos: -21.5,54.5 - parent: 1 - type: Transform - - uid: 6588 - components: - - pos: -22.5,54.5 - parent: 1 - type: Transform - - uid: 6589 - components: - - pos: -22.5,55.5 - parent: 1 - type: Transform - - uid: 6590 - components: - - pos: -15.5,56.5 - parent: 1 - type: Transform - - uid: 6591 - components: - - pos: -15.5,57.5 - parent: 1 - type: Transform - - uid: 6592 - components: - - pos: -15.5,58.5 - parent: 1 - type: Transform - - uid: 6593 - components: - - pos: -15.5,59.5 - parent: 1 - type: Transform - - uid: 6594 - components: - - pos: -15.5,60.5 - parent: 1 - type: Transform - - uid: 6595 - components: - - pos: -15.5,61.5 - parent: 1 - type: Transform - - uid: 6596 - components: - - pos: -15.5,62.5 - parent: 1 - type: Transform - - uid: 6597 - components: - - pos: -15.5,63.5 - parent: 1 - type: Transform - - uid: 6598 - components: - - pos: -15.5,64.5 - parent: 1 - type: Transform - - uid: 6599 - components: - - pos: -15.5,65.5 - parent: 1 - type: Transform - - uid: 6600 - components: - - pos: -16.5,64.5 - parent: 1 - type: Transform - - uid: 6601 - components: - - pos: -17.5,64.5 - parent: 1 - type: Transform - - uid: 6602 - components: - - pos: -18.5,64.5 - parent: 1 - type: Transform - - uid: 6603 - components: - - pos: -19.5,64.5 - parent: 1 - type: Transform - - uid: 6604 - components: - - pos: -16.5,60.5 - parent: 1 - type: Transform - - uid: 6605 - components: - - pos: -17.5,60.5 - parent: 1 - type: Transform - - uid: 6606 - components: - - pos: -18.5,60.5 - parent: 1 - type: Transform - - uid: 6607 - components: - - pos: -19.5,60.5 - parent: 1 - type: Transform - - uid: 6608 - components: - - pos: -20.5,60.5 - parent: 1 - type: Transform - - uid: 6609 - components: - - pos: -14.5,60.5 - parent: 1 - type: Transform - - uid: 6610 - components: - - pos: -13.5,60.5 - parent: 1 - type: Transform - - uid: 6611 - components: - - pos: -12.5,60.5 - parent: 1 - type: Transform - - uid: 6612 - components: - - pos: -14.5,64.5 - parent: 1 - type: Transform - - uid: 6613 - components: - - pos: -13.5,64.5 - parent: 1 - type: Transform - - uid: 6614 - components: - - pos: -12.5,64.5 - parent: 1 - type: Transform - - uid: 6615 - components: - - pos: -20.5,64.5 - parent: 1 - type: Transform - - uid: 7284 - components: - - pos: -43.5,55.5 - parent: 1 - type: Transform - - uid: 7401 - components: - - pos: 14.5,45.5 - parent: 1 - type: Transform - - uid: 7492 - components: - - pos: -3.5,41.5 - parent: 1 - type: Transform - - uid: 7744 - components: - - pos: -53.5,85.5 - parent: 1 - type: Transform - - uid: 7745 - components: - - pos: -52.5,85.5 - parent: 1 - type: Transform - - uid: 7746 - components: - - pos: -51.5,85.5 - parent: 1 - type: Transform - - uid: 7747 - components: - - pos: -51.5,86.5 - parent: 1 - type: Transform - - uid: 7748 - components: - - pos: -51.5,87.5 - parent: 1 - type: Transform - - uid: 7749 - components: - - pos: -51.5,88.5 - parent: 1 - type: Transform - - uid: 7750 - components: - - pos: -51.5,89.5 - parent: 1 - type: Transform - - uid: 7751 - components: - - pos: -51.5,84.5 - parent: 1 - type: Transform - - uid: 7752 - components: - - pos: -51.5,83.5 - parent: 1 - type: Transform - - uid: 7753 - components: - - pos: -51.5,82.5 - parent: 1 - type: Transform - - uid: 7754 - components: - - pos: -52.5,82.5 - parent: 1 - type: Transform - - uid: 7755 - components: - - pos: -50.5,81.5 - parent: 1 - type: Transform - - uid: 7756 - components: - - pos: -50.5,82.5 - parent: 1 - type: Transform - - uid: 7757 - components: - - pos: -52.5,79.5 - parent: 1 - type: Transform - - uid: 7758 - components: - - pos: -52.5,78.5 - parent: 1 - type: Transform - - uid: 7759 - components: - - pos: -52.5,80.5 - parent: 1 - type: Transform - - uid: 7760 - components: - - pos: -52.5,81.5 - parent: 1 - type: Transform - - uid: 7761 - components: - - pos: -50.5,80.5 - parent: 1 - type: Transform - - uid: 7762 - components: - - pos: -50.5,79.5 - parent: 1 - type: Transform - - uid: 7763 - components: - - pos: -50.5,78.5 - parent: 1 - type: Transform - - uid: 7764 - components: - - pos: -53.5,79.5 - parent: 1 - type: Transform - - uid: 7765 - components: - - pos: -52.5,89.5 - parent: 1 - type: Transform - - uid: 7766 - components: - - pos: -53.5,89.5 - parent: 1 - type: Transform - - uid: 7767 - components: - - pos: -54.5,89.5 - parent: 1 - type: Transform - - uid: 7768 - components: - - pos: -55.5,89.5 - parent: 1 - type: Transform - - uid: 7769 - components: - - pos: -56.5,89.5 - parent: 1 - type: Transform - - uid: 7770 - components: - - pos: -57.5,89.5 - parent: 1 - type: Transform - - uid: 7771 - components: - - pos: -58.5,89.5 - parent: 1 - type: Transform - - uid: 7772 - components: - - pos: -59.5,89.5 - parent: 1 - type: Transform - - uid: 7773 - components: - - pos: -52.5,83.5 - parent: 1 - type: Transform - - uid: 7774 - components: - - pos: -59.5,84.5 - parent: 1 - type: Transform - - uid: 7775 - components: - - pos: -53.5,83.5 - parent: 1 - type: Transform - - uid: 7776 - components: - - pos: -59.5,87.5 - parent: 1 - type: Transform - - uid: 7777 - components: - - pos: -54.5,83.5 - parent: 1 - type: Transform - - uid: 7778 - components: - - pos: -59.5,85.5 - parent: 1 - type: Transform - - uid: 7779 - components: - - pos: -55.5,83.5 - parent: 1 - type: Transform - - uid: 7780 - components: - - pos: -59.5,86.5 - parent: 1 - type: Transform - - uid: 7781 - components: - - pos: -56.5,83.5 - parent: 1 - type: Transform - - uid: 7782 - components: - - pos: -59.5,88.5 - parent: 1 - type: Transform - - uid: 7783 - components: - - pos: -57.5,83.5 - parent: 1 - type: Transform - - uid: 7784 - components: - - pos: -62.5,84.5 - parent: 1 - type: Transform - - uid: 7785 - components: - - pos: -58.5,83.5 - parent: 1 - type: Transform - - uid: 7786 - components: - - pos: -63.5,84.5 - parent: 1 - type: Transform - - uid: 7787 - components: - - pos: -59.5,83.5 - parent: 1 - type: Transform - - uid: 7788 - components: - - pos: -60.5,84.5 - parent: 1 - type: Transform - - uid: 7789 - components: - - pos: -61.5,84.5 - parent: 1 - type: Transform - - uid: 7790 - components: - - pos: -63.5,83.5 - parent: 1 - type: Transform - - uid: 7791 - components: - - pos: -63.5,85.5 - parent: 1 - type: Transform - - uid: 7792 - components: - - pos: -59.5,82.5 - parent: 1 - type: Transform - - uid: 7793 - components: - - pos: -60.5,82.5 - parent: 1 - type: Transform - - uid: 7794 - components: - - pos: -61.5,82.5 - parent: 1 - type: Transform - - uid: 7795 - components: - - pos: -58.5,82.5 - parent: 1 - type: Transform - - uid: 7796 - components: - - pos: -60.5,90.5 - parent: 1 - type: Transform - - uid: 7797 - components: - - pos: -59.5,90.5 - parent: 1 - type: Transform - - uid: 7798 - components: - - pos: -58.5,90.5 - parent: 1 - type: Transform - - uid: 7799 - components: - - pos: -51.5,90.5 - parent: 1 - type: Transform - - uid: 7800 - components: - - pos: -51.5,91.5 - parent: 1 - type: Transform - - uid: 7801 - components: - - pos: -50.5,88.5 - parent: 1 - type: Transform - - uid: 7802 - components: - - pos: -49.5,88.5 - parent: 1 - type: Transform - - uid: 7803 - components: - - pos: -49.5,87.5 - parent: 1 - type: Transform - - uid: 7804 - components: - - pos: -49.5,86.5 - parent: 1 - type: Transform - - uid: 7805 - components: - - pos: -49.5,85.5 - parent: 1 - type: Transform - - uid: 7806 - components: - - pos: -49.5,84.5 - parent: 1 - type: Transform - - uid: 7807 - components: - - pos: -49.5,83.5 - parent: 1 - type: Transform - - uid: 7920 - components: - - pos: -42.5,55.5 - parent: 1 - type: Transform - - uid: 8347 - components: - - pos: -56.5,52.5 - parent: 1 - type: Transform - - uid: 8348 - components: - - pos: -56.5,51.5 - parent: 1 - type: Transform - - uid: 8349 - components: - - pos: -56.5,53.5 - parent: 1 - type: Transform - - uid: 8378 - components: - - pos: -58.5,56.5 - parent: 1 - type: Transform - - uid: 8379 - components: - - pos: -57.5,56.5 - parent: 1 - type: Transform - - uid: 8380 - components: - - pos: -56.5,56.5 - parent: 1 - type: Transform - - uid: 8381 - components: - - pos: -55.5,56.5 - parent: 1 - type: Transform - - uid: 8382 - components: - - pos: -54.5,56.5 - parent: 1 - type: Transform - - uid: 8383 - components: - - pos: -54.5,55.5 - parent: 1 - type: Transform - - uid: 8384 - components: - - pos: -54.5,54.5 - parent: 1 - type: Transform - - uid: 8385 - components: - - pos: -50.5,49.5 - parent: 1 - type: Transform - - uid: 8386 - components: - - pos: -50.5,48.5 - parent: 1 - type: Transform - - uid: 8387 - components: - - pos: -51.5,48.5 - parent: 1 - type: Transform - - uid: 8388 - components: - - pos: -53.5,52.5 - parent: 1 - type: Transform - - uid: 8389 - components: - - pos: -53.5,53.5 - parent: 1 - type: Transform - - uid: 8390 - components: - - pos: -55.5,54.5 - parent: 1 - type: Transform - - uid: 8391 - components: - - pos: -56.5,54.5 - parent: 1 - type: Transform - - uid: 8392 - components: - - pos: -57.5,54.5 - parent: 1 - type: Transform - - uid: 8393 - components: - - pos: -58.5,54.5 - parent: 1 - type: Transform - - uid: 8394 - components: - - pos: -59.5,54.5 - parent: 1 - type: Transform - - uid: 8395 - components: - - pos: -60.5,54.5 - parent: 1 - type: Transform - - uid: 8396 - components: - - pos: -61.5,54.5 - parent: 1 - type: Transform - - uid: 8397 - components: - - pos: -62.5,54.5 - parent: 1 - type: Transform - - uid: 8398 - components: - - pos: -63.5,54.5 - parent: 1 - type: Transform - - uid: 8399 - components: - - pos: -64.5,54.5 - parent: 1 - type: Transform - - uid: 8400 - components: - - pos: -61.5,53.5 - parent: 1 - type: Transform - - uid: 8401 - components: - - pos: -61.5,52.5 - parent: 1 - type: Transform - - uid: 8402 - components: - - pos: -61.5,51.5 - parent: 1 - type: Transform - - uid: 8403 - components: - - pos: -61.5,50.5 - parent: 1 - type: Transform - - uid: 8404 - components: - - pos: -53.5,54.5 - parent: 1 - type: Transform - - uid: 8405 - components: - - pos: -52.5,54.5 - parent: 1 - type: Transform - - uid: 8406 - components: - - pos: -51.5,54.5 - parent: 1 - type: Transform - - uid: 8407 - components: - - pos: -50.5,54.5 - parent: 1 - type: Transform - - uid: 8408 - components: - - pos: -49.5,54.5 - parent: 1 - type: Transform - - uid: 8409 - components: - - pos: -48.5,54.5 - parent: 1 - type: Transform - - uid: 8410 - components: - - pos: -47.5,54.5 - parent: 1 - type: Transform - - uid: 8411 - components: - - pos: -47.5,53.5 - parent: 1 - type: Transform - - uid: 8412 - components: - - pos: -47.5,52.5 - parent: 1 - type: Transform - - uid: 8413 - components: - - pos: -47.5,51.5 - parent: 1 - type: Transform - - uid: 8414 - components: - - pos: -47.5,50.5 - parent: 1 - type: Transform - - uid: 8415 - components: - - pos: -50.5,50.5 - parent: 1 - type: Transform - - uid: 8416 - components: - - pos: -50.5,51.5 - parent: 1 - type: Transform - - uid: 8417 - components: - - pos: -50.5,52.5 - parent: 1 - type: Transform - - uid: 8418 - components: - - pos: -50.5,53.5 - parent: 1 - type: Transform - - uid: 8419 - components: - - pos: -53.5,51.5 - parent: 1 - type: Transform - - uid: 8420 - components: - - pos: -53.5,50.5 - parent: 1 - type: Transform - - uid: 8421 - components: - - pos: -53.5,49.5 - parent: 1 - type: Transform - - uid: 8422 - components: - - pos: -54.5,48.5 - parent: 1 - type: Transform - - uid: 8424 - components: - - pos: -57.5,48.5 - parent: 1 - type: Transform - - uid: 8425 - components: - - pos: -56.5,48.5 - parent: 1 - type: Transform - - uid: 8426 - components: - - pos: -48.5,43.5 - parent: 1 - type: Transform - - uid: 8427 - components: - - pos: -47.5,43.5 - parent: 1 - type: Transform - - uid: 8428 - components: - - pos: -47.5,42.5 - parent: 1 - type: Transform - - uid: 8429 - components: - - pos: -47.5,49.5 - parent: 1 - type: Transform - - uid: 8430 - components: - - pos: -56.5,50.5 - parent: 1 - type: Transform - - uid: 8431 - components: - - pos: -56.5,49.5 - parent: 1 - type: Transform - - uid: 8432 - components: - - pos: -53.5,56.5 - parent: 1 - type: Transform - - uid: 8433 - components: - - pos: -52.5,56.5 - parent: 1 - type: Transform - - uid: 8434 - components: - - pos: -51.5,56.5 - parent: 1 - type: Transform - - uid: 8435 - components: - - pos: -51.5,57.5 - parent: 1 - type: Transform - - uid: 8436 - components: - - pos: -51.5,58.5 - parent: 1 - type: Transform - - uid: 8437 - components: - - pos: -58.5,57.5 - parent: 1 - type: Transform - - uid: 8438 - components: - - pos: -59.5,57.5 - parent: 1 - type: Transform - - uid: 8439 - components: - - pos: -60.5,57.5 - parent: 1 - type: Transform - - uid: 8440 - components: - - pos: -49.5,63.5 - parent: 1 - type: Transform - - uid: 8441 - components: - - pos: -50.5,63.5 - parent: 1 - type: Transform - - uid: 8442 - components: - - pos: -51.5,63.5 - parent: 1 - type: Transform - - uid: 8443 - components: - - pos: -51.5,62.5 - parent: 1 - type: Transform - - uid: 8444 - components: - - pos: -51.5,61.5 - parent: 1 - type: Transform - - uid: 8445 - components: - - pos: -52.5,61.5 - parent: 1 - type: Transform - - uid: 8446 - components: - - pos: -53.5,61.5 - parent: 1 - type: Transform - - uid: 8447 - components: - - pos: -54.5,61.5 - parent: 1 - type: Transform - - uid: 8448 - components: - - pos: -55.5,61.5 - parent: 1 - type: Transform - - uid: 8449 - components: - - pos: -56.5,61.5 - parent: 1 - type: Transform - - uid: 8450 - components: - - pos: -57.5,61.5 - parent: 1 - type: Transform - - uid: 8451 - components: - - pos: -58.5,61.5 - parent: 1 - type: Transform - - uid: 8452 - components: - - pos: -59.5,61.5 - parent: 1 - type: Transform - - uid: 8453 - components: - - pos: -60.5,61.5 - parent: 1 - type: Transform - - uid: 8454 - components: - - pos: -61.5,61.5 - parent: 1 - type: Transform - - uid: 8455 - components: - - pos: -61.5,60.5 - parent: 1 - type: Transform - - uid: 8456 - components: - - pos: -62.5,60.5 - parent: 1 - type: Transform - - uid: 8457 - components: - - pos: -63.5,60.5 - parent: 1 - type: Transform - - uid: 8458 - components: - - pos: -63.5,59.5 - parent: 1 - type: Transform - - uid: 8459 - components: - - pos: -63.5,58.5 - parent: 1 - type: Transform - - uid: 8460 - components: - - pos: -50.5,61.5 - parent: 1 - type: Transform - - uid: 8461 - components: - - pos: -49.5,61.5 - parent: 1 - type: Transform - - uid: 8462 - components: - - pos: -48.5,61.5 - parent: 1 - type: Transform - - uid: 8463 - components: - - pos: -47.5,61.5 - parent: 1 - type: Transform - - uid: 8464 - components: - - pos: -47.5,60.5 - parent: 1 - type: Transform - - uid: 8465 - components: - - pos: -47.5,59.5 - parent: 1 - type: Transform - - uid: 8466 - components: - - pos: -47.5,58.5 - parent: 1 - type: Transform - - uid: 8467 - components: - - pos: -47.5,57.5 - parent: 1 - type: Transform - - uid: 8468 - components: - - pos: -51.5,64.5 - parent: 1 - type: Transform - - uid: 8469 - components: - - pos: -51.5,65.5 - parent: 1 - type: Transform - - uid: 8470 - components: - - pos: -50.5,65.5 - parent: 1 - type: Transform - - uid: 8471 - components: - - pos: -49.5,65.5 - parent: 1 - type: Transform - - uid: 8472 - components: - - pos: -48.5,65.5 - parent: 1 - type: Transform - - uid: 8473 - components: - - pos: -47.5,65.5 - parent: 1 - type: Transform - - uid: 8475 - components: - - pos: -46.5,65.5 - parent: 1 - type: Transform - - uid: 8476 - components: - - pos: -45.5,65.5 - parent: 1 - type: Transform - - uid: 8477 - components: - - pos: -44.5,65.5 - parent: 1 - type: Transform - - uid: 8478 - components: - - pos: -43.5,65.5 - parent: 1 - type: Transform - - uid: 8479 - components: - - pos: -42.5,65.5 - parent: 1 - type: Transform - - uid: 8480 - components: - - pos: -42.5,64.5 - parent: 1 - type: Transform - - uid: 8481 - components: - - pos: -42.5,63.5 - parent: 1 - type: Transform - - uid: 8482 - components: - - pos: -42.5,62.5 - parent: 1 - type: Transform - - uid: 8483 - components: - - pos: -52.5,65.5 - parent: 1 - type: Transform - - uid: 8484 - components: - - pos: -52.5,66.5 - parent: 1 - type: Transform - - uid: 8485 - components: - - pos: -52.5,67.5 - parent: 1 - type: Transform - - uid: 8486 - components: - - pos: -52.5,68.5 - parent: 1 - type: Transform - - uid: 8487 - components: - - pos: -52.5,69.5 - parent: 1 - type: Transform - - uid: 8488 - components: - - pos: -50.5,66.5 - parent: 1 - type: Transform - - uid: 8489 - components: - - pos: -50.5,67.5 - parent: 1 - type: Transform - - uid: 8490 - components: - - pos: -50.5,68.5 - parent: 1 - type: Transform - - uid: 8491 - components: - - pos: -50.5,69.5 - parent: 1 - type: Transform - - uid: 8492 - components: - - pos: -49.5,68.5 - parent: 1 - type: Transform - - uid: 8493 - components: - - pos: -48.5,68.5 - parent: 1 - type: Transform - - uid: 8494 - components: - - pos: -47.5,68.5 - parent: 1 - type: Transform - - uid: 8495 - components: - - pos: -55.5,62.5 - parent: 1 - type: Transform - - uid: 8496 - components: - - pos: -55.5,63.5 - parent: 1 - type: Transform - - uid: 8497 - components: - - pos: -55.5,64.5 - parent: 1 - type: Transform - - uid: 8498 - components: - - pos: -59.5,62.5 - parent: 1 - type: Transform - - uid: 8499 - components: - - pos: -59.5,63.5 - parent: 1 - type: Transform - - uid: 8500 - components: - - pos: -59.5,64.5 - parent: 1 - type: Transform - - uid: 8501 - components: - - pos: -59.5,65.5 - parent: 1 - type: Transform - - uid: 8502 - components: - - pos: -58.5,66.5 - parent: 1 - type: Transform - - uid: 8503 - components: - - pos: -59.5,66.5 - parent: 1 - type: Transform - - uid: 8519 - components: - - pos: -60.5,66.5 - parent: 1 - type: Transform - - uid: 8520 - components: - - pos: -61.5,66.5 - parent: 1 - type: Transform - - uid: 8521 - components: - - pos: -58.5,62.5 - parent: 1 - type: Transform - - uid: 8522 - components: - - pos: -56.5,62.5 - parent: 1 - type: Transform - - uid: 8523 - components: - - pos: -54.5,62.5 - parent: 1 - type: Transform - - uid: 8524 - components: - - pos: -53.5,63.5 - parent: 1 - type: Transform - - uid: 8525 - components: - - pos: -55.5,65.5 - parent: 1 - type: Transform - - uid: 8526 - components: - - pos: -53.5,64.5 - parent: 1 - type: Transform - - uid: 8527 - components: - - pos: -53.5,65.5 - parent: 1 - type: Transform - - uid: 8528 - components: - - pos: -56.5,66.5 - parent: 1 - type: Transform - - uid: 8529 - components: - - pos: -55.5,66.5 - parent: 1 - type: Transform - - uid: 8530 - components: - - pos: -54.5,66.5 - parent: 1 - type: Transform - - uid: 8531 - components: - - pos: -48.5,63.5 - parent: 1 - type: Transform - - uid: 8532 - components: - - pos: -47.5,63.5 - parent: 1 - type: Transform - - uid: 8533 - components: - - pos: -46.5,63.5 - parent: 1 - type: Transform - - uid: 8534 - components: - - pos: -55.5,57.5 - parent: 1 - type: Transform - - uid: 8535 - components: - - pos: -55.5,58.5 - parent: 1 - type: Transform - - uid: 8536 - components: - - pos: -55.5,59.5 - parent: 1 - type: Transform - - uid: 8537 - components: - - pos: -56.5,59.5 - parent: 1 - type: Transform - - uid: 8538 - components: - - pos: -54.5,59.5 - parent: 1 - type: Transform - - uid: 8539 - components: - - pos: -47.5,56.5 - parent: 1 - type: Transform - - uid: 8540 - components: - - pos: -48.5,56.5 - parent: 1 - type: Transform - - uid: 8541 - components: - - pos: -46.5,56.5 - parent: 1 - type: Transform - - uid: 9020 - components: - - pos: 19.5,39.5 - parent: 1 - type: Transform - - uid: 9346 - components: - - pos: -57.5,45.5 - parent: 1 - type: Transform - - uid: 9347 - components: - - pos: -57.5,44.5 - parent: 1 - type: Transform - - uid: 9348 - components: - - pos: -57.5,43.5 - parent: 1 - type: Transform - - uid: 9349 - components: - - pos: -57.5,42.5 - parent: 1 - type: Transform - - uid: 9350 - components: - - pos: -57.5,41.5 - parent: 1 - type: Transform - - uid: 9351 - components: - - pos: -57.5,40.5 - parent: 1 - type: Transform - - uid: 9352 - components: - - pos: -57.5,39.5 - parent: 1 - type: Transform - - uid: 9353 - components: - - pos: -57.5,38.5 - parent: 1 - type: Transform - - uid: 9354 - components: - - pos: -57.5,37.5 - parent: 1 - type: Transform - - uid: 9355 - components: - - pos: -57.5,36.5 - parent: 1 - type: Transform - - uid: 9356 - components: - - pos: -57.5,35.5 - parent: 1 - type: Transform - - uid: 9357 - components: - - pos: -56.5,39.5 - parent: 1 - type: Transform - - uid: 9358 - components: - - pos: -55.5,39.5 - parent: 1 - type: Transform - - uid: 9359 - components: - - pos: -54.5,39.5 - parent: 1 - type: Transform - - uid: 9360 - components: - - pos: -54.5,40.5 - parent: 1 - type: Transform - - uid: 9361 - components: - - pos: -54.5,41.5 - parent: 1 - type: Transform - - uid: 9362 - components: - - pos: -54.5,42.5 - parent: 1 - type: Transform - - uid: 9363 - components: - - pos: -54.5,43.5 - parent: 1 - type: Transform - - uid: 9364 - components: - - pos: -53.5,43.5 - parent: 1 - type: Transform - - uid: 9365 - components: - - pos: -52.5,43.5 - parent: 1 - type: Transform - - uid: 9366 - components: - - pos: -51.5,43.5 - parent: 1 - type: Transform - - uid: 9367 - components: - - pos: -50.5,43.5 - parent: 1 - type: Transform - - uid: 9368 - components: - - pos: -49.5,43.5 - parent: 1 - type: Transform - - uid: 9369 - components: - - pos: -53.5,41.5 - parent: 1 - type: Transform - - uid: 9370 - components: - - pos: -52.5,41.5 - parent: 1 - type: Transform - - uid: 9371 - components: - - pos: -52.5,40.5 - parent: 1 - type: Transform - - uid: 9372 - components: - - pos: -52.5,39.5 - parent: 1 - type: Transform - - uid: 9373 - components: - - pos: -52.5,38.5 - parent: 1 - type: Transform - - uid: 9374 - components: - - pos: -52.5,37.5 - parent: 1 - type: Transform - - uid: 9375 - components: - - pos: -52.5,36.5 - parent: 1 - type: Transform - - uid: 9376 - components: - - pos: -52.5,35.5 - parent: 1 - type: Transform - - uid: 9418 - components: - - pos: -31.5,48.5 - parent: 1 - type: Transform - - uid: 9419 - components: - - pos: -31.5,47.5 - parent: 1 - type: Transform - - uid: 9420 - components: - - pos: -31.5,46.5 - parent: 1 - type: Transform - - uid: 9421 - components: - - pos: -31.5,45.5 - parent: 1 - type: Transform - - uid: 9422 - components: - - pos: -31.5,44.5 - parent: 1 - type: Transform - - uid: 9423 - components: - - pos: -31.5,43.5 - parent: 1 - type: Transform - - uid: 9424 - components: - - pos: -30.5,46.5 - parent: 1 - type: Transform - - uid: 9425 - components: - - pos: -29.5,46.5 - parent: 1 - type: Transform - - uid: 9426 - components: - - pos: -28.5,46.5 - parent: 1 - type: Transform - - uid: 9427 - components: - - pos: -27.5,46.5 - parent: 1 - type: Transform - - uid: 9428 - components: - - pos: -32.5,43.5 - parent: 1 - type: Transform - - uid: 9429 - components: - - pos: -33.5,43.5 - parent: 1 - type: Transform - - uid: 9430 - components: - - pos: -34.5,43.5 - parent: 1 - type: Transform - - uid: 9431 - components: - - pos: -35.5,43.5 - parent: 1 - type: Transform - - uid: 9432 - components: - - pos: -36.5,43.5 - parent: 1 - type: Transform - - uid: 9433 - components: - - pos: -37.5,43.5 - parent: 1 - type: Transform - - uid: 9434 - components: - - pos: -38.5,43.5 - parent: 1 - type: Transform - - uid: 9435 - components: - - pos: -39.5,43.5 - parent: 1 - type: Transform - - uid: 9436 - components: - - pos: -40.5,43.5 - parent: 1 - type: Transform - - uid: 9437 - components: - - pos: -41.5,43.5 - parent: 1 - type: Transform - - uid: 9438 - components: - - pos: -42.5,43.5 - parent: 1 - type: Transform - - uid: 9439 - components: - - pos: -43.5,43.5 - parent: 1 - type: Transform - - uid: 9440 - components: - - pos: -44.5,43.5 - parent: 1 - type: Transform - - uid: 9441 - components: - - pos: -40.5,42.5 - parent: 1 - type: Transform - - uid: 9442 - components: - - pos: -40.5,41.5 - parent: 1 - type: Transform - - uid: 9443 - components: - - pos: -36.5,42.5 - parent: 1 - type: Transform - - uid: 9444 - components: - - pos: -36.5,44.5 - parent: 1 - type: Transform - - uid: 9445 - components: - - pos: -36.5,45.5 - parent: 1 - type: Transform - - uid: 9446 - components: - - pos: -36.5,46.5 - parent: 1 - type: Transform - - uid: 9447 - components: - - pos: -33.5,44.5 - parent: 1 - type: Transform - - uid: 9448 - components: - - pos: -33.5,45.5 - parent: 1 - type: Transform - - uid: 9449 - components: - - pos: -33.5,46.5 - parent: 1 - type: Transform - - uid: 9450 - components: - - pos: -44.5,44.5 - parent: 1 - type: Transform - - uid: 9451 - components: - - pos: -44.5,45.5 - parent: 1 - type: Transform - - uid: 9452 - components: - - pos: -44.5,46.5 - parent: 1 - type: Transform - - uid: 9453 - components: - - pos: -40.5,44.5 - parent: 1 - type: Transform - - uid: 9454 - components: - - pos: -40.5,45.5 - parent: 1 - type: Transform - - uid: 9455 - components: - - pos: -40.5,46.5 - parent: 1 - type: Transform - - uid: 9456 - components: - - pos: -40.5,47.5 - parent: 1 - type: Transform - - uid: 9457 - components: - - pos: -40.5,48.5 - parent: 1 - type: Transform - - uid: 9458 - components: - - pos: -40.5,49.5 - parent: 1 - type: Transform - - uid: 9459 - components: - - pos: -40.5,50.5 - parent: 1 - type: Transform - - uid: 9460 - components: - - pos: -41.5,50.5 - parent: 1 - type: Transform - - uid: 9461 - components: - - pos: -42.5,50.5 - parent: 1 - type: Transform - - uid: 9471 - components: - - pos: -41.5,55.5 - parent: 1 - type: Transform - - uid: 9472 - components: - - pos: -40.5,55.5 - parent: 1 - type: Transform - - uid: 9473 - components: - - pos: -39.5,55.5 - parent: 1 - type: Transform - - uid: 9474 - components: - - pos: -38.5,55.5 - parent: 1 - type: Transform - - uid: 9475 - components: - - pos: -37.5,55.5 - parent: 1 - type: Transform - - uid: 9476 - components: - - pos: -31.5,49.5 - parent: 1 - type: Transform - - uid: 9477 - components: - - pos: -31.5,50.5 - parent: 1 - type: Transform - - uid: 9478 - components: - - pos: -31.5,51.5 - parent: 1 - type: Transform - - uid: 9479 - components: - - pos: -31.5,52.5 - parent: 1 - type: Transform - - uid: 9480 - components: - - pos: -31.5,53.5 - parent: 1 - type: Transform - - uid: 9481 - components: - - pos: -31.5,54.5 - parent: 1 - type: Transform - - uid: 9482 - components: - - pos: -30.5,50.5 - parent: 1 - type: Transform - - uid: 9483 - components: - - pos: -29.5,50.5 - parent: 1 - type: Transform - - uid: 9484 - components: - - pos: -28.5,50.5 - parent: 1 - type: Transform - - uid: 9485 - components: - - pos: -27.5,50.5 - parent: 1 - type: Transform - - uid: 9486 - components: - - pos: -26.5,50.5 - parent: 1 - type: Transform - - uid: 9487 - components: - - pos: -25.5,50.5 - parent: 1 - type: Transform - - uid: 9488 - components: - - pos: -24.5,50.5 - parent: 1 - type: Transform - - uid: 9490 - components: - - pos: -18.5,53.5 - parent: 1 - type: Transform - - uid: 9491 - components: - - pos: -21.5,53.5 - parent: 1 - type: Transform - - uid: 9492 - components: - - pos: -12.5,54.5 - parent: 1 - type: Transform - - uid: 9493 - components: - - pos: -12.5,53.5 - parent: 1 - type: Transform - - uid: 9496 - components: - - pos: -23.5,40.5 - parent: 1 - type: Transform - - uid: 9497 - components: - - pos: -22.5,40.5 - parent: 1 - type: Transform - - uid: 9498 - components: - - pos: -21.5,40.5 - parent: 1 - type: Transform - - uid: 9499 - components: - - pos: -20.5,40.5 - parent: 1 - type: Transform - - uid: 9500 - components: - - pos: -20.5,39.5 - parent: 1 - type: Transform - - uid: 9501 - components: - - pos: -20.5,38.5 - parent: 1 - type: Transform - - uid: 9502 - components: - - pos: -20.5,37.5 - parent: 1 - type: Transform - - uid: 9503 - components: - - pos: -20.5,41.5 - parent: 1 - type: Transform - - uid: 9504 - components: - - pos: -20.5,42.5 - parent: 1 - type: Transform - - uid: 9505 - components: - - pos: -20.5,43.5 - parent: 1 - type: Transform - - uid: 9506 - components: - - pos: -20.5,44.5 - parent: 1 - type: Transform - - uid: 9507 - components: - - pos: -20.5,45.5 - parent: 1 - type: Transform - - uid: 9508 - components: - - pos: -20.5,46.5 - parent: 1 - type: Transform - - uid: 9509 - components: - - pos: -20.5,47.5 - parent: 1 - type: Transform - - uid: 9510 - components: - - pos: -20.5,48.5 - parent: 1 - type: Transform - - uid: 9511 - components: - - pos: -19.5,45.5 - parent: 1 - type: Transform - - uid: 9512 - components: - - pos: -18.5,45.5 - parent: 1 - type: Transform - - uid: 9513 - components: - - pos: -17.5,45.5 - parent: 1 - type: Transform - - uid: 9514 - components: - - pos: -16.5,45.5 - parent: 1 - type: Transform - - uid: 9515 - components: - - pos: -16.5,46.5 - parent: 1 - type: Transform - - uid: 9516 - components: - - pos: -16.5,47.5 - parent: 1 - type: Transform - - uid: 9517 - components: - - pos: -15.5,47.5 - parent: 1 - type: Transform - - uid: 9518 - components: - - pos: -14.5,47.5 - parent: 1 - type: Transform - - uid: 9519 - components: - - pos: -13.5,47.5 - parent: 1 - type: Transform - - uid: 9520 - components: - - pos: -12.5,47.5 - parent: 1 - type: Transform - - uid: 9521 - components: - - pos: -11.5,47.5 - parent: 1 - type: Transform - - uid: 9522 - components: - - pos: -10.5,47.5 - parent: 1 - type: Transform - - uid: 9523 - components: - - pos: -16.5,44.5 - parent: 1 - type: Transform - - uid: 9524 - components: - - pos: -16.5,43.5 - parent: 1 - type: Transform - - uid: 9525 - components: - - pos: -16.5,42.5 - parent: 1 - type: Transform - - uid: 9526 - components: - - pos: -16.5,41.5 - parent: 1 - type: Transform - - uid: 9527 - components: - - pos: -16.5,40.5 - parent: 1 - type: Transform - - uid: 9528 - components: - - pos: -16.5,39.5 - parent: 1 - type: Transform - - uid: 9529 - components: - - pos: -16.5,38.5 - parent: 1 - type: Transform - - uid: 9530 - components: - - pos: -16.5,37.5 - parent: 1 - type: Transform - - uid: 9531 - components: - - pos: -16.5,36.5 - parent: 1 - type: Transform - - uid: 9532 - components: - - pos: -24.5,40.5 - parent: 1 - type: Transform - - uid: 9533 - components: - - pos: -24.5,39.5 - parent: 1 - type: Transform - - uid: 9534 - components: - - pos: -24.5,38.5 - parent: 1 - type: Transform - - uid: 9535 - components: - - pos: -24.5,37.5 - parent: 1 - type: Transform - - uid: 9536 - components: - - pos: -24.5,36.5 - parent: 1 - type: Transform - - uid: 9537 - components: - - pos: -24.5,35.5 - parent: 1 - type: Transform - - uid: 9538 - components: - - pos: -24.5,34.5 - parent: 1 - type: Transform - - uid: 9539 - components: - - pos: -16.5,35.5 - parent: 1 - type: Transform - - uid: 9540 - components: - - pos: -16.5,34.5 - parent: 1 - type: Transform - - uid: 9541 - components: - - pos: -16.5,33.5 - parent: 1 - type: Transform - - uid: 9542 - components: - - pos: -16.5,32.5 - parent: 1 - type: Transform - - uid: 9558 - components: - - pos: -26.5,38.5 - parent: 1 - type: Transform - - uid: 9559 - components: - - pos: -27.5,38.5 - parent: 1 - type: Transform - - uid: 9560 - components: - - pos: -27.5,37.5 - parent: 1 - type: Transform - - uid: 9561 - components: - - pos: -28.5,37.5 - parent: 1 - type: Transform - - uid: 9562 - components: - - pos: -29.5,37.5 - parent: 1 - type: Transform - - uid: 9563 - components: - - pos: -30.5,37.5 - parent: 1 - type: Transform - - uid: 9564 - components: - - pos: -31.5,37.5 - parent: 1 - type: Transform - - uid: 9565 - components: - - pos: -32.5,37.5 - parent: 1 - type: Transform - - uid: 9566 - components: - - pos: -33.5,37.5 - parent: 1 - type: Transform - - uid: 9567 - components: - - pos: -34.5,37.5 - parent: 1 - type: Transform - - uid: 9568 - components: - - pos: -35.5,37.5 - parent: 1 - type: Transform - - uid: 9569 - components: - - pos: -36.5,37.5 - parent: 1 - type: Transform - - uid: 9570 - components: - - pos: -37.5,37.5 - parent: 1 - type: Transform - - uid: 9571 - components: - - pos: -38.5,37.5 - parent: 1 - type: Transform - - uid: 9572 - components: - - pos: -39.5,37.5 - parent: 1 - type: Transform - - uid: 9574 - components: - - pos: -41.5,37.5 - parent: 1 - type: Transform - - uid: 9575 - components: - - pos: -42.5,37.5 - parent: 1 - type: Transform - - uid: 9576 - components: - - pos: -43.5,37.5 - parent: 1 - type: Transform - - uid: 9577 - components: - - pos: -44.5,37.5 - parent: 1 - type: Transform - - uid: 9578 - components: - - pos: -32.5,38.5 - parent: 1 - type: Transform - - uid: 9579 - components: - - pos: -32.5,36.5 - parent: 1 - type: Transform - - uid: 9580 - components: - - pos: -36.5,38.5 - parent: 1 - type: Transform - - uid: 9581 - components: - - pos: -36.5,36.5 - parent: 1 - type: Transform - - uid: 9582 - components: - - pos: -36.5,35.5 - parent: 1 - type: Transform - - uid: 9583 - components: - - pos: -38.5,36.5 - parent: 1 - type: Transform - - uid: 9584 - components: - - pos: -38.5,35.5 - parent: 1 - type: Transform - - uid: 9585 - components: - - pos: -38.5,38.5 - parent: 1 - type: Transform - - uid: 9586 - components: - - pos: -32.5,35.5 - parent: 1 - type: Transform - - uid: 9640 - components: - - pos: -70.5,33.5 - parent: 1 - type: Transform - - uid: 10058 - components: - - pos: -15.5,14.5 - parent: 1 - type: Transform - - uid: 10071 - components: - - pos: 21.5,44.5 - parent: 1 - type: Transform - - uid: 10155 - components: - - pos: -51.5,44.5 - parent: 1 - type: Transform - - uid: 10264 - components: - - pos: -33.5,-8.5 - parent: 1 - type: Transform - - uid: 10269 - components: - - pos: -33.5,-7.5 - parent: 1 - type: Transform - - uid: 10280 - components: - - pos: -33.5,-6.5 - parent: 1 - type: Transform - - uid: 10295 - components: - - pos: -34.5,-11.5 - parent: 1 - type: Transform - - uid: 10397 - components: - - pos: -36.5,-6.5 - parent: 1 - type: Transform - - uid: 10399 - components: - - pos: -31.5,-6.5 - parent: 1 - type: Transform - - uid: 10404 - components: - - pos: -32.5,-6.5 - parent: 1 - type: Transform - - uid: 10410 - components: - - pos: 23.5,44.5 - parent: 1 - type: Transform - - uid: 10413 - components: - - pos: 24.5,41.5 - parent: 1 - type: Transform - - uid: 10414 - components: - - pos: 24.5,40.5 - parent: 1 - type: Transform - - uid: 10415 - components: - - pos: 17.5,44.5 - parent: 1 - type: Transform - - uid: 10424 - components: - - pos: 18.5,44.5 - parent: 1 - type: Transform - - uid: 10425 - components: - - pos: 19.5,44.5 - parent: 1 - type: Transform - - uid: 10429 - components: - - pos: 22.5,44.5 - parent: 1 - type: Transform - - uid: 10431 - components: - - pos: 16.5,37.5 - parent: 1 - type: Transform - - uid: 10432 - components: - - pos: 19.5,36.5 - parent: 1 - type: Transform - - uid: 10433 - components: - - pos: 24.5,43.5 - parent: 1 - type: Transform - - uid: 10434 - components: - - pos: 24.5,44.5 - parent: 1 - type: Transform - - uid: 10435 - components: - - pos: 24.5,42.5 - parent: 1 - type: Transform - - uid: 10999 - components: - - pos: -65.5,44.5 - parent: 1 - type: Transform - - uid: 11000 - components: - - pos: -64.5,44.5 - parent: 1 - type: Transform - - uid: 11001 - components: - - pos: -63.5,44.5 - parent: 1 - type: Transform - - uid: 11002 - components: - - pos: -62.5,44.5 - parent: 1 - type: Transform - - uid: 11003 - components: - - pos: -61.5,44.5 - parent: 1 - type: Transform - - uid: 11004 - components: - - pos: -60.5,44.5 - parent: 1 - type: Transform - - uid: 11005 - components: - - pos: -59.5,44.5 - parent: 1 - type: Transform - - uid: 11006 - components: - - pos: -58.5,44.5 - parent: 1 - type: Transform - - uid: 11007 - components: - - pos: -57.5,46.5 - parent: 1 - type: Transform - - uid: 11008 - components: - - pos: -62.5,43.5 - parent: 1 - type: Transform - - uid: 11009 - components: - - pos: -62.5,42.5 - parent: 1 - type: Transform - - uid: 11010 - components: - - pos: -62.5,41.5 - parent: 1 - type: Transform - - uid: 11011 - components: - - pos: -62.5,40.5 - parent: 1 - type: Transform - - uid: 11012 - components: - - pos: -62.5,39.5 - parent: 1 - type: Transform - - uid: 11015 - components: - - pos: -66.5,44.5 - parent: 1 - type: Transform - - uid: 11016 - components: - - pos: -66.5,45.5 - parent: 1 - type: Transform - - uid: 11017 - components: - - pos: -66.5,46.5 - parent: 1 - type: Transform - - uid: 11018 - components: - - pos: -66.5,47.5 - parent: 1 - type: Transform - - uid: 11019 - components: - - pos: -67.5,47.5 - parent: 1 - type: Transform - - uid: 11020 - components: - - pos: -68.5,47.5 - parent: 1 - type: Transform - - uid: 11021 - components: - - pos: -69.5,47.5 - parent: 1 - type: Transform - - uid: 11022 - components: - - pos: -70.5,47.5 - parent: 1 - type: Transform - - uid: 11023 - components: - - pos: -66.5,43.5 - parent: 1 - type: Transform - - uid: 11024 - components: - - pos: -66.5,42.5 - parent: 1 - type: Transform - - uid: 11025 - components: - - pos: -66.5,41.5 - parent: 1 - type: Transform - - uid: 11026 - components: - - pos: -66.5,40.5 - parent: 1 - type: Transform - - uid: 11027 - components: - - pos: -67.5,40.5 - parent: 1 - type: Transform - - uid: 11028 - components: - - pos: -68.5,40.5 - parent: 1 - type: Transform - - uid: 11029 - components: - - pos: -69.5,40.5 - parent: 1 - type: Transform - - uid: 11030 - components: - - pos: -70.5,40.5 - parent: 1 - type: Transform - - uid: 11031 - components: - - pos: -71.5,40.5 - parent: 1 - type: Transform - - uid: 11032 - components: - - pos: -71.5,41.5 - parent: 1 - type: Transform - - uid: 11033 - components: - - pos: -71.5,42.5 - parent: 1 - type: Transform - - uid: 11034 - components: - - pos: -71.5,43.5 - parent: 1 - type: Transform - - uid: 11035 - components: - - pos: -71.5,44.5 - parent: 1 - type: Transform - - uid: 11036 - components: - - pos: -66.5,48.5 - parent: 1 - type: Transform - - uid: 11037 - components: - - pos: -66.5,49.5 - parent: 1 - type: Transform - - uid: 11038 - components: - - pos: -66.5,50.5 - parent: 1 - type: Transform - - uid: 11039 - components: - - pos: -67.5,50.5 - parent: 1 - type: Transform - - uid: 11040 - components: - - pos: -67.5,51.5 - parent: 1 - type: Transform - - uid: 11041 - components: - - pos: -67.5,52.5 - parent: 1 - type: Transform - - uid: 11042 - components: - - pos: -68.5,52.5 - parent: 1 - type: Transform - - uid: 11043 - components: - - pos: -69.5,52.5 - parent: 1 - type: Transform - - uid: 11044 - components: - - pos: -70.5,52.5 - parent: 1 - type: Transform - - uid: 11045 - components: - - pos: -71.5,52.5 - parent: 1 - type: Transform - - uid: 11046 - components: - - pos: -71.5,53.5 - parent: 1 - type: Transform - - uid: 11047 - components: - - pos: -71.5,54.5 - parent: 1 - type: Transform - - uid: 11048 - components: - - pos: -71.5,55.5 - parent: 1 - type: Transform - - uid: 11160 - components: - - pos: -75.5,21.5 - parent: 1 - type: Transform - - uid: 11161 - components: - - pos: -74.5,21.5 - parent: 1 - type: Transform - - uid: 11162 - components: - - pos: -73.5,21.5 - parent: 1 - type: Transform - - uid: 11163 - components: - - pos: -72.5,21.5 - parent: 1 - type: Transform - - uid: 11164 - components: - - pos: -71.5,21.5 - parent: 1 - type: Transform - - uid: 11165 - components: - - pos: -70.5,21.5 - parent: 1 - type: Transform - - uid: 11166 - components: - - pos: -69.5,21.5 - parent: 1 - type: Transform - - uid: 11173 - components: - - pos: -68.5,21.5 - parent: 1 - type: Transform - - uid: 11174 - components: - - pos: -67.5,21.5 - parent: 1 - type: Transform - - uid: 11322 - components: - - pos: -66.5,21.5 - parent: 1 - type: Transform - - uid: 11323 - components: - - pos: -65.5,21.5 - parent: 1 - type: Transform - - uid: 11324 - components: - - pos: -64.5,21.5 - parent: 1 - type: Transform - - uid: 11325 - components: - - pos: -74.5,22.5 - parent: 1 - type: Transform - - uid: 11326 - components: - - pos: -74.5,23.5 - parent: 1 - type: Transform - - uid: 11327 - components: - - pos: -74.5,24.5 - parent: 1 - type: Transform - - uid: 11328 - components: - - pos: -74.5,25.5 - parent: 1 - type: Transform - - uid: 11329 - components: - - pos: -75.5,25.5 - parent: 1 - type: Transform - - uid: 11330 - components: - - pos: -76.5,25.5 - parent: 1 - type: Transform - - uid: 11331 - components: - - pos: -77.5,25.5 - parent: 1 - type: Transform - - uid: 11332 - components: - - pos: -78.5,25.5 - parent: 1 - type: Transform - - uid: 11333 - components: - - pos: -79.5,25.5 - parent: 1 - type: Transform - - uid: 11334 - components: - - pos: -79.5,24.5 - parent: 1 - type: Transform - - uid: 11335 - components: - - pos: -79.5,23.5 - parent: 1 - type: Transform - - uid: 11336 - components: - - pos: -79.5,22.5 - parent: 1 - type: Transform - - uid: 11337 - components: - - pos: -79.5,21.5 - parent: 1 - type: Transform - - uid: 11338 - components: - - pos: -79.5,20.5 - parent: 1 - type: Transform - - uid: 11339 - components: - - pos: -79.5,19.5 - parent: 1 - type: Transform - - uid: 11340 - components: - - pos: -80.5,19.5 - parent: 1 - type: Transform - - uid: 11341 - components: - - pos: -81.5,19.5 - parent: 1 - type: Transform - - uid: 11342 - components: - - pos: -78.5,19.5 - parent: 1 - type: Transform - - uid: 11343 - components: - - pos: -77.5,19.5 - parent: 1 - type: Transform - - uid: 11344 - components: - - pos: -80.5,23.5 - parent: 1 - type: Transform - - uid: 11345 - components: - - pos: -81.5,23.5 - parent: 1 - type: Transform - - uid: 11346 - components: - - pos: -82.5,23.5 - parent: 1 - type: Transform - - uid: 11347 - components: - - pos: -83.5,23.5 - parent: 1 - type: Transform - - uid: 11348 - components: - - pos: -84.5,23.5 - parent: 1 - type: Transform - - uid: 11349 - components: - - pos: -84.5,22.5 - parent: 1 - type: Transform - - uid: 11350 - components: - - pos: -84.5,21.5 - parent: 1 - type: Transform - - uid: 11351 - components: - - pos: -84.5,20.5 - parent: 1 - type: Transform - - uid: 11352 - components: - - pos: -79.5,26.5 - parent: 1 - type: Transform - - uid: 11353 - components: - - pos: -79.5,27.5 - parent: 1 - type: Transform - - uid: 11354 - components: - - pos: -80.5,27.5 - parent: 1 - type: Transform - - uid: 11355 - components: - - pos: -81.5,27.5 - parent: 1 - type: Transform - - uid: 11356 - components: - - pos: -82.5,27.5 - parent: 1 - type: Transform - - uid: 11357 - components: - - pos: -83.5,27.5 - parent: 1 - type: Transform - - uid: 11358 - components: - - pos: -84.5,27.5 - parent: 1 - type: Transform - - uid: 11359 - components: - - pos: -84.5,28.5 - parent: 1 - type: Transform - - uid: 11360 - components: - - pos: -84.5,29.5 - parent: 1 - type: Transform - - uid: 11361 - components: - - pos: -84.5,30.5 - parent: 1 - type: Transform - - uid: 11362 - components: - - pos: -74.5,26.5 - parent: 1 - type: Transform - - uid: 11363 - components: - - pos: -74.5,27.5 - parent: 1 - type: Transform - - uid: 11364 - components: - - pos: -74.5,28.5 - parent: 1 - type: Transform - - uid: 11365 - components: - - pos: -74.5,29.5 - parent: 1 - type: Transform - - uid: 11366 - components: - - pos: -74.5,20.5 - parent: 1 - type: Transform - - uid: 11367 - components: - - pos: -74.5,19.5 - parent: 1 - type: Transform - - uid: 11368 - components: - - pos: -74.5,18.5 - parent: 1 - type: Transform - - uid: 11369 - components: - - pos: -74.5,17.5 - parent: 1 - type: Transform - - uid: 11370 - components: - - pos: -74.5,16.5 - parent: 1 - type: Transform - - uid: 11371 - components: - - pos: -73.5,16.5 - parent: 1 - type: Transform - - uid: 11372 - components: - - pos: -72.5,16.5 - parent: 1 - type: Transform - - uid: 11373 - components: - - pos: -71.5,16.5 - parent: 1 - type: Transform - - uid: 11374 - components: - - pos: -70.5,16.5 - parent: 1 - type: Transform - - uid: 11375 - components: - - pos: -69.5,16.5 - parent: 1 - type: Transform - - uid: 11376 - components: - - pos: -60.5,6.5 - parent: 1 - type: Transform - - uid: 11377 - components: - - pos: -60.5,7.5 - parent: 1 - type: Transform - - uid: 11378 - components: - - pos: -60.5,8.5 - parent: 1 - type: Transform - - uid: 11379 - components: - - pos: -61.5,8.5 - parent: 1 - type: Transform - - uid: 11380 - components: - - pos: -62.5,8.5 - parent: 1 - type: Transform - - uid: 11381 - components: - - pos: -63.5,8.5 - parent: 1 - type: Transform - - uid: 11382 - components: - - pos: -64.5,8.5 - parent: 1 - type: Transform - - uid: 11383 - components: - - pos: -65.5,8.5 - parent: 1 - type: Transform - - uid: 11384 - components: - - pos: -66.5,8.5 - parent: 1 - type: Transform - - uid: 11385 - components: - - pos: -66.5,9.5 - parent: 1 - type: Transform - - uid: 11386 - components: - - pos: -66.5,10.5 - parent: 1 - type: Transform - - uid: 11387 - components: - - pos: -66.5,11.5 - parent: 1 - type: Transform - - uid: 11388 - components: - - pos: -66.5,12.5 - parent: 1 - type: Transform - - uid: 11389 - components: - - pos: -66.5,13.5 - parent: 1 - type: Transform - - uid: 11390 - components: - - pos: -66.5,14.5 - parent: 1 - type: Transform - - uid: 11391 - components: - - pos: -66.5,15.5 - parent: 1 - type: Transform - - uid: 11392 - components: - - pos: -66.5,16.5 - parent: 1 - type: Transform - - uid: 11393 - components: - - pos: -65.5,16.5 - parent: 1 - type: Transform - - uid: 11394 - components: - - pos: -64.5,16.5 - parent: 1 - type: Transform - - uid: 11395 - components: - - pos: -63.5,16.5 - parent: 1 - type: Transform - - uid: 11396 - components: - - pos: -68.5,35.5 - parent: 1 - type: Transform - - uid: 11397 - components: - - pos: -68.5,34.5 - parent: 1 - type: Transform - - uid: 11398 - components: - - pos: -68.5,33.5 - parent: 1 - type: Transform - - uid: 11399 - components: - - pos: -67.5,33.5 - parent: 1 - type: Transform - - uid: 11400 - components: - - pos: -66.5,33.5 - parent: 1 - type: Transform - - uid: 11401 - components: - - pos: -65.5,33.5 - parent: 1 - type: Transform - - uid: 11402 - components: - - pos: -64.5,33.5 - parent: 1 - type: Transform - - uid: 11403 - components: - - pos: -64.5,31.5 - parent: 1 - type: Transform - - uid: 11404 - components: - - pos: -63.5,32.5 - parent: 1 - type: Transform - - uid: 11405 - components: - - pos: -62.5,32.5 - parent: 1 - type: Transform - - uid: 11406 - components: - - pos: -61.5,32.5 - parent: 1 - type: Transform - - uid: 11407 - components: - - pos: -60.5,32.5 - parent: 1 - type: Transform - - uid: 11408 - components: - - pos: -64.5,32.5 - parent: 1 - type: Transform - - uid: 11409 - components: - - pos: -64.5,30.5 - parent: 1 - type: Transform - - uid: 11410 - components: - - pos: -64.5,29.5 - parent: 1 - type: Transform - - uid: 11411 - components: - - pos: -64.5,28.5 - parent: 1 - type: Transform - - uid: 11412 - components: - - pos: -64.5,27.5 - parent: 1 - type: Transform - - uid: 11413 - components: - - pos: -65.5,27.5 - parent: 1 - type: Transform - - uid: 11414 - components: - - pos: -66.5,27.5 - parent: 1 - type: Transform - - uid: 11415 - components: - - pos: -69.5,34.5 - parent: 1 - type: Transform - - uid: 11416 - components: - - pos: -70.5,34.5 - parent: 1 - type: Transform - - uid: 11417 - components: - - pos: -71.5,34.5 - parent: 1 - type: Transform - - uid: 11418 - components: - - pos: -72.5,34.5 - parent: 1 - type: Transform - - uid: 11419 - components: - - pos: -73.5,34.5 - parent: 1 - type: Transform - - uid: 11420 - components: - - pos: -74.5,34.5 - parent: 1 - type: Transform - - uid: 11421 - components: - - pos: -74.5,33.5 - parent: 1 - type: Transform - - uid: 11422 - components: - - pos: -74.5,32.5 - parent: 1 - type: Transform - - uid: 11423 - components: - - pos: -74.5,31.5 - parent: 1 - type: Transform - - uid: 11424 - components: - - pos: -76.5,36.5 - parent: 1 - type: Transform - - uid: 11425 - components: - - pos: -77.5,36.5 - parent: 1 - type: Transform - - uid: 11426 - components: - - pos: -78.5,36.5 - parent: 1 - type: Transform - - uid: 11432 - components: - - pos: -78.5,37.5 - parent: 1 - type: Transform - - uid: 11433 - components: - - pos: -78.5,38.5 - parent: 1 - type: Transform - - uid: 11434 - components: - - pos: -78.5,39.5 - parent: 1 - type: Transform - - uid: 11435 - components: - - pos: -78.5,40.5 - parent: 1 - type: Transform - - uid: 11436 - components: - - pos: -78.5,41.5 - parent: 1 - type: Transform - - uid: 11437 - components: - - pos: -78.5,42.5 - parent: 1 - type: Transform - - uid: 11438 - components: - - pos: -78.5,43.5 - parent: 1 - type: Transform - - uid: 11439 - components: - - pos: -78.5,44.5 - parent: 1 - type: Transform - - uid: 11440 - components: - - pos: -78.5,45.5 - parent: 1 - type: Transform - - uid: 11441 - components: - - pos: -78.5,46.5 - parent: 1 - type: Transform - - uid: 11442 - components: - - pos: -77.5,46.5 - parent: 1 - type: Transform - - uid: 11443 - components: - - pos: -77.5,47.5 - parent: 1 - type: Transform - - uid: 11445 - components: - - pos: -79.5,47.5 - parent: 1 - type: Transform - - uid: 11446 - components: - - pos: -80.5,47.5 - parent: 1 - type: Transform - - uid: 11447 - components: - - pos: -81.5,47.5 - parent: 1 - type: Transform - - uid: 11448 - components: - - pos: -82.5,47.5 - parent: 1 - type: Transform - - uid: 11449 - components: - - pos: -83.5,47.5 - parent: 1 - type: Transform - - uid: 11450 - components: - - pos: -84.5,47.5 - parent: 1 - type: Transform - - uid: 11451 - components: - - pos: -85.5,47.5 - parent: 1 - type: Transform - - uid: 11452 - components: - - pos: -85.5,46.5 - parent: 1 - type: Transform - - uid: 11453 - components: - - pos: -85.5,45.5 - parent: 1 - type: Transform - - uid: 11454 - components: - - pos: -85.5,44.5 - parent: 1 - type: Transform - - uid: 11455 - components: - - pos: -85.5,43.5 - parent: 1 - type: Transform - - uid: 11456 - components: - - pos: -85.5,42.5 - parent: 1 - type: Transform - - uid: 11457 - components: - - pos: -85.5,41.5 - parent: 1 - type: Transform - - uid: 11458 - components: - - pos: -85.5,40.5 - parent: 1 - type: Transform - - uid: 11459 - components: - - pos: -85.5,39.5 - parent: 1 - type: Transform - - uid: 11460 - components: - - pos: -85.5,38.5 - parent: 1 - type: Transform - - uid: 11461 - components: - - pos: -85.5,37.5 - parent: 1 - type: Transform - - uid: 11462 - components: - - pos: -85.5,36.5 - parent: 1 - type: Transform - - uid: 11463 - components: - - pos: -85.5,35.5 - parent: 1 - type: Transform - - uid: 11464 - components: - - pos: -85.5,34.5 - parent: 1 - type: Transform - - uid: 11465 - components: - - pos: -86.5,46.5 - parent: 1 - type: Transform - - uid: 11466 - components: - - pos: -87.5,46.5 - parent: 1 - type: Transform - - uid: 11467 - components: - - pos: -87.5,45.5 - parent: 1 - type: Transform - - uid: 11471 - components: - - pos: -87.5,44.5 - parent: 1 - type: Transform - - uid: 11472 - components: - - pos: -87.5,43.5 - parent: 1 - type: Transform - - uid: 11473 - components: - - pos: -87.5,42.5 - parent: 1 - type: Transform - - uid: 11474 - components: - - pos: -87.5,41.5 - parent: 1 - type: Transform - - uid: 11476 - components: - - pos: -87.5,40.5 - parent: 1 - type: Transform - - uid: 11477 - components: - - pos: -87.5,39.5 - parent: 1 - type: Transform - - uid: 11478 - components: - - pos: -87.5,38.5 - parent: 1 - type: Transform - - uid: 11479 - components: - - pos: -87.5,37.5 - parent: 1 - type: Transform - - uid: 11480 - components: - - pos: -87.5,36.5 - parent: 1 - type: Transform - - uid: 11481 - components: - - pos: -87.5,35.5 - parent: 1 - type: Transform - - uid: 11482 - components: - - pos: -87.5,34.5 - parent: 1 - type: Transform - - uid: 11483 - components: - - pos: -88.5,46.5 - parent: 1 - type: Transform - - uid: 11484 - components: - - pos: -89.5,46.5 - parent: 1 - type: Transform - - uid: 11485 - components: - - pos: -90.5,46.5 - parent: 1 - type: Transform - - uid: 11486 - components: - - pos: -91.5,46.5 - parent: 1 - type: Transform - - uid: 11487 - components: - - pos: -91.5,45.5 - parent: 1 - type: Transform - - uid: 11488 - components: - - pos: -91.5,44.5 - parent: 1 - type: Transform - - uid: 11490 - components: - - pos: -91.5,43.5 - parent: 1 - type: Transform - - uid: 11491 - components: - - pos: -91.5,42.5 - parent: 1 - type: Transform - - uid: 11492 - components: - - pos: -91.5,41.5 - parent: 1 - type: Transform - - uid: 11493 - components: - - pos: -91.5,40.5 - parent: 1 - type: Transform - - uid: 11494 - components: - - pos: -91.5,39.5 - parent: 1 - type: Transform - - uid: 11495 - components: - - pos: -91.5,38.5 - parent: 1 - type: Transform - - uid: 11496 - components: - - pos: -91.5,37.5 - parent: 1 - type: Transform - - uid: 11497 - components: - - pos: -91.5,36.5 - parent: 1 - type: Transform - - uid: 11498 - components: - - pos: -91.5,35.5 - parent: 1 - type: Transform - - uid: 11499 - components: - - pos: -91.5,34.5 - parent: 1 - type: Transform - - uid: 11500 - components: - - pos: -84.5,48.5 - parent: 1 - type: Transform - - uid: 11501 - components: - - pos: -84.5,49.5 - parent: 1 - type: Transform - - uid: 11502 - components: - - pos: -83.5,49.5 - parent: 1 - type: Transform - - uid: 11504 - components: - - pos: -82.5,49.5 - parent: 1 - type: Transform - - uid: 11505 - components: - - pos: -81.5,49.5 - parent: 1 - type: Transform - - uid: 11506 - components: - - pos: -80.5,49.5 - parent: 1 - type: Transform - - uid: 11507 - components: - - pos: -80.5,50.5 - parent: 1 - type: Transform - - uid: 11510 - components: - - pos: -84.5,50.5 - parent: 1 - type: Transform - - uid: 11512 - components: - - pos: -78.5,35.5 - parent: 1 - type: Transform - - uid: 11514 - components: - - pos: -78.5,34.5 - parent: 1 - type: Transform - - uid: 11575 - components: - - pos: -40.5,37.5 - parent: 1 - type: Transform - - uid: 11903 - components: - - pos: 22.5,36.5 - parent: 1 - type: Transform - - uid: 11917 - components: - - pos: 18.5,36.5 - parent: 1 - type: Transform - - uid: 12039 - components: - - pos: -78.5,33.5 - parent: 1 - type: Transform - - uid: 12221 - components: - - pos: -78.5,32.5 - parent: 1 - type: Transform - - uid: 12432 - components: - - pos: -78.5,31.5 - parent: 1 - type: Transform - - uid: 12501 - components: - - pos: -78.5,30.5 - parent: 1 - type: Transform - - uid: 12502 - components: - - pos: -78.5,29.5 - parent: 1 - type: Transform - - uid: 12505 - components: - - pos: -82.5,33.5 - parent: 1 - type: Transform - - uid: 13035 - components: - - pos: -82.5,32.5 - parent: 1 - type: Transform - - uid: 13036 - components: - - pos: -82.5,31.5 - parent: 1 - type: Transform - - uid: 13037 - components: - - pos: -82.5,30.5 - parent: 1 - type: Transform - - uid: 13038 - components: - - pos: -82.5,29.5 - parent: 1 - type: Transform - - uid: 13331 - components: - - pos: -0.5,6.5 - parent: 1 - type: Transform - - uid: 13332 - components: - - pos: -0.5,7.5 - parent: 1 - type: Transform - - uid: 13333 - components: - - pos: -0.5,8.5 - parent: 1 - type: Transform - - uid: 13334 - components: - - pos: -0.5,9.5 - parent: 1 - type: Transform - - uid: 13658 - components: - - pos: -51.5,36.5 - parent: 1 - type: Transform - - uid: 13659 - components: - - pos: -50.5,36.5 - parent: 1 - type: Transform - - uid: 13660 - components: - - pos: -49.5,36.5 - parent: 1 - type: Transform - - uid: 14005 - components: - - pos: -72.5,54.5 - parent: 1 - type: Transform - - uid: 14006 - components: - - pos: -73.5,54.5 - parent: 1 - type: Transform - - uid: 14039 - components: - - pos: -70.5,32.5 - parent: 1 - type: Transform - - uid: 14041 - components: - - pos: -70.5,31.5 - parent: 1 - type: Transform - - uid: 14042 - components: - - pos: -70.5,30.5 - parent: 1 - type: Transform - - uid: 14043 - components: - - pos: -70.5,29.5 - parent: 1 - type: Transform - - uid: 14044 - components: - - pos: -70.5,28.5 - parent: 1 - type: Transform - - uid: 14231 - components: - - pos: -73.5,55.5 - parent: 1 - type: Transform - - uid: 14232 - components: - - pos: -73.5,56.5 - parent: 1 - type: Transform - - uid: 15005 - components: - - pos: -74.5,54.5 - parent: 1 - type: Transform - - uid: 15006 - components: - - pos: -75.5,54.5 - parent: 1 - type: Transform - - uid: 15007 - components: - - pos: -76.5,54.5 - parent: 1 - type: Transform - - uid: 15050 - components: - - pos: -36.5,55.5 - parent: 1 - type: Transform - - uid: 15051 - components: - - pos: -35.5,55.5 - parent: 1 - type: Transform - - uid: 15052 - components: - - pos: -34.5,55.5 - parent: 1 - type: Transform - - uid: 15053 - components: - - pos: -33.5,55.5 - parent: 1 - type: Transform - - uid: 15054 - components: - - pos: -32.5,55.5 - parent: 1 - type: Transform - - uid: 15055 - components: - - pos: -31.5,55.5 - parent: 1 - type: Transform - - uid: 15056 - components: - - pos: -58.5,86.5 - parent: 1 - type: Transform - - uid: 15062 - components: - - pos: -46.5,-2.5 - parent: 1 - type: Transform - - uid: 15113 - components: - - pos: -31.5,56.5 - parent: 1 - type: Transform - - uid: 15237 - components: - - pos: 17.5,47.5 - parent: 1 - type: Transform - - uid: 15238 - components: - - pos: 17.5,48.5 - parent: 1 - type: Transform - - uid: 15239 - components: - - pos: 17.5,49.5 - parent: 1 - type: Transform - - uid: 15240 - components: - - pos: 17.5,50.5 - parent: 1 - type: Transform - - uid: 15241 - components: - - pos: 17.5,51.5 - parent: 1 - type: Transform - - uid: 15242 - components: - - pos: 16.5,51.5 - parent: 1 - type: Transform - - uid: 15243 - components: - - pos: 15.5,51.5 - parent: 1 - type: Transform - - uid: 15244 - components: - - pos: 14.5,51.5 - parent: 1 - type: Transform - - uid: 15245 - components: - - pos: 16.5,52.5 - parent: 1 - type: Transform - - uid: 15246 - components: - - pos: 13.5,53.5 - parent: 1 - type: Transform - - uid: 15247 - components: - - pos: 14.5,53.5 - parent: 1 - type: Transform - - uid: 15248 - components: - - pos: 15.5,53.5 - parent: 1 - type: Transform - - uid: 15249 - components: - - pos: 16.5,53.5 - parent: 1 - type: Transform - - uid: 15250 - components: - - pos: 17.5,53.5 - parent: 1 - type: Transform - - uid: 15251 - components: - - pos: 18.5,53.5 - parent: 1 - type: Transform - - uid: 15252 - components: - - pos: 19.5,53.5 - parent: 1 - type: Transform - - uid: 15253 - components: - - pos: 18.5,50.5 - parent: 1 - type: Transform - - uid: 15254 - components: - - pos: 19.5,52.5 - parent: 1 - type: Transform - - uid: 15255 - components: - - pos: 19.5,51.5 - parent: 1 - type: Transform - - uid: 15256 - components: - - pos: 19.5,50.5 - parent: 1 - type: Transform - - uid: 15257 - components: - - pos: 19.5,49.5 - parent: 1 - type: Transform - - uid: 15258 - components: - - pos: 19.5,48.5 - parent: 1 - type: Transform - - uid: 15282 - components: - - pos: 7.5,40.5 - parent: 1 - type: Transform - - uid: 15283 - components: - - pos: 7.5,41.5 - parent: 1 - type: Transform - - uid: 15284 - components: - - pos: 7.5,42.5 - parent: 1 - type: Transform - - uid: 15285 - components: - - pos: 7.5,43.5 - parent: 1 - type: Transform - - uid: 15286 - components: - - pos: 7.5,44.5 - parent: 1 - type: Transform - - uid: 15287 - components: - - pos: 7.5,45.5 - parent: 1 - type: Transform - - uid: 15288 - components: - - pos: 7.5,46.5 - parent: 1 - type: Transform - - uid: 15291 - components: - - pos: 10.5,33.5 - parent: 1 - type: Transform - - uid: 15380 - components: - - pos: -16.5,53.5 - parent: 1 - type: Transform - - uid: 15430 - components: - - pos: -41.5,63.5 - parent: 1 - type: Transform - - uid: 15431 - components: - - pos: -40.5,63.5 - parent: 1 - type: Transform - - uid: 15432 - components: - - pos: -42.5,61.5 - parent: 1 - type: Transform - - uid: 15433 - components: - - pos: -42.5,60.5 - parent: 1 - type: Transform - - uid: 15434 - components: - - pos: -42.5,66.5 - parent: 1 - type: Transform - - uid: 15517 - components: - - pos: -5.5,-16.5 - parent: 1 - type: Transform - - uid: 15518 - components: - - pos: -5.5,-17.5 - parent: 1 - type: Transform - - uid: 15519 - components: - - pos: -5.5,-18.5 - parent: 1 - type: Transform - - uid: 15845 - components: - - pos: 19.5,40.5 - parent: 1 - type: Transform - - uid: 15870 - components: - - pos: 12.5,51.5 - parent: 1 - type: Transform - - uid: 15871 - components: - - pos: 11.5,51.5 - parent: 1 - type: Transform - - uid: 15890 - components: - - pos: -24.5,-10.5 - parent: 1 - type: Transform - - uid: 15891 - components: - - pos: -24.5,-11.5 - parent: 1 - type: Transform - - uid: 15951 - components: - - pos: -51.5,31.5 - parent: 1 - type: Transform - - uid: 15952 - components: - - pos: -51.5,30.5 - parent: 1 - type: Transform - - uid: 15953 - components: - - pos: -52.5,30.5 - parent: 1 - type: Transform - - uid: 15954 - components: - - pos: -53.5,30.5 - parent: 1 - type: Transform - - uid: 15955 - components: - - pos: -50.5,28.5 - parent: 1 - type: Transform - - uid: 15956 - components: - - pos: -50.5,29.5 - parent: 1 - type: Transform - - uid: 15957 - components: - - pos: -50.5,30.5 - parent: 1 - type: Transform - - uid: 15987 - components: - - pos: -8.5,8.5 - parent: 1 - type: Transform - - uid: 15988 - components: - - pos: -17.5,9.5 - parent: 1 - type: Transform -- proto: CableApcStack - entities: - - uid: 2887 - components: - - pos: 25.496317,-7.99954 - parent: 1 - type: Transform - - uid: 3422 - components: - - pos: -53.87841,29.69635 - parent: 1 - type: Transform - - uid: 5643 - components: - - pos: -25.946909,26.643772 - parent: 1 - type: Transform - - uid: 15535 - components: - - pos: -4.5217714,-18.557777 - parent: 1 - type: Transform - - uid: 15990 - components: - - pos: -7.4238524,8.228333 - parent: 1 - type: Transform -- proto: CableApcStack1 - entities: - - uid: 13667 - components: - - pos: -17.665174,-14.392005 - parent: 1 - type: Transform - - count: 5 - type: Stack -- proto: Cablecuffs - entities: - - uid: 2258 - components: - - pos: 0.18249932,43.256775 - parent: 1 - type: Transform - - uid: 12773 - components: - - pos: 20.44684,28.601988 - parent: 1 - type: Transform -- proto: CableHV - entities: - - uid: 560 - components: - - pos: 4.5,5.5 - parent: 1 - type: Transform - - uid: 561 - components: - - pos: 4.5,4.5 - parent: 1 - type: Transform - - uid: 562 - components: - - pos: 4.5,3.5 - parent: 1 - type: Transform - - uid: 563 - components: - - pos: 4.5,2.5 - parent: 1 - type: Transform - - uid: 564 - components: - - pos: 4.5,1.5 - parent: 1 - type: Transform - - uid: 565 - components: - - pos: 4.5,0.5 - parent: 1 - type: Transform - - uid: 566 - components: - - pos: 4.5,-0.5 - parent: 1 - type: Transform - - uid: 567 - components: - - pos: 4.5,-1.5 - parent: 1 - type: Transform - - uid: 568 - components: - - pos: 4.5,-2.5 - parent: 1 - type: Transform - - uid: 569 - components: - - pos: 4.5,-3.5 - parent: 1 - type: Transform - - uid: 570 - components: - - pos: 4.5,-4.5 - parent: 1 - type: Transform - - uid: 571 - components: - - pos: 4.5,-5.5 - parent: 1 - type: Transform - - uid: 572 - components: - - pos: 5.5,-5.5 - parent: 1 - type: Transform - - uid: 573 - components: - - pos: 6.5,-5.5 - parent: 1 - type: Transform - - uid: 574 - components: - - pos: 7.5,-5.5 - parent: 1 - type: Transform - - uid: 594 - components: - - pos: 8.5,-5.5 - parent: 1 - type: Transform - - uid: 595 - components: - - pos: 9.5,-5.5 - parent: 1 - type: Transform - - uid: 596 - components: - - pos: 10.5,-5.5 - parent: 1 - type: Transform - - uid: 597 - components: - - pos: 11.5,-5.5 - parent: 1 - type: Transform - - uid: 598 - components: - - pos: 11.5,-6.5 - parent: 1 - type: Transform - - uid: 599 - components: - - pos: 11.5,-7.5 - parent: 1 - type: Transform - - uid: 728 - components: - - pos: 12.5,-5.5 - parent: 1 - type: Transform - - uid: 729 - components: - - pos: 13.5,-5.5 - parent: 1 - type: Transform - - uid: 730 - components: - - pos: 14.5,-5.5 - parent: 1 - type: Transform - - uid: 731 - components: - - pos: 15.5,-5.5 - parent: 1 - type: Transform - - uid: 732 - components: - - pos: 16.5,-5.5 - parent: 1 - type: Transform - - uid: 733 - components: - - pos: 17.5,-5.5 - parent: 1 - type: Transform - - uid: 734 - components: - - pos: 18.5,-5.5 - parent: 1 - type: Transform - - uid: 735 - components: - - pos: 19.5,-5.5 - parent: 1 - type: Transform - - uid: 736 - components: - - pos: 20.5,-5.5 - parent: 1 - type: Transform - - uid: 737 - components: - - pos: 21.5,-5.5 - parent: 1 - type: Transform - - uid: 738 - components: - - pos: 22.5,-5.5 - parent: 1 - type: Transform - - uid: 739 - components: - - pos: 23.5,-5.5 - parent: 1 - type: Transform - - uid: 740 - components: - - pos: 24.5,-5.5 - parent: 1 - type: Transform - - uid: 741 - components: - - pos: 25.5,-5.5 - parent: 1 - type: Transform - - uid: 742 - components: - - pos: 26.5,-5.5 - parent: 1 - type: Transform - - uid: 743 - components: - - pos: 27.5,-5.5 - parent: 1 - type: Transform - - uid: 744 - components: - - pos: 28.5,-10.5 - parent: 1 - type: Transform - - uid: 745 - components: - - pos: 28.5,-9.5 - parent: 1 - type: Transform - - uid: 746 - components: - - pos: 18.5,-14.5 - parent: 1 - type: Transform - - uid: 747 - components: - - pos: 28.5,-8.5 - parent: 1 - type: Transform - - uid: 750 - components: - - pos: 19.5,-14.5 - parent: 1 - type: Transform - - uid: 751 - components: - - pos: 20.5,-14.5 - parent: 1 - type: Transform - - uid: 752 - components: - - pos: 21.5,-14.5 - parent: 1 - type: Transform - - uid: 753 - components: - - pos: 22.5,-14.5 - parent: 1 - type: Transform - - uid: 754 - components: - - pos: 23.5,-14.5 - parent: 1 - type: Transform - - uid: 755 - components: - - pos: 24.5,-14.5 - parent: 1 - type: Transform - - uid: 756 - components: - - pos: 25.5,-14.5 - parent: 1 - type: Transform - - uid: 757 - components: - - pos: 26.5,-14.5 - parent: 1 - type: Transform - - uid: 758 - components: - - pos: 27.5,-14.5 - parent: 1 - type: Transform - - uid: 759 - components: - - pos: 18.5,-16.5 - parent: 1 - type: Transform - - uid: 760 - components: - - pos: 19.5,-16.5 - parent: 1 - type: Transform - - uid: 761 - components: - - pos: 20.5,-16.5 - parent: 1 - type: Transform - - uid: 762 - components: - - pos: 21.5,-16.5 - parent: 1 - type: Transform - - uid: 763 - components: - - pos: 22.5,-16.5 - parent: 1 - type: Transform - - uid: 764 - components: - - pos: 23.5,-16.5 - parent: 1 - type: Transform - - uid: 765 - components: - - pos: 24.5,-16.5 - parent: 1 - type: Transform - - uid: 766 - components: - - pos: 25.5,-16.5 - parent: 1 - type: Transform - - uid: 767 - components: - - pos: 26.5,-16.5 - parent: 1 - type: Transform - - uid: 768 - components: - - pos: 27.5,-16.5 - parent: 1 - type: Transform - - uid: 769 - components: - - pos: 19.5,-18.5 - parent: 1 - type: Transform - - uid: 770 - components: - - pos: 20.5,-18.5 - parent: 1 - type: Transform - - uid: 771 - components: - - pos: 21.5,-18.5 - parent: 1 - type: Transform - - uid: 772 - components: - - pos: 22.5,-18.5 - parent: 1 - type: Transform - - uid: 773 - components: - - pos: 23.5,-18.5 - parent: 1 - type: Transform - - uid: 774 - components: - - pos: 24.5,-18.5 - parent: 1 - type: Transform - - uid: 775 - components: - - pos: 25.5,-18.5 - parent: 1 - type: Transform - - uid: 776 - components: - - pos: 26.5,-18.5 - parent: 1 - type: Transform - - uid: 777 - components: - - pos: 27.5,-18.5 - parent: 1 - type: Transform - - uid: 778 - components: - - pos: 19.5,-20.5 - parent: 1 - type: Transform - - uid: 779 - components: - - pos: 20.5,-20.5 - parent: 1 - type: Transform - - uid: 780 - components: - - pos: 21.5,-20.5 - parent: 1 - type: Transform - - uid: 781 - components: - - pos: 22.5,-20.5 - parent: 1 - type: Transform - - uid: 782 - components: - - pos: 23.5,-20.5 - parent: 1 - type: Transform - - uid: 783 - components: - - pos: 24.5,-20.5 - parent: 1 - type: Transform - - uid: 784 - components: - - pos: 25.5,-20.5 - parent: 1 - type: Transform - - uid: 785 - components: - - pos: 26.5,-20.5 - parent: 1 - type: Transform - - uid: 786 - components: - - pos: 27.5,-20.5 - parent: 1 - type: Transform - - uid: 787 - components: - - pos: 20.5,-22.5 - parent: 1 - type: Transform - - uid: 788 - components: - - pos: 21.5,-22.5 - parent: 1 - type: Transform - - uid: 789 - components: - - pos: 22.5,-22.5 - parent: 1 - type: Transform - - uid: 790 - components: - - pos: 23.5,-22.5 - parent: 1 - type: Transform - - uid: 791 - components: - - pos: 24.5,-22.5 - parent: 1 - type: Transform - - uid: 792 - components: - - pos: 25.5,-22.5 - parent: 1 - type: Transform - - uid: 793 - components: - - pos: 26.5,-22.5 - parent: 1 - type: Transform - - uid: 794 - components: - - pos: 27.5,-22.5 - parent: 1 - type: Transform - - uid: 795 - components: - - pos: 20.5,-24.5 - parent: 1 - type: Transform - - uid: 796 - components: - - pos: 21.5,-24.5 - parent: 1 - type: Transform - - uid: 797 - components: - - pos: 22.5,-24.5 - parent: 1 - type: Transform - - uid: 798 - components: - - pos: 23.5,-24.5 - parent: 1 - type: Transform - - uid: 799 - components: - - pos: 24.5,-24.5 - parent: 1 - type: Transform - - uid: 800 - components: - - pos: 25.5,-24.5 - parent: 1 - type: Transform - - uid: 801 - components: - - pos: 26.5,-24.5 - parent: 1 - type: Transform - - uid: 802 - components: - - pos: 27.5,-24.5 - parent: 1 - type: Transform - - uid: 857 - components: - - pos: 28.5,-27.5 - parent: 1 - type: Transform - - uid: 858 - components: - - pos: 28.5,-26.5 - parent: 1 - type: Transform - - uid: 859 - components: - - pos: 28.5,-25.5 - parent: 1 - type: Transform - - uid: 903 - components: - - pos: 27.5,-6.5 - parent: 1 - type: Transform - - uid: 904 - components: - - pos: 27.5,-7.5 - parent: 1 - type: Transform - - uid: 905 - components: - - pos: 27.5,-8.5 - parent: 1 - type: Transform - - uid: 924 - components: - - pos: 25.5,1.5 - parent: 1 - type: Transform - - uid: 925 - components: - - pos: 25.5,2.5 - parent: 1 - type: Transform - - uid: 926 - components: - - pos: 25.5,3.5 - parent: 1 - type: Transform - - uid: 927 - components: - - pos: 26.5,3.5 - parent: 1 - type: Transform - - uid: 928 - components: - - pos: 26.5,4.5 - parent: 1 - type: Transform - - uid: 929 - components: - - pos: 26.5,5.5 - parent: 1 - type: Transform - - uid: 988 - components: - - pos: 26.5,21.5 - parent: 1 - type: Transform - - uid: 990 - components: - - pos: 26.5,25.5 - parent: 1 - type: Transform - - uid: 991 - components: - - pos: 27.5,25.5 - parent: 1 - type: Transform - - uid: 992 - components: - - pos: 28.5,25.5 - parent: 1 - type: Transform - - uid: 993 - components: - - pos: 28.5,24.5 - parent: 1 - type: Transform - - uid: 1018 - components: - - pos: 26.5,22.5 - parent: 1 - type: Transform - - uid: 1029 - components: - - pos: 26.5,20.5 - parent: 1 - type: Transform - - uid: 1506 - components: - - pos: -18.5,20.5 - parent: 1 - type: Transform - - uid: 1534 - components: - - pos: 25.5,5.5 - parent: 1 - type: Transform - - uid: 1535 - components: - - pos: 24.5,5.5 - parent: 1 - type: Transform - - uid: 1536 - components: - - pos: 23.5,5.5 - parent: 1 - type: Transform - - uid: 1537 - components: - - pos: 22.5,5.5 - parent: 1 - type: Transform - - uid: 1538 - components: - - pos: 21.5,5.5 - parent: 1 - type: Transform - - uid: 1539 - components: - - pos: 20.5,5.5 - parent: 1 - type: Transform - - uid: 1540 - components: - - pos: 19.5,5.5 - parent: 1 - type: Transform - - uid: 1541 - components: - - pos: 18.5,5.5 - parent: 1 - type: Transform - - uid: 1542 - components: - - pos: 17.5,5.5 - parent: 1 - type: Transform - - uid: 1543 - components: - - pos: 16.5,5.5 - parent: 1 - type: Transform - - uid: 1544 - components: - - pos: 15.5,5.5 - parent: 1 - type: Transform - - uid: 1545 - components: - - pos: 14.5,5.5 - parent: 1 - type: Transform - - uid: 1546 - components: - - pos: 13.5,5.5 - parent: 1 - type: Transform - - uid: 1547 - components: - - pos: 12.5,5.5 - parent: 1 - type: Transform - - uid: 1548 - components: - - pos: 11.5,5.5 - parent: 1 - type: Transform - - uid: 1549 - components: - - pos: 10.5,5.5 - parent: 1 - type: Transform - - uid: 1550 - components: - - pos: 9.5,5.5 - parent: 1 - type: Transform - - uid: 1551 - components: - - pos: 8.5,5.5 - parent: 1 - type: Transform - - uid: 1552 - components: - - pos: 7.5,5.5 - parent: 1 - type: Transform - - uid: 1553 - components: - - pos: 6.5,5.5 - parent: 1 - type: Transform - - uid: 1554 - components: - - pos: 5.5,5.5 - parent: 1 - type: Transform - - uid: 1555 - components: - - pos: 22.5,6.5 - parent: 1 - type: Transform - - uid: 1556 - components: - - pos: 22.5,7.5 - parent: 1 - type: Transform - - uid: 1557 - components: - - pos: 22.5,8.5 - parent: 1 - type: Transform - - uid: 1558 - components: - - pos: 22.5,9.5 - parent: 1 - type: Transform - - uid: 1559 - components: - - pos: 23.5,9.5 - parent: 1 - type: Transform - - uid: 1561 - components: - - pos: 3.5,5.5 - parent: 1 - type: Transform - - uid: 1562 - components: - - pos: 2.5,5.5 - parent: 1 - type: Transform - - uid: 1563 - components: - - pos: 1.5,5.5 - parent: 1 - type: Transform - - uid: 1564 - components: - - pos: 0.5,5.5 - parent: 1 - type: Transform - - uid: 1565 - components: - - pos: -0.5,5.5 - parent: 1 - type: Transform - - uid: 1566 - components: - - pos: -1.5,5.5 - parent: 1 - type: Transform - - uid: 1567 - components: - - pos: -2.5,5.5 - parent: 1 - type: Transform - - uid: 1568 - components: - - pos: -3.5,5.5 - parent: 1 - type: Transform - - uid: 1569 - components: - - pos: -4.5,5.5 - parent: 1 - type: Transform - - uid: 1570 - components: - - pos: -5.5,5.5 - parent: 1 - type: Transform - - uid: 1571 - components: - - pos: -5.5,6.5 - parent: 1 - type: Transform - - uid: 1572 - components: - - pos: -5.5,7.5 - parent: 1 - type: Transform - - uid: 1573 - components: - - pos: -5.5,8.5 - parent: 1 - type: Transform - - uid: 1574 - components: - - pos: -5.5,9.5 - parent: 1 - type: Transform - - uid: 1575 - components: - - pos: -5.5,10.5 - parent: 1 - type: Transform - - uid: 1576 - components: - - pos: -5.5,11.5 - parent: 1 - type: Transform - - uid: 1577 - components: - - pos: -5.5,12.5 - parent: 1 - type: Transform - - uid: 1578 - components: - - pos: -5.5,13.5 - parent: 1 - type: Transform - - uid: 1579 - components: - - pos: -5.5,14.5 - parent: 1 - type: Transform - - uid: 1580 - components: - - pos: -5.5,15.5 - parent: 1 - type: Transform - - uid: 1581 - components: - - pos: -5.5,16.5 - parent: 1 - type: Transform - - uid: 1582 - components: - - pos: -5.5,17.5 - parent: 1 - type: Transform - - uid: 1583 - components: - - pos: -6.5,17.5 - parent: 1 - type: Transform - - uid: 1584 - components: - - pos: -7.5,17.5 - parent: 1 - type: Transform - - uid: 1585 - components: - - pos: -8.5,17.5 - parent: 1 - type: Transform - - uid: 1586 - components: - - pos: -9.5,17.5 - parent: 1 - type: Transform - - uid: 1587 - components: - - pos: -9.5,18.5 - parent: 1 - type: Transform - - uid: 2401 - components: - - pos: -22.5,61.5 - parent: 1 - type: Transform - - uid: 2589 - components: - - pos: 28.5,23.5 - parent: 1 - type: Transform - - uid: 2777 - components: - - pos: -19.5,20.5 - parent: 1 - type: Transform - - uid: 2780 - components: - - pos: -20.5,20.5 - parent: 1 - type: Transform - - uid: 2784 - components: - - pos: -18.5,17.5 - parent: 1 - type: Transform - - uid: 2910 - components: - - pos: -13.5,20.5 - parent: 1 - type: Transform - - uid: 2921 - components: - - pos: 22.5,4.5 - parent: 1 - type: Transform - - uid: 2922 - components: - - pos: 22.5,3.5 - parent: 1 - type: Transform - - uid: 2923 - components: - - pos: 22.5,2.5 - parent: 1 - type: Transform - - uid: 2924 - components: - - pos: 22.5,1.5 - parent: 1 - type: Transform - - uid: 2925 - components: - - pos: 23.5,1.5 - parent: 1 - type: Transform - - uid: 2926 - components: - - pos: 23.5,0.5 - parent: 1 - type: Transform - - uid: 2927 - components: - - pos: 23.5,-0.5 - parent: 1 - type: Transform - - uid: 2928 - components: - - pos: 23.5,-1.5 - parent: 1 - type: Transform - - uid: 2929 - components: - - pos: 23.5,-2.5 - parent: 1 - type: Transform - - uid: 2930 - components: - - pos: 23.5,-3.5 - parent: 1 - type: Transform - - uid: 2931 - components: - - pos: 23.5,-4.5 - parent: 1 - type: Transform - - uid: 2972 - components: - - pos: 25.5,24.5 - parent: 1 - type: Transform - - uid: 2973 - components: - - pos: 25.5,23.5 - parent: 1 - type: Transform - - uid: 2974 - components: - - pos: 26.5,23.5 - parent: 1 - type: Transform - - uid: 2978 - components: - - pos: 25.5,25.5 - parent: 1 - type: Transform - - uid: 3040 - components: - - pos: -20.5,18.5 - parent: 1 - type: Transform - - uid: 3331 - components: - - pos: -6.5,18.5 - parent: 1 - type: Transform - - uid: 3332 - components: - - pos: -6.5,19.5 - parent: 1 - type: Transform - - uid: 3333 - components: - - pos: -6.5,20.5 - parent: 1 - type: Transform - - uid: 3334 - components: - - pos: -6.5,21.5 - parent: 1 - type: Transform - - uid: 3335 - components: - - pos: -6.5,22.5 - parent: 1 - type: Transform - - uid: 3336 - components: - - pos: -6.5,23.5 - parent: 1 - type: Transform - - uid: 3337 - components: - - pos: -6.5,24.5 - parent: 1 - type: Transform - - uid: 3338 - components: - - pos: -6.5,25.5 - parent: 1 - type: Transform - - uid: 3339 - components: - - pos: -7.5,25.5 - parent: 1 - type: Transform - - uid: 3340 - components: - - pos: -8.5,25.5 - parent: 1 - type: Transform - - uid: 3341 - components: - - pos: -9.5,25.5 - parent: 1 - type: Transform - - uid: 3342 - components: - - pos: -10.5,25.5 - parent: 1 - type: Transform - - uid: 3343 - components: - - pos: -11.5,25.5 - parent: 1 - type: Transform - - uid: 3344 - components: - - pos: -12.5,25.5 - parent: 1 - type: Transform - - uid: 3345 - components: - - pos: -12.5,24.5 - parent: 1 - type: Transform - - uid: 3346 - components: - - pos: -12.5,23.5 - parent: 1 - type: Transform - - uid: 3347 - components: - - pos: -12.5,22.5 - parent: 1 - type: Transform - - uid: 3348 - components: - - pos: -12.5,21.5 - parent: 1 - type: Transform - - uid: 3362 - components: - - pos: -12.5,20.5 - parent: 1 - type: Transform - - uid: 3363 - components: - - pos: -12.5,19.5 - parent: 1 - type: Transform - - uid: 3364 - components: - - pos: -12.5,18.5 - parent: 1 - type: Transform - - uid: 3365 - components: - - pos: -12.5,17.5 - parent: 1 - type: Transform - - uid: 3366 - components: - - pos: -12.5,16.5 - parent: 1 - type: Transform - - uid: 3367 - components: - - pos: -12.5,15.5 - parent: 1 - type: Transform - - uid: 3368 - components: - - pos: -12.5,14.5 - parent: 1 - type: Transform - - uid: 3369 - components: - - pos: -12.5,13.5 - parent: 1 - type: Transform - - uid: 3370 - components: - - pos: -12.5,12.5 - parent: 1 - type: Transform - - uid: 3371 - components: - - pos: -12.5,11.5 - parent: 1 - type: Transform - - uid: 3372 - components: - - pos: -12.5,10.5 - parent: 1 - type: Transform - - uid: 3373 - components: - - pos: -12.5,9.5 - parent: 1 - type: Transform - - uid: 3374 - components: - - pos: -12.5,8.5 - parent: 1 - type: Transform - - uid: 3375 - components: - - pos: -12.5,7.5 - parent: 1 - type: Transform - - uid: 3376 - components: - - pos: -12.5,6.5 - parent: 1 - type: Transform - - uid: 3377 - components: - - pos: -12.5,5.5 - parent: 1 - type: Transform - - uid: 3378 - components: - - pos: -11.5,5.5 - parent: 1 - type: Transform - - uid: 3379 - components: - - pos: -10.5,5.5 - parent: 1 - type: Transform - - uid: 3380 - components: - - pos: -9.5,5.5 - parent: 1 - type: Transform - - uid: 3381 - components: - - pos: -8.5,5.5 - parent: 1 - type: Transform - - uid: 3382 - components: - - pos: -7.5,5.5 - parent: 1 - type: Transform - - uid: 3383 - components: - - pos: -6.5,5.5 - parent: 1 - type: Transform - - uid: 3384 - components: - - pos: -12.5,26.5 - parent: 1 - type: Transform - - uid: 3385 - components: - - pos: -12.5,27.5 - parent: 1 - type: Transform - - uid: 3386 - components: - - pos: -12.5,28.5 - parent: 1 - type: Transform - - uid: 3387 - components: - - pos: -12.5,29.5 - parent: 1 - type: Transform - - uid: 3388 - components: - - pos: -12.5,30.5 - parent: 1 - type: Transform - - uid: 3389 - components: - - pos: -12.5,31.5 - parent: 1 - type: Transform - - uid: 3390 - components: - - pos: -12.5,32.5 - parent: 1 - type: Transform - - uid: 3477 - components: - - pos: -22.5,62.5 - parent: 1 - type: Transform - - uid: 3478 - components: - - pos: -22.5,60.5 - parent: 1 - type: Transform - - uid: 3907 - components: - - pos: -13.5,5.5 - parent: 1 - type: Transform - - uid: 3908 - components: - - pos: -14.5,5.5 - parent: 1 - type: Transform - - uid: 3909 - components: - - pos: -15.5,5.5 - parent: 1 - type: Transform - - uid: 3910 - components: - - pos: -16.5,5.5 - parent: 1 - type: Transform - - uid: 3911 - components: - - pos: -17.5,5.5 - parent: 1 - type: Transform - - uid: 3912 - components: - - pos: -18.5,5.5 - parent: 1 - type: Transform - - uid: 3913 - components: - - pos: -19.5,5.5 - parent: 1 - type: Transform - - uid: 3914 - components: - - pos: -20.5,5.5 - parent: 1 - type: Transform - - uid: 3915 - components: - - pos: -21.5,5.5 - parent: 1 - type: Transform - - uid: 3916 - components: - - pos: -22.5,5.5 - parent: 1 - type: Transform - - uid: 3917 - components: - - pos: -23.5,5.5 - parent: 1 - type: Transform - - uid: 3918 - components: - - pos: -24.5,5.5 - parent: 1 - type: Transform - - uid: 3919 - components: - - pos: -25.5,5.5 - parent: 1 - type: Transform - - uid: 3920 - components: - - pos: -26.5,5.5 - parent: 1 - type: Transform - - uid: 3921 - components: - - pos: -27.5,5.5 - parent: 1 - type: Transform - - uid: 3922 - components: - - pos: -28.5,5.5 - parent: 1 - type: Transform - - uid: 3923 - components: - - pos: -29.5,5.5 - parent: 1 - type: Transform - - uid: 3924 - components: - - pos: -30.5,5.5 - parent: 1 - type: Transform - - uid: 3925 - components: - - pos: -31.5,5.5 - parent: 1 - type: Transform - - uid: 3926 - components: - - pos: -32.5,5.5 - parent: 1 - type: Transform - - uid: 3927 - components: - - pos: -33.5,5.5 - parent: 1 - type: Transform - - uid: 3928 - components: - - pos: -34.5,5.5 - parent: 1 - type: Transform - - uid: 3929 - components: - - pos: -35.5,5.5 - parent: 1 - type: Transform - - uid: 3930 - components: - - pos: -36.5,5.5 - parent: 1 - type: Transform - - uid: 3931 - components: - - pos: -37.5,5.5 - parent: 1 - type: Transform - - uid: 3976 - components: - - pos: -15.5,4.5 - parent: 1 - type: Transform - - uid: 3977 - components: - - pos: -15.5,3.5 - parent: 1 - type: Transform - - uid: 3978 - components: - - pos: -15.5,2.5 - parent: 1 - type: Transform - - uid: 3979 - components: - - pos: -15.5,1.5 - parent: 1 - type: Transform - - uid: 3980 - components: - - pos: -16.5,1.5 - parent: 1 - type: Transform - - uid: 3981 - components: - - pos: -17.5,1.5 - parent: 1 - type: Transform - - uid: 3982 - components: - - pos: -18.5,1.5 - parent: 1 - type: Transform - - uid: 3983 - components: - - pos: -19.5,1.5 - parent: 1 - type: Transform - - uid: 3984 - components: - - pos: -20.5,1.5 - parent: 1 - type: Transform - - uid: 3985 - components: - - pos: -21.5,1.5 - parent: 1 - type: Transform - - uid: 3986 - components: - - pos: -21.5,0.5 - parent: 1 - type: Transform - - uid: 3987 - components: - - pos: -21.5,-0.5 - parent: 1 - type: Transform - - uid: 3988 - components: - - pos: -21.5,-1.5 - parent: 1 - type: Transform - - uid: 3989 - components: - - pos: -21.5,-2.5 - parent: 1 - type: Transform - - uid: 3990 - components: - - pos: -21.5,-3.5 - parent: 1 - type: Transform - - uid: 3991 - components: - - pos: -21.5,-4.5 - parent: 1 - type: Transform - - uid: 3992 - components: - - pos: -22.5,-4.5 - parent: 1 - type: Transform - - uid: 3993 - components: - - pos: -23.5,-4.5 - parent: 1 - type: Transform - - uid: 3994 - components: - - pos: -24.5,-4.5 - parent: 1 - type: Transform - - uid: 3995 - components: - - pos: -24.5,-3.5 - parent: 1 - type: Transform - - uid: 3996 - components: - - pos: -21.5,-5.5 - parent: 1 - type: Transform - - uid: 3997 - components: - - pos: -21.5,-6.5 - parent: 1 - type: Transform - - uid: 3998 - components: - - pos: -21.5,-7.5 - parent: 1 - type: Transform - - uid: 3999 - components: - - pos: -22.5,-7.5 - parent: 1 - type: Transform - - uid: 4000 - components: - - pos: -23.5,-7.5 - parent: 1 - type: Transform - - uid: 4001 - components: - - pos: -24.5,-7.5 - parent: 1 - type: Transform - - uid: 4002 - components: - - pos: -25.5,-7.5 - parent: 1 - type: Transform - - uid: 4003 - components: - - pos: -26.5,-7.5 - parent: 1 - type: Transform - - uid: 4004 - components: - - pos: -26.5,-6.5 - parent: 1 - type: Transform - - uid: 4005 - components: - - pos: -27.5,-6.5 - parent: 1 - type: Transform - - uid: 4006 - components: - - pos: -28.5,-6.5 - parent: 1 - type: Transform - - uid: 4007 - components: - - pos: -28.5,-5.5 - parent: 1 - type: Transform - - uid: 4008 - components: - - pos: -28.5,-4.5 - parent: 1 - type: Transform - - uid: 4009 - components: - - pos: -28.5,-3.5 - parent: 1 - type: Transform - - uid: 4010 - components: - - pos: -28.5,-2.5 - parent: 1 - type: Transform - - uid: 4011 - components: - - pos: -28.5,-1.5 - parent: 1 - type: Transform - - uid: 4012 - components: - - pos: -28.5,-0.5 - parent: 1 - type: Transform - - uid: 4013 - components: - - pos: -28.5,0.5 - parent: 1 - type: Transform - - uid: 4014 - components: - - pos: -28.5,1.5 - parent: 1 - type: Transform - - uid: 4015 - components: - - pos: -28.5,2.5 - parent: 1 - type: Transform - - uid: 4016 - components: - - pos: -28.5,3.5 - parent: 1 - type: Transform - - uid: 4017 - components: - - pos: -28.5,4.5 - parent: 1 - type: Transform - - uid: 4018 - components: - - pos: -37.5,6.5 - parent: 1 - type: Transform - - uid: 4019 - components: - - pos: -37.5,7.5 - parent: 1 - type: Transform - - uid: 4020 - components: - - pos: -37.5,8.5 - parent: 1 - type: Transform - - uid: 4021 - components: - - pos: -37.5,9.5 - parent: 1 - type: Transform - - uid: 4022 - components: - - pos: -37.5,10.5 - parent: 1 - type: Transform - - uid: 4023 - components: - - pos: -37.5,11.5 - parent: 1 - type: Transform - - uid: 4024 - components: - - pos: -37.5,12.5 - parent: 1 - type: Transform - - uid: 4025 - components: - - pos: -37.5,13.5 - parent: 1 - type: Transform - - uid: 4026 - components: - - pos: -37.5,14.5 - parent: 1 - type: Transform - - uid: 4027 - components: - - pos: -37.5,15.5 - parent: 1 - type: Transform - - uid: 4028 - components: - - pos: -37.5,16.5 - parent: 1 - type: Transform - - uid: 4029 - components: - - pos: -37.5,17.5 - parent: 1 - type: Transform - - uid: 4030 - components: - - pos: -37.5,18.5 - parent: 1 - type: Transform - - uid: 4031 - components: - - pos: -37.5,19.5 - parent: 1 - type: Transform - - uid: 4032 - components: - - pos: -37.5,20.5 - parent: 1 - type: Transform - - uid: 4033 - components: - - pos: -37.5,21.5 - parent: 1 - type: Transform - - uid: 4034 - components: - - pos: -37.5,22.5 - parent: 1 - type: Transform - - uid: 4035 - components: - - pos: -37.5,23.5 - parent: 1 - type: Transform - - uid: 4036 - components: - - pos: -37.5,24.5 - parent: 1 - type: Transform - - uid: 4037 - components: - - pos: -37.5,25.5 - parent: 1 - type: Transform - - uid: 4038 - components: - - pos: -37.5,26.5 - parent: 1 - type: Transform - - uid: 4039 - components: - - pos: -37.5,27.5 - parent: 1 - type: Transform - - uid: 4040 - components: - - pos: -37.5,28.5 - parent: 1 - type: Transform - - uid: 4041 - components: - - pos: -37.5,29.5 - parent: 1 - type: Transform - - uid: 4042 - components: - - pos: -37.5,30.5 - parent: 1 - type: Transform - - uid: 4043 - components: - - pos: -37.5,31.5 - parent: 1 - type: Transform - - uid: 4044 - components: - - pos: -37.5,32.5 - parent: 1 - type: Transform - - uid: 4045 - components: - - pos: -36.5,32.5 - parent: 1 - type: Transform - - uid: 4046 - components: - - pos: -35.5,32.5 - parent: 1 - type: Transform - - uid: 4047 - components: - - pos: -34.5,32.5 - parent: 1 - type: Transform - - uid: 4048 - components: - - pos: -33.5,32.5 - parent: 1 - type: Transform - - uid: 4049 - components: - - pos: -32.5,32.5 - parent: 1 - type: Transform - - uid: 4050 - components: - - pos: -31.5,32.5 - parent: 1 - type: Transform - - uid: 4051 - components: - - pos: -30.5,32.5 - parent: 1 - type: Transform - - uid: 4052 - components: - - pos: -29.5,32.5 - parent: 1 - type: Transform - - uid: 4053 - components: - - pos: -28.5,32.5 - parent: 1 - type: Transform - - uid: 4054 - components: - - pos: -27.5,32.5 - parent: 1 - type: Transform - - uid: 4055 - components: - - pos: -26.5,32.5 - parent: 1 - type: Transform - - uid: 4056 - components: - - pos: -25.5,32.5 - parent: 1 - type: Transform - - uid: 4057 - components: - - pos: -24.5,32.5 - parent: 1 - type: Transform - - uid: 4058 - components: - - pos: -23.5,32.5 - parent: 1 - type: Transform - - uid: 4059 - components: - - pos: -22.5,32.5 - parent: 1 - type: Transform - - uid: 4060 - components: - - pos: -21.5,32.5 - parent: 1 - type: Transform - - uid: 4061 - components: - - pos: -20.5,32.5 - parent: 1 - type: Transform - - uid: 4062 - components: - - pos: -19.5,32.5 - parent: 1 - type: Transform - - uid: 4063 - components: - - pos: -18.5,32.5 - parent: 1 - type: Transform - - uid: 4064 - components: - - pos: -17.5,32.5 - parent: 1 - type: Transform - - uid: 4065 - components: - - pos: -16.5,32.5 - parent: 1 - type: Transform - - uid: 4066 - components: - - pos: -15.5,32.5 - parent: 1 - type: Transform - - uid: 4067 - components: - - pos: -14.5,32.5 - parent: 1 - type: Transform - - uid: 4068 - components: - - pos: -13.5,32.5 - parent: 1 - type: Transform - - uid: 4378 - components: - - pos: -38.5,21.5 - parent: 1 - type: Transform - - uid: 4379 - components: - - pos: -39.5,21.5 - parent: 1 - type: Transform - - uid: 4380 - components: - - pos: -40.5,21.5 - parent: 1 - type: Transform - - uid: 4381 - components: - - pos: -41.5,21.5 - parent: 1 - type: Transform - - uid: 4382 - components: - - pos: -42.5,21.5 - parent: 1 - type: Transform - - uid: 4383 - components: - - pos: -43.5,21.5 - parent: 1 - type: Transform - - uid: 4384 - components: - - pos: -44.5,21.5 - parent: 1 - type: Transform - - uid: 4385 - components: - - pos: -45.5,21.5 - parent: 1 - type: Transform - - uid: 4386 - components: - - pos: -46.5,21.5 - parent: 1 - type: Transform - - uid: 4387 - components: - - pos: -47.5,21.5 - parent: 1 - type: Transform - - uid: 4388 - components: - - pos: -48.5,21.5 - parent: 1 - type: Transform - - uid: 4389 - components: - - pos: -49.5,21.5 - parent: 1 - type: Transform - - uid: 4390 - components: - - pos: -50.5,21.5 - parent: 1 - type: Transform - - uid: 4391 - components: - - pos: -50.5,20.5 - parent: 1 - type: Transform - - uid: 4392 - components: - - pos: -50.5,19.5 - parent: 1 - type: Transform - - uid: 4393 - components: - - pos: -50.5,18.5 - parent: 1 - type: Transform - - uid: 4394 - components: - - pos: -50.5,17.5 - parent: 1 - type: Transform - - uid: 4395 - components: - - pos: -50.5,16.5 - parent: 1 - type: Transform - - uid: 4396 - components: - - pos: -50.5,15.5 - parent: 1 - type: Transform - - uid: 4397 - components: - - pos: -50.5,14.5 - parent: 1 - type: Transform - - uid: 4398 - components: - - pos: -49.5,14.5 - parent: 1 - type: Transform - - uid: 4399 - components: - - pos: -48.5,14.5 - parent: 1 - type: Transform - - uid: 4400 - components: - - pos: -47.5,14.5 - parent: 1 - type: Transform - - uid: 4401 - components: - - pos: -46.5,14.5 - parent: 1 - type: Transform - - uid: 4402 - components: - - pos: -45.5,14.5 - parent: 1 - type: Transform - - uid: 4403 - components: - - pos: -44.5,14.5 - parent: 1 - type: Transform - - uid: 4404 - components: - - pos: -43.5,14.5 - parent: 1 - type: Transform - - uid: 4405 - components: - - pos: -42.5,14.5 - parent: 1 - type: Transform - - uid: 4406 - components: - - pos: -41.5,14.5 - parent: 1 - type: Transform - - uid: 4407 - components: - - pos: -41.5,15.5 - parent: 1 - type: Transform - - uid: 4408 - components: - - pos: -40.5,15.5 - parent: 1 - type: Transform - - uid: 4409 - components: - - pos: -44.5,13.5 - parent: 1 - type: Transform - - uid: 4410 - components: - - pos: -44.5,12.5 - parent: 1 - type: Transform - - uid: 4411 - components: - - pos: -44.5,11.5 - parent: 1 - type: Transform - - uid: 4412 - components: - - pos: -44.5,10.5 - parent: 1 - type: Transform - - uid: 4413 - components: - - pos: -44.5,9.5 - parent: 1 - type: Transform - - uid: 4414 - components: - - pos: -44.5,8.5 - parent: 1 - type: Transform - - uid: 4415 - components: - - pos: -44.5,7.5 - parent: 1 - type: Transform - - uid: 4416 - components: - - pos: -44.5,6.5 - parent: 1 - type: Transform - - uid: 4417 - components: - - pos: -44.5,5.5 - parent: 1 - type: Transform - - uid: 4418 - components: - - pos: -43.5,5.5 - parent: 1 - type: Transform - - uid: 4419 - components: - - pos: -42.5,5.5 - parent: 1 - type: Transform - - uid: 4420 - components: - - pos: -41.5,5.5 - parent: 1 - type: Transform - - uid: 4421 - components: - - pos: -40.5,5.5 - parent: 1 - type: Transform - - uid: 4422 - components: - - pos: -39.5,5.5 - parent: 1 - type: Transform - - uid: 4423 - components: - - pos: -38.5,5.5 - parent: 1 - type: Transform - - uid: 4711 - components: - - pos: 15.5,37.5 - parent: 1 - type: Transform - - uid: 5181 - components: - - pos: -60.5,7.5 - parent: 1 - type: Transform - - uid: 5186 - components: - - pos: -89.5,19.5 - parent: 1 - type: Transform - - uid: 5502 - components: - - pos: -16.5,17.5 - parent: 1 - type: Transform - - uid: 5504 - components: - - pos: -15.5,17.5 - parent: 1 - type: Transform - - uid: 5572 - components: - - pos: -20.5,19.5 - parent: 1 - type: Transform - - uid: 5575 - components: - - pos: -17.5,20.5 - parent: 1 - type: Transform - - uid: 5662 - components: - - pos: -15.5,20.5 - parent: 1 - type: Transform - - uid: 5664 - components: - - pos: -14.5,20.5 - parent: 1 - type: Transform - - uid: 5667 - components: - - pos: -16.5,20.5 - parent: 1 - type: Transform - - uid: 5678 - components: - - pos: -19.5,17.5 - parent: 1 - type: Transform - - uid: 5682 - components: - - pos: -20.5,17.5 - parent: 1 - type: Transform - - uid: 5721 - components: - - pos: -17.5,17.5 - parent: 1 - type: Transform - - uid: 6083 - components: - - pos: -16.5,33.5 - parent: 1 - type: Transform - - uid: 6084 - components: - - pos: -16.5,34.5 - parent: 1 - type: Transform - - uid: 6085 - components: - - pos: -16.5,35.5 - parent: 1 - type: Transform - - uid: 6086 - components: - - pos: -16.5,36.5 - parent: 1 - type: Transform - - uid: 6087 - components: - - pos: -16.5,37.5 - parent: 1 - type: Transform - - uid: 6088 - components: - - pos: -16.5,38.5 - parent: 1 - type: Transform - - uid: 6089 - components: - - pos: -16.5,39.5 - parent: 1 - type: Transform - - uid: 6090 - components: - - pos: -16.5,40.5 - parent: 1 - type: Transform - - uid: 6091 - components: - - pos: -16.5,41.5 - parent: 1 - type: Transform - - uid: 6092 - components: - - pos: -16.5,42.5 - parent: 1 - type: Transform - - uid: 6093 - components: - - pos: -16.5,43.5 - parent: 1 - type: Transform - - uid: 6094 - components: - - pos: -16.5,44.5 - parent: 1 - type: Transform - - uid: 6095 - components: - - pos: -16.5,45.5 - parent: 1 - type: Transform - - uid: 6096 - components: - - pos: -16.5,46.5 - parent: 1 - type: Transform - - uid: 6097 - components: - - pos: -16.5,47.5 - parent: 1 - type: Transform - - uid: 6098 - components: - - pos: -16.5,48.5 - parent: 1 - type: Transform - - uid: 6099 - components: - - pos: -16.5,49.5 - parent: 1 - type: Transform - - uid: 6100 - components: - - pos: -16.5,50.5 - parent: 1 - type: Transform - - uid: 6101 - components: - - pos: -16.5,51.5 - parent: 1 - type: Transform - - uid: 6102 - components: - - pos: -15.5,51.5 - parent: 1 - type: Transform - - uid: 6103 - components: - - pos: -14.5,51.5 - parent: 1 - type: Transform - - uid: 6104 - components: - - pos: -13.5,51.5 - parent: 1 - type: Transform - - uid: 6105 - components: - - pos: -12.5,51.5 - parent: 1 - type: Transform - - uid: 6106 - components: - - pos: -11.5,51.5 - parent: 1 - type: Transform - - uid: 6107 - components: - - pos: -10.5,51.5 - parent: 1 - type: Transform - - uid: 6108 - components: - - pos: -9.5,51.5 - parent: 1 - type: Transform - - uid: 6109 - components: - - pos: -8.5,51.5 - parent: 1 - type: Transform - - uid: 6110 - components: - - pos: -7.5,51.5 - parent: 1 - type: Transform - - uid: 6111 - components: - - pos: -7.5,50.5 - parent: 1 - type: Transform - - uid: 6112 - components: - - pos: -7.5,49.5 - parent: 1 - type: Transform - - uid: 6113 - components: - - pos: -7.5,48.5 - parent: 1 - type: Transform - - uid: 6114 - components: - - pos: -7.5,47.5 - parent: 1 - type: Transform - - uid: 6115 - components: - - pos: -6.5,47.5 - parent: 1 - type: Transform - - uid: 6116 - components: - - pos: -5.5,47.5 - parent: 1 - type: Transform - - uid: 6117 - components: - - pos: -4.5,47.5 - parent: 1 - type: Transform - - uid: 6118 - components: - - pos: -3.5,47.5 - parent: 1 - type: Transform - - uid: 6119 - components: - - pos: -2.5,47.5 - parent: 1 - type: Transform - - uid: 6120 - components: - - pos: -1.5,47.5 - parent: 1 - type: Transform - - uid: 6121 - components: - - pos: -0.5,47.5 - parent: 1 - type: Transform - - uid: 6122 - components: - - pos: 0.5,47.5 - parent: 1 - type: Transform - - uid: 6123 - components: - - pos: 1.5,47.5 - parent: 1 - type: Transform - - uid: 6124 - components: - - pos: 2.5,47.5 - parent: 1 - type: Transform - - uid: 6125 - components: - - pos: 3.5,47.5 - parent: 1 - type: Transform - - uid: 6126 - components: - - pos: 4.5,47.5 - parent: 1 - type: Transform - - uid: 6127 - components: - - pos: 5.5,47.5 - parent: 1 - type: Transform - - uid: 6128 - components: - - pos: 6.5,47.5 - parent: 1 - type: Transform - - uid: 6129 - components: - - pos: 7.5,47.5 - parent: 1 - type: Transform - - uid: 6130 - components: - - pos: 7.5,48.5 - parent: 1 - type: Transform - - uid: 6131 - components: - - pos: 8.5,48.5 - parent: 1 - type: Transform - - uid: 6132 - components: - - pos: 9.5,48.5 - parent: 1 - type: Transform - - uid: 6133 - components: - - pos: 10.5,48.5 - parent: 1 - type: Transform - - uid: 6134 - components: - - pos: 11.5,48.5 - parent: 1 - type: Transform - - uid: 6135 - components: - - pos: 12.5,48.5 - parent: 1 - type: Transform - - uid: 6136 - components: - - pos: 13.5,48.5 - parent: 1 - type: Transform - - uid: 6137 - components: - - pos: 14.5,48.5 - parent: 1 - type: Transform - - uid: 6138 - components: - - pos: 15.5,48.5 - parent: 1 - type: Transform - - uid: 6139 - components: - - pos: 15.5,47.5 - parent: 1 - type: Transform - - uid: 6140 - components: - - pos: 15.5,46.5 - parent: 1 - type: Transform - - uid: 6141 - components: - - pos: 15.5,45.5 - parent: 1 - type: Transform - - uid: 6142 - components: - - pos: 16.5,45.5 - parent: 1 - type: Transform - - uid: 6143 - components: - - pos: 17.5,45.5 - parent: 1 - type: Transform - - uid: 6145 - components: - - pos: 18.5,46.5 - parent: 1 - type: Transform - - uid: 6146 - components: - - pos: 15.5,44.5 - parent: 1 - type: Transform - - uid: 6147 - components: - - pos: 15.5,43.5 - parent: 1 - type: Transform - - uid: 6148 - components: - - pos: 15.5,42.5 - parent: 1 - type: Transform - - uid: 6149 - components: - - pos: 15.5,41.5 - parent: 1 - type: Transform - - uid: 6150 - components: - - pos: 15.5,40.5 - parent: 1 - type: Transform - - uid: 6151 - components: - - pos: 15.5,39.5 - parent: 1 - type: Transform - - uid: 6152 - components: - - pos: 15.5,38.5 - parent: 1 - type: Transform - - uid: 6155 - components: - - pos: 15.5,35.5 - parent: 1 - type: Transform - - uid: 6156 - components: - - pos: 16.5,35.5 - parent: 1 - type: Transform - - uid: 6157 - components: - - pos: 17.5,35.5 - parent: 1 - type: Transform - - uid: 6158 - components: - - pos: 18.5,35.5 - parent: 1 - type: Transform - - uid: 6159 - components: - - pos: 19.5,35.5 - parent: 1 - type: Transform - - uid: 6160 - components: - - pos: 20.5,35.5 - parent: 1 - type: Transform - - uid: 6161 - components: - - pos: 21.5,35.5 - parent: 1 - type: Transform - - uid: 6162 - components: - - pos: 22.5,35.5 - parent: 1 - type: Transform - - uid: 6163 - components: - - pos: 23.5,35.5 - parent: 1 - type: Transform - - uid: 6164 - components: - - pos: 23.5,34.5 - parent: 1 - type: Transform - - uid: 6165 - components: - - pos: 23.5,33.5 - parent: 1 - type: Transform - - uid: 6166 - components: - - pos: 23.5,32.5 - parent: 1 - type: Transform - - uid: 6167 - components: - - pos: 23.5,31.5 - parent: 1 - type: Transform - - uid: 6168 - components: - - pos: 23.5,30.5 - parent: 1 - type: Transform - - uid: 6169 - components: - - pos: 23.5,29.5 - parent: 1 - type: Transform - - uid: 6170 - components: - - pos: 23.5,28.5 - parent: 1 - type: Transform - - uid: 6171 - components: - - pos: 23.5,27.5 - parent: 1 - type: Transform - - uid: 6172 - components: - - pos: 23.5,26.5 - parent: 1 - type: Transform - - uid: 6173 - components: - - pos: 23.5,25.5 - parent: 1 - type: Transform - - uid: 6174 - components: - - pos: 23.5,24.5 - parent: 1 - type: Transform - - uid: 6175 - components: - - pos: 23.5,23.5 - parent: 1 - type: Transform - - uid: 6176 - components: - - pos: 23.5,22.5 - parent: 1 - type: Transform - - uid: 6177 - components: - - pos: 23.5,21.5 - parent: 1 - type: Transform - - uid: 6178 - components: - - pos: 23.5,20.5 - parent: 1 - type: Transform - - uid: 6179 - components: - - pos: 23.5,19.5 - parent: 1 - type: Transform - - uid: 6180 - components: - - pos: 24.5,19.5 - parent: 1 - type: Transform - - uid: 6181 - components: - - pos: 25.5,19.5 - parent: 1 - type: Transform - - uid: 6182 - components: - - pos: 26.5,19.5 - parent: 1 - type: Transform - - uid: 6183 - components: - - pos: 26.5,18.5 - parent: 1 - type: Transform - - uid: 6184 - components: - - pos: 26.5,17.5 - parent: 1 - type: Transform - - uid: 6185 - components: - - pos: 26.5,16.5 - parent: 1 - type: Transform - - uid: 6186 - components: - - pos: 26.5,15.5 - parent: 1 - type: Transform - - uid: 6187 - components: - - pos: 26.5,14.5 - parent: 1 - type: Transform - - uid: 6188 - components: - - pos: 26.5,13.5 - parent: 1 - type: Transform - - uid: 6189 - components: - - pos: 26.5,12.5 - parent: 1 - type: Transform - - uid: 6190 - components: - - pos: 26.5,11.5 - parent: 1 - type: Transform - - uid: 6191 - components: - - pos: 26.5,10.5 - parent: 1 - type: Transform - - uid: 6192 - components: - - pos: 26.5,9.5 - parent: 1 - type: Transform - - uid: 6193 - components: - - pos: 26.5,8.5 - parent: 1 - type: Transform - - uid: 6194 - components: - - pos: 26.5,7.5 - parent: 1 - type: Transform - - uid: 6195 - components: - - pos: 26.5,6.5 - parent: 1 - type: Transform - - uid: 6265 - components: - - pos: 15.5,36.5 - parent: 1 - type: Transform - - uid: 6320 - components: - - pos: -20.5,64.5 - parent: 1 - type: Transform - - uid: 6526 - components: - - pos: -18.5,64.5 - parent: 1 - type: Transform - - uid: 6529 - components: - - pos: -16.5,52.5 - parent: 1 - type: Transform - - uid: 6530 - components: - - pos: -16.5,53.5 - parent: 1 - type: Transform - - uid: 6531 - components: - - pos: -16.5,54.5 - parent: 1 - type: Transform - - uid: 6532 - components: - - pos: -16.5,55.5 - parent: 1 - type: Transform - - uid: 6533 - components: - - pos: -15.5,55.5 - parent: 1 - type: Transform - - uid: 6534 - components: - - pos: -14.5,55.5 - parent: 1 - type: Transform - - uid: 6535 - components: - - pos: -13.5,55.5 - parent: 1 - type: Transform - - uid: 6536 - components: - - pos: -12.5,55.5 - parent: 1 - type: Transform - - uid: 6537 - components: - - pos: -11.5,55.5 - parent: 1 - type: Transform - - uid: 6538 - components: - - pos: -10.5,55.5 - parent: 1 - type: Transform - - uid: 6539 - components: - - pos: -9.5,55.5 - parent: 1 - type: Transform - - uid: 6540 - components: - - pos: -8.5,55.5 - parent: 1 - type: Transform - - uid: 6541 - components: - - pos: -7.5,55.5 - parent: 1 - type: Transform - - uid: 6542 - components: - - pos: -6.5,55.5 - parent: 1 - type: Transform - - uid: 6543 - components: - - pos: -5.5,55.5 - parent: 1 - type: Transform - - uid: 6544 - components: - - pos: -4.5,55.5 - parent: 1 - type: Transform - - uid: 6545 - components: - - pos: -3.5,55.5 - parent: 1 - type: Transform - - uid: 6546 - components: - - pos: -3.5,56.5 - parent: 1 - type: Transform - - uid: 6550 - components: - - pos: -3.5,57.5 - parent: 1 - type: Transform - - uid: 6551 - components: - - pos: -4.5,57.5 - parent: 1 - type: Transform - - uid: 6552 - components: - - pos: -4.5,58.5 - parent: 1 - type: Transform - - uid: 6553 - components: - - pos: -4.5,59.5 - parent: 1 - type: Transform - - uid: 6554 - components: - - pos: -4.5,60.5 - parent: 1 - type: Transform - - uid: 6555 - components: - - pos: -4.5,61.5 - parent: 1 - type: Transform - - uid: 6557 - components: - - pos: -5.5,62.5 - parent: 1 - type: Transform - - uid: 6558 - components: - - pos: -6.5,62.5 - parent: 1 - type: Transform - - uid: 6559 - components: - - pos: -7.5,62.5 - parent: 1 - type: Transform - - uid: 6560 - components: - - pos: -8.5,62.5 - parent: 1 - type: Transform - - uid: 6561 - components: - - pos: -9.5,62.5 - parent: 1 - type: Transform - - uid: 6616 - components: - - pos: -15.5,56.5 - parent: 1 - type: Transform - - uid: 6617 - components: - - pos: -15.5,57.5 - parent: 1 - type: Transform - - uid: 6618 - components: - - pos: -15.5,58.5 - parent: 1 - type: Transform - - uid: 6619 - components: - - pos: -15.5,59.5 - parent: 1 - type: Transform - - uid: 6620 - components: - - pos: -15.5,60.5 - parent: 1 - type: Transform - - uid: 6621 - components: - - pos: -15.5,61.5 - parent: 1 - type: Transform - - uid: 6622 - components: - - pos: -15.5,62.5 - parent: 1 - type: Transform - - uid: 6623 - components: - - pos: -15.5,63.5 - parent: 1 - type: Transform - - uid: 6624 - components: - - pos: -15.5,64.5 - parent: 1 - type: Transform - - uid: 6625 - components: - - pos: -14.5,64.5 - parent: 1 - type: Transform - - uid: 6626 - components: - - pos: -13.5,64.5 - parent: 1 - type: Transform - - uid: 6627 - components: - - pos: -12.5,64.5 - parent: 1 - type: Transform - - uid: 6628 - components: - - pos: -11.5,64.5 - parent: 1 - type: Transform - - uid: 6629 - components: - - pos: -12.5,65.5 - parent: 1 - type: Transform - - uid: 6630 - components: - - pos: -11.5,65.5 - parent: 1 - type: Transform - - uid: 6631 - components: - - pos: -12.5,66.5 - parent: 1 - type: Transform - - uid: 6632 - components: - - pos: -13.5,66.5 - parent: 1 - type: Transform - - uid: 6633 - components: - - pos: -13.5,67.5 - parent: 1 - type: Transform - - uid: 6634 - components: - - pos: -14.5,67.5 - parent: 1 - type: Transform - - uid: 6635 - components: - - pos: -15.5,67.5 - parent: 1 - type: Transform - - uid: 6636 - components: - - pos: -16.5,67.5 - parent: 1 - type: Transform - - uid: 6637 - components: - - pos: -17.5,67.5 - parent: 1 - type: Transform - - uid: 6638 - components: - - pos: -18.5,67.5 - parent: 1 - type: Transform - - uid: 6639 - components: - - pos: -19.5,67.5 - parent: 1 - type: Transform - - uid: 6640 - components: - - pos: -19.5,66.5 - parent: 1 - type: Transform - - uid: 6641 - components: - - pos: -20.5,66.5 - parent: 1 - type: Transform - - uid: 6642 - components: - - pos: -20.5,65.5 - parent: 1 - type: Transform - - uid: 6643 - components: - - pos: -21.5,65.5 - parent: 1 - type: Transform - - uid: 6644 - components: - - pos: -21.5,64.5 - parent: 1 - type: Transform - - uid: 7285 - components: - - pos: -43.5,55.5 - parent: 1 - type: Transform - - uid: 7587 - components: - - pos: -19.5,51.5 - parent: 1 - type: Transform - - uid: 7588 - components: - - pos: -20.5,51.5 - parent: 1 - type: Transform - - uid: 7589 - components: - - pos: -21.5,51.5 - parent: 1 - type: Transform - - uid: 7590 - components: - - pos: -22.5,51.5 - parent: 1 - type: Transform - - uid: 7591 - components: - - pos: -23.5,51.5 - parent: 1 - type: Transform - - uid: 7592 - components: - - pos: -24.5,51.5 - parent: 1 - type: Transform - - uid: 7593 - components: - - pos: -25.5,50.5 - parent: 1 - type: Transform - - uid: 7594 - components: - - pos: -17.5,51.5 - parent: 1 - type: Transform - - uid: 7595 - components: - - pos: -24.5,50.5 - parent: 1 - type: Transform - - uid: 7596 - components: - - pos: -24.5,49.5 - parent: 1 - type: Transform - - uid: 7597 - components: - - pos: -24.5,48.5 - parent: 1 - type: Transform - - uid: 7598 - components: - - pos: -24.5,47.5 - parent: 1 - type: Transform - - uid: 7599 - components: - - pos: -24.5,46.5 - parent: 1 - type: Transform - - uid: 7600 - components: - - pos: -24.5,45.5 - parent: 1 - type: Transform - - uid: 7601 - components: - - pos: -24.5,44.5 - parent: 1 - type: Transform - - uid: 7602 - components: - - pos: -24.5,43.5 - parent: 1 - type: Transform - - uid: 7603 - components: - - pos: -24.5,42.5 - parent: 1 - type: Transform - - uid: 7604 - components: - - pos: -24.5,41.5 - parent: 1 - type: Transform - - uid: 7605 - components: - - pos: -24.5,40.5 - parent: 1 - type: Transform - - uid: 7606 - components: - - pos: -24.5,39.5 - parent: 1 - type: Transform - - uid: 7607 - components: - - pos: -24.5,38.5 - parent: 1 - type: Transform - - uid: 7608 - components: - - pos: -24.5,37.5 - parent: 1 - type: Transform - - uid: 7609 - components: - - pos: -24.5,36.5 - parent: 1 - type: Transform - - uid: 7610 - components: - - pos: -24.5,35.5 - parent: 1 - type: Transform - - uid: 7611 - components: - - pos: -24.5,34.5 - parent: 1 - type: Transform - - uid: 7612 - components: - - pos: -24.5,33.5 - parent: 1 - type: Transform - - uid: 7613 - components: - - pos: -26.5,50.5 - parent: 1 - type: Transform - - uid: 7614 - components: - - pos: -27.5,50.5 - parent: 1 - type: Transform - - uid: 7615 - components: - - pos: -28.5,50.5 - parent: 1 - type: Transform - - uid: 7616 - components: - - pos: -29.5,50.5 - parent: 1 - type: Transform - - uid: 7617 - components: - - pos: -30.5,50.5 - parent: 1 - type: Transform - - uid: 7618 - components: - - pos: -31.5,50.5 - parent: 1 - type: Transform - - uid: 7619 - components: - - pos: -32.5,50.5 - parent: 1 - type: Transform - - uid: 7620 - components: - - pos: -32.5,51.5 - parent: 1 - type: Transform - - uid: 7621 - components: - - pos: -32.5,52.5 - parent: 1 - type: Transform - - uid: 7622 - components: - - pos: -32.5,53.5 - parent: 1 - type: Transform - - uid: 7623 - components: - - pos: -32.5,54.5 - parent: 1 - type: Transform - - uid: 7624 - components: - - pos: -32.5,55.5 - parent: 1 - type: Transform - - uid: 7625 - components: - - pos: -33.5,55.5 - parent: 1 - type: Transform - - uid: 7626 - components: - - pos: -34.5,55.5 - parent: 1 - type: Transform - - uid: 7627 - components: - - pos: -34.5,56.5 - parent: 1 - type: Transform - - uid: 7628 - components: - - pos: -34.5,57.5 - parent: 1 - type: Transform - - uid: 7629 - components: - - pos: -35.5,57.5 - parent: 1 - type: Transform - - uid: 7630 - components: - - pos: -35.5,55.5 - parent: 1 - type: Transform - - uid: 7631 - components: - - pos: -36.5,55.5 - parent: 1 - type: Transform - - uid: 7632 - components: - - pos: -37.5,55.5 - parent: 1 - type: Transform - - uid: 7633 - components: - - pos: -38.5,55.5 - parent: 1 - type: Transform - - uid: 7634 - components: - - pos: -39.5,55.5 - parent: 1 - type: Transform - - uid: 7635 - components: - - pos: -40.5,55.5 - parent: 1 - type: Transform - - uid: 7636 - components: - - pos: -41.5,55.5 - parent: 1 - type: Transform - - uid: 7650 - components: - - pos: -47.5,47.5 - parent: 1 - type: Transform - - uid: 7651 - components: - - pos: -47.5,46.5 - parent: 1 - type: Transform - - uid: 7652 - components: - - pos: -47.5,45.5 - parent: 1 - type: Transform - - uid: 7653 - components: - - pos: -47.5,44.5 - parent: 1 - type: Transform - - uid: 7654 - components: - - pos: -47.5,43.5 - parent: 1 - type: Transform - - uid: 7655 - components: - - pos: -47.5,42.5 - parent: 1 - type: Transform - - uid: 7656 - components: - - pos: -47.5,41.5 - parent: 1 - type: Transform - - uid: 7657 - components: - - pos: -47.5,40.5 - parent: 1 - type: Transform - - uid: 7658 - components: - - pos: -47.5,39.5 - parent: 1 - type: Transform - - uid: 7659 - components: - - pos: -47.5,38.5 - parent: 1 - type: Transform - - uid: 7660 - components: - - pos: -47.5,37.5 - parent: 1 - type: Transform - - uid: 7661 - components: - - pos: -47.5,36.5 - parent: 1 - type: Transform - - uid: 7662 - components: - - pos: -47.5,35.5 - parent: 1 - type: Transform - - uid: 7663 - components: - - pos: -47.5,34.5 - parent: 1 - type: Transform - - uid: 7664 - components: - - pos: -47.5,33.5 - parent: 1 - type: Transform - - uid: 7665 - components: - - pos: -47.5,32.5 - parent: 1 - type: Transform - - uid: 7666 - components: - - pos: -46.5,32.5 - parent: 1 - type: Transform - - uid: 7667 - components: - - pos: -45.5,32.5 - parent: 1 - type: Transform - - uid: 7668 - components: - - pos: -44.5,32.5 - parent: 1 - type: Transform - - uid: 7669 - components: - - pos: -43.5,32.5 - parent: 1 - type: Transform - - uid: 7670 - components: - - pos: -42.5,32.5 - parent: 1 - type: Transform - - uid: 7671 - components: - - pos: -41.5,32.5 - parent: 1 - type: Transform - - uid: 7672 - components: - - pos: -40.5,32.5 - parent: 1 - type: Transform - - uid: 7673 - components: - - pos: -39.5,32.5 - parent: 1 - type: Transform - - uid: 7674 - components: - - pos: -38.5,32.5 - parent: 1 - type: Transform - - uid: 7675 - components: - - pos: -48.5,32.5 - parent: 1 - type: Transform - - uid: 7676 - components: - - pos: -49.5,32.5 - parent: 1 - type: Transform - - uid: 7677 - components: - - pos: -50.5,32.5 - parent: 1 - type: Transform - - uid: 7678 - components: - - pos: -51.5,32.5 - parent: 1 - type: Transform - - uid: 7679 - components: - - pos: -52.5,32.5 - parent: 1 - type: Transform - - uid: 7680 - components: - - pos: -53.5,32.5 - parent: 1 - type: Transform - - uid: 7681 - components: - - pos: -54.5,32.5 - parent: 1 - type: Transform - - uid: 7682 - components: - - pos: -55.5,32.5 - parent: 1 - type: Transform - - uid: 7683 - components: - - pos: -56.5,32.5 - parent: 1 - type: Transform - - uid: 7684 - components: - - pos: -57.5,32.5 - parent: 1 - type: Transform - - uid: 7685 - components: - - pos: -57.5,33.5 - parent: 1 - type: Transform - - uid: 7686 - components: - - pos: -57.5,34.5 - parent: 1 - type: Transform - - uid: 7687 - components: - - pos: -57.5,35.5 - parent: 1 - type: Transform - - uid: 7688 - components: - - pos: -57.5,36.5 - parent: 1 - type: Transform - - uid: 7689 - components: - - pos: -57.5,37.5 - parent: 1 - type: Transform - - uid: 7690 - components: - - pos: -57.5,38.5 - parent: 1 - type: Transform - - uid: 7691 - components: - - pos: -57.5,39.5 - parent: 1 - type: Transform - - uid: 7692 - components: - - pos: -57.5,40.5 - parent: 1 - type: Transform - - uid: 7693 - components: - - pos: -57.5,41.5 - parent: 1 - type: Transform - - uid: 7694 - components: - - pos: -57.5,42.5 - parent: 1 - type: Transform - - uid: 7695 - components: - - pos: -57.5,43.5 - parent: 1 - type: Transform - - uid: 7696 - components: - - pos: -57.5,44.5 - parent: 1 - type: Transform - - uid: 7697 - components: - - pos: -57.5,45.5 - parent: 1 - type: Transform - - uid: 7698 - components: - - pos: -57.5,46.5 - parent: 1 - type: Transform - - uid: 7699 - components: - - pos: -57.5,47.5 - parent: 1 - type: Transform - - uid: 7700 - components: - - pos: -56.5,47.5 - parent: 1 - type: Transform - - uid: 7701 - components: - - pos: -55.5,47.5 - parent: 1 - type: Transform - - uid: 7702 - components: - - pos: -54.5,47.5 - parent: 1 - type: Transform - - uid: 7703 - components: - - pos: -53.5,47.5 - parent: 1 - type: Transform - - uid: 7704 - components: - - pos: -52.5,47.5 - parent: 1 - type: Transform - - uid: 7705 - components: - - pos: -51.5,47.5 - parent: 1 - type: Transform - - uid: 7706 - components: - - pos: -50.5,47.5 - parent: 1 - type: Transform - - uid: 7707 - components: - - pos: -49.5,47.5 - parent: 1 - type: Transform - - uid: 7708 - components: - - pos: -48.5,47.5 - parent: 1 - type: Transform - - uid: 7720 - components: - - pos: -58.5,47.5 - parent: 1 - type: Transform - - uid: 7884 - components: - - pos: -44.5,55.5 - parent: 1 - type: Transform - - uid: 7885 - components: - - pos: -44.5,54.5 - parent: 1 - type: Transform - - uid: 7886 - components: - - pos: -44.5,53.5 - parent: 1 - type: Transform - - uid: 7887 - components: - - pos: -44.5,52.5 - parent: 1 - type: Transform - - uid: 7888 - components: - - pos: -44.5,51.5 - parent: 1 - type: Transform - - uid: 7889 - components: - - pos: -44.5,50.5 - parent: 1 - type: Transform - - uid: 7890 - components: - - pos: -44.5,49.5 - parent: 1 - type: Transform - - uid: 7891 - components: - - pos: -45.5,49.5 - parent: 1 - type: Transform - - uid: 7892 - components: - - pos: -46.5,49.5 - parent: 1 - type: Transform - - uid: 7893 - components: - - pos: -47.5,49.5 - parent: 1 - type: Transform - - uid: 7894 - components: - - pos: -47.5,48.5 - parent: 1 - type: Transform - - uid: 8474 - components: - - pos: -58.5,32.5 - parent: 1 - type: Transform - - uid: 8504 - components: - - pos: -58.5,18.5 - parent: 1 - type: Transform - - uid: 8505 - components: - - pos: -57.5,18.5 - parent: 1 - type: Transform - - uid: 8506 - components: - - pos: -57.5,19.5 - parent: 1 - type: Transform - - uid: 8507 - components: - - pos: -57.5,20.5 - parent: 1 - type: Transform - - uid: 8508 - components: - - pos: -57.5,21.5 - parent: 1 - type: Transform - - uid: 8509 - components: - - pos: -57.5,22.5 - parent: 1 - type: Transform - - uid: 8510 - components: - - pos: -57.5,23.5 - parent: 1 - type: Transform - - uid: 8511 - components: - - pos: -57.5,24.5 - parent: 1 - type: Transform - - uid: 8512 - components: - - pos: -57.5,25.5 - parent: 1 - type: Transform - - uid: 8513 - components: - - pos: -57.5,26.5 - parent: 1 - type: Transform - - uid: 8514 - components: - - pos: -57.5,27.5 - parent: 1 - type: Transform - - uid: 8515 - components: - - pos: -57.5,28.5 - parent: 1 - type: Transform - - uid: 8516 - components: - - pos: -57.5,29.5 - parent: 1 - type: Transform - - uid: 8517 - components: - - pos: -57.5,30.5 - parent: 1 - type: Transform - - uid: 8518 - components: - - pos: -57.5,31.5 - parent: 1 - type: Transform - - uid: 8548 - components: - - pos: -57.5,17.5 - parent: 1 - type: Transform - - uid: 8549 - components: - - pos: -57.5,16.5 - parent: 1 - type: Transform - - uid: 8550 - components: - - pos: -57.5,15.5 - parent: 1 - type: Transform - - uid: 8551 - components: - - pos: -57.5,14.5 - parent: 1 - type: Transform - - uid: 8552 - components: - - pos: -57.5,13.5 - parent: 1 - type: Transform - - uid: 8553 - components: - - pos: -57.5,12.5 - parent: 1 - type: Transform - - uid: 8554 - components: - - pos: -57.5,11.5 - parent: 1 - type: Transform - - uid: 8555 - components: - - pos: -57.5,10.5 - parent: 1 - type: Transform - - uid: 8556 - components: - - pos: -57.5,9.5 - parent: 1 - type: Transform - - uid: 8557 - components: - - pos: -57.5,8.5 - parent: 1 - type: Transform - - uid: 8558 - components: - - pos: -57.5,7.5 - parent: 1 - type: Transform - - uid: 8559 - components: - - pos: -57.5,6.5 - parent: 1 - type: Transform - - uid: 8560 - components: - - pos: -57.5,5.5 - parent: 1 - type: Transform - - uid: 8561 - components: - - pos: -56.5,5.5 - parent: 1 - type: Transform - - uid: 8562 - components: - - pos: -55.5,5.5 - parent: 1 - type: Transform - - uid: 8563 - components: - - pos: -54.5,5.5 - parent: 1 - type: Transform - - uid: 8564 - components: - - pos: -53.5,5.5 - parent: 1 - type: Transform - - uid: 8565 - components: - - pos: -52.5,5.5 - parent: 1 - type: Transform - - uid: 8566 - components: - - pos: -51.5,5.5 - parent: 1 - type: Transform - - uid: 8567 - components: - - pos: -50.5,5.5 - parent: 1 - type: Transform - - uid: 8568 - components: - - pos: -49.5,5.5 - parent: 1 - type: Transform - - uid: 8569 - components: - - pos: -48.5,5.5 - parent: 1 - type: Transform - - uid: 8570 - components: - - pos: -47.5,5.5 - parent: 1 - type: Transform - - uid: 8571 - components: - - pos: -46.5,5.5 - parent: 1 - type: Transform - - uid: 8572 - components: - - pos: -45.5,5.5 - parent: 1 - type: Transform - - uid: 8929 - components: - - pos: -42.5,55.5 - parent: 1 - type: Transform - - uid: 9061 - components: - - pos: -17.5,64.5 - parent: 1 - type: Transform - - uid: 9201 - components: - - pos: -64.5,36.5 - parent: 1 - type: Transform - - uid: 9308 - components: - - pos: -69.5,26.5 - parent: 1 - type: Transform - - uid: 9309 - components: - - pos: -69.5,28.5 - parent: 1 - type: Transform - - uid: 9489 - components: - - pos: -18.5,51.5 - parent: 1 - type: Transform - - uid: 9606 - components: - - pos: -80.5,27.5 - parent: 1 - type: Transform - - uid: 9607 - components: - - pos: -79.5,27.5 - parent: 1 - type: Transform - - uid: 9854 - components: - - pos: -69.5,23.5 - parent: 1 - type: Transform - - uid: 9859 - components: - - pos: -69.5,27.5 - parent: 1 - type: Transform - - uid: 9860 - components: - - pos: -79.5,26.5 - parent: 1 - type: Transform - - uid: 9914 - components: - - pos: -21.5,63.5 - parent: 1 - type: Transform - - uid: 9977 - components: - - pos: -22.5,63.5 - parent: 1 - type: Transform - - uid: 9978 - components: - - pos: -19.5,64.5 - parent: 1 - type: Transform - - uid: 9998 - components: - - pos: -59.5,47.5 - parent: 1 - type: Transform - - uid: 9999 - components: - - pos: -60.5,47.5 - parent: 1 - type: Transform - - uid: 10000 - components: - - pos: -61.5,47.5 - parent: 1 - type: Transform - - uid: 10001 - components: - - pos: -62.5,47.5 - parent: 1 - type: Transform - - uid: 10002 - components: - - pos: -63.5,47.5 - parent: 1 - type: Transform - - uid: 10003 - components: - - pos: -64.5,47.5 - parent: 1 - type: Transform - - uid: 10004 - components: - - pos: -65.5,47.5 - parent: 1 - type: Transform - - uid: 10005 - components: - - pos: -66.5,48.5 - parent: 1 - type: Transform - - uid: 10006 - components: - - pos: -66.5,49.5 - parent: 1 - type: Transform - - uid: 10008 - components: - - pos: -66.5,50.5 - parent: 1 - type: Transform - - uid: 10009 - components: - - pos: -67.5,50.5 - parent: 1 - type: Transform - - uid: 10010 - components: - - pos: -67.5,51.5 - parent: 1 - type: Transform - - uid: 10011 - components: - - pos: -67.5,52.5 - parent: 1 - type: Transform - - uid: 10012 - components: - - pos: -67.5,53.5 - parent: 1 - type: Transform - - uid: 10013 - components: - - pos: -67.5,54.5 - parent: 1 - type: Transform - - uid: 10014 - components: - - pos: -67.5,55.5 - parent: 1 - type: Transform - - uid: 10015 - components: - - pos: -67.5,56.5 - parent: 1 - type: Transform - - uid: 10016 - components: - - pos: -67.5,57.5 - parent: 1 - type: Transform - - uid: 10017 - components: - - pos: -66.5,57.5 - parent: 1 - type: Transform - - uid: 10018 - components: - - pos: -65.5,57.5 - parent: 1 - type: Transform - - uid: 10019 - components: - - pos: -65.5,58.5 - parent: 1 - type: Transform - - uid: 10020 - components: - - pos: -65.5,59.5 - parent: 1 - type: Transform - - uid: 10023 - components: - - pos: -60.5,19.5 - parent: 1 - type: Transform - - uid: 10024 - components: - - pos: -60.5,18.5 - parent: 1 - type: Transform - - uid: 10025 - components: - - pos: -60.5,17.5 - parent: 1 - type: Transform - - uid: 10026 - components: - - pos: -65.5,36.5 - parent: 1 - type: Transform - - uid: 10027 - components: - - pos: -66.5,36.5 - parent: 1 - type: Transform - - uid: 10028 - components: - - pos: -66.5,37.5 - parent: 1 - type: Transform - - uid: 10029 - components: - - pos: -66.5,38.5 - parent: 1 - type: Transform - - uid: 10030 - components: - - pos: -66.5,39.5 - parent: 1 - type: Transform - - uid: 10031 - components: - - pos: -66.5,40.5 - parent: 1 - type: Transform - - uid: 10032 - components: - - pos: -66.5,41.5 - parent: 1 - type: Transform - - uid: 10033 - components: - - pos: -66.5,42.5 - parent: 1 - type: Transform - - uid: 10034 - components: - - pos: -66.5,43.5 - parent: 1 - type: Transform - - uid: 10035 - components: - - pos: -66.5,44.5 - parent: 1 - type: Transform - - uid: 10036 - components: - - pos: -60.5,36.5 - parent: 1 - type: Transform - - uid: 10037 - components: - - pos: -60.5,35.5 - parent: 1 - type: Transform - - uid: 10038 - components: - - pos: -60.5,34.5 - parent: 1 - type: Transform - - uid: 10039 - components: - - pos: -60.5,33.5 - parent: 1 - type: Transform - - uid: 10040 - components: - - pos: -60.5,32.5 - parent: 1 - type: Transform - - uid: 10042 - components: - - pos: -60.5,31.5 - parent: 1 - type: Transform - - uid: 10043 - components: - - pos: -60.5,30.5 - parent: 1 - type: Transform - - uid: 10045 - components: - - pos: -60.5,29.5 - parent: 1 - type: Transform - - uid: 10047 - components: - - pos: -60.5,28.5 - parent: 1 - type: Transform - - uid: 10077 - components: - - pos: -60.5,27.5 - parent: 1 - type: Transform - - uid: 10078 - components: - - pos: -60.5,26.5 - parent: 1 - type: Transform - - uid: 10079 - components: - - pos: -60.5,25.5 - parent: 1 - type: Transform - - uid: 10090 - components: - - pos: -60.5,24.5 - parent: 1 - type: Transform - - uid: 10091 - components: - - pos: -60.5,23.5 - parent: 1 - type: Transform - - uid: 10096 - components: - - pos: -60.5,22.5 - parent: 1 - type: Transform - - uid: 10097 - components: - - pos: -60.5,21.5 - parent: 1 - type: Transform - - uid: 10098 - components: - - pos: -60.5,20.5 - parent: 1 - type: Transform - - uid: 10104 - components: - - pos: -61.5,17.5 - parent: 1 - type: Transform - - uid: 10105 - components: - - pos: -62.5,17.5 - parent: 1 - type: Transform - - uid: 10106 - components: - - pos: -63.5,17.5 - parent: 1 - type: Transform - - uid: 10107 - components: - - pos: -64.5,17.5 - parent: 1 - type: Transform - - uid: 10108 - components: - - pos: -65.5,17.5 - parent: 1 - type: Transform - - uid: 10109 - components: - - pos: -66.5,17.5 - parent: 1 - type: Transform - - uid: 10110 - components: - - pos: -66.5,16.5 - parent: 1 - type: Transform - - uid: 10111 - components: - - pos: -66.5,15.5 - parent: 1 - type: Transform - - uid: 10112 - components: - - pos: -66.5,14.5 - parent: 1 - type: Transform - - uid: 10113 - components: - - pos: -66.5,13.5 - parent: 1 - type: Transform - - uid: 10114 - components: - - pos: -66.5,12.5 - parent: 1 - type: Transform - - uid: 10115 - components: - - pos: -66.5,11.5 - parent: 1 - type: Transform - - uid: 10116 - components: - - pos: -66.5,10.5 - parent: 1 - type: Transform - - uid: 10117 - components: - - pos: -66.5,9.5 - parent: 1 - type: Transform - - uid: 10118 - components: - - pos: -66.5,8.5 - parent: 1 - type: Transform - - uid: 10119 - components: - - pos: -65.5,8.5 - parent: 1 - type: Transform - - uid: 10120 - components: - - pos: -64.5,8.5 - parent: 1 - type: Transform - - uid: 10121 - components: - - pos: -63.5,8.5 - parent: 1 - type: Transform - - uid: 10122 - components: - - pos: -62.5,8.5 - parent: 1 - type: Transform - - uid: 10123 - components: - - pos: -61.5,8.5 - parent: 1 - type: Transform - - uid: 10124 - components: - - pos: -60.5,8.5 - parent: 1 - type: Transform - - uid: 10125 - components: - - pos: -59.5,32.5 - parent: 1 - type: Transform - - uid: 10126 - components: - - pos: -62.5,36.5 - parent: 1 - type: Transform - - uid: 10130 - components: - - pos: -66.5,47.5 - parent: 1 - type: Transform - - uid: 10131 - components: - - pos: -61.5,36.5 - parent: 1 - type: Transform - - uid: 10132 - components: - - pos: -66.5,45.5 - parent: 1 - type: Transform - - uid: 10133 - components: - - pos: -66.5,46.5 - parent: 1 - type: Transform - - uid: 10134 - components: - - pos: -63.5,36.5 - parent: 1 - type: Transform - - uid: 10135 - components: - - pos: -63.5,35.5 - parent: 1 - type: Transform - - uid: 10136 - components: - - pos: -63.5,34.5 - parent: 1 - type: Transform - - uid: 10137 - components: - - pos: -63.5,33.5 - parent: 1 - type: Transform - - uid: 10138 - components: - - pos: -63.5,32.5 - parent: 1 - type: Transform - - uid: 10139 - components: - - pos: -62.5,32.5 - parent: 1 - type: Transform - - uid: 10140 - components: - - pos: -61.5,32.5 - parent: 1 - type: Transform - - uid: 10150 - components: - - pos: -65.5,21.5 - parent: 1 - type: Transform - - uid: 10151 - components: - - pos: -66.5,21.5 - parent: 1 - type: Transform - - uid: 10152 - components: - - pos: -67.5,21.5 - parent: 1 - type: Transform - - uid: 10153 - components: - - pos: -68.5,21.5 - parent: 1 - type: Transform - - uid: 10154 - components: - - pos: -69.5,21.5 - parent: 1 - type: Transform - - uid: 10156 - components: - - pos: -70.5,21.5 - parent: 1 - type: Transform - - uid: 10157 - components: - - pos: -64.5,21.5 - parent: 1 - type: Transform - - uid: 10161 - components: - - pos: -70.5,31.5 - parent: 1 - type: Transform - - uid: 10162 - components: - - pos: -71.5,29.5 - parent: 1 - type: Transform - - uid: 10163 - components: - - pos: -70.5,30.5 - parent: 1 - type: Transform - - uid: 10168 - components: - - pos: -70.5,28.5 - parent: 1 - type: Transform - - uid: 10169 - components: - - pos: -71.5,31.5 - parent: 1 - type: Transform - - uid: 10170 - components: - - pos: -71.5,28.5 - parent: 1 - type: Transform - - uid: 10174 - components: - - pos: -69.5,22.5 - parent: 1 - type: Transform - - uid: 10177 - components: - - pos: -71.5,31.5 - parent: 1 - type: Transform - - uid: 10178 - components: - - pos: -71.5,30.5 - parent: 1 - type: Transform - - uid: 10179 - components: - - pos: -70.5,29.5 - parent: 1 - type: Transform - - uid: 10180 - components: - - pos: -69.5,24.5 - parent: 1 - type: Transform - - uid: 10181 - components: - - pos: -71.5,21.5 - parent: 1 - type: Transform - - uid: 10182 - components: - - pos: -72.5,21.5 - parent: 1 - type: Transform - - uid: 10183 - components: - - pos: -73.5,21.5 - parent: 1 - type: Transform - - uid: 10184 - components: - - pos: -74.5,21.5 - parent: 1 - type: Transform - - uid: 10185 - components: - - pos: -74.5,22.5 - parent: 1 - type: Transform - - uid: 10186 - components: - - pos: -74.5,23.5 - parent: 1 - type: Transform - - uid: 10187 - components: - - pos: -74.5,24.5 - parent: 1 - type: Transform - - uid: 10188 - components: - - pos: -75.5,24.5 - parent: 1 - type: Transform - - uid: 10189 - components: - - pos: -76.5,24.5 - parent: 1 - type: Transform - - uid: 10190 - components: - - pos: -77.5,24.5 - parent: 1 - type: Transform - - uid: 10191 - components: - - pos: -78.5,24.5 - parent: 1 - type: Transform - - uid: 10192 - components: - - pos: -78.5,26.5 - parent: 1 - type: Transform - - uid: 10193 - components: - - pos: -77.5,26.5 - parent: 1 - type: Transform - - uid: 10194 - components: - - pos: -76.5,26.5 - parent: 1 - type: Transform - - uid: 10195 - components: - - pos: -75.5,26.5 - parent: 1 - type: Transform - - uid: 10196 - components: - - pos: -74.5,26.5 - parent: 1 - type: Transform - - uid: 10197 - components: - - pos: -74.5,25.5 - parent: 1 - type: Transform - - uid: 10198 - components: - - pos: -81.5,27.5 - parent: 1 - type: Transform - - uid: 10199 - components: - - pos: -82.5,27.5 - parent: 1 - type: Transform - - uid: 10200 - components: - - pos: -83.5,27.5 - parent: 1 - type: Transform - - uid: 10201 - components: - - pos: -84.5,27.5 - parent: 1 - type: Transform - - uid: 10202 - components: - - pos: -79.5,24.5 - parent: 1 - type: Transform - - uid: 10203 - components: - - pos: -80.5,24.5 - parent: 1 - type: Transform - - uid: 10204 - components: - - pos: -80.5,25.5 - parent: 1 - type: Transform - - uid: 10205 - components: - - pos: -81.5,25.5 - parent: 1 - type: Transform - - uid: 10206 - components: - - pos: -82.5,25.5 - parent: 1 - type: Transform - - uid: 10208 - components: - - pos: -84.5,28.5 - parent: 1 - type: Transform - - uid: 10209 - components: - - pos: -84.5,29.5 - parent: 1 - type: Transform - - uid: 10210 - components: - - pos: -84.5,30.5 - parent: 1 - type: Transform - - uid: 10211 - components: - - pos: -85.5,30.5 - parent: 1 - type: Transform - - uid: 10212 - components: - - pos: -86.5,30.5 - parent: 1 - type: Transform - - uid: 10225 - components: - - pos: -71.5,32.5 - parent: 1 - type: Transform - - uid: 10227 - components: - - pos: -71.5,33.5 - parent: 1 - type: Transform - - uid: 10228 - components: - - pos: -71.5,34.5 - parent: 1 - type: Transform - - uid: 10229 - components: - - pos: -70.5,34.5 - parent: 1 - type: Transform - - uid: 10230 - components: - - pos: -69.5,34.5 - parent: 1 - type: Transform - - uid: 10232 - components: - - pos: -68.5,34.5 - parent: 1 - type: Transform - - uid: 10233 - components: - - pos: -67.5,34.5 - parent: 1 - type: Transform - - uid: 10236 - components: - - pos: -66.5,34.5 - parent: 1 - type: Transform - - uid: 10238 - components: - - pos: -65.5,34.5 - parent: 1 - type: Transform - - uid: 10239 - components: - - pos: -64.5,34.5 - parent: 1 - type: Transform - - uid: 10245 - components: - - pos: -69.5,26.5 - parent: 1 - type: Transform - - uid: 10252 - components: - - pos: -69.5,25.5 - parent: 1 - type: Transform - - uid: 10262 - components: - - pos: -60.5,6.5 - parent: 1 - type: Transform - - uid: 10263 - components: - - pos: -60.5,5.5 - parent: 1 - type: Transform - - uid: 10265 - components: - - pos: -59.5,5.5 - parent: 1 - type: Transform - - uid: 10266 - components: - - pos: -58.5,5.5 - parent: 1 - type: Transform - - uid: 10418 - components: - - pos: -16.5,64.5 - parent: 1 - type: Transform - - uid: 10549 - components: - - pos: -85.5,27.5 - parent: 1 - type: Transform - - uid: 10550 - components: - - pos: -85.5,20.5 - parent: 1 - type: Transform - - uid: 10551 - components: - - pos: -86.5,20.5 - parent: 1 - type: Transform - - uid: 10552 - components: - - pos: -87.5,20.5 - parent: 1 - type: Transform - - uid: 10553 - components: - - pos: -85.5,23.5 - parent: 1 - type: Transform - - uid: 10554 - components: - - pos: -84.5,23.5 - parent: 1 - type: Transform - - uid: 10555 - components: - - pos: -84.5,22.5 - parent: 1 - type: Transform - - uid: 10556 - components: - - pos: -84.5,21.5 - parent: 1 - type: Transform - - uid: 10557 - components: - - pos: -84.5,20.5 - parent: 1 - type: Transform - - uid: 10558 - components: - - pos: -86.5,23.5 - parent: 1 - type: Transform - - uid: 10559 - components: - - pos: -86.5,24.5 - parent: 1 - type: Transform - - uid: 10560 - components: - - pos: -86.5,25.5 - parent: 1 - type: Transform - - uid: 10561 - components: - - pos: -86.5,26.5 - parent: 1 - type: Transform - - uid: 10562 - components: - - pos: -86.5,27.5 - parent: 1 - type: Transform - - uid: 10563 - components: - - pos: -88.5,20.5 - parent: 1 - type: Transform - - uid: 10564 - components: - - pos: -88.5,19.5 - parent: 1 - type: Transform - - uid: 10565 - components: - - pos: -90.5,19.5 - parent: 1 - type: Transform - - uid: 10566 - components: - - pos: -91.5,19.5 - parent: 1 - type: Transform - - uid: 10567 - components: - - pos: -92.5,19.5 - parent: 1 - type: Transform - - uid: 10568 - components: - - pos: -93.5,19.5 - parent: 1 - type: Transform - - uid: 10569 - components: - - pos: -94.5,19.5 - parent: 1 - type: Transform - - uid: 10570 - components: - - pos: -94.5,18.5 - parent: 1 - type: Transform - - uid: 10571 - components: - - pos: -95.5,18.5 - parent: 1 - type: Transform - - uid: 10572 - components: - - pos: -96.5,18.5 - parent: 1 - type: Transform - - uid: 10573 - components: - - pos: -96.5,19.5 - parent: 1 - type: Transform - - uid: 10574 - components: - - pos: -97.5,19.5 - parent: 1 - type: Transform - - uid: 10576 - components: - - pos: -98.5,19.5 - parent: 1 - type: Transform - - uid: 10577 - components: - - pos: -98.5,18.5 - parent: 1 - type: Transform - - uid: 10578 - components: - - pos: -99.5,18.5 - parent: 1 - type: Transform - - uid: 10579 - components: - - pos: -100.5,18.5 - parent: 1 - type: Transform - - uid: 10581 - components: - - pos: -87.5,30.5 - parent: 1 - type: Transform - - uid: 10582 - components: - - pos: -88.5,30.5 - parent: 1 - type: Transform - - uid: 10583 - components: - - pos: -88.5,31.5 - parent: 1 - type: Transform - - uid: 10584 - components: - - pos: -89.5,31.5 - parent: 1 - type: Transform - - uid: 10585 - components: - - pos: -90.5,31.5 - parent: 1 - type: Transform - - uid: 10586 - components: - - pos: -91.5,31.5 - parent: 1 - type: Transform - - uid: 10587 - components: - - pos: -92.5,31.5 - parent: 1 - type: Transform - - uid: 10588 - components: - - pos: -93.5,31.5 - parent: 1 - type: Transform - - uid: 10589 - components: - - pos: -94.5,31.5 - parent: 1 - type: Transform - - uid: 10590 - components: - - pos: -94.5,32.5 - parent: 1 - type: Transform - - uid: 10591 - components: - - pos: -95.5,32.5 - parent: 1 - type: Transform - - uid: 10592 - components: - - pos: -96.5,32.5 - parent: 1 - type: Transform - - uid: 10593 - components: - - pos: -96.5,31.5 - parent: 1 - type: Transform - - uid: 10594 - components: - - pos: -97.5,31.5 - parent: 1 - type: Transform - - uid: 10595 - components: - - pos: -98.5,31.5 - parent: 1 - type: Transform - - uid: 10596 - components: - - pos: -98.5,32.5 - parent: 1 - type: Transform - - uid: 10597 - components: - - pos: -99.5,32.5 - parent: 1 - type: Transform - - uid: 10598 - components: - - pos: -100.5,32.5 - parent: 1 - type: Transform - - uid: 10706 - components: - - pos: -74.5,20.5 - parent: 1 - type: Transform - - uid: 10707 - components: - - pos: -74.5,19.5 - parent: 1 - type: Transform - - uid: 10708 - components: - - pos: -74.5,18.5 - parent: 1 - type: Transform - - uid: 10709 - components: - - pos: -74.5,17.5 - parent: 1 - type: Transform - - uid: 10710 - components: - - pos: -74.5,16.5 - parent: 1 - type: Transform - - uid: 10711 - components: - - pos: -74.5,15.5 - parent: 1 - type: Transform - - uid: 10714 - components: - - pos: -63.5,31.5 - parent: 1 - type: Transform - - uid: 10715 - components: - - pos: -63.5,30.5 - parent: 1 - type: Transform - - uid: 10716 - components: - - pos: -63.5,29.5 - parent: 1 - type: Transform - - uid: 10717 - components: - - pos: -63.5,28.5 - parent: 1 - type: Transform - - uid: 10724 - components: - - pos: -63.5,27.5 - parent: 1 - type: Transform - - uid: 10895 - components: - - pos: -14.5,60.5 - parent: 1 - type: Transform - - uid: 10896 - components: - - pos: -13.5,60.5 - parent: 1 - type: Transform - - uid: 10897 - components: - - pos: -12.5,60.5 - parent: 1 - type: Transform - - uid: 10898 - components: - - pos: -11.5,60.5 - parent: 1 - type: Transform - - uid: 12834 - components: - - pos: 21.5,26.5 - parent: 1 - type: Transform - - uid: 12835 - components: - - pos: 22.5,26.5 - parent: 1 - type: Transform - - uid: 12836 - components: - - pos: 20.5,26.5 - parent: 1 - type: Transform - - uid: 12837 - components: - - pos: 19.5,26.5 - parent: 1 - type: Transform - - uid: 12838 - components: - - pos: 18.5,26.5 - parent: 1 - type: Transform - - uid: 12839 - components: - - pos: 17.5,26.5 - parent: 1 - type: Transform - - uid: 12840 - components: - - pos: 16.5,26.5 - parent: 1 - type: Transform - - uid: 12841 - components: - - pos: 15.5,26.5 - parent: 1 - type: Transform - - uid: 12842 - components: - - pos: 14.5,26.5 - parent: 1 - type: Transform - - uid: 12843 - components: - - pos: 14.5,25.5 - parent: 1 - type: Transform - - uid: 12844 - components: - - pos: 14.5,24.5 - parent: 1 - type: Transform - - uid: 12845 - components: - - pos: 14.5,23.5 - parent: 1 - type: Transform - - uid: 12846 - components: - - pos: 14.5,22.5 - parent: 1 - type: Transform - - uid: 12847 - components: - - pos: 14.5,21.5 - parent: 1 - type: Transform - - uid: 12848 - components: - - pos: 14.5,20.5 - parent: 1 - type: Transform - - uid: 12849 - components: - - pos: 14.5,19.5 - parent: 1 - type: Transform - - uid: 12850 - components: - - pos: 14.5,18.5 - parent: 1 - type: Transform - - uid: 12851 - components: - - pos: 14.5,17.5 - parent: 1 - type: Transform - - uid: 12860 - components: - - pos: 14.5,16.5 - parent: 1 - type: Transform - - uid: 12861 - components: - - pos: 14.5,15.5 - parent: 1 - type: Transform - - uid: 12862 - components: - - pos: 14.5,14.5 - parent: 1 - type: Transform - - uid: 12863 - components: - - pos: 14.5,13.5 - parent: 1 - type: Transform - - uid: 12864 - components: - - pos: 14.5,12.5 - parent: 1 - type: Transform - - uid: 12865 - components: - - pos: 14.5,11.5 - parent: 1 - type: Transform - - uid: 12866 - components: - - pos: 14.5,10.5 - parent: 1 - type: Transform - - uid: 12867 - components: - - pos: 14.5,9.5 - parent: 1 - type: Transform - - uid: 12868 - components: - - pos: 13.5,9.5 - parent: 1 - type: Transform - - uid: 12869 - components: - - pos: 12.5,9.5 - parent: 1 - type: Transform - - uid: 12870 - components: - - pos: 11.5,9.5 - parent: 1 - type: Transform - - uid: 12871 - components: - - pos: 10.5,9.5 - parent: 1 - type: Transform - - uid: 12872 - components: - - pos: 9.5,9.5 - parent: 1 - type: Transform - - uid: 12873 - components: - - pos: 8.5,9.5 - parent: 1 - type: Transform - - uid: 12874 - components: - - pos: 7.5,9.5 - parent: 1 - type: Transform - - uid: 12875 - components: - - pos: 6.5,9.5 - parent: 1 - type: Transform - - uid: 12876 - components: - - pos: 5.5,9.5 - parent: 1 - type: Transform - - uid: 12877 - components: - - pos: 4.5,9.5 - parent: 1 - type: Transform - - uid: 12878 - components: - - pos: 3.5,9.5 - parent: 1 - type: Transform - - uid: 12879 - components: - - pos: 3.5,10.5 - parent: 1 - type: Transform - - uid: 12880 - components: - - pos: 3.5,11.5 - parent: 1 - type: Transform - - uid: 12881 - components: - - pos: 3.5,12.5 - parent: 1 - type: Transform - - uid: 12882 - components: - - pos: 2.5,12.5 - parent: 1 - type: Transform - - uid: 12883 - components: - - pos: 1.5,12.5 - parent: 1 - type: Transform - - uid: 12884 - components: - - pos: 0.5,12.5 - parent: 1 - type: Transform - - uid: 12885 - components: - - pos: -0.5,12.5 - parent: 1 - type: Transform - - uid: 12886 - components: - - pos: -1.5,12.5 - parent: 1 - type: Transform - - uid: 12887 - components: - - pos: -2.5,12.5 - parent: 1 - type: Transform - - uid: 12888 - components: - - pos: -3.5,12.5 - parent: 1 - type: Transform - - uid: 12889 - components: - - pos: -4.5,12.5 - parent: 1 - type: Transform - - uid: 15013 - components: - - pos: -71.5,27.5 - parent: 1 - type: Transform - - uid: 15014 - components: - - pos: -71.5,26.5 - parent: 1 - type: Transform - - uid: 15015 - components: - - pos: -71.5,25.5 - parent: 1 - type: Transform - - uid: 15233 - components: - - pos: 17.5,46.5 - parent: 1 - type: Transform - - uid: 15327 - components: - - pos: -69.5,20.5 - parent: 1 - type: Transform - - uid: 15328 - components: - - pos: -69.5,19.5 - parent: 1 - type: Transform - - uid: 15329 - components: - - pos: -69.5,18.5 - parent: 1 - type: Transform - - uid: 15330 - components: - - pos: -70.5,18.5 - parent: 1 - type: Transform - - uid: 15331 - components: - - pos: -68.5,18.5 - parent: 1 - type: Transform - - uid: 15332 - components: - - pos: -73.5,18.5 - parent: 1 - type: Transform - - uid: 15405 - components: - - pos: -36.5,56.5 - parent: 1 - type: Transform - - uid: 15406 - components: - - pos: -36.5,57.5 - parent: 1 - type: Transform - - uid: 15407 - components: - - pos: -36.5,58.5 - parent: 1 - type: Transform - - uid: 15408 - components: - - pos: -36.5,59.5 - parent: 1 - type: Transform - - uid: 15409 - components: - - pos: -36.5,60.5 - parent: 1 - type: Transform - - uid: 15410 - components: - - pos: -36.5,61.5 - parent: 1 - type: Transform - - uid: 15411 - components: - - pos: -36.5,62.5 - parent: 1 - type: Transform - - uid: 15412 - components: - - pos: -36.5,63.5 - parent: 1 - type: Transform - - uid: 15413 - components: - - pos: -36.5,64.5 - parent: 1 - type: Transform - - uid: 15414 - components: - - pos: -36.5,65.5 - parent: 1 - type: Transform - - uid: 15415 - components: - - pos: -36.5,66.5 - parent: 1 - type: Transform - - uid: 15416 - components: - - pos: -36.5,67.5 - parent: 1 - type: Transform - - uid: 15417 - components: - - pos: -36.5,68.5 - parent: 1 - type: Transform - - uid: 15418 - components: - - pos: -36.5,69.5 - parent: 1 - type: Transform - - uid: 15419 - components: - - pos: -37.5,69.5 - parent: 1 - type: Transform - - uid: 15420 - components: - - pos: -38.5,69.5 - parent: 1 - type: Transform - - uid: 15421 - components: - - pos: -39.5,69.5 - parent: 1 - type: Transform - - uid: 15422 - components: - - pos: -40.5,69.5 - parent: 1 - type: Transform - - uid: 15423 - components: - - pos: -41.5,69.5 - parent: 1 - type: Transform - - uid: 15424 - components: - - pos: -42.5,69.5 - parent: 1 - type: Transform - - uid: 15425 - components: - - pos: -43.5,69.5 - parent: 1 - type: Transform - - uid: 15426 - components: - - pos: -44.5,69.5 - parent: 1 - type: Transform - - uid: 15462 - components: - - pos: -44.5,58.5 - parent: 1 - type: Transform - - uid: 15463 - components: - - pos: -41.5,57.5 - parent: 1 - type: Transform - - uid: 15466 - components: - - pos: -37.5,57.5 - parent: 1 - type: Transform - - uid: 15468 - components: - - pos: -38.5,57.5 - parent: 1 - type: Transform - - uid: 15469 - components: - - pos: -40.5,58.5 - parent: 1 - type: Transform - - uid: 15470 - components: - - pos: -38.5,59.5 - parent: 1 - type: Transform - - uid: 15471 - components: - - pos: -39.5,58.5 - parent: 1 - type: Transform - - uid: 15476 - components: - - pos: -43.5,58.5 - parent: 1 - type: Transform - - uid: 15477 - components: - - pos: -41.5,58.5 - parent: 1 - type: Transform - - uid: 15479 - components: - - pos: -38.5,58.5 - parent: 1 - type: Transform - - uid: 15485 - components: - - pos: -43.5,57.5 - parent: 1 - type: Transform - - uid: 15486 - components: - - pos: -42.5,57.5 - parent: 1 - type: Transform - - uid: 15811 - components: - - pos: -11.5,63.5 - parent: 1 - type: Transform - - uid: 15812 - components: - - pos: -10.5,62.5 - parent: 1 - type: Transform - - uid: 15813 - components: - - pos: -10.5,63.5 - parent: 1 - type: Transform -- proto: CableHVStack - entities: - - uid: 2889 - components: - - pos: 22.480692,-7.43704 - parent: 1 - type: Transform - - uid: 3427 - components: - - pos: -54.44091,29.7276 - parent: 1 - type: Transform - - uid: 8239 - components: - - pos: -7.5488524,8.322083 - parent: 1 - type: Transform -- proto: CableMV - entities: - - uid: 497 - components: - - pos: 7.5,-5.5 - parent: 1 - type: Transform - - uid: 498 - components: - - pos: 6.5,-5.5 - parent: 1 - type: Transform - - uid: 503 - components: - - pos: 5.5,-5.5 - parent: 1 - type: Transform - - uid: 504 - components: - - pos: 4.5,-5.5 - parent: 1 - type: Transform - - uid: 533 - components: - - pos: 3.5,-5.5 - parent: 1 - type: Transform - - uid: 534 - components: - - pos: 2.5,-5.5 - parent: 1 - type: Transform - - uid: 535 - components: - - pos: 1.5,-5.5 - parent: 1 - type: Transform - - uid: 537 - components: - - pos: 0.5,-5.5 - parent: 1 - type: Transform - - uid: 538 - components: - - pos: -0.5,-5.5 - parent: 1 - type: Transform - - uid: 539 - components: - - pos: -1.5,-5.5 - parent: 1 - type: Transform - - uid: 540 - components: - - pos: -2.5,-5.5 - parent: 1 - type: Transform - - uid: 541 - components: - - pos: -3.5,-5.5 - parent: 1 - type: Transform - - uid: 542 - components: - - pos: -4.5,-5.5 - parent: 1 - type: Transform - - uid: 543 - components: - - pos: -4.5,-4.5 - parent: 1 - type: Transform - - uid: 544 - components: - - pos: -4.5,-3.5 - parent: 1 - type: Transform - - uid: 545 - components: - - pos: -4.5,-2.5 - parent: 1 - type: Transform - - uid: 546 - components: - - pos: -4.5,-1.5 - parent: 1 - type: Transform - - uid: 547 - components: - - pos: -4.5,-0.5 - parent: 1 - type: Transform - - uid: 548 - components: - - pos: -1.5,-6.5 - parent: 1 - type: Transform - - uid: 549 - components: - - pos: -1.5,-7.5 - parent: 1 - type: Transform - - uid: 550 - components: - - pos: -1.5,-8.5 - parent: 1 - type: Transform - - uid: 551 - components: - - pos: -1.5,-9.5 - parent: 1 - type: Transform - - uid: 552 - components: - - pos: -1.5,-10.5 - parent: 1 - type: Transform - - uid: 553 - components: - - pos: -0.5,-10.5 - parent: 1 - type: Transform - - uid: 554 - components: - - pos: 0.5,-10.5 - parent: 1 - type: Transform - - uid: 555 - components: - - pos: 1.5,-10.5 - parent: 1 - type: Transform - - uid: 556 - components: - - pos: 2.5,-10.5 - parent: 1 - type: Transform - - uid: 557 - components: - - pos: 2.5,-9.5 - parent: 1 - type: Transform - - uid: 558 - components: - - pos: 2.5,-8.5 - parent: 1 - type: Transform - - uid: 559 - components: - - pos: 2.5,-7.5 - parent: 1 - type: Transform - - uid: 600 - components: - - pos: 8.5,-5.5 - parent: 1 - type: Transform - - uid: 601 - components: - - pos: 9.5,-5.5 - parent: 1 - type: Transform - - uid: 602 - components: - - pos: 10.5,-5.5 - parent: 1 - type: Transform - - uid: 603 - components: - - pos: 11.5,-5.5 - parent: 1 - type: Transform - - uid: 604 - components: - - pos: 11.5,-6.5 - parent: 1 - type: Transform - - uid: 605 - components: - - pos: 11.5,-7.5 - parent: 1 - type: Transform - - uid: 931 - components: - - pos: 25.5,1.5 - parent: 1 - type: Transform - - uid: 938 - components: - - pos: 26.5,1.5 - parent: 1 - type: Transform - - uid: 939 - components: - - pos: 26.5,0.5 - parent: 1 - type: Transform - - uid: 1014 - components: - - pos: 28.5,23.5 - parent: 1 - type: Transform - - uid: 1015 - components: - - pos: 28.5,24.5 - parent: 1 - type: Transform - - uid: 1508 - components: - - pos: -15.5,17.5 - parent: 1 - type: Transform - - uid: 1509 - components: - - pos: -16.5,17.5 - parent: 1 - type: Transform - - uid: 1510 - components: - - pos: -17.5,17.5 - parent: 1 - type: Transform - - uid: 1643 - components: - - pos: 29.5,24.5 - parent: 1 - type: Transform - - uid: 1675 - components: - - pos: 10.5,-4.5 - parent: 1 - type: Transform - - uid: 1676 - components: - - pos: 10.5,-3.5 - parent: 1 - type: Transform - - uid: 1677 - components: - - pos: 10.5,-2.5 - parent: 1 - type: Transform - - uid: 1678 - components: - - pos: 10.5,-1.5 - parent: 1 - type: Transform - - uid: 1679 - components: - - pos: 10.5,-0.5 - parent: 1 - type: Transform - - uid: 1680 - components: - - pos: 10.5,0.5 - parent: 1 - type: Transform - - uid: 1681 - components: - - pos: 11.5,0.5 - parent: 1 - type: Transform - - uid: 1682 - components: - - pos: 12.5,0.5 - parent: 1 - type: Transform - - uid: 2188 - components: - - pos: -4.5,17.5 - parent: 1 - type: Transform - - uid: 2189 - components: - - pos: -3.5,17.5 - parent: 1 - type: Transform - - uid: 2190 - components: - - pos: -3.5,18.5 - parent: 1 - type: Transform - - uid: 2191 - components: - - pos: -3.5,19.5 - parent: 1 - type: Transform - - uid: 2192 - components: - - pos: -3.5,20.5 - parent: 1 - type: Transform - - uid: 2193 - components: - - pos: -3.5,21.5 - parent: 1 - type: Transform - - uid: 2194 - components: - - pos: -3.5,22.5 - parent: 1 - type: Transform - - uid: 2195 - components: - - pos: -3.5,23.5 - parent: 1 - type: Transform - - uid: 2196 - components: - - pos: -2.5,23.5 - parent: 1 - type: Transform - - uid: 2197 - components: - - pos: -1.5,23.5 - parent: 1 - type: Transform - - uid: 2198 - components: - - pos: -0.5,23.5 - parent: 1 - type: Transform - - uid: 2199 - components: - - pos: 0.5,23.5 - parent: 1 - type: Transform - - uid: 2200 - components: - - pos: 1.5,23.5 - parent: 1 - type: Transform - - uid: 2201 - components: - - pos: 2.5,23.5 - parent: 1 - type: Transform - - uid: 2202 - components: - - pos: 3.5,23.5 - parent: 1 - type: Transform - - uid: 2203 - components: - - pos: 3.5,22.5 - parent: 1 - type: Transform - - uid: 2204 - components: - - pos: 3.5,21.5 - parent: 1 - type: Transform - - uid: 2205 - components: - - pos: 2.5,21.5 - parent: 1 - type: Transform - - uid: 2206 - components: - - pos: 1.5,21.5 - parent: 1 - type: Transform - - uid: 2207 - components: - - pos: 4.5,23.5 - parent: 1 - type: Transform - - uid: 2208 - components: - - pos: 4.5,24.5 - parent: 1 - type: Transform - - uid: 2209 - components: - - pos: 4.5,25.5 - parent: 1 - type: Transform - - uid: 2210 - components: - - pos: 4.5,26.5 - parent: 1 - type: Transform - - uid: 2211 - components: - - pos: 4.5,27.5 - parent: 1 - type: Transform - - uid: 2212 - components: - - pos: 4.5,28.5 - parent: 1 - type: Transform - - uid: 2213 - components: - - pos: 4.5,29.5 - parent: 1 - type: Transform - - uid: 2214 - components: - - pos: 4.5,30.5 - parent: 1 - type: Transform - - uid: 2215 - components: - - pos: 4.5,31.5 - parent: 1 - type: Transform - - uid: 2216 - components: - - pos: 4.5,32.5 - parent: 1 - type: Transform - - uid: 2217 - components: - - pos: 4.5,33.5 - parent: 1 - type: Transform - - uid: 2218 - components: - - pos: 4.5,34.5 - parent: 1 - type: Transform - - uid: 2219 - components: - - pos: 4.5,35.5 - parent: 1 - type: Transform - - uid: 2516 - components: - - pos: 23.5,9.5 - parent: 1 - type: Transform - - uid: 2517 - components: - - pos: 22.5,9.5 - parent: 1 - type: Transform - - uid: 2518 - components: - - pos: 22.5,10.5 - parent: 1 - type: Transform - - uid: 2687 - components: - - pos: -5.5,17.5 - parent: 1 - type: Transform - - uid: 2688 - components: - - pos: -6.5,17.5 - parent: 1 - type: Transform - - uid: 2689 - components: - - pos: -7.5,17.5 - parent: 1 - type: Transform - - uid: 2690 - components: - - pos: -8.5,17.5 - parent: 1 - type: Transform - - uid: 2691 - components: - - pos: -9.5,17.5 - parent: 1 - type: Transform - - uid: 2692 - components: - - pos: -9.5,18.5 - parent: 1 - type: Transform - - uid: 2698 - components: - - pos: -10.5,17.5 - parent: 1 - type: Transform - - uid: 2802 - components: - - pos: -18.5,17.5 - parent: 1 - type: Transform - - uid: 2808 - components: - - pos: -19.5,17.5 - parent: 1 - type: Transform - - uid: 2938 - components: - - pos: -20.5,19.5 - parent: 1 - type: Transform - - uid: 3223 - components: - - pos: -20.5,20.5 - parent: 1 - type: Transform - - uid: 3324 - components: - - pos: -20.5,21.5 - parent: 1 - type: Transform - - uid: 3325 - components: - - pos: -21.5,21.5 - parent: 1 - type: Transform - - uid: 3326 - components: - - pos: -22.5,21.5 - parent: 1 - type: Transform - - uid: 3327 - components: - - pos: -23.5,21.5 - parent: 1 - type: Transform - - uid: 3328 - components: - - pos: -24.5,21.5 - parent: 1 - type: Transform - - uid: 3329 - components: - - pos: -24.5,20.5 - parent: 1 - type: Transform - - uid: 3330 - components: - - pos: -24.5,19.5 - parent: 1 - type: Transform - - uid: 3682 - components: - - pos: -31.5,-6.5 - parent: 1 - type: Transform - - uid: 3854 - components: - - pos: -38.5,-6.5 - parent: 1 - type: Transform - - uid: 3934 - components: - - pos: -24.5,-3.5 - parent: 1 - type: Transform - - uid: 3935 - components: - - pos: -24.5,-4.5 - parent: 1 - type: Transform - - uid: 3936 - components: - - pos: -23.5,-4.5 - parent: 1 - type: Transform - - uid: 3937 - components: - - pos: -22.5,-4.5 - parent: 1 - type: Transform - - uid: 3938 - components: - - pos: -21.5,-4.5 - parent: 1 - type: Transform - - uid: 3939 - components: - - pos: -21.5,-5.5 - parent: 1 - type: Transform - - uid: 3940 - components: - - pos: -21.5,-6.5 - parent: 1 - type: Transform - - uid: 3941 - components: - - pos: -21.5,-7.5 - parent: 1 - type: Transform - - uid: 3942 - components: - - pos: -22.5,-7.5 - parent: 1 - type: Transform - - uid: 3943 - components: - - pos: -23.5,-7.5 - parent: 1 - type: Transform - - uid: 3944 - components: - - pos: -24.5,-7.5 - parent: 1 - type: Transform - - uid: 3945 - components: - - pos: -25.5,-7.5 - parent: 1 - type: Transform - - uid: 3946 - components: - - pos: -26.5,-7.5 - parent: 1 - type: Transform - - uid: 3947 - components: - - pos: -26.5,-6.5 - parent: 1 - type: Transform - - uid: 3948 - components: - - pos: -26.5,-5.5 - parent: 1 - type: Transform - - uid: 3949 - components: - - pos: -26.5,-4.5 - parent: 1 - type: Transform - - uid: 3950 - components: - - pos: -26.5,-3.5 - parent: 1 - type: Transform - - uid: 3951 - components: - - pos: -26.5,-2.5 - parent: 1 - type: Transform - - uid: 3952 - components: - - pos: -27.5,-2.5 - parent: 1 - type: Transform - - uid: 3953 - components: - - pos: -27.5,-6.5 - parent: 1 - type: Transform - - uid: 3954 - components: - - pos: -28.5,-6.5 - parent: 1 - type: Transform - - uid: 3955 - components: - - pos: -29.5,-6.5 - parent: 1 - type: Transform - - uid: 3956 - components: - - pos: -30.5,-6.5 - parent: 1 - type: Transform - - uid: 3957 - components: - - pos: -37.5,-6.5 - parent: 1 - type: Transform - - uid: 3973 - components: - - pos: -40.5,-5.5 - parent: 1 - type: Transform - - uid: 3974 - components: - - pos: -41.5,-5.5 - parent: 1 - type: Transform - - uid: 3975 - components: - - pos: -42.5,-5.5 - parent: 1 - type: Transform - - uid: 4284 - components: - - pos: -41.5,14.5 - parent: 1 - type: Transform - - uid: 4328 - components: - - pos: -40.5,15.5 - parent: 1 - type: Transform - - uid: 4329 - components: - - pos: -41.5,15.5 - parent: 1 - type: Transform - - uid: 4349 - components: - - pos: -41.5,13.5 - parent: 1 - type: Transform - - uid: 4350 - components: - - pos: -41.5,12.5 - parent: 1 - type: Transform - - uid: 4351 - components: - - pos: -42.5,14.5 - parent: 1 - type: Transform - - uid: 4352 - components: - - pos: -43.5,14.5 - parent: 1 - type: Transform - - uid: 4353 - components: - - pos: -44.5,14.5 - parent: 1 - type: Transform - - uid: 4354 - components: - - pos: -45.5,14.5 - parent: 1 - type: Transform - - uid: 4355 - components: - - pos: -46.5,14.5 - parent: 1 - type: Transform - - uid: 4356 - components: - - pos: -47.5,14.5 - parent: 1 - type: Transform - - uid: 4357 - components: - - pos: -48.5,14.5 - parent: 1 - type: Transform - - uid: 4358 - components: - - pos: -49.5,14.5 - parent: 1 - type: Transform - - uid: 4359 - components: - - pos: -50.5,14.5 - parent: 1 - type: Transform - - uid: 4360 - components: - - pos: -50.5,15.5 - parent: 1 - type: Transform - - uid: 4361 - components: - - pos: -50.5,16.5 - parent: 1 - type: Transform - - uid: 4362 - components: - - pos: -50.5,17.5 - parent: 1 - type: Transform - - uid: 4363 - components: - - pos: -50.5,18.5 - parent: 1 - type: Transform - - uid: 4364 - components: - - pos: -50.5,19.5 - parent: 1 - type: Transform - - uid: 4365 - components: - - pos: -50.5,20.5 - parent: 1 - type: Transform - - uid: 4366 - components: - - pos: -50.5,21.5 - parent: 1 - type: Transform - - uid: 4367 - components: - - pos: -49.5,21.5 - parent: 1 - type: Transform - - uid: 4368 - components: - - pos: -48.5,21.5 - parent: 1 - type: Transform - - uid: 4369 - components: - - pos: -47.5,21.5 - parent: 1 - type: Transform - - uid: 4370 - components: - - pos: -46.5,21.5 - parent: 1 - type: Transform - - uid: 4371 - components: - - pos: -45.5,21.5 - parent: 1 - type: Transform - - uid: 4372 - components: - - pos: -44.5,21.5 - parent: 1 - type: Transform - - uid: 4373 - components: - - pos: -43.5,21.5 - parent: 1 - type: Transform - - uid: 4374 - components: - - pos: -42.5,21.5 - parent: 1 - type: Transform - - uid: 4375 - components: - - pos: -41.5,21.5 - parent: 1 - type: Transform - - uid: 4376 - components: - - pos: -40.5,21.5 - parent: 1 - type: Transform - - uid: 4377 - components: - - pos: -40.5,20.5 - parent: 1 - type: Transform - - uid: 4432 - components: - - pos: -46.5,25.5 - parent: 1 - type: Transform - - uid: 4570 - components: - - pos: -44.5,27.5 - parent: 1 - type: Transform - - uid: 4602 - components: - - pos: -44.5,26.5 - parent: 1 - type: Transform - - uid: 4603 - components: - - pos: -44.5,25.5 - parent: 1 - type: Transform - - uid: 4604 - components: - - pos: -44.5,24.5 - parent: 1 - type: Transform - - uid: 4605 - components: - - pos: -44.5,23.5 - parent: 1 - type: Transform - - uid: 4606 - components: - - pos: -45.5,27.5 - parent: 1 - type: Transform - - uid: 4607 - components: - - pos: -46.5,27.5 - parent: 1 - type: Transform - - uid: 4609 - components: - - pos: -51.5,14.5 - parent: 1 - type: Transform - - uid: 4694 - components: - - pos: -45.5,9.5 - parent: 1 - type: Transform - - uid: 4695 - components: - - pos: -44.5,13.5 - parent: 1 - type: Transform - - uid: 4696 - components: - - pos: -44.5,12.5 - parent: 1 - type: Transform - - uid: 4697 - components: - - pos: -44.5,11.5 - parent: 1 - type: Transform - - uid: 4698 - components: - - pos: -44.5,10.5 - parent: 1 - type: Transform - - uid: 4699 - components: - - pos: -44.5,9.5 - parent: 1 - type: Transform - - uid: 4739 - components: - - pos: -46.5,24.5 - parent: 1 - type: Transform - - uid: 4740 - components: - - pos: -46.5,23.5 - parent: 1 - type: Transform - - uid: 5047 - components: - - pos: -88.5,20.5 - parent: 1 - type: Transform - - uid: 5079 - components: - - pos: -40.5,-6.5 - parent: 1 - type: Transform - - uid: 5080 - components: - - pos: -40.5,-7.5 - parent: 1 - type: Transform - - uid: 5081 - components: - - pos: -40.5,-8.5 - parent: 1 - type: Transform - - uid: 5082 - components: - - pos: -40.5,-9.5 - parent: 1 - type: Transform - - uid: 5083 - components: - - pos: -41.5,-9.5 - parent: 1 - type: Transform - - uid: 5084 - components: - - pos: -42.5,-9.5 - parent: 1 - type: Transform - - uid: 5085 - components: - - pos: -43.5,-9.5 - parent: 1 - type: Transform - - uid: 5086 - components: - - pos: -44.5,-9.5 - parent: 1 - type: Transform - - uid: 5087 - components: - - pos: -45.5,-9.5 - parent: 1 - type: Transform - - uid: 5088 - components: - - pos: -46.5,-9.5 - parent: 1 - type: Transform - - uid: 5089 - components: - - pos: -47.5,-9.5 - parent: 1 - type: Transform - - uid: 5090 - components: - - pos: -48.5,-9.5 - parent: 1 - type: Transform - - uid: 5091 - components: - - pos: -49.5,-9.5 - parent: 1 - type: Transform - - uid: 5092 - components: - - pos: -50.5,-9.5 - parent: 1 - type: Transform - - uid: 5093 - components: - - pos: -51.5,-9.5 - parent: 1 - type: Transform - - uid: 5094 - components: - - pos: -52.5,-9.5 - parent: 1 - type: Transform - - uid: 5095 - components: - - pos: -53.5,-9.5 - parent: 1 - type: Transform - - uid: 5096 - components: - - pos: -54.5,-9.5 - parent: 1 - type: Transform - - uid: 5097 - components: - - pos: -55.5,-9.5 - parent: 1 - type: Transform - - uid: 5098 - components: - - pos: -56.5,-9.5 - parent: 1 - type: Transform - - uid: 5099 - components: - - pos: -56.5,-8.5 - parent: 1 - type: Transform - - uid: 5100 - components: - - pos: -56.5,-7.5 - parent: 1 - type: Transform - - uid: 5101 - components: - - pos: -55.5,-7.5 - parent: 1 - type: Transform - - uid: 5588 - components: - - pos: -44.5,22.5 - parent: 1 - type: Transform - - uid: 5589 - components: - - pos: -46.5,22.5 - parent: 1 - type: Transform - - uid: 5807 - components: - - pos: 17.5,47.5 - parent: 1 - type: Transform - - uid: 6200 - components: - - pos: 18.5,46.5 - parent: 1 - type: Transform - - uid: 6201 - components: - - pos: 17.5,46.5 - parent: 1 - type: Transform - - uid: 6202 - components: - - pos: 16.5,45.5 - parent: 1 - type: Transform - - uid: 6213 - components: - - pos: 17.5,48.5 - parent: 1 - type: Transform - - uid: 6215 - components: - - pos: 16.5,49.5 - parent: 1 - type: Transform - - uid: 6216 - components: - - pos: 17.5,49.5 - parent: 1 - type: Transform - - uid: 6217 - components: - - pos: 16.5,49.5 - parent: 1 - type: Transform - - uid: 6547 - components: - - pos: -3.5,56.5 - parent: 1 - type: Transform - - uid: 6548 - components: - - pos: -4.5,56.5 - parent: 1 - type: Transform - - uid: 6549 - components: - - pos: -4.5,57.5 - parent: 1 - type: Transform - - uid: 7096 - components: - - pos: -20.5,22.5 - parent: 1 - type: Transform - - uid: 7808 - components: - - pos: -53.5,85.5 - parent: 1 - type: Transform - - uid: 7809 - components: - - pos: -52.5,85.5 - parent: 1 - type: Transform - - uid: 7810 - components: - - pos: -51.5,85.5 - parent: 1 - type: Transform - - uid: 7811 - components: - - pos: -50.5,85.5 - parent: 1 - type: Transform - - uid: 7812 - components: - - pos: -50.5,84.5 - parent: 1 - type: Transform - - uid: 7813 - components: - - pos: -50.5,83.5 - parent: 1 - type: Transform - - uid: 7814 - components: - - pos: -50.5,82.5 - parent: 1 - type: Transform - - uid: 7815 - components: - - pos: -50.5,81.5 - parent: 1 - type: Transform - - uid: 7816 - components: - - pos: -50.5,80.5 - parent: 1 - type: Transform - - uid: 7817 - components: - - pos: -50.5,79.5 - parent: 1 - type: Transform - - uid: 7818 - components: - - pos: -50.5,78.5 - parent: 1 - type: Transform - - uid: 7819 - components: - - pos: -50.5,77.5 - parent: 1 - type: Transform - - uid: 7820 - components: - - pos: -50.5,76.5 - parent: 1 - type: Transform - - uid: 7821 - components: - - pos: -50.5,75.5 - parent: 1 - type: Transform - - uid: 7822 - components: - - pos: -50.5,74.5 - parent: 1 - type: Transform - - uid: 7823 - components: - - pos: -50.5,73.5 - parent: 1 - type: Transform - - uid: 7824 - components: - - pos: -50.5,72.5 - parent: 1 - type: Transform - - uid: 7825 - components: - - pos: -50.5,71.5 - parent: 1 - type: Transform - - uid: 7826 - components: - - pos: -50.5,70.5 - parent: 1 - type: Transform - - uid: 7827 - components: - - pos: -50.5,69.5 - parent: 1 - type: Transform - - uid: 7828 - components: - - pos: -50.5,68.5 - parent: 1 - type: Transform - - uid: 7829 - components: - - pos: -50.5,67.5 - parent: 1 - type: Transform - - uid: 7830 - components: - - pos: -50.5,66.5 - parent: 1 - type: Transform - - uid: 7831 - components: - - pos: -50.5,65.5 - parent: 1 - type: Transform - - uid: 7832 - components: - - pos: -50.5,64.5 - parent: 1 - type: Transform - - uid: 7836 - components: - - pos: -50.5,63.5 - parent: 1 - type: Transform - - uid: 7841 - components: - - pos: -50.5,62.5 - parent: 1 - type: Transform - - uid: 7844 - components: - - pos: -49.5,63.5 - parent: 1 - type: Transform - - uid: 7845 - components: - - pos: -50.5,61.5 - parent: 1 - type: Transform - - uid: 7847 - components: - - pos: -50.5,59.5 - parent: 1 - type: Transform - - uid: 7848 - components: - - pos: -50.5,58.5 - parent: 1 - type: Transform - - uid: 7850 - components: - - pos: -50.5,57.5 - parent: 1 - type: Transform - - uid: 7851 - components: - - pos: -50.5,56.5 - parent: 1 - type: Transform - - uid: 7852 - components: - - pos: -51.5,56.5 - parent: 1 - type: Transform - - uid: 7853 - components: - - pos: -52.5,56.5 - parent: 1 - type: Transform - - uid: 7854 - components: - - pos: -53.5,56.5 - parent: 1 - type: Transform - - uid: 7855 - components: - - pos: -54.5,56.5 - parent: 1 - type: Transform - - uid: 7856 - components: - - pos: -55.5,56.5 - parent: 1 - type: Transform - - uid: 7857 - components: - - pos: -56.5,56.5 - parent: 1 - type: Transform - - uid: 7858 - components: - - pos: -57.5,56.5 - parent: 1 - type: Transform - - uid: 7859 - components: - - pos: -58.5,56.5 - parent: 1 - type: Transform - - uid: 8780 - components: - - pos: -50.5,60.5 - parent: 1 - type: Transform - - uid: 8942 - components: - - pos: -51.5,60.5 - parent: 1 - type: Transform - - uid: 8943 - components: - - pos: -52.5,60.5 - parent: 1 - type: Transform - - uid: 8944 - components: - - pos: -53.5,60.5 - parent: 1 - type: Transform - - uid: 8945 - components: - - pos: -54.5,60.5 - parent: 1 - type: Transform - - uid: 8946 - components: - - pos: -55.5,60.5 - parent: 1 - type: Transform - - uid: 8947 - components: - - pos: -56.5,60.5 - parent: 1 - type: Transform - - uid: 8948 - components: - - pos: -57.5,60.5 - parent: 1 - type: Transform - - uid: 8949 - components: - - pos: -58.5,60.5 - parent: 1 - type: Transform - - uid: 8950 - components: - - pos: -59.5,60.5 - parent: 1 - type: Transform - - uid: 8951 - components: - - pos: -60.5,60.5 - parent: 1 - type: Transform - - uid: 8952 - components: - - pos: -61.5,60.5 - parent: 1 - type: Transform - - uid: 8953 - components: - - pos: -62.5,60.5 - parent: 1 - type: Transform - - uid: 8954 - components: - - pos: -63.5,60.5 - parent: 1 - type: Transform - - uid: 8955 - components: - - pos: -63.5,59.5 - parent: 1 - type: Transform - - uid: 8956 - components: - - pos: -63.5,58.5 - parent: 1 - type: Transform - - uid: 8957 - components: - - pos: -63.5,57.5 - parent: 1 - type: Transform - - uid: 8958 - components: - - pos: -64.5,57.5 - parent: 1 - type: Transform - - uid: 8959 - components: - - pos: -65.5,57.5 - parent: 1 - type: Transform - - uid: 9381 - components: - - pos: -35.5,57.5 - parent: 1 - type: Transform - - uid: 9382 - components: - - pos: -34.5,57.5 - parent: 1 - type: Transform - - uid: 9383 - components: - - pos: -34.5,56.5 - parent: 1 - type: Transform - - uid: 9384 - components: - - pos: -34.5,55.5 - parent: 1 - type: Transform - - uid: 9385 - components: - - pos: -33.5,55.5 - parent: 1 - type: Transform - - uid: 9386 - components: - - pos: -32.5,55.5 - parent: 1 - type: Transform - - uid: 9387 - components: - - pos: -32.5,54.5 - parent: 1 - type: Transform - - uid: 9388 - components: - - pos: -32.5,53.5 - parent: 1 - type: Transform - - uid: 9389 - components: - - pos: -32.5,52.5 - parent: 1 - type: Transform - - uid: 9390 - components: - - pos: -32.5,51.5 - parent: 1 - type: Transform - - uid: 9391 - components: - - pos: -32.5,50.5 - parent: 1 - type: Transform - - uid: 9392 - components: - - pos: -31.5,50.5 - parent: 1 - type: Transform - - uid: 9393 - components: - - pos: -31.5,49.5 - parent: 1 - type: Transform - - uid: 9394 - components: - - pos: -31.5,48.5 - parent: 1 - type: Transform - - uid: 9396 - components: - - pos: -30.5,50.5 - parent: 1 - type: Transform - - uid: 9397 - components: - - pos: -29.5,50.5 - parent: 1 - type: Transform - - uid: 9398 - components: - - pos: -28.5,50.5 - parent: 1 - type: Transform - - uid: 9399 - components: - - pos: -27.5,50.5 - parent: 1 - type: Transform - - uid: 9400 - components: - - pos: -26.5,50.5 - parent: 1 - type: Transform - - uid: 9401 - components: - - pos: -25.5,50.5 - parent: 1 - type: Transform - - uid: 9402 - components: - - pos: -24.5,50.5 - parent: 1 - type: Transform - - uid: 9403 - components: - - pos: -24.5,49.5 - parent: 1 - type: Transform - - uid: 9404 - components: - - pos: -24.5,48.5 - parent: 1 - type: Transform - - uid: 9405 - components: - - pos: -24.5,47.5 - parent: 1 - type: Transform - - uid: 9406 - components: - - pos: -24.5,46.5 - parent: 1 - type: Transform - - uid: 9407 - components: - - pos: -24.5,45.5 - parent: 1 - type: Transform - - uid: 9408 - components: - - pos: -24.5,44.5 - parent: 1 - type: Transform - - uid: 9409 - components: - - pos: -24.5,43.5 - parent: 1 - type: Transform - - uid: 9410 - components: - - pos: -24.5,42.5 - parent: 1 - type: Transform - - uid: 9411 - components: - - pos: -24.5,41.5 - parent: 1 - type: Transform - - uid: 9412 - components: - - pos: -24.5,40.5 - parent: 1 - type: Transform - - uid: 9413 - components: - - pos: -24.5,39.5 - parent: 1 - type: Transform - - uid: 9414 - components: - - pos: -24.5,38.5 - parent: 1 - type: Transform - - uid: 9415 - components: - - pos: -25.5,38.5 - parent: 1 - type: Transform - - uid: 9416 - components: - - pos: -26.5,38.5 - parent: 1 - type: Transform - - uid: 9495 - components: - - pos: -23.5,40.5 - parent: 1 - type: Transform - - uid: 9642 - components: - - pos: -20.5,23.5 - parent: 1 - type: Transform - - uid: 9643 - components: - - pos: -21.5,23.5 - parent: 1 - type: Transform - - uid: 9644 - components: - - pos: -21.5,23.5 - parent: 1 - type: Transform - - uid: 9645 - components: - - pos: -22.5,23.5 - parent: 1 - type: Transform - - uid: 9646 - components: - - pos: -23.5,23.5 - parent: 1 - type: Transform - - uid: 9647 - components: - - pos: -24.5,23.5 - parent: 1 - type: Transform - - uid: 9648 - components: - - pos: -25.5,23.5 - parent: 1 - type: Transform - - uid: 9649 - components: - - pos: -26.5,23.5 - parent: 1 - type: Transform - - uid: 9650 - components: - - pos: -27.5,23.5 - parent: 1 - type: Transform - - uid: 9651 - components: - - pos: -28.5,23.5 - parent: 1 - type: Transform - - uid: 9652 - components: - - pos: -29.5,23.5 - parent: 1 - type: Transform - - uid: 9653 - components: - - pos: -29.5,24.5 - parent: 1 - type: Transform - - uid: 9654 - components: - - pos: -29.5,25.5 - parent: 1 - type: Transform - - uid: 9655 - components: - - pos: -29.5,26.5 - parent: 1 - type: Transform - - uid: 9656 - components: - - pos: -29.5,27.5 - parent: 1 - type: Transform - - uid: 9657 - components: - - pos: -29.5,28.5 - parent: 1 - type: Transform - - uid: 9658 - components: - - pos: -29.5,29.5 - parent: 1 - type: Transform - - uid: 9659 - components: - - pos: -29.5,30.5 - parent: 1 - type: Transform - - uid: 10021 - components: - - pos: -65.5,58.5 - parent: 1 - type: Transform - - uid: 10022 - components: - - pos: -65.5,59.5 - parent: 1 - type: Transform - - uid: 10213 - components: - - pos: -79.5,27.5 - parent: 1 - type: Transform - - uid: 10214 - components: - - pos: -80.5,27.5 - parent: 1 - type: Transform - - uid: 10215 - components: - - pos: -81.5,27.5 - parent: 1 - type: Transform - - uid: 10217 - components: - - pos: -82.5,27.5 - parent: 1 - type: Transform - - uid: 10218 - components: - - pos: -83.5,27.5 - parent: 1 - type: Transform - - uid: 10219 - components: - - pos: -84.5,27.5 - parent: 1 - type: Transform - - uid: 10220 - components: - - pos: -84.5,28.5 - parent: 1 - type: Transform - - uid: 10221 - components: - - pos: -84.5,29.5 - parent: 1 - type: Transform - - uid: 10222 - components: - - pos: -84.5,30.5 - parent: 1 - type: Transform - - uid: 10223 - components: - - pos: -85.5,30.5 - parent: 1 - type: Transform - - uid: 10224 - components: - - pos: -86.5,30.5 - parent: 1 - type: Transform - - uid: 10237 - components: - - pos: -39.5,-6.5 - parent: 1 - type: Transform - - uid: 10271 - components: - - pos: -35.5,-6.5 - parent: 1 - type: Transform - - uid: 10277 - components: - - pos: -34.5,-6.5 - parent: 1 - type: Transform - - uid: 10285 - components: - - pos: -33.5,-6.5 - parent: 1 - type: Transform - - uid: 10288 - components: - - pos: -32.5,-6.5 - parent: 1 - type: Transform - - uid: 10298 - components: - - pos: -36.5,-6.5 - parent: 1 - type: Transform - - uid: 10318 - components: - - pos: -20.5,18.5 - parent: 1 - type: Transform - - uid: 10320 - components: - - pos: -20.5,17.5 - parent: 1 - type: Transform - - uid: 10430 - components: - - pos: -42.5,-8.5 - parent: 1 - type: Transform - - uid: 10522 - components: - - pos: -87.5,30.5 - parent: 1 - type: Transform - - uid: 10523 - components: - - pos: -88.5,30.5 - parent: 1 - type: Transform - - uid: 10524 - components: - - pos: -79.5,26.5 - parent: 1 - type: Transform - - uid: 10525 - components: - - pos: -79.5,25.5 - parent: 1 - type: Transform - - uid: 10526 - components: - - pos: -79.5,24.5 - parent: 1 - type: Transform - - uid: 10527 - components: - - pos: -79.5,23.5 - parent: 1 - type: Transform - - uid: 10528 - components: - - pos: -80.5,23.5 - parent: 1 - type: Transform - - uid: 10529 - components: - - pos: -81.5,23.5 - parent: 1 - type: Transform - - uid: 10530 - components: - - pos: -82.5,23.5 - parent: 1 - type: Transform - - uid: 10531 - components: - - pos: -83.5,23.5 - parent: 1 - type: Transform - - uid: 10532 - components: - - pos: -84.5,23.5 - parent: 1 - type: Transform - - uid: 10533 - components: - - pos: -84.5,22.5 - parent: 1 - type: Transform - - uid: 10534 - components: - - pos: -84.5,21.5 - parent: 1 - type: Transform - - uid: 10537 - components: - - pos: -84.5,20.5 - parent: 1 - type: Transform - - uid: 10546 - components: - - pos: -85.5,20.5 - parent: 1 - type: Transform - - uid: 10547 - components: - - pos: -86.5,20.5 - parent: 1 - type: Transform - - uid: 10548 - components: - - pos: -87.5,20.5 - parent: 1 - type: Transform - - uid: 10617 - components: - - pos: -101.5,18.5 - parent: 1 - type: Transform - - uid: 10618 - components: - - pos: -93.5,32.5 - parent: 1 - type: Transform - - uid: 10619 - components: - - pos: -93.5,33.5 - parent: 1 - type: Transform - - uid: 10620 - components: - - pos: -101.5,32.5 - parent: 1 - type: Transform - - uid: 10621 - components: - - pos: -101.5,33.5 - parent: 1 - type: Transform - - uid: 10622 - components: - - pos: -104.5,29.5 - parent: 1 - type: Transform - - uid: 10623 - components: - - pos: -105.5,29.5 - parent: 1 - type: Transform - - uid: 10624 - components: - - pos: -105.5,30.5 - parent: 1 - type: Transform - - uid: 10625 - components: - - pos: -105.5,31.5 - parent: 1 - type: Transform - - uid: 10626 - components: - - pos: -105.5,28.5 - parent: 1 - type: Transform - - uid: 10627 - components: - - pos: -105.5,27.5 - parent: 1 - type: Transform - - uid: 10628 - components: - - pos: -105.5,26.5 - parent: 1 - type: Transform - - uid: 10629 - components: - - pos: -105.5,25.5 - parent: 1 - type: Transform - - uid: 10630 - components: - - pos: -105.5,24.5 - parent: 1 - type: Transform - - uid: 10631 - components: - - pos: -105.5,23.5 - parent: 1 - type: Transform - - uid: 10632 - components: - - pos: -105.5,22.5 - parent: 1 - type: Transform - - uid: 10633 - components: - - pos: -105.5,21.5 - parent: 1 - type: Transform - - uid: 10634 - components: - - pos: -105.5,20.5 - parent: 1 - type: Transform - - uid: 10635 - components: - - pos: -105.5,19.5 - parent: 1 - type: Transform - - uid: 10636 - components: - - pos: -104.5,21.5 - parent: 1 - type: Transform - - uid: 10637 - components: - - pos: -101.5,17.5 - parent: 1 - type: Transform - - uid: 10638 - components: - - pos: -93.5,18.5 - parent: 1 - type: Transform - - uid: 10639 - components: - - pos: -93.5,17.5 - parent: 1 - type: Transform - - uid: 10640 - components: - - pos: -90.5,21.5 - parent: 1 - type: Transform - - uid: 10641 - components: - - pos: -90.5,29.5 - parent: 1 - type: Transform - - uid: 10642 - components: - - pos: -89.5,29.5 - parent: 1 - type: Transform - - uid: 10643 - components: - - pos: -89.5,21.5 - parent: 1 - type: Transform - - uid: 10981 - components: - - pos: -66.5,57.5 - parent: 1 - type: Transform - - uid: 10982 - components: - - pos: -67.5,57.5 - parent: 1 - type: Transform - - uid: 10983 - components: - - pos: -67.5,56.5 - parent: 1 - type: Transform - - uid: 10984 - components: - - pos: -67.5,55.5 - parent: 1 - type: Transform - - uid: 10985 - components: - - pos: -67.5,54.5 - parent: 1 - type: Transform - - uid: 10986 - components: - - pos: -67.5,53.5 - parent: 1 - type: Transform - - uid: 10987 - components: - - pos: -67.5,52.5 - parent: 1 - type: Transform - - uid: 10988 - components: - - pos: -67.5,51.5 - parent: 1 - type: Transform - - uid: 10989 - components: - - pos: -67.5,50.5 - parent: 1 - type: Transform - - uid: 10990 - components: - - pos: -66.5,50.5 - parent: 1 - type: Transform - - uid: 10991 - components: - - pos: -66.5,49.5 - parent: 1 - type: Transform - - uid: 10992 - components: - - pos: -66.5,48.5 - parent: 1 - type: Transform - - uid: 10993 - components: - - pos: -66.5,47.5 - parent: 1 - type: Transform - - uid: 10994 - components: - - pos: -66.5,46.5 - parent: 1 - type: Transform - - uid: 10995 - components: - - pos: -66.5,45.5 - parent: 1 - type: Transform - - uid: 10996 - components: - - pos: -66.5,44.5 - parent: 1 - type: Transform - - uid: 10997 - components: - - pos: -65.5,44.5 - parent: 1 - type: Transform - - uid: 11064 - components: - - pos: -71.5,34.5 - parent: 1 - type: Transform - - uid: 11065 - components: - - pos: -70.5,34.5 - parent: 1 - type: Transform - - uid: 11066 - components: - - pos: -69.5,34.5 - parent: 1 - type: Transform - - uid: 11067 - components: - - pos: -68.5,34.5 - parent: 1 - type: Transform - - uid: 11068 - components: - - pos: -68.5,35.5 - parent: 1 - type: Transform - - uid: 11069 - components: - - pos: -72.5,34.5 - parent: 1 - type: Transform - - uid: 11070 - components: - - pos: -73.5,34.5 - parent: 1 - type: Transform - - uid: 11071 - components: - - pos: -74.5,34.5 - parent: 1 - type: Transform - - uid: 11072 - components: - - pos: -75.5,34.5 - parent: 1 - type: Transform - - uid: 11073 - components: - - pos: -76.5,34.5 - parent: 1 - type: Transform - - uid: 11074 - components: - - pos: -76.5,35.5 - parent: 1 - type: Transform - - uid: 11075 - components: - - pos: -76.5,36.5 - parent: 1 - type: Transform - - uid: 11076 - components: - - pos: -73.5,33.5 - parent: 1 - type: Transform - - uid: 11077 - components: - - pos: -73.5,33.5 - parent: 1 - type: Transform - - uid: 11078 - components: - - pos: -73.5,32.5 - parent: 1 - type: Transform - - uid: 11079 - components: - - pos: -73.5,31.5 - parent: 1 - type: Transform - - uid: 11080 - components: - - pos: -73.5,30.5 - parent: 1 - type: Transform - - uid: 11081 - components: - - pos: -73.5,29.5 - parent: 1 - type: Transform - - uid: 11082 - components: - - pos: -73.5,28.5 - parent: 1 - type: Transform - - uid: 11085 - components: - - pos: -73.5,27.5 - parent: 1 - type: Transform - - uid: 11091 - components: - - pos: -73.5,26.5 - parent: 1 - type: Transform - - uid: 11114 - components: - - pos: -73.5,25.5 - parent: 1 - type: Transform - - uid: 11116 - components: - - pos: -73.5,24.5 - parent: 1 - type: Transform - - uid: 11120 - components: - - pos: -73.5,23.5 - parent: 1 - type: Transform - - uid: 11121 - components: - - pos: -73.5,22.5 - parent: 1 - type: Transform - - uid: 11157 - components: - - pos: -73.5,21.5 - parent: 1 - type: Transform - - uid: 11158 - components: - - pos: -74.5,21.5 - parent: 1 - type: Transform - - uid: 11159 - components: - - pos: -75.5,21.5 - parent: 1 - type: Transform - - uid: 14947 - components: - - pos: -72.5,26.5 - parent: 1 - type: Transform - - uid: 14948 - components: - - pos: -71.5,26.5 - parent: 1 - type: Transform - - uid: 14949 - components: - - pos: -71.5,25.5 - parent: 1 - type: Transform - - uid: 15235 - components: - - pos: 17.5,45.5 - parent: 1 - type: Transform - - uid: 15236 - components: - - pos: 16.5,44.5 - parent: 1 - type: Transform -- proto: CableMVStack - entities: - - uid: 2888 - components: - - pos: 25.496317,-8.37454 - parent: 1 - type: Transform - - uid: 3424 - components: - - pos: -54.175285,29.57135 - parent: 1 - type: Transform - - uid: 15989 - components: - - pos: -7.5488524,8.259583 - parent: 1 - type: Transform -- proto: CableTerminal - entities: - - uid: 906 - components: - - rot: 3.141592653589793 rad - pos: 27.5,-8.5 - parent: 1 - type: Transform - - uid: 930 - components: - - rot: -1.5707963267948966 rad - pos: 26.5,3.5 - parent: 1 - type: Transform - - uid: 1028 - components: - - rot: -1.5707963267948966 rad - pos: 26.5,23.5 - parent: 1 - type: Transform - - uid: 10167 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,29.5 - parent: 1 - type: Transform - - uid: 10171 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,31.5 - parent: 1 - type: Transform - - uid: 10173 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,30.5 - parent: 1 - type: Transform - - uid: 10175 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,28.5 - parent: 1 - type: Transform -- proto: CannabisSeeds - entities: - - uid: 29 - components: - - pos: -37.356266,49.664383 - parent: 1 - type: Transform - - uid: 65 - components: - - pos: -37.481266,49.508133 - parent: 1 - type: Transform -- proto: Carpet - entities: - - uid: 1799 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,-0.5 - parent: 1 - type: Transform - - uid: 1800 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,0.5 - parent: 1 - type: Transform - - uid: 1801 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,1.5 - parent: 1 - type: Transform - - uid: 1802 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,2.5 - parent: 1 - type: Transform - - uid: 1803 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,3.5 - parent: 1 - type: Transform - - uid: 1804 - components: - - rot: -1.5707963267948966 rad - pos: 14.5,3.5 - parent: 1 - type: Transform - - uid: 1805 - components: - - rot: -1.5707963267948966 rad - pos: 13.5,3.5 - parent: 1 - type: Transform - - uid: 1806 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,3.5 - parent: 1 - type: Transform - - uid: 1807 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,3.5 - parent: 1 - type: Transform - - uid: 5916 - components: - - pos: -7.5,44.5 - parent: 1 - type: Transform - - uid: 5917 - components: - - pos: -7.5,43.5 - parent: 1 - type: Transform - - uid: 5918 - components: - - pos: -7.5,42.5 - parent: 1 - type: Transform - - uid: 5919 - components: - - pos: -7.5,41.5 - parent: 1 - type: Transform - - uid: 5920 - components: - - pos: -7.5,40.5 - parent: 1 - type: Transform - - uid: 5921 - components: - - pos: -7.5,39.5 - parent: 1 - type: Transform - - uid: 5922 - components: - - pos: -8.5,40.5 - parent: 1 - type: Transform - - uid: 5923 - components: - - pos: -9.5,40.5 - parent: 1 - type: Transform - - uid: 5924 - components: - - pos: -6.5,40.5 - parent: 1 - type: Transform - - uid: 5925 - components: - - pos: -5.5,40.5 - parent: 1 - type: Transform - - uid: 8933 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,63.5 - parent: 1 - type: Transform - - uid: 8934 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,64.5 - parent: 1 - type: Transform - - uid: 8935 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,65.5 - parent: 1 - type: Transform - - uid: 8936 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,63.5 - parent: 1 - type: Transform - - uid: 8937 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,64.5 - parent: 1 - type: Transform - - uid: 8938 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,65.5 - parent: 1 - type: Transform - - uid: 8939 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,63.5 - parent: 1 - type: Transform - - uid: 8940 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,64.5 - parent: 1 - type: Transform - - uid: 8941 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,65.5 - parent: 1 - type: Transform - - uid: 12611 - components: - - pos: 15.5,-1.5 - parent: 1 - type: Transform - - uid: 12612 - components: - - pos: 15.5,-2.5 - parent: 1 - type: Transform -- proto: CarpetBlack - entities: - - uid: 3499 - components: - - rot: 1.5707963267948966 rad - pos: -50.5,9.5 - parent: 1 - type: Transform - - uid: 4703 - components: - - rot: 1.5707963267948966 rad - pos: -49.5,9.5 - parent: 1 - type: Transform - - uid: 4706 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,9.5 - parent: 1 - type: Transform -- proto: CarpetBlue - entities: - - uid: 7530 - components: - - pos: -22.5,47.5 - parent: 1 - type: Transform - - uid: 7531 - components: - - pos: -22.5,45.5 - parent: 1 - type: Transform - - uid: 7532 - components: - - pos: -21.5,45.5 - parent: 1 - type: Transform - - uid: 7533 - components: - - pos: -22.5,46.5 - parent: 1 - type: Transform - - uid: 7534 - components: - - pos: -21.5,47.5 - parent: 1 - type: Transform - - uid: 7535 - components: - - pos: -21.5,46.5 - parent: 1 - type: Transform - - uid: 12785 - components: - - pos: 14.5,30.5 - parent: 1 - type: Transform - - uid: 12786 - components: - - pos: 14.5,31.5 - parent: 1 - type: Transform - - uid: 12787 - components: - - pos: 14.5,32.5 - parent: 1 - type: Transform - - uid: 12788 - components: - - pos: 15.5,30.5 - parent: 1 - type: Transform - - uid: 12789 - components: - - pos: 15.5,31.5 - parent: 1 - type: Transform - - uid: 12790 - components: - - pos: 15.5,32.5 - parent: 1 - type: Transform - - uid: 12791 - components: - - pos: 16.5,30.5 - parent: 1 - type: Transform - - uid: 12792 - components: - - pos: 16.5,31.5 - parent: 1 - type: Transform - - uid: 12793 - components: - - pos: 16.5,32.5 - parent: 1 - type: Transform -- proto: CarpetChapel - entities: - - uid: 1774 - components: - - pos: 13.5,-0.5 - parent: 1 - type: Transform - - uid: 1775 - components: - - pos: 13.5,1.5 - parent: 1 - type: Transform - - uid: 1776 - components: - - rot: -1.5707963267948966 rad - pos: 13.5,2.5 - parent: 1 - type: Transform - - uid: 1777 - components: - - rot: -1.5707963267948966 rad - pos: 13.5,0.5 - parent: 1 - type: Transform - - uid: 1780 - components: - - rot: 3.141592653589793 rad - pos: 14.5,0.5 - parent: 1 - type: Transform - - uid: 1781 - components: - - rot: 3.141592653589793 rad - pos: 14.5,2.5 - parent: 1 - type: Transform - - uid: 1782 - components: - - rot: 3.141592653589793 rad - pos: 17.5,2.5 - parent: 1 - type: Transform - - uid: 1783 - components: - - rot: 3.141592653589793 rad - pos: 17.5,0.5 - parent: 1 - type: Transform - - uid: 1784 - components: - - rot: 3.141592653589793 rad - pos: 17.5,-1.5 - parent: 1 - type: Transform - - uid: 1785 - components: - - rot: 1.5707963267948966 rad - pos: 17.5,-2.5 - parent: 1 - type: Transform - - uid: 1786 - components: - - rot: 1.5707963267948966 rad - pos: 17.5,-0.5 - parent: 1 - type: Transform - - uid: 1787 - components: - - rot: 1.5707963267948966 rad - pos: 17.5,1.5 - parent: 1 - type: Transform - - uid: 1788 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,1.5 - parent: 1 - type: Transform - - uid: 1789 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,-0.5 - parent: 1 - type: Transform - - uid: 1791 - components: - - pos: 16.5,-2.5 - parent: 1 - type: Transform - - uid: 1792 - components: - - pos: 16.5,-0.5 - parent: 1 - type: Transform - - uid: 1793 - components: - - pos: 16.5,1.5 - parent: 1 - type: Transform - - uid: 1794 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,2.5 - parent: 1 - type: Transform - - uid: 1795 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,0.5 - parent: 1 - type: Transform - - uid: 1796 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,-1.5 - parent: 1 - type: Transform - - uid: 12607 - components: - - rot: -1.5707963267948966 rad - pos: 13.5,-1.5 - parent: 1 - type: Transform - - uid: 12608 - components: - - rot: 3.141592653589793 rad - pos: 14.5,-1.5 - parent: 1 - type: Transform - - uid: 12609 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,-2.5 - parent: 1 - type: Transform - - uid: 12610 - components: - - pos: 13.5,-2.5 - parent: 1 - type: Transform -- proto: CarpetGreen - entities: - - uid: 14438 - components: - - pos: -71.5,8.5 - parent: 1 - type: Transform - - uid: 14439 - components: - - pos: -71.5,9.5 - parent: 1 - type: Transform - - uid: 14440 - components: - - pos: -71.5,10.5 - parent: 1 - type: Transform - - uid: 14441 - components: - - pos: -71.5,11.5 - parent: 1 - type: Transform - - uid: 14442 - components: - - pos: -71.5,12.5 - parent: 1 - type: Transform - - uid: 14443 - components: - - pos: -71.5,13.5 - parent: 1 - type: Transform - - uid: 14444 - components: - - pos: -70.5,8.5 - parent: 1 - type: Transform - - uid: 14445 - components: - - pos: -70.5,9.5 - parent: 1 - type: Transform - - uid: 14446 - components: - - pos: -70.5,10.5 - parent: 1 - type: Transform - - uid: 14447 - components: - - pos: -70.5,11.5 - parent: 1 - type: Transform - - uid: 14448 - components: - - pos: -70.5,12.5 - parent: 1 - type: Transform - - uid: 14449 - components: - - pos: -70.5,13.5 - parent: 1 - type: Transform - - uid: 14450 - components: - - pos: -72.5,9.5 - parent: 1 - type: Transform - - uid: 14451 - components: - - pos: -69.5,9.5 - parent: 1 - type: Transform -- proto: CarpetOrange - entities: - - uid: 4082 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,-4.5 - parent: 1 - type: Transform - - uid: 4083 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,-3.5 - parent: 1 - type: Transform - - uid: 4085 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,-4.5 - parent: 1 - type: Transform - - uid: 4086 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,-3.5 - parent: 1 - type: Transform - - uid: 4087 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,-2.5 - parent: 1 - type: Transform - - uid: 4088 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,-4.5 - parent: 1 - type: Transform - - uid: 4089 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,-3.5 - parent: 1 - type: Transform - - uid: 4090 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,-2.5 - parent: 1 - type: Transform - - uid: 14216 - components: - - pos: -69.5,15.5 - parent: 1 - type: Transform - - uid: 14217 - components: - - pos: -69.5,16.5 - parent: 1 - type: Transform - - uid: 14219 - components: - - pos: -68.5,15.5 - parent: 1 - type: Transform - - uid: 14220 - components: - - pos: -68.5,16.5 - parent: 1 - type: Transform -- proto: CarpetPurple - entities: - - uid: 2471 - components: - - pos: -1.5,1.5 - parent: 1 - type: Transform - - uid: 2472 - components: - - pos: -1.5,2.5 - parent: 1 - type: Transform - - uid: 2473 - components: - - pos: -2.5,1.5 - parent: 1 - type: Transform - - uid: 2474 - components: - - pos: -2.5,2.5 - parent: 1 - type: Transform - - uid: 2475 - components: - - pos: -16.5,-5.5 - parent: 1 - type: Transform - - uid: 2476 - components: - - pos: -16.5,-4.5 - parent: 1 - type: Transform - - uid: 2477 - components: - - pos: -16.5,-3.5 - parent: 1 - type: Transform - - uid: 2478 - components: - - pos: -17.5,-5.5 - parent: 1 - type: Transform - - uid: 2479 - components: - - pos: -17.5,-4.5 - parent: 1 - type: Transform - - uid: 2480 - components: - - pos: -17.5,-3.5 - parent: 1 - type: Transform - - uid: 2481 - components: - - pos: -18.5,-5.5 - parent: 1 - type: Transform - - uid: 2482 - components: - - pos: -18.5,-4.5 - parent: 1 - type: Transform - - uid: 2483 - components: - - pos: -18.5,-3.5 - parent: 1 - type: Transform - - uid: 9749 - components: - - pos: -38.5,38.5 - parent: 1 - type: Transform - - uid: 9759 - components: - - pos: -38.5,37.5 - parent: 1 - type: Transform - - uid: 9760 - components: - - pos: -38.5,36.5 - parent: 1 - type: Transform - - uid: 9761 - components: - - pos: -37.5,38.5 - parent: 1 - type: Transform - - uid: 9762 - components: - - pos: -37.5,37.5 - parent: 1 - type: Transform - - uid: 9763 - components: - - pos: -37.5,36.5 - parent: 1 - type: Transform - - uid: 9764 - components: - - pos: -36.5,38.5 - parent: 1 - type: Transform - - uid: 9765 - components: - - pos: -36.5,37.5 - parent: 1 - type: Transform - - uid: 9766 - components: - - pos: -36.5,36.5 - parent: 1 - type: Transform -- proto: Catwalk - entities: - - uid: 5 - components: - - pos: -86.5,46.5 - parent: 1 - type: Transform - - uid: 118 - components: - - pos: -86.5,33.5 - parent: 1 - type: Transform - - uid: 120 - components: - - pos: -86.5,35.5 - parent: 1 - type: Transform - - uid: 126 - components: - - pos: -86.5,37.5 - parent: 1 - type: Transform - - uid: 519 - components: - - pos: -86.5,38.5 - parent: 1 - type: Transform - - uid: 520 - components: - - pos: -86.5,36.5 - parent: 1 - type: Transform - - uid: 521 - components: - - pos: -86.5,34.5 - parent: 1 - type: Transform - - uid: 721 - components: - - pos: 19.5,-19.5 - parent: 1 - type: Transform - - uid: 861 - components: - - pos: 18.5,-15.5 - parent: 1 - type: Transform - - uid: 862 - components: - - pos: 19.5,-15.5 - parent: 1 - type: Transform - - uid: 863 - components: - - pos: 20.5,-15.5 - parent: 1 - type: Transform - - uid: 864 - components: - - pos: 21.5,-15.5 - parent: 1 - type: Transform - - uid: 865 - components: - - pos: 22.5,-15.5 - parent: 1 - type: Transform - - uid: 866 - components: - - pos: 23.5,-15.5 - parent: 1 - type: Transform - - uid: 867 - components: - - pos: 24.5,-15.5 - parent: 1 - type: Transform - - uid: 868 - components: - - pos: 25.5,-15.5 - parent: 1 - type: Transform - - uid: 869 - components: - - pos: 26.5,-15.5 - parent: 1 - type: Transform - - uid: 870 - components: - - pos: 27.5,-15.5 - parent: 1 - type: Transform - - uid: 871 - components: - - pos: 28.5,-15.5 - parent: 1 - type: Transform - - uid: 872 - components: - - pos: 20.5,-19.5 - parent: 1 - type: Transform - - uid: 873 - components: - - pos: 21.5,-19.5 - parent: 1 - type: Transform - - uid: 874 - components: - - pos: 22.5,-19.5 - parent: 1 - type: Transform - - uid: 875 - components: - - pos: 23.5,-19.5 - parent: 1 - type: Transform - - uid: 876 - components: - - pos: 24.5,-19.5 - parent: 1 - type: Transform - - uid: 877 - components: - - pos: 25.5,-19.5 - parent: 1 - type: Transform - - uid: 878 - components: - - pos: 26.5,-19.5 - parent: 1 - type: Transform - - uid: 879 - components: - - pos: 27.5,-19.5 - parent: 1 - type: Transform - - uid: 880 - components: - - pos: 28.5,-19.5 - parent: 1 - type: Transform - - uid: 882 - components: - - pos: 20.5,-23.5 - parent: 1 - type: Transform - - uid: 883 - components: - - pos: 21.5,-23.5 - parent: 1 - type: Transform - - uid: 884 - components: - - pos: 22.5,-23.5 - parent: 1 - type: Transform - - uid: 885 - components: - - pos: 23.5,-23.5 - parent: 1 - type: Transform - - uid: 886 - components: - - pos: 24.5,-23.5 - parent: 1 - type: Transform - - uid: 887 - components: - - pos: 25.5,-23.5 - parent: 1 - type: Transform - - uid: 888 - components: - - pos: 26.5,-23.5 - parent: 1 - type: Transform - - uid: 889 - components: - - pos: 27.5,-23.5 - parent: 1 - type: Transform - - uid: 890 - components: - - pos: 28.5,-23.5 - parent: 1 - type: Transform - - uid: 891 - components: - - pos: 28.5,-24.5 - parent: 1 - type: Transform - - uid: 892 - components: - - pos: 28.5,-22.5 - parent: 1 - type: Transform - - uid: 893 - components: - - pos: 28.5,-21.5 - parent: 1 - type: Transform - - uid: 894 - components: - - pos: 28.5,-20.5 - parent: 1 - type: Transform - - uid: 895 - components: - - pos: 28.5,-18.5 - parent: 1 - type: Transform - - uid: 896 - components: - - pos: 28.5,-17.5 - parent: 1 - type: Transform - - uid: 897 - components: - - pos: 28.5,-16.5 - parent: 1 - type: Transform - - uid: 898 - components: - - pos: 28.5,-14.5 - parent: 1 - type: Transform - - uid: 899 - components: - - pos: 28.5,-13.5 - parent: 1 - type: Transform - - uid: 900 - components: - - pos: 28.5,-12.5 - parent: 1 - type: Transform - - uid: 901 - components: - - pos: 28.5,-11.5 - parent: 1 - type: Transform - - uid: 902 - components: - - pos: 28.5,-10.5 - parent: 1 - type: Transform - - uid: 2010 - components: - - pos: -5.5,16.5 - parent: 1 - type: Transform - - uid: 2011 - components: - - pos: -5.5,15.5 - parent: 1 - type: Transform - - uid: 2890 - components: - - pos: 28.5,-5.5 - parent: 1 - type: Transform - - uid: 2892 - components: - - pos: 26.5,-5.5 - parent: 1 - type: Transform - - uid: 2894 - components: - - pos: 24.5,-5.5 - parent: 1 - type: Transform - - uid: 2896 - components: - - pos: 22.5,-5.5 - parent: 1 - type: Transform - - uid: 2897 - components: - - pos: 21.5,-5.5 - parent: 1 - type: Transform - - uid: 2898 - components: - - pos: 20.5,-5.5 - parent: 1 - type: Transform - - uid: 2899 - components: - - pos: 19.5,-5.5 - parent: 1 - type: Transform - - uid: 2901 - components: - - pos: 17.5,-5.5 - parent: 1 - type: Transform - - uid: 2903 - components: - - pos: 15.5,-5.5 - parent: 1 - type: Transform - - uid: 2904 - components: - - pos: 14.5,-5.5 - parent: 1 - type: Transform - - uid: 2906 - components: - - pos: 12.5,-5.5 - parent: 1 - type: Transform - - uid: 2908 - components: - - pos: 10.5,-5.5 - parent: 1 - type: Transform - - uid: 2909 - components: - - pos: 5.5,-5.5 - parent: 1 - type: Transform - - uid: 2911 - components: - - pos: 4.5,-4.5 - parent: 1 - type: Transform - - uid: 2913 - components: - - pos: 4.5,-2.5 - parent: 1 - type: Transform - - uid: 2915 - components: - - pos: 4.5,-0.5 - parent: 1 - type: Transform - - uid: 2916 - components: - - pos: 4.5,0.5 - parent: 1 - type: Transform - - uid: 2918 - components: - - pos: 3.5,-5.5 - parent: 1 - type: Transform - - uid: 2920 - components: - - pos: 1.5,-5.5 - parent: 1 - type: Transform - - uid: 2932 - components: - - pos: 23.5,-4.5 - parent: 1 - type: Transform - - uid: 2933 - components: - - pos: 23.5,-3.5 - parent: 1 - type: Transform - - uid: 2935 - components: - - pos: 23.5,-1.5 - parent: 1 - type: Transform - - uid: 2937 - components: - - pos: 23.5,0.5 - parent: 1 - type: Transform - - uid: 2939 - components: - - pos: 22.5,1.5 - parent: 1 - type: Transform - - uid: 2940 - components: - - pos: 22.5,2.5 - parent: 1 - type: Transform - - uid: 3889 - components: - - pos: -28.5,2.5 - parent: 1 - type: Transform - - uid: 4762 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,-4.5 - parent: 1 - type: Transform - - uid: 4763 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,-4.5 - parent: 1 - type: Transform - - uid: 4764 - components: - - rot: 3.141592653589793 rad - pos: -29.5,-6.5 - parent: 1 - type: Transform - - uid: 4765 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,-4.5 - parent: 1 - type: Transform - - uid: 4766 - components: - - rot: 1.5707963267948966 rad - pos: 17.5,-4.5 - parent: 1 - type: Transform - - uid: 4767 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,-4.5 - parent: 1 - type: Transform - - uid: 4768 - components: - - rot: 1.5707963267948966 rad - pos: 24.5,-2.5 - parent: 1 - type: Transform - - uid: 4771 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,-8.5 - parent: 1 - type: Transform - - uid: 4772 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,-7.5 - parent: 1 - type: Transform - - uid: 4773 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,-8.5 - parent: 1 - type: Transform - - uid: 4774 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,-8.5 - parent: 1 - type: Transform - - uid: 5026 - components: - - pos: -66.5,11.5 - parent: 1 - type: Transform - - uid: 5033 - components: - - pos: -60.5,8.5 - parent: 1 - type: Transform - - uid: 5039 - components: - - pos: -67.5,9.5 - parent: 1 - type: Transform - - uid: 5040 - components: - - pos: -62.5,8.5 - parent: 1 - type: Transform - - uid: 5053 - components: - - pos: -65.5,8.5 - parent: 1 - type: Transform - - uid: 5189 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,-2.5 - parent: 1 - type: Transform - - uid: 5246 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,-8.5 - parent: 1 - type: Transform - - uid: 5247 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,0.5 - parent: 1 - type: Transform - - uid: 5370 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,0.5 - parent: 1 - type: Transform - - uid: 5371 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,-6.5 - parent: 1 - type: Transform - - uid: 5372 - components: - - pos: -28.5,-0.5 - parent: 1 - type: Transform - - uid: 5373 - components: - - pos: -28.5,-1.5 - parent: 1 - type: Transform - - uid: 5375 - components: - - pos: -28.5,-3.5 - parent: 1 - type: Transform - - uid: 5376 - components: - - pos: -28.5,-4.5 - parent: 1 - type: Transform - - uid: 5377 - components: - - pos: -28.5,-5.5 - parent: 1 - type: Transform - - uid: 5381 - components: - - pos: -26.5,-6.5 - parent: 1 - type: Transform - - uid: 5383 - components: - - pos: -25.5,-7.5 - parent: 1 - type: Transform - - uid: 5384 - components: - - pos: -24.5,-7.5 - parent: 1 - type: Transform - - uid: 5386 - components: - - pos: -22.5,-7.5 - parent: 1 - type: Transform - - uid: 5388 - components: - - pos: -21.5,-6.5 - parent: 1 - type: Transform - - uid: 5390 - components: - - pos: -21.5,-4.5 - parent: 1 - type: Transform - - uid: 5391 - components: - - pos: -21.5,-3.5 - parent: 1 - type: Transform - - uid: 5394 - components: - - pos: -21.5,-0.5 - parent: 1 - type: Transform - - uid: 5396 - components: - - pos: -21.5,1.5 - parent: 1 - type: Transform - - uid: 5398 - components: - - pos: -19.5,1.5 - parent: 1 - type: Transform - - uid: 5399 - components: - - pos: -18.5,1.5 - parent: 1 - type: Transform - - uid: 5400 - components: - - pos: -17.5,1.5 - parent: 1 - type: Transform - - uid: 5402 - components: - - pos: -15.5,1.5 - parent: 1 - type: Transform - - uid: 5466 - components: - - pos: -48.5,1.5 - parent: 1 - type: Transform - - uid: 5468 - components: - - pos: -48.5,-0.5 - parent: 1 - type: Transform - - uid: 5469 - components: - - pos: -48.5,-1.5 - parent: 1 - type: Transform - - uid: 5471 - components: - - pos: -48.5,-3.5 - parent: 1 - type: Transform - - uid: 5474 - components: - - pos: -48.5,-6.5 - parent: 1 - type: Transform - - uid: 5475 - components: - - pos: -48.5,-7.5 - parent: 1 - type: Transform - - uid: 5479 - components: - - pos: -52.5,-9.5 - parent: 1 - type: Transform - - uid: 5480 - components: - - pos: -51.5,-9.5 - parent: 1 - type: Transform - - uid: 5482 - components: - - pos: -49.5,-9.5 - parent: 1 - type: Transform - - uid: 5483 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,2.5 - parent: 1 - type: Transform - - uid: 5484 - components: - - pos: -47.5,-9.5 - parent: 1 - type: Transform - - uid: 5485 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,1.5 - parent: 1 - type: Transform - - uid: 5486 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,19.5 - parent: 1 - type: Transform - - uid: 5487 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,17.5 - parent: 1 - type: Transform - - uid: 5488 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,17.5 - parent: 1 - type: Transform - - uid: 5489 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,18.5 - parent: 1 - type: Transform - - uid: 5491 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,20.5 - parent: 1 - type: Transform - - uid: 5492 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,20.5 - parent: 1 - type: Transform - - uid: 5562 - components: - - pos: -41.5,15.5 - parent: 1 - type: Transform - - uid: 5563 - components: - - pos: -41.5,14.5 - parent: 1 - type: Transform - - uid: 5564 - components: - - pos: -43.5,14.5 - parent: 1 - type: Transform - - uid: 5566 - components: - - pos: -45.5,14.5 - parent: 1 - type: Transform - - uid: 5567 - components: - - pos: -46.5,14.5 - parent: 1 - type: Transform - - uid: 5568 - components: - - pos: -47.5,14.5 - parent: 1 - type: Transform - - uid: 5571 - components: - - pos: -50.5,14.5 - parent: 1 - type: Transform - - uid: 5573 - components: - - pos: -50.5,16.5 - parent: 1 - type: Transform - - uid: 5574 - components: - - pos: -50.5,17.5 - parent: 1 - type: Transform - - uid: 5576 - components: - - pos: -50.5,19.5 - parent: 1 - type: Transform - - uid: 5578 - components: - - pos: -50.5,21.5 - parent: 1 - type: Transform - - uid: 5580 - components: - - pos: -48.5,21.5 - parent: 1 - type: Transform - - uid: 5581 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,12.5 - parent: 1 - type: Transform - - uid: 5582 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,14.5 - parent: 1 - type: Transform - - uid: 5583 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,11.5 - parent: 1 - type: Transform - - uid: 5584 - components: - - pos: -44.5,21.5 - parent: 1 - type: Transform - - uid: 5585 - components: - - pos: -43.5,21.5 - parent: 1 - type: Transform - - uid: 5587 - components: - - pos: -41.5,21.5 - parent: 1 - type: Transform - - uid: 5590 - components: - - pos: -44.5,22.5 - parent: 1 - type: Transform - - uid: 5592 - components: - - pos: -44.5,24.5 - parent: 1 - type: Transform - - uid: 5593 - components: - - pos: -44.5,25.5 - parent: 1 - type: Transform - - uid: 5595 - components: - - pos: -44.5,27.5 - parent: 1 - type: Transform - - uid: 5627 - components: - - pos: -44.5,13.5 - parent: 1 - type: Transform - - uid: 5628 - components: - - pos: -44.5,12.5 - parent: 1 - type: Transform - - uid: 5630 - components: - - pos: -44.5,10.5 - parent: 1 - type: Transform - - uid: 5631 - components: - - pos: -44.5,9.5 - parent: 1 - type: Transform - - uid: 5654 - components: - - pos: -33.5,9.5 - parent: 1 - type: Transform - - uid: 5657 - components: - - pos: -33.5,12.5 - parent: 1 - type: Transform - - uid: 5658 - components: - - pos: -33.5,13.5 - parent: 1 - type: Transform - - uid: 5660 - components: - - pos: -31.5,13.5 - parent: 1 - type: Transform - - uid: 5663 - components: - - pos: -30.5,15.5 - parent: 1 - type: Transform - - uid: 5665 - components: - - pos: -30.5,17.5 - parent: 1 - type: Transform - - uid: 5666 - components: - - pos: -30.5,20.5 - parent: 1 - type: Transform - - uid: 5669 - components: - - pos: -28.5,21.5 - parent: 1 - type: Transform - - uid: 5671 - components: - - pos: -26.5,21.5 - parent: 1 - type: Transform - - uid: 5672 - components: - - pos: -25.5,21.5 - parent: 1 - type: Transform - - uid: 5674 - components: - - pos: -23.5,21.5 - parent: 1 - type: Transform - - uid: 5676 - components: - - pos: -21.5,21.5 - parent: 1 - type: Transform - - uid: 5677 - components: - - pos: -20.5,21.5 - parent: 1 - type: Transform - - uid: 5683 - components: - - pos: -20.5,22.5 - parent: 1 - type: Transform - - uid: 5685 - components: - - pos: -20.5,24.5 - parent: 1 - type: Transform - - uid: 5687 - components: - - pos: -20.5,26.5 - parent: 1 - type: Transform - - uid: 5689 - components: - - pos: -19.5,19.5 - parent: 1 - type: Transform - - uid: 5691 - components: - - pos: -19.5,17.5 - parent: 1 - type: Transform - - uid: 5693 - components: - - pos: -19.5,15.5 - parent: 1 - type: Transform - - uid: 5694 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,21.5 - parent: 1 - type: Transform - - uid: 5695 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,20.5 - parent: 1 - type: Transform - - uid: 5696 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,23.5 - parent: 1 - type: Transform - - uid: 5697 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,10.5 - parent: 1 - type: Transform - - uid: 5698 - components: - - rot: 1.5707963267948966 rad - pos: -3.5,15.5 - parent: 1 - type: Transform - - uid: 5699 - components: - - pos: -19.5,9.5 - parent: 1 - type: Transform - - uid: 5714 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,17.5 - parent: 1 - type: Transform - - uid: 5715 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,16.5 - parent: 1 - type: Transform - - uid: 5758 - components: - - pos: -5.5,9.5 - parent: 1 - type: Transform - - uid: 5761 - components: - - pos: -5.5,12.5 - parent: 1 - type: Transform - - uid: 5762 - components: - - pos: -5.5,13.5 - parent: 1 - type: Transform - - uid: 5767 - components: - - pos: -6.5,17.5 - parent: 1 - type: Transform - - uid: 5769 - components: - - pos: -6.5,19.5 - parent: 1 - type: Transform - - uid: 5771 - components: - - pos: -6.5,21.5 - parent: 1 - type: Transform - - uid: 5772 - components: - - pos: -6.5,22.5 - parent: 1 - type: Transform - - uid: 5774 - components: - - pos: -6.5,24.5 - parent: 1 - type: Transform - - uid: 5775 - components: - - pos: -6.5,25.5 - parent: 1 - type: Transform - - uid: 5778 - components: - - pos: -9.5,25.5 - parent: 1 - type: Transform - - uid: 6292 - components: - - rot: -1.5707963267948966 rad - pos: -2.5,38.5 - parent: 1 - type: Transform - - uid: 7122 - components: - - pos: -48.5,68.5 - parent: 1 - type: Transform - - uid: 7225 - components: - - pos: -55.5,80.5 - parent: 1 - type: Transform - - uid: 7227 - components: - - pos: -54.5,79.5 - parent: 1 - type: Transform - - uid: 7240 - components: - - pos: -53.5,80.5 - parent: 1 - type: Transform - - uid: 7346 - components: - - pos: -52.5,69.5 - parent: 1 - type: Transform - - uid: 7348 - components: - - pos: -52.5,67.5 - parent: 1 - type: Transform - - uid: 7349 - components: - - pos: -50.5,68.5 - parent: 1 - type: Transform - - uid: 7351 - components: - - pos: -50.5,69.5 - parent: 1 - type: Transform - - uid: 7353 - components: - - pos: -51.5,68.5 - parent: 1 - type: Transform - - uid: 7354 - components: - - pos: -50.5,67.5 - parent: 1 - type: Transform - - uid: 7355 - components: - - pos: -49.5,68.5 - parent: 1 - type: Transform - - uid: 7358 - components: - - pos: -48.5,67.5 - parent: 1 - type: Transform - - uid: 7360 - components: - - pos: -47.5,67.5 - parent: 1 - type: Transform - - uid: 7361 - components: - - pos: -46.5,68.5 - parent: 1 - type: Transform - - uid: 7363 - components: - - pos: -50.5,70.5 - parent: 1 - type: Transform - - uid: 7366 - components: - - pos: -50.5,71.5 - parent: 1 - type: Transform - - uid: 7367 - components: - - pos: -52.5,76.5 - parent: 1 - type: Transform - - uid: 7402 - components: - - pos: 15.5,48.5 - parent: 1 - type: Transform - - uid: 7403 - components: - - pos: 15.5,47.5 - parent: 1 - type: Transform - - uid: 7404 - components: - - pos: -50.5,73.5 - parent: 1 - type: Transform - - uid: 7405 - components: - - pos: 15.5,45.5 - parent: 1 - type: Transform - - uid: 7406 - components: - - pos: 15.5,44.5 - parent: 1 - type: Transform - - uid: 7407 - components: - - pos: 15.5,43.5 - parent: 1 - type: Transform - - uid: 7409 - components: - - pos: 15.5,41.5 - parent: 1 - type: Transform - - uid: 7411 - components: - - pos: 15.5,39.5 - parent: 1 - type: Transform - - uid: 7412 - components: - - pos: -50.5,75.5 - parent: 1 - type: Transform - - uid: 7415 - components: - - pos: 15.5,35.5 - parent: 1 - type: Transform - - uid: 7416 - components: - - pos: -50.5,76.5 - parent: 1 - type: Transform - - uid: 7417 - components: - - pos: 17.5,35.5 - parent: 1 - type: Transform - - uid: 7418 - components: - - pos: 18.5,35.5 - parent: 1 - type: Transform - - uid: 7419 - components: - - pos: -50.5,77.5 - parent: 1 - type: Transform - - uid: 7420 - components: - - pos: 20.5,35.5 - parent: 1 - type: Transform - - uid: 7421 - components: - - pos: -52.5,70.5 - parent: 1 - type: Transform - - uid: 7422 - components: - - pos: -52.5,71.5 - parent: 1 - type: Transform - - uid: 7423 - components: - - pos: 23.5,35.5 - parent: 1 - type: Transform - - uid: 7424 - components: - - pos: 23.5,34.5 - parent: 1 - type: Transform - - uid: 7426 - components: - - pos: 23.5,32.5 - parent: 1 - type: Transform - - uid: 7427 - components: - - pos: 23.5,31.5 - parent: 1 - type: Transform - - uid: 7428 - components: - - pos: -52.5,73.5 - parent: 1 - type: Transform - - uid: 7429 - components: - - pos: -52.5,74.5 - parent: 1 - type: Transform - - uid: 7430 - components: - - pos: 23.5,28.5 - parent: 1 - type: Transform - - uid: 7432 - components: - - pos: 23.5,26.5 - parent: 1 - type: Transform - - uid: 7434 - components: - - pos: 23.5,24.5 - parent: 1 - type: Transform - - uid: 7435 - components: - - pos: 23.5,23.5 - parent: 1 - type: Transform - - uid: 7436 - components: - - pos: -52.5,77.5 - parent: 1 - type: Transform - - uid: 7437 - components: - - pos: 14.5,40.5 - parent: 1 - type: Transform - - uid: 7439 - components: - - pos: 12.5,40.5 - parent: 1 - type: Transform - - uid: 7445 - components: - - pos: 7.5,41.5 - parent: 1 - type: Transform - - uid: 7446 - components: - - pos: 7.5,42.5 - parent: 1 - type: Transform - - uid: 7449 - components: - - pos: 7.5,45.5 - parent: 1 - type: Transform - - uid: 7450 - components: - - pos: 7.5,46.5 - parent: 1 - type: Transform - - uid: 7452 - components: - - pos: -53.5,79.5 - parent: 1 - type: Transform - - uid: 7453 - components: - - pos: 13.5,48.5 - parent: 1 - type: Transform - - uid: 7454 - components: - - pos: 12.5,48.5 - parent: 1 - type: Transform - - uid: 7455 - components: - - pos: 11.5,48.5 - parent: 1 - type: Transform - - uid: 7456 - components: - - pos: -52.5,78.5 - parent: 1 - type: Transform - - uid: 7457 - components: - - pos: 9.5,48.5 - parent: 1 - type: Transform - - uid: 7459 - components: - - pos: 7.5,48.5 - parent: 1 - type: Transform - - uid: 7460 - components: - - pos: 6.5,47.5 - parent: 1 - type: Transform - - uid: 7462 - components: - - pos: 4.5,47.5 - parent: 1 - type: Transform - - uid: 7463 - components: - - pos: 3.5,47.5 - parent: 1 - type: Transform - - uid: 7464 - components: - - pos: 2.5,47.5 - parent: 1 - type: Transform - - uid: 7466 - components: - - pos: 0.5,47.5 - parent: 1 - type: Transform - - uid: 7467 - components: - - pos: -51.5,79.5 - parent: 1 - type: Transform - - uid: 7469 - components: - - pos: -2.5,47.5 - parent: 1 - type: Transform - - uid: 7470 - components: - - pos: -3.5,47.5 - parent: 1 - type: Transform - - uid: 7471 - components: - - pos: -50.5,79.5 - parent: 1 - type: Transform - - uid: 7472 - components: - - pos: -5.5,47.5 - parent: 1 - type: Transform - - uid: 7473 - components: - - pos: -50.5,80.5 - parent: 1 - type: Transform - - uid: 7474 - components: - - pos: -7.5,47.5 - parent: 1 - type: Transform - - uid: 7475 - components: - - pos: -7.5,48.5 - parent: 1 - type: Transform - - uid: 7477 - components: - - pos: -7.5,50.5 - parent: 1 - type: Transform - - uid: 7478 - components: - - pos: -52.5,80.5 - parent: 1 - type: Transform - - uid: 7479 - components: - - pos: -10.5,51.5 - parent: 1 - type: Transform - - uid: 7480 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,36.5 - parent: 1 - type: Transform - - uid: 7481 - components: - - pos: -12.5,51.5 - parent: 1 - type: Transform - - uid: 7482 - components: - - pos: -13.5,51.5 - parent: 1 - type: Transform - - uid: 7483 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,49.5 - parent: 1 - type: Transform - - uid: 7484 - components: - - pos: -9.5,51.5 - parent: 1 - type: Transform - - uid: 7485 - components: - - pos: -2.5,46.5 - parent: 1 - type: Transform - - uid: 7486 - components: - - rot: 1.5707963267948966 rad - pos: -22.5,50.5 - parent: 1 - type: Transform - - uid: 7487 - components: - - pos: -2.5,44.5 - parent: 1 - type: Transform - - uid: 7488 - components: - - pos: -2.5,43.5 - parent: 1 - type: Transform - - uid: 7489 - components: - - pos: -2.5,42.5 - parent: 1 - type: Transform - - uid: 7490 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,46.5 - parent: 1 - type: Transform - - uid: 7491 - components: - - pos: -2.5,40.5 - parent: 1 - type: Transform - - uid: 7493 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,54.5 - parent: 1 - type: Transform - - uid: 7494 - components: - - rot: -1.5707963267948966 rad - pos: -3.5,39.5 - parent: 1 - type: Transform - - uid: 7495 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,47.5 - parent: 1 - type: Transform - - uid: 7496 - components: - - pos: -4.5,37.5 - parent: 1 - type: Transform - - uid: 7497 - components: - - pos: -5.5,37.5 - parent: 1 - type: Transform - - uid: 7498 - components: - - pos: -6.5,37.5 - parent: 1 - type: Transform - - uid: 7499 - components: - - pos: -7.5,37.5 - parent: 1 - type: Transform - - uid: 7500 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,46.5 - parent: 1 - type: Transform - - uid: 7501 - components: - - pos: -9.5,37.5 - parent: 1 - type: Transform - - uid: 7502 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,36.5 - parent: 1 - type: Transform - - uid: 7503 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,43.5 - parent: 1 - type: Transform - - uid: 7504 - components: - - rot: 1.5707963267948966 rad - pos: 21.5,34.5 - parent: 1 - type: Transform - - uid: 7505 - components: - - rot: 1.5707963267948966 rad - pos: 23.5,20.5 - parent: 1 - type: Transform - - uid: 7506 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,19.5 - parent: 1 - type: Transform - - uid: 7507 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,34.5 - parent: 1 - type: Transform - - uid: 7508 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,25.5 - parent: 1 - type: Transform - - uid: 7637 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,32.5 - parent: 1 - type: Transform - - uid: 7638 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,36.5 - parent: 1 - type: Transform - - uid: 7639 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,39.5 - parent: 1 - type: Transform - - uid: 7833 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,40.5 - parent: 1 - type: Transform - - uid: 7834 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,39.5 - parent: 1 - type: Transform - - uid: 7835 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,40.5 - parent: 1 - type: Transform - - uid: 7837 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,45.5 - parent: 1 - type: Transform - - uid: 7838 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,46.5 - parent: 1 - type: Transform - - uid: 7839 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,46.5 - parent: 1 - type: Transform - - uid: 7840 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,42.5 - parent: 1 - type: Transform - - uid: 7849 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,48.5 - parent: 1 - type: Transform - - uid: 7918 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,55.5 - parent: 1 - type: Transform - - uid: 8325 - components: - - pos: -86.5,41.5 - parent: 1 - type: Transform - - uid: 8326 - components: - - pos: -86.5,42.5 - parent: 1 - type: Transform - - uid: 8546 - components: - - pos: -86.5,43.5 - parent: 1 - type: Transform - - uid: 8547 - components: - - pos: -86.5,44.5 - parent: 1 - type: Transform - - uid: 8577 - components: - - pos: -86.5,45.5 - parent: 1 - type: Transform - - uid: 8616 - components: - - pos: -86.5,40.5 - parent: 1 - type: Transform - - uid: 8617 - components: - - pos: -86.5,39.5 - parent: 1 - type: Transform - - uid: 9911 - components: - - rot: 3.141592653589793 rad - pos: 7.5,-17.5 - parent: 1 - type: Transform - - uid: 10146 - components: - - pos: -70.5,31.5 - parent: 1 - type: Transform - - uid: 10176 - components: - - pos: -71.5,31.5 - parent: 1 - type: Transform - - uid: 10226 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,53.5 - parent: 1 - type: Transform - - uid: 10247 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,28.5 - parent: 1 - type: Transform - - uid: 10248 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,29.5 - parent: 1 - type: Transform - - uid: 10250 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,30.5 - parent: 1 - type: Transform - - uid: 10255 - components: - - rot: -1.5707963267948966 rad - pos: -71.5,28.5 - parent: 1 - type: Transform - - uid: 10257 - components: - - rot: -1.5707963267948966 rad - pos: -71.5,29.5 - parent: 1 - type: Transform - - uid: 10259 - components: - - rot: -1.5707963267948966 rad - pos: -71.5,30.5 - parent: 1 - type: Transform - - uid: 10267 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,20.5 - parent: 1 - type: Transform - - uid: 10268 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,21.5 - parent: 1 - type: Transform - - uid: 10270 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,22.5 - parent: 1 - type: Transform - - uid: 10272 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,23.5 - parent: 1 - type: Transform - - uid: 10273 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,24.5 - parent: 1 - type: Transform - - uid: 10274 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,25.5 - parent: 1 - type: Transform - - uid: 10275 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,26.5 - parent: 1 - type: Transform - - uid: 10276 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,27.5 - parent: 1 - type: Transform - - uid: 10279 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,28.5 - parent: 1 - type: Transform - - uid: 10281 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,29.5 - parent: 1 - type: Transform - - uid: 10282 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,30.5 - parent: 1 - type: Transform - - uid: 10283 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,20.5 - parent: 1 - type: Transform - - uid: 10284 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,21.5 - parent: 1 - type: Transform - - uid: 10286 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,22.5 - parent: 1 - type: Transform - - uid: 10287 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,23.5 - parent: 1 - type: Transform - - uid: 10289 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,24.5 - parent: 1 - type: Transform - - uid: 10290 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,25.5 - parent: 1 - type: Transform - - uid: 10291 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,26.5 - parent: 1 - type: Transform - - uid: 10293 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,27.5 - parent: 1 - type: Transform - - uid: 10294 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,28.5 - parent: 1 - type: Transform - - uid: 10296 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,29.5 - parent: 1 - type: Transform - - uid: 10297 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,30.5 - parent: 1 - type: Transform - - uid: 10299 - components: - - rot: -1.5707963267948966 rad - pos: -100.5,32.5 - parent: 1 - type: Transform - - uid: 10300 - components: - - rot: -1.5707963267948966 rad - pos: -100.5,31.5 - parent: 1 - type: Transform - - uid: 10301 - components: - - rot: -1.5707963267948966 rad - pos: -99.5,32.5 - parent: 1 - type: Transform - - uid: 10303 - components: - - rot: -1.5707963267948966 rad - pos: -99.5,31.5 - parent: 1 - type: Transform - - uid: 10304 - components: - - rot: -1.5707963267948966 rad - pos: -98.5,32.5 - parent: 1 - type: Transform - - uid: 10305 - components: - - rot: -1.5707963267948966 rad - pos: -98.5,31.5 - parent: 1 - type: Transform - - uid: 10307 - components: - - rot: -1.5707963267948966 rad - pos: -96.5,32.5 - parent: 1 - type: Transform - - uid: 10309 - components: - - rot: -1.5707963267948966 rad - pos: -96.5,31.5 - parent: 1 - type: Transform - - uid: 10310 - components: - - rot: -1.5707963267948966 rad - pos: -95.5,32.5 - parent: 1 - type: Transform - - uid: 10311 - components: - - rot: -1.5707963267948966 rad - pos: -95.5,31.5 - parent: 1 - type: Transform - - uid: 10313 - components: - - rot: -1.5707963267948966 rad - pos: -94.5,32.5 - parent: 1 - type: Transform - - uid: 10314 - components: - - rot: -1.5707963267948966 rad - pos: -94.5,31.5 - parent: 1 - type: Transform - - uid: 10319 - components: - - pos: -41.5,55.5 - parent: 1 - type: Transform - - uid: 10321 - components: - - pos: -39.5,55.5 - parent: 1 - type: Transform - - uid: 10322 - components: - - pos: -38.5,55.5 - parent: 1 - type: Transform - - uid: 10323 - components: - - pos: -37.5,55.5 - parent: 1 - type: Transform - - uid: 10324 - components: - - rot: -1.5707963267948966 rad - pos: -93.5,22.5 - parent: 1 - type: Transform - - uid: 10325 - components: - - pos: -35.5,55.5 - parent: 1 - type: Transform - - uid: 10326 - components: - - rot: -1.5707963267948966 rad - pos: -93.5,23.5 - parent: 1 - type: Transform - - uid: 10327 - components: - - pos: -33.5,55.5 - parent: 1 - type: Transform - - uid: 10328 - components: - - pos: -32.5,55.5 - parent: 1 - type: Transform - - uid: 10329 - components: - - pos: -32.5,54.5 - parent: 1 - type: Transform - - uid: 10330 - components: - - rot: -1.5707963267948966 rad - pos: -93.5,24.5 - parent: 1 - type: Transform - - uid: 10331 - components: - - pos: -32.5,52.5 - parent: 1 - type: Transform - - uid: 10332 - components: - - pos: -32.5,51.5 - parent: 1 - type: Transform - - uid: 10333 - components: - - pos: -32.5,50.5 - parent: 1 - type: Transform - - uid: 10334 - components: - - pos: -31.5,50.5 - parent: 1 - type: Transform - - uid: 10335 - components: - - rot: -1.5707963267948966 rad - pos: -93.5,25.5 - parent: 1 - type: Transform - - uid: 10336 - components: - - pos: -29.5,50.5 - parent: 1 - type: Transform - - uid: 10338 - components: - - pos: -27.5,50.5 - parent: 1 - type: Transform - - uid: 10339 - components: - - pos: -26.5,50.5 - parent: 1 - type: Transform - - uid: 10340 - components: - - pos: -25.5,50.5 - parent: 1 - type: Transform - - uid: 10341 - components: - - rot: -1.5707963267948966 rad - pos: -93.5,26.5 - parent: 1 - type: Transform - - uid: 10342 - components: - - pos: -24.5,51.5 - parent: 1 - type: Transform - - uid: 10345 - components: - - pos: -21.5,51.5 - parent: 1 - type: Transform - - uid: 10346 - components: - - pos: -20.5,51.5 - parent: 1 - type: Transform - - uid: 10348 - components: - - pos: -24.5,49.5 - parent: 1 - type: Transform - - uid: 10350 - components: - - pos: -24.5,47.5 - parent: 1 - type: Transform - - uid: 10351 - components: - - pos: -24.5,46.5 - parent: 1 - type: Transform - - uid: 10353 - components: - - pos: -24.5,44.5 - parent: 1 - type: Transform - - uid: 10355 - components: - - pos: -24.5,42.5 - parent: 1 - type: Transform - - uid: 10356 - components: - - pos: -24.5,41.5 - parent: 1 - type: Transform - - uid: 10359 - components: - - pos: -24.5,38.5 - parent: 1 - type: Transform - - uid: 10360 - components: - - pos: -24.5,37.5 - parent: 1 - type: Transform - - uid: 10464 - components: - - rot: -1.5707963267948966 rad - pos: -93.5,27.5 - parent: 1 - type: Transform - - uid: 10465 - components: - - rot: -1.5707963267948966 rad - pos: -93.5,28.5 - parent: 1 - type: Transform - - uid: 10477 - components: - - rot: -1.5707963267948966 rad - pos: -94.5,29.5 - parent: 1 - type: Transform - - uid: 10478 - components: - - rot: -1.5707963267948966 rad - pos: -95.5,29.5 - parent: 1 - type: Transform - - uid: 10479 - components: - - rot: -1.5707963267948966 rad - pos: -96.5,29.5 - parent: 1 - type: Transform - - uid: 10480 - components: - - rot: -1.5707963267948966 rad - pos: -97.5,29.5 - parent: 1 - type: Transform - - uid: 10481 - components: - - rot: -1.5707963267948966 rad - pos: -98.5,29.5 - parent: 1 - type: Transform - - uid: 10482 - components: - - rot: -1.5707963267948966 rad - pos: -99.5,29.5 - parent: 1 - type: Transform - - uid: 10483 - components: - - rot: -1.5707963267948966 rad - pos: -100.5,29.5 - parent: 1 - type: Transform - - uid: 10484 - components: - - rot: -1.5707963267948966 rad - pos: -101.5,28.5 - parent: 1 - type: Transform - - uid: 10485 - components: - - rot: -1.5707963267948966 rad - pos: -101.5,27.5 - parent: 1 - type: Transform - - uid: 10486 - components: - - rot: -1.5707963267948966 rad - pos: -101.5,26.5 - parent: 1 - type: Transform - - uid: 10487 - components: - - rot: -1.5707963267948966 rad - pos: -101.5,25.5 - parent: 1 - type: Transform - - uid: 10488 - components: - - rot: -1.5707963267948966 rad - pos: -101.5,24.5 - parent: 1 - type: Transform - - uid: 10489 - components: - - rot: -1.5707963267948966 rad - pos: -101.5,23.5 - parent: 1 - type: Transform - - uid: 10490 - components: - - rot: -1.5707963267948966 rad - pos: -101.5,22.5 - parent: 1 - type: Transform - - uid: 10491 - components: - - rot: -1.5707963267948966 rad - pos: -100.5,21.5 - parent: 1 - type: Transform - - uid: 10492 - components: - - rot: -1.5707963267948966 rad - pos: -99.5,21.5 - parent: 1 - type: Transform - - uid: 10493 - components: - - rot: -1.5707963267948966 rad - pos: -98.5,21.5 - parent: 1 - type: Transform - - uid: 10494 - components: - - rot: -1.5707963267948966 rad - pos: -97.5,21.5 - parent: 1 - type: Transform - - uid: 10495 - components: - - rot: -1.5707963267948966 rad - pos: -96.5,21.5 - parent: 1 - type: Transform - - uid: 10496 - components: - - rot: -1.5707963267948966 rad - pos: -95.5,21.5 - parent: 1 - type: Transform - - uid: 10497 - components: - - rot: -1.5707963267948966 rad - pos: -94.5,21.5 - parent: 1 - type: Transform - - uid: 10499 - components: - - rot: -1.5707963267948966 rad - pos: -100.5,18.5 - parent: 1 - type: Transform - - uid: 10500 - components: - - rot: -1.5707963267948966 rad - pos: -99.5,19.5 - parent: 1 - type: Transform - - uid: 10501 - components: - - rot: -1.5707963267948966 rad - pos: -99.5,18.5 - parent: 1 - type: Transform - - uid: 10502 - components: - - rot: -1.5707963267948966 rad - pos: -98.5,19.5 - parent: 1 - type: Transform - - uid: 10503 - components: - - rot: -1.5707963267948966 rad - pos: -98.5,18.5 - parent: 1 - type: Transform - - uid: 10504 - components: - - rot: -1.5707963267948966 rad - pos: -96.5,19.5 - parent: 1 - type: Transform - - uid: 10505 - components: - - rot: -1.5707963267948966 rad - pos: -96.5,18.5 - parent: 1 - type: Transform - - uid: 10506 - components: - - rot: -1.5707963267948966 rad - pos: -95.5,19.5 - parent: 1 - type: Transform - - uid: 10507 - components: - - rot: -1.5707963267948966 rad - pos: -95.5,18.5 - parent: 1 - type: Transform - - uid: 10508 - components: - - rot: -1.5707963267948966 rad - pos: -94.5,19.5 - parent: 1 - type: Transform - - uid: 10509 - components: - - rot: -1.5707963267948966 rad - pos: -94.5,18.5 - parent: 1 - type: Transform - - uid: 10510 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,30.5 - parent: 1 - type: Transform - - uid: 10511 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,30.5 - parent: 1 - type: Transform - - uid: 10512 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,29.5 - parent: 1 - type: Transform - - uid: 10513 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,28.5 - parent: 1 - type: Transform - - uid: 10514 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,27.5 - parent: 1 - type: Transform - - uid: 10515 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,26.5 - parent: 1 - type: Transform - - uid: 10516 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,25.5 - parent: 1 - type: Transform - - uid: 10517 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,24.5 - parent: 1 - type: Transform - - uid: 10518 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,23.5 - parent: 1 - type: Transform - - uid: 10519 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,22.5 - parent: 1 - type: Transform - - uid: 10520 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,21.5 - parent: 1 - type: Transform - - uid: 10521 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,20.5 - parent: 1 - type: Transform - - uid: 10580 - components: - - rot: -1.5707963267948966 rad - pos: -100.5,19.5 - parent: 1 - type: Transform - - uid: 12804 - components: - - pos: -2.5,12.5 - parent: 1 - type: Transform - - uid: 12805 - components: - - pos: -3.5,13.5 - parent: 1 - type: Transform - - uid: 12806 - components: - - pos: -0.5,12.5 - parent: 1 - type: Transform - - uid: 12807 - components: - - pos: 3.5,12.5 - parent: 1 - type: Transform - - uid: 12808 - components: - - pos: 4.5,11.5 - parent: 1 - type: Transform - - uid: 12809 - components: - - pos: 4.5,10.5 - parent: 1 - type: Transform - - uid: 12810 - components: - - pos: 3.5,9.5 - parent: 1 - type: Transform - - uid: 12811 - components: - - pos: 6.5,8.5 - parent: 1 - type: Transform - - uid: 12812 - components: - - pos: 10.5,9.5 - parent: 1 - type: Transform - - uid: 12813 - components: - - pos: 12.5,9.5 - parent: 1 - type: Transform - - uid: 12814 - components: - - pos: 12.5,8.5 - parent: 1 - type: Transform - - uid: 12815 - components: - - pos: 8.5,9.5 - parent: 1 - type: Transform - - uid: 12816 - components: - - pos: 7.5,8.5 - parent: 1 - type: Transform - - uid: 12817 - components: - - pos: 14.5,9.5 - parent: 1 - type: Transform - - uid: 12818 - components: - - pos: 13.5,12.5 - parent: 1 - type: Transform - - uid: 12819 - components: - - pos: 13.5,13.5 - parent: 1 - type: Transform - - uid: 12820 - components: - - pos: 13.5,15.5 - parent: 1 - type: Transform - - uid: 12821 - components: - - pos: 14.5,17.5 - parent: 1 - type: Transform - - uid: 12822 - components: - - pos: 14.5,18.5 - parent: 1 - type: Transform - - uid: 12823 - components: - - pos: 13.5,21.5 - parent: 1 - type: Transform - - uid: 12824 - components: - - pos: 12.5,22.5 - parent: 1 - type: Transform - - uid: 12825 - components: - - pos: 15.5,23.5 - parent: 1 - type: Transform - - uid: 12826 - components: - - pos: 14.5,25.5 - parent: 1 - type: Transform - - uid: 12827 - components: - - pos: 15.5,26.5 - parent: 1 - type: Transform - - uid: 12828 - components: - - pos: 17.5,25.5 - parent: 1 - type: Transform - - uid: 12829 - components: - - pos: 14.5,24.5 - parent: 1 - type: Transform - - uid: 12830 - components: - - pos: 15.5,24.5 - parent: 1 - type: Transform - - uid: 12831 - components: - - pos: 18.5,26.5 - parent: 1 - type: Transform - - uid: 12832 - components: - - pos: 20.5,25.5 - parent: 1 - type: Transform - - uid: 12833 - components: - - pos: 21.5,26.5 - parent: 1 - type: Transform - - uid: 13917 - components: - - pos: -3.5,-20.5 - parent: 1 - type: Transform - - uid: 14250 - components: - - pos: -67.5,50.5 - parent: 1 - type: Transform - - uid: 14251 - components: - - pos: -67.5,54.5 - parent: 1 - type: Transform - - uid: 14252 - components: - - pos: -67.5,56.5 - parent: 1 - type: Transform - - uid: 14253 - components: - - pos: -66.5,57.5 - parent: 1 - type: Transform - - uid: 14254 - components: - - pos: -75.5,52.5 - parent: 1 - type: Transform - - uid: 14255 - components: - - pos: -75.5,50.5 - parent: 1 - type: Transform - - uid: 14256 - components: - - pos: -74.5,47.5 - parent: 1 - type: Transform - - uid: 14257 - components: - - pos: -74.5,46.5 - parent: 1 - type: Transform - - uid: 14258 - components: - - pos: -75.5,45.5 - parent: 1 - type: Transform - - uid: 14259 - components: - - pos: -75.5,42.5 - parent: 1 - type: Transform - - uid: 14260 - components: - - pos: -74.5,41.5 - parent: 1 - type: Transform - - uid: 14261 - components: - - pos: -75.5,43.5 - parent: 1 - type: Transform - - uid: 14262 - components: - - pos: -74.5,44.5 - parent: 1 - type: Transform - - uid: 14263 - components: - - pos: -75.5,40.5 - parent: 1 - type: Transform - - uid: 14264 - components: - - pos: -75.5,38.5 - parent: 1 - type: Transform - - uid: 14265 - components: - - pos: -74.5,38.5 - parent: 1 - type: Transform - - uid: 14266 - components: - - pos: -71.5,37.5 - parent: 1 - type: Transform - - uid: 14267 - components: - - pos: -67.5,37.5 - parent: 1 - type: Transform - - uid: 14268 - components: - - pos: -67.5,36.5 - parent: 1 - type: Transform - - uid: 14269 - components: - - pos: -65.5,36.5 - parent: 1 - type: Transform - - uid: 14270 - components: - - pos: -61.5,35.5 - parent: 1 - type: Transform - - uid: 14271 - components: - - pos: -66.5,40.5 - parent: 1 - type: Transform - - uid: 14272 - components: - - pos: -67.5,41.5 - parent: 1 - type: Transform - - uid: 14273 - components: - - pos: -66.5,42.5 - parent: 1 - type: Transform - - uid: 14274 - components: - - pos: -67.5,43.5 - parent: 1 - type: Transform - - uid: 14275 - components: - - pos: -67.5,44.5 - parent: 1 - type: Transform - - uid: 14276 - components: - - pos: -63.5,47.5 - parent: 1 - type: Transform - - uid: 14277 - components: - - pos: -62.5,47.5 - parent: 1 - type: Transform - - uid: 14278 - components: - - pos: -61.5,48.5 - parent: 1 - type: Transform - - uid: 14559 - components: - - pos: -67.5,13.5 - parent: 1 - type: Transform - - uid: 14560 - components: - - pos: -66.5,12.5 - parent: 1 - type: Transform - - uid: 14562 - components: - - pos: -65.5,17.5 - parent: 1 - type: Transform - - uid: 14563 - components: - - pos: -62.5,16.5 - parent: 1 - type: Transform - - uid: 14564 - components: - - pos: -61.5,17.5 - parent: 1 - type: Transform - - uid: 14565 - components: - - pos: -60.5,21.5 - parent: 1 - type: Transform - - uid: 14566 - components: - - pos: -60.5,19.5 - parent: 1 - type: Transform - - uid: 14567 - components: - - pos: -61.5,23.5 - parent: 1 - type: Transform - - uid: 14568 - components: - - pos: -60.5,25.5 - parent: 1 - type: Transform - - uid: 14569 - components: - - pos: -60.5,27.5 - parent: 1 - type: Transform - - uid: 14570 - components: - - pos: -60.5,26.5 - parent: 1 - type: Transform - - uid: 14571 - components: - - pos: -61.5,29.5 - parent: 1 - type: Transform - - uid: 14572 - components: - - pos: -61.5,21.5 - parent: 1 - type: Transform - - uid: 14573 - components: - - pos: -64.5,17.5 - parent: 1 - type: Transform - - uid: 14574 - components: - - pos: -44.5,53.5 - parent: 1 - type: Transform - - uid: 14575 - components: - - pos: -44.5,51.5 - parent: 1 - type: Transform - - uid: 14576 - components: - - pos: -44.5,50.5 - parent: 1 - type: Transform - - uid: 15146 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,45.5 - parent: 1 - type: Transform - - uid: 15225 - components: - - rot: -1.5707963267948966 rad - pos: -2.5,37.5 - parent: 1 - type: Transform - - uid: 15227 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,43.5 - parent: 1 - type: Transform - - uid: 15228 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,42.5 - parent: 1 - type: Transform - - uid: 15229 - components: - - rot: -1.5707963267948966 rad - pos: 0.5,42.5 - parent: 1 - type: Transform - - uid: 15230 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,44.5 - parent: 1 - type: Transform - - uid: 15454 - components: - - pos: -37.5,61.5 - parent: 1 - type: Transform - - uid: 15455 - components: - - pos: -42.5,68.5 - parent: 1 - type: Transform - - uid: 15458 - components: - - pos: -38.5,64.5 - parent: 1 - type: Transform - - uid: 15459 - components: - - pos: -37.5,67.5 - parent: 1 - type: Transform - - uid: 15460 - components: - - pos: -38.5,58.5 - parent: 1 - type: Transform - - uid: 15461 - components: - - pos: -44.5,57.5 - parent: 1 - type: Transform - - uid: 15472 - components: - - pos: -42.5,58.5 - parent: 1 - type: Transform - - uid: 15473 - components: - - pos: -40.5,57.5 - parent: 1 - type: Transform - - uid: 15474 - components: - - pos: -39.5,58.5 - parent: 1 - type: Transform - - uid: 15478 - components: - - pos: -43.5,58.5 - parent: 1 - type: Transform - - uid: 15480 - components: - - pos: -41.5,57.5 - parent: 1 - type: Transform - - uid: 15481 - components: - - pos: -39.5,57.5 - parent: 1 - type: Transform - - uid: 15482 - components: - - pos: -41.5,58.5 - parent: 1 - type: Transform - - uid: 15483 - components: - - pos: -43.5,57.5 - parent: 1 - type: Transform - - uid: 15487 - components: - - pos: -39.5,68.5 - parent: 1 - type: Transform - - uid: 15491 - components: - - pos: -38.5,57.5 - parent: 1 - type: Transform - - uid: 15492 - components: - - pos: -37.5,58.5 - parent: 1 - type: Transform - - uid: 15493 - components: - - pos: -37.5,59.5 - parent: 1 - type: Transform - - uid: 15495 - components: - - rot: 3.141592653589793 rad - pos: -5.5,-18.5 - parent: 1 - type: Transform - - uid: 15501 - components: - - pos: -5.5,-19.5 - parent: 1 - type: Transform - - uid: 15505 - components: - - pos: -1.5,-20.5 - parent: 1 - type: Transform - - uid: 15506 - components: - - pos: -0.5,-20.5 - parent: 1 - type: Transform - - uid: 15507 - components: - - pos: 1.5,-20.5 - parent: 1 - type: Transform - - uid: 15508 - components: - - pos: 3.5,-20.5 - parent: 1 - type: Transform - - uid: 15509 - components: - - pos: 5.5,-20.5 - parent: 1 - type: Transform - - uid: 15520 - components: - - pos: -5.5,-20.5 - parent: 1 - type: Transform - - uid: 15521 - components: - - pos: -4.5,-20.5 - parent: 1 - type: Transform - - uid: 15522 - components: - - pos: -2.5,-20.5 - parent: 1 - type: Transform - - uid: 15523 - components: - - pos: 0.5,-20.5 - parent: 1 - type: Transform - - uid: 15524 - components: - - pos: 2.5,-20.5 - parent: 1 - type: Transform - - uid: 15525 - components: - - pos: 4.5,-20.5 - parent: 1 - type: Transform - - uid: 15526 - components: - - pos: 6.5,-20.5 - parent: 1 - type: Transform - - uid: 15551 - components: - - pos: 8.5,-18.5 - parent: 1 - type: Transform - - uid: 15552 - components: - - pos: 8.5,-19.5 - parent: 1 - type: Transform - - uid: 15553 - components: - - pos: 9.5,-18.5 - parent: 1 - type: Transform - - uid: 15554 - components: - - pos: 9.5,-19.5 - parent: 1 - type: Transform - - uid: 15555 - components: - - pos: 10.5,-18.5 - parent: 1 - type: Transform - - uid: 15556 - components: - - pos: 10.5,-19.5 - parent: 1 - type: Transform - - uid: 15816 - components: - - rot: 3.141592653589793 rad - pos: 8.5,-20.5 - parent: 1 - type: Transform - - uid: 15879 - components: - - rot: 3.141592653589793 rad - pos: 10.5,-20.5 - parent: 1 - type: Transform - - uid: 15880 - components: - - rot: 3.141592653589793 rad - pos: 7.5,-18.5 - parent: 1 - type: Transform - - uid: 15881 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-17.5 - parent: 1 - type: Transform - - uid: 15882 - components: - - rot: 3.141592653589793 rad - pos: 12.5,-18.5 - parent: 1 - type: Transform - - uid: 15883 - components: - - rot: 3.141592653589793 rad - pos: 12.5,-19.5 - parent: 1 - type: Transform - - uid: 15884 - components: - - rot: 3.141592653589793 rad - pos: 12.5,-17.5 - parent: 1 - type: Transform - - uid: 15885 - components: - - rot: 3.141592653589793 rad - pos: 8.5,-17.5 - parent: 1 - type: Transform - - uid: 15886 - components: - - rot: 3.141592653589793 rad - pos: 9.5,-17.5 - parent: 1 - type: Transform - - uid: 15887 - components: - - rot: 3.141592653589793 rad - pos: 9.5,-20.5 - parent: 1 - type: Transform - - uid: 15889 - components: - - rot: 3.141592653589793 rad - pos: 10.5,-17.5 - parent: 1 - type: Transform - - uid: 15893 - components: - - rot: 3.141592653589793 rad - pos: 7.5,-20.5 - parent: 1 - type: Transform - - uid: 15897 - components: - - rot: 3.141592653589793 rad - pos: 7.5,-19.5 - parent: 1 - type: Transform - - uid: 15902 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-17.5 - parent: 1 - type: Transform - - uid: 15903 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-18.5 - parent: 1 - type: Transform - - uid: 15904 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-19.5 - parent: 1 - type: Transform - - uid: 15905 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-20.5 - parent: 1 - type: Transform - - uid: 15907 - components: - - rot: 3.141592653589793 rad - pos: 12.5,-20.5 - parent: 1 - type: Transform -- proto: Chair - entities: - - uid: 169 - components: - - pos: -51.5,49.5 - parent: 1 - type: Transform - - uid: 913 - components: - - pos: 28.5,-0.5 - parent: 1 - type: Transform - - uid: 1529 - components: - - pos: -17.5,-3.5 - parent: 1 - type: Transform - - uid: 1530 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,-4.5 - parent: 1 - type: Transform - - uid: 1902 - components: - - rot: 3.141592653589793 rad - pos: -51.5,47.5 - parent: 1 - type: Transform - - uid: 2070 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,42.5 - parent: 1 - type: Transform - - uid: 2639 - components: - - pos: -9.5,29.5 - parent: 1 - type: Transform - - uid: 2979 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,21.5 - parent: 1 - type: Transform - - uid: 2980 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,20.5 - parent: 1 - type: Transform - - uid: 2981 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,19.5 - parent: 1 - type: Transform - - uid: 2982 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,17.5 - parent: 1 - type: Transform - - uid: 2983 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,15.5 - parent: 1 - type: Transform - - uid: 2984 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,14.5 - parent: 1 - type: Transform - - uid: 2985 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,13.5 - parent: 1 - type: Transform - - uid: 2986 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,12.5 - parent: 1 - type: Transform - - uid: 2987 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,11.5 - parent: 1 - type: Transform - - uid: 2988 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,9.5 - parent: 1 - type: Transform - - uid: 3649 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,3.5 - parent: 1 - type: Transform - - uid: 3650 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,2.5 - parent: 1 - type: Transform - - uid: 3651 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,1.5 - parent: 1 - type: Transform - - uid: 3652 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,0.5 - parent: 1 - type: Transform - - uid: 3729 - components: - - rot: 3.141592653589793 rad - pos: -45.5,-4.5 - parent: 1 - type: Transform - - uid: 4141 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,28.5 - parent: 1 - type: Transform - - uid: 4142 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,28.5 - parent: 1 - type: Transform - - uid: 4143 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,28.5 - parent: 1 - type: Transform - - uid: 4144 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,28.5 - parent: 1 - type: Transform - - uid: 4145 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,27.5 - parent: 1 - type: Transform - - uid: 4146 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,27.5 - parent: 1 - type: Transform - - uid: 4147 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,27.5 - parent: 1 - type: Transform - - uid: 4148 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,25.5 - parent: 1 - type: Transform - - uid: 4149 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,25.5 - parent: 1 - type: Transform - - uid: 4150 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,25.5 - parent: 1 - type: Transform - - uid: 4151 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,24.5 - parent: 1 - type: Transform - - uid: 4152 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,24.5 - parent: 1 - type: Transform - - uid: 4153 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,24.5 - parent: 1 - type: Transform - - uid: 4154 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,24.5 - parent: 1 - type: Transform - - uid: 4155 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,26.5 - parent: 1 - type: Transform - - uid: 4156 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,26.5 - parent: 1 - type: Transform - - uid: 4157 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,26.5 - parent: 1 - type: Transform - - uid: 4158 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,26.5 - parent: 1 - type: Transform - - uid: 5266 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,13.5 - parent: 1 - type: Transform - - uid: 5267 - components: - - pos: -53.5,14.5 - parent: 1 - type: Transform - - uid: 5409 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,-8.5 - parent: 1 - type: Transform - - uid: 5680 - components: - - rot: 3.141592653589793 rad - pos: -31.5,12.5 - parent: 1 - type: Transform - - uid: 5719 - components: - - rot: -1.5707963267948966 rad - pos: -3.5,14.5 - parent: 1 - type: Transform - - uid: 7303 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,88.5 - parent: 1 - type: Transform - - uid: 7313 - components: - - rot: 3.141592653589793 rad - pos: -59.5,88.5 - parent: 1 - type: Transform - - uid: 7538 - components: - - rot: 3.141592653589793 rad - pos: -22.5,45.5 - parent: 1 - type: Transform - - uid: 7540 - components: - - rot: 3.141592653589793 rad - pos: -21.5,45.5 - parent: 1 - type: Transform - - uid: 7642 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,82.5 - parent: 1 - type: Transform - - uid: 7643 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,88.5 - parent: 1 - type: Transform - - uid: 7909 - components: - - pos: -47.5,60.5 - parent: 1 - type: Transform - - uid: 7911 - components: - - pos: -48.5,60.5 - parent: 1 - type: Transform - - uid: 7982 - components: - - rot: -1.5707963267948966 rad - pos: -59.5,58.5 - parent: 1 - type: Transform - - uid: 7983 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,58.5 - parent: 1 - type: Transform - - uid: 9223 - components: - - pos: -63.5,42.5 - parent: 1 - type: Transform - - uid: 9776 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,35.5 - parent: 1 - type: Transform - - uid: 10100 - components: - - rot: 1.5707963267948966 rad - pos: -3.5,41.5 - parent: 1 - type: Transform - - uid: 10883 - components: - - rot: 3.141592653589793 rad - pos: -9.5,54.5 - parent: 1 - type: Transform - - uid: 12795 - components: - - rot: 3.141592653589793 rad - pos: 15.5,30.5 - parent: 1 - type: Transform - - uid: 12906 - components: - - rot: 3.141592653589793 rad - pos: 12.5,8.5 - parent: 1 - type: Transform - - uid: 13837 - components: - - rot: 3.141592653589793 rad - pos: -43.5,54.5 - parent: 1 - type: Transform - - uid: 14242 - components: - - rot: 3.141592653589793 rad - pos: -69.5,51.5 - parent: 1 - type: Transform - - uid: 14247 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,43.5 - parent: 1 - type: Transform - - uid: 14248 - components: - - pos: -63.5,48.5 - parent: 1 - type: Transform - - uid: 14289 - components: - - rot: 3.141592653589793 rad - pos: -70.5,48.5 - parent: 1 - type: Transform - - uid: 14587 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,24.5 - parent: 1 - type: Transform - - uid: 14592 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,11.5 - parent: 1 - type: Transform - - uid: 15057 - components: - - pos: -3.5,34.5 - parent: 1 - type: Transform - - uid: 15058 - components: - - pos: -2.5,34.5 - parent: 1 - type: Transform - - uid: 15059 - components: - - rot: 3.141592653589793 rad - pos: -2.5,29.5 - parent: 1 - type: Transform - - uid: 15060 - components: - - rot: 3.141592653589793 rad - pos: -1.5,29.5 - parent: 1 - type: Transform -- proto: ChairCursed - entities: - - uid: 9773 - components: - - rot: 3.141592653589793 rad - pos: -44.5,35.5 - parent: 1 - type: Transform - - uid: 9778 - components: - - rot: 3.141592653589793 rad - pos: -36.5,36.5 - parent: 1 - type: Transform -- proto: ChairFolding - entities: - - uid: 281 - components: - - pos: -14.5,-13.5 - parent: 1 - type: Transform - - uid: 286 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,-13.5 - parent: 1 - type: Transform - - uid: 343 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,-11.5 - parent: 1 - type: Transform - - uid: 344 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,-11.5 - parent: 1 - type: Transform - - uid: 593 - components: - - rot: 3.141592653589793 rad - pos: -54.5,47.5 - parent: 1 - type: Transform - - uid: 1532 - components: - - rot: 3.141592653589793 rad - pos: -17.5,-5.5 - parent: 1 - type: Transform - - uid: 1817 - components: - - rot: 3.141592653589793 rad - pos: 14.5,-0.5 - parent: 1 - type: Transform - - uid: 1818 - components: - - rot: 3.141592653589793 rad - pos: 14.5,0.5 - parent: 1 - type: Transform - - uid: 1819 - components: - - rot: 3.141592653589793 rad - pos: 14.5,1.5 - parent: 1 - type: Transform - - uid: 1820 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,-2.5 - parent: 1 - type: Transform - - uid: 1821 - components: - - rot: 3.141592653589793 rad - pos: 16.5,-0.5 - parent: 1 - type: Transform - - uid: 1822 - components: - - rot: 3.141592653589793 rad - pos: 16.5,0.5 - parent: 1 - type: Transform - - uid: 1823 - components: - - rot: 3.141592653589793 rad - pos: 16.5,1.5 - parent: 1 - type: Transform - - uid: 1824 - components: - - rot: 3.141592653589793 rad - pos: 13.5,0.5 - parent: 1 - type: Transform - - uid: 1825 - components: - - rot: 3.141592653589793 rad - pos: 13.5,1.5 - parent: 1 - type: Transform - - uid: 1826 - components: - - rot: 3.141592653589793 rad - pos: 17.5,0.5 - parent: 1 - type: Transform - - uid: 1827 - components: - - rot: 3.141592653589793 rad - pos: 17.5,1.5 - parent: 1 - type: Transform - - uid: 2268 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,19.5 - parent: 1 - type: Transform - - uid: 2285 - components: - - pos: 17.5,20.5 - parent: 1 - type: Transform - - uid: 2286 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,19.5 - parent: 1 - type: Transform - - uid: 2287 - components: - - rot: 3.141592653589793 rad - pos: 17.5,18.5 - parent: 1 - type: Transform - - uid: 2502 - components: - - pos: 16.5,13.5 - parent: 1 - type: Transform - - uid: 2503 - components: - - pos: 17.5,13.5 - parent: 1 - type: Transform - - uid: 2504 - components: - - pos: 18.5,13.5 - parent: 1 - type: Transform - - uid: 2505 - components: - - rot: 3.141592653589793 rad - pos: 16.5,10.5 - parent: 1 - type: Transform - - uid: 2506 - components: - - pos: 17.5,9.5 - parent: 1 - type: Transform - - uid: 2507 - components: - - rot: 3.141592653589793 rad - pos: 18.5,10.5 - parent: 1 - type: Transform - - uid: 2641 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,28.5 - parent: 1 - type: Transform - - uid: 2804 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,14.5 - parent: 1 - type: Transform - - uid: 2805 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,9.5 - parent: 1 - type: Transform - - uid: 2891 - components: - - pos: 6.5,-4.5 - parent: 1 - type: Transform - - uid: 3187 - components: - - pos: -26.5,18.5 - parent: 1 - type: Transform - - uid: 3188 - components: - - pos: -27.5,18.5 - parent: 1 - type: Transform - - uid: 3189 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,17.5 - parent: 1 - type: Transform - - uid: 3190 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,16.5 - parent: 1 - type: Transform - - uid: 3191 - components: - - rot: 3.141592653589793 rad - pos: -27.5,15.5 - parent: 1 - type: Transform - - uid: 3192 - components: - - rot: 3.141592653589793 rad - pos: -26.5,15.5 - parent: 1 - type: Transform - - uid: 3193 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,17.5 - parent: 1 - type: Transform - - uid: 3194 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,16.5 - parent: 1 - type: Transform - - uid: 3728 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,-3.5 - parent: 1 - type: Transform - - uid: 5268 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,13.5 - parent: 1 - type: Transform - - uid: 5408 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,-8.5 - parent: 1 - type: Transform - - uid: 5618 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,14.5 - parent: 1 - type: Transform - - uid: 5716 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,23.5 - parent: 1 - type: Transform - - uid: 5910 - components: - - pos: -9.5,42.5 - parent: 1 - type: Transform - - uid: 5912 - components: - - pos: -8.5,43.5 - parent: 1 - type: Transform - - uid: 5913 - components: - - pos: -9.5,43.5 - parent: 1 - type: Transform - - uid: 5914 - components: - - pos: -6.5,43.5 - parent: 1 - type: Transform - - uid: 5915 - components: - - pos: -5.5,43.5 - parent: 1 - type: Transform - - uid: 5927 - components: - - pos: -8.5,42.5 - parent: 1 - type: Transform - - uid: 5928 - components: - - pos: -8.5,41.5 - parent: 1 - type: Transform - - uid: 5929 - components: - - pos: -9.5,41.5 - parent: 1 - type: Transform - - uid: 5930 - components: - - pos: -6.5,42.5 - parent: 1 - type: Transform - - uid: 5931 - components: - - pos: -6.5,41.5 - parent: 1 - type: Transform - - uid: 5932 - components: - - pos: -5.5,41.5 - parent: 1 - type: Transform - - uid: 5933 - components: - - pos: -5.5,42.5 - parent: 1 - type: Transform - - uid: 6218 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,45.5 - parent: 1 - type: Transform - - uid: 7941 - components: - - pos: -54.5,65.5 - parent: 1 - type: Transform - - uid: 7942 - components: - - rot: 3.141592653589793 rad - pos: -54.5,63.5 - parent: 1 - type: Transform - - uid: 9779 - components: - - pos: -37.5,38.5 - parent: 1 - type: Transform - - uid: 9923 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,12.5 - parent: 1 - type: Transform - - uid: 9938 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,13.5 - parent: 1 - type: Transform - - uid: 9940 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,26.5 - parent: 1 - type: Transform - - uid: 9942 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,11.5 - parent: 1 - type: Transform - - uid: 10101 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,28.5 - parent: 1 - type: Transform - - uid: 10844 - components: - - pos: -60.5,42.5 - parent: 1 - type: Transform - - uid: 10881 - components: - - pos: -10.5,56.5 - parent: 1 - type: Transform - - uid: 12905 - components: - - rot: 3.141592653589793 rad - pos: 6.5,8.5 - parent: 1 - type: Transform - - uid: 13838 - components: - - rot: 3.141592653589793 rad - pos: -42.5,54.5 - parent: 1 - type: Transform - - uid: 14241 - components: - - rot: 3.141592653589793 rad - pos: -71.5,51.5 - parent: 1 - type: Transform - - uid: 14317 - components: - - rot: 3.141592653589793 rad - pos: -67.5,36.5 - parent: 1 - type: Transform - - uid: 14318 - components: - - rot: 1.5707963267948966 rad - pos: -75.5,37.5 - parent: 1 - type: Transform - - uid: 14458 - components: - - pos: -72.5,10.5 - parent: 1 - type: Transform - - uid: 14459 - components: - - pos: -72.5,11.5 - parent: 1 - type: Transform - - uid: 14460 - components: - - pos: -72.5,12.5 - parent: 1 - type: Transform - - uid: 14461 - components: - - pos: -72.5,13.5 - parent: 1 - type: Transform - - uid: 14462 - components: - - pos: -69.5,13.5 - parent: 1 - type: Transform - - uid: 14463 - components: - - pos: -69.5,11.5 - parent: 1 - type: Transform - - uid: 14464 - components: - - pos: -69.5,10.5 - parent: 1 - type: Transform - - uid: 14581 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,20.5 - parent: 1 - type: Transform - - uid: 15072 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,17.5 - parent: 1 - type: Transform -- proto: ChairFoldingSpawnFolded - entities: - - uid: 2508 - components: - - rot: 3.141592653589793 rad - pos: 19.527164,13.664964 - parent: 1 - type: Transform - - uid: 2509 - components: - - rot: 3.141592653589793 rad - pos: 19.527164,13.664964 - parent: 1 - type: Transform - - uid: 2510 - components: - - rot: 3.141592653589793 rad - pos: 19.527164,13.711839 - parent: 1 - type: Transform - - uid: 2511 - components: - - rot: 3.141592653589793 rad - pos: 19.527164,13.758714 - parent: 1 - type: Transform - - uid: 2643 - components: - - rot: -1.5707963267948966 rad - pos: -9.868263,27.709732 - parent: 1 - type: Transform -- proto: ChairOfficeDark - entities: - - uid: 271 - components: - - rot: 3.141592653589793 rad - pos: -7.5,2.5 - parent: 1 - type: Transform - - uid: 272 - components: - - rot: 1.5707963267948966 rad - pos: -2.5,2.5 - parent: 1 - type: Transform - - uid: 338 - components: - - pos: -10.5,-4.5 - parent: 1 - type: Transform - - uid: 339 - components: - - rot: 3.141592653589793 rad - pos: -12.5,-2.5 - parent: 1 - type: Transform - - uid: 914 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,-1.5 - parent: 1 - type: Transform - - uid: 1531 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,-4.5 - parent: 1 - type: Transform - - uid: 1904 - components: - - pos: -54.5,49.5 - parent: 1 - type: Transform - - uid: 2642 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,28.5 - parent: 1 - type: Transform - - uid: 2803 - components: - - rot: 1.5707963267948966 rad - pos: -15.5,13.5 - parent: 1 - type: Transform - - uid: 2846 - components: - - rot: 3.141592653589793 rad - pos: -16.5,28.5 - parent: 1 - type: Transform - - uid: 3316 - components: - - pos: -15.5,26.5 - parent: 1 - type: Transform - - uid: 3688 - components: - - rot: 1.5707963267948966 rad - pos: -43.5,1.5 - parent: 1 - type: Transform - - uid: 3730 - components: - - rot: -1.5707963267948966 rad - pos: -44.5,-3.5 - parent: 1 - type: Transform - - uid: 3744 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,1.5 - parent: 1 - type: Transform - - uid: 3765 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,1.5 - parent: 1 - type: Transform - - uid: 4558 - components: - - pos: 22.5,39.5 - parent: 1 - type: Transform - - uid: 4577 - components: - - pos: 22.5,41.5 - parent: 1 - type: Transform - - uid: 5358 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,-1.5 - parent: 1 - type: Transform - - uid: 5359 - components: - - pos: -53.5,-4.5 - parent: 1 - type: Transform - - uid: 5616 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,28.5 - parent: 1 - type: Transform - - uid: 5808 - components: - - rot: 3.141592653589793 rad - pos: -26.5,8.5 - parent: 1 - type: Transform - - uid: 7539 - components: - - pos: -21.5,47.5 - parent: 1 - type: Transform - - uid: 7563 - components: - - pos: -19.5,37.5 - parent: 1 - type: Transform - - uid: 7907 - components: - - pos: -47.5,57.5 - parent: 1 - type: Transform - - uid: 7908 - components: - - rot: 3.141592653589793 rad - pos: -47.5,62.5 - parent: 1 - type: Transform - - uid: 7910 - components: - - rot: 3.141592653589793 rad - pos: -47.5,58.5 - parent: 1 - type: Transform - - uid: 7932 - components: - - rot: -1.5707963267948966 rad - pos: -59.5,64.5 - parent: 1 - type: Transform - - uid: 7980 - components: - - rot: 3.141592653589793 rad - pos: -54.5,57.5 - parent: 1 - type: Transform - - uid: 7981 - components: - - rot: 3.141592653589793 rad - pos: -56.5,57.5 - parent: 1 - type: Transform - - uid: 10460 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,16.5 - parent: 1 - type: Transform - - uid: 10879 - components: - - rot: 3.141592653589793 rad - pos: -8.5,54.5 - parent: 1 - type: Transform - - uid: 10889 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,60.5 - parent: 1 - type: Transform - - uid: 10890 - components: - - rot: 1.5707963267948966 rad - pos: -12.5,61.5 - parent: 1 - type: Transform - - uid: 12024 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,16.5 - parent: 1 - type: Transform - - uid: 13320 - components: - - pos: -0.5,8.5 - parent: 1 - type: Transform - - uid: 14204 - components: - - pos: -65.5,26.5 - parent: 1 - type: Transform -- proto: ChairOfficeLight - entities: - - uid: 499 - components: - - rot: 3.141592653589793 rad - pos: -57.5,47.5 - parent: 1 - type: Transform - - uid: 1968 - components: - - rot: 3.141592653589793 rad - pos: -0.5,27.5 - parent: 1 - type: Transform - - uid: 1969 - components: - - rot: 3.141592653589793 rad - pos: -2.5,26.5 - parent: 1 - type: Transform - - uid: 1970 - components: - - rot: -1.5707963267948966 rad - pos: -3.5,25.5 - parent: 1 - type: Transform - - uid: 1972 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,25.5 - parent: 1 - type: Transform - - uid: 1979 - components: - - rot: -1.5707963267948966 rad - pos: -0.5,33.5 - parent: 1 - type: Transform - - uid: 2066 - components: - - pos: 7.5,23.5 - parent: 1 - type: Transform - - uid: 2067 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,25.5 - parent: 1 - type: Transform - - uid: 2359 - components: - - rot: 3.141592653589793 rad - pos: 7.5,16.5 - parent: 1 - type: Transform - - uid: 2360 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,18.5 - parent: 1 - type: Transform - - uid: 2806 - components: - - rot: 1.5707963267948966 rad - pos: -15.5,9.5 - parent: 1 - type: Transform - - uid: 4567 - components: - - pos: 18.5,43.5 - parent: 1 - type: Transform - - uid: 4568 - components: - - pos: 22.5,43.5 - parent: 1 - type: Transform - - uid: 5326 - components: - - pos: 17.5,41.5 - parent: 1 - type: Transform - - uid: 5617 - components: - - pos: -41.5,24.5 - parent: 1 - type: Transform - - uid: 10880 - components: - - rot: 3.141592653589793 rad - pos: -10.5,54.5 - parent: 1 - type: Transform - - uid: 10882 - components: - - pos: -9.5,56.5 - parent: 1 - type: Transform - - uid: 12794 - components: - - pos: 15.5,32.5 - parent: 1 - type: Transform -- proto: ChairPilotSeat - entities: - - uid: 10878 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,55.5 - parent: 1 - type: Transform - - uid: 10891 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,64.5 - parent: 1 - type: Transform - - uid: 10892 - components: - - rot: 3.141592653589793 rad - pos: -16.5,65.5 - parent: 1 - type: Transform - - uid: 10893 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,64.5 - parent: 1 - type: Transform -- proto: ChairRitual - entities: - - uid: 9774 - components: - - pos: -38.5,38.5 - parent: 1 - type: Transform -- proto: ChairWood - entities: - - uid: 1905 - components: - - pos: -57.5,49.5 - parent: 1 - type: Transform - - uid: 2995 - components: - - pos: 24.5,15.5 - parent: 1 - type: Transform - - uid: 2996 - components: - - rot: 1.5707963267948966 rad - pos: 23.5,14.5 - parent: 1 - type: Transform - - uid: 2997 - components: - - rot: -1.5707963267948966 rad - pos: 25.5,14.5 - parent: 1 - type: Transform - - uid: 2998 - components: - - rot: 3.141592653589793 rad - pos: 24.5,13.5 - parent: 1 - type: Transform - - uid: 3731 - components: - - pos: -45.5,-2.5 - parent: 1 - type: Transform - - uid: 5269 - components: - - rot: 3.141592653589793 rad - pos: -53.5,12.5 - parent: 1 - type: Transform - - uid: 9772 - components: - - pos: -44.5,37.5 - parent: 1 - type: Transform - - uid: 9775 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,35.5 - parent: 1 - type: Transform - - uid: 9777 - components: - - rot: 3.141592653589793 rad - pos: -38.5,36.5 - parent: 1 - type: Transform - - uid: 9780 - components: - - rot: 3.141592653589793 rad - pos: -37.5,36.5 - parent: 1 - type: Transform - - uid: 9781 - components: - - pos: -36.5,38.5 - parent: 1 - type: Transform - - uid: 10459 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,42.5 - parent: 1 - type: Transform - - uid: 10461 - components: - - pos: -27.5,42.5 - parent: 1 - type: Transform - - uid: 10934 - components: - - pos: -61.5,45.5 - parent: 1 - type: Transform - - uid: 10966 - components: - - pos: -72.5,42.5 - parent: 1 - type: Transform - - uid: 10967 - components: - - rot: 3.141592653589793 rad - pos: -72.5,40.5 - parent: 1 - type: Transform - - uid: 10968 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,39.5 - parent: 1 - type: Transform - - uid: 10969 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,39.5 - parent: 1 - type: Transform -- proto: chem_master - entities: - - uid: 13 - components: - - pos: -2.5,27.5 - parent: 1 - type: Transform - - uid: 14 - components: - - pos: -4.5,25.5 - parent: 1 - type: Transform -- proto: ChemistryHotplate - entities: - - uid: 1967 - components: - - pos: 0.5,27.5 - parent: 1 - type: Transform -- proto: ChessBoard - entities: - - uid: 345 - components: - - rot: -1.5707963267948966 rad - pos: -8.494302,-11.401604 - parent: 1 - type: Transform - - uid: 6343 - components: - - rot: 3.141592653589793 rad - pos: -0.51219857,51.59928 - parent: 1 - type: Transform -- proto: ChurchOrganInstrument - entities: - - uid: 1816 - components: - - rot: 1.5707963267948966 rad - pos: 17.5,-2.5 - parent: 1 - type: Transform -- proto: Cigarette - entities: - - uid: 10971 - components: - - pos: -72.28104,41.642494 - parent: 1 - type: Transform - - uid: 10972 - components: - - pos: -72.67166,41.923744 - parent: 1 - type: Transform - - uid: 10973 - components: - - pos: -70.29666,39.954994 - parent: 1 - type: Transform - - uid: 10974 - components: - - pos: -70.68729,39.56437 - parent: 1 - type: Transform -- proto: CigarGoldCase - entities: - - uid: 10914 - components: - - pos: -7.7008357,61.63202 - parent: 1 - type: Transform -- proto: CircuitImprinterMachineCircuitboard - entities: - - uid: 258 - components: - - pos: -11.474969,-1.4294147 - parent: 1 - type: Transform -- proto: ClosetBase - entities: - - uid: 630 - components: - - pos: 8.5,-1.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 631 - components: - - pos: 7.5,0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 6325 - components: - - pos: 8.5,52.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: ClosetChefFilled - entities: - - uid: 6935 - components: - - pos: -31.5,47.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: ClosetEmergencyFilledRandom - entities: - - uid: 294 - components: - - pos: -13.5,2.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 908 - components: - - pos: 29.5,-7.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1142 - components: - - pos: 1.5,19.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1151 - components: - - pos: 1.5,20.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2942 - components: - - pos: 5.5,0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2943 - components: - - pos: 1.5,-4.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2945 - components: - - pos: 23.5,2.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2949 - components: - - pos: 15.5,-4.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2964 - components: - - pos: 21.5,11.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 3321 - components: - - pos: -16.5,19.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5274 - components: - - pos: -55.5,35.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5277 - components: - - pos: -55.5,36.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5385 - components: - - pos: -54.5,-10.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5403 - components: - - pos: -29.5,2.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5404 - components: - - pos: -15.5,-7.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5414 - components: - - pos: -15.5,0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5498 - components: - - pos: -53.5,2.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5605 - components: - - pos: -44.5,15.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5608 - components: - - pos: -45.5,27.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5710 - components: - - pos: -34.5,10.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5729 - components: - - pos: -20.5,10.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5779 - components: - - pos: -4.5,10.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5782 - components: - - pos: -9.5,24.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10369 - components: - - pos: -30.5,49.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10376 - components: - - pos: -20.5,50.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10379 - components: - - pos: -25.5,37.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10381 - components: - - pos: -9.5,36.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10384 - components: - - pos: -8.5,48.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10385 - components: - - pos: 6.5,39.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 12891 - components: - - pos: 15.5,23.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14235 - components: - - pos: -70.5,56.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14236 - components: - - pos: -60.5,48.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14244 - components: - - pos: -66.5,40.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14582 - components: - - pos: -61.5,29.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 15967 - components: - - pos: -72.5,-9.5 - parent: 1 - type: Transform - - uid: 15971 - components: - - pos: -65.5,-9.5 - parent: 1 - type: Transform -- proto: ClosetFireFilled - entities: - - uid: 295 - components: - - pos: -13.5,1.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 296 - components: - - pos: -13.5,0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2917 - components: - - pos: -15.5,19.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2941 - components: - - pos: 5.5,1.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2944 - components: - - pos: 2.5,-4.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2948 - components: - - pos: 14.5,-4.5 - parent: 1 - type: Transform - - open: True - removedMasks: 20 - type: EntityStorage - - uid: 2965 - components: - - pos: 21.5,12.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5389 - components: - - pos: -53.5,-10.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5405 - components: - - pos: -29.5,1.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5406 - components: - - pos: -15.5,-8.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5415 - components: - - pos: -16.5,0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5497 - components: - - pos: -54.5,2.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5604 - components: - - pos: -43.5,15.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5607 - components: - - pos: -45.5,28.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5708 - components: - - pos: -34.5,9.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5731 - components: - - pos: -20.5,9.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5780 - components: - - pos: -4.5,9.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5783 - components: - - pos: -8.5,24.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10368 - components: - - pos: -31.5,49.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10377 - components: - - pos: -19.5,50.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10380 - components: - - pos: -25.5,38.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10382 - components: - - pos: -8.5,36.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10386 - components: - - pos: 7.5,39.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10800 - components: - - pos: -8.5,49.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 12890 - components: - - pos: 15.5,22.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14237 - components: - - pos: -61.5,48.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14243 - components: - - pos: -66.5,39.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14583 - components: - - pos: -61.5,28.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 15963 - components: - - pos: -74.5,-9.5 - parent: 1 - type: Transform - - uid: 15977 - components: - - pos: -67.5,-9.5 - parent: 1 - type: Transform -- proto: ClosetJanitorFilled - entities: - - uid: 7071 - components: - - pos: -50.5,38.5 - parent: 1 - type: Transform - - contents: - - maxAmount: 1 - amount: 1 - orGroup: null - prob: 0.01 - id: WeaponPistolMk58 - - maxAmount: 1 - amount: 2 - orGroup: null - prob: 1 - id: MopItem - - maxAmount: 1 - amount: 2 - orGroup: null - prob: 1 - id: BoxMousetrap - - maxAmount: 1 - amount: 3 - orGroup: null - prob: 1 - id: WetFloorSign - - maxAmount: 1 - amount: 2 - orGroup: null - prob: 1 - id: TrashBag - - maxAmount: 1 - amount: 1 - orGroup: null - prob: 1 - id: LightReplacer - - maxAmount: 1 - amount: 1 - orGroup: null - prob: 1 - id: BoxLightMixed - - maxAmount: 1 - amount: 1 - orGroup: null - prob: 1 - id: Holoprojector - - maxAmount: 1 - amount: 2 - orGroup: null - prob: 1 - id: SoapNT - - maxAmount: 1 - amount: 2 - orGroup: null - prob: 1 - id: FlashlightLantern - type: StorageFill - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 15049 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer -- proto: ClosetL3VirologyFilled - entities: - - uid: 1150 - components: - - pos: 6.5,20.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1181 - components: - - pos: 7.5,20.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: ClosetMaintenanceFilledRandom - entities: - - uid: 1114 - components: - - pos: -23.5,-6.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2807 - components: - - pos: -9.5,12.5 - parent: 1 - type: Transform - - uid: 2914 - components: - - pos: -17.5,19.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2946 - components: - - pos: 24.5,-0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2947 - components: - - pos: 13.5,-4.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2953 - components: - - pos: 26.5,-4.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2954 - components: - - pos: 3.5,-4.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2966 - components: - - pos: 21.5,13.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5364 - components: - - pos: -54.5,-0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5392 - components: - - pos: -52.5,-10.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5413 - components: - - pos: -29.5,0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5422 - components: - - pos: -17.5,0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5499 - components: - - pos: -52.5,2.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 1.7459902 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5606 - components: - - pos: -45.5,15.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5609 - components: - - pos: -45.5,26.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5709 - components: - - pos: -34.5,11.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5733 - components: - - pos: -20.5,11.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5735 - components: - - pos: -20.5,28.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5781 - components: - - pos: -4.5,11.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10363 - components: - - pos: -38.5,54.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10367 - components: - - pos: -37.5,54.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10378 - components: - - pos: -21.5,50.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10393 - components: - - pos: 6.5,43.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10394 - components: - - pos: 6.5,42.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10408 - components: - - pos: 22.5,30.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10474 - components: - - pos: -54.5,44.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10802 - components: - - pos: -8.5,50.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 12892 - components: - - pos: 15.5,24.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 12900 - components: - - pos: 14.5,8.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 12901 - components: - - pos: 3.5,8.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14234 - components: - - pos: -69.5,56.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14238 - components: - - pos: -62.5,48.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14314 - components: - - pos: -74.5,47.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14584 - components: - - pos: -61.5,27.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 15068 - components: - - pos: -28.5,20.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 15915 - components: - - pos: 14.5,34.5 - parent: 1 - type: Transform - - uid: 15931 - components: - - pos: 20.5,43.5 - parent: 1 - type: Transform -- proto: ClosetToolFilled - entities: - - uid: 1118 - components: - - pos: -24.5,-6.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: ClothingBackpackClown - entities: - - uid: 4232 - components: - - pos: -40.570293,28.017475 - parent: 1 - type: Transform -- proto: ClothingBeltUtility - entities: - - uid: 5650 - components: - - pos: -23.493784,26.550022 - parent: 1 - type: Transform -- proto: ClothingEyesGlassesSunglasses - entities: - - uid: 9736 - components: - - pos: -27.635717,35.723694 - parent: 1 - type: Transform -- proto: ClothingHandsGlovesBoxingBlue - entities: - - uid: 14361 - components: - - pos: -60.445595,14.632732 - parent: 1 - type: Transform -- proto: ClothingHandsGlovesBoxingGreen - entities: - - uid: 14362 - components: - - pos: -60.42997,10.429607 - parent: 1 - type: Transform -- proto: ClothingHandsGlovesBoxingRed - entities: - - uid: 14363 - components: - - pos: -62.33622,10.476482 - parent: 1 - type: Transform -- proto: ClothingHandsGlovesBoxingYellow - entities: - - uid: 14364 - components: - - pos: -62.30497,14.523357 - parent: 1 - type: Transform -- proto: ClothingHandsGlovesColorBlack - entities: - - uid: 14935 - components: - - pos: -59.51448,91.46834 - parent: 1 - type: Transform -- proto: ClothingHandsGlovesColorGray - entities: - - uid: 5938 - components: - - desc: These specially insulated grey gloves belong to the king of tiders. A small tag is inscribed with the initials, "H.M." - name: grey gloves of the tider king - type: MetaData - - pos: -7.521523,39.691025 - parent: 1 - type: Transform - - type: Insulated -- proto: ClothingHandsGlovesColorYellow - entities: - - uid: 611 - components: - - pos: -26.510632,26.559929 - parent: 1 - type: Transform -- proto: ClothingHandsGlovesNitrile - entities: - - uid: 12776 - components: - - pos: 15.627547,28.610893 - parent: 1 - type: Transform -- proto: ClothingHandsGlovesPowerglove - entities: - - uid: 14936 - components: - - pos: -76.52277,13.482821 - parent: 1 - type: Transform -- proto: ClothingHeadHatAnimalMonkey - entities: - - uid: 917 - components: - - pos: 27.553495,-1.4451299 - parent: 1 - type: Transform -- proto: ClothingHeadHatCone - entities: - - uid: 717 - components: - - pos: 24.462656,-1.4106827 - parent: 1 - type: Transform - - uid: 718 - components: - - pos: 24.447031,-2.4575577 - parent: 1 - type: Transform - - uid: 719 - components: - - pos: 24.462656,-3.4575577 - parent: 1 - type: Transform -- proto: ClothingHeadHatFedoraBrown - entities: - - uid: 12916 - components: - - pos: 3.488522,44.563385 - parent: 1 - type: Transform -- proto: ClothingHeadHatHairflower - entities: - - uid: 10873 - components: - - pos: -22.049007,53.739006 - parent: 1 - type: Transform -- proto: ClothingHeadHatHoodCulthood - entities: - - uid: 1836 - components: - - pos: 20.792824,-2.5214906 - parent: 1 - type: Transform -- proto: ClothingHeadHelmetEVA - entities: - - uid: 5443 - components: - - pos: -6.6627684,-13.319158 - parent: 1 - type: Transform -- proto: ClothingHeadHelmetSyndicate - entities: - - uid: 15279 - components: - - pos: -57.70341,92.69456 - parent: 1 - type: Transform -- proto: ClothingMaskBreathMedical - entities: - - uid: 12777 - components: - - pos: 16.513798,28.576006 - parent: 1 - type: Transform -- proto: ClothingMaskClown - entities: - - uid: 2306 - components: - - pos: 19.76093,15.739809 - parent: 1 - type: Transform - - uid: 2788 - components: - - pos: -25.506933,57.41912 - parent: 1 - type: Transform -- proto: ClothingMaskGas - entities: - - uid: 323 - components: - - pos: -4.562405,-5.3679457 - parent: 1 - type: Transform - - uid: 332 - components: - - pos: -4.156155,-5.3366957 - parent: 1 - type: Transform - - uid: 7378 - components: - - desc: A face-covering mask that resembles the icon of greytide worldwide. - name: face of the tider - type: MetaData - - pos: -5.3370404,44.58554 - parent: 1 - type: Transform - - uid: 7379 - components: - - desc: A face-covering mask that resembles the icon of greytide worldwide. - name: face of the tider - type: MetaData - - pos: -6.630641,44.601288 - parent: 1 - type: Transform - - uid: 7380 - components: - - desc: A face-covering mask that resembles the icon of greytide worldwide. - name: face of the tider - type: MetaData - - pos: -6.224393,44.64804 - parent: 1 - type: Transform - - uid: 7381 - components: - - desc: A face-covering mask that resembles the icon of greytide worldwide. - name: face of the tider - type: MetaData - - pos: -5.8370404,44.632416 - parent: 1 - type: Transform -- proto: ClothingNeckAromanticPin - entities: - - uid: 10536 - components: - - pos: -25.61458,26.466957 - parent: 1 - type: Transform -- proto: ClothingNeckBling - entities: - - uid: 10875 - components: - - pos: -22.564632,53.645256 - parent: 1 - type: Transform -- proto: ClothingNeckHeadphones - entities: - - uid: 10545 - components: - - pos: -53.41692,13.576396 - parent: 1 - type: Transform -- proto: ClothingNeckIntersexPin - entities: - - uid: 10539 - components: - - pos: 28.525753,9.397884 - parent: 1 - type: Transform -- proto: ClothingNeckLesbianPin - entities: - - uid: 10540 - components: - - pos: 6.5544667,-2.4496374 - parent: 1 - type: Transform -- proto: ClothingNeckLGBTPin - entities: - - uid: 10535 - components: - - pos: -34.543724,28.416185 - parent: 1 - type: Transform -- proto: ClothingNeckMantleCap - entities: - - uid: 5004 - components: - - pos: -5.5015035,61.615753 - parent: 1 - type: Transform -- proto: ClothingNeckMantleCE - entities: - - uid: 3543 - components: - - pos: -68.46455,16.578547 - parent: 1 - type: Transform -- proto: ClothingNeckMantleHOP - entities: - - uid: 5395 - components: - - pos: -21.824865,46.548195 - parent: 1 - type: Transform -- proto: ClothingNeckMantleHOS - entities: - - uid: 7085 - components: - - pos: -60.468678,63.752388 - parent: 1 - type: Transform -- proto: ClothingNeckMantleRD - entities: - - uid: 3698 - components: - - flags: InContainer - type: MetaData - - parent: 245 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: ClothingNeckNonBinaryPin - entities: - - uid: 10541 - components: - - pos: -27.46916,-8.556879 - parent: 1 - type: Transform -- proto: ClothingNeckStethoscope - entities: - - uid: 2329 - components: - - pos: 10.447677,31.662287 - parent: 1 - type: Transform -- proto: ClothingNeckTransPin - entities: - - uid: 10543 - components: - - pos: -54.52713,17.537136 - parent: 1 - type: Transform -- proto: ClothingOuterHardsuitEVA - entities: - - uid: 5444 - components: - - pos: -6.5221434,-13.381658 - parent: 1 - type: Transform -- proto: ClothingOuterHardsuitSyndicate - entities: - - uid: 15280 - components: - - pos: -57.469036,92.47581 - parent: 1 - type: Transform -- proto: ClothingOuterRobesCult - entities: - - uid: 1837 - components: - - pos: 20.402199,-2.4433656 - parent: 1 - type: Transform -- proto: ClothingOuterSuitMonkey - entities: - - uid: 916 - components: - - pos: 27.147245,-2.3826299 - parent: 1 - type: Transform -- proto: ClothingShoesBootsCombatFilled - entities: - - uid: 15494 - components: - - pos: -35.545906,68.57638 - parent: 1 - type: Transform -- proto: ClothingShoesBootsMag - entities: - - uid: 7382 - components: - - pos: -12.423142,46.687256 - parent: 1 - type: Transform - - uid: 7383 - components: - - pos: -12.595017,46.437256 - parent: 1 - type: Transform - - uid: 7384 - components: - - pos: -13.391892,46.687256 - parent: 1 - type: Transform - - uid: 7385 - components: - - pos: -13.579392,46.45288 - parent: 1 - type: Transform - - uid: 14163 - components: - - pos: -77.410675,42.617188 - parent: 1 - type: Transform -- proto: ClothingShoesBootsPerformer - entities: - - uid: 10959 - components: - - pos: -72.29666,45.642494 - parent: 1 - type: Transform -- proto: ClothingShoesWizard - entities: - - uid: 6833 - components: - - pos: -36.71934,52.678024 - parent: 1 - type: Transform - - uid: 6834 - components: - - pos: -36.359966,52.553024 - parent: 1 - type: Transform -- proto: ClothingUniformJumpskirtJanimaid - entities: - - uid: 6979 - components: - - flags: InContainer - type: MetaData - - parent: 7028 - type: Transform - - canCollide: False - type: Physics -- proto: ClothingUniformJumpskirtPerformer - entities: - - uid: 10960 - components: - - pos: -72.56229,45.579994 - parent: 1 - type: Transform -- proto: ClothingUniformJumpsuitAncient - entities: - - uid: 5559 - components: - - pos: -45.64481,17.603561 - parent: 1 - type: Transform - - uid: 15103 - components: - - pos: -45.285435,17.619186 - parent: 1 - type: Transform -- proto: ComfyChair - entities: - - uid: 6341 - components: - - pos: -0.5,52.5 - parent: 1 - type: Transform - - uid: 6342 - components: - - rot: 3.141592653589793 rad - pos: -0.5,50.5 - parent: 1 - type: Transform - - uid: 7537 - components: - - pos: -22.5,47.5 - parent: 1 - type: Transform - - uid: 7931 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,64.5 - parent: 1 - type: Transform - - uid: 7933 - components: - - rot: -1.5707963267948966 rad - pos: -58.5,65.5 - parent: 1 - type: Transform - - uid: 10877 - components: - - pos: -8.5,56.5 - parent: 1 - type: Transform - - uid: 10905 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,61.5 - parent: 1 - type: Transform - - uid: 15162 - components: - - rot: 3.141592653589793 rad - pos: 16.5,52.5 - parent: 1 - type: Transform - - uid: 15163 - components: - - rot: 3.141592653589793 rad - pos: 18.5,52.5 - parent: 1 - type: Transform -- proto: CommsComputerCircuitboard - entities: - - uid: 15958 - components: - - pos: -49.44898,25.317516 - parent: 1 - type: Transform -- proto: ComputerAnalysisConsole - entities: - - uid: 341 - components: - - rot: 3.141592653589793 rad - pos: 0.5,-11.5 - parent: 1 - type: Transform - - linkedPorts: - 347: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver - type: DeviceLinkSource -- proto: ComputerBroken - entities: - - uid: 591 - components: - - pos: 13.5,-7.5 - parent: 1 - type: Transform - - uid: 5324 - components: - - rot: 3.141592653589793 rad - pos: 22.5,38.5 - parent: 1 - type: Transform - - uid: 9069 - components: - - rot: 3.141592653589793 rad - pos: 18.5,42.5 - parent: 1 - type: Transform - - uid: 9080 - components: - - rot: 3.141592653589793 rad - pos: 17.5,40.5 - parent: 1 - type: Transform -- proto: ComputerCargoBounty - entities: - - uid: 8995 - components: - - pos: -33.5,-5.5 - parent: 1 - type: Transform -- proto: ComputerCargoOrders - entities: - - uid: 3619 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,1.5 - parent: 1 - type: Transform - - uid: 3746 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,-7.5 - parent: 1 - type: Transform -- proto: ComputerCargoShuttle - entities: - - uid: 3618 - components: - - pos: -39.5,-1.5 - parent: 1 - type: Transform -- proto: ComputerComms - entities: - - uid: 10884 - components: - - pos: -16.5,66.5 - parent: 1 - type: Transform - - uid: 13767 - components: - - rot: 3.141592653589793 rad - pos: -8.5,59.5 - parent: 1 - type: Transform -- proto: ComputerCrewMonitoring - entities: - - uid: 1973 - components: - - pos: -0.5,34.5 - parent: 1 - type: Transform - - uid: 10886 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,64.5 - parent: 1 - type: Transform -- proto: ComputerCriminalRecords - entities: - - uid: 2992 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,58.5 - parent: 1 - type: Transform -- proto: ComputerFrame - entities: - - uid: 1324 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,38.5 - parent: 1 - type: Transform - - uid: 9067 - components: - - rot: 3.141592653589793 rad - pos: 22.5,40.5 - parent: 1 - type: Transform - - uid: 9974 - components: - - rot: 1.5707963267948966 rad - pos: -82.5,26.5 - parent: 1 - type: Transform -- proto: ComputerId - entities: - - uid: 7562 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,37.5 - parent: 1 - type: Transform - - uid: 10885 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,64.5 - parent: 1 - type: Transform -- proto: ComputerMedicalRecords - entities: - - uid: 1980 - components: - - pos: 0.5,34.5 - parent: 1 - type: Transform -- proto: ComputerPowerMonitoring - entities: - - uid: 10712 - components: - - rot: 3.141592653589793 rad - pos: -74.5,15.5 - parent: 1 - type: Transform - - uid: 10713 - components: - - rot: -1.5707963267948966 rad - pos: -63.5,27.5 - parent: 1 - type: Transform - - uid: 10894 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,60.5 - parent: 1 - type: Transform -- proto: ComputerRadar - entities: - - uid: 10705 - components: - - rot: 1.5707963267948966 rad - pos: -49.5,-13.5 - parent: 1 - type: Transform - - uid: 10887 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,61.5 - parent: 1 - type: Transform -- proto: ComputerResearchAndDevelopment - entities: - - uid: 248 - components: - - rot: -1.5707963267948966 rad - pos: -1.5,2.5 - parent: 1 - type: Transform - - uid: 251 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,2.5 - parent: 1 - type: Transform -- proto: ComputerSalvageExpedition - entities: - - uid: 10739 - components: - - rot: 3.141592653589793 rad - pos: -34.5,-3.5 - parent: 1 - type: Transform -- proto: ComputerShuttleCargo - entities: - - uid: 3673 - components: - - rot: 3.141592653589793 rad - pos: -33.5,-10.5 - parent: 1 - type: Transform -- proto: ComputerSolarControl - entities: - - uid: 907 - components: - - rot: 1.5707963267948966 rad - pos: 27.5,-8.5 - parent: 1 - type: Transform -- proto: ComputerStationRecords - entities: - - uid: 10899 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,61.5 - parent: 1 - type: Transform -- proto: ComputerSurveillanceCameraMonitor - entities: - - uid: 7956 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,57.5 - parent: 1 - type: Transform - - uid: 7979 - components: - - pos: -54.5,58.5 - parent: 1 - type: Transform - - uid: 10888 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,60.5 - parent: 1 - type: Transform - - uid: 13086 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,8.5 - parent: 1 - type: Transform -- proto: ComputerTechnologyDiskTerminal - entities: - - uid: 234 - components: - - pos: -9.5,-5.5 - parent: 1 - type: Transform -- proto: ContainmentFieldGenerator - entities: - - uid: 9985 - components: - - rot: -1.5707963267948966 rad - pos: -82.5,18.5 - parent: 1 - type: Transform - - uid: 9986 - components: - - rot: -1.5707963267948966 rad - pos: -81.5,18.5 - parent: 1 - type: Transform - - uid: 9987 - components: - - rot: -1.5707963267948966 rad - pos: -80.5,18.5 - parent: 1 - type: Transform - - uid: 9988 - components: - - rot: -1.5707963267948966 rad - pos: -79.5,18.5 - parent: 1 - type: Transform - - uid: 10644 - components: - - pos: -93.5,21.5 - parent: 1 - type: Transform - - uid: 10645 - components: - - pos: -93.5,29.5 - parent: 1 - type: Transform - - uid: 10646 - components: - - pos: -101.5,29.5 - parent: 1 - type: Transform - - uid: 10647 - components: - - pos: -101.5,21.5 - parent: 1 - type: Transform -- proto: ConveyorBelt - entities: - - uid: 6789 - components: - - pos: -39.5,-8.5 - parent: 1 - type: Transform - - links: - - 13842 - - 13843 - type: DeviceLinkSink - - uid: 6793 - components: - - pos: -39.5,-9.5 - parent: 1 - type: Transform - - links: - - 13842 - - 13843 - type: DeviceLinkSink - - uid: 7282 - components: - - pos: -39.5,-7.5 - parent: 1 - type: Transform - - links: - - 13842 - - 13843 - type: DeviceLinkSink - - uid: 13825 - components: - - pos: -35.5,-14.5 - parent: 1 - type: Transform - - links: - - 13823 - type: DeviceLinkSink - - uid: 13826 - components: - - pos: -35.5,-13.5 - parent: 1 - type: Transform - - links: - - 13823 - type: DeviceLinkSink - - uid: 13827 - components: - - pos: -35.5,-12.5 - parent: 1 - type: Transform - - links: - - 13823 - type: DeviceLinkSink - - uid: 13828 - components: - - pos: -35.5,-11.5 - parent: 1 - type: Transform - - links: - - 13823 - type: DeviceLinkSink - - uid: 13829 - components: - - pos: -35.5,-10.5 - parent: 1 - type: Transform - - links: - - 13823 - type: DeviceLinkSink - - uid: 13830 - components: - - pos: -31.5,-14.5 - parent: 1 - type: Transform - - links: - - 13824 - type: DeviceLinkSink - - uid: 13831 - components: - - pos: -31.5,-13.5 - parent: 1 - type: Transform - - links: - - 13824 - type: DeviceLinkSink - - uid: 13832 - components: - - pos: -31.5,-12.5 - parent: 1 - type: Transform - - links: - - 13824 - type: DeviceLinkSink - - uid: 13833 - components: - - pos: -31.5,-11.5 - parent: 1 - type: Transform - - links: - - 13824 - type: DeviceLinkSink - - uid: 13834 - components: - - pos: -31.5,-10.5 - parent: 1 - type: Transform - - links: - - 13824 - type: DeviceLinkSink - - uid: 14225 - components: - - rot: 3.141592653589793 rad - pos: -73.5,53.5 - parent: 1 - type: Transform - - links: - - 14233 - type: DeviceLinkSink - - uid: 14226 - components: - - rot: 3.141592653589793 rad - pos: -73.5,54.5 - parent: 1 - type: Transform - - links: - - 14233 - type: DeviceLinkSink - - uid: 14227 - components: - - rot: 3.141592653589793 rad - pos: -73.5,55.5 - parent: 1 - type: Transform - - links: - - 14233 - type: DeviceLinkSink - - uid: 14228 - components: - - rot: 3.141592653589793 rad - pos: -73.5,56.5 - parent: 1 - type: Transform - - links: - - 14233 - type: DeviceLinkSink - - uid: 14229 - components: - - rot: 3.141592653589793 rad - pos: -73.5,57.5 - parent: 1 - type: Transform - - links: - - 14233 - type: DeviceLinkSink - - uid: 14230 - components: - - rot: 3.141592653589793 rad - pos: -73.5,58.5 - parent: 1 - type: Transform - - links: - - 14233 - type: DeviceLinkSink -- proto: CowToolboxFilled - entities: - - uid: 14933 - components: - - pos: -92.450035,40.48285 - parent: 1 - type: Transform -- proto: CrateAirlockKit - entities: - - uid: 9079 - components: - - pos: 5.5,-19.5 - parent: 1 - type: Transform -- proto: CrateArtifactContainer - entities: - - uid: 349 - components: - - pos: 5.5,-8.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: CrateEmptySpawner - entities: - - uid: 15654 - components: - - pos: -39.5,-3.5 - parent: 1 - type: Transform - - uid: 15655 - components: - - pos: -37.5,-5.5 - parent: 1 - type: Transform - - uid: 15656 - components: - - pos: -41.5,-11.5 - parent: 1 - type: Transform - - uid: 15658 - components: - - pos: -21.5,-0.5 - parent: 1 - type: Transform - - uid: 15659 - components: - - pos: 22.5,-4.5 - parent: 1 - type: Transform - - uid: 15663 - components: - - pos: 2.5,46.5 - parent: 1 - type: Transform - - uid: 15664 - components: - - pos: -5.5,36.5 - parent: 1 - type: Transform - - uid: 15733 - components: - - pos: -26.5,49.5 - parent: 1 - type: Transform - - uid: 15781 - components: - - pos: -75.5,39.5 - parent: 1 - type: Transform -- proto: CrateEngineeringAMEJar - entities: - - uid: 9074 - components: - - pos: -76.5,22.5 - parent: 1 - type: Transform - - uid: 10659 - components: - - pos: -69.5,23.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: CrateEngineeringAMEShielding - entities: - - uid: 10657 - components: - - pos: -71.5,23.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10658 - components: - - pos: -70.5,23.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: CrateEngineeringCableBulk - entities: - - uid: 10145 - components: - - pos: -69.5,25.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 10723 - components: - - pos: -63.5,26.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: CrateFilledSpawner - entities: - - uid: 1469 - components: - - pos: -44.5,17.5 - parent: 1 - type: Transform - - uid: 3222 - components: - - pos: -7.5,12.5 - parent: 1 - type: Transform - - uid: 3629 - components: - - pos: -28.5,40.5 - parent: 1 - type: Transform - - uid: 5556 - components: - - pos: -42.5,17.5 - parent: 1 - type: Transform - - uid: 15652 - components: - - pos: -43.5,-10.5 - parent: 1 - type: Transform - - uid: 15653 - components: - - pos: -34.5,-5.5 - parent: 1 - type: Transform - - uid: 15657 - components: - - pos: -26.5,-8.5 - parent: 1 - type: Transform - - uid: 15660 - components: - - pos: 22.5,32.5 - parent: 1 - type: Transform -- proto: CrateFreezer - entities: - - uid: 2303 - components: - - pos: -28.5,44.5 - parent: 1 - type: Transform - - uid: 4236 - components: - - pos: -27.5,44.5 - parent: 1 - type: Transform -- proto: CrateFunATV - entities: - - uid: 1421 - components: - - pos: -24.5,-12.5 - parent: 1 - type: Transform -- proto: CrateMaterialGlass - entities: - - uid: 4734 - components: - - pos: 12.5,-19.5 - parent: 1 - type: Transform - - uid: 9981 - components: - - pos: -82.5,19.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 15895 - components: - - pos: 12.5,-18.5 - parent: 1 - type: Transform -- proto: CrateMaterialSteel - entities: - - uid: 9980 - components: - - pos: -82.5,20.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 15557 - components: - - pos: 10.5,-20.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 220.53748 - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 15558 - components: - - pos: 9.5,-20.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 220.53748 - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: CrateNPCCow - entities: - - uid: 6919 - components: - - pos: -34.5,42.5 - parent: 1 - type: Transform - - air: - volume: 800 - immutable: False - temperature: 293.1499 - moles: - - 11.733055 - - 44.138634 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: CrateScience - entities: - - uid: 7398 - components: - - pos: 11.5,50.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: CrateServiceJanitorialSupplies - entities: - - uid: 7074 - components: - - pos: -53.5,35.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 7565 - - 7136 - - 7134 - - 7133 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer -- proto: CrateTrashCart - entities: - - uid: 1405 - components: - - pos: 0.5,31.5 - parent: 1 - type: Transform - - uid: 2302 - components: - - pos: -39.5,35.5 - parent: 1 - type: Transform - - uid: 2637 - components: - - pos: -20.5,53.5 - parent: 1 - type: Transform - - uid: 4072 - components: - - pos: -34.5,7.5 - parent: 1 - type: Transform - - uid: 4073 - components: - - pos: -61.5,31.5 - parent: 1 - type: Transform -- proto: CrateTrashCartJani - entities: - - uid: 5642 - components: - - pos: -50.5,35.5 - parent: 1 - type: Transform -- proto: CrayonMime - entities: - - uid: 4216 - components: - - pos: -40.465607,23.673563 - parent: 1 - type: Transform -- proto: Crematorium - entities: - - uid: 1828 - components: - - pos: 20.5,2.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: CrewMonitoringServer - entities: - - uid: 1065 - components: - - pos: -1.5,17.5 - parent: 1 - type: Transform -- proto: CrewMonitoringServerMachineCircuitboard - entities: - - uid: 14167 - components: - - pos: -49.521305,24.4048 - parent: 1 - type: Transform -- proto: Crowbar - entities: - - uid: 375 - components: - - pos: 2.5126948,-11.447319 - parent: 1 - type: Transform - - uid: 2376 - components: - - pos: 4.494688,39.490654 - parent: 1 - type: Transform - - uid: 5649 - components: - - pos: -24.42766,29.496252 - parent: 1 - type: Transform -- proto: CryoPod - entities: - - uid: 1333 - components: - - pos: 9.5,36.5 - parent: 1 - type: Transform -- proto: Defibrillator - entities: - - uid: 15776 - components: - - pos: 4.440308,37.660927 - parent: 1 - type: Transform -- proto: DefibrillatorCabinetFilled - entities: - - uid: 1962 - components: - - rot: 3.141592653589793 rad - pos: 7.5,27.5 - parent: 1 - type: Transform - - uid: 2373 - components: - - rot: 3.141592653589793 rad - pos: 10.5,21.5 - parent: 1 - type: Transform - - uid: 2374 - components: - - pos: -4.5,35.5 - parent: 1 - type: Transform - - uid: 2375 - components: - - rot: 3.141592653589793 rad - pos: 7.5,32.5 - parent: 1 - type: Transform - - uid: 5011 - components: - - pos: 4.5,7.5 - parent: 1 - type: Transform - - uid: 5013 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,19.5 - parent: 1 - type: Transform - - uid: 5014 - components: - - rot: 3.141592653589793 rad - pos: -49.5,30.5 - parent: 1 - type: Transform - - uid: 5054 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,16.5 - parent: 1 - type: Transform - - uid: 15779 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,-8.5 - parent: 1 - type: Transform -- proto: DeployableBarrier - entities: - - uid: 7962 - components: - - pos: -65.5,52.5 - parent: 1 - type: Transform - - uid: 7972 - components: - - pos: -65.5,53.5 - parent: 1 - type: Transform - - uid: 8019 - components: - - pos: -64.5,53.5 - parent: 1 - type: Transform - - uid: 8020 - components: - - pos: -64.5,52.5 - parent: 1 - type: Transform -- proto: DeskBell - entities: - - uid: 4988 - components: - - pos: -47.244946,56.398804 - parent: 1 - type: Transform - - uid: 4989 - components: - - pos: -45.550537,43.981125 - parent: 1 - type: Transform - - uid: 4990 - components: - - pos: -39.378662,43.49675 - parent: 1 - type: Transform - - uid: 4991 - components: - - pos: -36.738037,41.679382 - parent: 1 - type: Transform - - uid: 4992 - components: - - pos: -33.70732,38.156784 - parent: 1 - type: Transform - - uid: 4993 - components: - - pos: -24.25037,9.298397 - parent: 1 - type: Transform - - uid: 4994 - components: - - pos: -36.891582,2.4105499 - parent: 1 - type: Transform - - uid: 4995 - components: - - pos: -7.7214417,3.4652395 - parent: 1 - type: Transform - - uid: 4997 - components: - - pos: -10.2346735,11.798739 - parent: 1 - type: Transform - - uid: 4998 - components: - - pos: -0.23595914,28.693384 - parent: 1 - type: Transform - - uid: 4999 - components: - - pos: -1.0953342,32.52913 - parent: 1 - type: Transform - - uid: 5000 - components: - - pos: -19.786932,36.45546 - parent: 1 - type: Transform - - uid: 5001 - components: - - pos: -54.116062,17.501276 - parent: 1 - type: Transform - - uid: 5003 - components: - - pos: -0.74886024,7.6462955 - parent: 1 - type: Transform -- proto: DiseaseDiagnoser - entities: - - uid: 2362 - components: - - pos: 11.5,16.5 - parent: 1 - type: Transform -- proto: DisposalBend - entities: - - uid: 8668 - components: - - rot: 3.141592653589793 rad - pos: -50.5,55.5 - parent: 1 - type: Transform - - uid: 8669 - components: - - pos: -48.5,55.5 - parent: 1 - type: Transform - - uid: 8670 - components: - - pos: -50.5,65.5 - parent: 1 - type: Transform - - uid: 12920 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,23.5 - parent: 1 - type: Transform - - uid: 12921 - components: - - rot: 3.141592653589793 rad - pos: 3.5,14.5 - parent: 1 - type: Transform - - uid: 12946 - components: - - pos: 11.5,19.5 - parent: 1 - type: Transform - - uid: 12947 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,29.5 - parent: 1 - type: Transform - - uid: 13154 - components: - - rot: 3.141592653589793 rad - pos: -18.5,-2.5 - parent: 1 - type: Transform - - uid: 13155 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,-2.5 - parent: 1 - type: Transform - - uid: 13244 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-10.5 - parent: 1 - type: Transform - - uid: 13271 - components: - - rot: 3.141592653589793 rad - pos: -56.5,32.5 - parent: 1 - type: Transform - - uid: 13284 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,15.5 - parent: 1 - type: Transform - - uid: 13324 - components: - - rot: 3.141592653589793 rad - pos: -2.5,29.5 - parent: 1 - type: Transform - - uid: 13325 - components: - - pos: -2.5,30.5 - parent: 1 - type: Transform - - uid: 13388 - components: - - pos: -3.5,31.5 - parent: 1 - type: Transform - - uid: 13389 - components: - - rot: 3.141592653589793 rad - pos: -6.5,31.5 - parent: 1 - type: Transform - - uid: 13390 - components: - - pos: -6.5,32.5 - parent: 1 - type: Transform - - uid: 13397 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,30.5 - parent: 1 - type: Transform - - uid: 13446 - components: - - rot: 3.141592653589793 rad - pos: -26.5,28.5 - parent: 1 - type: Transform - - uid: 13447 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,28.5 - parent: 1 - type: Transform - - uid: 13473 - components: - - rot: 3.141592653589793 rad - pos: -20.5,42.5 - parent: 1 - type: Transform - - uid: 13474 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,45.5 - parent: 1 - type: Transform - - uid: 13495 - components: - - pos: -17.5,59.5 - parent: 1 - type: Transform - - uid: 13496 - components: - - rot: 3.141592653589793 rad - pos: -17.5,55.5 - parent: 1 - type: Transform - - uid: 13497 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,55.5 - parent: 1 - type: Transform - - uid: 13516 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,20.5 - parent: 1 - type: Transform - - uid: 13531 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,40.5 - parent: 1 - type: Transform - - uid: 13532 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,40.5 - parent: 1 - type: Transform - - uid: 13535 - components: - - pos: -37.5,42.5 - parent: 1 - type: Transform - - uid: 13538 - components: - - pos: -56.5,33.5 - parent: 1 - type: Transform - - uid: 13542 - components: - - rot: -1.5707963267948966 rad - pos: -44.5,46.5 - parent: 1 - type: Transform - - uid: 13555 - components: - - pos: -57.5,47.5 - parent: 1 - type: Transform - - uid: 13557 - components: - - rot: 3.141592653589793 rad - pos: -66.5,47.5 - parent: 1 - type: Transform - - uid: 13558 - components: - - pos: -66.5,50.5 - parent: 1 - type: Transform - - uid: 13559 - components: - - rot: 3.141592653589793 rad - pos: -67.5,50.5 - parent: 1 - type: Transform - - uid: 13561 - components: - - pos: -67.5,52.5 - parent: 1 - type: Transform - - uid: 13562 - components: - - pos: -70.5,54.5 - parent: 1 - type: Transform - - uid: 13563 - components: - - rot: 3.141592653589793 rad - pos: -70.5,52.5 - parent: 1 - type: Transform - - uid: 13592 - components: - - pos: -64.5,33.5 - parent: 1 - type: Transform - - uid: 13593 - components: - - rot: 3.141592653589793 rad - pos: -64.5,28.5 - parent: 1 - type: Transform - - uid: 13594 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,33.5 - parent: 1 - type: Transform -- proto: DisposalJunction - entities: - - uid: 8673 - components: - - pos: -50.5,58.5 - parent: 1 - type: Transform - - uid: 12951 - components: - - rot: 3.141592653589793 rad - pos: 3.5,19.5 - parent: 1 - type: Transform - - uid: 13156 - components: - - rot: 3.141592653589793 rad - pos: -7.5,2.5 - parent: 1 - type: Transform - - uid: 13187 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,5.5 - parent: 1 - type: Transform - - uid: 13204 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,5.5 - parent: 1 - type: Transform - - uid: 13245 - components: - - rot: 3.141592653589793 rad - pos: -57.5,5.5 - parent: 1 - type: Transform - - uid: 13283 - components: - - rot: 3.141592653589793 rad - pos: -57.5,46.5 - parent: 1 - type: Transform - - uid: 13287 - components: - - rot: 3.141592653589793 rad - pos: -57.5,15.5 - parent: 1 - type: Transform - - uid: 13296 - components: - - rot: 3.141592653589793 rad - pos: -57.5,37.5 - parent: 1 - type: Transform - - uid: 13326 - components: - - rot: 3.141592653589793 rad - pos: -3.5,30.5 - parent: 1 - type: Transform - - uid: 13425 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,32.5 - parent: 1 - type: Transform - - uid: 13455 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,32.5 - parent: 1 - type: Transform - - uid: 13476 - components: - - pos: -16.5,45.5 - parent: 1 - type: Transform - - uid: 13530 - components: - - pos: -38.5,39.5 - parent: 1 - type: Transform - - uid: 13539 - components: - - rot: 3.141592653589793 rad - pos: -57.5,33.5 - parent: 1 - type: Transform - - uid: 13545 - components: - - rot: -1.5707963267948966 rad - pos: -48.5,46.5 - parent: 1 - type: Transform -- proto: DisposalJunctionFlipped - entities: - - uid: 12953 - components: - - rot: 3.141592653589793 rad - pos: 3.5,23.5 - parent: 1 - type: Transform - - uid: 12954 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,29.5 - parent: 1 - type: Transform - - uid: 13108 - components: - - rot: -1.5707963267948966 rad - pos: 23.5,5.5 - parent: 1 - type: Transform - - uid: 13132 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,5.5 - parent: 1 - type: Transform - - uid: 13157 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,5.5 - parent: 1 - type: Transform - - uid: 13288 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,5.5 - parent: 1 - type: Transform - - uid: 13396 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,32.5 - parent: 1 - type: Transform - - uid: 13443 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,32.5 - parent: 1 - type: Transform - - uid: 13454 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,32.5 - parent: 1 - type: Transform - - uid: 13517 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,32.5 - parent: 1 - type: Transform - - uid: 13540 - components: - - rot: 3.141592653589793 rad - pos: -57.5,32.5 - parent: 1 - type: Transform - - uid: 13547 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,46.5 - parent: 1 - type: Transform -- proto: DisposalPipe - entities: - - uid: 582 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,-11.5 - parent: 1 - type: Transform - - uid: 1591 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,-11.5 - parent: 1 - type: Transform - - uid: 1592 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,-11.5 - parent: 1 - type: Transform - - uid: 1593 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,-11.5 - parent: 1 - type: Transform - - uid: 5318 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,5.5 - parent: 1 - type: Transform - - uid: 8653 - components: - - pos: -50.5,57.5 - parent: 1 - type: Transform - - uid: 8654 - components: - - pos: -50.5,56.5 - parent: 1 - type: Transform - - uid: 8655 - components: - - pos: -50.5,60.5 - parent: 1 - type: Transform - - uid: 8656 - components: - - pos: -50.5,61.5 - parent: 1 - type: Transform - - uid: 8657 - components: - - pos: -50.5,62.5 - parent: 1 - type: Transform - - uid: 8658 - components: - - pos: -50.5,63.5 - parent: 1 - type: Transform - - uid: 8659 - components: - - pos: -50.5,64.5 - parent: 1 - type: Transform - - uid: 8660 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,55.5 - parent: 1 - type: Transform - - uid: 8661 - components: - - rot: 3.141592653589793 rad - pos: -48.5,54.5 - parent: 1 - type: Transform - - uid: 8662 - components: - - rot: 3.141592653589793 rad - pos: -48.5,53.5 - parent: 1 - type: Transform - - uid: 8663 - components: - - rot: 3.141592653589793 rad - pos: -48.5,52.5 - parent: 1 - type: Transform - - uid: 8664 - components: - - rot: 3.141592653589793 rad - pos: -48.5,51.5 - parent: 1 - type: Transform - - uid: 8665 - components: - - rot: 3.141592653589793 rad - pos: -48.5,50.5 - parent: 1 - type: Transform - - uid: 8666 - components: - - rot: 3.141592653589793 rad - pos: -48.5,49.5 - parent: 1 - type: Transform - - uid: 8667 - components: - - rot: 3.141592653589793 rad - pos: -48.5,48.5 - parent: 1 - type: Transform - - uid: 11148 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,46.5 - parent: 1 - type: Transform - - uid: 12922 - components: - - rot: 3.141592653589793 rad - pos: 3.5,15.5 - parent: 1 - type: Transform - - uid: 12923 - components: - - rot: 3.141592653589793 rad - pos: 3.5,16.5 - parent: 1 - type: Transform - - uid: 12924 - components: - - rot: 3.141592653589793 rad - pos: 3.5,17.5 - parent: 1 - type: Transform - - uid: 12925 - components: - - rot: 3.141592653589793 rad - pos: 3.5,18.5 - parent: 1 - type: Transform - - uid: 12926 - components: - - rot: 3.141592653589793 rad - pos: 3.5,20.5 - parent: 1 - type: Transform - - uid: 12927 - components: - - rot: 3.141592653589793 rad - pos: 3.5,21.5 - parent: 1 - type: Transform - - uid: 12928 - components: - - rot: 3.141592653589793 rad - pos: 3.5,22.5 - parent: 1 - type: Transform - - uid: 12929 - components: - - rot: 3.141592653589793 rad - pos: 3.5,24.5 - parent: 1 - type: Transform - - uid: 12930 - components: - - rot: 3.141592653589793 rad - pos: 3.5,25.5 - parent: 1 - type: Transform - - uid: 12931 - components: - - rot: 3.141592653589793 rad - pos: 3.5,26.5 - parent: 1 - type: Transform - - uid: 12932 - components: - - rot: 3.141592653589793 rad - pos: 3.5,27.5 - parent: 1 - type: Transform - - uid: 12933 - components: - - rot: 3.141592653589793 rad - pos: 3.5,28.5 - parent: 1 - type: Transform - - uid: 12934 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,29.5 - parent: 1 - type: Transform - - uid: 12935 - components: - - pos: 11.5,15.5 - parent: 1 - type: Transform - - uid: 12936 - components: - - pos: 11.5,16.5 - parent: 1 - type: Transform - - uid: 12937 - components: - - pos: 11.5,17.5 - parent: 1 - type: Transform - - uid: 12938 - components: - - pos: 11.5,18.5 - parent: 1 - type: Transform - - uid: 12939 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,19.5 - parent: 1 - type: Transform - - uid: 12940 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,19.5 - parent: 1 - type: Transform - - uid: 12941 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,19.5 - parent: 1 - type: Transform - - uid: 12942 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,19.5 - parent: 1 - type: Transform - - uid: 12943 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,19.5 - parent: 1 - type: Transform - - uid: 12944 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,19.5 - parent: 1 - type: Transform - - uid: 12945 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,19.5 - parent: 1 - type: Transform - - uid: 12948 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,29.5 - parent: 1 - type: Transform - - uid: 12949 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,23.5 - parent: 1 - type: Transform - - uid: 12950 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,23.5 - parent: 1 - type: Transform - - uid: 13109 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,5.5 - parent: 1 - type: Transform - - uid: 13110 - components: - - rot: -1.5707963267948966 rad - pos: 26.5,5.5 - parent: 1 - type: Transform - - uid: 13111 - components: - - rot: -1.5707963267948966 rad - pos: 25.5,5.5 - parent: 1 - type: Transform - - uid: 13112 - components: - - rot: -1.5707963267948966 rad - pos: 24.5,5.5 - parent: 1 - type: Transform - - uid: 13113 - components: - - rot: -1.5707963267948966 rad - pos: 22.5,5.5 - parent: 1 - type: Transform - - uid: 13114 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,5.5 - parent: 1 - type: Transform - - uid: 13115 - components: - - rot: -1.5707963267948966 rad - pos: 20.5,5.5 - parent: 1 - type: Transform - - uid: 13116 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,5.5 - parent: 1 - type: Transform - - uid: 13117 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,5.5 - parent: 1 - type: Transform - - uid: 13118 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,5.5 - parent: 1 - type: Transform - - uid: 13119 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,5.5 - parent: 1 - type: Transform - - uid: 13120 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,5.5 - parent: 1 - type: Transform - - uid: 13121 - components: - - rot: -1.5707963267948966 rad - pos: 14.5,5.5 - parent: 1 - type: Transform - - uid: 13122 - components: - - rot: -1.5707963267948966 rad - pos: 13.5,5.5 - parent: 1 - type: Transform - - uid: 13123 - components: - - rot: -1.5707963267948966 rad - pos: 12.5,5.5 - parent: 1 - type: Transform - - uid: 13124 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-2.5 - parent: 1 - type: Transform - - uid: 13125 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-1.5 - parent: 1 - type: Transform - - uid: 13126 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-0.5 - parent: 1 - type: Transform - - uid: 13127 - components: - - rot: 3.141592653589793 rad - pos: 11.5,0.5 - parent: 1 - type: Transform - - uid: 13128 - components: - - rot: 3.141592653589793 rad - pos: 11.5,1.5 - parent: 1 - type: Transform - - uid: 13129 - components: - - rot: 3.141592653589793 rad - pos: 11.5,2.5 - parent: 1 - type: Transform - - uid: 13130 - components: - - rot: 3.141592653589793 rad - pos: 11.5,3.5 - parent: 1 - type: Transform - - uid: 13131 - components: - - rot: 3.141592653589793 rad - pos: 11.5,4.5 - parent: 1 - type: Transform - - uid: 13134 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,5.5 - parent: 1 - type: Transform - - uid: 13135 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,5.5 - parent: 1 - type: Transform - - uid: 13136 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,5.5 - parent: 1 - type: Transform - - uid: 13137 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,5.5 - parent: 1 - type: Transform - - uid: 13138 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,5.5 - parent: 1 - type: Transform - - uid: 13139 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,5.5 - parent: 1 - type: Transform - - uid: 13140 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,5.5 - parent: 1 - type: Transform - - uid: 13141 - components: - - rot: 1.5707963267948966 rad - pos: 3.5,5.5 - parent: 1 - type: Transform - - uid: 13142 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,5.5 - parent: 1 - type: Transform - - uid: 13143 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,5.5 - parent: 1 - type: Transform - - uid: 13144 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,5.5 - parent: 1 - type: Transform - - uid: 13145 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,5.5 - parent: 1 - type: Transform - - uid: 13146 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,5.5 - parent: 1 - type: Transform - - uid: 13147 - components: - - rot: 1.5707963267948966 rad - pos: -2.5,5.5 - parent: 1 - type: Transform - - uid: 13148 - components: - - rot: 1.5707963267948966 rad - pos: -3.5,5.5 - parent: 1 - type: Transform - - uid: 13149 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,5.5 - parent: 1 - type: Transform - - uid: 13150 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,5.5 - parent: 1 - type: Transform - - uid: 13151 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,5.5 - parent: 1 - type: Transform - - uid: 13158 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,-2.5 - parent: 1 - type: Transform - - uid: 13159 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,-2.5 - parent: 1 - type: Transform - - uid: 13160 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,-2.5 - parent: 1 - type: Transform - - uid: 13161 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-2.5 - parent: 1 - type: Transform - - uid: 13162 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,-2.5 - parent: 1 - type: Transform - - uid: 13163 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,-2.5 - parent: 1 - type: Transform - - uid: 13164 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,-2.5 - parent: 1 - type: Transform - - uid: 13165 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,-2.5 - parent: 1 - type: Transform - - uid: 13166 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,-2.5 - parent: 1 - type: Transform - - uid: 13167 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,-2.5 - parent: 1 - type: Transform - - uid: 13168 - components: - - rot: 3.141592653589793 rad - pos: -7.5,-1.5 - parent: 1 - type: Transform - - uid: 13169 - components: - - rot: 3.141592653589793 rad - pos: -7.5,-0.5 - parent: 1 - type: Transform - - uid: 13170 - components: - - rot: 3.141592653589793 rad - pos: -7.5,0.5 - parent: 1 - type: Transform - - uid: 13171 - components: - - rot: 3.141592653589793 rad - pos: -7.5,1.5 - parent: 1 - type: Transform - - uid: 13172 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,2.5 - parent: 1 - type: Transform - - uid: 13173 - components: - - pos: -7.5,3.5 - parent: 1 - type: Transform - - uid: 13174 - components: - - pos: -7.5,4.5 - parent: 1 - type: Transform - - uid: 13175 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,5.5 - parent: 1 - type: Transform - - uid: 13176 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,5.5 - parent: 1 - type: Transform - - uid: 13177 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,5.5 - parent: 1 - type: Transform - - uid: 13178 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,5.5 - parent: 1 - type: Transform - - uid: 13179 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,5.5 - parent: 1 - type: Transform - - uid: 13180 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,5.5 - parent: 1 - type: Transform - - uid: 13181 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,5.5 - parent: 1 - type: Transform - - uid: 13182 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,5.5 - parent: 1 - type: Transform - - uid: 13183 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,5.5 - parent: 1 - type: Transform - - uid: 13184 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,5.5 - parent: 1 - type: Transform - - uid: 13185 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,5.5 - parent: 1 - type: Transform - - uid: 13186 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,5.5 - parent: 1 - type: Transform - - uid: 13189 - components: - - pos: -20.5,6.5 - parent: 1 - type: Transform - - uid: 13190 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,5.5 - parent: 1 - type: Transform - - uid: 13191 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,5.5 - parent: 1 - type: Transform - - uid: 13192 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,5.5 - parent: 1 - type: Transform - - uid: 13193 - components: - - rot: -1.5707963267948966 rad - pos: -24.5,5.5 - parent: 1 - type: Transform - - uid: 13194 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,5.5 - parent: 1 - type: Transform - - uid: 13195 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,5.5 - parent: 1 - type: Transform - - uid: 13196 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,5.5 - parent: 1 - type: Transform - - uid: 13197 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,5.5 - parent: 1 - type: Transform - - uid: 13198 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,5.5 - parent: 1 - type: Transform - - uid: 13199 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,5.5 - parent: 1 - type: Transform - - uid: 13200 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,5.5 - parent: 1 - type: Transform - - uid: 13201 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,5.5 - parent: 1 - type: Transform - - uid: 13202 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,5.5 - parent: 1 - type: Transform - - uid: 13203 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,5.5 - parent: 1 - type: Transform - - uid: 13205 - components: - - rot: 3.141592653589793 rad - pos: -35.5,6.5 - parent: 1 - type: Transform - - uid: 13207 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,5.5 - parent: 1 - type: Transform - - uid: 13208 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,5.5 - parent: 1 - type: Transform - - uid: 13209 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,5.5 - parent: 1 - type: Transform - - uid: 13210 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,5.5 - parent: 1 - type: Transform - - uid: 13211 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,5.5 - parent: 1 - type: Transform - - uid: 13212 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,5.5 - parent: 1 - type: Transform - - uid: 13213 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,5.5 - parent: 1 - type: Transform - - uid: 13214 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,5.5 - parent: 1 - type: Transform - - uid: 13215 - components: - - rot: -1.5707963267948966 rad - pos: -44.5,5.5 - parent: 1 - type: Transform - - uid: 13216 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,5.5 - parent: 1 - type: Transform - - uid: 13217 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,5.5 - parent: 1 - type: Transform - - uid: 13219 - components: - - rot: -1.5707963267948966 rad - pos: -48.5,5.5 - parent: 1 - type: Transform - - uid: 13220 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,5.5 - parent: 1 - type: Transform - - uid: 13222 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,5.5 - parent: 1 - type: Transform - - uid: 13223 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,5.5 - parent: 1 - type: Transform - - uid: 13224 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,5.5 - parent: 1 - type: Transform - - uid: 13225 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,5.5 - parent: 1 - type: Transform - - uid: 13226 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,5.5 - parent: 1 - type: Transform - - uid: 13227 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,5.5 - parent: 1 - type: Transform - - uid: 13228 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-9.5 - parent: 1 - type: Transform - - uid: 13229 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-8.5 - parent: 1 - type: Transform - - uid: 13230 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-7.5 - parent: 1 - type: Transform - - uid: 13231 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-6.5 - parent: 1 - type: Transform - - uid: 13232 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-5.5 - parent: 1 - type: Transform - - uid: 13233 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-4.5 - parent: 1 - type: Transform - - uid: 13234 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-3.5 - parent: 1 - type: Transform - - uid: 13235 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-2.5 - parent: 1 - type: Transform - - uid: 13236 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-1.5 - parent: 1 - type: Transform - - uid: 13237 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-0.5 - parent: 1 - type: Transform - - uid: 13238 - components: - - rot: 3.141592653589793 rad - pos: -57.5,0.5 - parent: 1 - type: Transform - - uid: 13239 - components: - - rot: 3.141592653589793 rad - pos: -57.5,1.5 - parent: 1 - type: Transform - - uid: 13240 - components: - - rot: 3.141592653589793 rad - pos: -57.5,2.5 - parent: 1 - type: Transform - - uid: 13241 - components: - - rot: 3.141592653589793 rad - pos: -57.5,3.5 - parent: 1 - type: Transform - - uid: 13242 - components: - - rot: 3.141592653589793 rad - pos: -57.5,4.5 - parent: 1 - type: Transform - - uid: 13246 - components: - - rot: 3.141592653589793 rad - pos: -57.5,6.5 - parent: 1 - type: Transform - - uid: 13247 - components: - - rot: 3.141592653589793 rad - pos: -57.5,7.5 - parent: 1 - type: Transform - - uid: 13248 - components: - - rot: 3.141592653589793 rad - pos: -57.5,8.5 - parent: 1 - type: Transform - - uid: 13249 - components: - - rot: 3.141592653589793 rad - pos: -57.5,9.5 - parent: 1 - type: Transform - - uid: 13250 - components: - - rot: 3.141592653589793 rad - pos: -57.5,10.5 - parent: 1 - type: Transform - - uid: 13251 - components: - - rot: 3.141592653589793 rad - pos: -57.5,11.5 - parent: 1 - type: Transform - - uid: 13252 - components: - - rot: 3.141592653589793 rad - pos: -57.5,12.5 - parent: 1 - type: Transform - - uid: 13253 - components: - - rot: 3.141592653589793 rad - pos: -57.5,13.5 - parent: 1 - type: Transform - - uid: 13254 - components: - - rot: 3.141592653589793 rad - pos: -57.5,14.5 - parent: 1 - type: Transform - - uid: 13255 - components: - - rot: 3.141592653589793 rad - pos: -57.5,16.5 - parent: 1 - type: Transform - - uid: 13256 - components: - - rot: 3.141592653589793 rad - pos: -57.5,17.5 - parent: 1 - type: Transform - - uid: 13257 - components: - - rot: 3.141592653589793 rad - pos: -57.5,18.5 - parent: 1 - type: Transform - - uid: 13258 - components: - - rot: 3.141592653589793 rad - pos: -57.5,19.5 - parent: 1 - type: Transform - - uid: 13259 - components: - - rot: 3.141592653589793 rad - pos: -57.5,20.5 - parent: 1 - type: Transform - - uid: 13260 - components: - - rot: 3.141592653589793 rad - pos: -57.5,21.5 - parent: 1 - type: Transform - - uid: 13261 - components: - - rot: 3.141592653589793 rad - pos: -57.5,22.5 - parent: 1 - type: Transform - - uid: 13262 - components: - - rot: 3.141592653589793 rad - pos: -57.5,23.5 - parent: 1 - type: Transform - - uid: 13263 - components: - - rot: 3.141592653589793 rad - pos: -57.5,24.5 - parent: 1 - type: Transform - - uid: 13264 - components: - - rot: 3.141592653589793 rad - pos: -57.5,25.5 - parent: 1 - type: Transform - - uid: 13265 - components: - - rot: 3.141592653589793 rad - pos: -57.5,26.5 - parent: 1 - type: Transform - - uid: 13266 - components: - - rot: 3.141592653589793 rad - pos: -57.5,27.5 - parent: 1 - type: Transform - - uid: 13267 - components: - - rot: 3.141592653589793 rad - pos: -57.5,28.5 - parent: 1 - type: Transform - - uid: 13268 - components: - - rot: 3.141592653589793 rad - pos: -57.5,29.5 - parent: 1 - type: Transform - - uid: 13269 - components: - - rot: 3.141592653589793 rad - pos: -57.5,30.5 - parent: 1 - type: Transform - - uid: 13270 - components: - - rot: 3.141592653589793 rad - pos: -57.5,31.5 - parent: 1 - type: Transform - - uid: 13272 - components: - - rot: 3.141592653589793 rad - pos: -57.5,34.5 - parent: 1 - type: Transform - - uid: 13273 - components: - - rot: 3.141592653589793 rad - pos: -57.5,35.5 - parent: 1 - type: Transform - - uid: 13274 - components: - - rot: 3.141592653589793 rad - pos: -57.5,36.5 - parent: 1 - type: Transform - - uid: 13275 - components: - - rot: 3.141592653589793 rad - pos: -57.5,38.5 - parent: 1 - type: Transform - - uid: 13276 - components: - - rot: 3.141592653589793 rad - pos: -57.5,39.5 - parent: 1 - type: Transform - - uid: 13277 - components: - - rot: 3.141592653589793 rad - pos: -57.5,40.5 - parent: 1 - type: Transform - - uid: 13278 - components: - - rot: 3.141592653589793 rad - pos: -57.5,41.5 - parent: 1 - type: Transform - - uid: 13279 - components: - - rot: 3.141592653589793 rad - pos: -57.5,42.5 - parent: 1 - type: Transform - - uid: 13280 - components: - - rot: 3.141592653589793 rad - pos: -57.5,43.5 - parent: 1 - type: Transform - - uid: 13281 - components: - - rot: 3.141592653589793 rad - pos: -57.5,44.5 - parent: 1 - type: Transform - - uid: 13282 - components: - - rot: 3.141592653589793 rad - pos: -57.5,45.5 - parent: 1 - type: Transform - - uid: 13286 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,15.5 - parent: 1 - type: Transform - - uid: 13290 - components: - - rot: 3.141592653589793 rad - pos: -49.5,4.5 - parent: 1 - type: Transform - - uid: 13295 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,37.5 - parent: 1 - type: Transform - - uid: 13328 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,29.5 - parent: 1 - type: Transform - - uid: 13329 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,29.5 - parent: 1 - type: Transform - - uid: 13330 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,29.5 - parent: 1 - type: Transform - - uid: 13374 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,47.5 - parent: 1 - type: Transform - - uid: 13375 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,47.5 - parent: 1 - type: Transform - - uid: 13376 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,47.5 - parent: 1 - type: Transform - - uid: 13377 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,47.5 - parent: 1 - type: Transform - - uid: 13378 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,47.5 - parent: 1 - type: Transform - - uid: 13379 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,47.5 - parent: 1 - type: Transform - - uid: 13380 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,47.5 - parent: 1 - type: Transform - - uid: 13381 - components: - - pos: -66.5,48.5 - parent: 1 - type: Transform - - uid: 13382 - components: - - pos: -66.5,49.5 - parent: 1 - type: Transform - - uid: 13383 - components: - - rot: 3.141592653589793 rad - pos: -67.5,51.5 - parent: 1 - type: Transform - - uid: 13384 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,52.5 - parent: 1 - type: Transform - - uid: 13385 - components: - - rot: 1.5707963267948966 rad - pos: -69.5,52.5 - parent: 1 - type: Transform - - uid: 13386 - components: - - pos: -70.5,53.5 - parent: 1 - type: Transform - - uid: 13387 - components: - - rot: -1.5707963267948966 rad - pos: -71.5,54.5 - parent: 1 - type: Transform - - uid: 13391 - components: - - rot: -1.5707963267948966 rad - pos: -5.5,31.5 - parent: 1 - type: Transform - - uid: 13392 - components: - - rot: -1.5707963267948966 rad - pos: -4.5,31.5 - parent: 1 - type: Transform - - uid: 13393 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,32.5 - parent: 1 - type: Transform - - uid: 13394 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,30.5 - parent: 1 - type: Transform - - uid: 13395 - components: - - rot: 3.141592653589793 rad - pos: -8.5,31.5 - parent: 1 - type: Transform - - uid: 13399 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,32.5 - parent: 1 - type: Transform - - uid: 13400 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,32.5 - parent: 1 - type: Transform - - uid: 13401 - components: - - rot: 1.5707963267948966 rad - pos: -11.5,32.5 - parent: 1 - type: Transform - - uid: 13402 - components: - - rot: 1.5707963267948966 rad - pos: -12.5,32.5 - parent: 1 - type: Transform - - uid: 13403 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,32.5 - parent: 1 - type: Transform - - uid: 13404 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,32.5 - parent: 1 - type: Transform - - uid: 13405 - components: - - rot: 1.5707963267948966 rad - pos: -15.5,32.5 - parent: 1 - type: Transform - - uid: 13406 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,32.5 - parent: 1 - type: Transform - - uid: 13407 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,32.5 - parent: 1 - type: Transform - - uid: 13408 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,32.5 - parent: 1 - type: Transform - - uid: 13409 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,32.5 - parent: 1 - type: Transform - - uid: 13410 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,32.5 - parent: 1 - type: Transform - - uid: 13411 - components: - - rot: 1.5707963267948966 rad - pos: -23.5,32.5 - parent: 1 - type: Transform - - uid: 13412 - components: - - rot: 1.5707963267948966 rad - pos: -24.5,32.5 - parent: 1 - type: Transform - - uid: 13413 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,32.5 - parent: 1 - type: Transform - - uid: 13414 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,32.5 - parent: 1 - type: Transform - - uid: 13415 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,32.5 - parent: 1 - type: Transform - - uid: 13416 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,32.5 - parent: 1 - type: Transform - - uid: 13417 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,32.5 - parent: 1 - type: Transform - - uid: 13418 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,32.5 - parent: 1 - type: Transform - - uid: 13419 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,32.5 - parent: 1 - type: Transform - - uid: 13420 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,32.5 - parent: 1 - type: Transform - - uid: 13421 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,32.5 - parent: 1 - type: Transform - - uid: 13422 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,32.5 - parent: 1 - type: Transform - - uid: 13423 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,32.5 - parent: 1 - type: Transform - - uid: 13424 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,32.5 - parent: 1 - type: Transform - - uid: 13426 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,32.5 - parent: 1 - type: Transform - - uid: 13427 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,32.5 - parent: 1 - type: Transform - - uid: 13428 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,32.5 - parent: 1 - type: Transform - - uid: 13429 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,32.5 - parent: 1 - type: Transform - - uid: 13430 - components: - - rot: 1.5707963267948966 rad - pos: -43.5,32.5 - parent: 1 - type: Transform - - uid: 13431 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,32.5 - parent: 1 - type: Transform - - uid: 13432 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,32.5 - parent: 1 - type: Transform - - uid: 13433 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,32.5 - parent: 1 - type: Transform - - uid: 13434 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,32.5 - parent: 1 - type: Transform - - uid: 13435 - components: - - rot: 1.5707963267948966 rad - pos: -49.5,32.5 - parent: 1 - type: Transform - - uid: 13436 - components: - - rot: 1.5707963267948966 rad - pos: -50.5,32.5 - parent: 1 - type: Transform - - uid: 13437 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,32.5 - parent: 1 - type: Transform - - uid: 13438 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,32.5 - parent: 1 - type: Transform - - uid: 13439 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,32.5 - parent: 1 - type: Transform - - uid: 13440 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,32.5 - parent: 1 - type: Transform - - uid: 13441 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,32.5 - parent: 1 - type: Transform - - uid: 13442 - components: - - pos: -45.5,31.5 - parent: 1 - type: Transform - - uid: 13448 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,28.5 - parent: 1 - type: Transform - - uid: 13449 - components: - - rot: -1.5707963267948966 rad - pos: -24.5,28.5 - parent: 1 - type: Transform - - uid: 13450 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,28.5 - parent: 1 - type: Transform - - uid: 13451 - components: - - rot: 3.141592653589793 rad - pos: -22.5,29.5 - parent: 1 - type: Transform - - uid: 13452 - components: - - rot: 3.141592653589793 rad - pos: -22.5,31.5 - parent: 1 - type: Transform - - uid: 13453 - components: - - rot: 3.141592653589793 rad - pos: -22.5,30.5 - parent: 1 - type: Transform - - uid: 13456 - components: - - rot: 3.141592653589793 rad - pos: -16.5,33.5 - parent: 1 - type: Transform - - uid: 13457 - components: - - rot: 3.141592653589793 rad - pos: -16.5,34.5 - parent: 1 - type: Transform - - uid: 13458 - components: - - rot: 3.141592653589793 rad - pos: -16.5,35.5 - parent: 1 - type: Transform - - uid: 13459 - components: - - rot: 3.141592653589793 rad - pos: -16.5,36.5 - parent: 1 - type: Transform - - uid: 13460 - components: - - rot: 3.141592653589793 rad - pos: -16.5,37.5 - parent: 1 - type: Transform - - uid: 13461 - components: - - rot: 3.141592653589793 rad - pos: -16.5,38.5 - parent: 1 - type: Transform - - uid: 13462 - components: - - rot: 3.141592653589793 rad - pos: -16.5,39.5 - parent: 1 - type: Transform - - uid: 13463 - components: - - rot: 3.141592653589793 rad - pos: -16.5,40.5 - parent: 1 - type: Transform - - uid: 13464 - components: - - rot: 3.141592653589793 rad - pos: -16.5,41.5 - parent: 1 - type: Transform - - uid: 13465 - components: - - rot: 3.141592653589793 rad - pos: -16.5,42.5 - parent: 1 - type: Transform - - uid: 13466 - components: - - rot: 3.141592653589793 rad - pos: -16.5,43.5 - parent: 1 - type: Transform - - uid: 13467 - components: - - rot: 3.141592653589793 rad - pos: -16.5,44.5 - parent: 1 - type: Transform - - uid: 13468 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,45.5 - parent: 1 - type: Transform - - uid: 13469 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,45.5 - parent: 1 - type: Transform - - uid: 13470 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,45.5 - parent: 1 - type: Transform - - uid: 13471 - components: - - pos: -20.5,44.5 - parent: 1 - type: Transform - - uid: 13472 - components: - - pos: -20.5,43.5 - parent: 1 - type: Transform - - uid: 13477 - components: - - pos: -16.5,46.5 - parent: 1 - type: Transform - - uid: 13478 - components: - - pos: -16.5,47.5 - parent: 1 - type: Transform - - uid: 13479 - components: - - pos: -16.5,48.5 - parent: 1 - type: Transform - - uid: 13480 - components: - - pos: -16.5,49.5 - parent: 1 - type: Transform - - uid: 13481 - components: - - pos: -16.5,50.5 - parent: 1 - type: Transform - - uid: 13482 - components: - - pos: -16.5,51.5 - parent: 1 - type: Transform - - uid: 13483 - components: - - pos: -16.5,52.5 - parent: 1 - type: Transform - - uid: 13484 - components: - - pos: -16.5,53.5 - parent: 1 - type: Transform - - uid: 13485 - components: - - pos: -16.5,54.5 - parent: 1 - type: Transform - - uid: 13486 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,55.5 - parent: 1 - type: Transform - - uid: 13487 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,55.5 - parent: 1 - type: Transform - - uid: 13488 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,55.5 - parent: 1 - type: Transform - - uid: 13489 - components: - - rot: 3.141592653589793 rad - pos: -12.5,56.5 - parent: 1 - type: Transform - - uid: 13490 - components: - - rot: 3.141592653589793 rad - pos: -17.5,56.5 - parent: 1 - type: Transform - - uid: 13491 - components: - - rot: 3.141592653589793 rad - pos: -17.5,57.5 - parent: 1 - type: Transform - - uid: 13492 - components: - - rot: 3.141592653589793 rad - pos: -17.5,58.5 - parent: 1 - type: Transform - - uid: 13493 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,59.5 - parent: 1 - type: Transform - - uid: 13494 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,59.5 - parent: 1 - type: Transform - - uid: 13504 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,20.5 - parent: 1 - type: Transform - - uid: 13505 - components: - - pos: -37.5,21.5 - parent: 1 - type: Transform - - uid: 13506 - components: - - pos: -37.5,22.5 - parent: 1 - type: Transform - - uid: 13507 - components: - - pos: -37.5,23.5 - parent: 1 - type: Transform - - uid: 13508 - components: - - pos: -37.5,24.5 - parent: 1 - type: Transform - - uid: 13509 - components: - - pos: -37.5,25.5 - parent: 1 - type: Transform - - uid: 13510 - components: - - pos: -37.5,26.5 - parent: 1 - type: Transform - - uid: 13511 - components: - - pos: -37.5,27.5 - parent: 1 - type: Transform - - uid: 13512 - components: - - pos: -37.5,28.5 - parent: 1 - type: Transform - - uid: 13513 - components: - - pos: -37.5,29.5 - parent: 1 - type: Transform - - uid: 13514 - components: - - pos: -37.5,30.5 - parent: 1 - type: Transform - - uid: 13515 - components: - - pos: -37.5,31.5 - parent: 1 - type: Transform - - uid: 13519 - components: - - rot: 1.5707963267948966 rad - pos: -43.5,39.5 - parent: 1 - type: Transform - - uid: 13520 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,39.5 - parent: 1 - type: Transform - - uid: 13521 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,39.5 - parent: 1 - type: Transform - - uid: 13522 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,39.5 - parent: 1 - type: Transform - - uid: 13523 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,39.5 - parent: 1 - type: Transform - - uid: 13524 - components: - - pos: -38.5,38.5 - parent: 1 - type: Transform - - uid: 13525 - components: - - pos: -38.5,37.5 - parent: 1 - type: Transform - - uid: 13526 - components: - - pos: -38.5,36.5 - parent: 1 - type: Transform - - uid: 13527 - components: - - pos: -38.5,35.5 - parent: 1 - type: Transform - - uid: 13528 - components: - - pos: -38.5,34.5 - parent: 1 - type: Transform - - uid: 13529 - components: - - pos: -38.5,33.5 - parent: 1 - type: Transform - - uid: 13537 - components: - - pos: -37.5,41.5 - parent: 1 - type: Transform - - uid: 13541 - components: - - rot: 3.141592653589793 rad - pos: -49.5,45.5 - parent: 1 - type: Transform - - uid: 13543 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,46.5 - parent: 1 - type: Transform - - uid: 13544 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,46.5 - parent: 1 - type: Transform - - uid: 13548 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,46.5 - parent: 1 - type: Transform - - uid: 13549 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,46.5 - parent: 1 - type: Transform - - uid: 13550 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,46.5 - parent: 1 - type: Transform - - uid: 13551 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,46.5 - parent: 1 - type: Transform - - uid: 13552 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,46.5 - parent: 1 - type: Transform - - uid: 13553 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,46.5 - parent: 1 - type: Transform - - uid: 13554 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,46.5 - parent: 1 - type: Transform - - uid: 13556 - components: - - rot: -1.5707963267948966 rad - pos: -72.5,54.5 - parent: 1 - type: Transform - - uid: 13560 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,47.5 - parent: 1 - type: Transform - - uid: 13564 - components: - - rot: 3.141592653589793 rad - pos: -73.5,20.5 - parent: 1 - type: Transform - - uid: 13565 - components: - - rot: 3.141592653589793 rad - pos: -73.5,21.5 - parent: 1 - type: Transform - - uid: 13566 - components: - - rot: 3.141592653589793 rad - pos: -73.5,22.5 - parent: 1 - type: Transform - - uid: 13567 - components: - - rot: 3.141592653589793 rad - pos: -73.5,23.5 - parent: 1 - type: Transform - - uid: 13568 - components: - - rot: 3.141592653589793 rad - pos: -73.5,24.5 - parent: 1 - type: Transform - - uid: 13569 - components: - - rot: 3.141592653589793 rad - pos: -73.5,25.5 - parent: 1 - type: Transform - - uid: 13570 - components: - - rot: 3.141592653589793 rad - pos: -73.5,26.5 - parent: 1 - type: Transform - - uid: 13571 - components: - - rot: 3.141592653589793 rad - pos: -73.5,27.5 - parent: 1 - type: Transform - - uid: 13572 - components: - - rot: 3.141592653589793 rad - pos: -73.5,28.5 - parent: 1 - type: Transform - - uid: 13573 - components: - - rot: 3.141592653589793 rad - pos: -73.5,29.5 - parent: 1 - type: Transform - - uid: 13574 - components: - - rot: 3.141592653589793 rad - pos: -73.5,30.5 - parent: 1 - type: Transform - - uid: 13575 - components: - - rot: 3.141592653589793 rad - pos: -73.5,31.5 - parent: 1 - type: Transform - - uid: 13576 - components: - - rot: 3.141592653589793 rad - pos: -73.5,32.5 - parent: 1 - type: Transform - - uid: 13577 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,33.5 - parent: 1 - type: Transform - - uid: 13578 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,33.5 - parent: 1 - type: Transform - - uid: 13579 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,33.5 - parent: 1 - type: Transform - - uid: 13580 - components: - - rot: 1.5707963267948966 rad - pos: -69.5,33.5 - parent: 1 - type: Transform - - uid: 13581 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,33.5 - parent: 1 - type: Transform - - uid: 13582 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,32.5 - parent: 1 - type: Transform - - uid: 13583 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,33.5 - parent: 1 - type: Transform - - uid: 13584 - components: - - rot: 1.5707963267948966 rad - pos: -66.5,33.5 - parent: 1 - type: Transform - - uid: 13585 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,33.5 - parent: 1 - type: Transform - - uid: 13586 - components: - - rot: -1.5707963267948966 rad - pos: -63.5,32.5 - parent: 1 - type: Transform - - uid: 13587 - components: - - rot: -1.5707963267948966 rad - pos: -62.5,32.5 - parent: 1 - type: Transform - - uid: 13588 - components: - - rot: -1.5707963267948966 rad - pos: -61.5,32.5 - parent: 1 - type: Transform - - uid: 13589 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,32.5 - parent: 1 - type: Transform - - uid: 13590 - components: - - rot: -1.5707963267948966 rad - pos: -59.5,32.5 - parent: 1 - type: Transform - - uid: 13595 - components: - - pos: -64.5,29.5 - parent: 1 - type: Transform - - uid: 13596 - components: - - pos: -64.5,30.5 - parent: 1 - type: Transform - - uid: 13597 - components: - - pos: -64.5,31.5 - parent: 1 - type: Transform - - uid: 13612 - components: - - rot: 3.141592653589793 rad - pos: -48.5,47.5 - parent: 1 - type: Transform - - uid: 15061 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,29.5 - parent: 1 - type: Transform - - uid: 15167 - components: - - rot: -1.5707963267948966 rad - pos: 12.5,50.5 - parent: 1 - type: Transform - - uid: 15168 - components: - - rot: -1.5707963267948966 rad - pos: 14.5,50.5 - parent: 1 - type: Transform - - uid: 15169 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,50.5 - parent: 1 - type: Transform - - uid: 15171 - components: - - rot: -1.5707963267948966 rad - pos: 13.5,50.5 - parent: 1 - type: Transform -- proto: DisposalTrunk - entities: - - uid: 589 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,-11.5 - parent: 1 - type: Transform - - uid: 8671 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,65.5 - parent: 1 - type: Transform - - uid: 8672 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,58.5 - parent: 1 - type: Transform - - uid: 12917 - components: - - pos: 5.5,30.5 - parent: 1 - type: Transform - - uid: 12918 - components: - - rot: 3.141592653589793 rad - pos: 11.5,14.5 - parent: 1 - type: Transform - - uid: 12919 - components: - - rot: 3.141592653589793 rad - pos: 0.5,22.5 - parent: 1 - type: Transform - - uid: 12952 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,14.5 - parent: 1 - type: Transform - - uid: 13106 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,5.5 - parent: 1 - type: Transform - - uid: 13107 - components: - - rot: 3.141592653589793 rad - pos: 23.5,4.5 - parent: 1 - type: Transform - - uid: 13133 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-3.5 - parent: 1 - type: Transform - - uid: 13152 - components: - - rot: -1.5707963267948966 rad - pos: -5.5,2.5 - parent: 1 - type: Transform - - uid: 13153 - components: - - pos: -18.5,-1.5 - parent: 1 - type: Transform - - uid: 13188 - components: - - pos: -20.5,7.5 - parent: 1 - type: Transform - - uid: 13206 - components: - - pos: -35.5,7.5 - parent: 1 - type: Transform - - uid: 13243 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,-10.5 - parent: 1 - type: Transform - - uid: 13285 - components: - - pos: -55.5,16.5 - parent: 1 - type: Transform - - uid: 13289 - components: - - rot: 3.141592653589793 rad - pos: -49.5,3.5 - parent: 1 - type: Transform - - uid: 13294 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,37.5 - parent: 1 - type: Transform - - uid: 13327 - components: - - rot: 3.141592653589793 rad - pos: -3.5,29.5 - parent: 1 - type: Transform - - uid: 13398 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,30.5 - parent: 1 - type: Transform - - uid: 13444 - components: - - rot: 3.141592653589793 rad - pos: -45.5,30.5 - parent: 1 - type: Transform - - uid: 13445 - components: - - pos: -26.5,29.5 - parent: 1 - type: Transform - - uid: 13475 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,42.5 - parent: 1 - type: Transform - - uid: 13498 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,59.5 - parent: 1 - type: Transform - - uid: 13499 - components: - - pos: -12.5,57.5 - parent: 1 - type: Transform - - uid: 13503 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,20.5 - parent: 1 - type: Transform - - uid: 13518 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,39.5 - parent: 1 - type: Transform - - uid: 13533 - components: - - pos: -44.5,47.5 - parent: 1 - type: Transform - - uid: 13534 - components: - - rot: 3.141592653589793 rad - pos: -49.5,44.5 - parent: 1 - type: Transform - - uid: 13536 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,42.5 - parent: 1 - type: Transform - - uid: 13598 - components: - - rot: -1.5707963267948966 rad - pos: -63.5,28.5 - parent: 1 - type: Transform - - uid: 13599 - components: - - rot: 3.141592653589793 rad - pos: -73.5,19.5 - parent: 1 - type: Transform - - uid: 15039 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,-11.5 - parent: 1 - type: Transform - - uid: 15170 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,50.5 - parent: 1 - type: Transform -- proto: DisposalUnit - entities: - - uid: 249 - components: - - pos: -5.5,2.5 - parent: 1 - type: Transform - - uid: 337 - components: - - pos: -18.5,-1.5 - parent: 1 - type: Transform - - uid: 1090 - components: - - pos: 11.5,-3.5 - parent: 1 - type: Transform - - uid: 1091 - components: - - pos: 5.5,3.5 - parent: 1 - type: Transform - - uid: 1155 - components: - - pos: 4.5,14.5 - parent: 1 - type: Transform - - uid: 1944 - components: - - pos: 0.5,22.5 - parent: 1 - type: Transform - - uid: 2033 - components: - - pos: 5.5,30.5 - parent: 1 - type: Transform - - uid: 2118 - components: - - pos: -3.5,29.5 - parent: 1 - type: Transform - - uid: 2136 - components: - - pos: 28.5,5.5 - parent: 1 - type: Transform - - uid: 2137 - components: - - pos: 23.5,4.5 - parent: 1 - type: Transform - - uid: 2351 - components: - - pos: 11.5,14.5 - parent: 1 - type: Transform - - uid: 3653 - components: - - pos: -41.5,-6.5 - parent: 1 - type: Transform - - uid: 3654 - components: - - pos: -46.5,-1.5 - parent: 1 - type: Transform - - uid: 4166 - components: - - pos: -20.5,7.5 - parent: 1 - type: Transform - - uid: 4168 - components: - - pos: -35.5,7.5 - parent: 1 - type: Transform - - uid: 5264 - components: - - pos: -55.5,16.5 - parent: 1 - type: Transform - - uid: 5525 - components: - - pos: -56.5,-10.5 - parent: 1 - type: Transform - - uid: 5526 - components: - - pos: -49.5,3.5 - parent: 1 - type: Transform - - uid: 5527 - components: - - pos: -39.5,20.5 - parent: 1 - type: Transform - - uid: 5528 - components: - - pos: -45.5,30.5 - parent: 1 - type: Transform - - uid: 5529 - components: - - pos: -10.5,30.5 - parent: 1 - type: Transform - - uid: 5531 - components: - - pos: -26.5,29.5 - parent: 1 - type: Transform - - uid: 6936 - components: - - pos: -38.5,42.5 - parent: 1 - type: Transform - - uid: 6937 - components: - - pos: -44.5,39.5 - parent: 1 - type: Transform - - uid: 6938 - components: - - pos: -44.5,47.5 - parent: 1 - type: Transform - - uid: 7091 - components: - - pos: -49.5,44.5 - parent: 1 - type: Transform - - uid: 7092 - components: - - pos: -55.5,37.5 - parent: 1 - type: Transform - - uid: 7559 - components: - - pos: -19.5,42.5 - parent: 1 - type: Transform - - uid: 7977 - components: - - pos: -51.5,58.5 - parent: 1 - type: Transform - - uid: 8652 - components: - - pos: -51.5,65.5 - parent: 1 - type: Transform - - uid: 11053 - components: - - pos: -73.5,19.5 - parent: 1 - type: Transform - - uid: 11054 - components: - - pos: -63.5,28.5 - parent: 1 - type: Transform - - uid: 13501 - components: - - pos: -20.5,59.5 - parent: 1 - type: Transform - - uid: 13502 - components: - - pos: -12.5,57.5 - parent: 1 - type: Transform - - uid: 15019 - components: - - pos: 14.5,-11.5 - parent: 1 - type: Transform - - uid: 15172 - components: - - pos: 16.5,50.5 - parent: 1 - type: Transform -- proto: DisposalYJunction - entities: - - uid: 13500 - components: - - pos: -16.5,55.5 - parent: 1 - type: Transform - - uid: 13591 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,32.5 - parent: 1 - type: Transform -- proto: DogBed - entities: - - uid: 7574 - components: - - pos: -22.5,37.5 - parent: 1 - type: Transform - - uid: 10906 - components: - - pos: -9.5,59.5 - parent: 1 - type: Transform -- proto: DonkpocketBoxSpawner - entities: - - uid: 4730 - components: - - pos: -27.5,52.5 - parent: 1 - type: Transform -- proto: DoorElectronics - entities: - - uid: 5536 - components: - - pos: -47.419823,29.691675 - parent: 1 - type: Transform - - uid: 5537 - components: - - pos: -47.560448,29.48855 - parent: 1 - type: Transform - - uid: 5538 - components: - - pos: -47.451073,29.30105 - parent: 1 - type: Transform -- proto: Dresser - entities: - - uid: 10902 - components: - - pos: -5.5,61.5 - parent: 1 - type: Transform -- proto: DrinkBottleBeer - entities: - - uid: 9735 - components: - - pos: -27.588842,35.58307 - parent: 1 - type: Transform - - uid: 9737 - components: - - pos: -27.416967,35.64557 - parent: 1 - type: Transform - - uid: 9738 - components: - - pos: -27.229467,35.567444 - parent: 1 - type: Transform -- proto: DrinkBottleWhiskey - entities: - - uid: 14287 - components: - - pos: -72.49934,47.622665 - parent: 1 - type: Transform -- proto: DrinkChangelingStingCan - entities: - - uid: 5804 - components: - - pos: -9.689642,21.037588 - parent: 1 - type: Transform -- proto: DrinkCreamCarton - entities: - - uid: 5275 - components: - - pos: -53.020008,21.71115 - parent: 1 - type: Transform -- proto: DrinkGlass - entities: - - uid: 5271 - components: - - pos: -53.816883,21.552088 - parent: 1 - type: Transform - - uid: 5272 - components: - - pos: -53.645008,21.708338 - parent: 1 - type: Transform - - uid: 5273 - components: - - pos: -53.488758,21.552088 - parent: 1 - type: Transform - - uid: 15222 - components: - - pos: 17.303202,52.65593 - parent: 1 - type: Transform - - uid: 15223 - components: - - pos: 17.678202,52.59343 - parent: 1 - type: Transform -- proto: DrinkGoldenCup - entities: - - uid: 2307 - components: - - pos: -23.533527,57.548485 - parent: 1 - type: Transform -- proto: DrinkGoldschlagerBottleFull - entities: - - uid: 2311 - components: - - pos: -23.517902,54.40786 - parent: 1 - type: Transform -- proto: DrinkGreenTea - entities: - - uid: 4546 - components: - - pos: -49.110718,9.835719 - parent: 1 - type: Transform - - uid: 4549 - components: - - pos: -49.160065,9.422353 - parent: 1 - type: Transform - - uid: 5344 - components: - - pos: -49.821003,9.391103 - parent: 1 - type: Transform - - uid: 6153 - components: - - pos: -49.876343,9.820094 - parent: 1 - type: Transform -- proto: DrinkHotCoffee - entities: - - uid: 4562 - components: - - pos: 23.475533,38.452827 - parent: 1 - type: Transform - - uid: 15084 - components: - - pos: -15.376344,24.974894 - parent: 1 - type: Transform - - uid: 15101 - components: - - pos: -15.688844,24.678019 - parent: 1 - type: Transform -- proto: DrinkMilkCarton - entities: - - uid: 6957 - components: - - pos: -35.398277,47.715622 - parent: 1 - type: Transform - - uid: 6958 - components: - - pos: -32.460777,42.668747 - parent: 1 - type: Transform -- proto: DrinkMugBlack - entities: - - uid: 269 - components: - - pos: -17.654377,-4.445471 - parent: 1 - type: Transform - - uid: 7964 - components: - - pos: -54.71723,64.74812 - parent: 1 - type: Transform -- proto: DrinkMugBlue - entities: - - uid: 7948 - components: - - pos: -54.232857,64.76375 - parent: 1 - type: Transform -- proto: DrinkMugHeart - entities: - - uid: 1489 - components: - - pos: 23.29282,42.502815 - parent: 1 - type: Transform -- proto: DrinkMugMetal - entities: - - uid: 7949 - components: - - pos: -47.25018,59.484123 - parent: 1 - type: Transform -- proto: DrinkMugOne - entities: - - uid: 270 - components: - - pos: -17.310627,-4.257971 - parent: 1 - type: Transform - - uid: 14941 - components: - - pos: -54.474243,-12.528257 - parent: 1 - type: Transform -- proto: DrinkMugRed - entities: - - uid: 9936 - components: - - pos: -54.27973,64.43562 - parent: 1 - type: Transform - - uid: 15102 - components: - - pos: -15.313844,24.521769 - parent: 1 - type: Transform -- proto: DrinkTeacup - entities: - - uid: 2999 - components: - - pos: 24.668903,14.540461 - parent: 1 - type: Transform - - uid: 3000 - components: - - pos: 24.262653,14.759211 - parent: 1 - type: Transform -- proto: DrinkWaterJug - entities: - - uid: 577 - components: - - pos: 19.083464,-11.315445 - parent: 1 - type: Transform -- proto: DrinkWhiskeyBottleFull - entities: - - uid: 7935 - components: - - pos: -58.33147,64.88806 - parent: 1 - type: Transform - - uid: 10977 - components: - - pos: -70.71854,40.09562 - parent: 1 - type: Transform - - uid: 14211 - components: - - pos: -72.32807,15.938257 - parent: 1 - type: Transform - - uid: 14284 - components: - - pos: -72.70246,47.903915 - parent: 1 - type: Transform -- proto: DrinkWhiskeyColaGlass - entities: - - uid: 7936 - components: - - pos: -58.70647,64.85681 - parent: 1 - type: Transform -- proto: DrinkWhiskeyGlass - entities: - - uid: 10975 - components: - - pos: -72.39041,41.78312 - parent: 1 - type: Transform - - uid: 10976 - components: - - pos: -70.37479,39.56437 - parent: 1 - type: Transform - - uid: 14212 - components: - - pos: -72.81245,15.797632 - parent: 1 - type: Transform - - uid: 14285 - components: - - pos: -72.34309,47.685165 - parent: 1 - type: Transform -- proto: DrinkWineBottleFull - entities: - - uid: 1815 - components: - - pos: 16.737038,3.7859516 - parent: 1 - type: Transform -- proto: DrinkWineGlass - entities: - - uid: 1814 - components: - - pos: 16.440163,3.6297016 - parent: 1 - type: Transform - - uid: 6338 - components: - - pos: 2.5328588,49.783806 - parent: 1 - type: Transform -- proto: Dropper - entities: - - uid: 1953 - components: - - pos: -4.4894724,20.885618 - parent: 1 - type: Transform - - uid: 1954 - components: - - pos: -4.4894724,20.666868 - parent: 1 - type: Transform - - uid: 1955 - components: - - pos: -4.4894724,20.463743 - parent: 1 - type: Transform -- proto: ElectricGuitarInstrument - entities: - - uid: 4138 - components: - - pos: -22.497261,24.539072 - parent: 1 - type: Transform -- proto: EmergencyLight - entities: - - uid: 2592 - components: - - rot: 1.5707963267948966 rad - pos: 25.5,26.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 3665 - components: - - rot: 3.141592653589793 rad - pos: -44.5,-13.5 - parent: 1 - type: Transform - - uid: 4600 - components: - - pos: -48.5,6.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 4890 - components: - - rot: 3.141592653589793 rad - pos: -71.5,-11.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 11062 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,-3.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14864 - components: - - rot: -1.5707963267948966 rad - pos: -77.5,42.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14865 - components: - - rot: 3.141592653589793 rad - pos: -80.5,29.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14866 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,29.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14867 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,29.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14868 - components: - - rot: 3.141592653589793 rad - pos: -59.5,31.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14869 - components: - - rot: -1.5707963267948966 rad - pos: -79.5,23.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14870 - components: - - pos: -68.5,23.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14871 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,42.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14872 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,40.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14873 - components: - - rot: 3.141592653589793 rad - pos: -50.5,31.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14874 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,22.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14875 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,8.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14876 - components: - - pos: -68.5,6.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14879 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,3.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14880 - components: - - pos: -35.5,-5.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14882 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,15.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14883 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,26.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14884 - components: - - pos: -33.5,33.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14885 - components: - - rot: 3.141592653589793 rad - pos: -39.5,35.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14886 - components: - - pos: -35.5,47.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14887 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,45.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14888 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,52.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14889 - components: - - rot: 1.5707963267948966 rad - pos: -22.5,40.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14890 - components: - - pos: -20.5,48.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14891 - components: - - rot: 3.141592653589793 rad - pos: -20.5,31.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14892 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,27.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14893 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,40.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14894 - components: - - pos: -11.5,49.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14895 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,56.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14896 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,55.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14897 - components: - - rot: 3.141592653589793 rad - pos: -18.5,62.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14898 - components: - - pos: -9.5,57.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14899 - components: - - rot: 3.141592653589793 rad - pos: -9.5,27.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14900 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,21.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14901 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,10.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14902 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,12.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14903 - components: - - pos: -25.5,18.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14904 - components: - - rot: 3.141592653589793 rad - pos: -19.5,4.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14905 - components: - - rot: 3.141592653589793 rad - pos: -2.5,4.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14906 - components: - - pos: 7.5,6.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14907 - components: - - rot: 3.141592653589793 rad - pos: 20.5,4.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14908 - components: - - rot: 1.5707963267948966 rad - pos: 25.5,9.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14909 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,19.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14910 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,13.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14911 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,1.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14912 - components: - - pos: -1.5,-1.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14913 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14914 - components: - - pos: -16.5,-1.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14915 - components: - - pos: -12.5,-10.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14916 - components: - - pos: 2.5,-8.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14917 - components: - - rot: -1.5707963267948966 rad - pos: -1.5,-11.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14954 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,55.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14955 - components: - - pos: -46.5,65.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14956 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,63.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14957 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,64.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14958 - components: - - rot: 3.141592653589793 rad - pos: -59.5,60.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14959 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,56.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14960 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,53.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14961 - components: - - pos: -52.5,47.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 14962 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,41.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 15309 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,23.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 15310 - components: - - pos: -1.5,34.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 15311 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,38.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 15312 - components: - - pos: 8.5,37.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 15313 - components: - - rot: 3.141592653589793 rad - pos: 9.5,28.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 15314 - components: - - rot: 3.141592653589793 rad - pos: 8.5,22.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 15315 - components: - - pos: 7.5,17.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight - - uid: 15316 - components: - - rot: 3.141592653589793 rad - pos: 1.5,14.5 - parent: 1 - type: Transform - - enabled: True - type: PointLight - - type: ActiveEmergencyLight -- proto: Emitter - entities: - - uid: 9982 - components: - - rot: 3.141592653589793 rad - pos: -78.5,18.5 - parent: 1 - type: Transform - - uid: 9983 - components: - - rot: 3.141592653589793 rad - pos: -77.5,18.5 - parent: 1 - type: Transform - - uid: 9984 - components: - - rot: 3.141592653589793 rad - pos: -76.5,18.5 - parent: 1 - type: Transform - - uid: 10609 - components: - - rot: -1.5707963267948966 rad - pos: -90.5,21.5 - parent: 1 - type: Transform - - uid: 10610 - components: - - rot: -1.5707963267948966 rad - pos: -90.5,29.5 - parent: 1 - type: Transform - - uid: 10611 - components: - - rot: 1.5707963267948966 rad - pos: -104.5,21.5 - parent: 1 - type: Transform - - uid: 10612 - components: - - rot: 3.141592653589793 rad - pos: -93.5,18.5 - parent: 1 - type: Transform - - uid: 10613 - components: - - rot: 3.141592653589793 rad - pos: -101.5,18.5 - parent: 1 - type: Transform - - uid: 10614 - components: - - rot: 1.5707963267948966 rad - pos: -104.5,29.5 - parent: 1 - type: Transform - - uid: 10615 - components: - - pos: -101.5,32.5 - parent: 1 - type: Transform - - uid: 10616 - components: - - pos: -93.5,32.5 - parent: 1 - type: Transform -- proto: EncryptionKeyCargo - entities: - - uid: 15348 - components: - - flags: InContainer - type: MetaData - - parent: 15347 - type: Transform - - canCollide: False - type: Physics - - uid: 15374 - components: - - flags: InContainer - type: MetaData - - parent: 15368 - type: Transform - - canCollide: False - type: Physics -- proto: EncryptionKeyCommand - entities: - - uid: 15337 - components: - - flags: InContainer - type: MetaData - - parent: 15336 - type: Transform - - canCollide: False - type: Physics - - uid: 15369 - components: - - flags: InContainer - type: MetaData - - parent: 15368 - type: Transform - - canCollide: False - type: Physics -- proto: EncryptionKeyCommon - entities: - - uid: 2591 - components: - - flags: InContainer - type: MetaData - - parent: 2590 - type: Transform - - canCollide: False - type: Physics - - uid: 15366 - components: - - pos: 27.658451,23.492924 - parent: 1 - type: Transform -- proto: EncryptionKeyEngineering - entities: - - uid: 15339 - components: - - flags: InContainer - type: MetaData - - parent: 15338 - type: Transform - - canCollide: False - type: Physics - - uid: 15371 - components: - - flags: InContainer - type: MetaData - - parent: 15368 - type: Transform - - canCollide: False - type: Physics -- proto: EncryptionKeyMedical - entities: - - uid: 15341 - components: - - flags: InContainer - type: MetaData - - parent: 15340 - type: Transform - - canCollide: False - type: Physics - - uid: 15372 - components: - - flags: InContainer - type: MetaData - - parent: 15368 - type: Transform - - canCollide: False - type: Physics -- proto: EncryptionKeyMedicalScience - entities: - - uid: 15342 - components: - - flags: InContainer - type: MetaData - - parent: 15340 - type: Transform - - canCollide: False - type: Physics - - uid: 15345 - components: - - flags: InContainer - type: MetaData - - parent: 15343 - type: Transform - - canCollide: False - type: Physics -- proto: EncryptionKeyRobo - entities: - - uid: 15346 - components: - - flags: InContainer - type: MetaData - - parent: 15343 - type: Transform - - canCollide: False - type: Physics -- proto: EncryptionKeyScience - entities: - - uid: 15344 - components: - - flags: InContainer - type: MetaData - - parent: 15343 - type: Transform - - canCollide: False - type: Physics - - uid: 15373 - components: - - flags: InContainer - type: MetaData - - parent: 15368 - type: Transform - - canCollide: False - type: Physics -- proto: EncryptionKeySecurity - entities: - - uid: 983 - components: - - flags: InContainer - type: MetaData - - parent: 982 - type: Transform - - canCollide: False - type: Physics - - uid: 15370 - components: - - flags: InContainer - type: MetaData - - parent: 15368 - type: Transform - - canCollide: False - type: Physics -- proto: EncryptionKeyService - entities: - - uid: 1027 - components: - - flags: InContainer - type: MetaData - - parent: 1026 - type: Transform - - canCollide: False - type: Physics - - uid: 15367 - components: - - pos: 27.345951,23.492924 - parent: 1 - type: Transform -- proto: Error - entities: - - uid: 3615 - components: - - pos: -28.521805,-11.50697 - parent: 1 - type: Transform -- proto: EuphoniumInstrument - entities: - - uid: 6336 - components: - - pos: 14.586781,52.45568 - parent: 1 - type: Transform -- proto: ExosuitFabricator - entities: - - uid: 240 - components: - - pos: 2.5,-0.5 - parent: 1 - type: Transform -- proto: ExtinguisherCabinet - entities: - - uid: 2843 - components: - - pos: -18.5,30.5 - parent: 1 - type: Transform - - uid: 3971 - components: - - rot: 3.141592653589793 rad - pos: -69.5,7.5 - parent: 1 - type: Transform - - uid: 4746 - components: - - rot: 3.141592653589793 rad - pos: -67.5,-12.5 - parent: 1 - type: Transform - - uid: 12036 - components: - - pos: -46.5,-10.5 - parent: 1 - type: Transform - - uid: 12037 - components: - - pos: -35.5,-4.5 - parent: 1 - type: Transform - - uid: 12038 - components: - - pos: -55.5,9.5 - parent: 1 - type: Transform - - uid: 12220 - components: - - pos: -55.5,29.5 - parent: 1 - type: Transform - - uid: 13655 - components: - - pos: -39.5,47.5 - parent: 1 - type: Transform - - uid: 13682 - components: - - pos: -35.5,34.5 - parent: 1 - type: Transform - - uid: 13683 - components: - - pos: -26.5,44.5 - parent: 1 - type: Transform - - uid: 13684 - components: - - pos: -27.5,29.5 - parent: 1 - type: Transform - - uid: 13764 - components: - - pos: -39.5,22.5 - parent: 1 - type: Transform - - uid: 13792 - components: - - pos: -35.5,9.5 - parent: 1 - type: Transform - - uid: 13793 - components: - - pos: -55.5,-1.5 - parent: 1 - type: Transform - - uid: 13796 - components: - - pos: -26.5,-9.5 - parent: 1 - type: Transform - - uid: 13797 - components: - - pos: -19.5,-2.5 - parent: 1 - type: Transform - - uid: 13798 - components: - - pos: 6.5,-9.5 - parent: 1 - type: Transform - - uid: 13799 - components: - - pos: -18.5,-12.5 - parent: 1 - type: Transform - - uid: 13800 - components: - - pos: -7.5,-3.5 - parent: 1 - type: Transform - - uid: 13801 - components: - - pos: -14.5,11.5 - parent: 1 - type: Transform - - uid: 13802 - components: - - pos: -10.5,23.5 - parent: 1 - type: Transform - - uid: 13804 - components: - - pos: -25.5,14.5 - parent: 1 - type: Transform - - uid: 13805 - components: - - pos: -2.5,35.5 - parent: 1 - type: Transform - - uid: 13810 - components: - - pos: 29.5,17.5 - parent: 1 - type: Transform - - uid: 13811 - components: - - pos: 18.5,0.5 - parent: 1 - type: Transform - - uid: 13812 - components: - - pos: 3.5,3.5 - parent: 1 - type: Transform -- proto: ExtinguisherCabinetFilled - entities: - - uid: 15292 - components: - - pos: -2.5,18.5 - parent: 1 - type: Transform - - uid: 15293 - components: - - pos: 1.5,18.5 - parent: 1 - type: Transform - - uid: 15294 - components: - - pos: 5.5,15.5 - parent: 1 - type: Transform - - uid: 15295 - components: - - pos: 8.5,27.5 - parent: 1 - type: Transform - - uid: 15296 - components: - - pos: 5.5,36.5 - parent: 1 - type: Transform - - uid: 15297 - components: - - pos: -19.5,56.5 - parent: 1 - type: Transform - - uid: 15298 - components: - - pos: -18.5,61.5 - parent: 1 - type: Transform - - uid: 15299 - components: - - pos: -9.5,58.5 - parent: 1 - type: Transform - - uid: 15300 - components: - - pos: -60.5,56.5 - parent: 1 - type: Transform - - uid: 15301 - components: - - pos: -53.5,59.5 - parent: 1 - type: Transform - - uid: 15302 - components: - - pos: -45.5,55.5 - parent: 1 - type: Transform - - uid: 15304 - components: - - pos: -53.5,67.5 - parent: 1 - type: Transform - - uid: 15305 - components: - - pos: -57.5,63.5 - parent: 1 - type: Transform - - uid: 15306 - components: - - pos: -56.5,88.5 - parent: 1 - type: Transform - - uid: 15307 - components: - - pos: -62.5,82.5 - parent: 1 - type: Transform - - uid: 15308 - components: - - pos: -49.5,82.5 - parent: 1 - type: Transform - - uid: 15317 - components: - - rot: 1.5707963267948966 rad - pos: -75.5,19.5 - parent: 1 - type: Transform - - uid: 15318 - components: - - rot: 1.5707963267948966 rad - pos: -83.5,22.5 - parent: 1 - type: Transform - - uid: 15319 - components: - - rot: 1.5707963267948966 rad - pos: -75.5,31.5 - parent: 1 - type: Transform - - uid: 15320 - components: - - rot: 1.5707963267948966 rad - pos: -76.5,42.5 - parent: 1 - type: Transform - - uid: 15321 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,29.5 - parent: 1 - type: Transform - - uid: 15322 - components: - - rot: 1.5707963267948966 rad - pos: -66.5,18.5 - parent: 1 - type: Transform - - uid: 15323 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,46.5 - parent: 1 - type: Transform - - uid: 15324 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,38.5 - parent: 1 - type: Transform - - uid: 15325 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,48.5 - parent: 1 - type: Transform - - uid: 15326 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,38.5 - parent: 1 - type: Transform -- proto: FaxMachineBase - entities: - - uid: 303 - components: - - pos: -0.5,-3.5 - parent: 1 - type: Transform - - name: Science - type: FaxMachine - - uid: 586 - components: - - pos: -1.5,1.5 - parent: 1 - type: Transform - - name: RD Office - type: FaxMachine - - uid: 2320 - components: - - pos: 10.5,25.5 - parent: 1 - type: Transform - - name: Medical - type: FaxMachine - - uid: 3745 - components: - - pos: -46.5,2.5 - parent: 1 - type: Transform - - name: Cargo - type: FaxMachine - - uid: 5809 - components: - - pos: -28.5,13.5 - parent: 1 - type: Transform - - name: Library - type: FaxMachine - - uid: 7545 - components: - - pos: -19.5,48.5 - parent: 1 - type: Transform - - name: HoP Office - type: FaxMachine - - uid: 7989 - components: - - pos: -55.5,58.5 - parent: 1 - type: Transform - - name: Security - type: FaxMachine - - uid: 10803 - components: - - pos: -36.5,37.5 - parent: 1 - type: Transform - - name: Bar - type: FaxMachine - - uid: 10901 - components: - - pos: -10.5,55.5 - parent: 1 - type: Transform - - name: Bridge - type: FaxMachine - - uid: 13602 - components: - - pos: -64.5,25.5 - parent: 1 - type: Transform - - name: Engineering - type: FaxMachine -- proto: FaxMachineCaptain - entities: - - uid: 10900 - components: - - pos: -6.5,61.5 - parent: 1 - type: Transform -- proto: FigureSpawner - entities: - - uid: 3516 - components: - - pos: -19.5,-10.5 - parent: 1 - type: Transform - - uid: 5546 - components: - - pos: -52.5,27.5 - parent: 1 - type: Transform -- proto: filingCabinetDrawer - entities: - - uid: 5509 - components: - - pos: -43.5,0.5 - parent: 1 - type: Transform - - uid: 7397 - components: - - pos: 11.5,52.5 - parent: 1 - type: Transform -- proto: filingCabinetTall - entities: - - uid: 5507 - components: - - pos: -52.5,-0.5 - parent: 1 - type: Transform - - uid: 7541 - components: - - pos: -22.5,44.5 - parent: 1 - type: Transform -- proto: FireAlarm - entities: - - uid: 318 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,0.5 - parent: 1 - type: Transform - - devices: - - 1749 - - 1741 - - 1747 - - 1750 - - 14970 - type: DeviceList - - uid: 4747 - components: - - rot: 3.141592653589793 rad - pos: -63.5,-12.5 - parent: 1 - type: Transform - - devices: - - 4912 - - 4913 - - 4126 - type: DeviceList - - uid: 8961 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,58.5 - parent: 1 - type: Transform - - devices: - - 8573 - - 8574 - - 8578 - - 8576 - - 8575 - type: DeviceList - - uid: 8963 - components: - - pos: -48.5,66.5 - parent: 1 - type: Transform - - devices: - - 8579 - - 8580 - - 8581 - - 5726 - - 5723 - - 8543 - - 8542 - - 8544 - - 8545 - - 8849 - - 8844 - - 8848 - - 8843 - - 8758 - - 8845 - - 8842 - - 8846 - - 8760 - - 8847 - - 8759 - type: DeviceList - - uid: 8964 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,87.5 - parent: 1 - type: Transform - - devices: - - 5742 - - 5579 - - 5501 - - 5496 - type: DeviceList - - uid: 8966 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,87.5 - parent: 1 - type: Transform - - devices: - - 5742 - - 5579 - - 5501 - - 5496 - type: DeviceList - - uid: 10691 - components: - - rot: 1.5707963267948966 rad - pos: -75.5,22.5 - parent: 1 - type: Transform - - devices: - - 14304 - - 14302 - - 10686 - - 10687 - - 14303 - - 10684 - - 10685 - - 10682 - - 10683 - type: DeviceList - - uid: 13041 - components: - - rot: 1.5707963267948966 rad - pos: -50.5,44.5 - parent: 1 - type: Transform - - devices: - - 7995 - - 7996 - - 7997 - - 8003 - - 8002 - - 8001 - - 8573 - - 8574 - type: DeviceList - - uid: 13046 - components: - - rot: 3.141592653589793 rad - pos: -46.5,30.5 - parent: 1 - type: Transform - - devices: - - 5240 - - 5241 - - 5242 - - 7995 - - 7996 - - 7997 - - 5233 - - 5232 - - 5231 - type: DeviceList - - uid: 13050 - components: - - pos: -67.5,7.5 - parent: 1 - type: Transform - - devices: - - 5213 - - 5214 - - 5215 - - 11812 - - 11813 - - 11811 - - 11814 - type: DeviceList - - uid: 13052 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,-4.5 - parent: 1 - type: Transform - - devices: - - 5216 - - 5217 - - 5218 - type: DeviceList - - uid: 13056 - components: - - pos: -39.5,7.5 - parent: 1 - type: Transform - - devices: - - 4112 - - 4111 - - 4110 - - 4114 - - 4115 - - 4116 - - 4109 - - 4108 - - 4107 - type: DeviceList - - uid: 13059 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,-1.5 - parent: 1 - type: Transform - - devices: - - 3718 - - 3719 - - 3720 - - 3721 - - 3722 - - 3723 - - 3724 - - 3717 - - 3716 - - 3726 - type: DeviceList - - uid: 13060 - components: - - pos: -22.5,7.5 - parent: 1 - type: Transform - - devices: - - 1766 - - 1765 - - 1764 - - 4107 - - 4108 - - 4109 - type: DeviceList - - uid: 13062 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,17.5 - parent: 1 - type: Transform - - devices: - - 4114 - - 4115 - - 4116 - - 4117 - - 4118 - - 4119 - - 4120 - - 4121 - - 4122 - - 4123 - - 5227 - - 5226 - - 5225 - type: DeviceList - - uid: 13064 - components: - - pos: -39.5,40.5 - parent: 1 - type: Transform - - devices: - - 5233 - - 5232 - - 5231 - - 5225 - - 5226 - - 5227 - - 5228 - - 5229 - - 5230 - - 9786 - - 9787 - - 9788 - - 9789 - - 9784 - - 9785 - type: DeviceList - - uid: 13066 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,44.5 - parent: 1 - type: Transform - - devices: - - 9784 - - 9785 - - 9790 - - 9791 - - 9792 - - 9793 - type: DeviceList - - uid: 13068 - components: - - pos: -28.5,34.5 - parent: 1 - type: Transform - - devices: - - 5228 - - 5229 - - 5230 - - 5234 - - 5235 - - 5236 - type: DeviceList - - uid: 13070 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,41.5 - parent: 1 - type: Transform - - devices: - - 9790 - - 9791 - - 9793 - - 9792 - type: DeviceList - - uid: 13072 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,41.5 - parent: 1 - type: Transform - - devices: - - 5237 - - 5238 - - 5239 - type: DeviceList - - uid: 13075 - components: - - pos: -21.5,43.5 - parent: 1 - type: Transform - - devices: - - 9819 - type: DeviceList - - uid: 13078 - components: - - pos: -11.5,34.5 - parent: 1 - type: Transform - - devices: - - 5237 - - 5238 - - 5239 - - 12259 - - 12255 - - 12256 - - 12260 - - 12273 - - 12272 - - 3064 - - 3122 - - 2814 - - 2881 - - 3175 - - 3176 - - 3177 - - 2866 - - 2865 - type: DeviceList - - uid: 13080 - components: - - pos: -14.5,58.5 - parent: 1 - type: Transform - - devices: - - 6496 - - 6497 - - 9808 - - 6498 - - 6499 - - 6500 - - 6501 - - 6502 - - 6503 - - 6504 - type: DeviceList - - uid: 13097 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,18.5 - parent: 1 - type: Transform - - devices: - - 1763 - - 1762 - - 1761 - - 3177 - - 3176 - - 3175 - type: DeviceList - - uid: 13098 - components: - - pos: -2.5,7.5 - parent: 1 - type: Transform - - devices: - - 1758 - - 1759 - - 1760 - - 1768 - - 1767 - - 1753 - - 1752 - type: DeviceList - - uid: 13101 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,-1.5 - parent: 1 - type: Transform - - devices: - - 1752 - - 1753 - type: DeviceList - - uid: 13102 - components: - - pos: 20.5,7.5 - parent: 1 - type: Transform - - devices: - - 1767 - - 1768 - - 1755 - - 1754 - type: DeviceList - - uid: 13104 - components: - - rot: 3.141592653589793 rad - pos: 27.5,4.5 - parent: 1 - type: Transform - - devices: - - 1755 - - 1754 - type: DeviceList - - uid: 13300 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,34.5 - parent: 1 - type: Transform - - devices: - - 2055 - - 2868 - - 2867 - - 2869 - - 13306 - - 13305 - - 2052 - - 2051 - - 13309 - - 13308 - - 13307 - - 2053 - - 2054 - - 15082 - - 15083 - type: DeviceList - - uid: 13303 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,21.5 - parent: 1 - type: Transform - - devices: - - 13301 - - 13302 - - 2051 - - 2052 - - 2880 - - 2878 - - 2879 - - 2869 - - 2870 - - 13307 - - 13308 - - 13309 - - 15079 - - 15080 - - 15081 - type: DeviceList - - uid: 14298 - components: - - rot: -1.5707963267948966 rad - pos: -76.5,37.5 - parent: 1 - type: Transform - - devices: - - 10676 - - 10675 - - 10674 - - 10673 - - 10672 - - 10671 - - 10670 - - 10669 - - 10668 - - 10667 - - 10666 - type: DeviceList - - uid: 14299 - components: - - rot: -1.5707963267948966 rad - pos: -72.5,31.5 - parent: 1 - type: Transform - - devices: - - 10685 - - 10684 - - 10688 - - 10689 - type: DeviceList - - uid: 14305 - components: - - rot: -1.5707963267948966 rad - pos: -72.5,25.5 - parent: 1 - type: Transform - - devices: - - 14303 - - 10686 - - 10687 - - 10684 - - 10685 - type: DeviceList - - uid: 14306 - components: - - pos: -80.5,28.5 - parent: 1 - type: Transform - - devices: - - 14303 - - 10683 - - 10682 - type: DeviceList -- proto: FireAxeCabinet - entities: - - uid: 1667 - components: - - pos: 14.5,-6.5 - parent: 1 - type: Transform -- proto: FireAxeCabinetFilled - entities: - - uid: 13766 - components: - - pos: -10.5,58.5 - parent: 1 - type: Transform - - uid: 15145 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,33.5 - parent: 1 - type: Transform -- proto: Firelock - entities: - - uid: 1742 - components: - - pos: 22.5,1.5 - parent: 1 - type: Transform - - uid: 1743 - components: - - pos: 23.5,1.5 - parent: 1 - type: Transform - - uid: 1744 - components: - - pos: 20.5,-5.5 - parent: 1 - type: Transform - - uid: 1745 - components: - - pos: 20.5,-4.5 - parent: 1 - type: Transform - - uid: 1746 - components: - - pos: 4.5,-3.5 - parent: 1 - type: Transform - - uid: 3491 - components: - - pos: -21.5,-5.5 - parent: 1 - type: Transform - - uid: 5423 - components: - - pos: -29.5,-3.5 - parent: 1 - type: Transform - - uid: 5433 - components: - - pos: -28.5,-3.5 - parent: 1 - type: Transform - - uid: 5460 - components: - - pos: -20.5,-5.5 - parent: 1 - type: Transform - - uid: 5464 - components: - - pos: -49.5,-10.5 - parent: 1 - type: Transform - - uid: 5465 - components: - - pos: -49.5,-9.5 - parent: 1 - type: Transform - - uid: 5596 - components: - - pos: -20.5,15.5 - parent: 1 - type: Transform - - uid: 5736 - components: - - pos: -21.5,20.5 - parent: 1 - type: Transform - - uid: 5751 - components: - - pos: -19.5,15.5 - parent: 1 - type: Transform - - uid: 7511 - components: - - pos: -32.5,51.5 - parent: 1 - type: Transform - - uid: 7570 - components: - - pos: 11.5,8.5 - parent: 1 - type: Transform - - uid: 8278 - components: - - pos: -30.5,14.5 - parent: 1 - type: Transform - - uid: 8992 - components: - - rot: 3.141592653589793 rad - pos: 20.5,35.5 - parent: 1 - type: Transform - - uid: 9002 - components: - - rot: 3.141592653589793 rad - pos: 20.5,34.5 - parent: 1 - type: Transform - - uid: 9802 - components: - - pos: -31.5,51.5 - parent: 1 - type: Transform - - uid: 9803 - components: - - pos: -25.5,42.5 - parent: 1 - type: Transform - - uid: 9804 - components: - - pos: -24.5,42.5 - parent: 1 - type: Transform - - uid: 9809 - components: - - pos: -5.5,46.5 - parent: 1 - type: Transform - - uid: 9810 - components: - - pos: -5.5,47.5 - parent: 1 - type: Transform - - uid: 9811 - components: - - pos: 12.5,40.5 - parent: 1 - type: Transform - - uid: 9812 - components: - - pos: 12.5,39.5 - parent: 1 - type: Transform - - uid: 9813 - components: - - pos: 14.5,44.5 - parent: 1 - type: Transform - - uid: 9814 - components: - - pos: 15.5,44.5 - parent: 1 - type: Transform - - uid: 9815 - components: - - pos: -3.5,38.5 - parent: 1 - type: Transform - - uid: 9816 - components: - - pos: -2.5,38.5 - parent: 1 - type: Transform - - uid: 9912 - components: - - pos: 16.5,37.5 - parent: 1 - type: Transform - - uid: 14189 - components: - - pos: -73.5,37.5 - parent: 1 - type: Transform - - uid: 14190 - components: - - pos: -64.5,47.5 - parent: 1 - type: Transform - - uid: 14191 - components: - - pos: -64.5,47.5 - parent: 1 - type: Transform - - uid: 14192 - components: - - pos: -64.5,48.5 - parent: 1 - type: Transform - - uid: 14193 - components: - - pos: -67.5,38.5 - parent: 1 - type: Transform - - uid: 14194 - components: - - pos: -66.5,38.5 - parent: 1 - type: Transform - - uid: 14195 - components: - - pos: -62.5,17.5 - parent: 1 - type: Transform - - uid: 14196 - components: - - pos: -62.5,16.5 - parent: 1 - type: Transform - - uid: 14965 - components: - - pos: 16.5,25.5 - parent: 1 - type: Transform - - uid: 14966 - components: - - pos: 16.5,26.5 - parent: 1 - type: Transform - - uid: 14968 - components: - - pos: 11.5,9.5 - parent: 1 - type: Transform - - uid: 14969 - components: - - pos: -1.5,12.5 - parent: 1 - type: Transform - - uid: 14975 - components: - - pos: -6.5,18.5 - parent: 1 - type: Transform - - uid: 15040 - components: - - rot: 3.141592653589793 rad - pos: 9.5,-5.5 - parent: 1 - type: Transform - - uid: 15063 - components: - - pos: -44.5,12.5 - parent: 1 - type: Transform - - uid: 15064 - components: - - pos: -50.5,16.5 - parent: 1 - type: Transform - - uid: 15065 - components: - - pos: -45.5,22.5 - parent: 1 - type: Transform - - uid: 15066 - components: - - pos: -44.5,22.5 - parent: 1 - type: Transform - - uid: 15069 - components: - - pos: -21.5,21.5 - parent: 1 - type: Transform - - uid: 15070 - components: - - pos: -20.5,22.5 - parent: 1 - type: Transform - - uid: 15071 - components: - - pos: -19.5,22.5 - parent: 1 - type: Transform - - uid: 15104 - components: - - pos: -23.5,50.5 - parent: 1 - type: Transform - - uid: 15105 - components: - - pos: -23.5,51.5 - parent: 1 - type: Transform - - uid: 15289 - components: - - pos: 22.5,20.5 - parent: 1 - type: Transform - - uid: 15290 - components: - - pos: 23.5,20.5 - parent: 1 - type: Transform - - uid: 15849 - components: - - pos: 16.5,38.5 - parent: 1 - type: Transform -- proto: FirelockEdge - entities: - - uid: 219 - components: - - pos: -5.5,-13.5 - parent: 1 - type: Transform - - uid: 285 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,-12.5 - parent: 1 - type: Transform - - uid: 1747 - components: - - pos: -1.5,-5.5 - parent: 1 - type: Transform - - uid: 1748 - components: - - pos: 28.5,-5.5 - parent: 1 - type: Transform - - uid: 1750 - components: - - pos: -16.5,-5.5 - parent: 1 - type: Transform - - uid: 2051 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,24.5 - parent: 1 - type: Transform - - uid: 2052 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,25.5 - parent: 1 - type: Transform - - uid: 2053 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,33.5 - parent: 1 - type: Transform - - uid: 2054 - components: - - rot: 3.141592653589793 rad - pos: 3.5,34.5 - parent: 1 - type: Transform - - uid: 2055 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,33.5 - parent: 1 - type: Transform - - uid: 2865 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,33.5 - parent: 1 - type: Transform - - uid: 2866 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,31.5 - parent: 1 - type: Transform - - uid: 2870 - components: - - pos: -3.5,19.5 - parent: 1 - type: Transform - - uid: 2881 - components: - - rot: 1.5707963267948966 rad - pos: -15.5,27.5 - parent: 1 - type: Transform - - uid: 3544 - components: - - rot: 3.141592653589793 rad - pos: -40.5,-9.5 - parent: 1 - type: Transform - - uid: 3554 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,-9.5 - parent: 1 - type: Transform - - uid: 3672 - components: - - rot: 3.141592653589793 rad - pos: -35.5,-8.5 - parent: 1 - type: Transform - - uid: 3674 - components: - - rot: 3.141592653589793 rad - pos: -34.5,-8.5 - parent: 1 - type: Transform - - uid: 3677 - components: - - rot: 3.141592653589793 rad - pos: -33.5,-8.5 - parent: 1 - type: Transform - - uid: 3740 - components: - - rot: 3.141592653589793 rad - pos: -32.5,-8.5 - parent: 1 - type: Transform - - uid: 3770 - components: - - rot: 3.141592653589793 rad - pos: -31.5,-8.5 - parent: 1 - type: Transform - - uid: 3970 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,-10.5 - parent: 1 - type: Transform - - uid: 4117 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,23.5 - parent: 1 - type: Transform - - uid: 4118 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,24.5 - parent: 1 - type: Transform - - uid: 4119 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,25.5 - parent: 1 - type: Transform - - uid: 4120 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,26.5 - parent: 1 - type: Transform - - uid: 4121 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,27.5 - parent: 1 - type: Transform - - uid: 4122 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,28.5 - parent: 1 - type: Transform - - uid: 4123 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,29.5 - parent: 1 - type: Transform - - uid: 5461 - components: - - rot: 3.141592653589793 rad - pos: -17.5,-10.5 - parent: 1 - type: Transform - - uid: 5496 - components: - - pos: -50.5,82.5 - parent: 1 - type: Transform - - uid: 5501 - components: - - pos: -52.5,82.5 - parent: 1 - type: Transform - - uid: 5579 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,83.5 - parent: 1 - type: Transform - - uid: 5723 - components: - - rot: 3.141592653589793 rad - pos: -52.5,65.5 - parent: 1 - type: Transform - - uid: 5726 - components: - - rot: 3.141592653589793 rad - pos: -50.5,65.5 - parent: 1 - type: Transform - - uid: 5742 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,89.5 - parent: 1 - type: Transform - - uid: 6496 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,54.5 - parent: 1 - type: Transform - - uid: 6497 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,55.5 - parent: 1 - type: Transform - - uid: 6498 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,59.5 - parent: 1 - type: Transform - - uid: 6499 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,60.5 - parent: 1 - type: Transform - - uid: 6500 - components: - - rot: 3.141592653589793 rad - pos: -15.5,61.5 - parent: 1 - type: Transform - - uid: 6501 - components: - - rot: 3.141592653589793 rad - pos: -16.5,61.5 - parent: 1 - type: Transform - - uid: 6502 - components: - - rot: 3.141592653589793 rad - pos: -17.5,61.5 - parent: 1 - type: Transform - - uid: 6503 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,60.5 - parent: 1 - type: Transform - - uid: 6504 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,59.5 - parent: 1 - type: Transform - - uid: 6505 - components: - - rot: 3.141592653589793 rad - pos: -17.5,57.5 - parent: 1 - type: Transform - - uid: 6506 - components: - - rot: 3.141592653589793 rad - pos: -15.5,57.5 - parent: 1 - type: Transform - - uid: 8544 - components: - - rot: 3.141592653589793 rad - pos: -52.5,58.5 - parent: 1 - type: Transform - - uid: 8545 - components: - - rot: 3.141592653589793 rad - pos: -50.5,58.5 - parent: 1 - type: Transform - - uid: 8573 - components: - - rot: 3.141592653589793 rad - pos: -48.5,51.5 - parent: 1 - type: Transform - - uid: 8574 - components: - - rot: 3.141592653589793 rad - pos: -46.5,51.5 - parent: 1 - type: Transform - - uid: 8575 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,53.5 - parent: 1 - type: Transform - - uid: 8576 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,55.5 - parent: 1 - type: Transform - - uid: 9784 - components: - - pos: -36.5,41.5 - parent: 1 - type: Transform - - uid: 9785 - components: - - pos: -35.5,41.5 - parent: 1 - type: Transform - - uid: 9786 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,38.5 - parent: 1 - type: Transform - - uid: 9787 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,37.5 - parent: 1 - type: Transform - - uid: 9788 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,36.5 - parent: 1 - type: Transform - - uid: 9789 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,35.5 - parent: 1 - type: Transform - - uid: 9790 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,43.5 - parent: 1 - type: Transform - - uid: 9791 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,44.5 - parent: 1 - type: Transform - - uid: 9792 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,45.5 - parent: 1 - type: Transform - - uid: 9793 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,46.5 - parent: 1 - type: Transform - - uid: 9808 - components: - - rot: 3.141592653589793 rad - pos: -7.5,57.5 - parent: 1 - type: Transform - - uid: 9850 - components: - - rot: 1.5707963267948966 rad - pos: -50.5,36.5 - parent: 1 - type: Transform - - uid: 9851 - components: - - rot: 3.141592653589793 rad - pos: -31.5,55.5 - parent: 1 - type: Transform - - uid: 10666 - components: - - rot: 1.5707963267948966 rad - pos: -76.5,35.5 - parent: 1 - type: Transform - - uid: 10667 - components: - - rot: 1.5707963267948966 rad - pos: -76.5,34.5 - parent: 1 - type: Transform - - uid: 10668 - components: - - rot: 3.141592653589793 rad - pos: -76.5,33.5 - parent: 1 - type: Transform - - uid: 10669 - components: - - rot: 3.141592653589793 rad - pos: -77.5,33.5 - parent: 1 - type: Transform - - uid: 10670 - components: - - rot: 3.141592653589793 rad - pos: -78.5,33.5 - parent: 1 - type: Transform - - uid: 10671 - components: - - rot: 3.141592653589793 rad - pos: -79.5,33.5 - parent: 1 - type: Transform - - uid: 10672 - components: - - rot: 3.141592653589793 rad - pos: -80.5,33.5 - parent: 1 - type: Transform - - uid: 10673 - components: - - rot: 3.141592653589793 rad - pos: -81.5,33.5 - parent: 1 - type: Transform - - uid: 10674 - components: - - rot: 3.141592653589793 rad - pos: -82.5,33.5 - parent: 1 - type: Transform - - uid: 10675 - components: - - rot: 3.141592653589793 rad - pos: -83.5,33.5 - parent: 1 - type: Transform - - uid: 10676 - components: - - rot: 3.141592653589793 rad - pos: -84.5,33.5 - parent: 1 - type: Transform - - uid: 10682 - components: - - rot: 3.141592653589793 rad - pos: -84.5,27.5 - parent: 1 - type: Transform - - uid: 10683 - components: - - pos: -84.5,23.5 - parent: 1 - type: Transform - - uid: 10860 - components: - - rot: 1.5707963267948966 rad - pos: -15.5,51.5 - parent: 1 - type: Transform - - uid: 13301 - components: - - pos: 3.5,19.5 - parent: 1 - type: Transform - - uid: 13302 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,19.5 - parent: 1 - type: Transform - - uid: 13305 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,28.5 - parent: 1 - type: Transform - - uid: 13306 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,29.5 - parent: 1 - type: Transform - - uid: 14816 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,51.5 - parent: 1 - type: Transform - - uid: 14970 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,-5.5 - parent: 1 - type: Transform - - uid: 14974 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,-10.5 - parent: 1 - type: Transform - - uid: 15079 - components: - - rot: -1.5707963267948966 rad - pos: -1.5,16.5 - parent: 1 - type: Transform - - uid: 15080 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,15.5 - parent: 1 - type: Transform - - uid: 15081 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,22.5 - parent: 1 - type: Transform - - uid: 15082 - components: - - rot: 1.5707963267948966 rad - pos: 12.5,35.5 - parent: 1 - type: Transform - - uid: 15083 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,40.5 - parent: 1 - type: Transform -- proto: FirelockElectronics - entities: - - uid: 5541 - components: - - pos: -47.513573,27.566675 - parent: 1 - type: Transform - - uid: 5542 - components: - - pos: -47.372948,27.847925 - parent: 1 - type: Transform -- proto: FirelockGlass - entities: - - uid: 1741 - components: - - pos: -7.5,3.5 - parent: 1 - type: Transform - - uid: 1749 - components: - - pos: -10.5,1.5 - parent: 1 - type: Transform - - uid: 1752 - components: - - pos: 10.5,3.5 - parent: 1 - type: Transform - - uid: 1753 - components: - - pos: 11.5,3.5 - parent: 1 - type: Transform - - uid: 1754 - components: - - pos: 24.5,6.5 - parent: 1 - type: Transform - - uid: 1755 - components: - - pos: 24.5,5.5 - parent: 1 - type: Transform - - uid: 1758 - components: - - pos: -10.5,6.5 - parent: 1 - type: Transform - - uid: 1759 - components: - - pos: -10.5,5.5 - parent: 1 - type: Transform - - uid: 1760 - components: - - pos: -10.5,4.5 - parent: 1 - type: Transform - - uid: 1761 - components: - - pos: -11.5,7.5 - parent: 1 - type: Transform - - uid: 1762 - components: - - pos: -12.5,7.5 - parent: 1 - type: Transform - - uid: 1763 - components: - - pos: -13.5,7.5 - parent: 1 - type: Transform - - uid: 1764 - components: - - pos: -14.5,6.5 - parent: 1 - type: Transform - - uid: 1765 - components: - - pos: -14.5,5.5 - parent: 1 - type: Transform - - uid: 1766 - components: - - pos: -14.5,4.5 - parent: 1 - type: Transform - - uid: 1767 - components: - - pos: 12.5,6.5 - parent: 1 - type: Transform - - uid: 1768 - components: - - pos: 12.5,5.5 - parent: 1 - type: Transform - - uid: 2814 - components: - - pos: -14.5,33.5 - parent: 1 - type: Transform - - uid: 2867 - components: - - pos: 1.5,29.5 - parent: 1 - type: Transform - - uid: 2868 - components: - - pos: 1.5,30.5 - parent: 1 - type: Transform - - uid: 2869 - components: - - pos: -0.5,28.5 - parent: 1 - type: Transform - - uid: 2878 - components: - - pos: 1.5,25.5 - parent: 1 - type: Transform - - uid: 2879 - components: - - pos: 1.5,26.5 - parent: 1 - type: Transform - - uid: 2880 - components: - - pos: 1.5,23.5 - parent: 1 - type: Transform - - uid: 3064 - components: - - pos: -14.5,31.5 - parent: 1 - type: Transform - - uid: 3122 - components: - - pos: -14.5,32.5 - parent: 1 - type: Transform - - uid: 3175 - components: - - pos: -13.5,26.5 - parent: 1 - type: Transform - - uid: 3176 - components: - - pos: -12.5,26.5 - parent: 1 - type: Transform - - uid: 3177 - components: - - pos: -11.5,26.5 - parent: 1 - type: Transform - - uid: 3716 - components: - - pos: -41.5,-0.5 - parent: 1 - type: Transform - - uid: 3717 - components: - - pos: -40.5,-0.5 - parent: 1 - type: Transform - - uid: 3718 - components: - - pos: -39.5,0.5 - parent: 1 - type: Transform - - uid: 3719 - components: - - pos: -39.5,1.5 - parent: 1 - type: Transform - - uid: 3720 - components: - - pos: -38.5,2.5 - parent: 1 - type: Transform - - uid: 3721 - components: - - pos: -37.5,2.5 - parent: 1 - type: Transform - - uid: 3722 - components: - - pos: -36.5,2.5 - parent: 1 - type: Transform - - uid: 3723 - components: - - pos: -35.5,1.5 - parent: 1 - type: Transform - - uid: 3724 - components: - - pos: -35.5,0.5 - parent: 1 - type: Transform - - uid: 3725 - components: - - pos: -32.5,-0.5 - parent: 1 - type: Transform - - uid: 3726 - components: - - pos: -35.5,-2.5 - parent: 1 - type: Transform - - uid: 4107 - components: - - pos: -30.5,4.5 - parent: 1 - type: Transform - - uid: 4108 - components: - - pos: -30.5,5.5 - parent: 1 - type: Transform - - uid: 4109 - components: - - pos: -30.5,6.5 - parent: 1 - type: Transform - - uid: 4110 - components: - - pos: -42.5,4.5 - parent: 1 - type: Transform - - uid: 4111 - components: - - pos: -42.5,5.5 - parent: 1 - type: Transform - - uid: 4112 - components: - - pos: -42.5,6.5 - parent: 1 - type: Transform - - uid: 4114 - components: - - pos: -38.5,8.5 - parent: 1 - type: Transform - - uid: 4115 - components: - - pos: -37.5,8.5 - parent: 1 - type: Transform - - uid: 4116 - components: - - pos: -36.5,8.5 - parent: 1 - type: Transform - - uid: 4126 - components: - - pos: -59.5,-11.5 - parent: 1 - type: Transform - - uid: 4912 - components: - - pos: -59.5,-9.5 - parent: 1 - type: Transform - - uid: 4913 - components: - - pos: -59.5,-10.5 - parent: 1 - type: Transform - - uid: 5210 - components: - - pos: -55.5,4.5 - parent: 1 - type: Transform - - uid: 5211 - components: - - pos: -55.5,5.5 - parent: 1 - type: Transform - - uid: 5212 - components: - - pos: -55.5,6.5 - parent: 1 - type: Transform - - uid: 5213 - components: - - pos: -59.5,6.5 - parent: 1 - type: Transform - - uid: 5214 - components: - - pos: -59.5,5.5 - parent: 1 - type: Transform - - uid: 5215 - components: - - pos: -59.5,4.5 - parent: 1 - type: Transform - - uid: 5216 - components: - - pos: -58.5,3.5 - parent: 1 - type: Transform - - uid: 5217 - components: - - pos: -57.5,3.5 - parent: 1 - type: Transform - - uid: 5218 - components: - - pos: -56.5,3.5 - parent: 1 - type: Transform - - uid: 5219 - components: - - pos: -58.5,7.5 - parent: 1 - type: Transform - - uid: 5220 - components: - - pos: -57.5,7.5 - parent: 1 - type: Transform - - uid: 5221 - components: - - pos: -56.5,7.5 - parent: 1 - type: Transform - - uid: 5225 - components: - - pos: -38.5,30.5 - parent: 1 - type: Transform - - uid: 5226 - components: - - pos: -37.5,30.5 - parent: 1 - type: Transform - - uid: 5227 - components: - - pos: -36.5,30.5 - parent: 1 - type: Transform - - uid: 5228 - components: - - pos: -35.5,31.5 - parent: 1 - type: Transform - - uid: 5229 - components: - - pos: -35.5,32.5 - parent: 1 - type: Transform - - uid: 5230 - components: - - pos: -35.5,33.5 - parent: 1 - type: Transform - - uid: 5231 - components: - - pos: -39.5,31.5 - parent: 1 - type: Transform - - uid: 5232 - components: - - pos: -39.5,32.5 - parent: 1 - type: Transform - - uid: 5233 - components: - - pos: -39.5,33.5 - parent: 1 - type: Transform - - uid: 5234 - components: - - pos: -18.5,31.5 - parent: 1 - type: Transform - - uid: 5235 - components: - - pos: -18.5,32.5 - parent: 1 - type: Transform - - uid: 5236 - components: - - pos: -18.5,33.5 - parent: 1 - type: Transform - - uid: 5237 - components: - - pos: -17.5,34.5 - parent: 1 - type: Transform - - uid: 5238 - components: - - pos: -16.5,34.5 - parent: 1 - type: Transform - - uid: 5239 - components: - - pos: -15.5,34.5 - parent: 1 - type: Transform - - uid: 5240 - components: - - pos: -55.5,31.5 - parent: 1 - type: Transform - - uid: 5241 - components: - - pos: -55.5,32.5 - parent: 1 - type: Transform - - uid: 5242 - components: - - pos: -55.5,33.5 - parent: 1 - type: Transform - - uid: 5243 - components: - - pos: -56.5,30.5 - parent: 1 - type: Transform - - uid: 5244 - components: - - pos: -57.5,30.5 - parent: 1 - type: Transform - - uid: 5245 - components: - - pos: -58.5,30.5 - parent: 1 - type: Transform - - uid: 7995 - components: - - pos: -48.5,34.5 - parent: 1 - type: Transform - - uid: 7996 - components: - - pos: -47.5,34.5 - parent: 1 - type: Transform - - uid: 7997 - components: - - pos: -46.5,34.5 - parent: 1 - type: Transform - - uid: 8001 - components: - - pos: -58.5,34.5 - parent: 1 - type: Transform - - uid: 8002 - components: - - pos: -57.5,34.5 - parent: 1 - type: Transform - - uid: 8003 - components: - - pos: -56.5,34.5 - parent: 1 - type: Transform - - uid: 8542 - components: - - pos: -53.5,61.5 - parent: 1 - type: Transform - - uid: 8543 - components: - - pos: -53.5,60.5 - parent: 1 - type: Transform - - uid: 8578 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,56.5 - parent: 1 - type: Transform - - uid: 8579 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,63.5 - parent: 1 - type: Transform - - uid: 8580 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,64.5 - parent: 1 - type: Transform - - uid: 8581 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,65.5 - parent: 1 - type: Transform - - uid: 9819 - components: - - pos: -19.5,36.5 - parent: 1 - type: Transform - - uid: 10684 - components: - - pos: -74.5,27.5 - parent: 1 - type: Transform - - uid: 10685 - components: - - pos: -73.5,27.5 - parent: 1 - type: Transform - - uid: 10686 - components: - - pos: -74.5,23.5 - parent: 1 - type: Transform - - uid: 10687 - components: - - pos: -73.5,23.5 - parent: 1 - type: Transform - - uid: 10688 - components: - - pos: -65.5,33.5 - parent: 1 - type: Transform - - uid: 10689 - components: - - pos: -65.5,34.5 - parent: 1 - type: Transform - - uid: 13307 - components: - - pos: 2.5,27.5 - parent: 1 - type: Transform - - uid: 13308 - components: - - pos: 3.5,27.5 - parent: 1 - type: Transform - - uid: 13309 - components: - - pos: 4.5,27.5 - parent: 1 - type: Transform - - uid: 14302 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,21.5 - parent: 1 - type: Transform - - uid: 14303 - components: - - rot: 1.5707963267948966 rad - pos: -77.5,25.5 - parent: 1 - type: Transform - - uid: 14304 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,18.5 - parent: 1 - type: Transform - - uid: 14817 - components: - - rot: 3.141592653589793 rad - pos: -16.5,52.5 - parent: 1 - type: Transform - - uid: 15376 - components: - - rot: 3.141592653589793 rad - pos: 19.5,7.5 - parent: 1 - type: Transform - - uid: 15378 - components: - - rot: 3.141592653589793 rad - pos: 26.5,22.5 - parent: 1 - type: Transform - - uid: 15379 - components: - - rot: 3.141592653589793 rad - pos: 26.5,4.5 - parent: 1 - type: Transform - - uid: 15649 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,1.5 - parent: 1 - type: Transform -- proto: Fireplace - entities: - - uid: 3032 - components: - - pos: -23.5,18.5 - parent: 1 - type: Transform - - uid: 5356 - components: - - pos: -51.5,-0.5 - parent: 1 - type: Transform -- proto: Flash - entities: - - uid: 2851 - components: - - pos: -16.489683,29.613209 - parent: 1 - type: Transform - - uid: 10916 - components: - - pos: -12.483002,63.566193 - parent: 1 - type: Transform -- proto: FlashlightLantern - entities: - - uid: 4103 - components: - - pos: -33.652264,-1.2000351 - parent: 1 - type: Transform - - uid: 4104 - components: - - pos: -33.44914,-1.4031601 - parent: 1 - type: Transform -- proto: FlashlightSeclite - entities: - - uid: 2842 - components: - - pos: -17.543365,26.708624 - parent: 1 - type: Transform - - uid: 3315 - components: - - pos: -17.49649,26.396124 - parent: 1 - type: Transform - - uid: 13335 - components: - - pos: -0.51456356,10.706236 - parent: 1 - type: Transform - - uid: 13336 - components: - - pos: -0.48331353,10.346861 - parent: 1 - type: Transform -- proto: Floodlight - entities: - - uid: 15527 - components: - - pos: 7.5332904,-17.502348 - parent: 1 - type: Transform -- proto: FloorDrain - entities: - - uid: 1981 - components: - - pos: -2.5,25.5 - parent: 1 - type: Transform - - fixtures: {} - type: Fixtures - - uid: 6928 - components: - - pos: -28.5,46.5 - parent: 1 - type: Transform - - fixtures: {} - type: Fixtures - - uid: 10144 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,36.5 - parent: 1 - type: Transform - - fixtures: {} - type: Fixtures -- proto: FloraTree01 - entities: - - uid: 5652 - components: - - pos: -31.673817,19.688118 - parent: 1 - type: Transform - - uid: 7525 - components: - - pos: -11.963879,39.845062 - parent: 1 - type: Transform -- proto: FloraTree02 - entities: - - uid: 7523 - components: - - pos: -12.854504,35.595062 - parent: 1 - type: Transform -- proto: FloraTree03 - entities: - - uid: 5651 - components: - - pos: -34.080067,20.500618 - parent: 1 - type: Transform -- proto: FloraTree04 - entities: - - uid: 5653 - components: - - pos: -33.986317,15.672493 - parent: 1 - type: Transform -- proto: FloraTree05 - entities: - - uid: 7526 - components: - - pos: -13.010754,43.235687 - parent: 1 - type: Transform -- proto: FloraTreeStump - entities: - - uid: 15850 - components: - - pos: 20.438618,40.115738 - parent: 1 - type: Transform -- proto: FluteInstrument - entities: - - uid: 14705 - components: - - pos: -4.5521817,51.503952 - parent: 1 - type: Transform -- proto: FoamBlade - entities: - - uid: 5803 - components: - - desc: A highly detailed replica of a real armblade. - type: MetaData - - pos: -9.533392,20.561493 - parent: 1 - type: Transform -- proto: FoodBowlBigTrash - entities: - - uid: 1873 - components: - - pos: -35.01638,3.9468641 - parent: 1 - type: Transform -- proto: FoodBoxDonkpocketBerry - entities: - - uid: 7947 - components: - - pos: -54.482857,64.65437 - parent: 1 - type: Transform -- proto: FoodBoxDonut - entities: - - uid: 15100 - components: - - pos: -15.485719,25.584269 - parent: 1 - type: Transform -- proto: FoodCakeSpaceman - entities: - - uid: 13835 - components: - - pos: -4.5029564,53.587227 - parent: 1 - type: Transform -- proto: FoodCheese - entities: - - uid: 5801 - components: - - pos: -9.517767,22.3806 - parent: 1 - type: Transform -- proto: FoodDonutJellySpaceman - entities: - - uid: 14938 - components: - - pos: -111.48177,18.535988 - parent: 1 - type: Transform -- proto: FoodMealSashimi - entities: - - uid: 6056 - components: - - pos: -48.5126,9.614483 - parent: 1 - type: Transform -- proto: FoodPieBananaCream - entities: - - uid: 4240 - components: - - pos: -41.421516,28.723614 - parent: 1 - type: Transform -- proto: FoodPlateSmallTrash - entities: - - uid: 2640 - components: - - pos: -35.54763,4.040614 - parent: 1 - type: Transform - - uid: 2886 - components: - - pos: -36.188255,4.056239 - parent: 1 - type: Transform - - uid: 4237 - components: - - pos: -35.29763,3.4937391 - parent: 1 - type: Transform -- proto: FoodPlateTrash - entities: - - uid: 1527 - components: - - pos: -35.73513,3.8687391 - parent: 1 - type: Transform -- proto: FoodSoupEyeball - entities: - - uid: 15186 - components: - - pos: 4.4872284,54.545197 - parent: 1 - type: Transform -- proto: FoodSoupStew - entities: - - uid: 5598 - components: - - pos: -49.501343,9.695094 - parent: 1 - type: Transform -- proto: FoodTinBeans - entities: - - uid: 1528 - components: - - pos: 10.541792,-13.39496 - parent: 1 - type: Transform -- proto: ForensicPad - entities: - - uid: 12914 - components: - - pos: 1.5309631,43.363426 - parent: 1 - type: Transform - - uid: 12915 - components: - - pos: 2.583364,43.44034 - parent: 1 - type: Transform -- proto: GasAnalyzer - entities: - - uid: 15550 - components: - - pos: 11.778922,-20.456448 - parent: 1 - type: Transform -- proto: GasCanisterBrokenBase - entities: - - uid: 370 - components: - - pos: 0.5,-15.5 - parent: 1 - type: Transform -- proto: GasFilterFlipped - entities: - - uid: 2397 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,35.5 - parent: 1 - type: Transform -- proto: GasMinerCarbonDioxide - entities: - - uid: 10841 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,39.5 - parent: 1 - type: Transform -- proto: GasMinerNitrogen - entities: - - uid: 10840 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,37.5 - parent: 1 - type: Transform - - maxExternalPressure: 4000 - type: GasMiner -- proto: GasMinerOxygen - entities: - - uid: 10839 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,35.5 - parent: 1 - type: Transform - - maxExternalPressure: 4000 - type: GasMiner -- proto: GasMinerPlasma - entities: - - uid: 10842 - components: - - pos: -89.5,43.5 - parent: 1 - type: Transform -- proto: GasOutletInjector - entities: - - uid: 13633 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,35.5 - parent: 1 - type: Transform - - uid: 13634 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,37.5 - parent: 1 - type: Transform - - uid: 13635 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,39.5 - parent: 1 - type: Transform - - uid: 13636 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,41.5 - parent: 1 - type: Transform - - uid: 13637 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,43.5 - parent: 1 - type: Transform - - uid: 13638 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,45.5 - parent: 1 - type: Transform -- proto: GasPassiveVent - entities: - - uid: 364 - components: - - rot: 3.141592653589793 rad - pos: 0.5,-14.5 - parent: 1 - type: Transform - - uid: 365 - components: - - rot: 3.141592653589793 rad - pos: 2.5,-14.5 - parent: 1 - type: Transform - - uid: 13627 - components: - - pos: -90.5,45.5 - parent: 1 - type: Transform - - uid: 13628 - components: - - pos: -90.5,43.5 - parent: 1 - type: Transform - - uid: 13629 - components: - - pos: -90.5,41.5 - parent: 1 - type: Transform - - uid: 13630 - components: - - pos: -90.5,39.5 - parent: 1 - type: Transform - - uid: 13631 - components: - - pos: -90.5,37.5 - parent: 1 - type: Transform - - uid: 13632 - components: - - pos: -90.5,35.5 - parent: 1 - type: Transform - - uid: 13858 - components: - - pos: -84.5,48.5 - parent: 1 - type: Transform - - uid: 13859 - components: - - pos: -83.5,50.5 - parent: 1 - type: Transform - - uid: 13860 - components: - - pos: -81.5,50.5 - parent: 1 - type: Transform - - uid: 13916 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,33.5 - parent: 1 - type: Transform -- proto: GasPipeBend - entities: - - uid: 2385 - components: - - rot: 3.141592653589793 rad - pos: 6.5,35.5 - parent: 1 - type: Transform - - uid: 2387 - components: - - pos: 11.5,35.5 - parent: 1 - type: Transform - - uid: 2388 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,34.5 - parent: 1 - type: Transform - - uid: 2389 - components: - - rot: 3.141592653589793 rad - pos: 9.5,34.5 - parent: 1 - type: Transform - - uid: 2390 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,36.5 - parent: 1 - type: Transform - - uid: 2391 - components: - - rot: -1.5707963267948966 rad - pos: 12.5,36.5 - parent: 1 - type: Transform - - uid: 2419 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2420 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2457 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2458 - components: - - rot: -1.5707963267948966 rad - pos: 14.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2460 - components: - - rot: 1.5707963267948966 rad - pos: 15.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2463 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3016 - components: - - rot: 3.141592653589793 rad - pos: 2.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3017 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3018 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3687 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5387 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8693 - components: - - pos: -46.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8746 - components: - - pos: -56.5,57.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8752 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8753 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8767 - components: - - pos: -55.5,58.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8926 - components: - - pos: -52.5,88.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8927 - components: - - pos: -50.5,89.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8931 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,88.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8932 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,89.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10796 - components: - - pos: 10.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 10797 - components: - - pos: 9.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11126 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11221 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11222 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11227 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11228 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,46.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11279 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11287 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11288 - components: - - rot: -1.5707963267948966 rad - pos: -48.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11312 - components: - - rot: 3.141592653589793 rad - pos: -52.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11534 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11649 - components: - - rot: 3.141592653589793 rad - pos: -33.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11679 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11680 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11788 - components: - - pos: -57.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11820 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12186 - components: - - rot: 3.141592653589793 rad - pos: -19.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12189 - components: - - pos: -19.5,38.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12217 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12319 - components: - - rot: 3.141592653589793 rad - pos: -13.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12370 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,-5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12371 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,-5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12372 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,-8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12373 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,-8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12399 - components: - - rot: 1.5707963267948966 rad - pos: -3.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12400 - components: - - rot: -1.5707963267948966 rad - pos: -3.5,-11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12401 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,-11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12402 - components: - - rot: -1.5707963267948966 rad - pos: -4.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12554 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12726 - components: - - pos: -1.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12727 - components: - - pos: -2.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12728 - components: - - rot: 3.141592653589793 rad - pos: -2.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12729 - components: - - rot: 3.141592653589793 rad - pos: -1.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12743 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,14.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12751 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12752 - components: - - pos: 11.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13014 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13015 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13719 - components: - - rot: 3.141592653589793 rad - pos: -90.5,34.5 - parent: 1 - type: Transform - - uid: 13720 - components: - - rot: 3.141592653589793 rad - pos: -90.5,36.5 - parent: 1 - type: Transform - - uid: 13721 - components: - - rot: 3.141592653589793 rad - pos: -90.5,38.5 - parent: 1 - type: Transform - - uid: 13722 - components: - - rot: 3.141592653589793 rad - pos: -90.5,40.5 - parent: 1 - type: Transform - - uid: 13725 - components: - - rot: 3.141592653589793 rad - pos: -90.5,42.5 - parent: 1 - type: Transform - - uid: 13730 - components: - - rot: 3.141592653589793 rad - pos: -90.5,44.5 - parent: 1 - type: Transform - - uid: 13862 - components: - - pos: -82.5,47.5 - parent: 1 - type: Transform - - uid: 13863 - components: - - rot: 3.141592653589793 rad - pos: -83.5,47.5 - parent: 1 - type: Transform - - uid: 13983 - components: - - pos: -66.5,50.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13984 - components: - - pos: -67.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13985 - components: - - rot: 3.141592653589793 rad - pos: -67.5,50.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13997 - components: - - pos: -61.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14021 - components: - - pos: -72.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14022 - components: - - pos: -71.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14023 - components: - - rot: 3.141592653589793 rad - pos: -72.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14024 - components: - - rot: 3.141592653589793 rad - pos: -71.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14054 - components: - - rot: 3.141592653589793 rad - pos: -74.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14055 - components: - - rot: 3.141592653589793 rad - pos: -73.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14106 - components: - - rot: 3.141592653589793 rad - pos: -71.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14107 - components: - - rot: 3.141592653589793 rad - pos: -70.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14108 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14133 - components: - - pos: -64.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14134 - components: - - pos: -63.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14135 - components: - - rot: -1.5707963267948966 rad - pos: -63.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14136 - components: - - rot: -1.5707963267948966 rad - pos: -64.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor -- proto: GasPipeFourway - entities: - - uid: 2386 - components: - - pos: 9.5,35.5 - parent: 1 - type: Transform - - uid: 2685 - components: - - pos: 2.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8692 - components: - - pos: -47.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8781 - components: - - pos: -52.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 10234 - components: - - pos: -40.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11083 - components: - - pos: -56.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11084 - components: - - pos: -57.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11189 - components: - - pos: -41.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11278 - components: - - pos: -48.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11532 - components: - - pos: -38.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11533 - components: - - pos: -36.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11559 - components: - - pos: -36.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11560 - components: - - pos: -38.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11759 - components: - - pos: -58.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11761 - components: - - pos: -56.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11940 - components: - - pos: -41.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11941 - components: - - pos: -40.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11974 - components: - - pos: -44.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11975 - components: - - pos: -43.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12052 - components: - - pos: -38.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12053 - components: - - pos: -36.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12094 - components: - - pos: -23.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12191 - components: - - pos: -17.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12192 - components: - - pos: -15.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12298 - components: - - pos: -13.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12299 - components: - - pos: -11.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12349 - components: - - pos: -9.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12423 - components: - - pos: -11.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12427 - components: - - pos: -11.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12647 - components: - - pos: 26.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12970 - components: - - pos: -17.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12971 - components: - - pos: -15.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor -- proto: GasPipeStraight - entities: - - uid: 354 - components: - - rot: 3.141592653589793 rad - pos: 0.5,-10.5 - parent: 1 - type: Transform - - uid: 355 - components: - - rot: 3.141592653589793 rad - pos: 0.5,-11.5 - parent: 1 - type: Transform - - uid: 356 - components: - - rot: 3.141592653589793 rad - pos: 0.5,-12.5 - parent: 1 - type: Transform - - uid: 357 - components: - - rot: 3.141592653589793 rad - pos: 0.5,-13.5 - parent: 1 - type: Transform - - uid: 358 - components: - - rot: 3.141592653589793 rad - pos: 2.5,-13.5 - parent: 1 - type: Transform - - uid: 359 - components: - - rot: 3.141592653589793 rad - pos: 2.5,-12.5 - parent: 1 - type: Transform - - uid: 360 - components: - - rot: 3.141592653589793 rad - pos: 2.5,-11.5 - parent: 1 - type: Transform - - uid: 361 - components: - - rot: 3.141592653589793 rad - pos: 2.5,-10.5 - parent: 1 - type: Transform - - uid: 1213 - components: - - rot: 3.141592653589793 rad - pos: -0.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 1228 - components: - - rot: 3.141592653589793 rad - pos: -0.5,8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 1242 - components: - - rot: 3.141592653589793 rad - pos: 0.5,7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 1248 - components: - - rot: 3.141592653589793 rad - pos: 0.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 1329 - components: - - rot: 3.141592653589793 rad - pos: -0.5,7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 1369 - components: - - rot: 3.141592653589793 rad - pos: -0.5,6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 1513 - components: - - rot: 3.141592653589793 rad - pos: -17.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 1771 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 1772 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 1773 - components: - - rot: 3.141592653589793 rad - pos: 14.5,-0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 1779 - components: - - rot: 3.141592653589793 rad - pos: 15.5,0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 1790 - components: - - rot: 3.141592653589793 rad - pos: 14.5,1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 1797 - components: - - rot: 3.141592653589793 rad - pos: 14.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 1798 - components: - - rot: 3.141592653589793 rad - pos: 15.5,-1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2392 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,36.5 - parent: 1 - type: Transform - - uid: 2393 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,34.5 - parent: 1 - type: Transform - - uid: 2395 - components: - - rot: 3.141592653589793 rad - pos: 6.5,36.5 - parent: 1 - type: Transform - - uid: 2403 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2404 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2405 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2406 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2407 - components: - - rot: 3.141592653589793 rad - pos: 4.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2412 - components: - - rot: 3.141592653589793 rad - pos: 4.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2413 - components: - - rot: 3.141592653589793 rad - pos: 4.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2414 - components: - - rot: 3.141592653589793 rad - pos: 4.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2415 - components: - - rot: 3.141592653589793 rad - pos: 2.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2417 - components: - - rot: 3.141592653589793 rad - pos: 2.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2426 - components: - - rot: 1.5707963267948966 rad - pos: 3.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2427 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2428 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2429 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2430 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2431 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2434 - components: - - pos: 3.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2435 - components: - - pos: 3.5,36.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2436 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2437 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2438 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2439 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2440 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2441 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2442 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2443 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2444 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2445 - components: - - rot: 3.141592653589793 rad - pos: 8.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2446 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2447 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2448 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2449 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2450 - components: - - rot: 1.5707963267948966 rad - pos: 12.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2451 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2452 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2453 - components: - - rot: 1.5707963267948966 rad - pos: 12.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2454 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2455 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2456 - components: - - rot: 3.141592653589793 rad - pos: 15.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2462 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2464 - components: - - pos: 15.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2465 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2466 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2467 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2468 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2469 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2470 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2484 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2675 - components: - - pos: 2.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2676 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2677 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2678 - components: - - rot: 3.141592653589793 rad - pos: 2.5,26.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2679 - components: - - rot: 3.141592653589793 rad - pos: 4.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2680 - components: - - rot: 3.141592653589793 rad - pos: 4.5,27.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2681 - components: - - rot: 3.141592653589793 rad - pos: 4.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2682 - components: - - rot: 3.141592653589793 rad - pos: 2.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2775 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2864 - components: - - rot: 1.5707963267948966 rad - pos: 3.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2871 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2872 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2873 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2874 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2875 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2876 - components: - - pos: 2.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2877 - components: - - pos: 4.5,22.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2895 - components: - - pos: -15.5,27.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2902 - components: - - rot: 3.141592653589793 rad - pos: -15.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2919 - components: - - pos: -15.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3003 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3004 - components: - - pos: 4.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3005 - components: - - pos: 3.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3006 - components: - - pos: 4.5,18.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3007 - components: - - pos: 3.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3008 - components: - - pos: 4.5,17.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3009 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3010 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3011 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3012 - components: - - rot: 3.141592653589793 rad - pos: 4.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3013 - components: - - rot: 3.141592653589793 rad - pos: 2.5,21.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3014 - components: - - rot: 3.141592653589793 rad - pos: 2.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3015 - components: - - rot: 3.141592653589793 rad - pos: 4.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3025 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3179 - components: - - pos: -17.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3319 - components: - - pos: -17.5,26.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3320 - components: - - pos: -15.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3349 - components: - - rot: 3.141592653589793 rad - pos: -40.5,-8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3350 - components: - - rot: 3.141592653589793 rad - pos: -40.5,-4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3351 - components: - - rot: 3.141592653589793 rad - pos: -39.5,-7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3356 - components: - - rot: 3.141592653589793 rad - pos: -39.5,-8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3357 - components: - - rot: 3.141592653589793 rad - pos: -39.5,-9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3360 - components: - - rot: 3.141592653589793 rad - pos: -40.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3551 - components: - - pos: -40.5,-6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3559 - components: - - rot: 3.141592653589793 rad - pos: -40.5,-5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3563 - components: - - rot: 3.141592653589793 rad - pos: -39.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3571 - components: - - rot: 3.141592653589793 rad - pos: -40.5,-10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3574 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3617 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3631 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3657 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3683 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3704 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3715 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3840 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3844 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3846 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3851 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3960 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3961 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4106 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4265 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4752 - components: - - pos: -64.5,-10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4753 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4755 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4775 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4776 - components: - - rot: 1.5707963267948966 rad - pos: -66.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4777 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4778 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4779 - components: - - rot: 1.5707963267948966 rad - pos: -69.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4780 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4781 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4803 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4804 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4808 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4877 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4878 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4914 - components: - - rot: 1.5707963267948966 rad - pos: -69.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4915 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4916 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4917 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4918 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4919 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4920 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4921 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4931 - components: - - rot: 3.141592653589793 rad - pos: -58.5,-8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4957 - components: - - rot: 1.5707963267948966 rad - pos: -66.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4974 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4975 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 5317 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,6.5 - parent: 1 - type: Transform - - uid: 5350 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,6.5 - parent: 1 - type: Transform - - uid: 5393 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5397 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5401 - components: - - pos: -42.5,-11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5462 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5690 - components: - - pos: -17.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5764 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5765 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 5789 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5790 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 6253 - components: - - rot: 1.5707963267948966 rad - pos: -50.5,4.5 - parent: 1 - type: Transform - - uid: 7441 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 7442 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8674 - components: - - pos: -46.5,48.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8675 - components: - - pos: -46.5,49.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8676 - components: - - pos: -46.5,50.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8677 - components: - - pos: -46.5,51.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8678 - components: - - pos: -46.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8679 - components: - - pos: -46.5,53.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8680 - components: - - pos: -46.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8681 - components: - - pos: -48.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8682 - components: - - pos: -48.5,49.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8683 - components: - - pos: -48.5,50.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8684 - components: - - pos: -48.5,51.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8685 - components: - - pos: -48.5,52.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8687 - components: - - rot: -1.5707963267948966 rad - pos: -48.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8688 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8689 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8694 - components: - - pos: -47.5,56.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8695 - components: - - pos: -47.5,57.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8696 - components: - - pos: -47.5,58.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8701 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8703 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8705 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8706 - components: - - rot: -1.5707963267948966 rad - pos: -58.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8707 - components: - - rot: 3.141592653589793 rad - pos: -51.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8708 - components: - - rot: 3.141592653589793 rad - pos: -51.5,53.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8709 - components: - - rot: 3.141592653589793 rad - pos: -51.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8710 - components: - - rot: 3.141592653589793 rad - pos: -51.5,51.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8711 - components: - - rot: 3.141592653589793 rad - pos: -50.5,52.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8712 - components: - - rot: 3.141592653589793 rad - pos: -50.5,51.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8713 - components: - - rot: 3.141592653589793 rad - pos: -53.5,52.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8714 - components: - - rot: 3.141592653589793 rad - pos: -53.5,51.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8715 - components: - - rot: 3.141592653589793 rad - pos: -54.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8716 - components: - - rot: 3.141592653589793 rad - pos: -54.5,51.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8717 - components: - - rot: 3.141592653589793 rad - pos: -56.5,52.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8718 - components: - - rot: 3.141592653589793 rad - pos: -56.5,51.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8719 - components: - - rot: 3.141592653589793 rad - pos: -57.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8720 - components: - - rot: 3.141592653589793 rad - pos: -57.5,51.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8721 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8723 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8725 - components: - - pos: -55.5,54.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8726 - components: - - pos: -55.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8728 - components: - - pos: -55.5,57.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8729 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,58.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8730 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,58.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8731 - components: - - rot: -1.5707963267948966 rad - pos: -58.5,58.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8732 - components: - - rot: -1.5707963267948966 rad - pos: -59.5,58.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8737 - components: - - rot: 3.141592653589793 rad - pos: -54.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8738 - components: - - rot: 3.141592653589793 rad - pos: -54.5,53.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8739 - components: - - rot: 3.141592653589793 rad - pos: -57.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8740 - components: - - rot: 3.141592653589793 rad - pos: -57.5,53.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8741 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8742 - components: - - rot: 3.141592653589793 rad - pos: -56.5,56.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8743 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,57.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8744 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,57.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8745 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,57.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8747 - components: - - rot: -1.5707963267948966 rad - pos: -59.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8748 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8749 - components: - - rot: 3.141592653589793 rad - pos: -61.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8750 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8751 - components: - - pos: -61.5,53.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8768 - components: - - rot: 3.141592653589793 rad - pos: -52.5,54.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8769 - components: - - rot: 3.141592653589793 rad - pos: -52.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8770 - components: - - rot: 3.141592653589793 rad - pos: -52.5,56.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8771 - components: - - rot: 3.141592653589793 rad - pos: -52.5,57.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8772 - components: - - rot: 3.141592653589793 rad - pos: -52.5,58.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8773 - components: - - rot: 3.141592653589793 rad - pos: -52.5,59.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8774 - components: - - rot: 3.141592653589793 rad - pos: -50.5,56.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8775 - components: - - rot: 3.141592653589793 rad - pos: -50.5,57.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8776 - components: - - rot: 3.141592653589793 rad - pos: -50.5,58.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8777 - components: - - rot: 3.141592653589793 rad - pos: -50.5,59.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8786 - components: - - pos: -52.5,60.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8789 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8790 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8791 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8792 - components: - - rot: -1.5707963267948966 rad - pos: -48.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8794 - components: - - rot: 3.141592653589793 rad - pos: -52.5,63.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8795 - components: - - rot: 3.141592653589793 rad - pos: -52.5,64.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8796 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8797 - components: - - rot: 1.5707963267948966 rad - pos: -50.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8798 - components: - - rot: 1.5707963267948966 rad - pos: -49.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8799 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8800 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8801 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8802 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8803 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8804 - components: - - rot: 1.5707963267948966 rad - pos: -43.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8805 - components: - - rot: 1.5707963267948966 rad - pos: -49.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8806 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8807 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8808 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8809 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8810 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8811 - components: - - rot: 1.5707963267948966 rad - pos: -43.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8812 - components: - - pos: -50.5,65.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8813 - components: - - pos: -50.5,66.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8815 - components: - - pos: -52.5,66.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8816 - components: - - pos: -52.5,67.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8818 - components: - - pos: -50.5,61.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8819 - components: - - pos: -50.5,62.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8820 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8821 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8822 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8823 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8824 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8825 - components: - - rot: 3.141592653589793 rad - pos: -54.5,62.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8826 - components: - - rot: 3.141592653589793 rad - pos: -54.5,63.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8827 - components: - - rot: 3.141592653589793 rad - pos: -55.5,61.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8828 - components: - - rot: 3.141592653589793 rad - pos: -55.5,62.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8829 - components: - - rot: 3.141592653589793 rad - pos: -55.5,63.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8830 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8831 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8832 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8833 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8834 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8835 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8836 - components: - - pos: -58.5,62.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8837 - components: - - pos: -58.5,63.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8838 - components: - - pos: -59.5,61.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8839 - components: - - pos: -59.5,62.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8840 - components: - - pos: -59.5,63.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8841 - components: - - rot: -1.5707963267948966 rad - pos: -59.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8851 - components: - - rot: 3.141592653589793 rad - pos: -52.5,68.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8852 - components: - - rot: 3.141592653589793 rad - pos: -52.5,69.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8853 - components: - - rot: 3.141592653589793 rad - pos: -52.5,70.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8854 - components: - - rot: 3.141592653589793 rad - pos: -52.5,71.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8855 - components: - - rot: 3.141592653589793 rad - pos: -52.5,72.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8856 - components: - - rot: 3.141592653589793 rad - pos: -52.5,73.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8857 - components: - - rot: 3.141592653589793 rad - pos: -52.5,74.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8858 - components: - - rot: 3.141592653589793 rad - pos: -52.5,75.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8859 - components: - - rot: 3.141592653589793 rad - pos: -52.5,76.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8860 - components: - - rot: 3.141592653589793 rad - pos: -52.5,77.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8861 - components: - - rot: 3.141592653589793 rad - pos: -52.5,78.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8862 - components: - - rot: 3.141592653589793 rad - pos: -52.5,79.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8863 - components: - - rot: 3.141592653589793 rad - pos: -52.5,80.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8864 - components: - - rot: 3.141592653589793 rad - pos: -50.5,68.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8865 - components: - - rot: 3.141592653589793 rad - pos: -50.5,68.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8866 - components: - - rot: 3.141592653589793 rad - pos: -50.5,69.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8867 - components: - - rot: 3.141592653589793 rad - pos: -50.5,70.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8868 - components: - - rot: 3.141592653589793 rad - pos: -50.5,71.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8869 - components: - - rot: 3.141592653589793 rad - pos: -50.5,72.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8870 - components: - - rot: 3.141592653589793 rad - pos: -50.5,73.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8871 - components: - - rot: 3.141592653589793 rad - pos: -50.5,74.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8872 - components: - - rot: 3.141592653589793 rad - pos: -50.5,75.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8873 - components: - - rot: 3.141592653589793 rad - pos: -50.5,76.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8874 - components: - - rot: 3.141592653589793 rad - pos: -50.5,77.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8875 - components: - - rot: 3.141592653589793 rad - pos: -50.5,78.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8876 - components: - - rot: 3.141592653589793 rad - pos: -50.5,79.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8877 - components: - - rot: 3.141592653589793 rad - pos: -52.5,81.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8878 - components: - - rot: 3.141592653589793 rad - pos: -52.5,82.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8879 - components: - - rot: 3.141592653589793 rad - pos: -50.5,81.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8880 - components: - - rot: 3.141592653589793 rad - pos: -50.5,82.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8889 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,84.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8890 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,84.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8891 - components: - - pos: -52.5,83.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8892 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,84.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8893 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,84.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8894 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,83.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8895 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,83.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8896 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,83.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8897 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,83.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8898 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,83.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8899 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,83.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8900 - components: - - rot: 3.141592653589793 rad - pos: -50.5,85.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8901 - components: - - rot: 3.141592653589793 rad - pos: -50.5,86.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8902 - components: - - rot: 3.141592653589793 rad - pos: -50.5,87.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8903 - components: - - rot: 3.141592653589793 rad - pos: -50.5,88.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8904 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,89.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8905 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,89.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8906 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,89.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8907 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,89.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8908 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,89.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8909 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,89.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8910 - components: - - pos: -58.5,88.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8919 - components: - - rot: 3.141592653589793 rad - pos: -52.5,86.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8920 - components: - - rot: 3.141592653589793 rad - pos: -52.5,87.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8921 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,88.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8922 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,88.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8923 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,88.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 9573 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10054 - components: - - rot: 3.141592653589793 rad - pos: 10.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 10072 - components: - - pos: 10.5,18.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 10235 - components: - - rot: 3.141592653589793 rad - pos: -39.5,-3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10240 - components: - - rot: 3.141592653589793 rad - pos: -39.5,-5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10241 - components: - - rot: 3.141592653589793 rad - pos: -39.5,-4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10312 - components: - - pos: -11.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10347 - components: - - rot: -1.5707963267948966 rad - pos: -44.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10704 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11087 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11088 - components: - - pos: -57.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11089 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11090 - components: - - rot: 3.141592653589793 rad - pos: -56.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11092 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11097 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,37.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11098 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11099 - components: - - rot: 3.141592653589793 rad - pos: -57.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11100 - components: - - rot: 3.141592653589793 rad - pos: -57.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11101 - components: - - rot: 3.141592653589793 rad - pos: -56.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11102 - components: - - rot: 3.141592653589793 rad - pos: -56.5,38.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11104 - components: - - rot: 3.141592653589793 rad - pos: -57.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11105 - components: - - rot: 3.141592653589793 rad - pos: -57.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11106 - components: - - rot: 3.141592653589793 rad - pos: -57.5,36.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11107 - components: - - rot: 3.141592653589793 rad - pos: -56.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11108 - components: - - rot: 3.141592653589793 rad - pos: -56.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11109 - components: - - rot: 3.141592653589793 rad - pos: -56.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11110 - components: - - rot: 3.141592653589793 rad - pos: -56.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11111 - components: - - rot: 3.141592653589793 rad - pos: -57.5,39.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11112 - components: - - rot: 3.141592653589793 rad - pos: -57.5,40.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11113 - components: - - rot: 3.141592653589793 rad - pos: -57.5,41.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11115 - components: - - rot: 3.141592653589793 rad - pos: -56.5,40.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11117 - components: - - rot: 3.141592653589793 rad - pos: -56.5,42.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11118 - components: - - rot: 3.141592653589793 rad - pos: -56.5,39.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11127 - components: - - pos: -56.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11128 - components: - - pos: -57.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11129 - components: - - pos: -57.5,46.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11130 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11131 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11132 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11133 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11135 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11136 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11138 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11139 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11140 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11141 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11142 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11143 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11144 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11149 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11150 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11151 - components: - - pos: -48.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11152 - components: - - rot: 3.141592653589793 rad - pos: -46.5,46.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11153 - components: - - rot: 3.141592653589793 rad - pos: -46.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11154 - components: - - rot: 3.141592653589793 rad - pos: -46.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11155 - components: - - rot: 3.141592653589793 rad - pos: -48.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11170 - components: - - pos: -48.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11171 - components: - - pos: -48.5,42.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11176 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11177 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11178 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11179 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11180 - components: - - rot: -1.5707963267948966 rad - pos: -44.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11181 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11182 - components: - - rot: -1.5707963267948966 rad - pos: -44.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11183 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11186 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11187 - components: - - rot: 3.141592653589793 rad - pos: -41.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11188 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11190 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11191 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11193 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11194 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11195 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11197 - components: - - rot: 3.141592653589793 rad - pos: -40.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11198 - components: - - rot: 3.141592653589793 rad - pos: -40.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11199 - components: - - rot: 3.141592653589793 rad - pos: -40.5,46.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11200 - components: - - rot: 3.141592653589793 rad - pos: -40.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11201 - components: - - rot: 3.141592653589793 rad - pos: -40.5,48.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11202 - components: - - rot: 3.141592653589793 rad - pos: -41.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11203 - components: - - rot: 3.141592653589793 rad - pos: -41.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11204 - components: - - rot: 3.141592653589793 rad - pos: -41.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11205 - components: - - rot: 3.141592653589793 rad - pos: -41.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11206 - components: - - rot: 3.141592653589793 rad - pos: -41.5,49.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11207 - components: - - rot: 3.141592653589793 rad - pos: -40.5,49.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11210 - components: - - pos: -46.5,41.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11213 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11214 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11215 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11216 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11217 - components: - - rot: 3.141592653589793 rad - pos: -36.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11218 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11219 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11220 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11225 - components: - - pos: -32.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11226 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11229 - components: - - pos: -33.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11230 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11231 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11232 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11233 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,46.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11234 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,46.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11241 - components: - - rot: 3.141592653589793 rad - pos: -46.5,40.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11242 - components: - - rot: 3.141592653589793 rad - pos: -46.5,39.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11243 - components: - - rot: 3.141592653589793 rad - pos: -46.5,38.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11244 - components: - - rot: 3.141592653589793 rad - pos: -46.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11245 - components: - - rot: 3.141592653589793 rad - pos: -48.5,40.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11246 - components: - - rot: 3.141592653589793 rad - pos: -48.5,39.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11247 - components: - - rot: 3.141592653589793 rad - pos: -48.5,38.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11248 - components: - - rot: 3.141592653589793 rad - pos: -48.5,37.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11249 - components: - - rot: 3.141592653589793 rad - pos: -48.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11250 - components: - - rot: 3.141592653589793 rad - pos: -46.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11251 - components: - - rot: 3.141592653589793 rad - pos: -48.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11252 - components: - - rot: 3.141592653589793 rad - pos: -46.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11253 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11254 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11255 - components: - - rot: 3.141592653589793 rad - pos: -54.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11256 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11257 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11259 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11260 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11261 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11262 - components: - - pos: -50.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11263 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11264 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11265 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11273 - components: - - rot: 3.141592653589793 rad - pos: -51.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11275 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11276 - components: - - pos: -48.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11277 - components: - - pos: -48.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11281 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11282 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11283 - components: - - rot: 3.141592653589793 rad - pos: -47.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11284 - components: - - rot: 3.141592653589793 rad - pos: -47.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11285 - components: - - rot: 3.141592653589793 rad - pos: -48.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11286 - components: - - rot: 3.141592653589793 rad - pos: -47.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11289 - components: - - rot: -1.5707963267948966 rad - pos: -48.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11290 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11291 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11292 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11295 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11296 - components: - - rot: 3.141592653589793 rad - pos: -51.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11297 - components: - - rot: 3.141592653589793 rad - pos: -51.5,27.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11298 - components: - - rot: 3.141592653589793 rad - pos: -50.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11299 - components: - - rot: 3.141592653589793 rad - pos: -51.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11300 - components: - - rot: 3.141592653589793 rad - pos: -50.5,26.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11301 - components: - - rot: 3.141592653589793 rad - pos: -51.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11302 - components: - - rot: 3.141592653589793 rad - pos: -50.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11307 - components: - - rot: 3.141592653589793 rad - pos: -51.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11309 - components: - - rot: 3.141592653589793 rad - pos: -50.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11310 - components: - - rot: 3.141592653589793 rad - pos: -50.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11311 - components: - - rot: 3.141592653589793 rad - pos: -50.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11313 - components: - - rot: 3.141592653589793 rad - pos: -52.5,36.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11314 - components: - - rot: 3.141592653589793 rad - pos: -52.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11315 - components: - - rot: 3.141592653589793 rad - pos: -52.5,38.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11316 - components: - - rot: 3.141592653589793 rad - pos: -52.5,39.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11489 - components: - - rot: -1.5707963267948966 rad - pos: -58.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11520 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11521 - components: - - rot: -1.5707963267948966 rad - pos: -44.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11522 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11523 - components: - - rot: -1.5707963267948966 rad - pos: -44.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11524 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11525 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11526 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11527 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11528 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11529 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11530 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11531 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11535 - components: - - pos: -36.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11537 - components: - - rot: 3.141592653589793 rad - pos: -38.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11538 - components: - - rot: 3.141592653589793 rad - pos: -38.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11539 - components: - - rot: 3.141592653589793 rad - pos: -38.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11540 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11541 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11542 - components: - - pos: -36.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11544 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11545 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11546 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11547 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11548 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11549 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11550 - components: - - rot: 3.141592653589793 rad - pos: -36.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11551 - components: - - rot: 3.141592653589793 rad - pos: -36.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11552 - components: - - rot: 3.141592653589793 rad - pos: -36.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11553 - components: - - rot: 3.141592653589793 rad - pos: -38.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11554 - components: - - rot: 3.141592653589793 rad - pos: -38.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11561 - components: - - rot: 3.141592653589793 rad - pos: -36.5,36.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11562 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11563 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11564 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11565 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11566 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11567 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11568 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11569 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11570 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11571 - components: - - pos: -38.5,39.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11572 - components: - - pos: -36.5,39.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11573 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11574 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11576 - components: - - pos: -38.5,38.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11577 - components: - - pos: -36.5,38.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11578 - components: - - pos: -38.5,37.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11581 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11582 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11583 - components: - - pos: -31.5,37.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11584 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11585 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11586 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11587 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11588 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11589 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11590 - components: - - rot: 3.141592653589793 rad - pos: -31.5,38.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11591 - components: - - rot: 3.141592653589793 rad - pos: -32.5,38.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11609 - components: - - rot: 3.141592653589793 rad - pos: -38.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11610 - components: - - rot: 3.141592653589793 rad - pos: -36.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11611 - components: - - rot: 3.141592653589793 rad - pos: -36.5,26.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11612 - components: - - rot: 3.141592653589793 rad - pos: -36.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11613 - components: - - rot: 3.141592653589793 rad - pos: -38.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11615 - components: - - rot: 3.141592653589793 rad - pos: -38.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11617 - components: - - rot: 3.141592653589793 rad - pos: -36.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11618 - components: - - rot: 3.141592653589793 rad - pos: -36.5,21.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11619 - components: - - rot: 3.141592653589793 rad - pos: -38.5,22.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11620 - components: - - rot: 3.141592653589793 rad - pos: -38.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11621 - components: - - rot: 3.141592653589793 rad - pos: -38.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11622 - components: - - rot: 3.141592653589793 rad - pos: -38.5,18.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11623 - components: - - rot: 3.141592653589793 rad - pos: -38.5,17.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11624 - components: - - rot: 3.141592653589793 rad - pos: -38.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11625 - components: - - rot: 3.141592653589793 rad - pos: -38.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11626 - components: - - rot: 3.141592653589793 rad - pos: -38.5,14.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11627 - components: - - rot: 3.141592653589793 rad - pos: -36.5,13.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11628 - components: - - rot: 3.141592653589793 rad - pos: -36.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11629 - components: - - rot: 3.141592653589793 rad - pos: -36.5,15.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11630 - components: - - rot: 3.141592653589793 rad - pos: -36.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11631 - components: - - rot: 3.141592653589793 rad - pos: -36.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11632 - components: - - rot: 3.141592653589793 rad - pos: -36.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11633 - components: - - rot: 3.141592653589793 rad - pos: -36.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11634 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11635 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11636 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11637 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11638 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11639 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11648 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11650 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11651 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11652 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11653 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11654 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11655 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11656 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11657 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11658 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11659 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11660 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11661 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11663 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11664 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11665 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11666 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11667 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11668 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11669 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11671 - components: - - pos: -34.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11672 - components: - - pos: -34.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11673 - components: - - pos: -34.5,26.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11674 - components: - - pos: -33.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11683 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11684 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11685 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11686 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11687 - components: - - rot: 3.141592653589793 rad - pos: -58.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11688 - components: - - rot: 3.141592653589793 rad - pos: -58.5,26.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11690 - components: - - rot: 3.141592653589793 rad - pos: -58.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11691 - components: - - rot: 3.141592653589793 rad - pos: -58.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11693 - components: - - rot: 3.141592653589793 rad - pos: -56.5,27.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11694 - components: - - rot: 3.141592653589793 rad - pos: -56.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11695 - components: - - rot: 3.141592653589793 rad - pos: -56.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11696 - components: - - rot: 3.141592653589793 rad - pos: -56.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11699 - components: - - rot: 3.141592653589793 rad - pos: -56.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11708 - components: - - rot: 3.141592653589793 rad - pos: -53.5,15.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11709 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11710 - components: - - pos: -56.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11711 - components: - - pos: -56.5,22.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11712 - components: - - pos: -56.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11713 - components: - - pos: -56.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11714 - components: - - pos: -56.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11715 - components: - - pos: -58.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11716 - components: - - pos: -58.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11717 - components: - - pos: -58.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11718 - components: - - pos: -58.5,21.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11719 - components: - - pos: -58.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11720 - components: - - pos: -58.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11721 - components: - - pos: -56.5,17.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11722 - components: - - pos: -56.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11723 - components: - - pos: -58.5,15.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11724 - components: - - pos: -58.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11725 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11726 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11727 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11728 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11729 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11730 - components: - - rot: 3.141592653589793 rad - pos: -58.5,13.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11731 - components: - - rot: 3.141592653589793 rad - pos: -58.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11732 - components: - - rot: 3.141592653589793 rad - pos: -56.5,14.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11733 - components: - - rot: 3.141592653589793 rad - pos: -56.5,13.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11734 - components: - - rot: 3.141592653589793 rad - pos: -56.5,12.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11735 - components: - - rot: 3.141592653589793 rad - pos: -56.5,11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11736 - components: - - rot: 3.141592653589793 rad - pos: -58.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11737 - components: - - rot: 3.141592653589793 rad - pos: -58.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11738 - components: - - rot: 3.141592653589793 rad - pos: -58.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11739 - components: - - rot: 3.141592653589793 rad - pos: -56.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11740 - components: - - rot: 3.141592653589793 rad - pos: -56.5,8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11741 - components: - - rot: 3.141592653589793 rad - pos: -54.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11742 - components: - - rot: 3.141592653589793 rad - pos: -54.5,17.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11743 - components: - - rot: 3.141592653589793 rad - pos: -54.5,18.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11744 - components: - - rot: 3.141592653589793 rad - pos: -53.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11745 - components: - - rot: 3.141592653589793 rad - pos: -53.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11746 - components: - - rot: 3.141592653589793 rad - pos: -53.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11762 - components: - - rot: 3.141592653589793 rad - pos: -56.5,7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11763 - components: - - rot: 3.141592653589793 rad - pos: -56.5,6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11765 - components: - - rot: 3.141592653589793 rad - pos: -58.5,7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11766 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11767 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11768 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11769 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11770 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11771 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11772 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11773 - components: - - pos: -56.5,3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11774 - components: - - pos: -56.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11775 - components: - - pos: -56.5,1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11776 - components: - - pos: -58.5,4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11777 - components: - - pos: -58.5,3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11778 - components: - - pos: -58.5,2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11779 - components: - - pos: -58.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11780 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11781 - components: - - rot: -1.5707963267948966 rad - pos: -58.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11782 - components: - - rot: -1.5707963267948966 rad - pos: -59.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11783 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11784 - components: - - rot: -1.5707963267948966 rad - pos: -61.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11785 - components: - - rot: -1.5707963267948966 rad - pos: -59.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11786 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11787 - components: - - rot: -1.5707963267948966 rad - pos: -61.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11791 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11792 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11793 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11794 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11795 - components: - - rot: 1.5707963267948966 rad - pos: -66.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11796 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11797 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11798 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11799 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11800 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11801 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11802 - components: - - rot: 1.5707963267948966 rad - pos: -69.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11803 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11804 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11805 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11806 - components: - - rot: 1.5707963267948966 rad - pos: -69.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11807 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11808 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11809 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11810 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11822 - components: - - pos: -58.5,0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11823 - components: - - pos: -58.5,-0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11824 - components: - - pos: -56.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11825 - components: - - pos: -56.5,-0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11826 - components: - - pos: -56.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11827 - components: - - pos: -58.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11828 - components: - - pos: -58.5,-3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11829 - components: - - pos: -58.5,-4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11830 - components: - - pos: -58.5,-5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11831 - components: - - pos: -56.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11832 - components: - - pos: -56.5,-4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11833 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11834 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11835 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11836 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11837 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,-5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11838 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,-5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11839 - components: - - rot: 3.141592653589793 rad - pos: -56.5,-6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11844 - components: - - rot: -1.5707963267948966 rad - pos: -58.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11845 - components: - - rot: 3.141592653589793 rad - pos: -58.5,-9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11846 - components: - - rot: 3.141592653589793 rad - pos: -56.5,-8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11847 - components: - - rot: 3.141592653589793 rad - pos: -56.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11848 - components: - - rot: 3.141592653589793 rad - pos: -58.5,-7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11890 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11891 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11892 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11893 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11922 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11923 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11924 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11927 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11928 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11929 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11930 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11931 - components: - - rot: 1.5707963267948966 rad - pos: -43.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11932 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11933 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11935 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11936 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11937 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11938 - components: - - rot: 1.5707963267948966 rad - pos: -43.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11939 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11942 - components: - - rot: 3.141592653589793 rad - pos: -40.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11943 - components: - - rot: 3.141592653589793 rad - pos: -40.5,6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11944 - components: - - rot: 3.141592653589793 rad - pos: -40.5,7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11945 - components: - - rot: 3.141592653589793 rad - pos: -40.5,8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11946 - components: - - rot: 3.141592653589793 rad - pos: -41.5,7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11947 - components: - - rot: 3.141592653589793 rad - pos: -41.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11950 - components: - - pos: -41.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11951 - components: - - pos: -41.5,4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11953 - components: - - pos: -40.5,1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11956 - components: - - pos: -41.5,-0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11957 - components: - - pos: -41.5,-1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11958 - components: - - pos: -40.5,3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11959 - components: - - pos: -41.5,2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11960 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11962 - components: - - pos: -40.5,-0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11963 - components: - - pos: -40.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11964 - components: - - rot: 3.141592653589793 rad - pos: -41.5,0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11965 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11966 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11967 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11976 - components: - - rot: 3.141592653589793 rad - pos: -44.5,-3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11977 - components: - - rot: 3.141592653589793 rad - pos: -44.5,-4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11978 - components: - - rot: 3.141592653589793 rad - pos: -44.5,-5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11979 - components: - - rot: 3.141592653589793 rad - pos: -43.5,-4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11980 - components: - - rot: 3.141592653589793 rad - pos: -43.5,-5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11981 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11982 - components: - - pos: -43.5,-2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11983 - components: - - pos: -43.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11984 - components: - - pos: -43.5,-0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11985 - components: - - pos: -44.5,-1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11986 - components: - - pos: -44.5,-0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11987 - components: - - pos: -44.5,0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11988 - components: - - pos: -43.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11989 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11990 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11991 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11992 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11993 - components: - - rot: 3.141592653589793 rad - pos: -40.5,-2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12004 - components: - - pos: -37.5,-3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12005 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12006 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12007 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12008 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12010 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12011 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12012 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12013 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12014 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12019 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12021 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12040 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12041 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12042 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12043 - components: - - pos: -38.5,12.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12044 - components: - - pos: -38.5,11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12045 - components: - - pos: -38.5,10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12046 - components: - - pos: -38.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12047 - components: - - pos: -38.5,8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12048 - components: - - pos: -38.5,7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12049 - components: - - pos: -38.5,6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12050 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12051 - components: - - rot: 3.141592653589793 rad - pos: -38.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12054 - components: - - rot: 3.141592653589793 rad - pos: -36.5,11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12055 - components: - - rot: 3.141592653589793 rad - pos: -36.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12056 - components: - - rot: 3.141592653589793 rad - pos: -36.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12057 - components: - - rot: 3.141592653589793 rad - pos: -36.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12058 - components: - - rot: 3.141592653589793 rad - pos: -36.5,7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12059 - components: - - rot: 3.141592653589793 rad - pos: -36.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12060 - components: - - rot: 3.141592653589793 rad - pos: -36.5,4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12061 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12062 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12065 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12066 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12067 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12068 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12069 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12070 - components: - - pos: -32.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12071 - components: - - pos: -32.5,4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12072 - components: - - pos: -32.5,3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12073 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12074 - components: - - rot: 3.141592653589793 rad - pos: -33.5,3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12075 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12076 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12081 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12082 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12083 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12084 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12085 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12086 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12087 - components: - - rot: 1.5707963267948966 rad - pos: -24.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12088 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12089 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12090 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12091 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12092 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12095 - components: - - rot: 3.141592653589793 rad - pos: -25.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12096 - components: - - rot: 3.141592653589793 rad - pos: -25.5,6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12097 - components: - - rot: 3.141592653589793 rad - pos: -25.5,7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12098 - components: - - rot: 3.141592653589793 rad - pos: -25.5,8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12099 - components: - - rot: 3.141592653589793 rad - pos: -23.5,7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12102 - components: - - rot: 3.141592653589793 rad - pos: -23.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12103 - components: - - rot: 3.141592653589793 rad - pos: -23.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12104 - components: - - rot: 3.141592653589793 rad - pos: -25.5,10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12105 - components: - - rot: 3.141592653589793 rad - pos: -23.5,11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12108 - components: - - rot: 3.141592653589793 rad - pos: -25.5,12.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12109 - components: - - rot: 1.5707963267948966 rad - pos: -24.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12110 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12111 - components: - - pos: -25.5,13.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12112 - components: - - pos: -25.5,14.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12113 - components: - - pos: -25.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12114 - components: - - pos: -23.5,13.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12115 - components: - - pos: -23.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12116 - components: - - pos: -23.5,15.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12117 - components: - - rot: -1.5707963267948966 rad - pos: -24.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12118 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12119 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12120 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12121 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12122 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12123 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12124 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12125 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12126 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12134 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12135 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12136 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12137 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12138 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12141 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12142 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12143 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12144 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12145 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12146 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12147 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12148 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12149 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12150 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12151 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12152 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12153 - components: - - rot: -1.5707963267948966 rad - pos: -24.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12154 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12155 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12156 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12157 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12158 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12159 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12160 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12161 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12162 - components: - - rot: 3.141592653589793 rad - pos: -22.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12163 - components: - - rot: 3.141592653589793 rad - pos: -22.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12164 - components: - - rot: 3.141592653589793 rad - pos: -22.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12165 - components: - - rot: 3.141592653589793 rad - pos: -22.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12166 - components: - - rot: 3.141592653589793 rad - pos: -24.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12167 - components: - - rot: 3.141592653589793 rad - pos: -24.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12176 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12177 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12178 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12179 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12180 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12181 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12182 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12183 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12184 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12185 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12187 - components: - - rot: 3.141592653589793 rad - pos: -19.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12188 - components: - - rot: 3.141592653589793 rad - pos: -19.5,37.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12193 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12194 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12195 - components: - - pos: -17.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12196 - components: - - pos: -17.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12197 - components: - - pos: -17.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12198 - components: - - pos: -17.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12199 - components: - - pos: -15.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12200 - components: - - pos: -15.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12203 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12204 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12205 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12206 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12207 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12210 - components: - - rot: 3.141592653589793 rad - pos: -15.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12211 - components: - - rot: 3.141592653589793 rad - pos: -15.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12213 - components: - - rot: 3.141592653589793 rad - pos: -15.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12214 - components: - - rot: 3.141592653589793 rad - pos: -17.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12215 - components: - - rot: 3.141592653589793 rad - pos: -17.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12216 - components: - - rot: 3.141592653589793 rad - pos: -17.5,36.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12226 - components: - - rot: 3.141592653589793 rad - pos: -17.5,38.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12227 - components: - - rot: 3.141592653589793 rad - pos: -17.5,39.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12228 - components: - - rot: 3.141592653589793 rad - pos: -17.5,40.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12229 - components: - - rot: 3.141592653589793 rad - pos: -17.5,41.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12230 - components: - - rot: 3.141592653589793 rad - pos: -17.5,42.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12231 - components: - - rot: 3.141592653589793 rad - pos: -17.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12232 - components: - - rot: 3.141592653589793 rad - pos: -15.5,37.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12233 - components: - - rot: 3.141592653589793 rad - pos: -15.5,39.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12234 - components: - - rot: 3.141592653589793 rad - pos: -15.5,40.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12235 - components: - - rot: 3.141592653589793 rad - pos: -15.5,41.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12236 - components: - - rot: 3.141592653589793 rad - pos: -15.5,42.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12237 - components: - - rot: 3.141592653589793 rad - pos: -15.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12238 - components: - - rot: 3.141592653589793 rad - pos: -15.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12241 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12242 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12243 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12244 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12245 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12246 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12248 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12249 - components: - - rot: 3.141592653589793 rad - pos: -20.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12250 - components: - - rot: 3.141592653589793 rad - pos: -20.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12251 - components: - - rot: 3.141592653589793 rad - pos: -20.5,42.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12252 - components: - - rot: 3.141592653589793 rad - pos: -20.5,41.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12253 - components: - - rot: 3.141592653589793 rad - pos: -20.5,40.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12254 - components: - - rot: 3.141592653589793 rad - pos: -17.5,46.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12264 - components: - - pos: -15.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12265 - components: - - pos: -17.5,48.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12266 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12267 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12268 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12269 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12270 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12271 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12274 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12275 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12276 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12277 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12278 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12279 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12280 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12281 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12282 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12283 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12284 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12285 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12286 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12287 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12288 - components: - - rot: 3.141592653589793 rad - pos: -13.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12289 - components: - - rot: 3.141592653589793 rad - pos: -13.5,6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12290 - components: - - rot: 1.5707963267948966 rad - pos: -12.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12291 - components: - - rot: 1.5707963267948966 rad - pos: -11.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12292 - components: - - pos: -11.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12293 - components: - - pos: -11.5,4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12300 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12301 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12302 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12303 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12304 - components: - - rot: 3.141592653589793 rad - pos: -11.5,7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12305 - components: - - rot: 3.141592653589793 rad - pos: -11.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12306 - components: - - rot: 3.141592653589793 rad - pos: -13.5,7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12307 - components: - - rot: 3.141592653589793 rad - pos: -13.5,8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12308 - components: - - rot: 3.141592653589793 rad - pos: -11.5,3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12309 - components: - - rot: 3.141592653589793 rad - pos: -13.5,3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12312 - components: - - pos: -11.5,3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12313 - components: - - pos: -11.5,2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12314 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12315 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12316 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12317 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12318 - components: - - rot: 3.141592653589793 rad - pos: -13.5,1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12322 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12325 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12326 - components: - - rot: 3.141592653589793 rad - pos: -8.5,1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12327 - components: - - rot: 3.141592653589793 rad - pos: -9.5,0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12328 - components: - - rot: 3.141592653589793 rad - pos: -9.5,-0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12329 - components: - - rot: 3.141592653589793 rad - pos: -8.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12330 - components: - - rot: 3.141592653589793 rad - pos: -8.5,-0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12335 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12336 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12337 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12338 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12339 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12340 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12342 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12343 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12344 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12345 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12346 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12347 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12348 - components: - - rot: 3.141592653589793 rad - pos: -9.5,-3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12350 - components: - - rot: 3.141592653589793 rad - pos: -8.5,-2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12351 - components: - - rot: 3.141592653589793 rad - pos: -9.5,-1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12356 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12357 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12358 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12359 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12360 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12361 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12362 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12363 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12364 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12365 - components: - - rot: 1.5707963267948966 rad - pos: -3.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12369 - components: - - pos: -15.5,-4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12374 - components: - - pos: -16.5,-6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12375 - components: - - pos: -16.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12376 - components: - - pos: -17.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12377 - components: - - pos: -17.5,-10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12378 - components: - - pos: -2.5,-1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12380 - components: - - rot: 3.141592653589793 rad - pos: -3.5,-0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12382 - components: - - rot: 3.141592653589793 rad - pos: -2.5,-0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12385 - components: - - rot: 1.5707963267948966 rad - pos: -2.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12386 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12387 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12388 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12389 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12390 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12391 - components: - - pos: -1.5,-3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12392 - components: - - pos: -1.5,-4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12393 - components: - - pos: -1.5,-5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12394 - components: - - pos: -1.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12395 - components: - - pos: -1.5,-7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12396 - components: - - pos: -1.5,-8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12397 - components: - - pos: -1.5,-9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12403 - components: - - rot: -1.5707963267948966 rad - pos: -5.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12404 - components: - - rot: -1.5707963267948966 rad - pos: -6.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12405 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12406 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12407 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12408 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12409 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12410 - components: - - rot: -1.5707963267948966 rad - pos: -2.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12411 - components: - - rot: -1.5707963267948966 rad - pos: -0.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12412 - components: - - rot: -1.5707963267948966 rad - pos: 0.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12424 - components: - - pos: -13.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12425 - components: - - pos: -13.5,10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12426 - components: - - pos: -11.5,11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12428 - components: - - pos: -11.5,13.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12430 - components: - - pos: -11.5,15.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12431 - components: - - pos: -11.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12433 - components: - - pos: -13.5,12.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12434 - components: - - pos: -13.5,13.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12435 - components: - - pos: -13.5,14.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12436 - components: - - pos: -13.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12437 - components: - - pos: -13.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12438 - components: - - pos: -13.5,17.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12439 - components: - - pos: -13.5,18.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12440 - components: - - pos: -11.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12441 - components: - - pos: -11.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12442 - components: - - pos: -11.5,21.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12443 - components: - - pos: -11.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12444 - components: - - pos: -11.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12445 - components: - - pos: -11.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12446 - components: - - pos: -11.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12447 - components: - - pos: -11.5,26.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12448 - components: - - pos: -13.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12449 - components: - - pos: -13.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12450 - components: - - pos: -13.5,22.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12451 - components: - - pos: -13.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12452 - components: - - pos: -13.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12453 - components: - - pos: -13.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12454 - components: - - pos: -13.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12455 - components: - - pos: -13.5,27.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12456 - components: - - pos: -11.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12457 - components: - - pos: -11.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12458 - components: - - pos: -11.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12459 - components: - - pos: -11.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12460 - components: - - pos: -11.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12461 - components: - - pos: -13.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12462 - components: - - pos: -13.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12463 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12464 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12465 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12466 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12467 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12468 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12469 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12470 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12471 - components: - - rot: 3.141592653589793 rad - pos: -7.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12472 - components: - - rot: 3.141592653589793 rad - pos: -7.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12473 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12474 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12477 - components: - - rot: 3.141592653589793 rad - pos: -8.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12478 - components: - - rot: 3.141592653589793 rad - pos: -7.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12479 - components: - - rot: 3.141592653589793 rad - pos: -7.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12480 - components: - - rot: 3.141592653589793 rad - pos: -8.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12489 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12490 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12491 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12492 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12493 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12494 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12495 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12496 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12497 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12498 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12499 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12500 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12511 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12519 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12520 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12521 - components: - - rot: -1.5707963267948966 rad - pos: -6.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12522 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12523 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12524 - components: - - rot: -1.5707963267948966 rad - pos: -5.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12525 - components: - - rot: -1.5707963267948966 rad - pos: -4.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12526 - components: - - rot: -1.5707963267948966 rad - pos: -3.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12527 - components: - - rot: -1.5707963267948966 rad - pos: -2.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12528 - components: - - rot: -1.5707963267948966 rad - pos: -1.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12529 - components: - - rot: -1.5707963267948966 rad - pos: -0.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12531 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12532 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12533 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12534 - components: - - rot: -1.5707963267948966 rad - pos: -4.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12535 - components: - - rot: -1.5707963267948966 rad - pos: -3.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12536 - components: - - rot: -1.5707963267948966 rad - pos: -2.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12537 - components: - - rot: -1.5707963267948966 rad - pos: -1.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12539 - components: - - rot: -1.5707963267948966 rad - pos: 0.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12540 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12541 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12542 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12543 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12544 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12545 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12546 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12547 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12548 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12549 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12550 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12551 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12552 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12553 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12555 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12556 - components: - - rot: 1.5707963267948966 rad - pos: 12.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12557 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12558 - components: - - rot: 1.5707963267948966 rad - pos: 12.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12559 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12560 - components: - - pos: 10.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12561 - components: - - pos: 10.5,4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12562 - components: - - pos: 10.5,3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12563 - components: - - pos: 10.5,2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12564 - components: - - pos: 11.5,3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12565 - components: - - pos: 11.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12568 - components: - - pos: 10.5,-1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12571 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12572 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12573 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12574 - components: - - rot: 3.141592653589793 rad - pos: 10.5,-0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12575 - components: - - rot: 3.141592653589793 rad - pos: 10.5,0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12576 - components: - - rot: 3.141592653589793 rad - pos: 11.5,1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12577 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12578 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12579 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12580 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12581 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12590 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12591 - components: - - rot: 3.141592653589793 rad - pos: 15.5,-0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12592 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12594 - components: - - rot: 3.141592653589793 rad - pos: 15.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12597 - components: - - rot: -1.5707963267948966 rad - pos: 15.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12598 - components: - - rot: -1.5707963267948966 rad - pos: 14.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12599 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12600 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12601 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12602 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12603 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12604 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12613 - components: - - rot: -1.5707963267948966 rad - pos: 12.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12614 - components: - - rot: -1.5707963267948966 rad - pos: 12.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12617 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12618 - components: - - rot: 1.5707963267948966 rad - pos: 15.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12619 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12620 - components: - - rot: 1.5707963267948966 rad - pos: 17.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12621 - components: - - rot: 1.5707963267948966 rad - pos: 18.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12622 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12623 - components: - - rot: 1.5707963267948966 rad - pos: 15.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12624 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12625 - components: - - pos: 17.5,6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12626 - components: - - pos: 17.5,7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12627 - components: - - pos: 17.5,8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12628 - components: - - pos: 17.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12629 - components: - - pos: 19.5,7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12630 - components: - - pos: 19.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12631 - components: - - pos: 19.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12632 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12633 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12634 - components: - - rot: -1.5707963267948966 rad - pos: 20.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12637 - components: - - rot: 1.5707963267948966 rad - pos: 21.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12638 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12639 - components: - - rot: 1.5707963267948966 rad - pos: 23.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12640 - components: - - rot: 1.5707963267948966 rad - pos: 24.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12641 - components: - - rot: 1.5707963267948966 rad - pos: 25.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12642 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12643 - components: - - rot: 1.5707963267948966 rad - pos: 23.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12644 - components: - - rot: 1.5707963267948966 rad - pos: 24.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12646 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12648 - components: - - pos: 26.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12649 - components: - - pos: 26.5,4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12650 - components: - - pos: 25.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12660 - components: - - rot: 3.141592653589793 rad - pos: 27.5,6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12661 - components: - - rot: 1.5707963267948966 rad - pos: 27.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12664 - components: - - pos: 26.5,7.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12671 - components: - - pos: 26.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12672 - components: - - pos: 26.5,11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12673 - components: - - pos: 26.5,13.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12674 - components: - - pos: 26.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12675 - components: - - pos: 26.5,15.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12676 - components: - - pos: 26.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12677 - components: - - pos: 26.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12678 - components: - - pos: 26.5,21.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12679 - components: - - pos: 26.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12680 - components: - - pos: 26.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12681 - components: - - pos: 27.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12682 - components: - - pos: 27.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12683 - components: - - pos: 27.5,22.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12684 - components: - - pos: 27.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12685 - components: - - pos: 27.5,18.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12686 - components: - - pos: 27.5,17.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12687 - components: - - pos: 27.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12688 - components: - - pos: 27.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12689 - components: - - pos: 27.5,14.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12690 - components: - - pos: 27.5,13.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12691 - components: - - pos: 27.5,12.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12692 - components: - - pos: 27.5,10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12693 - components: - - pos: 27.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12694 - components: - - pos: 27.5,8.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12695 - components: - - pos: 27.5,7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12696 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12697 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12698 - components: - - rot: -1.5707963267948966 rad - pos: 29.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12699 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12700 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12701 - components: - - rot: -1.5707963267948966 rad - pos: 29.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12702 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12703 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12704 - components: - - rot: -1.5707963267948966 rad - pos: 29.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12705 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12706 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12707 - components: - - rot: -1.5707963267948966 rad - pos: 29.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12718 - components: - - rot: -1.5707963267948966 rad - pos: -5.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12719 - components: - - rot: -1.5707963267948966 rad - pos: -5.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12722 - components: - - rot: 3.141592653589793 rad - pos: -3.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12723 - components: - - rot: 3.141592653589793 rad - pos: -3.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12724 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12725 - components: - - rot: 1.5707963267948966 rad - pos: -3.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12730 - components: - - rot: 3.141592653589793 rad - pos: -1.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12731 - components: - - rot: 3.141592653589793 rad - pos: -1.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12732 - components: - - rot: 3.141592653589793 rad - pos: -1.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12733 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12734 - components: - - rot: 1.5707963267948966 rad - pos: -2.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12738 - components: - - rot: 3.141592653589793 rad - pos: 10.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12739 - components: - - rot: 3.141592653589793 rad - pos: 9.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12740 - components: - - rot: 3.141592653589793 rad - pos: 10.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12741 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12742 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12744 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12745 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12746 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,14.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12749 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12750 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12753 - components: - - pos: 8.5,15.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12754 - components: - - pos: 8.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12755 - components: - - pos: 6.5,15.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12756 - components: - - pos: 6.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12757 - components: - - pos: 11.5,15.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12758 - components: - - pos: 11.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12852 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12853 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12854 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12855 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12856 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12857 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12960 - components: - - pos: -17.5,49.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12961 - components: - - pos: -17.5,50.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12962 - components: - - pos: -17.5,51.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12963 - components: - - pos: -17.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12964 - components: - - pos: -17.5,53.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12965 - components: - - pos: -15.5,49.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12966 - components: - - pos: -15.5,50.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12967 - components: - - pos: -15.5,51.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12968 - components: - - pos: -15.5,52.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12969 - components: - - pos: -15.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12972 - components: - - pos: -15.5,54.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12973 - components: - - pos: -17.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12975 - components: - - pos: -15.5,56.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12977 - components: - - rot: 3.141592653589793 rad - pos: -17.5,57.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12978 - components: - - rot: 3.141592653589793 rad - pos: -17.5,58.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12979 - components: - - rot: 3.141592653589793 rad - pos: -15.5,58.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12982 - components: - - rot: 3.141592653589793 rad - pos: -15.5,59.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12983 - components: - - rot: 3.141592653589793 rad - pos: -17.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12984 - components: - - rot: 3.141592653589793 rad - pos: -17.5,61.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12985 - components: - - rot: 3.141592653589793 rad - pos: -17.5,62.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12986 - components: - - rot: 3.141592653589793 rad - pos: -15.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12987 - components: - - rot: 3.141592653589793 rad - pos: -15.5,62.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12988 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12989 - components: - - rot: 1.5707963267948966 rad - pos: -15.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12990 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12991 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12992 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12993 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12994 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12995 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12996 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12997 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12998 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12999 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13000 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13001 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13002 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13003 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13009 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13017 - components: - - pos: -12.5,54.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13018 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13019 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13020 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13021 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13022 - components: - - rot: 3.141592653589793 rad - pos: -7.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13023 - components: - - rot: 3.141592653589793 rad - pos: -7.5,56.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13024 - components: - - rot: 3.141592653589793 rad - pos: -7.5,57.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13025 - components: - - rot: 3.141592653589793 rad - pos: -7.5,58.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13026 - components: - - rot: 3.141592653589793 rad - pos: -7.5,59.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13027 - components: - - rot: 3.141592653589793 rad - pos: -8.5,56.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13028 - components: - - rot: 3.141592653589793 rad - pos: -8.5,57.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13029 - components: - - rot: 3.141592653589793 rad - pos: -8.5,58.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13030 - components: - - rot: 3.141592653589793 rad - pos: -8.5,59.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13639 - components: - - rot: 1.5707963267948966 rad - pos: -89.5,44.5 - parent: 1 - type: Transform - - uid: 13640 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,44.5 - parent: 1 - type: Transform - - uid: 13641 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,44.5 - parent: 1 - type: Transform - - uid: 13642 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,44.5 - parent: 1 - type: Transform - - uid: 13643 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,44.5 - parent: 1 - type: Transform - - uid: 13644 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,45.5 - parent: 1 - type: Transform - - uid: 13645 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,45.5 - parent: 1 - type: Transform - - uid: 13646 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,45.5 - parent: 1 - type: Transform - - uid: 13647 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,43.5 - parent: 1 - type: Transform - - uid: 13648 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,43.5 - parent: 1 - type: Transform - - uid: 13649 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,43.5 - parent: 1 - type: Transform - - uid: 13650 - components: - - rot: 1.5707963267948966 rad - pos: -89.5,42.5 - parent: 1 - type: Transform - - uid: 13651 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,42.5 - parent: 1 - type: Transform - - uid: 13652 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,42.5 - parent: 1 - type: Transform - - uid: 13653 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,42.5 - parent: 1 - type: Transform - - uid: 13654 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,42.5 - parent: 1 - type: Transform - - uid: 13656 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,41.5 - parent: 1 - type: Transform - - uid: 13668 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,41.5 - parent: 1 - type: Transform - - uid: 13670 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,41.5 - parent: 1 - type: Transform - - uid: 13677 - components: - - rot: 1.5707963267948966 rad - pos: -89.5,40.5 - parent: 1 - type: Transform - - uid: 13678 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,40.5 - parent: 1 - type: Transform - - uid: 13679 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,40.5 - parent: 1 - type: Transform - - uid: 13680 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,40.5 - parent: 1 - type: Transform - - uid: 13681 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,40.5 - parent: 1 - type: Transform - - uid: 13685 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,39.5 - parent: 1 - type: Transform - - uid: 13686 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,39.5 - parent: 1 - type: Transform - - uid: 13687 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,39.5 - parent: 1 - type: Transform - - uid: 13688 - components: - - rot: 1.5707963267948966 rad - pos: -89.5,38.5 - parent: 1 - type: Transform - - uid: 13689 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,38.5 - parent: 1 - type: Transform - - uid: 13690 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,38.5 - parent: 1 - type: Transform - - uid: 13691 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,38.5 - parent: 1 - type: Transform - - uid: 13692 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,38.5 - parent: 1 - type: Transform - - uid: 13693 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,37.5 - parent: 1 - type: Transform - - uid: 13694 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,37.5 - parent: 1 - type: Transform - - uid: 13695 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,37.5 - parent: 1 - type: Transform - - uid: 13696 - components: - - rot: 1.5707963267948966 rad - pos: -89.5,36.5 - parent: 1 - type: Transform - - uid: 13697 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,36.5 - parent: 1 - type: Transform - - uid: 13698 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,36.5 - parent: 1 - type: Transform - - uid: 13702 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,36.5 - parent: 1 - type: Transform - - uid: 13703 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,36.5 - parent: 1 - type: Transform - - uid: 13711 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,35.5 - parent: 1 - type: Transform - - uid: 13712 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,35.5 - parent: 1 - type: Transform - - uid: 13713 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,35.5 - parent: 1 - type: Transform - - uid: 13714 - components: - - rot: 1.5707963267948966 rad - pos: -89.5,34.5 - parent: 1 - type: Transform - - uid: 13715 - components: - - rot: 1.5707963267948966 rad - pos: -88.5,34.5 - parent: 1 - type: Transform - - uid: 13716 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,34.5 - parent: 1 - type: Transform - - uid: 13717 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,34.5 - parent: 1 - type: Transform - - uid: 13718 - components: - - rot: 1.5707963267948966 rad - pos: -85.5,34.5 - parent: 1 - type: Transform - - uid: 13779 - components: - - pos: -84.5,47.5 - parent: 1 - type: Transform - - uid: 13857 - components: - - rot: 3.141592653589793 rad - pos: -84.5,47.5 - parent: 1 - type: Transform - - uid: 13864 - components: - - rot: 3.141592653589793 rad - pos: -83.5,48.5 - parent: 1 - type: Transform - - uid: 13865 - components: - - rot: 3.141592653589793 rad - pos: -83.5,49.5 - parent: 1 - type: Transform - - uid: 13866 - components: - - rot: 3.141592653589793 rad - pos: -81.5,49.5 - parent: 1 - type: Transform - - uid: 13867 - components: - - rot: 3.141592653589793 rad - pos: -81.5,48.5 - parent: 1 - type: Transform - - uid: 13868 - components: - - rot: 3.141592653589793 rad - pos: -81.5,47.5 - parent: 1 - type: Transform - - uid: 13915 - components: - - rot: -1.5707963267948966 rad - pos: -85.5,33.5 - parent: 1 - type: Transform - - uid: 13936 - components: - - rot: -1.5707963267948966 rad - pos: -76.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13937 - components: - - rot: -1.5707963267948966 rad - pos: -77.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13938 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13939 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13940 - components: - - rot: -1.5707963267948966 rad - pos: -74.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13942 - components: - - rot: 3.141592653589793 rad - pos: -77.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13943 - components: - - rot: 3.141592653589793 rad - pos: -76.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13944 - components: - - rot: 3.141592653589793 rad - pos: -77.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13945 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,41.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13946 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13947 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13948 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13949 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13952 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13953 - components: - - pos: -61.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13954 - components: - - rot: -1.5707963267948966 rad - pos: -61.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13955 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13956 - components: - - rot: 3.141592653589793 rad - pos: -62.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13957 - components: - - rot: 3.141592653589793 rad - pos: -62.5,42.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13958 - components: - - rot: 3.141592653589793 rad - pos: -61.5,42.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13959 - components: - - rot: 3.141592653589793 rad - pos: -62.5,41.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13960 - components: - - rot: 3.141592653589793 rad - pos: -61.5,41.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13965 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13966 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13967 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13968 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13969 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13970 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13971 - components: - - pos: -66.5,48.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13973 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13974 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13975 - components: - - rot: 1.5707963267948966 rad - pos: -69.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13976 - components: - - pos: -66.5,49.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13977 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13978 - components: - - pos: -67.5,51.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13979 - components: - - rot: -1.5707963267948966 rad - pos: -68.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13980 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13986 - components: - - pos: -61.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13987 - components: - - pos: -61.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13988 - components: - - rot: -1.5707963267948966 rad - pos: -62.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13989 - components: - - rot: -1.5707963267948966 rad - pos: -63.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13990 - components: - - rot: -1.5707963267948966 rad - pos: -64.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13991 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13992 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13993 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13994 - components: - - rot: -1.5707963267948966 rad - pos: -68.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13995 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14013 - components: - - pos: -73.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14014 - components: - - pos: -73.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14015 - components: - - pos: -73.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14016 - components: - - pos: -73.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14017 - components: - - pos: -74.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14018 - components: - - pos: -74.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14019 - components: - - pos: -74.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14020 - components: - - rot: -1.5707963267948966 rad - pos: -73.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14025 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14026 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14027 - components: - - pos: -70.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14028 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14032 - components: - - rot: 3.141592653589793 rad - pos: -70.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14033 - components: - - rot: 3.141592653589793 rad - pos: -70.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14034 - components: - - rot: 3.141592653589793 rad - pos: -70.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14035 - components: - - rot: 1.5707963267948966 rad - pos: -69.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14036 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14056 - components: - - pos: -74.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14057 - components: - - pos: -74.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14058 - components: - - pos: -74.5,27.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14059 - components: - - pos: -74.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14060 - components: - - pos: -73.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14061 - components: - - pos: -73.5,26.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14062 - components: - - pos: -73.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14063 - components: - - pos: -73.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14064 - components: - - pos: -73.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14065 - components: - - pos: -74.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14066 - components: - - pos: -74.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14067 - components: - - pos: -74.5,22.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14068 - components: - - pos: -73.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14069 - components: - - pos: -73.5,21.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14070 - components: - - rot: -1.5707963267948966 rad - pos: -73.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14071 - components: - - pos: -73.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14072 - components: - - pos: -73.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14073 - components: - - pos: -73.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14074 - components: - - rot: -1.5707963267948966 rad - pos: -72.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14075 - components: - - rot: -1.5707963267948966 rad - pos: -72.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14076 - components: - - rot: -1.5707963267948966 rad - pos: -74.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14077 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14078 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14079 - components: - - rot: 3.141592653589793 rad - pos: -74.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14080 - components: - - rot: 3.141592653589793 rad - pos: -74.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14081 - components: - - rot: 3.141592653589793 rad - pos: -74.5,18.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14082 - components: - - rot: 3.141592653589793 rad - pos: -74.5,17.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14083 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14084 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14085 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14088 - components: - - rot: 3.141592653589793 rad - pos: -70.5,21.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14089 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14090 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14091 - components: - - rot: -1.5707963267948966 rad - pos: -68.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14092 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14093 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14094 - components: - - rot: -1.5707963267948966 rad - pos: -68.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14095 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14096 - components: - - rot: -1.5707963267948966 rad - pos: -71.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14097 - components: - - rot: 3.141592653589793 rad - pos: -71.5,22.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14098 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14099 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14100 - components: - - rot: -1.5707963267948966 rad - pos: -68.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14101 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14102 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14103 - components: - - rot: -1.5707963267948966 rad - pos: -68.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14104 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14105 - components: - - rot: 3.141592653589793 rad - pos: -71.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14117 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14118 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14119 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14120 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14121 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14122 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14123 - components: - - rot: -1.5707963267948966 rad - pos: -64.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14124 - components: - - rot: 3.141592653589793 rad - pos: -63.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14125 - components: - - rot: 3.141592653589793 rad - pos: -64.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14126 - components: - - rot: 3.141592653589793 rad - pos: -64.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14127 - components: - - rot: 3.141592653589793 rad - pos: -63.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14128 - components: - - rot: 3.141592653589793 rad - pos: -63.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14129 - components: - - rot: 3.141592653589793 rad - pos: -64.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14130 - components: - - rot: 3.141592653589793 rad - pos: -63.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14131 - components: - - rot: 3.141592653589793 rad - pos: -63.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14132 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14139 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14140 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14142 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14143 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14144 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14145 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14147 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14150 - components: - - rot: 1.5707963267948966 rad - pos: -76.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14151 - components: - - rot: 1.5707963267948966 rad - pos: -77.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14152 - components: - - rot: 1.5707963267948966 rad - pos: -78.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14153 - components: - - rot: 1.5707963267948966 rad - pos: -79.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14154 - components: - - rot: 1.5707963267948966 rad - pos: -76.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14155 - components: - - rot: 1.5707963267948966 rad - pos: -77.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14156 - components: - - rot: 1.5707963267948966 rad - pos: -78.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14157 - components: - - rot: 1.5707963267948966 rad - pos: -79.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14162 - components: - - rot: 3.141592653589793 rad - pos: -61.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14205 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 15864 - components: - - pos: 7.5,49.5 - parent: 1 - type: Transform -- proto: GasPipeTJunction - entities: - - uid: 1778 - components: - - rot: 3.141592653589793 rad - pos: 14.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2256 - components: - - rot: 3.141592653589793 rad - pos: -0.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2257 - components: - - rot: 3.141592653589793 rad - pos: 0.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2394 - components: - - rot: 3.141592653589793 rad - pos: 7.5,35.5 - parent: 1 - type: Transform - - uid: 2411 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2416 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2418 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2421 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2422 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2423 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2424 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2425 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2459 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2461 - components: - - rot: 1.5707963267948966 rad - pos: 15.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2485 - components: - - rot: 3.141592653589793 rad - pos: 8.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2486 - components: - - rot: 3.141592653589793 rad - pos: 9.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2683 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2684 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2686 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2863 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3001 - components: - - pos: 3.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3002 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3558 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3706 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3708 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4782 - components: - - pos: -64.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4784 - components: - - rot: -1.5707963267948966 rad - pos: -58.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4805 - components: - - pos: -65.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 7846 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8691 - components: - - pos: -48.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8698 - components: - - pos: -50.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8699 - components: - - pos: -53.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8700 - components: - - pos: -56.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8702 - components: - - rot: 3.141592653589793 rad - pos: -52.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8704 - components: - - rot: 3.141592653589793 rad - pos: -55.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8722 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,56.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8724 - components: - - rot: 3.141592653589793 rad - pos: -56.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8727 - components: - - rot: 3.141592653589793 rad - pos: -53.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8733 - components: - - pos: -54.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8734 - components: - - pos: -51.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8735 - components: - - pos: -57.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8736 - components: - - rot: 3.141592653589793 rad - pos: -50.5,55.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8782 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8783 - components: - - rot: 1.5707963267948966 rad - pos: -50.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8784 - components: - - rot: 3.141592653589793 rad - pos: -55.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8785 - components: - - rot: 3.141592653589793 rad - pos: -54.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8787 - components: - - rot: 3.141592653589793 rad - pos: -58.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8788 - components: - - rot: 3.141592653589793 rad - pos: -59.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8793 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,63.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8814 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,67.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8817 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,62.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8850 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,80.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8911 - components: - - rot: 3.141592653589793 rad - pos: -54.5,83.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8912 - components: - - pos: -55.5,84.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8913 - components: - - pos: -55.5,89.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8914 - components: - - rot: 3.141592653589793 rad - pos: -54.5,88.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8915 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,83.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8916 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,84.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8917 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,85.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8918 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,84.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 10050 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10083 - components: - - rot: 3.141592653589793 rad - pos: 6.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10084 - components: - - pos: 7.5,20.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 10231 - components: - - rot: 3.141592653589793 rad - pos: -41.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10244 - components: - - pos: -39.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10306 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 10308 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10953 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,42.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10954 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,41.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11086 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11093 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,37.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11094 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11095 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11096 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,38.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11103 - components: - - rot: 3.141592653589793 rad - pos: -58.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11125 - components: - - pos: -57.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11134 - components: - - pos: -52.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11137 - components: - - rot: 3.141592653589793 rad - pos: -53.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11147 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11156 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11167 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,41.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11168 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,42.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11169 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11184 - components: - - pos: -42.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11185 - components: - - rot: 3.141592653589793 rad - pos: -40.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11211 - components: - - pos: -36.5,44.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11212 - components: - - pos: -35.5,43.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11223 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11224 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11258 - components: - - rot: 3.141592653589793 rad - pos: -54.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11266 - components: - - rot: 3.141592653589793 rad - pos: -51.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11267 - components: - - rot: 3.141592653589793 rad - pos: -50.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11268 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11269 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,36.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11271 - components: - - rot: 3.141592653589793 rad - pos: -53.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11274 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11280 - components: - - rot: 3.141592653589793 rad - pos: -46.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11293 - components: - - pos: -50.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11294 - components: - - pos: -51.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11308 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11518 - components: - - rot: 3.141592653589793 rad - pos: -43.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11519 - components: - - pos: -42.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11536 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11543 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11579 - components: - - rot: 3.141592653589793 rad - pos: -32.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11580 - components: - - rot: 3.141592653589793 rad - pos: -31.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11601 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11602 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,27.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11603 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11604 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11605 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11606 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11607 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,13.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11608 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11614 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11616 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11662 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11670 - components: - - rot: 3.141592653589793 rad - pos: -34.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11681 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11682 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11689 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11692 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11700 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11701 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,18.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11702 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11703 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11704 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11705 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11706 - components: - - rot: 3.141592653589793 rad - pos: -53.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11707 - components: - - rot: 3.141592653589793 rad - pos: -54.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11757 - components: - - rot: 3.141592653589793 rad - pos: -67.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11758 - components: - - pos: -66.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11760 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11764 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11815 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,-1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11816 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,-2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11817 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,-5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11818 - components: - - pos: -57.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11819 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11888 - components: - - rot: 3.141592653589793 rad - pos: -49.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11889 - components: - - pos: -48.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11952 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11954 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11955 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11961 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12002 - components: - - pos: -37.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12003 - components: - - pos: -36.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12077 - components: - - pos: -33.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12078 - components: - - pos: -32.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12093 - components: - - rot: 3.141592653589793 rad - pos: -25.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12100 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12101 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12106 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12107 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12133 - components: - - rot: 3.141592653589793 rad - pos: -24.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12168 - components: - - pos: -24.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12169 - components: - - pos: -22.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12170 - components: - - rot: 3.141592653589793 rad - pos: -31.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12171 - components: - - pos: -30.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12201 - components: - - pos: -13.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12202 - components: - - pos: -11.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12208 - components: - - pos: -16.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12209 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12212 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12222 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12223 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,38.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12224 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12225 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12239 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12240 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12247 - components: - - pos: -20.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12262 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12263 - components: - - rot: 1.5707963267948966 rad - pos: -15.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12294 - components: - - rot: 3.141592653589793 rad - pos: -17.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12295 - components: - - pos: -16.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12310 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12311 - components: - - rot: 1.5707963267948966 rad - pos: -11.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12323 - components: - - pos: -9.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12324 - components: - - pos: -8.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12333 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12334 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12341 - components: - - pos: -15.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12366 - components: - - rot: 3.141592653589793 rad - pos: -3.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12367 - components: - - rot: 3.141592653589793 rad - pos: -2.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12368 - components: - - pos: -1.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12398 - components: - - rot: 3.141592653589793 rad - pos: -1.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12417 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12418 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12419 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12420 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12421 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12422 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12429 - components: - - rot: 1.5707963267948966 rad - pos: -11.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12475 - components: - - pos: -8.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12476 - components: - - pos: -7.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12513 - components: - - pos: -6.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12514 - components: - - rot: 3.141592653589793 rad - pos: -5.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12515 - components: - - pos: 4.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12516 - components: - - rot: 3.141592653589793 rad - pos: 5.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12517 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12518 - components: - - pos: 10.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12530 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,17.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12538 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,14.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12566 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12567 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12569 - components: - - rot: 3.141592653589793 rad - pos: 10.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12570 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12593 - components: - - rot: 3.141592653589793 rad - pos: 15.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12615 - components: - - rot: 3.141592653589793 rad - pos: 19.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12616 - components: - - rot: 3.141592653589793 rad - pos: 17.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12635 - components: - - pos: 20.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12636 - components: - - rot: 3.141592653589793 rad - pos: 21.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12645 - components: - - pos: 25.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12659 - components: - - rot: 3.141592653589793 rad - pos: 27.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12662 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12663 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12665 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12666 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12667 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12668 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12669 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12670 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12720 - components: - - rot: 3.141592653589793 rad - pos: -4.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12721 - components: - - rot: 3.141592653589793 rad - pos: -3.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12737 - components: - - pos: 9.5,14.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12747 - components: - - rot: 3.141592653589793 rad - pos: 9.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12748 - components: - - pos: 8.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12974 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,56.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12976 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,57.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12980 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,59.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12981 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,60.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13008 - components: - - pos: -12.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13016 - components: - - pos: -11.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13546 - components: - - rot: -1.5707963267948966 rad - pos: -48.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13905 - components: - - pos: -77.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13909 - components: - - pos: -76.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13941 - components: - - pos: -74.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13950 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13951 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,43.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13963 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13972 - components: - - rot: 3.141592653589793 rad - pos: -66.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14012 - components: - - pos: -73.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14029 - components: - - pos: -70.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14030 - components: - - pos: -69.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14031 - components: - - rot: 3.141592653589793 rad - pos: -68.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14048 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14049 - components: - - rot: -1.5707963267948966 rad - pos: -73.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14050 - components: - - rot: -1.5707963267948966 rad - pos: -74.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14051 - components: - - rot: -1.5707963267948966 rad - pos: -73.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14052 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14053 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14086 - components: - - rot: -1.5707963267948966 rad - pos: -71.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14087 - components: - - pos: -70.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14137 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14138 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14141 - components: - - rot: 3.141592653589793 rad - pos: -61.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14146 - components: - - rot: 3.141592653589793 rad - pos: -60.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor -- proto: GasPort - entities: - - uid: 366 - components: - - pos: 0.5,-8.5 - parent: 1 - type: Transform - - uid: 367 - components: - - pos: 2.5,-8.5 - parent: 1 - type: Transform - - uid: 1417 - components: - - pos: 12.5,37.5 - parent: 1 - type: Transform - - uid: 2398 - components: - - pos: 6.5,37.5 - parent: 1 - type: Transform - - uid: 15136 - components: - - rot: -1.5707963267948966 rad - pos: -77.5,38.5 - parent: 1 - type: Transform - - uid: 15137 - components: - - rot: -1.5707963267948966 rad - pos: -77.5,37.5 - parent: 1 - type: Transform - - uid: 15138 - components: - - rot: -1.5707963267948966 rad - pos: -77.5,36.5 - parent: 1 - type: Transform -- proto: GasPressurePump - entities: - - uid: 362 - components: - - rot: 3.141592653589793 rad - pos: 0.5,-9.5 - parent: 1 - type: Transform - - uid: 363 - components: - - pos: 2.5,-9.5 - parent: 1 - type: Transform - - uid: 2396 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,35.5 - parent: 1 - type: Transform - - uid: 13904 - components: - - rot: -1.5707963267948966 rad - pos: -78.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13908 - components: - - rot: 1.5707963267948966 rad - pos: -78.5,35.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 15139 - components: - - rot: -1.5707963267948966 rad - pos: -78.5,36.5 - parent: 1 - type: Transform - - uid: 15140 - components: - - rot: -1.5707963267948966 rad - pos: -78.5,37.5 - parent: 1 - type: Transform - - uid: 15141 - components: - - rot: -1.5707963267948966 rad - pos: -78.5,38.5 - parent: 1 - type: Transform -- proto: GasRecyclerMachineCircuitboard - entities: - - uid: 15375 - components: - - pos: -52.478607,23.323547 - parent: 1 - type: Transform -- proto: GasThermoMachineFreezer - entities: - - uid: 2384 - components: - - pos: 7.5,36.5 - parent: 1 - type: Transform - - uid: 13921 - components: - - pos: -77.5,39.5 - parent: 1 - type: Transform - - uid: 13922 - components: - - pos: -77.5,40.5 - parent: 1 - type: Transform -- proto: GasThermoMachineHeater - entities: - - uid: 13923 - components: - - pos: -77.5,41.5 - parent: 1 - type: Transform -- proto: GasValve - entities: - - uid: 13756 - components: - - rot: -1.5707963267948966 rad - pos: -84.5,33.5 - parent: 1 - type: Transform - - open: False - type: GasValve -- proto: GasVentPump - entities: - - uid: 1331 - components: - - pos: 0.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2102 - components: - - pos: -4.5,34.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2666 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,31.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2670 - components: - - pos: 3.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2671 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2672 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2673 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 2674 - components: - - pos: 8.5,30.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3019 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3020 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3021 - components: - - rot: -1.5707963267948966 rad - pos: 3.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 3573 - components: - - rot: 3.141592653589793 rad - pos: -39.5,-11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4749 - components: - - rot: 3.141592653589793 rad - pos: -58.5,-11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4800 - components: - - rot: 3.141592653589793 rad - pos: -65.5,-11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 4802 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5688 - components: - - rot: 3.141592653589793 rad - pos: -17.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 5692 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8686 - components: - - rot: 3.141592653589793 rad - pos: -47.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8697 - components: - - pos: -47.5,59.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8761 - components: - - rot: 3.141592653589793 rad - pos: -51.5,50.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8762 - components: - - rot: 3.141592653589793 rad - pos: -54.5,50.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8763 - components: - - rot: 3.141592653589793 rad - pos: -57.5,50.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8764 - components: - - rot: 3.141592653589793 rad - pos: -61.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8765 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,57.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8779 - components: - - pos: -53.5,56.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8845 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8846 - components: - - pos: -59.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8847 - components: - - pos: -55.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8848 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,63.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8849 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,64.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8881 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,67.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8882 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,80.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8883 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,84.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8885 - components: - - pos: -54.5,84.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8887 - components: - - rot: 3.141592653589793 rad - pos: -55.5,88.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8928 - components: - - rot: 3.141592653589793 rad - pos: -58.5,87.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 8967 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,83.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10258 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10337 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10703 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10805 - components: - - pos: 6.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 10955 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,42.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11119 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,38.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11124 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11145 - components: - - rot: 3.141592653589793 rad - pos: -52.5,46.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11172 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,42.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11192 - components: - - rot: 3.141592653589793 rad - pos: -42.5,42.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11208 - components: - - pos: -40.5,50.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11238 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,46.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11239 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11240 - components: - - rot: 3.141592653589793 rad - pos: -35.5,42.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11272 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,36.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11304 - components: - - rot: 3.141592653589793 rad - pos: -50.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11306 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11317 - components: - - pos: -52.5,40.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11318 - components: - - pos: -51.5,36.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11321 - components: - - pos: -53.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11557 - components: - - rot: 3.141592653589793 rad - pos: -42.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11558 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11592 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11593 - components: - - pos: -36.5,40.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11594 - components: - - pos: -32.5,39.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11595 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11640 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11641 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11642 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11647 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11676 - components: - - pos: -34.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11677 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,23.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11698 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11752 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11753 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11754 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,11.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11755 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11756 - components: - - pos: -53.5,19.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11790 - components: - - rot: 3.141592653589793 rad - pos: -57.5,4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11813 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11814 - components: - - rot: 3.141592653589793 rad - pos: -66.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11840 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11841 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,-1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11926 - components: - - rot: 3.141592653589793 rad - pos: -48.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11948 - components: - - pos: -41.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11968 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11969 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11996 - components: - - pos: -44.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11997 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 11998 - components: - - rot: 3.141592653589793 rad - pos: -44.5,-6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12016 - components: - - rot: 3.141592653589793 rad - pos: -37.5,-4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12063 - components: - - rot: 3.141592653589793 rad - pos: -36.5,3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12079 - components: - - rot: 3.141592653589793 rad - pos: -32.5,2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12130 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12131 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12132 - components: - - pos: -23.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12139 - components: - - rot: 3.141592653589793 rad - pos: -23.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12172 - components: - - rot: 3.141592653589793 rad - pos: -30.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12174 - components: - - rot: 3.141592653589793 rad - pos: -22.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12218 - components: - - rot: 3.141592653589793 rad - pos: -16.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12255 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,37.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12256 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,44.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12257 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12258 - components: - - rot: 3.141592653589793 rad - pos: -20.5,39.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12273 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12296 - components: - - rot: 3.141592653589793 rad - pos: -16.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12321 - components: - - rot: 3.141592653589793 rad - pos: -11.5,0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12332 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12353 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12354 - components: - - rot: 3.141592653589793 rad - pos: -9.5,-4.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12383 - components: - - pos: -2.5,0.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12413 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12414 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,-10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12415 - components: - - rot: 1.5707963267948966 rad - pos: -12.5,-12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12485 - components: - - rot: 3.141592653589793 rad - pos: -7.5,28.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12486 - components: - - rot: 1.5707963267948966 rad - pos: -12.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12487 - components: - - rot: 1.5707963267948966 rad - pos: -12.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12488 - components: - - rot: 1.5707963267948966 rad - pos: -12.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12506 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12507 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12508 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,9.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12509 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12510 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,14.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12582 - components: - - rot: 3.141592653589793 rad - pos: -6.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12583 - components: - - rot: 3.141592653589793 rad - pos: 4.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12584 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,1.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12585 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12596 - components: - - pos: 15.5,2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12605 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,-2.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12655 - components: - - pos: 19.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12656 - components: - - rot: 3.141592653589793 rad - pos: 20.5,5.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12657 - components: - - rot: 3.141592653589793 rad - pos: 26.5,3.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12658 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,6.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12708 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,8.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12709 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,10.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12710 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,12.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12711 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,16.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12712 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12713 - components: - - rot: -1.5707963267948966 rad - pos: 27.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12714 - components: - - pos: 26.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12762 - components: - - rot: 3.141592653589793 rad - pos: 6.5,13.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12763 - components: - - rot: 3.141592653589793 rad - pos: 8.5,13.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12764 - components: - - rot: 3.141592653589793 rad - pos: 11.5,13.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12765 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,18.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 12859 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,25.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13010 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,54.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13011 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,56.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13012 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,59.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13013 - components: - - pos: -17.5,63.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13031 - components: - - rot: 3.141592653589793 rad - pos: -11.5,53.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13032 - components: - - pos: -7.5,60.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13961 - components: - - rot: 3.141592653589793 rad - pos: -62.5,40.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13962 - components: - - pos: -62.5,45.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13981 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,47.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 13982 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,52.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14038 - components: - - rot: 3.141592653589793 rad - pos: -69.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14040 - components: - - rot: 3.141592653589793 rad - pos: -70.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14046 - components: - - rot: 3.141592653589793 rad - pos: -77.5,32.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14109 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,20.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14111 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,22.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14112 - components: - - rot: -1.5707963267948966 rad - pos: -71.5,17.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14116 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,29.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14149 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,27.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14158 - components: - - rot: 1.5707963267948966 rad - pos: -80.5,24.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor - - uid: 14161 - components: - - pos: -60.5,33.5 - parent: 1 - type: Transform - - color: '#0055CCFF' - type: AtmosPipeColor -- proto: GasVentScrubber - entities: - - uid: 1064 - components: - - pos: -0.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2487 - components: - - rot: 1.5707963267948966 rad - pos: 3.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2488 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2489 - components: - - pos: 4.5,37.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2490 - components: - - pos: 9.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2491 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2492 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2900 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 2912 - components: - - rot: 3.141592653589793 rad - pos: -15.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3022 - components: - - rot: 1.5707963267948966 rad - pos: 3.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3023 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3024 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3739 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3837 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-7.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3959 - components: - - rot: 3.141592653589793 rad - pos: -40.5,-11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 3967 - components: - - rot: 3.141592653589793 rad - pos: -64.5,-11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4750 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,-9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 4807 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8690 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8754 - components: - - rot: 3.141592653589793 rad - pos: -50.5,50.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8755 - components: - - rot: 3.141592653589793 rad - pos: -53.5,50.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8756 - components: - - rot: 3.141592653589793 rad - pos: -56.5,50.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8757 - components: - - rot: 3.141592653589793 rad - pos: -60.5,52.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8758 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8759 - components: - - pos: -54.5,64.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8760 - components: - - pos: -58.5,64.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8766 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,58.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8778 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,56.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8842 - components: - - rot: 1.5707963267948966 rad - pos: -60.5,61.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8843 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,62.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8844 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,65.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8884 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,85.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8886 - components: - - rot: 3.141592653589793 rad - pos: -55.5,83.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8888 - components: - - pos: -54.5,89.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8924 - components: - - rot: 3.141592653589793 rad - pos: -57.5,87.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 8925 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,84.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 10798 - components: - - rot: 3.141592653589793 rad - pos: 7.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 10956 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,41.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11122 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,37.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11123 - components: - - pos: -58.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11146 - components: - - pos: -53.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11175 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,41.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11196 - components: - - rot: 3.141592653589793 rad - pos: -41.5,42.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11209 - components: - - pos: -41.5,50.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11235 - components: - - rot: 3.141592653589793 rad - pos: -36.5,42.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11236 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11237 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,47.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11270 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,35.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11303 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,29.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11305 - components: - - rot: 3.141592653589793 rad - pos: -51.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11319 - components: - - pos: -50.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11320 - components: - - pos: -54.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11555 - components: - - pos: -43.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11556 - components: - - pos: -37.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11596 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11597 - components: - - pos: -38.5,40.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11598 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,36.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11599 - components: - - pos: -31.5,39.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11643 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,27.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11644 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,21.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11645 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,13.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11646 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11675 - components: - - pos: -33.5,27.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11678 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11697 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11747 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11748 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,18.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11749 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11750 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,15.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11751 - components: - - pos: -54.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11789 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11811 - components: - - pos: -67.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11812 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11842 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,-2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11843 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,-5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11925 - components: - - pos: -49.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11949 - components: - - pos: -40.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11970 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11971 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 11999 - components: - - pos: -43.5,1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12000 - components: - - rot: 3.141592653589793 rad - pos: -43.5,-6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12001 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12018 - components: - - rot: 3.141592653589793 rad - pos: -36.5,-4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12064 - components: - - rot: 3.141592653589793 rad - pos: -38.5,3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12080 - components: - - rot: 3.141592653589793 rad - pos: -33.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12127 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,9.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12128 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12129 - components: - - pos: -25.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12140 - components: - - pos: -24.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12173 - components: - - pos: -31.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12175 - components: - - rot: 3.141592653589793 rad - pos: -24.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12190 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,38.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12219 - components: - - rot: 3.141592653589793 rad - pos: -16.5,31.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12259 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,38.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12260 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12261 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,46.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12272 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12297 - components: - - pos: -17.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12320 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12331 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12352 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,-3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12355 - components: - - rot: 3.141592653589793 rad - pos: -8.5,-4.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12381 - components: - - pos: -3.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12384 - components: - - rot: 3.141592653589793 rad - pos: -17.5,-11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12416 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12481 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12482 - components: - - rot: 3.141592653589793 rad - pos: -8.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12483 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12484 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12586 - components: - - pos: -5.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12587 - components: - - pos: 5.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12588 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12589 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,0.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12595 - components: - - pos: 14.5,2.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12606 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,-1.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12651 - components: - - pos: 17.5,10.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12652 - components: - - pos: 21.5,6.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12653 - components: - - rot: 3.141592653589793 rad - pos: 25.5,3.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12654 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,5.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12715 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,11.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12716 - components: - - rot: 1.5707963267948966 rad - pos: 26.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12717 - components: - - pos: 27.5,24.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12736 - components: - - pos: -3.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12759 - components: - - rot: 3.141592653589793 rad - pos: 7.5,13.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12760 - components: - - rot: 3.141592653589793 rad - pos: 9.5,13.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12761 - components: - - rot: 3.141592653589793 rad - pos: 10.5,13.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12766 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,17.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 12858 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,26.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13004 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,55.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13005 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,57.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13006 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,60.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13007 - components: - - pos: -15.5,63.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13033 - components: - - pos: -8.5,60.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13034 - components: - - rot: 3.141592653589793 rad - pos: -12.5,53.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13964 - components: - - rot: 3.141592653589793 rad - pos: -61.5,40.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13996 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,45.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 13998 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,48.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14045 - components: - - pos: -68.5,34.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14047 - components: - - rot: 3.141592653589793 rad - pos: -76.5,32.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14110 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,23.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14113 - components: - - rot: -1.5707963267948966 rad - pos: -71.5,16.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14114 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,19.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14115 - components: - - rot: -1.5707963267948966 rad - pos: -73.5,30.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14148 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,28.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14159 - components: - - rot: 1.5707963267948966 rad - pos: -80.5,25.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor - - uid: 14160 - components: - - pos: -61.5,33.5 - parent: 1 - type: Transform - - color: '#990000FF' - type: AtmosPipeColor -- proto: GeneratorBasic - entities: - - uid: 6144 - components: - - pos: 17.5,46.5 - parent: 1 - type: Transform -- proto: Girder - entities: - - uid: 54 - components: - - pos: 3.5,-3.5 - parent: 1 - type: Transform - - uid: 110 - components: - - pos: -21.5,-12.5 - parent: 1 - type: Transform - - uid: 179 - components: - - pos: 3.5,-6.5 - parent: 1 - type: Transform - - uid: 182 - components: - - pos: 8.5,-6.5 - parent: 1 - type: Transform - - uid: 191 - components: - - pos: 1.5,-7.5 - parent: 1 - type: Transform - - uid: 488 - components: - - pos: 9.5,-3.5 - parent: 1 - type: Transform - - uid: 514 - components: - - pos: 14.5,-3.5 - parent: 1 - type: Transform - - uid: 515 - components: - - pos: 22.5,-6.5 - parent: 1 - type: Transform - - uid: 585 - components: - - pos: 6.5,0.5 - parent: 1 - type: Transform - - uid: 648 - components: - - pos: 18.5,-3.5 - parent: 1 - type: Transform - - uid: 655 - components: - - pos: 22.5,0.5 - parent: 1 - type: Transform - - uid: 1044 - components: - - pos: 15.5,11.5 - parent: 1 - type: Transform - - uid: 1048 - components: - - pos: 15.5,7.5 - parent: 1 - type: Transform - - uid: 1049 - components: - - pos: 21.5,14.5 - parent: 1 - type: Transform - - uid: 1086 - components: - - pos: -22.5,-2.5 - parent: 1 - type: Transform - - uid: 1105 - components: - - pos: -22.5,1.5 - parent: 1 - type: Transform - - uid: 1128 - components: - - pos: -20.5,3.5 - parent: 1 - type: Transform - - uid: 1130 - components: - - pos: -30.5,-0.5 - parent: 1 - type: Transform - - uid: 1134 - components: - - pos: 8.5,7.5 - parent: 1 - type: Transform - - uid: 1139 - components: - - pos: 9.5,7.5 - parent: 1 - type: Transform - - uid: 1174 - components: - - pos: 13.5,23.5 - parent: 1 - type: Transform - - uid: 1175 - components: - - pos: 21.5,22.5 - parent: 1 - type: Transform - - uid: 1200 - components: - - pos: 16.5,21.5 - parent: 1 - type: Transform - - uid: 1305 - components: - - pos: 21.5,33.5 - parent: 1 - type: Transform - - uid: 1381 - components: - - pos: -1.5,44.5 - parent: 1 - type: Transform - - uid: 1416 - components: - - pos: 13.5,38.5 - parent: 1 - type: Transform - - uid: 1470 - components: - - pos: -7.5,19.5 - parent: 1 - type: Transform - - uid: 1476 - components: - - pos: -10.5,24.5 - parent: 1 - type: Transform - - uid: 2059 - components: - - pos: 17.5,24.5 - parent: 1 - type: Transform - - uid: 2305 - components: - - pos: -23.5,4.5 - parent: 1 - type: Transform - - uid: 3034 - components: - - pos: -21.5,14.5 - parent: 1 - type: Transform - - uid: 3049 - components: - - pos: -27.5,25.5 - parent: 1 - type: Transform - - uid: 3070 - components: - - pos: -29.5,19.5 - parent: 1 - type: Transform - - uid: 3109 - components: - - pos: -32.5,11.5 - parent: 1 - type: Transform - - uid: 3151 - components: - - pos: -32.5,22.5 - parent: 1 - type: Transform - - uid: 3160 - components: - - pos: -31.5,17.5 - parent: 1 - type: Transform - - uid: 3461 - components: - - pos: -29.5,3.5 - parent: 1 - type: Transform - - uid: 3464 - components: - - pos: -24.5,3.5 - parent: 1 - type: Transform - - uid: 3517 - components: - - pos: -62.5,6.5 - parent: 1 - type: Transform - - uid: 3518 - components: - - pos: -64.5,6.5 - parent: 1 - type: Transform - - uid: 3522 - components: - - pos: -58.5,17.5 - parent: 1 - type: Transform - - uid: 3596 - components: - - pos: -47.5,-5.5 - parent: 1 - type: Transform - - uid: 3614 - components: - - pos: -53.5,-8.5 - parent: 1 - type: Transform - - uid: 3732 - components: - - pos: -32.5,6.5 - parent: 1 - type: Transform - - uid: 3733 - components: - - pos: -58.5,23.5 - parent: 1 - type: Transform - - uid: 3734 - components: - - pos: -58.5,46.5 - parent: 1 - type: Transform - - uid: 3865 - components: - - pos: -51.5,3.5 - parent: 1 - type: Transform - - uid: 4165 - components: - - pos: -38.5,16.5 - parent: 1 - type: Transform - - uid: 4172 - components: - - pos: -40.5,19.5 - parent: 1 - type: Transform - - uid: 4193 - components: - - pos: -43.5,22.5 - parent: 1 - type: Transform - - uid: 4197 - components: - - pos: -45.5,29.5 - parent: 1 - type: Transform - - uid: 4292 - components: - - pos: -46.5,16.5 - parent: 1 - type: Transform - - uid: 4294 - components: - - pos: -43.5,16.5 - parent: 1 - type: Transform - - uid: 4297 - components: - - pos: -43.5,18.5 - parent: 1 - type: Transform - - uid: 4303 - components: - - pos: -49.5,19.5 - parent: 1 - type: Transform - - uid: 4501 - components: - - pos: -49.5,-6.5 - parent: 1 - type: Transform - - uid: 4502 - components: - - pos: -49.5,-3.5 - parent: 1 - type: Transform - - uid: 4512 - components: - - pos: -50.5,-8.5 - parent: 1 - type: Transform - - uid: 4518 - components: - - pos: -55.5,-0.5 - parent: 1 - type: Transform - - uid: 5490 - components: - - pos: -55.5,-10.5 - parent: 1 - type: Transform - - uid: 5875 - components: - - pos: -4.5,45.5 - parent: 1 - type: Transform - - uid: 6731 - components: - - pos: -29.5,41.5 - parent: 1 - type: Transform - - uid: 6959 - components: - - pos: -33.5,53.5 - parent: 1 - type: Transform - - uid: 7030 - components: - - pos: -54.5,45.5 - parent: 1 - type: Transform - - uid: 7031 - components: - - pos: -51.5,45.5 - parent: 1 - type: Transform - - uid: 7037 - components: - - pos: -55.5,41.5 - parent: 1 - type: Transform - - uid: 7058 - components: - - pos: -53.5,40.5 - parent: 1 - type: Transform - - uid: 7062 - components: - - pos: -50.5,42.5 - parent: 1 - type: Transform - - uid: 9185 - components: - - pos: -74.5,50.5 - parent: 1 - type: Transform - - uid: 9219 - components: - - pos: -59.5,39.5 - parent: 1 - type: Transform - - uid: 9245 - components: - - pos: -70.5,38.5 - parent: 1 - type: Transform - - uid: 9901 - components: - - pos: -59.5,22.5 - parent: 1 - type: Transform - - uid: 9926 - components: - - pos: -65.5,9.5 - parent: 1 - type: Transform - - uid: 10845 - components: - - pos: -63.5,38.5 - parent: 1 - type: Transform - - uid: 13344 - components: - - pos: -2.5,13.5 - parent: 1 - type: Transform - - uid: 15187 - components: - - pos: -68.5,48.5 - parent: 1 - type: Transform -- proto: GravityGenerator - entities: - - uid: 920 - components: - - pos: 28.5,2.5 - parent: 1 - type: Transform - - charge: 100 - type: GravityGenerator - - radius: 175.75 - type: PointLight -- proto: GrenadeFlashBang - entities: - - uid: 8009 - components: - - pos: -61.810192,50.638466 - parent: 1 - type: Transform - - uid: 8010 - components: - - pos: -61.950817,50.700966 - parent: 1 - type: Transform - - uid: 8011 - components: - - pos: -61.997692,50.59159 - parent: 1 - type: Transform -- proto: Grille - entities: - - uid: 28 - components: - - pos: -3.5,-0.5 - parent: 1 - type: Transform - - uid: 37 - components: - - pos: -8.5,3.5 - parent: 1 - type: Transform - - uid: 41 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-5.5 - parent: 1 - type: Transform - - uid: 67 - components: - - pos: -7.5,-5.5 - parent: 1 - type: Transform - - uid: 68 - components: - - pos: -7.5,-4.5 - parent: 1 - type: Transform - - uid: 69 - components: - - pos: -6.5,3.5 - parent: 1 - type: Transform - - uid: 212 - components: - - pos: 2.5,-12.5 - parent: 1 - type: Transform - - uid: 213 - components: - - pos: 0.5,-12.5 - parent: 1 - type: Transform - - uid: 609 - components: - - rot: 3.141592653589793 rad - pos: -25.5,30.5 - parent: 1 - type: Transform - - uid: 711 - components: - - pos: 30.5,1.5 - parent: 1 - type: Transform - - uid: 712 - components: - - pos: 30.5,2.5 - parent: 1 - type: Transform - - uid: 713 - components: - - pos: 30.5,3.5 - parent: 1 - type: Transform - - uid: 946 - components: - - rot: 3.141592653589793 rad - pos: 29.5,6.5 - parent: 1 - type: Transform - - uid: 947 - components: - - rot: 3.141592653589793 rad - pos: 29.5,5.5 - parent: 1 - type: Transform - - uid: 953 - components: - - rot: -1.5707963267948966 rad - pos: 31.5,17.5 - parent: 1 - type: Transform - - uid: 954 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,17.5 - parent: 1 - type: Transform - - uid: 975 - components: - - rot: 3.141592653589793 rad - pos: 29.5,14.5 - parent: 1 - type: Transform - - uid: 976 - components: - - rot: 3.141592653589793 rad - pos: 29.5,13.5 - parent: 1 - type: Transform - - uid: 977 - components: - - rot: 3.141592653589793 rad - pos: 29.5,12.5 - parent: 1 - type: Transform - - uid: 978 - components: - - rot: 3.141592653589793 rad - pos: 29.5,20.5 - parent: 1 - type: Transform - - uid: 979 - components: - - rot: 3.141592653589793 rad - pos: 29.5,21.5 - parent: 1 - type: Transform - - uid: 1052 - components: - - pos: 18.5,7.5 - parent: 1 - type: Transform - - uid: 1054 - components: - - pos: 16.5,7.5 - parent: 1 - type: Transform - - uid: 1066 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-4.5 - parent: 1 - type: Transform - - uid: 1067 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-3.5 - parent: 1 - type: Transform - - uid: 1068 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-1.5 - parent: 1 - type: Transform - - uid: 1264 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,24.5 - parent: 1 - type: Transform - - uid: 1269 - components: - - rot: 1.5707963267948966 rad - pos: -2.5,28.5 - parent: 1 - type: Transform - - uid: 1290 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,28.5 - parent: 1 - type: Transform - - uid: 1303 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,28.5 - parent: 1 - type: Transform - - uid: 1316 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,31.5 - parent: 1 - type: Transform - - uid: 1317 - components: - - pos: 5.5,23.5 - parent: 1 - type: Transform - - uid: 1318 - components: - - pos: 11.5,27.5 - parent: 1 - type: Transform - - uid: 1342 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,29.5 - parent: 1 - type: Transform - - uid: 1343 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,30.5 - parent: 1 - type: Transform - - uid: 1345 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,32.5 - parent: 1 - type: Transform - - uid: 1347 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,34.5 - parent: 1 - type: Transform - - uid: 1360 - components: - - pos: 5.5,22.5 - parent: 1 - type: Transform - - uid: 1403 - components: - - pos: -44.5,65.5 - parent: 1 - type: Transform - - uid: 1424 - components: - - pos: 16.5,43.5 - parent: 1 - type: Transform - - uid: 1631 - components: - - pos: 12.5,27.5 - parent: 1 - type: Transform - - uid: 1869 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,-15.5 - parent: 1 - type: Transform - - uid: 1870 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-15.5 - parent: 1 - type: Transform - - uid: 1871 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,-15.5 - parent: 1 - type: Transform - - uid: 1887 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,30.5 - parent: 1 - type: Transform - - uid: 1890 - components: - - pos: 13.5,29.5 - parent: 1 - type: Transform - - uid: 1894 - components: - - pos: 5.5,26.5 - parent: 1 - type: Transform - - uid: 2820 - components: - - rot: 3.141592653589793 rad - pos: -14.5,24.5 - parent: 1 - type: Transform - - uid: 2822 - components: - - rot: 3.141592653589793 rad - pos: -14.5,28.5 - parent: 1 - type: Transform - - uid: 2831 - components: - - rot: 3.141592653589793 rad - pos: -17.5,30.5 - parent: 1 - type: Transform - - uid: 2832 - components: - - rot: 3.141592653589793 rad - pos: -16.5,30.5 - parent: 1 - type: Transform - - uid: 2833 - components: - - pos: -15.5,30.5 - parent: 1 - type: Transform - - uid: 2834 - components: - - rot: 3.141592653589793 rad - pos: -14.5,29.5 - parent: 1 - type: Transform - - uid: 2839 - components: - - rot: 3.141592653589793 rad - pos: -14.5,23.5 - parent: 1 - type: Transform - - uid: 3085 - components: - - pos: -25.5,7.5 - parent: 1 - type: Transform - - uid: 3086 - components: - - pos: -26.5,7.5 - parent: 1 - type: Transform - - uid: 3087 - components: - - pos: -27.5,7.5 - parent: 1 - type: Transform - - uid: 3132 - components: - - pos: -26.5,30.5 - parent: 1 - type: Transform - - uid: 3135 - components: - - pos: -23.5,30.5 - parent: 1 - type: Transform - - uid: 3150 - components: - - pos: -34.5,22.5 - parent: 1 - type: Transform - - uid: 3322 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,-14.5 - parent: 1 - type: Transform - - uid: 3429 - components: - - pos: -35.5,21.5 - parent: 1 - type: Transform - - uid: 3431 - components: - - pos: -35.5,19.5 - parent: 1 - type: Transform - - uid: 3432 - components: - - pos: -35.5,18.5 - parent: 1 - type: Transform - - uid: 3433 - components: - - pos: -35.5,20.5 - parent: 1 - type: Transform - - uid: 3434 - components: - - pos: -35.5,16.5 - parent: 1 - type: Transform - - uid: 3435 - components: - - pos: -35.5,15.5 - parent: 1 - type: Transform - - uid: 3444 - components: - - pos: -20.5,36.5 - parent: 1 - type: Transform - - uid: 3452 - components: - - pos: -14.5,46.5 - parent: 1 - type: Transform - - uid: 3456 - components: - - pos: -22.5,36.5 - parent: 1 - type: Transform - - uid: 3457 - components: - - pos: -21.5,36.5 - parent: 1 - type: Transform - - uid: 3555 - components: - - pos: -37.5,-8.5 - parent: 1 - type: Transform - - uid: 3588 - components: - - pos: -42.5,-7.5 - parent: 1 - type: Transform - - uid: 3589 - components: - - pos: -42.5,-6.5 - parent: 1 - type: Transform - - uid: 3593 - components: - - pos: -42.5,-4.5 - parent: 1 - type: Transform - - uid: 3594 - components: - - pos: -42.5,-3.5 - parent: 1 - type: Transform - - uid: 3595 - components: - - pos: -42.5,-1.5 - parent: 1 - type: Transform - - uid: 3613 - components: - - rot: 3.141592653589793 rad - pos: -53.5,3.5 - parent: 1 - type: Transform - - uid: 3630 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,-14.5 - parent: 1 - type: Transform - - uid: 3642 - components: - - pos: -38.5,-0.5 - parent: 1 - type: Transform - - uid: 3643 - components: - - pos: -36.5,-0.5 - parent: 1 - type: Transform - - uid: 3644 - components: - - pos: -44.5,3.5 - parent: 1 - type: Transform - - uid: 3685 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,-0.5 - parent: 1 - type: Transform - - uid: 3686 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,-14.5 - parent: 1 - type: Transform - - uid: 3775 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-13.5 - parent: 1 - type: Transform - - uid: 3841 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,-4.5 - parent: 1 - type: Transform - - uid: 3842 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,-4.5 - parent: 1 - type: Transform - - uid: 3843 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,-4.5 - parent: 1 - type: Transform - - uid: 3905 - components: - - pos: -59.5,10.5 - parent: 1 - type: Transform - - uid: 3962 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,-14.5 - parent: 1 - type: Transform - - uid: 3972 - components: - - rot: 3.141592653589793 rad - pos: -61.5,-12.5 - parent: 1 - type: Transform - - uid: 4099 - components: - - rot: 3.141592653589793 rad - pos: -62.5,-12.5 - parent: 1 - type: Transform - - uid: 4306 - components: - - pos: -48.5,25.5 - parent: 1 - type: Transform - - uid: 4312 - components: - - pos: -46.5,25.5 - parent: 1 - type: Transform - - uid: 4314 - components: - - pos: -48.5,23.5 - parent: 1 - type: Transform - - uid: 4315 - components: - - pos: -48.5,24.5 - parent: 1 - type: Transform - - uid: 4316 - components: - - pos: -46.5,23.5 - parent: 1 - type: Transform - - uid: 4317 - components: - - pos: -46.5,24.5 - parent: 1 - type: Transform - - uid: 4735 - components: - - pos: -25.5,64.5 - parent: 1 - type: Transform - - uid: 4748 - components: - - pos: -74.5,7.5 - parent: 1 - type: Transform - - uid: 4757 - components: - - pos: -38.5,-8.5 - parent: 1 - type: Transform - - uid: 4760 - components: - - rot: 3.141592653589793 rad - pos: -60.5,-12.5 - parent: 1 - type: Transform - - uid: 4816 - components: - - pos: -65.5,-13.5 - parent: 1 - type: Transform - - uid: 4827 - components: - - pos: -59.5,2.5 - parent: 1 - type: Transform - - uid: 4828 - components: - - pos: -59.5,1.5 - parent: 1 - type: Transform - - uid: 4829 - components: - - pos: -59.5,0.5 - parent: 1 - type: Transform - - uid: 4830 - components: - - pos: -59.5,-0.5 - parent: 1 - type: Transform - - uid: 4831 - components: - - pos: -59.5,-1.5 - parent: 1 - type: Transform - - uid: 4832 - components: - - pos: -59.5,-2.5 - parent: 1 - type: Transform - - uid: 4833 - components: - - pos: -59.5,-3.5 - parent: 1 - type: Transform - - uid: 4834 - components: - - pos: -59.5,-4.5 - parent: 1 - type: Transform - - uid: 4835 - components: - - pos: -59.5,-5.5 - parent: 1 - type: Transform - - uid: 4836 - components: - - pos: -59.5,-6.5 - parent: 1 - type: Transform - - uid: 4853 - components: - - pos: -75.5,3.5 - parent: 1 - type: Transform - - uid: 4857 - components: - - pos: -71.5,3.5 - parent: 1 - type: Transform - - uid: 4858 - components: - - pos: -70.5,3.5 - parent: 1 - type: Transform - - uid: 4859 - components: - - pos: -69.5,3.5 - parent: 1 - type: Transform - - uid: 4860 - components: - - pos: -68.5,3.5 - parent: 1 - type: Transform - - uid: 4864 - components: - - pos: -64.5,3.5 - parent: 1 - type: Transform - - uid: 4865 - components: - - pos: -63.5,3.5 - parent: 1 - type: Transform - - uid: 4866 - components: - - pos: -62.5,3.5 - parent: 1 - type: Transform - - uid: 4867 - components: - - pos: -61.5,3.5 - parent: 1 - type: Transform - - uid: 4868 - components: - - pos: -60.5,3.5 - parent: 1 - type: Transform - - uid: 4884 - components: - - pos: -73.5,-13.5 - parent: 1 - type: Transform - - uid: 4889 - components: - - pos: -59.5,-7.5 - parent: 1 - type: Transform - - uid: 4894 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-12.5 - parent: 1 - type: Transform - - uid: 4895 - components: - - pos: -64.5,-8.5 - parent: 1 - type: Transform - - uid: 4898 - components: - - pos: -73.5,-14.5 - parent: 1 - type: Transform - - uid: 4899 - components: - - rot: 3.141592653589793 rad - pos: -69.5,-12.5 - parent: 1 - type: Transform - - uid: 4900 - components: - - rot: 3.141592653589793 rad - pos: -68.5,-12.5 - parent: 1 - type: Transform - - uid: 4902 - components: - - pos: -61.5,-8.5 - parent: 1 - type: Transform - - uid: 4908 - components: - - pos: -69.5,-8.5 - parent: 1 - type: Transform - - uid: 4909 - components: - - pos: -68.5,-8.5 - parent: 1 - type: Transform - - uid: 4910 - components: - - pos: -63.5,-8.5 - parent: 1 - type: Transform - - uid: 4925 - components: - - pos: -62.5,-8.5 - parent: 1 - type: Transform - - uid: 4926 - components: - - rot: 3.141592653589793 rad - pos: -70.5,-12.5 - parent: 1 - type: Transform - - uid: 4932 - components: - - pos: -65.5,-14.5 - parent: 1 - type: Transform - - uid: 4934 - components: - - pos: -75.5,-8.5 - parent: 1 - type: Transform - - uid: 4944 - components: - - rot: 3.141592653589793 rad - pos: -58.5,-12.5 - parent: 1 - type: Transform - - uid: 4971 - components: - - pos: -70.5,-8.5 - parent: 1 - type: Transform - - uid: 4976 - components: - - pos: -71.5,-8.5 - parent: 1 - type: Transform - - uid: 4977 - components: - - pos: -60.5,-8.5 - parent: 1 - type: Transform - - uid: 5074 - components: - - pos: -76.5,4.5 - parent: 1 - type: Transform - - uid: 5075 - components: - - pos: -76.5,5.5 - parent: 1 - type: Transform - - uid: 5076 - components: - - pos: -76.5,6.5 - parent: 1 - type: Transform - - uid: 5175 - components: - - pos: -75.5,7.5 - parent: 1 - type: Transform - - uid: 5248 - components: - - pos: -47.5,-11.5 - parent: 1 - type: Transform - - uid: 5249 - components: - - pos: -49.5,-11.5 - parent: 1 - type: Transform - - uid: 5252 - components: - - pos: -55.5,18.5 - parent: 1 - type: Transform - - uid: 5280 - components: - - pos: -55.5,19.5 - parent: 1 - type: Transform - - uid: 5316 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,14.5 - parent: 1 - type: Transform - - uid: 5340 - components: - - pos: -25.5,65.5 - parent: 1 - type: Transform - - uid: 5341 - components: - - pos: -17.5,70.5 - parent: 1 - type: Transform - - uid: 5823 - components: - - pos: -18.5,46.5 - parent: 1 - type: Transform - - uid: 5836 - components: - - pos: -18.5,47.5 - parent: 1 - type: Transform - - uid: 5861 - components: - - pos: -14.5,44.5 - parent: 1 - type: Transform - - uid: 5862 - components: - - pos: -14.5,43.5 - parent: 1 - type: Transform - - uid: 5864 - components: - - pos: -14.5,41.5 - parent: 1 - type: Transform - - uid: 5866 - components: - - pos: -14.5,39.5 - parent: 1 - type: Transform - - uid: 5867 - components: - - pos: -14.5,38.5 - parent: 1 - type: Transform - - uid: 5869 - components: - - pos: -14.5,36.5 - parent: 1 - type: Transform - - uid: 5870 - components: - - pos: -14.5,35.5 - parent: 1 - type: Transform - - uid: 5901 - components: - - pos: -14.5,49.5 - parent: 1 - type: Transform - - uid: 5963 - components: - - pos: -1.5,54.5 - parent: 1 - type: Transform - - uid: 5964 - components: - - pos: -0.5,54.5 - parent: 1 - type: Transform - - uid: 5965 - components: - - pos: 0.5,54.5 - parent: 1 - type: Transform - - uid: 5966 - components: - - pos: -2.5,53.5 - parent: 1 - type: Transform - - uid: 5967 - components: - - pos: -2.5,52.5 - parent: 1 - type: Transform - - uid: 5968 - components: - - pos: -2.5,51.5 - parent: 1 - type: Transform - - uid: 5969 - components: - - pos: -2.5,50.5 - parent: 1 - type: Transform - - uid: 5970 - components: - - pos: -2.5,49.5 - parent: 1 - type: Transform - - uid: 6012 - components: - - pos: -24.5,67.5 - parent: 1 - type: Transform - - uid: 6013 - components: - - pos: -16.5,70.5 - parent: 1 - type: Transform - - uid: 6043 - components: - - pos: 16.5,53.5 - parent: 1 - type: Transform - - uid: 6044 - components: - - pos: 15.5,53.5 - parent: 1 - type: Transform - - uid: 6045 - components: - - pos: 14.5,53.5 - parent: 1 - type: Transform - - uid: 6046 - components: - - pos: 13.5,53.5 - parent: 1 - type: Transform - - uid: 6257 - components: - - pos: -14.5,70.5 - parent: 1 - type: Transform - - uid: 6275 - components: - - pos: -25.5,62.5 - parent: 1 - type: Transform - - uid: 6319 - components: - - pos: 24.5,38.5 - parent: 1 - type: Transform - - uid: 6321 - components: - - pos: 24.5,40.5 - parent: 1 - type: Transform - - uid: 6322 - components: - - pos: 24.5,41.5 - parent: 1 - type: Transform - - uid: 6323 - components: - - pos: -11.5,70.5 - parent: 1 - type: Transform - - uid: 6352 - components: - - rot: 3.141592653589793 rad - pos: -13.5,54.5 - parent: 1 - type: Transform - - uid: 6355 - components: - - rot: 3.141592653589793 rad - pos: -13.5,56.5 - parent: 1 - type: Transform - - uid: 6356 - components: - - rot: 3.141592653589793 rad - pos: -13.5,53.5 - parent: 1 - type: Transform - - uid: 6358 - components: - - rot: 3.141592653589793 rad - pos: -13.5,57.5 - parent: 1 - type: Transform - - uid: 6389 - components: - - rot: 3.141592653589793 rad - pos: -16.5,58.5 - parent: 1 - type: Transform - - uid: 6408 - components: - - pos: -9.5,62.5 - parent: 1 - type: Transform - - uid: 6409 - components: - - pos: -8.5,62.5 - parent: 1 - type: Transform - - uid: 6410 - components: - - pos: -7.5,62.5 - parent: 1 - type: Transform - - uid: 6411 - components: - - pos: -6.5,62.5 - parent: 1 - type: Transform - - uid: 6412 - components: - - pos: -5.5,62.5 - parent: 1 - type: Transform - - uid: 6414 - components: - - pos: -4.5,61.5 - parent: 1 - type: Transform - - uid: 6415 - components: - - pos: -4.5,60.5 - parent: 1 - type: Transform - - uid: 6458 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,64.5 - parent: 1 - type: Transform - - uid: 6459 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,65.5 - parent: 1 - type: Transform - - uid: 6460 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,65.5 - parent: 1 - type: Transform - - uid: 6461 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,66.5 - parent: 1 - type: Transform - - uid: 6462 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,66.5 - parent: 1 - type: Transform - - uid: 6463 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,67.5 - parent: 1 - type: Transform - - uid: 6464 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,67.5 - parent: 1 - type: Transform - - uid: 6465 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,67.5 - parent: 1 - type: Transform - - uid: 6466 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,67.5 - parent: 1 - type: Transform - - uid: 6467 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,67.5 - parent: 1 - type: Transform - - uid: 6468 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,67.5 - parent: 1 - type: Transform - - uid: 6469 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,67.5 - parent: 1 - type: Transform - - uid: 6470 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,66.5 - parent: 1 - type: Transform - - uid: 6471 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,66.5 - parent: 1 - type: Transform - - uid: 6472 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,65.5 - parent: 1 - type: Transform - - uid: 6473 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,65.5 - parent: 1 - type: Transform - - uid: 6474 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,64.5 - parent: 1 - type: Transform - - uid: 6653 - components: - - pos: -18.5,48.5 - parent: 1 - type: Transform - - uid: 6669 - components: - - pos: -13.5,70.5 - parent: 1 - type: Transform - - uid: 6670 - components: - - pos: -10.5,69.5 - parent: 1 - type: Transform - - uid: 6671 - components: - - pos: -1.5,62.5 - parent: 1 - type: Transform - - uid: 6673 - components: - - pos: -1.5,60.5 - parent: 1 - type: Transform - - uid: 6674 - components: - - pos: -1.5,59.5 - parent: 1 - type: Transform - - uid: 6675 - components: - - pos: -3.5,65.5 - parent: 1 - type: Transform - - uid: 6678 - components: - - pos: -22.5,69.5 - parent: 1 - type: Transform - - uid: 6685 - components: - - pos: -22.5,60.5 - parent: 1 - type: Transform - - uid: 6686 - components: - - pos: -22.5,61.5 - parent: 1 - type: Transform - - uid: 6687 - components: - - pos: -22.5,62.5 - parent: 1 - type: Transform - - uid: 6757 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,34.5 - parent: 1 - type: Transform - - uid: 6758 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,34.5 - parent: 1 - type: Transform - - uid: 6760 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,34.5 - parent: 1 - type: Transform - - uid: 6783 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,48.5 - parent: 1 - type: Transform - - uid: 6791 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,41.5 - parent: 1 - type: Transform - - uid: 6811 - components: - - pos: -41.5,53.5 - parent: 1 - type: Transform - - uid: 6816 - components: - - pos: -40.5,53.5 - parent: 1 - type: Transform - - uid: 6821 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,48.5 - parent: 1 - type: Transform - - uid: 6984 - components: - - pos: -48.5,56.5 - parent: 1 - type: Transform - - uid: 6985 - components: - - pos: -46.5,56.5 - parent: 1 - type: Transform - - uid: 6989 - components: - - pos: -57.5,48.5 - parent: 1 - type: Transform - - uid: 6990 - components: - - pos: -56.5,48.5 - parent: 1 - type: Transform - - uid: 6991 - components: - - pos: -54.5,48.5 - parent: 1 - type: Transform - - uid: 6992 - components: - - pos: -53.5,48.5 - parent: 1 - type: Transform - - uid: 6993 - components: - - pos: -51.5,48.5 - parent: 1 - type: Transform - - uid: 6994 - components: - - pos: -50.5,48.5 - parent: 1 - type: Transform - - uid: 6995 - components: - - pos: -50.5,52.5 - parent: 1 - type: Transform - - uid: 6996 - components: - - pos: -53.5,52.5 - parent: 1 - type: Transform - - uid: 6997 - components: - - pos: -56.5,52.5 - parent: 1 - type: Transform - - uid: 7004 - components: - - pos: -54.5,59.5 - parent: 1 - type: Transform - - uid: 7005 - components: - - pos: -55.5,59.5 - parent: 1 - type: Transform - - uid: 7006 - components: - - pos: -56.5,59.5 - parent: 1 - type: Transform - - uid: 7014 - components: - - pos: -48.5,63.5 - parent: 1 - type: Transform - - uid: 7029 - components: - - rot: 3.141592653589793 rad - pos: -52.5,45.5 - parent: 1 - type: Transform - - uid: 7095 - components: - - pos: -23.5,68.5 - parent: 1 - type: Transform - - uid: 7113 - components: - - pos: -46.5,63.5 - parent: 1 - type: Transform - - uid: 7151 - components: - - pos: -53.5,63.5 - parent: 1 - type: Transform - - uid: 7152 - components: - - pos: -53.5,64.5 - parent: 1 - type: Transform - - uid: 7153 - components: - - pos: -53.5,65.5 - parent: 1 - type: Transform - - uid: 7162 - components: - - pos: -58.5,62.5 - parent: 1 - type: Transform - - uid: 7165 - components: - - pos: -61.5,66.5 - parent: 1 - type: Transform - - uid: 7166 - components: - - pos: -60.5,66.5 - parent: 1 - type: Transform - - uid: 7167 - components: - - pos: -59.5,66.5 - parent: 1 - type: Transform - - uid: 7168 - components: - - pos: -58.5,66.5 - parent: 1 - type: Transform - - uid: 7173 - components: - - pos: -56.5,66.5 - parent: 1 - type: Transform - - uid: 7174 - components: - - pos: -55.5,66.5 - parent: 1 - type: Transform - - uid: 7175 - components: - - pos: -54.5,66.5 - parent: 1 - type: Transform - - uid: 7179 - components: - - pos: -56.5,62.5 - parent: 1 - type: Transform - - uid: 7180 - components: - - pos: -54.5,62.5 - parent: 1 - type: Transform - - uid: 7238 - components: - - pos: -58.5,54.5 - parent: 1 - type: Transform - - uid: 7242 - components: - - pos: -49.5,54.5 - parent: 1 - type: Transform - - uid: 7255 - components: - - pos: -49.5,83.5 - parent: 1 - type: Transform - - uid: 7256 - components: - - pos: -49.5,84.5 - parent: 1 - type: Transform - - uid: 7257 - components: - - pos: -49.5,85.5 - parent: 1 - type: Transform - - uid: 7258 - components: - - pos: -49.5,86.5 - parent: 1 - type: Transform - - uid: 7259 - components: - - pos: -49.5,87.5 - parent: 1 - type: Transform - - uid: 7260 - components: - - pos: -49.5,88.5 - parent: 1 - type: Transform - - uid: 7271 - components: - - pos: -51.5,91.5 - parent: 1 - type: Transform - - uid: 7301 - components: - - pos: -58.5,82.5 - parent: 1 - type: Transform - - uid: 7307 - components: - - pos: -59.5,90.5 - parent: 1 - type: Transform - - uid: 7308 - components: - - pos: -60.5,90.5 - parent: 1 - type: Transform - - uid: 7312 - components: - - pos: -61.5,82.5 - parent: 1 - type: Transform - - uid: 7318 - components: - - pos: -63.5,83.5 - parent: 1 - type: Transform - - uid: 7319 - components: - - pos: -62.5,88.5 - parent: 1 - type: Transform - - uid: 7374 - components: - - pos: -10.5,70.5 - parent: 1 - type: Transform - - uid: 7375 - components: - - pos: -5.5,65.5 - parent: 1 - type: Transform - - uid: 7376 - components: - - pos: -1.5,63.5 - parent: 1 - type: Transform - - uid: 7377 - components: - - pos: -6.5,65.5 - parent: 1 - type: Transform - - uid: 7413 - components: - - pos: -1.5,64.5 - parent: 1 - type: Transform - - uid: 7512 - components: - - pos: -9.5,69.5 - parent: 1 - type: Transform - - uid: 7513 - components: - - pos: -9.5,68.5 - parent: 1 - type: Transform - - uid: 7516 - components: - - pos: -7.5,65.5 - parent: 1 - type: Transform - - uid: 7712 - components: - - pos: -63.5,84.5 - parent: 1 - type: Transform - - uid: 7715 - components: - - pos: -58.5,90.5 - parent: 1 - type: Transform - - uid: 7728 - components: - - pos: -59.5,82.5 - parent: 1 - type: Transform - - uid: 7729 - components: - - pos: -60.5,82.5 - parent: 1 - type: Transform - - uid: 7740 - components: - - pos: -63.5,85.5 - parent: 1 - type: Transform - - uid: 7862 - components: - - pos: -47.5,52.5 - parent: 1 - type: Transform - - uid: 8084 - components: - - pos: -8.5,68.5 - parent: 1 - type: Transform - - uid: 8115 - components: - - pos: -24.5,68.5 - parent: 1 - type: Transform - - uid: 8289 - components: - - pos: -22.5,70.5 - parent: 1 - type: Transform - - uid: 8290 - components: - - pos: -19.5,70.5 - parent: 1 - type: Transform - - uid: 8970 - components: - - pos: -55.5,74.5 - parent: 1 - type: Transform - - uid: 8972 - components: - - pos: -55.5,69.5 - parent: 1 - type: Transform - - uid: 8973 - components: - - pos: -55.5,70.5 - parent: 1 - type: Transform - - uid: 8975 - components: - - pos: -55.5,72.5 - parent: 1 - type: Transform - - uid: 8976 - components: - - pos: -23.5,69.5 - parent: 1 - type: Transform - - uid: 8977 - components: - - pos: -55.5,75.5 - parent: 1 - type: Transform - - uid: 8981 - components: - - pos: -107.5,22.5 - parent: 1 - type: Transform - - uid: 8986 - components: - - pos: -65.5,82.5 - parent: 1 - type: Transform - - uid: 8988 - components: - - pos: -65.5,84.5 - parent: 1 - type: Transform - - uid: 8989 - components: - - pos: -65.5,85.5 - parent: 1 - type: Transform - - uid: 8991 - components: - - pos: -65.5,87.5 - parent: 1 - type: Transform - - uid: 8993 - components: - - pos: -64.5,88.5 - parent: 1 - type: Transform - - uid: 8994 - components: - - pos: -64.5,89.5 - parent: 1 - type: Transform - - uid: 9023 - components: - - pos: -47.5,77.5 - parent: 1 - type: Transform - - uid: 9024 - components: - - pos: -47.5,76.5 - parent: 1 - type: Transform - - uid: 9026 - components: - - pos: -47.5,74.5 - parent: 1 - type: Transform - - uid: 9028 - components: - - pos: -46.5,71.5 - parent: 1 - type: Transform - - uid: 9029 - components: - - pos: -45.5,71.5 - parent: 1 - type: Transform - - uid: 9030 - components: - - pos: -44.5,71.5 - parent: 1 - type: Transform - - uid: 9032 - components: - - pos: -42.5,71.5 - parent: 1 - type: Transform - - uid: 9048 - components: - - pos: -32.5,62.5 - parent: 1 - type: Transform - - uid: 9050 - components: - - pos: -30.5,62.5 - parent: 1 - type: Transform - - uid: 9051 - components: - - pos: -29.5,62.5 - parent: 1 - type: Transform - - uid: 9091 - components: - - pos: 0.5,56.5 - parent: 1 - type: Transform - - uid: 9092 - components: - - pos: 1.5,56.5 - parent: 1 - type: Transform - - uid: 9094 - components: - - pos: 3.5,56.5 - parent: 1 - type: Transform - - uid: 9095 - components: - - pos: 10.5,55.5 - parent: 1 - type: Transform - - uid: 9096 - components: - - pos: 5.5,56.5 - parent: 1 - type: Transform - - uid: 9097 - components: - - pos: 7.5,55.5 - parent: 1 - type: Transform - - uid: 9099 - components: - - pos: 9.5,55.5 - parent: 1 - type: Transform - - uid: 9102 - components: - - pos: 12.5,55.5 - parent: 1 - type: Transform - - uid: 9103 - components: - - pos: 13.5,55.5 - parent: 1 - type: Transform - - uid: 9188 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,57.5 - parent: 1 - type: Transform - - uid: 9296 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,29.5 - parent: 1 - type: Transform - - uid: 9323 - components: - - pos: -67.5,32.5 - parent: 1 - type: Transform - - uid: 9626 - components: - - pos: -72.5,22.5 - parent: 1 - type: Transform - - uid: 9627 - components: - - pos: -71.5,32.5 - parent: 1 - type: Transform - - uid: 9628 - components: - - pos: -64.5,24.5 - parent: 1 - type: Transform - - uid: 9629 - components: - - pos: -65.5,24.5 - parent: 1 - type: Transform - - uid: 9630 - components: - - pos: -66.5,24.5 - parent: 1 - type: Transform - - uid: 9663 - components: - - pos: -72.5,20.5 - parent: 1 - type: Transform - - uid: 9681 - components: - - pos: -77.5,26.5 - parent: 1 - type: Transform - - uid: 9683 - components: - - pos: -77.5,24.5 - parent: 1 - type: Transform - - uid: 9684 - components: - - pos: -80.5,47.5 - parent: 1 - type: Transform - - uid: 9701 - components: - - pos: -86.5,23.5 - parent: 1 - type: Transform - - uid: 9702 - components: - - pos: -86.5,24.5 - parent: 1 - type: Transform - - uid: 9703 - components: - - pos: -86.5,25.5 - parent: 1 - type: Transform - - uid: 9704 - components: - - pos: -86.5,26.5 - parent: 1 - type: Transform - - uid: 9705 - components: - - pos: -86.5,27.5 - parent: 1 - type: Transform - - uid: 9821 - components: - - pos: -79.5,47.5 - parent: 1 - type: Transform - - uid: 9855 - components: - - pos: -69.5,18.5 - parent: 1 - type: Transform - - uid: 9856 - components: - - pos: -68.5,18.5 - parent: 1 - type: Transform - - uid: 9875 - components: - - pos: -81.5,47.5 - parent: 1 - type: Transform - - uid: 9876 - components: - - pos: -82.5,47.5 - parent: 1 - type: Transform - - uid: 9877 - components: - - pos: -83.5,47.5 - parent: 1 - type: Transform - - uid: 9878 - components: - - pos: -84.5,47.5 - parent: 1 - type: Transform - - uid: 9879 - components: - - pos: -85.5,47.5 - parent: 1 - type: Transform - - uid: 9880 - components: - - pos: -85.5,46.5 - parent: 1 - type: Transform - - uid: 9881 - components: - - pos: -85.5,45.5 - parent: 1 - type: Transform - - uid: 9882 - components: - - pos: -85.5,44.5 - parent: 1 - type: Transform - - uid: 9883 - components: - - pos: -85.5,43.5 - parent: 1 - type: Transform - - uid: 9884 - components: - - pos: -85.5,42.5 - parent: 1 - type: Transform - - uid: 9885 - components: - - pos: -85.5,41.5 - parent: 1 - type: Transform - - uid: 9886 - components: - - pos: -85.5,40.5 - parent: 1 - type: Transform - - uid: 9887 - components: - - pos: -85.5,39.5 - parent: 1 - type: Transform - - uid: 9888 - components: - - pos: -85.5,38.5 - parent: 1 - type: Transform - - uid: 9889 - components: - - pos: -85.5,37.5 - parent: 1 - type: Transform - - uid: 9890 - components: - - pos: -85.5,36.5 - parent: 1 - type: Transform - - uid: 9891 - components: - - pos: -85.5,35.5 - parent: 1 - type: Transform - - uid: 9892 - components: - - pos: -85.5,34.5 - parent: 1 - type: Transform - - uid: 9903 - components: - - rot: 3.141592653589793 rad - pos: -59.5,25.5 - parent: 1 - type: Transform - - uid: 10143 - components: - - pos: -73.5,18.5 - parent: 1 - type: Transform - - uid: 10158 - components: - - pos: -70.5,18.5 - parent: 1 - type: Transform - - uid: 10160 - components: - - pos: -69.5,27.5 - parent: 1 - type: Transform - - uid: 10164 - components: - - pos: -69.5,24.5 - parent: 1 - type: Transform - - uid: 10246 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-4.5 - parent: 1 - type: Transform - - uid: 10349 - components: - - pos: -49.5,-14.5 - parent: 1 - type: Transform - - uid: 10361 - components: - - pos: -42.5,-14.5 - parent: 1 - type: Transform - - uid: 10412 - components: - - pos: 23.5,36.5 - parent: 1 - type: Transform - - uid: 10758 - components: - - rot: -1.5707963267948966 rad - pos: -81.5,49.5 - parent: 1 - type: Transform - - uid: 10759 - components: - - rot: -1.5707963267948966 rad - pos: -83.5,49.5 - parent: 1 - type: Transform - - uid: 10761 - components: - - rot: -1.5707963267948966 rad - pos: -82.5,49.5 - parent: 1 - type: Transform - - uid: 10762 - components: - - rot: -1.5707963267948966 rad - pos: -80.5,50.5 - parent: 1 - type: Transform - - uid: 10833 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,45.5 - parent: 1 - type: Transform - - uid: 10834 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,43.5 - parent: 1 - type: Transform - - uid: 10835 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,41.5 - parent: 1 - type: Transform - - uid: 10836 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,39.5 - parent: 1 - type: Transform - - uid: 10837 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,37.5 - parent: 1 - type: Transform - - uid: 10838 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,35.5 - parent: 1 - type: Transform - - uid: 10926 - components: - - pos: -63.5,43.5 - parent: 1 - type: Transform - - uid: 10927 - components: - - pos: -64.5,43.5 - parent: 1 - type: Transform - - uid: 10928 - components: - - pos: -60.5,43.5 - parent: 1 - type: Transform - - uid: 10930 - components: - - pos: -61.5,43.5 - parent: 1 - type: Transform - - uid: 10957 - components: - - pos: -57.5,68.5 - parent: 1 - type: Transform - - uid: 11509 - components: - - rot: 1.5707963267948966 rad - pos: -84.5,50.5 - parent: 1 - type: Transform - - uid: 13752 - components: - - pos: -85.5,33.5 - parent: 1 - type: Transform - - uid: 13845 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-12.5 - parent: 1 - type: Transform - - uid: 13848 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,9.5 - parent: 1 - type: Transform - - uid: 13849 - components: - - rot: -1.5707963267948966 rad - pos: 31.5,9.5 - parent: 1 - type: Transform - - uid: 14209 - components: - - pos: -43.5,-14.5 - parent: 1 - type: Transform - - uid: 14467 - components: - - pos: -59.5,68.5 - parent: 1 - type: Transform - - uid: 14469 - components: - - pos: -61.5,68.5 - parent: 1 - type: Transform - - uid: 14470 - components: - - pos: -62.5,68.5 - parent: 1 - type: Transform - - uid: 14602 - components: - - pos: -107.5,24.5 - parent: 1 - type: Transform - - uid: 14603 - components: - - pos: -107.5,25.5 - parent: 1 - type: Transform - - uid: 14606 - components: - - pos: -107.5,28.5 - parent: 1 - type: Transform - - uid: 14610 - components: - - pos: -109.5,34.5 - parent: 1 - type: Transform - - uid: 14612 - components: - - pos: -107.5,34.5 - parent: 1 - type: Transform - - uid: 14613 - components: - - pos: -107.5,35.5 - parent: 1 - type: Transform - - uid: 14614 - components: - - pos: -106.5,35.5 - parent: 1 - type: Transform - - uid: 14616 - components: - - pos: -101.5,35.5 - parent: 1 - type: Transform - - uid: 14617 - components: - - pos: -100.5,35.5 - parent: 1 - type: Transform - - uid: 14619 - components: - - pos: -98.5,35.5 - parent: 1 - type: Transform - - uid: 14620 - components: - - pos: -97.5,35.5 - parent: 1 - type: Transform - - uid: 14622 - components: - - pos: -94.5,35.5 - parent: 1 - type: Transform - - uid: 14624 - components: - - pos: -94.5,37.5 - parent: 1 - type: Transform - - uid: 14625 - components: - - pos: -94.5,38.5 - parent: 1 - type: Transform - - uid: 14626 - components: - - pos: -94.5,39.5 - parent: 1 - type: Transform - - uid: 14630 - components: - - pos: -94.5,43.5 - parent: 1 - type: Transform - - uid: 14632 - components: - - pos: -94.5,45.5 - parent: 1 - type: Transform - - uid: 14633 - components: - - pos: -94.5,46.5 - parent: 1 - type: Transform - - uid: 14636 - components: - - pos: -92.5,49.5 - parent: 1 - type: Transform - - uid: 14638 - components: - - pos: -90.5,49.5 - parent: 1 - type: Transform - - uid: 14639 - components: - - pos: -89.5,49.5 - parent: 1 - type: Transform - - uid: 14640 - components: - - pos: -88.5,49.5 - parent: 1 - type: Transform - - uid: 14642 - components: - - pos: -87.5,51.5 - parent: 1 - type: Transform - - uid: 14643 - components: - - pos: -87.5,52.5 - parent: 1 - type: Transform - - uid: 14645 - components: - - pos: -85.5,54.5 - parent: 1 - type: Transform - - uid: 14647 - components: - - pos: -83.5,54.5 - parent: 1 - type: Transform - - uid: 14648 - components: - - pos: -82.5,54.5 - parent: 1 - type: Transform - - uid: 14649 - components: - - pos: -81.5,57.5 - parent: 1 - type: Transform - - uid: 14650 - components: - - pos: -80.5,57.5 - parent: 1 - type: Transform - - uid: 14651 - components: - - pos: -68.5,62.5 - parent: 1 - type: Transform - - uid: 14653 - components: - - pos: -78.5,60.5 - parent: 1 - type: Transform - - uid: 14654 - components: - - pos: -77.5,60.5 - parent: 1 - type: Transform - - uid: 14656 - components: - - pos: -75.5,60.5 - parent: 1 - type: Transform - - uid: 14658 - components: - - pos: -73.5,60.5 - parent: 1 - type: Transform - - uid: 14660 - components: - - pos: -70.5,60.5 - parent: 1 - type: Transform - - uid: 14662 - components: - - pos: -67.5,62.5 - parent: 1 - type: Transform - - uid: 14664 - components: - - pos: -64.5,63.5 - parent: 1 - type: Transform - - uid: 14666 - components: - - pos: -64.5,65.5 - parent: 1 - type: Transform - - uid: 14667 - components: - - pos: -64.5,66.5 - parent: 1 - type: Transform - - uid: 14672 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,-13.5 - parent: 1 - type: Transform - - uid: 14673 - components: - - pos: -104.5,15.5 - parent: 1 - type: Transform - - uid: 14674 - components: - - pos: -103.5,15.5 - parent: 1 - type: Transform - - uid: 14676 - components: - - pos: -101.5,15.5 - parent: 1 - type: Transform - - uid: 14680 - components: - - pos: -94.5,15.5 - parent: 1 - type: Transform - - uid: 14681 - components: - - pos: -93.5,15.5 - parent: 1 - type: Transform - - uid: 14683 - components: - - pos: -91.5,15.5 - parent: 1 - type: Transform - - uid: 14684 - components: - - pos: -90.5,15.5 - parent: 1 - type: Transform - - uid: 14687 - components: - - pos: -85.5,14.5 - parent: 1 - type: Transform - - uid: 14688 - components: - - pos: -84.5,14.5 - parent: 1 - type: Transform - - uid: 14689 - components: - - pos: -83.5,14.5 - parent: 1 - type: Transform - - uid: 14691 - components: - - pos: -81.5,14.5 - parent: 1 - type: Transform - - uid: 14693 - components: - - pos: -78.5,13.5 - parent: 1 - type: Transform - - uid: 14695 - components: - - pos: -78.5,11.5 - parent: 1 - type: Transform - - uid: 14696 - components: - - pos: -78.5,10.5 - parent: 1 - type: Transform - - uid: 14698 - components: - - pos: -79.5,3.5 - parent: 1 - type: Transform - - uid: 14700 - components: - - pos: -79.5,4.5 - parent: 1 - type: Transform - - uid: 14702 - components: - - pos: -79.5,6.5 - parent: 1 - type: Transform - - uid: 14706 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,-13.5 - parent: 1 - type: Transform - - uid: 14707 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,-13.5 - parent: 1 - type: Transform - - uid: 14714 - components: - - rot: 3.141592653589793 rad - pos: -22.5,-17.5 - parent: 1 - type: Transform - - uid: 14716 - components: - - rot: 3.141592653589793 rad - pos: -20.5,-17.5 - parent: 1 - type: Transform - - uid: 14717 - components: - - rot: 3.141592653589793 rad - pos: -19.5,-17.5 - parent: 1 - type: Transform - - uid: 14718 - components: - - rot: 3.141592653589793 rad - pos: -18.5,-17.5 - parent: 1 - type: Transform - - uid: 14720 - components: - - rot: 3.141592653589793 rad - pos: -16.5,-17.5 - parent: 1 - type: Transform - - uid: 14722 - components: - - rot: 3.141592653589793 rad - pos: -15.5,-18.5 - parent: 1 - type: Transform - - uid: 14723 - components: - - rot: 3.141592653589793 rad - pos: -14.5,-18.5 - parent: 1 - type: Transform - - uid: 14724 - components: - - rot: 3.141592653589793 rad - pos: -13.5,-18.5 - parent: 1 - type: Transform - - uid: 14726 - components: - - rot: 3.141592653589793 rad - pos: -11.5,-18.5 - parent: 1 - type: Transform - - uid: 14727 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,-14.5 - parent: 1 - type: Transform - - uid: 14729 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,-16.5 - parent: 1 - type: Transform - - uid: 14731 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,-18.5 - parent: 1 - type: Transform - - uid: 14732 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,-18.5 - parent: 1 - type: Transform - - uid: 14734 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,-20.5 - parent: 1 - type: Transform - - uid: 14735 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,-21.5 - parent: 1 - type: Transform - - uid: 14737 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,-22.5 - parent: 1 - type: Transform - - uid: 14738 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,-24.5 - parent: 1 - type: Transform - - uid: 14741 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,-26.5 - parent: 1 - type: Transform - - uid: 14742 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-28.5 - parent: 1 - type: Transform - - uid: 14743 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,-26.5 - parent: 1 - type: Transform - - uid: 14745 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,-26.5 - parent: 1 - type: Transform - - uid: 14747 - components: - - rot: -1.5707963267948966 rad - pos: 23.5,-26.5 - parent: 1 - type: Transform - - uid: 14750 - components: - - rot: -1.5707963267948966 rad - pos: 26.5,-26.5 - parent: 1 - type: Transform - - uid: 14752 - components: - - rot: -1.5707963267948966 rad - pos: 26.5,-28.5 - parent: 1 - type: Transform - - uid: 14753 - components: - - rot: -1.5707963267948966 rad - pos: 26.5,-29.5 - parent: 1 - type: Transform - - uid: 14755 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,-29.5 - parent: 1 - type: Transform - - uid: 14757 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-29.5 - parent: 1 - type: Transform - - uid: 14758 - components: - - rot: 3.141592653589793 rad - pos: 22.5,-11.5 - parent: 1 - type: Transform - - uid: 14759 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-26.5 - parent: 1 - type: Transform - - uid: 14760 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-25.5 - parent: 1 - type: Transform - - uid: 14763 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-22.5 - parent: 1 - type: Transform - - uid: 14765 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-20.5 - parent: 1 - type: Transform - - uid: 14766 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-19.5 - parent: 1 - type: Transform - - uid: 14768 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-17.5 - parent: 1 - type: Transform - - uid: 14769 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-16.5 - parent: 1 - type: Transform - - uid: 14771 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-14.5 - parent: 1 - type: Transform - - uid: 14774 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-11.5 - parent: 1 - type: Transform - - uid: 14776 - components: - - rot: 3.141592653589793 rad - pos: 24.5,-11.5 - parent: 1 - type: Transform - - uid: 14777 - components: - - rot: 3.141592653589793 rad - pos: 25.5,-11.5 - parent: 1 - type: Transform - - uid: 14780 - components: - - rot: -1.5707963267948966 rad - pos: 32.5,-0.5 - parent: 1 - type: Transform - - uid: 14783 - components: - - rot: -1.5707963267948966 rad - pos: 32.5,-3.5 - parent: 1 - type: Transform - - uid: 14784 - components: - - rot: -1.5707963267948966 rad - pos: 32.5,-4.5 - parent: 1 - type: Transform - - uid: 14787 - components: - - rot: -1.5707963267948966 rad - pos: 32.5,-7.5 - parent: 1 - type: Transform - - uid: 14788 - components: - - rot: -1.5707963267948966 rad - pos: 32.5,-8.5 - parent: 1 - type: Transform - - uid: 14789 - components: - - rot: -1.5707963267948966 rad - pos: 32.5,-9.5 - parent: 1 - type: Transform - - uid: 14791 - components: - - rot: 3.141592653589793 rad - pos: 14.5,55.5 - parent: 1 - type: Transform - - uid: 14792 - components: - - rot: 3.141592653589793 rad - pos: 15.5,55.5 - parent: 1 - type: Transform - - uid: 14794 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,54.5 - parent: 1 - type: Transform - - uid: 14796 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,53.5 - parent: 1 - type: Transform - - uid: 14797 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,55.5 - parent: 1 - type: Transform - - uid: 14799 - components: - - rot: 3.141592653589793 rad - pos: 21.5,46.5 - parent: 1 - type: Transform - - uid: 14800 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,55.5 - parent: 1 - type: Transform - - uid: 14801 - components: - - rot: 3.141592653589793 rad - pos: 23.5,46.5 - parent: 1 - type: Transform - - uid: 14802 - components: - - rot: 3.141592653589793 rad - pos: 24.5,46.5 - parent: 1 - type: Transform - - uid: 14804 - components: - - rot: 3.141592653589793 rad - pos: 26.5,44.5 - parent: 1 - type: Transform - - uid: 14805 - components: - - rot: 3.141592653589793 rad - pos: 26.5,43.5 - parent: 1 - type: Transform - - uid: 14806 - components: - - rot: 3.141592653589793 rad - pos: 26.5,42.5 - parent: 1 - type: Transform - - uid: 14808 - components: - - rot: 3.141592653589793 rad - pos: 26.5,40.5 - parent: 1 - type: Transform - - uid: 14809 - components: - - rot: 3.141592653589793 rad - pos: 26.5,37.5 - parent: 1 - type: Transform - - uid: 14810 - components: - - rot: 3.141592653589793 rad - pos: 26.5,36.5 - parent: 1 - type: Transform - - uid: 14812 - components: - - rot: 3.141592653589793 rad - pos: 26.5,34.5 - parent: 1 - type: Transform - - uid: 14813 - components: - - rot: 3.141592653589793 rad - pos: 26.5,33.5 - parent: 1 - type: Transform - - uid: 14815 - components: - - rot: 3.141592653589793 rad - pos: 26.5,31.5 - parent: 1 - type: Transform - - uid: 14831 - components: - - pos: 10.5,-15.5 - parent: 1 - type: Transform - - uid: 14833 - components: - - pos: 9.5,-15.5 - parent: 1 - type: Transform - - uid: 15011 - components: - - pos: 12.5,-13.5 - parent: 1 - type: Transform - - uid: 15147 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,51.5 - parent: 1 - type: Transform - - uid: 15148 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,50.5 - parent: 1 - type: Transform - - uid: 15149 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,49.5 - parent: 1 - type: Transform - - uid: 15154 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,53.5 - parent: 1 - type: Transform - - uid: 15155 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,53.5 - parent: 1 - type: Transform - - uid: 15156 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,53.5 - parent: 1 - type: Transform - - uid: 15157 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,52.5 - parent: 1 - type: Transform - - uid: 15158 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,51.5 - parent: 1 - type: Transform - - uid: 15159 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,50.5 - parent: 1 - type: Transform - - uid: 15160 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,49.5 - parent: 1 - type: Transform - - uid: 15161 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,48.5 - parent: 1 - type: Transform - - uid: 15350 - components: - - pos: 28.5,32.5 - parent: 1 - type: Transform - - uid: 15352 - components: - - pos: 30.5,32.5 - parent: 1 - type: Transform - - uid: 15353 - components: - - pos: 31.5,32.5 - parent: 1 - type: Transform - - uid: 15354 - components: - - pos: 32.5,32.5 - parent: 1 - type: Transform - - uid: 15355 - components: - - pos: 32.5,31.5 - parent: 1 - type: Transform - - uid: 15357 - components: - - pos: 32.5,29.5 - parent: 1 - type: Transform - - uid: 15358 - components: - - pos: 32.5,27.5 - parent: 1 - type: Transform - - uid: 15360 - components: - - pos: 32.5,25.5 - parent: 1 - type: Transform - - uid: 15362 - components: - - pos: 32.5,23.5 - parent: 1 - type: Transform - - uid: 15363 - components: - - pos: 32.5,22.5 - parent: 1 - type: Transform - - uid: 15386 - components: - - pos: -44.5,69.5 - parent: 1 - type: Transform - - uid: 15387 - components: - - pos: -43.5,69.5 - parent: 1 - type: Transform - - uid: 15388 - components: - - pos: -42.5,69.5 - parent: 1 - type: Transform - - uid: 15389 - components: - - pos: -41.5,69.5 - parent: 1 - type: Transform - - uid: 15390 - components: - - pos: -40.5,69.5 - parent: 1 - type: Transform - - uid: 15391 - components: - - pos: -39.5,69.5 - parent: 1 - type: Transform - - uid: 15392 - components: - - pos: -38.5,69.5 - parent: 1 - type: Transform - - uid: 15393 - components: - - pos: -37.5,69.5 - parent: 1 - type: Transform - - uid: 15394 - components: - - pos: -36.5,69.5 - parent: 1 - type: Transform - - uid: 15395 - components: - - pos: -36.5,68.5 - parent: 1 - type: Transform - - uid: 15396 - components: - - pos: -36.5,67.5 - parent: 1 - type: Transform - - uid: 15397 - components: - - pos: -36.5,66.5 - parent: 1 - type: Transform - - uid: 15398 - components: - - pos: -36.5,65.5 - parent: 1 - type: Transform - - uid: 15399 - components: - - pos: -36.5,64.5 - parent: 1 - type: Transform - - uid: 15400 - components: - - pos: -36.5,63.5 - parent: 1 - type: Transform - - uid: 15401 - components: - - pos: -36.5,62.5 - parent: 1 - type: Transform - - uid: 15402 - components: - - pos: -36.5,61.5 - parent: 1 - type: Transform - - uid: 15403 - components: - - pos: -36.5,60.5 - parent: 1 - type: Transform - - uid: 15404 - components: - - pos: -36.5,59.5 - parent: 1 - type: Transform - - uid: 15436 - components: - - rot: 3.141592653589793 rad - pos: -34.5,62.5 - parent: 1 - type: Transform - - uid: 15437 - components: - - rot: 3.141592653589793 rad - pos: -34.5,63.5 - parent: 1 - type: Transform - - uid: 15438 - components: - - rot: 3.141592653589793 rad - pos: -34.5,64.5 - parent: 1 - type: Transform - - uid: 15441 - components: - - rot: 3.141592653589793 rad - pos: -34.5,67.5 - parent: 1 - type: Transform - - uid: 15442 - components: - - rot: 3.141592653589793 rad - pos: -34.5,68.5 - parent: 1 - type: Transform - - uid: 15444 - components: - - rot: 3.141592653589793 rad - pos: -34.5,70.5 - parent: 1 - type: Transform - - uid: 15445 - components: - - rot: 3.141592653589793 rad - pos: -34.5,71.5 - parent: 1 - type: Transform - - uid: 15446 - components: - - rot: 3.141592653589793 rad - pos: -35.5,71.5 - parent: 1 - type: Transform - - uid: 15448 - components: - - rot: 3.141592653589793 rad - pos: -37.5,71.5 - parent: 1 - type: Transform - - uid: 15449 - components: - - rot: 3.141592653589793 rad - pos: -38.5,71.5 - parent: 1 - type: Transform - - uid: 15451 - components: - - rot: 3.141592653589793 rad - pos: -40.5,71.5 - parent: 1 - type: Transform - - uid: 15452 - components: - - rot: 3.141592653589793 rad - pos: -41.5,71.5 - parent: 1 - type: Transform - - uid: 15453 - components: - - rot: 3.141592653589793 rad - pos: -34.5,60.5 - parent: 1 - type: Transform - - uid: 15464 - components: - - pos: -42.5,57.5 - parent: 1 - type: Transform - - uid: 15465 - components: - - pos: -40.5,58.5 - parent: 1 - type: Transform - - uid: 15467 - components: - - pos: -37.5,57.5 - parent: 1 - type: Transform - - uid: 15475 - components: - - pos: -44.5,58.5 - parent: 1 - type: Transform - - uid: 15484 - components: - - pos: -38.5,59.5 - parent: 1 - type: Transform - - uid: 15510 - components: - - pos: -1.5,-22.5 - parent: 1 - type: Transform - - uid: 15513 - components: - - pos: -6.5,-22.5 - parent: 1 - type: Transform - - uid: 15514 - components: - - pos: -7.5,-21.5 - parent: 1 - type: Transform - - uid: 15515 - components: - - pos: -7.5,-19.5 - parent: 1 - type: Transform - - uid: 15528 - components: - - pos: -0.5,-22.5 - parent: 1 - type: Transform - - uid: 15529 - components: - - pos: -3.5,-22.5 - parent: 1 - type: Transform - - uid: 15530 - components: - - pos: -5.5,-22.5 - parent: 1 - type: Transform - - uid: 15531 - components: - - pos: -7.5,-22.5 - parent: 1 - type: Transform - - uid: 15533 - components: - - pos: 2.5,-22.5 - parent: 1 - type: Transform - - uid: 15534 - components: - - pos: 3.5,-22.5 - parent: 1 - type: Transform - - uid: 15536 - components: - - pos: 5.5,-22.5 - parent: 1 - type: Transform - - uid: 15537 - components: - - pos: 6.5,-22.5 - parent: 1 - type: Transform - - uid: 15538 - components: - - pos: 7.5,-22.5 - parent: 1 - type: Transform - - uid: 15540 - components: - - pos: 10.5,-22.5 - parent: 1 - type: Transform - - uid: 15541 - components: - - pos: 11.5,-22.5 - parent: 1 - type: Transform - - uid: 15543 - components: - - pos: 13.5,-22.5 - parent: 1 - type: Transform - - uid: 15544 - components: - - pos: 14.5,-22.5 - parent: 1 - type: Transform - - uid: 15545 - components: - - pos: 14.5,-21.5 - parent: 1 - type: Transform - - uid: 15938 - components: - - pos: 17.5,-11.5 - parent: 1 - type: Transform - - uid: 15948 - components: - - pos: -52.5,30.5 - parent: 1 - type: Transform - - uid: 15949 - components: - - pos: -53.5,30.5 - parent: 1 - type: Transform - - uid: 15950 - components: - - pos: -51.5,30.5 - parent: 1 - type: Transform - - uid: 15976 - components: - - rot: 3.141592653589793 rad - pos: -24.5,30.5 - parent: 1 - type: Transform -- proto: GrilleBroken - entities: - - uid: 1053 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,7.5 - parent: 1 - type: Transform - - uid: 1138 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,7.5 - parent: 1 - type: Transform - - uid: 3154 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,22.5 - parent: 1 - type: Transform - - uid: 3430 - components: - - pos: -35.5,17.5 - parent: 1 - type: Transform - - uid: 4127 - components: - - pos: -59.5,11.5 - parent: 1 - type: Transform - - uid: 4508 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,3.5 - parent: 1 - type: Transform - - uid: 4565 - components: - - rot: 3.141592653589793 rad - pos: 16.5,42.5 - parent: 1 - type: Transform - - uid: 4566 - components: - - pos: 16.5,42.5 - parent: 1 - type: Transform - - uid: 4705 - components: - - rot: 3.141592653589793 rad - pos: -59.5,13.5 - parent: 1 - type: Transform - - uid: 5319 - components: - - rot: -1.5707963267948966 rad - pos: -59.5,13.5 - parent: 1 - type: Transform - - uid: 5327 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,42.5 - parent: 1 - type: Transform - - uid: 5332 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,42.5 - parent: 1 - type: Transform - - uid: 6011 - components: - - rot: 3.141592653589793 rad - pos: -25.5,63.5 - parent: 1 - type: Transform - - uid: 6277 - components: - - pos: -18.5,70.5 - parent: 1 - type: Transform - - uid: 6672 - components: - - pos: -1.5,61.5 - parent: 1 - type: Transform - - uid: 6676 - components: - - rot: -1.5707963267948966 rad - pos: -4.5,65.5 - parent: 1 - type: Transform - - uid: 7032 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,45.5 - parent: 1 - type: Transform - - uid: 7414 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,70.5 - parent: 1 - type: Transform - - uid: 7521 - components: - - pos: -14.5,37.5 - parent: 1 - type: Transform - - uid: 7522 - components: - - rot: 3.141592653589793 rad - pos: -14.5,40.5 - parent: 1 - type: Transform - - uid: 7524 - components: - - rot: 3.141592653589793 rad - pos: -14.5,42.5 - parent: 1 - type: Transform - - uid: 8068 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,65.5 - parent: 1 - type: Transform - - uid: 8287 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,70.5 - parent: 1 - type: Transform - - uid: 8288 - components: - - rot: 3.141592653589793 rad - pos: -8.5,67.5 - parent: 1 - type: Transform - - uid: 8974 - components: - - pos: 11.5,55.5 - parent: 1 - type: Transform - - uid: 8979 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,56.5 - parent: 1 - type: Transform - - uid: 8984 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,55.5 - parent: 1 - type: Transform - - uid: 8985 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,62.5 - parent: 1 - type: Transform - - uid: 8987 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,56.5 - parent: 1 - type: Transform - - uid: 8990 - components: - - pos: 2.5,56.5 - parent: 1 - type: Transform - - uid: 9031 - components: - - pos: -31.5,62.5 - parent: 1 - type: Transform - - uid: 9049 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,71.5 - parent: 1 - type: Transform - - uid: 9052 - components: - - rot: 3.141592653589793 rad - pos: -47.5,73.5 - parent: 1 - type: Transform - - uid: 9053 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,75.5 - parent: 1 - type: Transform - - uid: 9054 - components: - - pos: -47.5,78.5 - parent: 1 - type: Transform - - uid: 9056 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,86.5 - parent: 1 - type: Transform - - uid: 9064 - components: - - pos: -65.5,88.5 - parent: 1 - type: Transform - - uid: 9078 - components: - - rot: -1.5707963267948966 rad - pos: -64.5,90.5 - parent: 1 - type: Transform - - uid: 9081 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,71.5 - parent: 1 - type: Transform - - uid: 9083 - components: - - pos: -43.5,71.5 - parent: 1 - type: Transform - - uid: 9084 - components: - - pos: -65.5,83.5 - parent: 1 - type: Transform - - uid: 9085 - components: - - pos: -55.5,76.5 - parent: 1 - type: Transform - - uid: 9093 - components: - - rot: 3.141592653589793 rad - pos: -58.5,68.5 - parent: 1 - type: Transform - - uid: 9098 - components: - - pos: -60.5,68.5 - parent: 1 - type: Transform - - uid: 9100 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,68.5 - parent: 1 - type: Transform - - uid: 9902 - components: - - rot: 3.141592653589793 rad - pos: -59.5,24.5 - parent: 1 - type: Transform - - uid: 9979 - components: - - rot: 3.141592653589793 rad - pos: -59.5,11.5 - parent: 1 - type: Transform - - uid: 10411 - components: - - pos: 22.5,36.5 - parent: 1 - type: Transform - - uid: 10416 - components: - - rot: -1.5707963267948966 rad - pos: 22.5,36.5 - parent: 1 - type: Transform - - uid: 10427 - components: - - rot: 3.141592653589793 rad - pos: 22.5,36.5 - parent: 1 - type: Transform - - uid: 10428 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,36.5 - parent: 1 - type: Transform - - uid: 14601 - components: - - pos: -107.5,23.5 - parent: 1 - type: Transform - - uid: 14604 - components: - - pos: -107.5,29.5 - parent: 1 - type: Transform - - uid: 14605 - components: - - pos: -107.5,26.5 - parent: 1 - type: Transform - - uid: 14607 - components: - - rot: 1.5707963267948966 rad - pos: -107.5,27.5 - parent: 1 - type: Transform - - uid: 14608 - components: - - pos: -99.5,35.5 - parent: 1 - type: Transform - - uid: 14609 - components: - - rot: -1.5707963267948966 rad - pos: -105.5,35.5 - parent: 1 - type: Transform - - uid: 14611 - components: - - rot: 1.5707963267948966 rad - pos: -110.5,34.5 - parent: 1 - type: Transform - - uid: 14615 - components: - - rot: 1.5707963267948966 rad - pos: -102.5,35.5 - parent: 1 - type: Transform - - uid: 14618 - components: - - rot: 3.141592653589793 rad - pos: -94.5,36.5 - parent: 1 - type: Transform - - uid: 14621 - components: - - rot: -1.5707963267948966 rad - pos: -96.5,35.5 - parent: 1 - type: Transform - - uid: 14623 - components: - - pos: -94.5,40.5 - parent: 1 - type: Transform - - uid: 14627 - components: - - rot: 3.141592653589793 rad - pos: -94.5,42.5 - parent: 1 - type: Transform - - uid: 14628 - components: - - rot: 1.5707963267948966 rad - pos: -82.5,57.5 - parent: 1 - type: Transform - - uid: 14629 - components: - - pos: -94.5,44.5 - parent: 1 - type: Transform - - uid: 14631 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,14.5 - parent: 1 - type: Transform - - uid: 14634 - components: - - pos: -94.5,47.5 - parent: 1 - type: Transform - - uid: 14635 - components: - - rot: 1.5707963267948966 rad - pos: -93.5,49.5 - parent: 1 - type: Transform - - uid: 14637 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,49.5 - parent: 1 - type: Transform - - uid: 14641 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,49.5 - parent: 1 - type: Transform - - uid: 14644 - components: - - rot: -1.5707963267948966 rad - pos: -84.5,54.5 - parent: 1 - type: Transform - - uid: 14646 - components: - - pos: -86.5,54.5 - parent: 1 - type: Transform - - uid: 14652 - components: - - rot: -1.5707963267948966 rad - pos: -74.5,60.5 - parent: 1 - type: Transform - - uid: 14655 - components: - - pos: -76.5,60.5 - parent: 1 - type: Transform - - uid: 14657 - components: - - rot: 1.5707963267948966 rad - pos: -79.5,60.5 - parent: 1 - type: Transform - - uid: 14659 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,60.5 - parent: 1 - type: Transform - - uid: 14661 - components: - - pos: -71.5,60.5 - parent: 1 - type: Transform - - uid: 14663 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,62.5 - parent: 1 - type: Transform - - uid: 14665 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,64.5 - parent: 1 - type: Transform - - uid: 14668 - components: - - rot: -1.5707963267948966 rad - pos: -79.5,57.5 - parent: 1 - type: Transform - - uid: 14669 - components: - - rot: -1.5707963267948966 rad - pos: -81.5,54.5 - parent: 1 - type: Transform - - uid: 14670 - components: - - pos: -108.5,34.5 - parent: 1 - type: Transform - - uid: 14671 - components: - - rot: 3.141592653589793 rad - pos: -87.5,50.5 - parent: 1 - type: Transform - - uid: 14677 - components: - - rot: 1.5707963267948966 rad - pos: -102.5,15.5 - parent: 1 - type: Transform - - uid: 14678 - components: - - rot: 1.5707963267948966 rad - pos: -105.5,15.5 - parent: 1 - type: Transform - - uid: 14679 - components: - - rot: -1.5707963267948966 rad - pos: -100.5,15.5 - parent: 1 - type: Transform - - uid: 14682 - components: - - rot: -1.5707963267948966 rad - pos: 23.5,-11.5 - parent: 1 - type: Transform - - uid: 14685 - components: - - rot: 1.5707963267948966 rad - pos: -95.5,15.5 - parent: 1 - type: Transform - - uid: 14686 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,15.5 - parent: 1 - type: Transform - - uid: 14690 - components: - - rot: 1.5707963267948966 rad - pos: -92.5,15.5 - parent: 1 - type: Transform - - uid: 14692 - components: - - rot: 3.141592653589793 rad - pos: -82.5,14.5 - parent: 1 - type: Transform - - uid: 14694 - components: - - rot: 1.5707963267948966 rad - pos: -78.5,12.5 - parent: 1 - type: Transform - - uid: 14697 - components: - - rot: 3.141592653589793 rad - pos: -78.5,9.5 - parent: 1 - type: Transform - - uid: 14699 - components: - - rot: -1.5707963267948966 rad - pos: -80.5,14.5 - parent: 1 - type: Transform - - uid: 14701 - components: - - pos: -79.5,5.5 - parent: 1 - type: Transform - - uid: 14703 - components: - - rot: 1.5707963267948966 rad - pos: -79.5,7.5 - parent: 1 - type: Transform - - uid: 14709 - components: - - anchored: False - rot: 1.5707963267948966 rad - pos: -55.060143,-12.660082 - parent: 5005 - type: Transform - - bodyType: Dynamic - type: Physics - - uid: 14715 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,-18.5 - parent: 1 - type: Transform - - uid: 14719 - components: - - rot: 1.5707963267948966 rad - pos: -16.5,-18.5 - parent: 1 - type: Transform - - uid: 14721 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,-17.5 - parent: 1 - type: Transform - - uid: 14725 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,-17.5 - parent: 1 - type: Transform - - uid: 14728 - components: - - rot: 3.141592653589793 rad - pos: 29.5,-29.5 - parent: 1 - type: Transform - - uid: 14730 - components: - - pos: 26.5,-27.5 - parent: 1 - type: Transform - - uid: 14733 - components: - - rot: 3.141592653589793 rad - pos: 16.5,-15.5 - parent: 1 - type: Transform - - uid: 14736 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-27.5 - parent: 1 - type: Transform - - uid: 14739 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-12.5 - parent: 1 - type: Transform - - uid: 14740 - components: - - pos: 30.5,-24.5 - parent: 1 - type: Transform - - uid: 14744 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-23.5 - parent: 1 - type: Transform - - uid: 14746 - components: - - rot: 3.141592653589793 rad - pos: 30.5,-21.5 - parent: 1 - type: Transform - - uid: 14748 - components: - - pos: 17.5,-19.5 - parent: 1 - type: Transform - - uid: 14749 - components: - - rot: 1.5707963267948966 rad - pos: 17.5,-22.5 - parent: 1 - type: Transform - - uid: 14751 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,-18.5 - parent: 1 - type: Transform - - uid: 14754 - components: - - rot: 1.5707963267948966 rad - pos: 18.5,-23.5 - parent: 1 - type: Transform - - uid: 14756 - components: - - pos: 30.5,-15.5 - parent: 1 - type: Transform - - uid: 14761 - components: - - rot: 1.5707963267948966 rad - pos: 27.5,-29.5 - parent: 1 - type: Transform - - uid: 14762 - components: - - rot: -1.5707963267948966 rad - pos: 20.5,-26.5 - parent: 1 - type: Transform - - uid: 14764 - components: - - pos: 30.5,-13.5 - parent: 1 - type: Transform - - uid: 14767 - components: - - rot: 3.141592653589793 rad - pos: 18.5,-25.5 - parent: 1 - type: Transform - - uid: 14770 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,-26.5 - parent: 1 - type: Transform - - uid: 14772 - components: - - rot: 3.141592653589793 rad - pos: 24.5,-26.5 - parent: 1 - type: Transform - - uid: 14773 - components: - - rot: 1.5707963267948966 rad - pos: 25.5,-26.5 - parent: 1 - type: Transform - - uid: 14775 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,-17.5 - parent: 1 - type: Transform - - uid: 14778 - components: - - rot: -1.5707963267948966 rad - pos: 26.5,-11.5 - parent: 1 - type: Transform - - uid: 14781 - components: - - pos: 32.5,-6.5 - parent: 1 - type: Transform - - uid: 14782 - components: - - rot: 3.141592653589793 rad - pos: 32.5,-10.5 - parent: 1 - type: Transform - - uid: 14785 - components: - - rot: -1.5707963267948966 rad - pos: 32.5,-5.5 - parent: 1 - type: Transform - - uid: 14786 - components: - - rot: -1.5707963267948966 rad - pos: 32.5,-2.5 - parent: 1 - type: Transform - - uid: 14790 - components: - - rot: 3.141592653589793 rad - pos: 32.5,-1.5 - parent: 1 - type: Transform - - uid: 14795 - components: - - rot: -1.5707963267948966 rad - pos: 22.5,46.5 - parent: 1 - type: Transform - - uid: 14798 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,55.5 - parent: 1 - type: Transform - - uid: 14803 - components: - - pos: 26.5,45.5 - parent: 1 - type: Transform - - uid: 14807 - components: - - rot: 3.141592653589793 rad - pos: 26.5,41.5 - parent: 1 - type: Transform - - uid: 14811 - components: - - rot: -1.5707963267948966 rad - pos: 26.5,35.5 - parent: 1 - type: Transform - - uid: 14814 - components: - - pos: 26.5,32.5 - parent: 1 - type: Transform - - uid: 15150 - components: - - rot: 3.141592653589793 rad - pos: 21.5,48.5 - parent: 1 - type: Transform - - uid: 15151 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,52.5 - parent: 1 - type: Transform - - uid: 15152 - components: - - pos: 21.5,55.5 - parent: 1 - type: Transform - - uid: 15153 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,55.5 - parent: 1 - type: Transform - - uid: 15351 - components: - - rot: -1.5707963267948966 rad - pos: 29.5,32.5 - parent: 1 - type: Transform - - uid: 15356 - components: - - rot: 3.141592653589793 rad - pos: 32.5,30.5 - parent: 1 - type: Transform - - uid: 15359 - components: - - rot: -1.5707963267948966 rad - pos: 32.5,26.5 - parent: 1 - type: Transform - - uid: 15361 - components: - - pos: 32.5,24.5 - parent: 1 - type: Transform - - uid: 15364 - components: - - rot: 3.141592653589793 rad - pos: 32.5,21.5 - parent: 1 - type: Transform - - uid: 15435 - components: - - pos: -34.5,61.5 - parent: 1 - type: Transform - - uid: 15439 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,65.5 - parent: 1 - type: Transform - - uid: 15440 - components: - - rot: 3.141592653589793 rad - pos: -34.5,66.5 - parent: 1 - type: Transform - - uid: 15443 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,69.5 - parent: 1 - type: Transform - - uid: 15447 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,71.5 - parent: 1 - type: Transform - - uid: 15450 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,71.5 - parent: 1 - type: Transform - - uid: 15504 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,-22.5 - parent: 1 - type: Transform - - uid: 15511 - components: - - rot: -1.5707963267948966 rad - pos: 0.5,-22.5 - parent: 1 - type: Transform - - uid: 15512 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,-22.5 - parent: 1 - type: Transform - - uid: 15532 - components: - - rot: 3.141592653589793 rad - pos: -7.5,-20.5 - parent: 1 - type: Transform - - uid: 15539 - components: - - rot: 3.141592653589793 rad - pos: 8.5,-22.5 - parent: 1 - type: Transform - - uid: 15542 - components: - - rot: -1.5707963267948966 rad - pos: 12.5,-22.5 - parent: 1 - type: Transform - - uid: 15546 - components: - - rot: 1.5707963267948966 rad - pos: 14.5,-20.5 - parent: 1 - type: Transform - - uid: 15851 - components: - - pos: 24.5,39.5 - parent: 1 - type: Transform -- proto: Handcuffs - entities: - - uid: 10917 - components: - - pos: -13.576752,65.56619 - parent: 1 - type: Transform -- proto: HandheldGPSBasic - entities: - - uid: 15784 - components: - - pos: -37.37278,-10.030424 - parent: 1 - type: Transform - - uid: 15785 - components: - - pos: -37.607155,-10.327299 - parent: 1 - type: Transform -- proto: HandheldHealthAnalyzer - entities: - - uid: 373 - components: - - pos: 5.543945,-11.373774 - parent: 1 - type: Transform -- proto: HarpInstrument - entities: - - uid: 6335 - components: - - pos: 15.5,52.5 - parent: 1 - type: Transform -- proto: HeadSkeleton - entities: - - uid: 6645 - components: - - flags: SessionSpecific - name: captain's skull - type: MetaData - - pos: -14.534092,66.507454 - parent: 1 - type: Transform - - baseSprintSpeed: 2.5 - type: MovementSpeedModifier - - type: GhostTakeoverAvailable - - type: MindContainer - - type: InputMover - - type: MobMover - - type: MovementAlwaysTouching - - type: CanEscapeInventory -- proto: HighSecArmoryLocked - entities: - - uid: 6682 - components: - - pos: -44.5,62.5 - parent: 1 - type: Transform - - uid: 7869 - components: - - pos: -44.5,64.5 - parent: 1 - type: Transform -- proto: HighSecCommandLocked - entities: - - uid: 2752 - components: - - pos: 26.5,4.5 - parent: 1 - type: Transform - - uid: 2970 - components: - - pos: 26.5,22.5 - parent: 1 - type: Transform - - uid: 6196 - components: - - pos: 10.5,41.5 - parent: 1 - type: Transform - - uid: 6396 - components: - - pos: -19.5,54.5 - parent: 1 - type: Transform -- proto: HospitalCurtainsOpen - entities: - - uid: 1404 - components: - - pos: 10.5,30.5 - parent: 1 - type: Transform - - uid: 1406 - components: - - pos: 11.5,30.5 - parent: 1 - type: Transform - - uid: 1407 - components: - - pos: 12.5,30.5 - parent: 1 - type: Transform - - uid: 1896 - components: - - pos: 7.5,30.5 - parent: 1 - type: Transform - - uid: 1897 - components: - - pos: 8.5,30.5 - parent: 1 - type: Transform - - uid: 1908 - components: - - pos: 9.5,30.5 - parent: 1 - type: Transform - - uid: 15349 - components: - - pos: -5.5,58.5 - parent: 1 - type: Transform -- proto: hydroponicsSoil - entities: - - uid: 7306 - components: - - pos: -62.5,83.5 - parent: 1 - type: Transform - - uid: 7311 - components: - - pos: -62.5,85.5 - parent: 1 - type: Transform - - uid: 7326 - components: - - pos: -62.5,84.5 - parent: 1 - type: Transform -- proto: HydroponicsToolClippers - entities: - - uid: 6951 - components: - - pos: -42.941048,47.547256 - parent: 1 - type: Transform -- proto: HydroponicsToolMiniHoe - entities: - - uid: 6939 - components: - - pos: -42.847298,47.547256 - parent: 1 - type: Transform - - uid: 7724 - components: - - pos: -60.46126,83.48959 - parent: 1 - type: Transform -- proto: HydroponicsToolSpade - entities: - - uid: 7725 - components: - - pos: -61.46126,88.67473 - parent: 1 - type: Transform -- proto: hydroponicsTray - entities: - - uid: 185 - components: - - pos: -41.5,52.5 - parent: 1 - type: Transform - - uid: 186 - components: - - pos: -42.5,52.5 - parent: 1 - type: Transform - - uid: 6860 - components: - - pos: -43.5,45.5 - parent: 1 - type: Transform - - uid: 6861 - components: - - pos: -43.5,44.5 - parent: 1 - type: Transform - - uid: 6862 - components: - - pos: -43.5,43.5 - parent: 1 - type: Transform - - uid: 6863 - components: - - pos: -42.5,45.5 - parent: 1 - type: Transform - - uid: 6864 - components: - - pos: -42.5,44.5 - parent: 1 - type: Transform - - uid: 6865 - components: - - pos: -42.5,43.5 - parent: 1 - type: Transform - - uid: 6866 - components: - - pos: -41.5,45.5 - parent: 1 - type: Transform - - uid: 6867 - components: - - pos: -41.5,44.5 - parent: 1 - type: Transform - - uid: 6868 - components: - - pos: -41.5,43.5 - parent: 1 - type: Transform - - uid: 6869 - components: - - pos: -44.5,41.5 - parent: 1 - type: Transform - - uid: 6870 - components: - - pos: -43.5,41.5 - parent: 1 - type: Transform - - uid: 6871 - components: - - pos: -42.5,41.5 - parent: 1 - type: Transform - - uid: 6872 - components: - - pos: -41.5,41.5 - parent: 1 - type: Transform -- proto: InflatableDoor - entities: - - uid: 290 - components: - - pos: -1.5,-6.5 - parent: 1 - type: Transform - - uid: 2252 - components: - - pos: -63.5,7.5 - parent: 1 - type: Transform - - uid: 2828 - components: - - pos: -27.5,28.5 - parent: 1 - type: Transform - - uid: 2967 - components: - - pos: 23.5,21.5 - parent: 1 - type: Transform - - uid: 2968 - components: - - pos: 22.5,21.5 - parent: 1 - type: Transform - - uid: 7945 - components: - - pos: -35.5,12.5 - parent: 1 - type: Transform -- proto: InflatableWall - entities: - - uid: 477 - components: - - pos: 5.5,-1.5 - parent: 1 - type: Transform - - uid: 681 - components: - - pos: 25.5,-2.5 - parent: 1 - type: Transform - - uid: 691 - components: - - pos: 21.5,-4.5 - parent: 1 - type: Transform - - uid: 692 - components: - - pos: 21.5,-5.5 - parent: 1 - type: Transform - - uid: 693 - components: - - pos: 23.5,0.5 - parent: 1 - type: Transform - - uid: 1000 - components: - - pos: 20.5,12.5 - parent: 1 - type: Transform - - uid: 1191 - components: - - pos: 15.5,16.5 - parent: 1 - type: Transform - - uid: 3044 - components: - - pos: -21.5,28.5 - parent: 1 - type: Transform - - uid: 3045 - components: - - pos: -21.5,29.5 - parent: 1 - type: Transform - - uid: 3117 - components: - - pos: -27.5,27.5 - parent: 1 - type: Transform - - uid: 3118 - components: - - pos: -32.5,30.5 - parent: 1 - type: Transform - - uid: 3144 - components: - - pos: -33.5,30.5 - parent: 1 - type: Transform - - uid: 3146 - components: - - pos: -34.5,14.5 - parent: 1 - type: Transform - - uid: 3164 - components: - - pos: -28.5,22.5 - parent: 1 - type: Transform - - uid: 4523 - components: - - pos: -55.5,-5.5 - parent: 1 - type: Transform - - uid: 4527 - components: - - pos: -50.5,0.5 - parent: 1 - type: Transform - - uid: 5177 - components: - - pos: -62.5,7.5 - parent: 1 - type: Transform - - uid: 5184 - components: - - pos: -65.5,7.5 - parent: 1 - type: Transform - - uid: 5185 - components: - - pos: -64.5,7.5 - parent: 1 - type: Transform - - uid: 7569 - components: - - pos: -35.5,11.5 - parent: 1 - type: Transform -- proto: InflatableWallStack1 - entities: - - uid: 335 - components: - - pos: -82.4705,30.370302 - parent: 1 - type: Transform - - uid: 7229 - components: - - pos: -82.4705,30.370302 - parent: 1 - type: Transform - - uid: 10734 - components: - - pos: -82.4705,30.370302 - parent: 1 - type: Transform -- proto: IngotGold - entities: - - uid: 10870 - components: - - pos: -20.428497,57.597878 - parent: 1 - type: Transform -- proto: IntercomAll - entities: - - uid: 8604 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,37.5 - parent: 1 - type: Transform - - uid: 8605 - components: - - rot: 3.141592653589793 rad - pos: -6.5,58.5 - parent: 1 - type: Transform -- proto: IntercomCommand - entities: - - uid: 8606 - components: - - rot: 3.141592653589793 rad - pos: -14.5,61.5 - parent: 1 - type: Transform - - uid: 8607 - components: - - rot: -1.5707963267948966 rad - pos: -6.5,53.5 - parent: 1 - type: Transform - - uid: 8608 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,55.5 - parent: 1 - type: Transform -- proto: IntercomCommon - entities: - - uid: 4801 - components: - - rot: 3.141592653589793 rad - pos: -73.5,-12.5 - parent: 1 - type: Transform - - uid: 8609 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,48.5 - parent: 1 - type: Transform - - uid: 8610 - components: - - rot: 3.141592653589793 rad - pos: -8.5,26.5 - parent: 1 - type: Transform - - uid: 8611 - components: - - pos: -27.5,34.5 - parent: 1 - type: Transform - - uid: 8612 - components: - - rot: 3.141592653589793 rad - pos: -35.5,22.5 - parent: 1 - type: Transform - - uid: 8613 - components: - - rot: 1.5707963267948966 rad - pos: -49.5,39.5 - parent: 1 - type: Transform - - uid: 8614 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,28.5 - parent: 1 - type: Transform - - uid: 8615 - components: - - rot: 3.141592653589793 rad - pos: -53.5,11.5 - parent: 1 - type: Transform - - uid: 8618 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,12.5 - parent: 1 - type: Transform - - uid: 8619 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,10.5 - parent: 1 - type: Transform - - uid: 8620 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,16.5 - parent: 1 - type: Transform - - uid: 8621 - components: - - pos: 3.5,7.5 - parent: 1 - type: Transform - - uid: 8622 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,1.5 - parent: 1 - type: Transform - - uid: 8623 - components: - - rot: -1.5707963267948966 rad - pos: 29.5,15.5 - parent: 1 - type: Transform -- proto: IntercomEngineering - entities: - - uid: 14171 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,34.5 - parent: 1 - type: Transform - - uid: 14172 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,26.5 - parent: 1 - type: Transform - - uid: 14173 - components: - - pos: -81.5,28.5 - parent: 1 - type: Transform - - uid: 14174 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,32.5 - parent: 1 - type: Transform - - uid: 14175 - components: - - rot: 3.141592653589793 rad - pos: -65.5,18.5 - parent: 1 - type: Transform - - uid: 14176 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,16.5 - parent: 1 - type: Transform - - uid: 14177 - components: - - rot: -1.5707963267948966 rad - pos: -72.5,29.5 - parent: 1 - type: Transform -- proto: IntercomMedical - entities: - - uid: 8629 - components: - - pos: -3.5,35.5 - parent: 1 - type: Transform - - uid: 8630 - components: - - rot: 3.141592653589793 rad - pos: 1.5,35.5 - parent: 1 - type: Transform - - uid: 8632 - components: - - rot: 3.141592653589793 rad - pos: 9.5,27.5 - parent: 1 - type: Transform - - uid: 8633 - components: - - rot: 3.141592653589793 rad - pos: 9.5,21.5 - parent: 1 - type: Transform - - uid: 8634 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,18.5 - parent: 1 - type: Transform - - uid: 8635 - components: - - rot: -1.5707963267948966 rad - pos: 0.5,21.5 - parent: 1 - type: Transform - - uid: 15134 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,35.5 - parent: 1 - type: Transform -- proto: IntercomScience - entities: - - uid: 8624 - components: - - rot: 3.141592653589793 rad - pos: -5.5,3.5 - parent: 1 - type: Transform - - uid: 8625 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,-3.5 - parent: 1 - type: Transform - - uid: 8626 - components: - - pos: -1.5,-0.5 - parent: 1 - type: Transform - - uid: 8627 - components: - - pos: 0.5,-7.5 - parent: 1 - type: Transform - - uid: 8628 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,-11.5 - parent: 1 - type: Transform -- proto: IntercomSecurity - entities: - - uid: 8643 - components: - - rot: 1.5707963267948966 rad - pos: -49.5,51.5 - parent: 1 - type: Transform - - uid: 8644 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,58.5 - parent: 1 - type: Transform - - uid: 8645 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,64.5 - parent: 1 - type: Transform - - uid: 8646 - components: - - rot: 1.5707963267948966 rad - pos: -62.5,64.5 - parent: 1 - type: Transform - - uid: 8647 - components: - - rot: -1.5707963267948966 rad - pos: -58.5,51.5 - parent: 1 - type: Transform - - uid: 8649 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,85.5 - parent: 1 - type: Transform - - uid: 8650 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,57.5 - parent: 1 - type: Transform -- proto: IntercomService - entities: - - uid: 8639 - components: - - pos: -34.5,41.5 - parent: 1 - type: Transform - - uid: 8640 - components: - - pos: -28.5,48.5 - parent: 1 - type: Transform - - uid: 8641 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,45.5 - parent: 1 - type: Transform - - uid: 8642 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,51.5 - parent: 1 - type: Transform -- proto: IntercomSupply - entities: - - uid: 8636 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,2.5 - parent: 1 - type: Transform - - uid: 8637 - components: - - pos: -41.5,-8.5 - parent: 1 - type: Transform - - uid: 8638 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,-8.5 - parent: 1 - type: Transform -- proto: JanitorialTrolley - entities: - - uid: 7100 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,37.5 - parent: 1 - type: Transform -- proto: KitchenKnife - entities: - - uid: 6953 - components: - - pos: -36.41309,45.528122 - parent: 1 - type: Transform -- proto: KitchenMicrowave - entities: - - uid: 6906 - components: - - pos: -33.5,42.5 - parent: 1 - type: Transform - - uid: 6907 - components: - - pos: -36.5,47.5 - parent: 1 - type: Transform - - uid: 7320 - components: - - pos: -61.5,89.5 - parent: 1 - type: Transform - - uid: 7944 - components: - - pos: -56.5,63.5 - parent: 1 - type: Transform -- proto: KitchenReagentGrinder - entities: - - uid: 1951 - components: - - pos: -4.5,24.5 - parent: 1 - type: Transform - - uid: 6908 - components: - - pos: -34.5,45.5 - parent: 1 - type: Transform - - uid: 7722 - components: - - pos: -58.5,89.5 - parent: 1 - type: Transform -- proto: KitchenSpike - entities: - - uid: 2304 - components: - - pos: -76.5,55.5 - parent: 1 - type: Transform - - uid: 6924 - components: - - pos: -27.5,46.5 - parent: 1 - type: Transform - - uid: 6925 - components: - - pos: -27.5,47.5 - parent: 1 - type: Transform -- proto: Lamp - entities: - - uid: 3199 - components: - - pos: -27.497456,17.876417 - parent: 1 - type: Transform - - uid: 3748 - components: - - pos: -45.525093,-7.0754695 - parent: 1 - type: Transform - - uid: 3750 - components: - - pos: -46.478218,0.9660685 - parent: 1 - type: Transform - - uid: 4559 - components: - - rot: 3.141592653589793 rad - pos: 18.546034,40.734077 - parent: 1 - type: Transform - - uid: 4560 - components: - - rot: 3.141592653589793 rad - pos: 23.577284,40.655952 - parent: 1 - type: Transform - - uid: 4569 - components: - - rot: 3.141592653589793 rad - pos: 17.514784,42.687202 - parent: 1 - type: Transform - - uid: 4708 - components: - - pos: -32.32265,-5.1474953 - parent: 1 - type: Transform - - uid: 7556 - components: - - pos: -22.548872,46.863678 - parent: 1 - type: Transform - - uid: 7940 - components: - - pos: -58.53795,64.84835 - parent: 1 - type: Transform - - toggleActionEntity: 7458 - type: HandheldLight - - containers: - cell_slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - actions: !type:Container - showEnts: False - occludes: True - ents: - - 7458 - type: ContainerContainer - - canCollide: True - type: Physics - - type: ActionsContainer - - uid: 10944 - components: - - pos: -60.49684,41.882523 - parent: 1 - type: Transform - - uid: 10945 - components: - - pos: -63.449966,40.007523 - parent: 1 - type: Transform - - uid: 12032 - components: - - pos: -31.488277,-3.1049178 - parent: 1 - type: Transform - - uid: 12783 - components: - - pos: 14.50122,31.915655 - parent: 1 - type: Transform - - uid: 14290 - components: - - pos: -71.492615,49.83911 - parent: 1 - type: Transform - - uid: 15788 - components: - - pos: -38.52308,-9.139799 - parent: 1 - type: Transform - - uid: 15797 - components: - - pos: -70.46455,15.962357 - parent: 1 - type: Transform -- proto: LampBanana - entities: - - uid: 4231 - components: - - pos: -40.489174,28.7831 - parent: 1 - type: Transform -- proto: LampGold - entities: - - uid: 2751 - components: - - pos: 21.502605,-1.9941196 - parent: 1 - type: Transform - - uid: 3197 - components: - - pos: -31.497456,9.898998 - parent: 1 - type: Transform - - uid: 3198 - components: - - pos: -24.497456,9.867748 - parent: 1 - type: Transform - - uid: 5510 - components: - - pos: -53.465157,-0.32265806 - parent: 1 - type: Transform - - uid: 5511 - components: - - pos: -54.496407,-5.055279 - parent: 1 - type: Transform - - uid: 7399 - components: - - pos: 9.4932995,46.83763 - parent: 1 - type: Transform -- proto: LandMineExplosive - entities: - - uid: 15456 - components: - - pos: -42.49931,68.53585 - parent: 1 - type: Transform - - uid: 15457 - components: - - pos: -37.49931,61.461067 - parent: 1 - type: Transform - - uid: 15488 - components: - - pos: -38.49931,64.50794 - parent: 1 - type: Transform - - uid: 15489 - components: - - pos: -37.483685,67.49232 - parent: 1 - type: Transform - - uid: 15490 - components: - - pos: -39.483685,68.52357 - parent: 1 - type: Transform -- proto: Lantern - entities: - - uid: 621 - components: - - pos: 19.562792,-8.525764 - parent: 1 - type: Transform - - containers: - cell_slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: 15037 - type: ContainerContainer -- proto: LargeBeaker - entities: - - uid: 1988 - components: - - pos: -0.2943699,22.171614 - parent: 1 - type: Transform -- proto: LauncherCreamPie - entities: - - uid: 4241 - components: - - pos: -42.484016,28.536114 - parent: 1 - type: Transform -- proto: LockerAtmosphericsFilledHardsuit - entities: - - uid: 137 - components: - - pos: -79.5,29.5 - parent: 1 - type: Transform - - uid: 143 - components: - - pos: -80.5,29.5 - parent: 1 - type: Transform - - uid: 580 - components: - - pos: -81.5,29.5 - parent: 1 - type: Transform -- proto: LockerBoozeFilled - entities: - - uid: 9732 - components: - - pos: -28.5,35.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 9733 - components: - - pos: -28.5,38.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerBotanistFilled - entities: - - uid: 5788 - components: - - pos: -39.5,52.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5794 - components: - - pos: -40.5,52.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerCaptainFilledHardsuit - entities: - - uid: 187 - components: - - pos: -9.5,61.5 - parent: 1 - type: Transform -- proto: LockerChemistryFilled - entities: - - uid: 1946 - components: - - pos: -2.5,19.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1947 - components: - - pos: -1.5,19.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerChiefEngineerFilled - entities: - - uid: 10725 - components: - - pos: -68.5,15.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerChiefMedicalOfficerFilledHardsuit - entities: - - uid: 62 - components: - - pos: 14.5,32.5 - parent: 1 - type: Transform -- proto: LockerDetectiveFilled - entities: - - uid: 14281 - components: - - pos: -69.5,49.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerEngineerFilledHardsuit - entities: - - uid: 188 - components: - - pos: -67.5,31.5 - parent: 1 - type: Transform - - uid: 189 - components: - - pos: -67.5,30.5 - parent: 1 - type: Transform - - uid: 218 - components: - - pos: -67.5,29.5 - parent: 1 - type: Transform - - uid: 247 - components: - - pos: -67.5,28.5 - parent: 1 - type: Transform - - uid: 298 - components: - - pos: -67.5,27.5 - parent: 1 - type: Transform -- proto: LockerEvidence - entities: - - uid: 7425 - components: - - pos: -50.5,84.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 7433 - components: - - pos: -50.5,83.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 8013 - components: - - pos: -55.5,53.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 8651 - components: - - pos: -52.5,53.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerFreezer - entities: - - uid: 6929 - components: - - pos: -29.5,44.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerHeadOfPersonnelFilled - entities: - - uid: 7536 - components: - - pos: -22.5,48.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerHeadOfSecurityFilled - entities: - - uid: 7934 - components: - - pos: -61.5,63.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerMedicalFilled - entities: - - uid: 2024 - components: - - pos: 6.5,26.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2028 - components: - - pos: 7.5,26.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2029 - components: - - pos: 8.5,26.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 2030 - components: - - pos: 9.5,26.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerQuarterMasterFilled - entities: - - uid: 3668 - components: - - pos: -43.5,-6.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerResearchDirectorFilled - entities: - - uid: 245 - components: - - pos: -1.5,0.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 1.7459902 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 3698 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - type: ContainerContainer -- proto: LockerSalvageSpecialistFilledHardsuit - entities: - - uid: 299 - components: - - pos: -43.5,-13.5 - parent: 1 - type: Transform - - uid: 300 - components: - - pos: -42.5,-13.5 - parent: 1 - type: Transform - - uid: 301 - components: - - pos: -41.5,-13.5 - parent: 1 - type: Transform -- proto: LockerScienceFilled - entities: - - uid: 231 - components: - - pos: -6.5,-4.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 232 - components: - - pos: -6.5,-3.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 243 - components: - - pos: -8.5,-4.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 244 - components: - - pos: -8.5,-3.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerSecurityFilled - entities: - - uid: 1923 - components: - - pos: -63.5,55.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1924 - components: - - pos: -65.5,55.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1925 - components: - - pos: -62.5,55.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 7904 - components: - - pos: -64.5,55.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 7975 - components: - - pos: -57.5,58.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerWardenFilledHardsuit - entities: - - uid: 4163 - components: - - pos: -46.5,57.5 - parent: 1 - type: Transform -- proto: MachineAnomalyGenerator - entities: - - uid: 1859 - components: - - pos: -14.5,-11.5 - parent: 1 - type: Transform -- proto: MachineAnomalyVessel - entities: - - uid: 587 - components: - - pos: -11.5,-10.5 - parent: 1 - type: Transform -- proto: MachineAPE - entities: - - uid: 312 - components: - - pos: -11.5,-13.5 - parent: 1 - type: Transform - - uid: 321 - components: - - pos: -11.5,-14.5 - parent: 1 - type: Transform -- proto: MachineArtifactAnalyzer - entities: - - uid: 347 - components: - - pos: 1.5,-14.5 - parent: 1 - type: Transform - - links: - - 341 - type: DeviceLinkSink -- proto: MachineFrame - entities: - - uid: 253 - components: - - pos: -5.5,0.5 - parent: 1 - type: Transform - - uid: 1356 - components: - - pos: 0.5,37.5 - parent: 1 - type: Transform - - uid: 1401 - components: - - pos: 0.5,39.5 - parent: 1 - type: Transform - - uid: 1940 - components: - - pos: -4.5,22.5 - parent: 1 - type: Transform - - uid: 1952 - components: - - pos: -4.5,23.5 - parent: 1 - type: Transform - - uid: 2041 - components: - - pos: 4.5,36.5 - parent: 1 - type: Transform - - uid: 9968 - components: - - pos: -84.5,26.5 - parent: 1 - type: Transform - - uid: 9969 - components: - - pos: -84.5,25.5 - parent: 1 - type: Transform - - uid: 9970 - components: - - pos: -84.5,24.5 - parent: 1 - type: Transform - - uid: 9971 - components: - - pos: -83.5,25.5 - parent: 1 - type: Transform - - uid: 9972 - components: - - pos: -82.5,25.5 - parent: 1 - type: Transform - - uid: 9973 - components: - - pos: -81.5,25.5 - parent: 1 - type: Transform - - uid: 13661 - components: - - pos: -12.5,-14.5 - parent: 1 - type: Transform -- proto: MachineParticleAcceleratorEmitterForeCircuitboard - entities: - - uid: 9961 - components: - - pos: -81.52008,22.452606 - parent: 1 - type: Transform -- proto: MachineParticleAcceleratorEmitterPortCircuitboard - entities: - - uid: 9964 - components: - - pos: -81.02008,22.515106 - parent: 1 - type: Transform -- proto: MachineParticleAcceleratorEmitterStarboardCircuitboard - entities: - - uid: 9962 - components: - - pos: -80.98883,22.780731 - parent: 1 - type: Transform -- proto: MachineParticleAcceleratorEndCapCircuitboard - entities: - - uid: 9965 - components: - - pos: -80.45758,22.765106 - parent: 1 - type: Transform -- proto: MachineParticleAcceleratorFuelChamberCircuitboard - entities: - - uid: 9966 - components: - - pos: -80.473206,22.483856 - parent: 1 - type: Transform -- proto: MachineParticleAcceleratorPowerBoxCircuitboard - entities: - - uid: 9967 - components: - - pos: -81.004456,22.608856 - parent: 1 - type: Transform -- proto: MagazinePistol - entities: - - uid: 8359 - components: - - pos: -42.709877,61.49391 - parent: 1 - type: Transform - - uid: 8364 - components: - - pos: -42.491127,61.49391 - parent: 1 - type: Transform - - uid: 8365 - components: - - pos: -42.631752,61.49391 - parent: 1 - type: Transform - - uid: 8372 - components: - - pos: -42.381752,61.49391 - parent: 1 - type: Transform - - uid: 8375 - components: - - pos: -42.288002,61.49391 - parent: 1 - type: Transform -- proto: MagazinePistolSubMachineGunTopMounted - entities: - - uid: 7938 - components: - - pos: -60.513123,64.48181 - parent: 1 - type: Transform - - uid: 7939 - components: - - pos: -60.513123,64.48181 - parent: 1 - type: Transform -- proto: MagazineRifle - entities: - - uid: 8360 - components: - - pos: -41.301014,62.60871 - parent: 1 - type: Transform - - uid: 8361 - components: - - pos: -41.363514,62.60871 - parent: 1 - type: Transform - - uid: 8362 - components: - - pos: -41.44164,62.60871 - parent: 1 - type: Transform - - uid: 8363 - components: - - pos: -41.56664,62.60871 - parent: 1 - type: Transform -- proto: MagazineRifleRubber - entities: - - uid: 8366 - components: - - pos: -41.301014,62.13996 - parent: 1 - type: Transform - - uid: 8367 - components: - - pos: -41.363514,62.13996 - parent: 1 - type: Transform - - uid: 8368 - components: - - pos: -41.47289,62.13996 - parent: 1 - type: Transform - - uid: 8369 - components: - - pos: -41.582264,62.13996 - parent: 1 - type: Transform -- proto: MailingUnitElectronics - entities: - - uid: 5543 - components: - - pos: -54.399563,27.347925 - parent: 1 - type: Transform - - uid: 5544 - components: - - pos: -54.524563,27.55105 - parent: 1 - type: Transform -- proto: MaintenanceFluffSpawner - entities: - - uid: 257 - components: - - pos: -13.5,-7.5 - parent: 1 - type: Transform - - uid: 2956 - components: - - pos: 28.5,-4.5 - parent: 1 - type: Transform - - uid: 2957 - components: - - pos: 29.5,-4.5 - parent: 1 - type: Transform - - uid: 2963 - components: - - pos: 7.5,-4.5 - parent: 1 - type: Transform - - uid: 5435 - components: - - pos: -18.5,0.5 - parent: 1 - type: Transform - - uid: 5447 - components: - - pos: -17.5,-7.5 - parent: 1 - type: Transform - - uid: 5594 - components: - - pos: -31.5,12.5 - parent: 1 - type: Transform - - uid: 5612 - components: - - pos: -45.5,25.5 - parent: 1 - type: Transform - - uid: 5622 - components: - - pos: -46.5,15.5 - parent: 1 - type: Transform - - uid: 5623 - components: - - pos: -47.5,15.5 - parent: 1 - type: Transform - - uid: 5624 - components: - - pos: -41.5,13.5 - parent: 1 - type: Transform - - uid: 5745 - components: - - pos: -34.5,13.5 - parent: 1 - type: Transform - - uid: 5747 - components: - - pos: -20.5,14.5 - parent: 1 - type: Transform - - uid: 5791 - components: - - pos: -7.5,22.5 - parent: 1 - type: Transform - - uid: 5792 - components: - - pos: -3.5,14.5 - parent: 1 - type: Transform - - uid: 5797 - components: - - pos: -14.5,10.5 - parent: 1 - type: Transform - - uid: 5798 - components: - - pos: -14.5,13.5 - parent: 1 - type: Transform - - uid: 5799 - components: - - pos: -10.5,14.5 - parent: 1 - type: Transform - - uid: 10375 - components: - - pos: -28.5,49.5 - parent: 1 - type: Transform - - uid: 10401 - components: - - pos: -3.5,42.5 - parent: 1 - type: Transform - - uid: 10402 - components: - - pos: -3.5,43.5 - parent: 1 - type: Transform - - uid: 10406 - components: - - pos: 22.5,28.5 - parent: 1 - type: Transform - - uid: 10463 - components: - - pos: -27.5,40.5 - parent: 1 - type: Transform - - uid: 12910 - components: - - pos: 6.5,8.5 - parent: 1 - type: Transform - - uid: 12911 - components: - - pos: 12.5,8.5 - parent: 1 - type: Transform - - uid: 13840 - components: - - pos: -42.5,54.5 - parent: 1 - type: Transform - - uid: 14321 - components: - - pos: -66.5,41.5 - parent: 1 - type: Transform - - uid: 14322 - components: - - pos: -66.5,43.5 - parent: 1 - type: Transform - - uid: 14326 - components: - - pos: -73.5,51.5 - parent: 1 - type: Transform - - uid: 14327 - components: - - pos: -71.5,51.5 - parent: 1 - type: Transform - - uid: 14328 - components: - - pos: -75.5,37.5 - parent: 1 - type: Transform - - uid: 14409 - components: - - pos: -69.5,26.5 - parent: 1 - type: Transform - - uid: 14593 - components: - - pos: -67.5,10.5 - parent: 1 - type: Transform - - uid: 14599 - components: - - pos: -61.5,24.5 - parent: 1 - type: Transform - - uid: 14600 - components: - - pos: -61.5,26.5 - parent: 1 - type: Transform -- proto: MaintenancePlantSpawner - entities: - - uid: 9010 - components: - - pos: -21.5,0.5 - parent: 1 - type: Transform - - uid: 9013 - components: - - pos: -66.5,50.5 - parent: 1 - type: Transform - - uid: 9014 - components: - - pos: 8.5,39.5 - parent: 1 - type: Transform - - uid: 9016 - components: - - pos: 29.5,-5.5 - parent: 1 - type: Transform -- proto: MaintenanceToolSpawner - entities: - - uid: 2072 - components: - - pos: -3.5,15.5 - parent: 1 - type: Transform - - uid: 2955 - components: - - pos: 27.5,-4.5 - parent: 1 - type: Transform - - uid: 2962 - components: - - pos: 6.5,-4.5 - parent: 1 - type: Transform - - uid: 3318 - components: - - rot: 3.141592653589793 rad - pos: -18.5,16.5 - parent: 1 - type: Transform - - uid: 4199 - components: - - pos: -8.5,12.5 - parent: 1 - type: Transform - - uid: 5431 - components: - - pos: -29.5,-2.5 - parent: 1 - type: Transform - - uid: 5434 - components: - - pos: -18.5,-7.5 - parent: 1 - type: Transform - - uid: 5436 - components: - - pos: -19.5,0.5 - parent: 1 - type: Transform - - uid: 5441 - components: - - pos: -23.5,-3.5 - parent: 1 - type: Transform - - uid: 5503 - components: - - pos: -51.5,2.5 - parent: 1 - type: Transform - - uid: 5506 - components: - - pos: -52.5,-5.5 - parent: 1 - type: Transform - - uid: 5522 - components: - - pos: -47.5,-8.5 - parent: 1 - type: Transform - - uid: 5560 - components: - - pos: -40.5,18.5 - parent: 1 - type: Transform - - uid: 5561 - components: - - pos: -40.5,17.5 - parent: 1 - type: Transform - - uid: 5619 - components: - - pos: -40.5,13.5 - parent: 1 - type: Transform - - uid: 5620 - components: - - pos: -43.5,13.5 - parent: 1 - type: Transform - - uid: 5626 - components: - - pos: -45.5,23.5 - parent: 1 - type: Transform - - uid: 5737 - components: - - pos: -20.5,29.5 - parent: 1 - type: Transform - - uid: 5748 - components: - - pos: -20.5,13.5 - parent: 1 - type: Transform - - uid: 5795 - components: - - pos: -10.5,12.5 - parent: 1 - type: Transform - - uid: 5796 - components: - - pos: -14.5,8.5 - parent: 1 - type: Transform - - uid: 6226 - components: - - pos: 18.5,45.5 - parent: 1 - type: Transform - - uid: 7520 - components: - - pos: -29.5,55.5 - parent: 1 - type: Transform - - uid: 10374 - components: - - pos: -29.5,49.5 - parent: 1 - type: Transform - - uid: 10390 - components: - - pos: -1.5,45.5 - parent: 1 - type: Transform - - uid: 10392 - components: - - pos: 6.5,48.5 - parent: 1 - type: Transform - - uid: 10409 - components: - - pos: 22.5,27.5 - parent: 1 - type: Transform - - uid: 10801 - components: - - pos: -8.5,46.5 - parent: 1 - type: Transform - - uid: 12907 - components: - - pos: 4.5,8.5 - parent: 1 - type: Transform - - uid: 12908 - components: - - pos: 13.5,8.5 - parent: 1 - type: Transform - - uid: 13839 - components: - - pos: -43.5,54.5 - parent: 1 - type: Transform - - uid: 14320 - components: - - pos: -66.5,42.5 - parent: 1 - type: Transform - - uid: 14323 - components: - - pos: -63.5,48.5 - parent: 1 - type: Transform - - uid: 14324 - components: - - pos: -72.5,51.5 - parent: 1 - type: Transform - - uid: 14329 - components: - - pos: -61.5,35.5 - parent: 1 - type: Transform - - uid: 14594 - components: - - pos: -67.5,11.5 - parent: 1 - type: Transform - - uid: 14595 - components: - - pos: -67.5,13.5 - parent: 1 - type: Transform - - uid: 14597 - components: - - pos: -60.5,20.5 - parent: 1 - type: Transform - - uid: 14598 - components: - - pos: -61.5,25.5 - parent: 1 - type: Transform - - uid: 15928 - components: - - pos: 18.5,40.5 - parent: 1 - type: Transform - - uid: 15929 - components: - - pos: 23.5,40.5 - parent: 1 - type: Transform - - uid: 15930 - components: - - pos: 23.5,38.5 - parent: 1 - type: Transform -- proto: MaintenanceWeaponSpawner - entities: - - uid: 919 - components: - - pos: 29.5,-0.5 - parent: 1 - type: Transform - - uid: 2060 - components: - - pos: -0.5,42.5 - parent: 1 - type: Transform - - uid: 2789 - components: - - pos: -25.5,55.5 - parent: 1 - type: Transform - - uid: 2882 - components: - - pos: -8.5,11.5 - parent: 1 - type: Transform - - uid: 5430 - components: - - pos: -27.5,-4.5 - parent: 1 - type: Transform - - uid: 5558 - components: - - pos: -47.5,17.5 - parent: 1 - type: Transform - - uid: 5746 - components: - - pos: -30.5,12.5 - parent: 1 - type: Transform - - uid: 5752 - components: - - pos: -22.5,20.5 - parent: 1 - type: Transform - - uid: 5793 - components: - - pos: -7.5,23.5 - parent: 1 - type: Transform - - uid: 10373 - components: - - pos: -27.5,49.5 - parent: 1 - type: Transform - - uid: 10400 - components: - - pos: -3.5,41.5 - parent: 1 - type: Transform - - uid: 10407 - components: - - pos: 22.5,29.5 - parent: 1 - type: Transform - - uid: 12909 - components: - - pos: 5.5,8.5 - parent: 1 - type: Transform - - uid: 14319 - components: - - pos: -74.5,46.5 - parent: 1 - type: Transform - - uid: 14325 - components: - - pos: -69.5,51.5 - parent: 1 - type: Transform - - uid: 14596 - components: - - pos: -60.5,19.5 - parent: 1 - type: Transform - - uid: 15073 - components: - - pos: -20.5,17.5 - parent: 1 - type: Transform - - uid: 15561 - components: - - pos: 6.5,-16.5 - parent: 1 - type: Transform - - uid: 15562 - components: - - pos: 9.5,-16.5 - parent: 1 - type: Transform - - uid: 15842 - components: - - pos: -25.5,53.5 - parent: 1 - type: Transform - - uid: 15843 - components: - - pos: -29.5,54.5 - parent: 1 - type: Transform - - uid: 15911 - components: - - pos: -47.5,17.5 - parent: 1 - type: Transform - - uid: 15926 - components: - - pos: 17.5,42.5 - parent: 1 - type: Transform - - uid: 15927 - components: - - pos: 23.5,42.5 - parent: 1 - type: Transform -- proto: MaterialCloth - entities: - - uid: 7577 - components: - - pos: -19.514711,41.515976 - parent: 1 - type: Transform -- proto: MaterialHideBear - entities: - - uid: 14939 - components: - - pos: 4.5405226,-14.581865 - parent: 1 - type: Transform -- proto: MaterialReclaimer - entities: - - uid: 15799 - components: - - pos: -37.5,-12.5 - parent: 1 - type: Transform -- proto: MaterialWoodPlank - entities: - - uid: 15937 - components: - - pos: 19.58975,42.76493 - parent: 1 - type: Transform -- proto: MedkitAdvancedFilled - entities: - - uid: 2319 - components: - - pos: 10.517079,26.601435 - parent: 1 - type: Transform -- proto: MedkitBruteFilled - entities: - - uid: 14852 - components: - - pos: 6.488601,22.996218 - parent: 1 - type: Transform -- proto: MedkitBurnFilled - entities: - - uid: 2317 - components: - - pos: 8.532704,22.570185 - parent: 1 - type: Transform -- proto: MedkitCombatFilled - entities: - - uid: 7518 - components: - - pos: -25.498947,54.62378 - parent: 1 - type: Transform -- proto: MedkitFilled - entities: - - uid: 1989 - components: - - pos: -1.4897182,32.72799 - parent: 1 - type: Transform - - uid: 2313 - components: - - pos: 6.532705,22.632685 - parent: 1 - type: Transform - - uid: 10915 - components: - - pos: -20.50132,63.5821 - parent: 1 - type: Transform -- proto: MedkitOxygenFilled - entities: - - uid: 2315 - components: - - pos: 7.876455,22.58581 - parent: 1 - type: Transform - - uid: 10921 - components: - - pos: -11.50255,62.54268 - parent: 1 - type: Transform -- proto: MedkitRadiationFilled - entities: - - uid: 2314 - components: - - pos: 7.20458,22.58581 - parent: 1 - type: Transform -- proto: MedkitToxinFilled - entities: - - uid: 2316 - components: - - pos: 6.48583,23.46081 - parent: 1 - type: Transform -- proto: MetalDoor - entities: - - uid: 1663 - components: - - pos: 17.5,-10.5 - parent: 1 - type: Transform -- proto: MicroManipulatorStockPart - entities: - - uid: 260 - components: - - pos: -10.438767,-5.4789715 - parent: 1 - type: Transform -- proto: Mirror - entities: - - uid: 4076 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,0.5 - parent: 1 - type: Transform - - uid: 4077 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,1.5 - parent: 1 - type: Transform - - uid: 4078 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,-0.5 - parent: 1 - type: Transform - - uid: 7089 - components: - - pos: -51.5,42.5 - parent: 1 - type: Transform -- proto: MonkeyCubeBox - entities: - - uid: 371 - components: - - pos: 4.52832,-11.326899 - parent: 1 - type: Transform -- proto: MopBucket - entities: - - uid: 5302 - components: - - pos: -54.5,23.5 - parent: 1 - type: Transform - - uid: 7098 - components: - - pos: -51.5,38.5 - parent: 1 - type: Transform -- proto: MopItem - entities: - - uid: 5303 - components: - - pos: -54.5,23.5 - parent: 1 - type: Transform - - uid: 7099 - components: - - pos: -51.5,38.5 - parent: 1 - type: Transform -- proto: Morgue - entities: - - uid: 1063 - components: - - rot: 3.141592653589793 rad - pos: 1.5,14.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1143 - components: - - pos: -0.5,17.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1156 - components: - - rot: 3.141592653589793 rad - pos: 0.5,14.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1157 - components: - - rot: 3.141592653589793 rad - pos: -0.5,14.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1246 - components: - - pos: 0.5,17.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1413 - components: - - pos: 2.5,17.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1614 - components: - - pos: 1.5,17.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1616 - components: - - rot: 3.141592653589793 rad - pos: -1.5,14.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1622 - components: - - rot: 3.141592653589793 rad - pos: 2.5,14.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1829 - components: - - pos: 19.5,2.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: MouseTimedSpawner - entities: - - uid: 14186 - components: - - pos: 9.5,9.5 - parent: 1 - type: Transform - - uid: 14187 - components: - - pos: 7.5,46.5 - parent: 1 - type: Transform - - uid: 14188 - components: - - pos: -44.5,14.5 - parent: 1 - type: Transform - - uid: 14937 - components: - - pos: -74.5,45.5 - parent: 1 - type: Transform - - uid: 15048 - components: - - pos: -66.5,8.5 - parent: 1 - type: Transform -- proto: Multitool - entities: - - uid: 374 - components: - - pos: 2.4814448,-11.369194 - parent: 1 - type: Transform - - uid: 5647 - components: - - pos: -24.502523,29.558752 - parent: 1 - type: Transform -- proto: NitrogenCanister - entities: - - uid: 333 - components: - - pos: -76.5,29.5 - parent: 1 - type: Transform - - uid: 5470 - components: - - pos: -48.5,17.5 - parent: 1 - type: Transform - - uid: 5591 - components: - - pos: -3.5,36.5 - parent: 1 - type: Transform - - uid: 5675 - components: - - pos: -25.5,20.5 - parent: 1 - type: Transform - - uid: 7202 - components: - - pos: -77.5,29.5 - parent: 1 - type: Transform - - uid: 8930 - components: - - pos: 5.5,-4.5 - parent: 1 - type: Transform - - uid: 9468 - components: - - pos: 22.5,24.5 - parent: 1 - type: Transform - - uid: 10094 - components: - - pos: 14.5,42.5 - parent: 1 - type: Transform - - uid: 10099 - components: - - pos: -41.5,54.5 - parent: 1 - type: Transform - - uid: 12894 - components: - - pos: 14.5,14.5 - parent: 1 - type: Transform - - uid: 14334 - components: - - pos: -75.5,41.5 - parent: 1 - type: Transform - - uid: 14578 - components: - - pos: -60.5,17.5 - parent: 1 - type: Transform -- proto: NitrogenTank - entities: - - uid: 14199 - components: - - pos: -77.535675,42.554688 - parent: 1 - type: Transform -- proto: NuclearBomb - entities: - - uid: 10854 - components: - - pos: -23.5,56.5 - parent: 1 - type: Transform -- proto: NuclearBombKeg - entities: - - uid: 6316 - components: - - pos: 10.5,43.5 - parent: 1 - type: Transform -- proto: NukeDiskFake - entities: - - uid: 6318 - components: - - desc: A crude replication of a real nuclear authentication disk. You could tell this thing was fake from a mile away. - name: flimsy nuclear authentication disk - type: MetaData - - pos: 12.55704,43.506477 - parent: 1 - type: Transform -- proto: Ointment - entities: - - uid: 1992 - components: - - pos: 0.44623998,32.749245 - parent: 1 - type: Transform - - uid: 1993 - components: - - pos: -0.053760022,32.561745 - parent: 1 - type: Transform - - uid: 1994 - components: - - pos: -0.67876005,32.63987 - parent: 1 - type: Transform - - uid: 2379 - components: - - pos: 9.117954,33.567314 - parent: 1 - type: Transform - - uid: 2380 - components: - - pos: 9.508579,33.64544 - parent: 1 - type: Transform - - uid: 2381 - components: - - pos: 9.930454,33.52044 - parent: 1 - type: Transform -- proto: OperatingTable - entities: - - uid: 12771 - components: - - pos: 19.5,30.5 - parent: 1 - type: Transform -- proto: OreProcessor - entities: - - uid: 3530 - components: - - pos: -34.5,-1.5 - parent: 1 - type: Transform -- proto: OreProcessorMachineCircuitboard - entities: - - uid: 5553 - components: - - pos: -49.433533,23.561655 - parent: 1 - type: Transform -- proto: OrganHumanBrain - entities: - - uid: 9284 - components: - - pos: 20.599104,32.811195 - parent: 1 - type: Transform -- proto: OrganHumanEyes - entities: - - uid: 9285 - components: - - pos: 19.520979,30.326818 - parent: 1 - type: Transform -- proto: OrganHumanHeart - entities: - - uid: 5800 - components: - - pos: -9.314642,21.506338 - parent: 1 - type: Transform - - uid: 9241 - components: - - pos: 18.986782,28.61476 - parent: 1 - type: Transform -- proto: OrganHumanKidneys - entities: - - uid: 9286 - components: - - pos: 20.630354,32.467445 - parent: 1 - type: Transform -- proto: OrganHumanLiver - entities: - - uid: 9287 - components: - - pos: 20.286604,32.561195 - parent: 1 - type: Transform -- proto: OrganHumanTongue - entities: - - uid: 9283 - components: - - pos: 18.880354,28.451818 - parent: 1 - type: Transform -- proto: OxygenCanister - entities: - - uid: 5656 - components: - - pos: -4.5,36.5 - parent: 1 - type: Transform - - uid: 5670 - components: - - pos: -26.5,20.5 - parent: 1 - type: Transform - - uid: 6069 - components: - - pos: -76.5,30.5 - parent: 1 - type: Transform - - uid: 6071 - components: - - pos: -11.5,46.5 - parent: 1 - type: Transform - - uid: 6968 - components: - - pos: -32.5,57.5 - parent: 1 - type: Transform - - uid: 7193 - components: - - pos: -77.5,30.5 - parent: 1 - type: Transform - - uid: 9266 - components: - - pos: 18.5,-4.5 - parent: 1 - type: Transform - - uid: 9378 - components: - - pos: 22.5,23.5 - parent: 1 - type: Transform - - uid: 10092 - components: - - pos: 14.5,41.5 - parent: 1 - type: Transform - - uid: 10093 - components: - - pos: -48.5,18.5 - parent: 1 - type: Transform - - uid: 10129 - components: - - pos: -40.5,54.5 - parent: 1 - type: Transform - - uid: 12893 - components: - - pos: 14.5,13.5 - parent: 1 - type: Transform - - uid: 14170 - components: - - pos: -77.5,49.5 - parent: 1 - type: Transform - - uid: 14333 - components: - - pos: -75.5,40.5 - parent: 1 - type: Transform - - uid: 14577 - components: - - pos: -60.5,16.5 - parent: 1 - type: Transform - - uid: 15800 - components: - - pos: -49.5,-12.5 - parent: 1 - type: Transform -- proto: PaintingAmogusTriptych - entities: - - uid: 6326 - components: - - pos: 3.5,53.5 - parent: 1 - type: Transform -- proto: PaintingEmpty - entities: - - uid: 6327 - components: - - pos: 2.5,53.5 - parent: 1 - type: Transform -- proto: PaintingSkeletonBoof - entities: - - uid: 6328 - components: - - pos: 4.5,53.5 - parent: 1 - type: Transform -- proto: Paper - entities: - - uid: 304 - components: - - pos: -0.48525378,-4.0916176 - parent: 1 - type: Transform - - uid: 305 - components: - - pos: -0.39150378,-4.0916176 - parent: 1 - type: Transform - - uid: 306 - components: - - pos: -0.32900378,-4.0916176 - parent: 1 - type: Transform - - uid: 307 - components: - - pos: -0.5790038,-4.0916176 - parent: 1 - type: Transform - - uid: 308 - components: - - pos: -0.6571288,-4.0916176 - parent: 1 - type: Transform - - uid: 2402 - components: - - name: hastily scribbled note - type: MetaData - - pos: 10.220547,33.42669 - parent: 1 - type: Transform - - content: > - <100K - - 101.3kPa - - filter co2/n20 - type: Paper - - uid: 4221 - components: - - pos: -42.30462,24.611063 - parent: 1 - type: Transform - - uid: 4222 - components: - - pos: -42.46087,24.611063 - parent: 1 - type: Transform - - uid: 4223 - components: - - pos: -42.58587,24.564188 - parent: 1 - type: Transform - - uid: 4224 - components: - - pos: -42.632744,24.548563 - parent: 1 - type: Transform - - uid: 4225 - components: - - pos: -42.64837,24.517313 - parent: 1 - type: Transform - - uid: 4226 - components: - - pos: -42.476494,24.564188 - parent: 1 - type: Transform - - uid: 4227 - components: - - pos: -42.382744,24.579813 - parent: 1 - type: Transform - - uid: 4228 - components: - - pos: -42.49212,24.579813 - parent: 1 - type: Transform - - uid: 4229 - components: - - pos: -42.67962,24.501688 - parent: 1 - type: Transform - - uid: 7221 - components: - - pos: -3.6578722,0.5394765 - parent: 1 - type: Transform - - uid: 7222 - components: - - pos: -3.5953722,0.5394765 - parent: 1 - type: Transform - - uid: 7223 - components: - - pos: -3.5328722,0.5394765 - parent: 1 - type: Transform - - uid: 7292 - components: - - pos: -60.664387,89.61223 - parent: 1 - type: Transform - - uid: 7297 - components: - - pos: -60.27376,89.67473 - parent: 1 - type: Transform - - uid: 7309 - components: - - pos: -60.601887,89.58098 - parent: 1 - type: Transform - - uid: 7710 - components: - - pos: -60.74251,89.67473 - parent: 1 - type: Transform - - uid: 7726 - components: - - pos: -60.414387,89.61223 - parent: 1 - type: Transform - - uid: 7919 - components: - - pos: -3.4703722,0.5238515 - parent: 1 - type: Transform -- proto: PaperCaptainsThoughts - entities: - - uid: 10908 - components: - - pos: -7.0289607,61.72577 - parent: 1 - type: Transform - - uid: 10909 - components: - - pos: -7.2008357,61.74714 - parent: 1 - type: Transform - - uid: 10910 - components: - - pos: -7.2320857,61.62214 - parent: 1 - type: Transform - - uid: 10911 - components: - - pos: -7.2164607,61.59089 - parent: 1 - type: Transform - - uid: 10912 - components: - - pos: -7.0602107,61.575264 - parent: 1 - type: Transform - - uid: 10913 - components: - - pos: -7.0602107,61.575264 - parent: 1 - type: Transform -- proto: PaperDoor - entities: - - uid: 4710 - components: - - rot: 3.141592653589793 rad - pos: -50.5,11.5 - parent: 1 - type: Transform - - uid: 5459 - components: - - rot: 3.141592653589793 rad - pos: -53.5,10.5 - parent: 1 - type: Transform - - uid: 6255 - components: - - rot: 3.141592653589793 rad - pos: -53.5,8.5 - parent: 1 - type: Transform - - uid: 6668 - components: - - rot: 3.141592653589793 rad - pos: -50.5,7.5 - parent: 1 - type: Transform - - uid: 10445 - components: - - rot: 3.141592653589793 rad - pos: -47.5,11.5 - parent: 1 - type: Transform -- proto: PaperOffice - entities: - - uid: 2321 - components: - - pos: 10.666427,26.233912 - parent: 1 - type: Transform - - uid: 2322 - components: - - pos: 10.338302,26.233912 - parent: 1 - type: Transform - - uid: 2323 - components: - - pos: 10.275802,26.218287 - parent: 1 - type: Transform - - uid: 2324 - components: - - pos: 10.463302,26.218287 - parent: 1 - type: Transform - - uid: 2325 - components: - - pos: 10.494552,26.218287 - parent: 1 - type: Transform - - uid: 2326 - components: - - pos: 8.353927,31.631037 - parent: 1 - type: Transform - - uid: 2327 - components: - - pos: 8.447677,31.584162 - parent: 1 - type: Transform - - uid: 2328 - components: - - pos: 8.494552,31.584162 - parent: 1 - type: Transform - - uid: 2367 - components: - - rot: -1.5707963267948966 rad - pos: 11.600925,18.432741 - parent: 1 - type: Transform - - uid: 2368 - components: - - rot: -1.5707963267948966 rad - pos: 11.42905,18.682741 - parent: 1 - type: Transform - - uid: 2369 - components: - - rot: -1.5707963267948966 rad - pos: 11.382175,18.698366 - parent: 1 - type: Transform - - uid: 2370 - components: - - rot: -1.5707963267948966 rad - pos: 11.67905,18.729616 - parent: 1 - type: Transform - - uid: 2371 - components: - - rot: -1.5707963267948966 rad - pos: 11.507175,18.479616 - parent: 1 - type: Transform - - uid: 3204 - components: - - pos: -26.966206,17.360792 - parent: 1 - type: Transform - - uid: 3205 - components: - - pos: -27.028706,17.329542 - parent: 1 - type: Transform - - uid: 3206 - components: - - pos: -27.091206,17.220167 - parent: 1 - type: Transform - - uid: 3207 - components: - - pos: -26.76308,17.157667 - parent: 1 - type: Transform - - uid: 3208 - components: - - pos: -27.028706,17.188917 - parent: 1 - type: Transform - - uid: 3209 - components: - - pos: -27.16933,17.173292 - parent: 1 - type: Transform - - uid: 3578 - components: - - pos: -70.33955,16.634232 - parent: 1 - type: Transform - - uid: 3751 - components: - - pos: -46.321968,1.8882136 - parent: 1 - type: Transform - - uid: 3752 - components: - - pos: -46.446968,1.7632136 - parent: 1 - type: Transform - - uid: 3753 - components: - - pos: -46.478218,1.6850886 - parent: 1 - type: Transform - - uid: 3754 - components: - - pos: -46.368843,1.5913386 - parent: 1 - type: Transform - - uid: 3755 - components: - - pos: -46.337593,1.5757136 - parent: 1 - type: Transform - - uid: 4259 - components: - - pos: -45.35543,-6.2845764 - parent: 1 - type: Transform - - uid: 4260 - components: - - pos: -45.38668,-6.3470764 - parent: 1 - type: Transform - - uid: 4261 - components: - - pos: -45.38668,-6.3939514 - parent: 1 - type: Transform - - uid: 4262 - components: - - pos: -45.23043,-6.5502014 - parent: 1 - type: Transform - - uid: 4263 - components: - - pos: -45.48043,-6.6127014 - parent: 1 - type: Transform - - uid: 5512 - components: - - pos: -53.91828,-5.305279 - parent: 1 - type: Transform - - uid: 5513 - components: - - pos: -53.808907,-5.305279 - parent: 1 - type: Transform - - uid: 5514 - components: - - pos: -53.715157,-5.320904 - parent: 1 - type: Transform - - uid: 5515 - components: - - pos: -53.621407,-5.320904 - parent: 1 - type: Transform - - uid: 5810 - components: - - pos: -27.736298,13.6788025 - parent: 1 - type: Transform - - uid: 5811 - components: - - pos: -27.689423,13.6631775 - parent: 1 - type: Transform - - uid: 5812 - components: - - pos: -27.564423,13.6006775 - parent: 1 - type: Transform - - uid: 5813 - components: - - pos: -27.376923,13.5069275 - parent: 1 - type: Transform - - uid: 5814 - components: - - pos: -27.267548,13.4913025 - parent: 1 - type: Transform - - uid: 5815 - components: - - pos: -27.455048,13.5850525 - parent: 1 - type: Transform - - uid: 7546 - components: - - pos: -19.594261,47.957428 - parent: 1 - type: Transform - - uid: 7547 - components: - - pos: -19.578636,47.926178 - parent: 1 - type: Transform - - uid: 7548 - components: - - pos: -19.531761,47.894928 - parent: 1 - type: Transform - - uid: 7549 - components: - - pos: -19.500511,47.848053 - parent: 1 - type: Transform - - uid: 7550 - components: - - pos: -19.359886,48.051178 - parent: 1 - type: Transform - - uid: 7551 - components: - - pos: -19.500511,47.785553 - parent: 1 - type: Transform - - uid: 7552 - components: - - pos: -19.516136,47.676178 - parent: 1 - type: Transform - - uid: 7553 - components: - - pos: -19.469261,47.582428 - parent: 1 - type: Transform - - uid: 7578 - components: - - pos: -19.295961,40.5316 - parent: 1 - type: Transform - - uid: 7579 - components: - - pos: -19.639711,40.484726 - parent: 1 - type: Transform - - uid: 7580 - components: - - pos: -19.545961,40.4691 - parent: 1 - type: Transform - - uid: 7581 - components: - - pos: -19.436586,40.37535 - parent: 1 - type: Transform - - uid: 7582 - components: - - pos: -19.420961,40.31285 - parent: 1 - type: Transform - - uid: 7950 - components: - - pos: -47.78143,59.577873 - parent: 1 - type: Transform - - uid: 7951 - components: - - pos: -47.734554,59.577873 - parent: 1 - type: Transform - - uid: 7952 - components: - - pos: -47.71893,59.577873 - parent: 1 - type: Transform - - uid: 7953 - components: - - pos: -47.672054,59.577873 - parent: 1 - type: Transform - - uid: 7985 - components: - - pos: -60.29884,58.597794 - parent: 1 - type: Transform - - uid: 7986 - components: - - pos: -60.314465,58.597794 - parent: 1 - type: Transform - - uid: 7987 - components: - - pos: -60.33009,58.597794 - parent: 1 - type: Transform - - uid: 7990 - components: - - pos: -56.078358,58.626472 - parent: 1 - type: Transform - - uid: 7991 - components: - - pos: -56.172108,58.532722 - parent: 1 - type: Transform - - uid: 7992 - components: - - pos: -56.234608,58.595222 - parent: 1 - type: Transform - - uid: 10936 - components: - - pos: -63.356304,41.570023 - parent: 1 - type: Transform - - uid: 10937 - components: - - pos: -63.40318,41.570023 - parent: 1 - type: Transform - - uid: 10938 - components: - - pos: -63.450054,41.570023 - parent: 1 - type: Transform - - uid: 10939 - components: - - pos: -61.55943,41.601273 - parent: 1 - type: Transform - - uid: 10940 - components: - - pos: -61.512554,41.601273 - parent: 1 - type: Transform - - uid: 10941 - components: - - pos: -61.46568,41.585648 - parent: 1 - type: Transform - - uid: 10946 - components: - - pos: -62.24684,39.585648 - parent: 1 - type: Transform - - uid: 10947 - components: - - pos: -62.30934,39.585648 - parent: 1 - type: Transform - - uid: 10948 - components: - - pos: -62.356216,39.585648 - parent: 1 - type: Transform - - uid: 10949 - components: - - pos: -62.37184,39.585648 - parent: 1 - type: Transform - - uid: 12026 - components: - - pos: -31.597652,-1.4642928 - parent: 1 - type: Transform - - uid: 12027 - components: - - pos: -31.503902,-1.4955428 - parent: 1 - type: Transform - - uid: 12028 - components: - - pos: -31.378902,-1.5892928 - parent: 1 - type: Transform - - uid: 12029 - components: - - pos: -31.5229,-1.5424862 - parent: 1 - type: Transform - - uid: 12030 - components: - - pos: -31.4604,-1.5424862 - parent: 1 - type: Transform - - uid: 12778 - components: - - pos: 15.279422,31.607256 - parent: 1 - type: Transform - - uid: 12779 - components: - - pos: 15.404422,31.59163 - parent: 1 - type: Transform - - uid: 12780 - components: - - pos: 15.576297,31.59163 - parent: 1 - type: Transform - - uid: 12781 - components: - - pos: 15.670047,31.59163 - parent: 1 - type: Transform - - uid: 12796 - components: - - rot: -1.5707963267948966 rad - pos: 4.4957075,16.929403 - parent: 1 - type: Transform - - uid: 12797 - components: - - rot: -1.5707963267948966 rad - pos: 4.4957075,16.710653 - parent: 1 - type: Transform - - uid: 12798 - components: - - rot: -1.5707963267948966 rad - pos: 4.4957075,16.679403 - parent: 1 - type: Transform - - uid: 12799 - components: - - rot: -1.5707963267948966 rad - pos: 4.4800825,16.445028 - parent: 1 - type: Transform - - uid: 12800 - components: - - rot: -1.5707963267948966 rad - pos: 4.4800825,16.320028 - parent: 1 - type: Transform - - uid: 14202 - components: - - pos: -70.4958,16.634232 - parent: 1 - type: Transform - - uid: 14291 - components: - - pos: -70.305115,49.635986 - parent: 1 - type: Transform - - uid: 14292 - components: - - pos: -70.430115,49.635986 - parent: 1 - type: Transform - - uid: 14293 - components: - - pos: -70.492615,49.635986 - parent: 1 - type: Transform - - uid: 14294 - components: - - pos: -70.492615,49.635986 - parent: 1 - type: Transform - - uid: 15793 - components: - - pos: -70.58955,16.634232 - parent: 1 - type: Transform - - uid: 15794 - components: - - pos: -70.69892,16.649857 - parent: 1 - type: Transform -- proto: ParticleAcceleratorComputerCircuitboard - entities: - - uid: 9960 - components: - - pos: -81.535706,22.686981 - parent: 1 - type: Transform -- proto: PartRodMetal - entities: - - uid: 7340 - components: - - pos: -82.48612,29.602036 - parent: 1 - type: Transform - - uid: 7392 - components: - - pos: -82.48612,29.602036 - parent: 1 - type: Transform - - uid: 13607 - components: - - pos: -65.40672,25.564983 - parent: 1 - type: Transform - - uid: 13620 - components: - - pos: -65.40672,25.564983 - parent: 1 - type: Transform - - uid: 15783 - components: - - pos: -43.49778,-9.467924 - parent: 1 - type: Transform - - uid: 15892 - components: - - pos: 8.487601,-20.49545 - parent: 1 - type: Transform - - uid: 15894 - components: - - pos: 8.690726,-20.636074 - parent: 1 - type: Transform -- proto: Pen - entities: - - uid: 7386 - components: - - pos: -3.2828722,0.5082265 - parent: 1 - type: Transform - - uid: 7649 - components: - - rot: -1.5707963267948966 rad - pos: -59.14876,89.51848 - parent: 1 - type: Transform - - uid: 7709 - components: - - rot: -1.5707963267948966 rad - pos: -59.789387,89.70598 - parent: 1 - type: Transform - - uid: 15232 - components: - - pos: 18.717243,48.360695 - parent: 1 - type: Transform -- proto: PenHop - entities: - - uid: 7557 - components: - - pos: -21.314497,46.738678 - parent: 1 - type: Transform -- proto: PersonalAI - entities: - - uid: 8602 - components: - - flags: SessionSpecific - type: MetaData - - pos: -27.47025,16.628725 - parent: 1 - type: Transform - - uid: 8603 - components: - - flags: SessionSpecific - type: MetaData - - pos: -53.50901,17.553663 - parent: 1 - type: Transform - - uid: 15099 - components: - - flags: SessionSpecific - type: MetaData - - pos: -18.48621,65.98919 - parent: 1 - type: Transform -- proto: PhoneInstrument - entities: - - uid: 10544 - components: - - pos: -9.507111,55.584892 - parent: 1 - type: Transform -- proto: PianoInstrument - entities: - - uid: 4137 - components: - - rot: 3.141592653589793 rad - pos: -29.5,27.5 - parent: 1 - type: Transform -- proto: Pickaxe - entities: - - uid: 15278 - components: - - pos: -55.437958,92.56956 - parent: 1 - type: Transform - - uid: 15786 - components: - - pos: -42.607155,-9.499174 - parent: 1 - type: Transform - - uid: 15787 - components: - - pos: -42.37278,-9.467924 - parent: 1 - type: Transform -- proto: PillCanister - entities: - - uid: 1985 - components: - - pos: -3.7625957,27.657993 - parent: 1 - type: Transform - - uid: 1986 - components: - - pos: -3.3094707,27.611118 - parent: 1 - type: Transform - - uid: 1987 - components: - - pos: -3.5125957,27.501743 - parent: 1 - type: Transform -- proto: PinpointerNuclear - entities: - - uid: 10874 - components: - - pos: -21.536793,53.579475 - parent: 1 - type: Transform -- proto: PlantBag - entities: - - uid: 6950 - components: - - pos: -43.550423,47.547256 - parent: 1 - type: Transform -- proto: PlasmaDoor - entities: - - uid: 500 - components: - - pos: 8.5,-15.5 - parent: 1 - type: Transform -- proto: PlasmaReinforcedWindowDirectional - entities: - - uid: 493 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,-14.5 - parent: 1 - type: Transform - - uid: 1911 - components: - - pos: 10.5,-14.5 - parent: 1 - type: Transform - - uid: 1914 - components: - - pos: 9.5,-14.5 - parent: 1 - type: Transform - - uid: 1915 - components: - - rot: 3.141592653589793 rad - pos: 10.5,-12.5 - parent: 1 - type: Transform - - uid: 2730 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,57.5 - parent: 1 - type: Transform - - uid: 2787 - components: - - pos: -25.5,57.5 - parent: 1 - type: Transform - - uid: 14821 - components: - - rot: 3.141592653589793 rad - pos: 11.5,-12.5 - parent: 1 - type: Transform - - uid: 14823 - components: - - rot: 3.141592653589793 rad - pos: 9.5,-12.5 - parent: 1 - type: Transform - - uid: 14824 - components: - - pos: 10.5,-13.5 - parent: 1 - type: Transform - - uid: 14825 - components: - - pos: 11.5,-14.5 - parent: 1 - type: Transform - - uid: 14830 - components: - - rot: 3.141592653589793 rad - pos: 8.5,-12.5 - parent: 1 - type: Transform - - uid: 14838 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,-14.5 - parent: 1 - type: Transform - - uid: 14842 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,-13.5 - parent: 1 - type: Transform - - uid: 14844 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,-13.5 - parent: 1 - type: Transform - - uid: 14846 - components: - - pos: 7.5,-14.5 - parent: 1 - type: Transform - - uid: 14847 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,-13.5 - parent: 1 - type: Transform - - uid: 14848 - components: - - rot: 3.141592653589793 rad - pos: 7.5,-13.5 - parent: 1 - type: Transform - - uid: 14849 - components: - - rot: 3.141592653589793 rad - pos: 10.5,-13.5 - parent: 1 - type: Transform - - uid: 14850 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,-12.5 - parent: 1 - type: Transform - - uid: 14851 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,-12.5 - parent: 1 - type: Transform - - uid: 14921 - components: - - rot: 3.141592653589793 rad - pos: -25.5,57.5 - parent: 1 - type: Transform - - uid: 14922 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,57.5 - parent: 1 - type: Transform - - uid: 15018 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,-13.5 - parent: 1 - type: Transform -- proto: PlasmaTank - entities: - - uid: 14197 - components: - - pos: -77.7388,42.76258 - parent: 1 - type: Transform -- proto: PlasmaTankFilled - entities: - - uid: 9975 - components: - - pos: -82.50182,22.490105 - parent: 1 - type: Transform -- proto: PlasticFlapsAirtightClear - entities: - - uid: 15 - components: - - pos: -73.5,57.5 - parent: 1 - type: Transform - - uid: 3570 - components: - - pos: -35.5,-14.5 - parent: 1 - type: Transform - - uid: 3670 - components: - - pos: -39.5,-8.5 - parent: 1 - type: Transform - - uid: 4758 - components: - - pos: -35.5,-11.5 - parent: 1 - type: Transform - - uid: 10357 - components: - - pos: -31.5,-14.5 - parent: 1 - type: Transform - - uid: 10358 - components: - - pos: -31.5,-11.5 - parent: 1 - type: Transform -- proto: PlushieLizard - entities: - - uid: 14454 - components: - - pos: -71.541916,8.668143 - parent: 1 - type: Transform -- proto: PlushieNuke - entities: - - uid: 1414 - components: - - pos: 25.470646,41.49849 - parent: 1 - type: Transform -- proto: PlushieSpaceLizard - entities: - - uid: 4709 - components: - - pos: -92.400795,47.3703 - parent: 1 - type: Transform -- proto: PortableGeneratorSuperPacman - entities: - - uid: 6264 - components: - - pos: -3.5,55.5 - parent: 1 - type: Transform -- proto: PortableGeneratorSuperPacmanMachineCircuitboard - entities: - - uid: 1491 - components: - - pos: -49.48023,25.725746 - parent: 1 - type: Transform - - uid: 15959 - components: - - pos: -49.464603,25.631996 - parent: 1 - type: Transform -- proto: PortableScrubber - entities: - - uid: 12379 - components: - - pos: 5.5,-10.5 - parent: 1 - type: Transform - - uid: 15142 - components: - - pos: -77.5,38.5 - parent: 1 - type: Transform - - uid: 15143 - components: - - pos: -77.5,37.5 - parent: 1 - type: Transform - - uid: 15144 - components: - - pos: -77.5,36.5 - parent: 1 - type: Transform -- proto: PortableScrubberMachineCircuitBoard - entities: - - uid: 5554 - components: - - pos: -52.480408,23.530405 - parent: 1 - type: Transform -- proto: PosterContrabandClown - entities: - - uid: 4235 - components: - - pos: -39.5,27.5 - parent: 1 - type: Transform -- proto: PosterContrabandGreyTide - entities: - - uid: 5911 - components: - - pos: -7.5,38.5 - parent: 1 - type: Transform -- proto: PosterContrabandLamarr - entities: - - uid: 319 - components: - - pos: -4.5,1.5 - parent: 1 - type: Transform -- proto: PosterContrabandMissingGloves - entities: - - uid: 10085 - components: - - pos: -24.5,25.5 - parent: 1 - type: Transform -- proto: PosterContrabandWehWatches - entities: - - uid: 10419 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,9.5 - parent: 1 - type: Transform -- proto: PosterLegit50thAnniversaryVintageReprint - entities: - - uid: 10080 - components: - - pos: -12.5,-0.5 - parent: 1 - type: Transform -- proto: PosterLegitHereForYourSafety - entities: - - uid: 10060 - components: - - pos: -18.5,28.5 - parent: 1 - type: Transform -- proto: PosterLegitJustAWeekAway - entities: - - uid: 10089 - components: - - pos: -49.5,16.5 - parent: 1 - type: Transform -- proto: PosterLegitLoveIan - entities: - - uid: 10086 - components: - - pos: -23.5,39.5 - parent: 1 - type: Transform - - uid: 10087 - components: - - pos: -18.5,40.5 - parent: 1 - type: Transform -- proto: PosterLegitPDAAd - entities: - - uid: 4550 - components: - - rot: 1.5707963267948966 rad - pos: 18.5,36.5 - parent: 1 - type: Transform -- proto: PosterLegitScience - entities: - - uid: 10081 - components: - - pos: -12.5,-9.5 - parent: 1 - type: Transform -- proto: PosterMapPacked - entities: - - uid: 6314 - components: - - pos: 7.5,53.5 - parent: 1 - type: Transform -- proto: PottedPlant1 - entities: - - uid: 4556 - components: - - pos: 23.5,37.5 - parent: 1 - type: Transform -- proto: PottedPlant27 - entities: - - uid: 71 - components: - - pos: 12.5,25.5 - parent: 1 - type: Transform - - uid: 80 - components: - - pos: 12.5,26.5 - parent: 1 - type: Transform -- proto: PottedPlantRandom - entities: - - uid: 277 - components: - - pos: -13.5,-5.5 - parent: 1 - type: Transform - - uid: 278 - components: - - pos: -0.5,-2.5 - parent: 1 - type: Transform - - uid: 297 - components: - - pos: -7.5,-2.5 - parent: 1 - type: Transform - - uid: 918 - components: - - pos: 26.5,-0.5 - parent: 1 - type: Transform - - uid: 1520 - components: - - pos: -15.5,-1.5 - parent: 1 - type: Transform - - uid: 1522 - components: - - pos: -15.5,-5.5 - parent: 1 - type: Transform - - uid: 1594 - components: - - pos: 13.5,-10.5 - parent: 1 - type: Transform - - uid: 2103 - components: - - pos: -4.5,29.5 - parent: 1 - type: Transform - - uid: 2664 - components: - - pos: -6.5,34.5 - parent: 1 - type: Transform - - uid: 3735 - components: - - pos: -43.5,-4.5 - parent: 1 - type: Transform - - uid: 3736 - components: - - pos: -36.5,-1.5 - parent: 1 - type: Transform - - uid: 3737 - components: - - pos: -34.5,2.5 - parent: 1 - type: Transform - - uid: 5265 - components: - - pos: -55.5,12.5 - parent: 1 - type: Transform - - uid: 5362 - components: - - pos: -50.5,-7.5 - parent: 1 - type: Transform - - uid: 5363 - components: - - pos: -50.5,-2.5 - parent: 1 - type: Transform - - uid: 7461 - components: - - pos: -52.5,90.5 - parent: 1 - type: Transform - - uid: 7465 - components: - - pos: -50.5,90.5 - parent: 1 - type: Transform - - uid: 7558 - components: - - pos: -19.5,44.5 - parent: 1 - type: Transform - - uid: 9771 - components: - - pos: -37.5,33.5 - parent: 1 - type: Transform - - uid: 10063 - components: - - pos: -39.5,39.5 - parent: 1 - type: Transform - - uid: 11056 - components: - - pos: -71.5,15.5 - parent: 1 - type: Transform - - uid: 11057 - components: - - pos: -69.5,31.5 - parent: 1 - type: Transform - - uid: 12735 - components: - - pos: -4.5,34.5 - parent: 1 - type: Transform - - uid: 12955 - components: - - pos: 4.5,21.5 - parent: 1 - type: Transform - - uid: 12956 - components: - - pos: 2.5,34.5 - parent: 1 - type: Transform - - uid: 12957 - components: - - pos: 4.5,34.5 - parent: 1 - type: Transform - - uid: 12958 - components: - - pos: 12.5,33.5 - parent: 1 - type: Transform - - uid: 12959 - components: - - pos: -0.5,40.5 - parent: 1 - type: Transform - - uid: 13081 - components: - - pos: -0.5,36.5 - parent: 1 - type: Transform - - uid: 13087 - components: - - pos: -2.5,8.5 - parent: 1 - type: Transform - - uid: 13088 - components: - - pos: 1.5,10.5 - parent: 1 - type: Transform - - uid: 14881 - components: - - pos: -9.5,30.5 - parent: 1 - type: Transform -- proto: PottedPlantRandomPlastic - entities: - - uid: 6835 - components: - - pos: -37.5,51.5 - parent: 1 - type: Transform - - uid: 6836 - components: - - pos: -36.5,51.5 - parent: 1 - type: Transform - - uid: 6837 - components: - - pos: -35.5,51.5 - parent: 1 - type: Transform - - uid: 6838 - components: - - pos: -34.5,51.5 - parent: 1 - type: Transform - - uid: 6839 - components: - - pos: -34.5,50.5 - parent: 1 - type: Transform - - uid: 6840 - components: - - pos: -35.5,50.5 - parent: 1 - type: Transform - - uid: 6841 - components: - - pos: -36.5,50.5 - parent: 1 - type: Transform - - uid: 6842 - components: - - pos: -37.5,50.5 - parent: 1 - type: Transform - - uid: 6843 - components: - - pos: -36.5,49.5 - parent: 1 - type: Transform - - uid: 6844 - components: - - pos: -35.5,49.5 - parent: 1 - type: Transform - - uid: 13082 - components: - - pos: 6.5,15.5 - parent: 1 - type: Transform -- proto: PottedPlantRD - entities: - - uid: 276 - components: - - pos: -10.5,-1.5 - parent: 1 - type: Transform -- proto: PowerCellMedium - entities: - - uid: 15789 - components: - - pos: -37.797993,-9.327299 - parent: 1 - type: Transform - - uid: 15790 - components: - - pos: -37.454243,-9.483549 - parent: 1 - type: Transform -- proto: PowerCellMicroreactor - entities: - - uid: 15037 - components: - - flags: InContainer - type: MetaData - - parent: 621 - type: Transform - - canCollide: False - type: Physics -- proto: PowerCellRecharger - entities: - - uid: 314 - components: - - pos: 2.5,-2.5 - parent: 1 - type: Transform - - uid: 2253 - components: - - pos: -1.5,34.5 - parent: 1 - type: Transform - - uid: 2254 - components: - - pos: -21.5,59.5 - parent: 1 - type: Transform - - uid: 2255 - components: - - pos: -33.5,38.5 - parent: 1 - type: Transform - - uid: 3958 - components: - - pos: 10.5,24.5 - parent: 1 - type: Transform - - uid: 7189 - components: - - pos: -37.5,-13.5 - parent: 1 - type: Transform - - uid: 7946 - components: - - pos: -56.5,64.5 - parent: 1 - type: Transform - - uid: 13337 - components: - - pos: -2.5,10.5 - parent: 1 - type: Transform - - uid: 13339 - components: - - pos: -39.5,0.5 - parent: 1 - type: Transform - - uid: 13340 - components: - - pos: -31.5,-2.5 - parent: 1 - type: Transform - - uid: 13341 - components: - - pos: -24.5,8.5 - parent: 1 - type: Transform - - uid: 13343 - components: - - pos: -52.5,17.5 - parent: 1 - type: Transform - - uid: 15972 - components: - - pos: -10.5,8.5 - parent: 1 - type: Transform -- proto: Poweredlight - entities: - - uid: 381 - components: - - rot: 3.141592653589793 rad - pos: -12.5,-8.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 382 - components: - - rot: 3.141592653589793 rad - pos: -10.5,-5.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 383 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,0.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 384 - components: - - rot: 1.5707963267948966 rad - pos: -13.5,1.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 385 - components: - - rot: 3.141592653589793 rad - pos: -3.5,-5.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 386 - components: - - rot: 1.5707963267948966 rad - pos: -3.5,1.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 387 - components: - - rot: -1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 1020 - components: - - pos: 26.5,28.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 1533 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,-3.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 1838 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,0.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 1839 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,0.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 1840 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,0.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 1841 - components: - - rot: -1.5707963267948966 rad - pos: 20.5,0.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 1842 - components: - - pos: 7.5,-1.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 1843 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,1.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2009 - components: - - rot: 1.5707963267948966 rad - pos: -0.5,38.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2012 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,22.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2015 - components: - - rot: 3.141592653589793 rad - pos: 11.5,33.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2018 - components: - - pos: 7.5,37.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2073 - components: - - pos: 6.5,20.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2074 - components: - - pos: 8.5,26.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2075 - components: - - rot: 3.141592653589793 rad - pos: -0.5,14.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2076 - components: - - pos: 2.5,17.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2077 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,17.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2078 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,14.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2079 - components: - - rot: 3.141592653589793 rad - pos: 11.5,11.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2408 - components: - - rot: 3.141592653589793 rad - pos: -2.5,19.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2409 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,23.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2410 - components: - - rot: -1.5707963267948966 rad - pos: 0.5,27.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2432 - components: - - rot: 3.141592653589793 rad - pos: -3.5,29.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2433 - components: - - pos: -0.5,34.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2754 - components: - - rot: 3.141592653589793 rad - pos: -9.5,4.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2756 - components: - - rot: 3.141592653589793 rad - pos: 3.5,4.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2757 - components: - - pos: 13.5,6.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2758 - components: - - rot: 3.141592653589793 rad - pos: 21.5,4.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2759 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,9.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2760 - components: - - rot: -1.5707963267948966 rad - pos: 28.5,17.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2809 - components: - - rot: 3.141592653589793 rad - pos: -18.5,3.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2811 - components: - - pos: -12.5,33.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2812 - components: - - rot: 3.141592653589793 rad - pos: -8.5,27.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2971 - components: - - rot: 3.141592653589793 rad - pos: 27.5,23.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3210 - components: - - rot: 3.141592653589793 rad - pos: -27.5,4.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3407 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,10.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3409 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,9.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3410 - components: - - rot: 3.141592653589793 rad - pos: -27.5,15.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3411 - components: - - pos: -24.5,18.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3486 - components: - - rot: 3.141592653589793 rad - pos: -24.5,-13.5 - parent: 1 - type: Transform - - uid: 3696 - components: - - rot: 3.141592653589793 rad - pos: -41.5,-7.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3767 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,1.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3768 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,2.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3769 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,-3.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3771 - components: - - pos: -43.5,-1.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3772 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,1.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3773 - components: - - rot: 3.141592653589793 rad - pos: -44.5,-7.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3833 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,-12.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3871 - components: - - rot: 3.141592653589793 rad - pos: -45.5,4.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4242 - components: - - rot: 3.141592653589793 rad - pos: -24.5,26.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4243 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,26.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4244 - components: - - pos: -34.5,29.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4245 - components: - - rot: 3.141592653589793 rad - pos: -31.5,23.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4246 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,25.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4247 - components: - - rot: 3.141592653589793 rad - pos: -33.5,15.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4248 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,21.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4249 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,19.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4250 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,13.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4252 - components: - - rot: 3.141592653589793 rad - pos: -29.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4743 - components: - - rot: -1.5707963267948966 rad - pos: -79.5,-11.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4769 - components: - - rot: 3.141592653589793 rad - pos: -63.5,-11.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4770 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,-11.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4905 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,-14.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4906 - components: - - rot: -1.5707963267948966 rad - pos: -64.5,-14.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4980 - components: - - rot: -1.5707963267948966 rad - pos: -79.5,-9.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4983 - components: - - pos: -74.5,-9.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5191 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,-2.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5192 - components: - - rot: 3.141592653589793 rad - pos: -74.5,4.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5193 - components: - - pos: -67.5,6.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5194 - components: - - rot: 3.141592653589793 rad - pos: -59.5,4.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5196 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,11.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5197 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,14.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5198 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,19.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5200 - components: - - rot: 3.141592653589793 rad - pos: -54.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5201 - components: - - rot: 3.141592653589793 rad - pos: -43.5,30.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5202 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,28.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5203 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,28.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5204 - components: - - pos: -51.5,25.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5337 - components: - - rot: 3.141592653589793 rad - pos: -54.5,4.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8582 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,63.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8584 - components: - - pos: -47.5,65.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8585 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,62.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8586 - components: - - rot: 3.141592653589793 rad - pos: -60.5,60.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8587 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,64.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8588 - components: - - rot: -1.5707963267948966 rad - pos: -58.5,64.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8589 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,59.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8590 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,53.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8591 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,57.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8592 - components: - - rot: 3.141592653589793 rad - pos: -55.5,53.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8593 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,58.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8594 - components: - - rot: 3.141592653589793 rad - pos: -60.5,63.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8595 - components: - - pos: -62.5,55.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8596 - components: - - rot: 3.141592653589793 rad - pos: -61.5,50.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9260 - components: - - rot: 3.141592653589793 rad - pos: -50.5,46.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9377 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,38.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9543 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,38.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9544 - components: - - pos: -11.5,44.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9545 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,38.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9546 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,49.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9547 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,48.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9548 - components: - - rot: 1.5707963267948966 rad - pos: -22.5,46.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9549 - components: - - rot: 1.5707963267948966 rad - pos: -22.5,39.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9555 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,42.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9556 - components: - - pos: -33.5,47.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9557 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,46.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9587 - components: - - rot: 1.5707963267948966 rad - pos: -23.5,54.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9588 - components: - - pos: -12.5,57.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9589 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,55.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9590 - components: - - rot: 3.141592653589793 rad - pos: -6.5,54.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9591 - components: - - rot: 3.141592653589793 rad - pos: -8.5,59.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9593 - components: - - rot: 3.141592653589793 rad - pos: -12.5,59.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9594 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,63.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9595 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,63.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9596 - components: - - rot: 3.141592653589793 rad - pos: -20.5,59.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 11013 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,40.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 11014 - components: - - pos: -61.5,45.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 12774 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,30.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 13323 - components: - - pos: -0.5,10.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 13699 - components: - - rot: 3.141592653589793 rad - pos: -42.5,41.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 13700 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,47.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 13701 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,51.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 13765 - components: - - rot: 3.141592653589793 rad - pos: -24.5,23.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 13844 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,-8.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 13850 - components: - - pos: 30.5,10.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 13851 - components: - - rot: 3.141592653589793 rad - pos: 30.5,16.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 13853 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,-2.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14210 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,-11.5 - parent: 1 - type: Transform - - uid: 14466 - components: - - rot: 3.141592653589793 rad - pos: -83.5,23.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14471 - components: - - pos: -79.5,27.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14473 - components: - - rot: -1.5707963267948966 rad - pos: -73.5,25.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14474 - components: - - rot: 3.141592653589793 rad - pos: -71.5,19.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14475 - components: - - rot: 3.141592653589793 rad - pos: -63.5,19.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14476 - components: - - pos: -67.5,23.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14477 - components: - - rot: 3.141592653589793 rad - pos: -71.5,15.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14478 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14479 - components: - - pos: -69.5,35.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14480 - components: - - rot: -1.5707963267948966 rad - pos: -63.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14481 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,27.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14482 - components: - - rot: 1.5707963267948966 rad - pos: -61.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14483 - components: - - rot: -1.5707963267948966 rad - pos: -76.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14484 - components: - - rot: 1.5707963267948966 rad - pos: -82.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14485 - components: - - rot: -1.5707963267948966 rad - pos: -77.5,38.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14486 - components: - - rot: -1.5707963267948966 rad - pos: -77.5,44.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14487 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,46.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14488 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,42.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14489 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,38.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14490 - components: - - rot: 1.5707963267948966 rad - pos: -86.5,34.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14491 - components: - - rot: 1.5707963267948966 rad - pos: -90.5,35.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14492 - components: - - rot: 1.5707963267948966 rad - pos: -90.5,37.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14493 - components: - - rot: 1.5707963267948966 rad - pos: -90.5,39.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14494 - components: - - rot: 1.5707963267948966 rad - pos: -90.5,41.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14495 - components: - - rot: 1.5707963267948966 rad - pos: -90.5,43.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14496 - components: - - rot: 1.5707963267948966 rad - pos: -90.5,45.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14497 - components: - - pos: -83.5,50.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14498 - components: - - pos: -81.5,50.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14855 - components: - - pos: 7.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14856 - components: - - pos: 11.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14857 - components: - - pos: 9.5,31.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver -- proto: PoweredlightEmpty - entities: - - uid: 302 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,34.5 - parent: 1 - type: Transform - - uid: 340 - components: - - rot: 3.141592653589793 rad - pos: 5.5,28.5 - parent: 1 - type: Transform - - uid: 516 - components: - - pos: -35.5,7.5 - parent: 1 - type: Transform - - uid: 517 - components: - - rot: 1.5707963267948966 rad - pos: -58.5,40.5 - parent: 1 - type: Transform -- proto: PoweredLightPostSmall - entities: - - uid: 15563 - components: - - pos: -1.5,-19.5 - parent: 1 - type: Transform - - uid: 15564 - components: - - pos: 7.5,-21.5 - parent: 1 - type: Transform - - uid: 15565 - components: - - pos: 13.5,-18.5 - parent: 1 - type: Transform -- proto: PoweredlightSodium - entities: - - uid: 3469 - components: - - pos: -50.5,-15.5 - parent: 1 - type: Transform - - uid: 4596 - components: - - pos: 20.5,43.5 - parent: 1 - type: Transform - - uid: 15427 - components: - - pos: -41.5,58.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 15428 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,63.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 15429 - components: - - rot: 3.141592653589793 rad - pos: -42.5,68.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver -- proto: PoweredSmallLight - entities: - - uid: 10 - components: - - pos: -48.5,10.5 - parent: 1 - type: Transform - - uid: 282 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,-12.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 377 - components: - - pos: 3.5,-8.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 378 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,-14.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 379 - components: - - rot: -1.5707963267948966 rad - pos: -1.5,-9.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 380 - components: - - rot: 3.141592653589793 rad - pos: -8.5,-12.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 473 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,37.5 - parent: 1 - type: Transform - - uid: 509 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,38.5 - parent: 1 - type: Transform - - uid: 526 - components: - - pos: -41.5,39.5 - parent: 1 - type: Transform - - uid: 1656 - components: - - rot: 3.141592653589793 rad - pos: 18.5,-8.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 1657 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,-9.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2237 - components: - - rot: -1.5707963267948966 rad - pos: 20.5,18.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2238 - components: - - pos: 20.5,23.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2249 - components: - - rot: -1.5707963267948966 rad - pos: 4.5,10.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2512 - components: - - rot: 1.5707963267948966 rad - pos: 16.5,11.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2513 - components: - - pos: 22.5,9.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2753 - components: - - rot: 1.5707963267948966 rad - pos: 25.5,2.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2762 - components: - - rot: 1.5707963267948966 rad - pos: 22.5,15.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2781 - components: - - pos: -8.5,9.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2782 - components: - - pos: -8.5,15.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2792 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,14.5 - parent: 1 - type: Transform - - uid: 2852 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,28.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 2883 - components: - - pos: -16.5,10.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 3317 - components: - - rot: 3.141592653589793 rad - pos: -16.5,22.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 4075 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,0.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5328 - components: - - pos: -41.5,11.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5329 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,14.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5335 - components: - - pos: -52.5,-4.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 5336 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,-1.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 6307 - components: - - rot: -1.5707963267948966 rad - pos: 0.5,51.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 6308 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,51.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7101 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,36.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7102 - components: - - rot: 3.141592653589793 rad - pos: -51.5,40.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7713 - components: - - rot: 3.141592653589793 rad - pos: -55.5,88.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7714 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,86.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7730 - components: - - pos: -55.5,84.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7731 - components: - - pos: -61.5,89.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7732 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,84.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7733 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,89.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7741 - components: - - rot: 3.141592653589793 rad - pos: -62.5,83.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 7742 - components: - - rot: -1.5707963267948966 rad - pos: -57.5,85.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8353 - components: - - pos: -51.5,68.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8583 - components: - - rot: 3.141592653589793 rad - pos: -51.5,79.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8597 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,50.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8598 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,50.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8599 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,50.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8600 - components: - - rot: 3.141592653589793 rad - pos: -60.5,57.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 8971 - components: - - rot: 3.141592653589793 rad - pos: -79.5,18.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9257 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,42.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9592 - components: - - pos: -4.5,56.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9600 - components: - - rot: -1.5707963267948966 rad - pos: -24.5,43.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9601 - components: - - rot: 3.141592653589793 rad - pos: -28.5,40.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 9602 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,50.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 10253 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,26.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 10254 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,12.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 10978 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,40.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 10979 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,44.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 10980 - components: - - rot: 3.141592653589793 rad - pos: -70.5,47.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 12775 - components: - - rot: 1.5707963267948966 rad - pos: 18.5,30.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14003 - components: - - rot: -1.5707963267948966 rad - pos: -75.5,55.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14007 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,54.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14009 - components: - - rot: -1.5707963267948966 rad - pos: -69.5,11.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14468 - components: - - rot: -1.5707963267948966 rad - pos: -84.5,30.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 14472 - components: - - rot: -1.5707963267948966 rad - pos: -84.5,20.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 15038 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,-14.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 15224 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,22.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver - - uid: 15226 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,28.5 - parent: 1 - type: Transform - - powerLoad: 0 - type: ApcPowerReceiver -- proto: PoweredSmallLightEmpty - entities: - - uid: 4595 - components: - - rot: 3.141592653589793 rad - pos: 21.5,37.5 - parent: 1 - type: Transform -- proto: Protolathe - entities: - - uid: 254 - components: - - pos: -5.5,1.5 - parent: 1 - type: Transform -- proto: PuddleVomit - entities: - - uid: 79 - components: - - pos: -17.5,44.5 - parent: 1 - type: Transform - - uid: 7010 - components: - - pos: 2.5,6.5 - parent: 1 - type: Transform - - uid: 7126 - components: - - pos: 2.5,5.5 - parent: 1 - type: Transform - - uid: 7127 - components: - - pos: 1.5,5.5 - parent: 1 - type: Transform - - uid: 7128 - components: - - pos: 1.5,6.5 - parent: 1 - type: Transform - - uid: 7129 - components: - - pos: 0.5,6.5 - parent: 1 - type: Transform - - uid: 7130 - components: - - pos: -8.5,-0.5 - parent: 1 - type: Transform - - uid: 7131 - components: - - pos: -8.5,0.5 - parent: 1 - type: Transform - - uid: 7187 - components: - - pos: -9.5,0.5 - parent: 1 - type: Transform - - uid: 7228 - components: - - pos: -9.5,1.5 - parent: 1 - type: Transform - - uid: 7241 - components: - - pos: -8.5,1.5 - parent: 1 - type: Transform - - uid: 7341 - components: - - pos: -27.5,5.5 - parent: 1 - type: Transform - - uid: 7342 - components: - - pos: -28.5,5.5 - parent: 1 - type: Transform - - uid: 7395 - components: - - pos: -28.5,6.5 - parent: 1 - type: Transform - - uid: 7396 - components: - - pos: -29.5,6.5 - parent: 1 - type: Transform - - uid: 7400 - components: - - pos: -29.5,5.5 - parent: 1 - type: Transform -- proto: Rack - entities: - - uid: 7 - components: - - pos: -46.5,8.5 - parent: 1 - type: Transform - - uid: 8 - components: - - pos: -46.5,10.5 - parent: 1 - type: Transform - - uid: 11 - components: - - pos: -46.5,9.5 - parent: 1 - type: Transform - - uid: 1447 - components: - - pos: -17.5,10.5 - parent: 1 - type: Transform - - uid: 1466 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,9.5 - parent: 1 - type: Transform - - uid: 1832 - components: - - pos: 20.5,-2.5 - parent: 1 - type: Transform - - uid: 1876 - components: - - pos: -2.5,-9.5 - parent: 1 - type: Transform - - uid: 2071 - components: - - pos: -3.5,15.5 - parent: 1 - type: Transform - - uid: 2796 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,8.5 - parent: 1 - type: Transform - - uid: 2934 - components: - - rot: 3.141592653589793 rad - pos: -18.5,16.5 - parent: 1 - type: Transform - - uid: 2950 - components: - - pos: 27.5,-4.5 - parent: 1 - type: Transform - - uid: 3168 - components: - - pos: -23.5,55.5 - parent: 1 - type: Transform - - uid: 3511 - components: - - pos: -19.5,-13.5 - parent: 1 - type: Transform - - uid: 3512 - components: - - pos: -19.5,-14.5 - parent: 1 - type: Transform - - uid: 3656 - components: - - pos: -33.5,-1.5 - parent: 1 - type: Transform - - uid: 4334 - components: - - pos: -40.5,18.5 - parent: 1 - type: Transform - - uid: 4335 - components: - - pos: -40.5,17.5 - parent: 1 - type: Transform - - uid: 4336 - components: - - pos: -45.5,17.5 - parent: 1 - type: Transform - - uid: 4337 - components: - - pos: -47.5,17.5 - parent: 1 - type: Transform - - uid: 5290 - components: - - pos: -54.5,27.5 - parent: 1 - type: Transform - - uid: 5291 - components: - - pos: -53.5,27.5 - parent: 1 - type: Transform - - uid: 5292 - components: - - pos: -52.5,27.5 - parent: 1 - type: Transform - - uid: 5293 - components: - - pos: -52.5,25.5 - parent: 1 - type: Transform - - uid: 5294 - components: - - pos: -52.5,24.5 - parent: 1 - type: Transform - - uid: 5295 - components: - - pos: -52.5,23.5 - parent: 1 - type: Transform - - uid: 5296 - components: - - pos: -49.5,25.5 - parent: 1 - type: Transform - - uid: 5297 - components: - - pos: -49.5,24.5 - parent: 1 - type: Transform - - uid: 5298 - components: - - pos: -49.5,23.5 - parent: 1 - type: Transform - - uid: 5304 - components: - - pos: -54.5,25.5 - parent: 1 - type: Transform - - uid: 5426 - components: - - pos: -19.5,0.5 - parent: 1 - type: Transform - - uid: 5427 - components: - - pos: -18.5,-7.5 - parent: 1 - type: Transform - - uid: 5429 - components: - - pos: -27.5,-4.5 - parent: 1 - type: Transform - - uid: 5442 - components: - - pos: -6.5,-13.5 - parent: 1 - type: Transform - - uid: 5446 - components: - - pos: -17.5,-7.5 - parent: 1 - type: Transform - - uid: 5500 - components: - - pos: -51.5,2.5 - parent: 1 - type: Transform - - uid: 5519 - components: - - pos: -47.5,-8.5 - parent: 1 - type: Transform - - uid: 5599 - components: - - pos: -43.5,13.5 - parent: 1 - type: Transform - - uid: 5600 - components: - - pos: -40.5,13.5 - parent: 1 - type: Transform - - uid: 5625 - components: - - pos: -45.5,23.5 - parent: 1 - type: Transform - - uid: 5638 - components: - - pos: -23.5,26.5 - parent: 1 - type: Transform - - uid: 5727 - components: - - pos: -20.5,29.5 - parent: 1 - type: Transform - - uid: 5728 - components: - - pos: -20.5,13.5 - parent: 1 - type: Transform - - uid: 6068 - components: - - pos: -13.5,46.5 - parent: 1 - type: Transform - - uid: 6082 - components: - - pos: -12.5,46.5 - parent: 1 - type: Transform - - uid: 6317 - components: - - pos: 12.5,43.5 - parent: 1 - type: Transform - - uid: 7519 - components: - - pos: -29.5,55.5 - parent: 1 - type: Transform - - uid: 7573 - components: - - pos: -19.5,41.5 - parent: 1 - type: Transform - - uid: 7717 - components: - - pos: -60.5,83.5 - parent: 1 - type: Transform - - uid: 9104 - components: - - rot: 3.141592653589793 rad - pos: -72.5,45.5 - parent: 1 - type: Transform - - uid: 9295 - components: - - rot: 1.5707963267948966 rad - pos: -82.5,22.5 - parent: 1 - type: Transform - - uid: 9734 - components: - - pos: -27.5,35.5 - parent: 1 - type: Transform - - uid: 10372 - components: - - pos: -27.5,49.5 - parent: 1 - type: Transform - - uid: 10383 - components: - - pos: -8.5,46.5 - parent: 1 - type: Transform - - uid: 10389 - components: - - pos: -1.5,45.5 - parent: 1 - type: Transform - - uid: 10391 - components: - - pos: 6.5,48.5 - parent: 1 - type: Transform - - uid: 10405 - components: - - pos: 22.5,27.5 - parent: 1 - type: Transform - - uid: 10462 - components: - - pos: -27.5,40.5 - parent: 1 - type: Transform - - uid: 10862 - components: - - pos: -22.5,57.5 - parent: 1 - type: Transform - - uid: 10863 - components: - - pos: -21.5,57.5 - parent: 1 - type: Transform - - uid: 10864 - components: - - pos: -20.5,57.5 - parent: 1 - type: Transform - - uid: 10952 - components: - - rot: 3.141592653589793 rad - pos: -71.5,45.5 - parent: 1 - type: Transform - - uid: 12904 - components: - - pos: 13.5,8.5 - parent: 1 - type: Transform - - uid: 13085 - components: - - pos: -0.5,10.5 - parent: 1 - type: Transform - - uid: 13671 - components: - - pos: -53.5,44.5 - parent: 1 - type: Transform - - uid: 13673 - components: - - pos: -50.5,41.5 - parent: 1 - type: Transform - - uid: 13803 - components: - - pos: -17.5,26.5 - parent: 1 - type: Transform - - uid: 13929 - components: - - rot: 1.5707963267948966 rad - pos: -77.5,42.5 - parent: 1 - type: Transform - - uid: 14316 - components: - - rot: 3.141592653589793 rad - pos: -61.5,35.5 - parent: 1 - type: Transform - - uid: 14585 - components: - - rot: -1.5707963267948966 rad - pos: -61.5,26.5 - parent: 1 - type: Transform - - uid: 14591 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,13.5 - parent: 1 - type: Transform - - uid: 14919 - components: - - pos: -17.5,14.5 - parent: 1 - type: Transform - - uid: 15650 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,-9.5 - parent: 1 - type: Transform - - uid: 15651 - components: - - rot: 1.5707963267948966 rad - pos: -43.5,-9.5 - parent: 1 - type: Transform - - uid: 15981 - components: - - pos: -17.5,8.5 - parent: 1 - type: Transform -- proto: RadiationCollector - entities: - - uid: 10498 - components: - - pos: -100.5,32.5 - parent: 1 - type: Transform - - uid: 10575 - components: - - pos: -99.5,32.5 - parent: 1 - type: Transform - - uid: 10599 - components: - - pos: -96.5,18.5 - parent: 1 - type: Transform - - uid: 10600 - components: - - pos: -98.5,32.5 - parent: 1 - type: Transform - - uid: 10601 - components: - - pos: -96.5,32.5 - parent: 1 - type: Transform - - uid: 10602 - components: - - pos: -95.5,32.5 - parent: 1 - type: Transform - - uid: 10603 - components: - - pos: -94.5,32.5 - parent: 1 - type: Transform - - uid: 10604 - components: - - pos: -95.5,18.5 - parent: 1 - type: Transform - - uid: 10605 - components: - - pos: -94.5,18.5 - parent: 1 - type: Transform - - uid: 10606 - components: - - pos: -98.5,18.5 - parent: 1 - type: Transform - - uid: 10607 - components: - - pos: -99.5,18.5 - parent: 1 - type: Transform - - uid: 10608 - components: - - pos: -100.5,18.5 - parent: 1 - type: Transform -- proto: RadioHandheld - entities: - - uid: 15945 - components: - - pos: 20.868422,-8.021761 - parent: 1 - type: Transform - - uid: 15946 - components: - - pos: 20.649672,-8.146761 - parent: 1 - type: Transform -- proto: Railing - entities: - - uid: 1056 - components: - - rot: 1.5707963267948966 rad - pos: 18.5,25.5 - parent: 1 - type: Transform - - uid: 1172 - components: - - pos: 22.5,31.5 - parent: 1 - type: Transform - - uid: 1265 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,27.5 - parent: 1 - type: Transform - - uid: 1266 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,28.5 - parent: 1 - type: Transform - - uid: 1615 - components: - - rot: 3.141592653589793 rad - pos: 22.5,22.5 - parent: 1 - type: Transform - - uid: 2632 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,29.5 - parent: 1 - type: Transform - - uid: 2634 - components: - - rot: 3.141592653589793 rad - pos: -9.5,30.5 - parent: 1 - type: Transform - - uid: 2635 - components: - - rot: 3.141592653589793 rad - pos: -6.5,30.5 - parent: 1 - type: Transform - - uid: 3129 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,28.5 - parent: 1 - type: Transform - - uid: 3130 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,26.5 - parent: 1 - type: Transform - - uid: 3413 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,27.5 - parent: 1 - type: Transform - - uid: 3414 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,25.5 - parent: 1 - type: Transform - - uid: 3415 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,24.5 - parent: 1 - type: Transform - - uid: 3416 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,23.5 - parent: 1 - type: Transform - - uid: 5260 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,16.5 - parent: 1 - type: Transform - - uid: 5261 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,12.5 - parent: 1 - type: Transform - - uid: 7045 - components: - - rot: 3.141592653589793 rad - pos: -50.5,37.5 - parent: 1 - type: Transform - - uid: 10128 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,54.5 - parent: 1 - type: Transform - - uid: 10395 - components: - - pos: 6.5,44.5 - parent: 1 - type: Transform - - uid: 10396 - components: - - rot: 3.141592653589793 rad - pos: 6.5,41.5 - parent: 1 - type: Transform - - uid: 10398 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,54.5 - parent: 1 - type: Transform - - uid: 10961 - components: - - pos: -72.5,43.5 - parent: 1 - type: Transform - - uid: 10962 - components: - - pos: -71.5,43.5 - parent: 1 - type: Transform - - uid: 10963 - components: - - pos: -70.5,43.5 - parent: 1 - type: Transform - - uid: 12896 - components: - - pos: 14.5,16.5 - parent: 1 - type: Transform - - uid: 12897 - components: - - rot: 3.141592653589793 rad - pos: 14.5,12.5 - parent: 1 - type: Transform - - uid: 14331 - components: - - pos: -75.5,43.5 - parent: 1 - type: Transform - - uid: 14332 - components: - - rot: 3.141592653589793 rad - pos: -75.5,39.5 - parent: 1 - type: Transform - - uid: 14356 - components: - - rot: -1.5707963267948966 rad - pos: -62.5,13.5 - parent: 1 - type: Transform - - uid: 14357 - components: - - rot: -1.5707963267948966 rad - pos: -62.5,12.5 - parent: 1 - type: Transform - - uid: 14358 - components: - - rot: -1.5707963267948966 rad - pos: -62.5,11.5 - parent: 1 - type: Transform - - uid: 14359 - components: - - rot: -1.5707963267948966 rad - pos: -62.5,10.5 - parent: 1 - type: Transform -- proto: RailingCorner - entities: - - uid: 2633 - components: - - rot: 3.141592653589793 rad - pos: -10.5,30.5 - parent: 1 - type: Transform - - uid: 7066 - components: - - rot: 3.141592653589793 rad - pos: -51.5,37.5 - parent: 1 - type: Transform -- proto: RandomArcade - entities: - - uid: 2493 - components: - - rot: 3.141592653589793 rad - pos: 17.5,12.5 - parent: 1 - type: Transform - - uid: 2494 - components: - - pos: 17.5,11.5 - parent: 1 - type: Transform - - uid: 2495 - components: - - pos: 18.5,11.5 - parent: 1 - type: Transform - - uid: 2496 - components: - - rot: 3.141592653589793 rad - pos: 18.5,12.5 - parent: 1 - type: Transform - - uid: 2497 - components: - - rot: 3.141592653589793 rad - pos: 16.5,12.5 - parent: 1 - type: Transform - - uid: 2498 - components: - - pos: 16.5,11.5 - parent: 1 - type: Transform - - uid: 2499 - components: - - rot: 3.141592653589793 rad - pos: 16.5,8.5 - parent: 1 - type: Transform - - uid: 2500 - components: - - rot: 3.141592653589793 rad - pos: 17.5,8.5 - parent: 1 - type: Transform - - uid: 2501 - components: - - rot: 3.141592653589793 rad - pos: 18.5,8.5 - parent: 1 - type: Transform - - uid: 3509 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,-13.5 - parent: 1 - type: Transform - - uid: 3510 - components: - - rot: 1.5707963267948966 rad - pos: -21.5,-14.5 - parent: 1 - type: Transform - - uid: 9767 - components: - - pos: -41.5,39.5 - parent: 1 - type: Transform -- proto: RandomArtifactSpawner - entities: - - uid: 96 - components: - - pos: -4.5,-8.5 - parent: 1 - type: Transform - - uid: 346 - components: - - pos: 1.5,-14.5 - parent: 1 - type: Transform -- proto: RandomDrinkGlass - entities: - - uid: 915 - components: - - pos: 28.5,-1.5 - parent: 1 - type: Transform -- proto: RandomFoodSingle - entities: - - uid: 10809 - components: - - pos: -33.5,37.5 - parent: 1 - type: Transform -- proto: RandomInstruments - entities: - - uid: 4133 - components: - - pos: -26.5,24.5 - parent: 1 - type: Transform - - uid: 4134 - components: - - pos: -25.5,24.5 - parent: 1 - type: Transform - - uid: 4135 - components: - - pos: -24.5,24.5 - parent: 1 - type: Transform - - uid: 7324 - components: - - pos: -54.5,82.5 - parent: 1 - type: Transform - - uid: 7325 - components: - - pos: -54.5,88.5 - parent: 1 - type: Transform -- proto: RandomPainting - entities: - - uid: 14344 - components: - - pos: -78.5,55.5 - parent: 1 - type: Transform - - uid: 14843 - components: - - rot: 3.141592653589793 rad - pos: 10.5,-11.5 - parent: 1 - type: Transform -- proto: RandomPosterAny - entities: - - uid: 1165 - components: - - pos: 20.5,27.5 - parent: 1 - type: Transform - - uid: 10068 - components: - - pos: -4.5,41.5 - parent: 1 - type: Transform - - uid: 10069 - components: - - pos: 5.5,48.5 - parent: 1 - type: Transform - - uid: 10070 - components: - - pos: 13.5,42.5 - parent: 1 - type: Transform - - uid: 10073 - components: - - pos: 25.5,-3.5 - parent: 1 - type: Transform - - uid: 10074 - components: - - pos: 12.5,-8.5 - parent: 1 - type: Transform - - uid: 10075 - components: - - pos: -22.5,-6.5 - parent: 1 - type: Transform - - uid: 10076 - components: - - pos: -49.5,-5.5 - parent: 1 - type: Transform - - uid: 10088 - components: - - pos: -46.5,22.5 - parent: 1 - type: Transform - - uid: 14348 - components: - - pos: -68.5,55.5 - parent: 1 - type: Transform - - uid: 14349 - components: - - pos: -68.5,43.5 - parent: 1 - type: Transform - - uid: 14350 - components: - - pos: -73.5,41.5 - parent: 1 - type: Transform - - uid: 14354 - components: - - pos: -65.5,13.5 - parent: 1 - type: Transform -- proto: RandomPosterContraband - entities: - - uid: 14347 - components: - - pos: -74.5,54.5 - parent: 1 - type: Transform -- proto: RandomPosterLegit - entities: - - uid: 1061 - components: - - pos: 2.5,7.5 - parent: 1 - type: Transform - - uid: 7323 - components: - - pos: -53.5,86.5 - parent: 1 - type: Transform - - uid: 8352 - components: - - rot: 3.141592653589793 rad - pos: -45.5,37.5 - parent: 1 - type: Transform - - uid: 10044 - components: - - pos: -54.5,34.5 - parent: 1 - type: Transform - - uid: 10046 - components: - - pos: -55.5,17.5 - parent: 1 - type: Transform - - uid: 10048 - components: - - pos: -68.5,7.5 - parent: 1 - type: Transform - - uid: 10049 - components: - - pos: -55.5,-2.5 - parent: 1 - type: Transform - - uid: 10051 - components: - - pos: -43.5,7.5 - parent: 1 - type: Transform - - uid: 10052 - components: - - pos: -27.5,3.5 - parent: 1 - type: Transform - - uid: 10053 - components: - - pos: -11.5,3.5 - parent: 1 - type: Transform - - uid: 10055 - components: - - pos: 14.5,4.5 - parent: 1 - type: Transform - - uid: 10056 - components: - - pos: 24.5,8.5 - parent: 1 - type: Transform - - uid: 10057 - components: - - pos: 29.5,19.5 - parent: 1 - type: Transform - - uid: 10059 - components: - - pos: -10.5,26.5 - parent: 1 - type: Transform - - uid: 10061 - components: - - pos: -49.5,41.5 - parent: 1 - type: Transform - - uid: 10062 - components: - - pos: -12.5,45.5 - parent: 1 - type: Transform - - uid: 10064 - components: - - pos: -39.5,25.5 - parent: 1 - type: Transform - - uid: 10065 - components: - - pos: -35.5,14.5 - parent: 1 - type: Transform - - uid: 10066 - components: - - pos: -30.5,30.5 - parent: 1 - type: Transform - - uid: 10067 - components: - - pos: -8.5,35.5 - parent: 1 - type: Transform - - uid: 14351 - components: - - pos: -62.5,37.5 - parent: 1 - type: Transform - - uid: 14352 - components: - - pos: -59.5,45.5 - parent: 1 - type: Transform - - uid: 14353 - components: - - pos: -59.5,28.5 - parent: 1 - type: Transform - - uid: 14355 - components: - - pos: -59.5,8.5 - parent: 1 - type: Transform -- proto: RandomSoap - entities: - - uid: 5305 - components: - - pos: -54.5,25.5 - parent: 1 - type: Transform - - uid: 5437 - components: - - pos: -23.5,-1.5 - parent: 1 - type: Transform - - uid: 5438 - components: - - pos: -23.5,0.5 - parent: 1 - type: Transform - - uid: 5439 - components: - - pos: -23.5,2.5 - parent: 1 - type: Transform - - uid: 7097 - components: - - pos: -50.5,40.5 - parent: 1 - type: Transform - - uid: 7739 - components: - - pos: -54.5,86.5 - parent: 1 - type: Transform -- proto: RandomSpawner - entities: - - uid: 259 - components: - - pos: -70.5,54.5 - parent: 1 - type: Transform - - uid: 287 - components: - - pos: -36.5,18.5 - parent: 1 - type: Transform - - uid: 1402 - components: - - pos: -72.5,56.5 - parent: 1 - type: Transform - - uid: 2308 - components: - - pos: -70.5,54.5 - parent: 1 - type: Transform - - uid: 2990 - components: - - pos: -71.5,52.5 - parent: 1 - type: Transform - - uid: 3481 - components: - - pos: -33.5,32.5 - parent: 1 - type: Transform - - uid: 3738 - components: - - pos: -34.5,33.5 - parent: 1 - type: Transform - - uid: 4074 - components: - - pos: -71.5,54.5 - parent: 1 - type: Transform - - uid: 4220 - components: - - pos: -36.5,17.5 - parent: 1 - type: Transform - - uid: 4732 - components: - - pos: 20.5,38.5 - parent: 1 - type: Transform - - uid: 4733 - components: - - pos: 17.5,43.5 - parent: 1 - type: Transform - - uid: 5547 - components: - - pos: -70.5,53.5 - parent: 1 - type: Transform - - uid: 5756 - components: - - pos: -57.5,60.5 - parent: 1 - type: Transform - - uid: 7393 - components: - - pos: -44.5,-13.5 - parent: 1 - type: Transform - - uid: 8025 - components: - - rot: 3.141592653589793 rad - pos: -40.5,51.5 - parent: 1 - type: Transform - - uid: 8026 - components: - - pos: -44.5,46.5 - parent: 1 - type: Transform - - uid: 8027 - components: - - pos: -40.5,43.5 - parent: 1 - type: Transform - - uid: 8028 - components: - - pos: -43.5,42.5 - parent: 1 - type: Transform - - uid: 8029 - components: - - pos: -37.5,43.5 - parent: 1 - type: Transform - - uid: 8030 - components: - - pos: -33.5,46.5 - parent: 1 - type: Transform - - uid: 8031 - components: - - pos: -31.5,44.5 - parent: 1 - type: Transform - - uid: 8033 - components: - - pos: -29.5,46.5 - parent: 1 - type: Transform - - uid: 8034 - components: - - pos: -28.5,41.5 - parent: 1 - type: Transform - - uid: 8035 - components: - - pos: -31.5,38.5 - parent: 1 - type: Transform - - uid: 8036 - components: - - pos: -32.5,40.5 - parent: 1 - type: Transform - - uid: 8037 - components: - - pos: -35.5,35.5 - parent: 1 - type: Transform - - uid: 8038 - components: - - pos: -42.5,37.5 - parent: 1 - type: Transform - - uid: 8039 - components: - - pos: -35.5,40.5 - parent: 1 - type: Transform - - uid: 8040 - components: - - pos: -36.5,28.5 - parent: 1 - type: Transform - - uid: 8041 - components: - - pos: -38.5,22.5 - parent: 1 - type: Transform - - uid: 8042 - components: - - pos: -37.5,16.5 - parent: 1 - type: Transform - - uid: 8043 - components: - - pos: -36.5,9.5 - parent: 1 - type: Transform - - uid: 8044 - components: - - pos: -38.5,5.5 - parent: 1 - type: Transform - - uid: 8045 - components: - - pos: -33.5,4.5 - parent: 1 - type: Transform - - uid: 8046 - components: - - pos: -32.5,1.5 - parent: 1 - type: Transform - - uid: 8047 - components: - - pos: -41.5,2.5 - parent: 1 - type: Transform - - uid: 8048 - components: - - pos: -48.5,5.5 - parent: 1 - type: Transform - - uid: 8049 - components: - - pos: -55.5,6.5 - parent: 1 - type: Transform - - uid: 8050 - components: - - pos: -57.5,4.5 - parent: 1 - type: Transform - - uid: 8051 - components: - - pos: -65.5,6.5 - parent: 1 - type: Transform - - uid: 8052 - components: - - pos: -70.5,5.5 - parent: 1 - type: Transform - - uid: 8053 - components: - - pos: -74.5,6.5 - parent: 1 - type: Transform - - uid: 8054 - components: - - pos: -56.5,-2.5 - parent: 1 - type: Transform - - uid: 8055 - components: - - pos: -58.5,1.5 - parent: 1 - type: Transform - - uid: 8056 - components: - - pos: -56.5,-8.5 - parent: 1 - type: Transform - - uid: 8060 - components: - - pos: -52.5,-7.5 - parent: 1 - type: Transform - - uid: 8061 - components: - - pos: -54.5,-2.5 - parent: 1 - type: Transform - - uid: 8062 - components: - - pos: -50.5,-1.5 - parent: 1 - type: Transform - - uid: 8063 - components: - - pos: -44.5,-4.5 - parent: 1 - type: Transform - - uid: 8064 - components: - - pos: -45.5,0.5 - parent: 1 - type: Transform - - uid: 8065 - components: - - pos: -37.5,-3.5 - parent: 1 - type: Transform - - uid: 8066 - components: - - pos: -41.5,-3.5 - parent: 1 - type: Transform - - uid: 8067 - components: - - pos: -32.5,-9.5 - parent: 1 - type: Transform - - uid: 8069 - components: - - pos: -38.5,-12.5 - parent: 1 - type: Transform - - uid: 8070 - components: - - pos: -41.5,-10.5 - parent: 1 - type: Transform - - uid: 8072 - components: - - pos: -26.5,-6.5 - parent: 1 - type: Transform - - uid: 8073 - components: - - pos: -29.5,-5.5 - parent: 1 - type: Transform - - uid: 8074 - components: - - pos: -25.5,-0.5 - parent: 1 - type: Transform - - uid: 8075 - components: - - pos: -28.5,2.5 - parent: 1 - type: Transform - - uid: 8076 - components: - - pos: -21.5,-8.5 - parent: 1 - type: Transform - - uid: 8077 - components: - - pos: -20.5,-4.5 - parent: 1 - type: Transform - - uid: 8078 - components: - - pos: -21.5,-1.5 - parent: 1 - type: Transform - - uid: 8079 - components: - - pos: -24.5,-7.5 - parent: 1 - type: Transform - - uid: 8080 - components: - - pos: -15.5,1.5 - parent: 1 - type: Transform - - uid: 8081 - components: - - pos: -16.5,-10.5 - parent: 1 - type: Transform - - uid: 8082 - components: - - pos: -12.5,-13.5 - parent: 1 - type: Transform - - uid: 8083 - components: - - pos: -20.5,-10.5 - parent: 1 - type: Transform - - uid: 8085 - components: - - pos: -24.5,-4.5 - parent: 1 - type: Transform - - uid: 8086 - components: - - pos: -31.5,6.5 - parent: 1 - type: Transform - - uid: 8087 - components: - - pos: -24.5,4.5 - parent: 1 - type: Transform - - uid: 8088 - components: - - pos: -19.5,6.5 - parent: 1 - type: Transform - - uid: 8089 - components: - - pos: -14.5,5.5 - parent: 1 - type: Transform - - uid: 8090 - components: - - pos: -8.5,4.5 - parent: 1 - type: Transform - - uid: 8091 - components: - - pos: -4.5,6.5 - parent: 1 - type: Transform - - uid: 8092 - components: - - pos: -1.5,4.5 - parent: 1 - type: Transform - - uid: 8093 - components: - - pos: 7.5,5.5 - parent: 1 - type: Transform - - uid: 8094 - components: - - pos: 13.5,6.5 - parent: 1 - type: Transform - - uid: 8095 - components: - - pos: 19.5,5.5 - parent: 1 - type: Transform - - uid: 8096 - components: - - pos: 26.5,6.5 - parent: 1 - type: Transform - - uid: 8097 - components: - - pos: 28.5,10.5 - parent: 1 - type: Transform - - uid: 8098 - components: - - pos: 25.5,14.5 - parent: 1 - type: Transform - - uid: 8099 - components: - - pos: 27.5,18.5 - parent: 1 - type: Transform - - uid: 8100 - components: - - pos: 26.5,21.5 - parent: 1 - type: Transform - - uid: 8101 - components: - - pos: 22.5,15.5 - parent: 1 - type: Transform - - uid: 8102 - components: - - pos: 19.5,16.5 - parent: 1 - type: Transform - - uid: 8103 - components: - - pos: 16.5,20.5 - parent: 1 - type: Transform - - uid: 8104 - components: - - pos: 19.5,23.5 - parent: 1 - type: Transform - - uid: 8105 - components: - - pos: 23.5,25.5 - parent: 1 - type: Transform - - uid: 8106 - components: - - pos: 22.5,33.5 - parent: 1 - type: Transform - - uid: 8107 - components: - - pos: 23.5,35.5 - parent: 1 - type: Transform - - uid: 8108 - components: - - pos: 14.5,35.5 - parent: 1 - type: Transform - - uid: 8110 - components: - - pos: 9.5,39.5 - parent: 1 - type: Transform - - uid: 8111 - components: - - pos: 7.5,43.5 - parent: 1 - type: Transform - - uid: 8112 - components: - - pos: 6.5,46.5 - parent: 1 - type: Transform - - uid: 8113 - components: - - pos: 14.5,48.5 - parent: 1 - type: Transform - - uid: 8116 - components: - - pos: 11.5,51.5 - parent: 1 - type: Transform - - uid: 8117 - components: - - pos: 6.5,50.5 - parent: 1 - type: Transform - - uid: 8118 - components: - - pos: 4.5,52.5 - parent: 1 - type: Transform - - uid: 8119 - components: - - pos: -1.5,49.5 - parent: 1 - type: Transform - - uid: 8120 - components: - - pos: -0.5,53.5 - parent: 1 - type: Transform - - uid: 8121 - components: - - pos: -0.5,47.5 - parent: 1 - type: Transform - - uid: 8122 - components: - - pos: -2.5,40.5 - parent: 1 - type: Transform - - uid: 8123 - components: - - pos: -6.5,36.5 - parent: 1 - type: Transform - - uid: 8124 - components: - - pos: -5.5,47.5 - parent: 1 - type: Transform - - uid: 8125 - components: - - pos: -10.5,51.5 - parent: 1 - type: Transform - - uid: 8126 - components: - - pos: -12.5,53.5 - parent: 1 - type: Transform - - uid: 8127 - components: - - pos: -8.5,57.5 - parent: 1 - type: Transform - - uid: 8128 - components: - - pos: -5.5,59.5 - parent: 1 - type: Transform - - uid: 8129 - components: - - pos: -13.5,60.5 - parent: 1 - type: Transform - - uid: 8130 - components: - - pos: -17.5,64.5 - parent: 1 - type: Transform - - uid: 8131 - components: - - pos: -20.5,61.5 - parent: 1 - type: Transform - - uid: 8132 - components: - - pos: -17.5,56.5 - parent: 1 - type: Transform - - uid: 8133 - components: - - pos: -14.5,53.5 - parent: 1 - type: Transform - - uid: 8134 - components: - - pos: -22.5,55.5 - parent: 1 - type: Transform - - uid: 8135 - components: - - pos: -17.5,49.5 - parent: 1 - type: Transform - - uid: 8136 - components: - - pos: -16.5,42.5 - parent: 1 - type: Transform - - uid: 8137 - components: - - pos: -15.5,46.5 - parent: 1 - type: Transform - - uid: 8138 - components: - - pos: -12.5,47.5 - parent: 1 - type: Transform - - uid: 8139 - components: - - pos: -10.5,48.5 - parent: 1 - type: Transform - - uid: 8140 - components: - - pos: -15.5,39.5 - parent: 1 - type: Transform - - uid: 8141 - components: - - pos: -17.5,35.5 - parent: 1 - type: Transform - - uid: 8142 - components: - - pos: -13.5,39.5 - parent: 1 - type: Transform - - uid: 8143 - components: - - pos: -11.5,42.5 - parent: 1 - type: Transform - - uid: 8144 - components: - - pos: -4.5,33.5 - parent: 1 - type: Transform - - uid: 8145 - components: - - pos: -0.5,30.5 - parent: 1 - type: Transform - - uid: 8146 - components: - - pos: 2.5,33.5 - parent: 1 - type: Transform - - uid: 8147 - components: - - pos: 2.5,37.5 - parent: 1 - type: Transform - - uid: 8148 - components: - - pos: 1.5,40.5 - parent: 1 - type: Transform - - uid: 8149 - components: - - pos: 0.5,36.5 - parent: 1 - type: Transform - - uid: 8150 - components: - - pos: 7.5,37.5 - parent: 1 - type: Transform - - uid: 8151 - components: - - pos: 11.5,34.5 - parent: 1 - type: Transform - - uid: 8152 - components: - - pos: 4.5,28.5 - parent: 1 - type: Transform - - uid: 8153 - components: - - pos: 2.5,24.5 - parent: 1 - type: Transform - - uid: 8154 - components: - - pos: 4.5,19.5 - parent: 1 - type: Transform - - uid: 8155 - components: - - pos: -1.5,16.5 - parent: 1 - type: Transform - - uid: 8156 - components: - - pos: 2.5,15.5 - parent: 1 - type: Transform - - uid: 8157 - components: - - pos: -1.5,20.5 - parent: 1 - type: Transform - - uid: 8158 - components: - - pos: -3.5,26.5 - parent: 1 - type: Transform - - uid: 8159 - components: - - pos: -1.5,22.5 - parent: 1 - type: Transform - - uid: 8160 - components: - - pos: 10.5,20.5 - parent: 1 - type: Transform - - uid: 8161 - components: - - pos: 7.5,15.5 - parent: 1 - type: Transform - - uid: 8162 - components: - - pos: 10.5,14.5 - parent: 1 - type: Transform - - uid: 8163 - components: - - pos: 7.5,12.5 - parent: 1 - type: Transform - - uid: 8164 - components: - - pos: 11.5,11.5 - parent: 1 - type: Transform - - uid: 8165 - components: - - pos: 9.5,23.5 - parent: 1 - type: Transform - - uid: 8166 - components: - - pos: 7.5,25.5 - parent: 1 - type: Transform - - uid: 8167 - components: - - pos: 8.5,29.5 - parent: 1 - type: Transform - - uid: 8168 - components: - - pos: 11.5,28.5 - parent: 1 - type: Transform - - uid: 8169 - components: - - pos: 14.5,30.5 - parent: 1 - type: Transform - - uid: 8171 - components: - - pos: 18.5,29.5 - parent: 1 - type: Transform - - uid: 8172 - components: - - pos: -8.5,33.5 - parent: 1 - type: Transform - - uid: 8173 - components: - - pos: -12.5,30.5 - parent: 1 - type: Transform - - uid: 8174 - components: - - pos: -7.5,27.5 - parent: 1 - type: Transform - - uid: 8175 - components: - - pos: -17.5,32.5 - parent: 1 - type: Transform - - uid: 8176 - components: - - pos: -11.5,26.5 - parent: 1 - type: Transform - - uid: 8177 - components: - - pos: -13.5,22.5 - parent: 1 - type: Transform - - uid: 8178 - components: - - pos: -11.5,19.5 - parent: 1 - type: Transform - - uid: 8179 - components: - - pos: -13.5,16.5 - parent: 1 - type: Transform - - uid: 8180 - components: - - pos: -11.5,12.5 - parent: 1 - type: Transform - - uid: 8181 - components: - - pos: -13.5,9.5 - parent: 1 - type: Transform - - uid: 8182 - components: - - pos: -5.5,10.5 - parent: 1 - type: Transform - - uid: 8183 - components: - - pos: -4.5,15.5 - parent: 1 - type: Transform - - uid: 8184 - components: - - pos: -6.5,20.5 - parent: 1 - type: Transform - - uid: 8185 - components: - - pos: -7.5,24.5 - parent: 1 - type: Transform - - uid: 8186 - components: - - pos: 1.5,12.5 - parent: 1 - type: Transform - - uid: 8187 - components: - - pos: 6.5,9.5 - parent: 1 - type: Transform - - uid: 8188 - components: - - pos: 14.5,9.5 - parent: 1 - type: Transform - - uid: 8189 - components: - - pos: 13.5,16.5 - parent: 1 - type: Transform - - uid: 8190 - components: - - pos: 13.5,21.5 - parent: 1 - type: Transform - - uid: 8192 - components: - - pos: 19.5,12.5 - parent: 1 - type: Transform - - uid: 8193 - components: - - pos: 16.5,9.5 - parent: 1 - type: Transform - - uid: 8194 - components: - - pos: 13.5,2.5 - parent: 1 - type: Transform - - uid: 8195 - components: - - pos: 16.5,-1.5 - parent: 1 - type: Transform - - uid: 8196 - components: - - pos: 19.5,1.5 - parent: 1 - type: Transform - - uid: 8197 - components: - - pos: 19.5,-1.5 - parent: 1 - type: Transform - - uid: 8198 - components: - - pos: 7.5,-2.5 - parent: 1 - type: Transform - - uid: 8199 - components: - - pos: 8.5,1.5 - parent: 1 - type: Transform - - uid: 8200 - components: - - pos: 11.5,-0.5 - parent: 1 - type: Transform - - uid: 8201 - components: - - pos: -18.5,-2.5 - parent: 1 - type: Transform - - uid: 8202 - components: - - pos: -15.5,-4.5 - parent: 1 - type: Transform - - uid: 8203 - components: - - pos: -13.5,-2.5 - parent: 1 - type: Transform - - uid: 8204 - components: - - pos: -12.5,-5.5 - parent: 1 - type: Transform - - uid: 8205 - components: - - pos: -11.5,-7.5 - parent: 1 - type: Transform - - uid: 8206 - components: - - pos: -9.5,-1.5 - parent: 1 - type: Transform - - uid: 8207 - components: - - pos: -11.5,2.5 - parent: 1 - type: Transform - - uid: 8208 - components: - - pos: -5.5,-1.5 - parent: 1 - type: Transform - - uid: 8210 - components: - - pos: -4.5,-4.5 - parent: 1 - type: Transform - - uid: 8211 - components: - - pos: -1.5,-1.5 - parent: 1 - type: Transform - - uid: 8213 - components: - - pos: -3.5,1.5 - parent: 1 - type: Transform - - uid: 8216 - components: - - pos: -1.5,-9.5 - parent: 1 - type: Transform - - uid: 8217 - components: - - pos: -4.5,-12.5 - parent: 1 - type: Transform - - uid: 8218 - components: - - pos: -11.5,-11.5 - parent: 1 - type: Transform - - uid: 8219 - components: - - pos: 0.5,-8.5 - parent: 1 - type: Transform - - uid: 8220 - components: - - pos: 4.5,-10.5 - parent: 1 - type: Transform - - uid: 8221 - components: - - pos: 2.5,-15.5 - parent: 1 - type: Transform - - uid: 8222 - components: - - pos: 4.5,0.5 - parent: 1 - type: Transform - - uid: 8223 - components: - - pos: 3.5,-5.5 - parent: 1 - type: Transform - - uid: 8225 - components: - - pos: 16.5,-5.5 - parent: 1 - type: Transform - - uid: 8226 - components: - - pos: 19.5,-4.5 - parent: 1 - type: Transform - - uid: 8227 - components: - - pos: 24.5,-5.5 - parent: 1 - type: Transform - - uid: 8228 - components: - - pos: 27.5,-2.5 - parent: 1 - type: Transform - - uid: 8229 - components: - - pos: 29.5,-1.5 - parent: 1 - type: Transform - - uid: 8230 - components: - - pos: 19.5,-8.5 - parent: 1 - type: Transform - - uid: 8231 - components: - - pos: 24.5,-7.5 - parent: 1 - type: Transform - - uid: 8232 - components: - - pos: 29.5,-8.5 - parent: 1 - type: Transform - - uid: 8233 - components: - - pos: 15.5,-11.5 - parent: 1 - type: Transform - - uid: 8234 - components: - - pos: 13.5,-8.5 - parent: 1 - type: Transform - - uid: 8237 - components: - - pos: -7.5,11.5 - parent: 1 - type: Transform - - uid: 8238 - components: - - pos: -15.5,14.5 - parent: 1 - type: Transform - - uid: 8241 - components: - - pos: -16.5,20.5 - parent: 1 - type: Transform - - uid: 8242 - components: - - pos: -20.5,16.5 - parent: 1 - type: Transform - - uid: 8243 - components: - - pos: -19.5,11.5 - parent: 1 - type: Transform - - uid: 8244 - components: - - pos: -20.5,12.5 - parent: 1 - type: Transform - - uid: 8245 - components: - - pos: -18.5,19.5 - parent: 1 - type: Transform - - uid: 8246 - components: - - pos: -25.5,21.5 - parent: 1 - type: Transform - - uid: 8247 - components: - - pos: -19.5,24.5 - parent: 1 - type: Transform - - uid: 8248 - components: - - pos: -19.5,27.5 - parent: 1 - type: Transform - - uid: 8249 - components: - - pos: -15.5,28.5 - parent: 1 - type: Transform - - uid: 8250 - components: - - pos: -16.5,25.5 - parent: 1 - type: Transform - - uid: 8251 - components: - - pos: -15.5,23.5 - parent: 1 - type: Transform - - uid: 8252 - components: - - pos: 1.5,8.5 - parent: 1 - type: Transform - - uid: 8253 - components: - - pos: -1.5,9.5 - parent: 1 - type: Transform - - uid: 8254 - components: - - pos: -28.5,8.5 - parent: 1 - type: Transform - - uid: 8255 - components: - - pos: -24.5,10.5 - parent: 1 - type: Transform - - uid: 8256 - components: - - pos: -27.5,12.5 - parent: 1 - type: Transform - - uid: 8257 - components: - - pos: -22.5,12.5 - parent: 1 - type: Transform - - uid: 8258 - components: - - pos: -25.5,16.5 - parent: 1 - type: Transform - - uid: 8259 - components: - - pos: -22.5,17.5 - parent: 1 - type: Transform - - uid: 8260 - components: - - pos: -28.5,18.5 - parent: 1 - type: Transform - - uid: 8261 - components: - - pos: -33.5,9.5 - parent: 1 - type: Transform - - uid: 8262 - components: - - pos: -30.5,13.5 - parent: 1 - type: Transform - - uid: 8263 - components: - - pos: -32.5,16.5 - parent: 1 - type: Transform - - uid: 8265 - components: - - pos: -32.5,20.5 - parent: 1 - type: Transform - - uid: 8266 - components: - - pos: -29.5,21.5 - parent: 1 - type: Transform - - uid: 8267 - components: - - pos: -28.5,24.5 - parent: 1 - type: Transform - - uid: 8268 - components: - - pos: -33.5,25.5 - parent: 1 - type: Transform - - uid: 8269 - components: - - pos: -32.5,28.5 - parent: 1 - type: Transform - - uid: 8270 - components: - - pos: -36.5,24.5 - parent: 1 - type: Transform - - uid: 8271 - components: - - pos: -30.5,29.5 - parent: 1 - type: Transform - - uid: 8272 - components: - - pos: -24.5,27.5 - parent: 1 - type: Transform - - uid: 8273 - components: - - pos: -26.5,28.5 - parent: 1 - type: Transform - - uid: 8274 - components: - - pos: -27.5,36.5 - parent: 1 - type: Transform - - uid: 8275 - components: - - pos: -42.5,27.5 - parent: 1 - type: Transform - - uid: 8276 - components: - - pos: -40.5,24.5 - parent: 1 - type: Transform - - uid: 8277 - components: - - pos: -44.5,27.5 - parent: 1 - type: Transform - - uid: 8279 - components: - - pos: -44.5,18.5 - parent: 1 - type: Transform - - uid: 8280 - components: - - pos: -41.5,18.5 - parent: 1 - type: Transform - - uid: 8281 - components: - - pos: -42.5,21.5 - parent: 1 - type: Transform - - uid: 8282 - components: - - pos: -50.5,21.5 - parent: 1 - type: Transform - - uid: 8283 - components: - - pos: -44.5,10.5 - parent: 1 - type: Transform - - uid: 8284 - components: - - pos: -48.5,14.5 - parent: 1 - type: Transform - - uid: 8285 - components: - - pos: -41.5,10.5 - parent: 1 - type: Transform - - uid: 8286 - components: - - pos: -41.5,15.5 - parent: 1 - type: Transform - - uid: 8291 - components: - - pos: -53.5,1.5 - parent: 1 - type: Transform - - uid: 8292 - components: - - pos: -48.5,1.5 - parent: 1 - type: Transform - - uid: 8293 - components: - - pos: -48.5,-3.5 - parent: 1 - type: Transform - - uid: 8294 - components: - - pos: -48.5,-7.5 - parent: 1 - type: Transform - - uid: 8295 - components: - - pos: -51.5,-9.5 - parent: 1 - type: Transform - - uid: 8296 - components: - - pos: -48.5,-10.5 - parent: 1 - type: Transform - - uid: 8297 - components: - - pos: -56.5,9.5 - parent: 1 - type: Transform - - uid: 8298 - components: - - pos: -57.5,14.5 - parent: 1 - type: Transform - - uid: 8299 - components: - - pos: -57.5,19.5 - parent: 1 - type: Transform - - uid: 8300 - components: - - pos: -56.5,24.5 - parent: 1 - type: Transform - - uid: 8301 - components: - - pos: -58.5,26.5 - parent: 1 - type: Transform - - uid: 8302 - components: - - pos: -57.5,30.5 - parent: 1 - type: Transform - - uid: 8303 - components: - - pos: -54.5,32.5 - parent: 1 - type: Transform - - uid: 8304 - components: - - pos: -49.5,32.5 - parent: 1 - type: Transform - - uid: 8305 - components: - - pos: -45.5,32.5 - parent: 1 - type: Transform - - uid: 8306 - components: - - pos: -41.5,31.5 - parent: 1 - type: Transform - - uid: 8307 - components: - - pos: -41.5,33.5 - parent: 1 - type: Transform - - uid: 8308 - components: - - pos: -48.5,35.5 - parent: 1 - type: Transform - - uid: 8309 - components: - - pos: -46.5,40.5 - parent: 1 - type: Transform - - uid: 8310 - components: - - pos: -47.5,44.5 - parent: 1 - type: Transform - - uid: 8311 - components: - - pos: -49.5,46.5 - parent: 1 - type: Transform - - uid: 8312 - components: - - pos: -46.5,51.5 - parent: 1 - type: Transform - - uid: 8313 - components: - - pos: -54.5,47.5 - parent: 1 - type: Transform - - uid: 8315 - components: - - pos: -57.5,44.5 - parent: 1 - type: Transform - - uid: 8316 - components: - - pos: -57.5,40.5 - parent: 1 - type: Transform - - uid: 8317 - components: - - pos: -56.5,39.5 - parent: 1 - type: Transform - - uid: 8318 - components: - - pos: -58.5,36.5 - parent: 1 - type: Transform - - uid: 8319 - components: - - pos: -52.5,43.5 - parent: 1 - type: Transform - - uid: 8320 - components: - - pos: -44.5,51.5 - parent: 1 - type: Transform - - uid: 8321 - components: - - pos: -40.5,55.5 - parent: 1 - type: Transform - - uid: 8322 - components: - - pos: -35.5,55.5 - parent: 1 - type: Transform - - uid: 8323 - components: - - pos: -32.5,52.5 - parent: 1 - type: Transform - - uid: 8327 - components: - - pos: -27.5,50.5 - parent: 1 - type: Transform - - uid: 8328 - components: - - pos: -28.5,54.5 - parent: 1 - type: Transform - - uid: 8329 - components: - - pos: -20.5,51.5 - parent: 1 - type: Transform - - uid: 8330 - components: - - pos: -25.5,47.5 - parent: 1 - type: Transform - - uid: 8331 - components: - - pos: -25.5,39.5 - parent: 1 - type: Transform - - uid: 8332 - components: - - pos: -24.5,42.5 - parent: 1 - type: Transform - - uid: 8333 - components: - - pos: -24.5,36.5 - parent: 1 - type: Transform - - uid: 8334 - components: - - pos: -22.5,39.5 - parent: 1 - type: Transform - - uid: 8335 - components: - - pos: -20.5,41.5 - parent: 1 - type: Transform - - uid: 8336 - components: - - pos: -21.5,44.5 - parent: 1 - type: Transform - - uid: 8337 - components: - - pos: -20.5,48.5 - parent: 1 - type: Transform - - uid: 8338 - components: - - pos: -21.5,31.5 - parent: 1 - type: Transform - - uid: 8339 - components: - - pos: -25.5,32.5 - parent: 1 - type: Transform - - uid: 8340 - components: - - pos: -20.5,35.5 - parent: 1 - type: Transform - - uid: 8341 - components: - - pos: -31.5,33.5 - parent: 1 - type: Transform - - uid: 8342 - components: - - pos: -34.5,31.5 - parent: 1 - type: Transform - - uid: 8343 - components: - - pos: -51.5,24.5 - parent: 1 - type: Transform - - uid: 8344 - components: - - pos: -49.5,27.5 - parent: 1 - type: Transform - - uid: 8345 - components: - - pos: -53.5,28.5 - parent: 1 - type: Transform - - uid: 8346 - components: - - pos: -33.5,-3.5 - parent: 1 - type: Transform - - uid: 9000 - components: - - pos: -32.5,-6.5 - parent: 1 - type: Transform - - uid: 9105 - components: - - pos: -57.5,84.5 - parent: 1 - type: Transform - - uid: 9106 - components: - - pos: -60.5,84.5 - parent: 1 - type: Transform - - uid: 9107 - components: - - pos: -59.5,87.5 - parent: 1 - type: Transform - - uid: 9108 - components: - - pos: -57.5,88.5 - parent: 1 - type: Transform - - uid: 9109 - components: - - pos: -54.5,89.5 - parent: 1 - type: Transform - - uid: 9110 - components: - - pos: -55.5,82.5 - parent: 1 - type: Transform - - uid: 9111 - components: - - pos: -55.5,86.5 - parent: 1 - type: Transform - - uid: 9112 - components: - - pos: -51.5,89.5 - parent: 1 - type: Transform - - uid: 9113 - components: - - pos: -52.5,85.5 - parent: 1 - type: Transform - - uid: 9114 - components: - - pos: -50.5,82.5 - parent: 1 - type: Transform - - uid: 9115 - components: - - pos: -54.5,79.5 - parent: 1 - type: Transform - - uid: 9116 - components: - - pos: -50.5,80.5 - parent: 1 - type: Transform - - uid: 9117 - components: - - pos: -52.5,76.5 - parent: 1 - type: Transform - - uid: 9118 - components: - - pos: -50.5,73.5 - parent: 1 - type: Transform - - uid: 9119 - components: - - pos: -52.5,72.5 - parent: 1 - type: Transform - - uid: 9120 - components: - - pos: -51.5,68.5 - parent: 1 - type: Transform - - uid: 9121 - components: - - pos: -47.5,67.5 - parent: 1 - type: Transform - - uid: 9122 - components: - - pos: -52.5,64.5 - parent: 1 - type: Transform - - uid: 9123 - components: - - pos: -50.5,60.5 - parent: 1 - type: Transform - - uid: 9125 - components: - - pos: -59.5,61.5 - parent: 1 - type: Transform - - uid: 9126 - components: - - pos: -61.5,65.5 - parent: 1 - type: Transform - - uid: 9127 - components: - - pos: -55.5,65.5 - parent: 1 - type: Transform - - uid: 9128 - components: - - pos: -54.5,63.5 - parent: 1 - type: Transform - - uid: 9130 - components: - - pos: -43.5,62.5 - parent: 1 - type: Transform - - uid: 9131 - components: - - pos: -42.5,64.5 - parent: 1 - type: Transform - - uid: 9132 - components: - - pos: -46.5,58.5 - parent: 1 - type: Transform - - uid: 9133 - components: - - pos: -48.5,61.5 - parent: 1 - type: Transform - - uid: 9134 - components: - - pos: -50.5,58.5 - parent: 1 - type: Transform - - uid: 9135 - components: - - pos: -55.5,55.5 - parent: 1 - type: Transform - - uid: 9136 - components: - - pos: -51.5,54.5 - parent: 1 - type: Transform - - uid: 9137 - components: - - pos: -59.5,55.5 - parent: 1 - type: Transform - - uid: 9138 - components: - - pos: -62.5,53.5 - parent: 1 - type: Transform - - uid: 9139 - components: - - pos: -59.5,51.5 - parent: 1 - type: Transform - - uid: 9140 - components: - - pos: -65.5,54.5 - parent: 1 - type: Transform - - uid: 9141 - components: - - pos: -50.5,50.5 - parent: 1 - type: Transform - - uid: 9142 - components: - - pos: -54.5,52.5 - parent: 1 - type: Transform - - uid: 9143 - components: - - pos: -53.5,49.5 - parent: 1 - type: Transform - - uid: 9144 - components: - - pos: -56.5,50.5 - parent: 1 - type: Transform - - uid: 9145 - components: - - pos: -46.5,54.5 - parent: 1 - type: Transform - - uid: 9282 - components: - - pos: 20.5,30.5 - parent: 1 - type: Transform - - uid: 14370 - components: - - pos: -72.5,54.5 - parent: 1 - type: Transform - - uid: 14371 - components: - - pos: -69.5,55.5 - parent: 1 - type: Transform - - uid: 14372 - components: - - pos: -70.5,51.5 - parent: 1 - type: Transform - - uid: 14373 - components: - - pos: -75.5,52.5 - parent: 1 - type: Transform - - uid: 14374 - components: - - pos: -75.5,47.5 - parent: 1 - type: Transform - - uid: 14375 - components: - - pos: -74.5,44.5 - parent: 1 - type: Transform - - uid: 14376 - components: - - pos: -74.5,39.5 - parent: 1 - type: Transform - - uid: 14377 - components: - - pos: -75.5,38.5 - parent: 1 - type: Transform - - uid: 14378 - components: - - pos: -69.5,41.5 - parent: 1 - type: Transform - - uid: 14379 - components: - - pos: -71.5,40.5 - parent: 1 - type: Transform - - uid: 14380 - components: - - pos: -71.5,44.5 - parent: 1 - type: Transform - - uid: 14381 - components: - - pos: -66.5,46.5 - parent: 1 - type: Transform - - uid: 14382 - components: - - pos: -62.5,47.5 - parent: 1 - type: Transform - - uid: 14383 - components: - - pos: -67.5,50.5 - parent: 1 - type: Transform - - uid: 14384 - components: - - pos: -67.5,55.5 - parent: 1 - type: Transform - - uid: 14385 - components: - - pos: -67.5,41.5 - parent: 1 - type: Transform - - uid: 14386 - components: - - pos: -66.5,38.5 - parent: 1 - type: Transform - - uid: 14387 - components: - - pos: -68.5,37.5 - parent: 1 - type: Transform - - uid: 14388 - components: - - pos: -62.5,36.5 - parent: 1 - type: Transform - - uid: 14389 - components: - - pos: -60.5,38.5 - parent: 1 - type: Transform - - uid: 14390 - components: - - pos: -63.5,40.5 - parent: 1 - type: Transform - - uid: 14391 - components: - - pos: -61.5,44.5 - parent: 1 - type: Transform - - uid: 14392 - components: - - pos: -63.5,44.5 - parent: 1 - type: Transform - - uid: 14394 - components: - - pos: -80.5,30.5 - parent: 1 - type: Transform - - uid: 14395 - components: - - pos: -77.5,32.5 - parent: 1 - type: Transform - - uid: 14396 - components: - - pos: -80.5,33.5 - parent: 1 - type: Transform - - uid: 14403 - components: - - pos: -74.5,35.5 - parent: 1 - type: Transform - - uid: 14404 - components: - - pos: -71.5,34.5 - parent: 1 - type: Transform - - uid: 14405 - components: - - pos: -66.5,33.5 - parent: 1 - type: Transform - - uid: 14406 - components: - - pos: -64.5,34.5 - parent: 1 - type: Transform - - uid: 14407 - components: - - pos: -64.5,27.5 - parent: 1 - type: Transform - - uid: 14408 - components: - - pos: -66.5,29.5 - parent: 1 - type: Transform - - uid: 14410 - components: - - pos: -70.5,29.5 - parent: 1 - type: Transform - - uid: 14411 - components: - - pos: -73.5,31.5 - parent: 1 - type: Transform - - uid: 14412 - components: - - pos: -74.5,26.5 - parent: 1 - type: Transform - - uid: 14413 - components: - - pos: -73.5,22.5 - parent: 1 - type: Transform - - uid: 14414 - components: - - pos: -74.5,19.5 - parent: 1 - type: Transform - - uid: 14415 - components: - - pos: -70.5,19.5 - parent: 1 - type: Transform - - uid: 14416 - components: - - pos: -67.5,23.5 - parent: 1 - type: Transform - - uid: 14417 - components: - - pos: -67.5,20.5 - parent: 1 - type: Transform - - uid: 14418 - components: - - pos: -64.5,21.5 - parent: 1 - type: Transform - - uid: 14419 - components: - - pos: -79.5,22.5 - parent: 1 - type: Transform - - uid: 14423 - components: - - pos: -80.5,19.5 - parent: 1 - type: Transform - - uid: 14424 - components: - - pos: -77.5,20.5 - parent: 1 - type: Transform - - uid: 14950 - components: - - pos: -70.5,25.5 - parent: 1 - type: Transform - - uid: 14967 - components: - - pos: 15.5,26.5 - parent: 1 - type: Transform - - uid: 15021 - components: - - pos: 11.5,-5.5 - parent: 1 - type: Transform - - uid: 15067 - components: - - pos: -44.5,21.5 - parent: 1 - type: Transform - - uid: 15075 - components: - - pos: -16.5,8.5 - parent: 1 - type: Transform - - uid: 15782 - components: - - pos: -44.5,-10.5 - parent: 1 - type: Transform - - uid: 15791 - components: - - pos: -47.5,64.5 - parent: 1 - type: Transform - - uid: 15846 - components: - - pos: 21.5,41.5 - parent: 1 - type: Transform - - uid: 15912 - components: - - pos: 16.5,34.5 - parent: 1 - type: Transform - - uid: 15916 - components: - - pos: 14.5,38.5 - parent: 1 - type: Transform -- proto: RCD - entities: - - uid: 13615 - components: - - pos: -73.40199,15.605122 - parent: 1 - type: Transform -- proto: RCDAmmo - entities: - - uid: 13616 - components: - - pos: -73.65199,15.448872 - parent: 1 - type: Transform - - uid: 13617 - components: - - pos: -73.54262,15.464497 - parent: 1 - type: Transform - - uid: 13618 - components: - - pos: -73.37074,15.464497 - parent: 1 - type: Transform -- proto: ReagentContainerFlour - entities: - - uid: 6954 - components: - - pos: -36.304527,44.574997 - parent: 1 - type: Transform - - uid: 6955 - components: - - pos: -33.757652,44.762497 - parent: 1 - type: Transform -- proto: ReagentContainerMilk - entities: - - uid: 5276 - components: - - pos: -52.395008,21.71115 - parent: 1 - type: Transform -- proto: ReagentContainerSugar - entities: - - uid: 6956 - components: - - pos: -35.288902,45.293747 - parent: 1 - type: Transform -- proto: Recycler - entities: - - uid: 14224 - components: - - rot: 3.141592653589793 rad - pos: -73.5,55.5 - parent: 1 - type: Transform - - links: - - 14233 - type: DeviceLinkSink -- proto: ReinforcedGirder - entities: - - uid: 128 - components: - - pos: -10.5,-13.5 - parent: 1 - type: Transform - - uid: 199 - components: - - pos: 2.5,-16.5 - parent: 1 - type: Transform - - uid: 208 - components: - - pos: 6.5,-7.5 - parent: 1 - type: Transform - - uid: 413 - components: - - pos: -10.5,-8.5 - parent: 1 - type: Transform - - uid: 3493 - components: - - pos: -30.5,51.5 - parent: 1 - type: Transform - - uid: 5533 - components: - - pos: -45.5,60.5 - parent: 1 - type: Transform -- proto: ReinforcedPlasmaWindow - entities: - - uid: 10827 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,35.5 - parent: 1 - type: Transform - - uid: 10828 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,37.5 - parent: 1 - type: Transform - - uid: 10829 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,39.5 - parent: 1 - type: Transform - - uid: 10830 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,41.5 - parent: 1 - type: Transform - - uid: 10831 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,43.5 - parent: 1 - type: Transform - - uid: 10832 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,45.5 - parent: 1 - type: Transform - - uid: 14832 - components: - - pos: 9.5,-15.5 - parent: 1 - type: Transform - - uid: 14834 - components: - - pos: 10.5,-15.5 - parent: 1 - type: Transform - - uid: 15009 - components: - - pos: 12.5,-13.5 - parent: 1 - type: Transform -- proto: ReinforcedWindow - entities: - - uid: 16 - components: - - pos: -3.5,-0.5 - parent: 1 - type: Transform - - uid: 119 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,-15.5 - parent: 1 - type: Transform - - uid: 121 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,-15.5 - parent: 1 - type: Transform - - uid: 122 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-15.5 - parent: 1 - type: Transform - - uid: 194 - components: - - pos: 2.5,-12.5 - parent: 1 - type: Transform - - uid: 195 - components: - - pos: 0.5,-12.5 - parent: 1 - type: Transform - - uid: 708 - components: - - pos: 30.5,3.5 - parent: 1 - type: Transform - - uid: 709 - components: - - pos: 30.5,2.5 - parent: 1 - type: Transform - - uid: 710 - components: - - pos: 30.5,1.5 - parent: 1 - type: Transform - - uid: 944 - components: - - rot: 3.141592653589793 rad - pos: 29.5,5.5 - parent: 1 - type: Transform - - uid: 945 - components: - - rot: 3.141592653589793 rad - pos: 29.5,6.5 - parent: 1 - type: Transform - - uid: 965 - components: - - rot: -1.5707963267948966 rad - pos: 31.5,17.5 - parent: 1 - type: Transform - - uid: 966 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,17.5 - parent: 1 - type: Transform - - uid: 972 - components: - - rot: 3.141592653589793 rad - pos: 29.5,12.5 - parent: 1 - type: Transform - - uid: 973 - components: - - rot: 3.141592653589793 rad - pos: 29.5,13.5 - parent: 1 - type: Transform - - uid: 974 - components: - - rot: 3.141592653589793 rad - pos: 29.5,14.5 - parent: 1 - type: Transform - - uid: 980 - components: - - rot: 3.141592653589793 rad - pos: 29.5,21.5 - parent: 1 - type: Transform - - uid: 981 - components: - - rot: 3.141592653589793 rad - pos: 29.5,20.5 - parent: 1 - type: Transform - - uid: 1263 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,24.5 - parent: 1 - type: Transform - - uid: 1270 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,28.5 - parent: 1 - type: Transform - - uid: 1271 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,28.5 - parent: 1 - type: Transform - - uid: 1272 - components: - - rot: 1.5707963267948966 rad - pos: -2.5,28.5 - parent: 1 - type: Transform - - uid: 1886 - components: - - pos: 13.5,29.5 - parent: 1 - type: Transform - - uid: 2665 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,-14.5 - parent: 1 - type: Transform - - uid: 2819 - components: - - pos: -14.5,23.5 - parent: 1 - type: Transform - - uid: 2821 - components: - - pos: -14.5,24.5 - parent: 1 - type: Transform - - uid: 2824 - components: - - pos: -14.5,28.5 - parent: 1 - type: Transform - - uid: 2825 - components: - - pos: -17.5,30.5 - parent: 1 - type: Transform - - uid: 2826 - components: - - pos: -14.5,29.5 - parent: 1 - type: Transform - - uid: 2830 - components: - - pos: -16.5,30.5 - parent: 1 - type: Transform - - uid: 2989 - components: - - pos: -44.5,65.5 - parent: 1 - type: Transform - - uid: 3358 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-12.5 - parent: 1 - type: Transform - - uid: 3455 - components: - - pos: -20.5,36.5 - parent: 1 - type: Transform - - uid: 3524 - components: - - pos: -49.5,-14.5 - parent: 1 - type: Transform - - uid: 3564 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,-14.5 - parent: 1 - type: Transform - - uid: 3567 - components: - - rot: -1.5707963267948966 rad - pos: -40.5,-14.5 - parent: 1 - type: Transform - - uid: 3634 - components: - - pos: -47.5,-11.5 - parent: 1 - type: Transform - - uid: 3675 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-13.5 - parent: 1 - type: Transform - - uid: 3697 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,-14.5 - parent: 1 - type: Transform - - uid: 3714 - components: - - pos: -42.5,-14.5 - parent: 1 - type: Transform - - uid: 4308 - components: - - pos: -48.5,23.5 - parent: 1 - type: Transform - - uid: 4309 - components: - - pos: -46.5,23.5 - parent: 1 - type: Transform - - uid: 4310 - components: - - pos: -46.5,24.5 - parent: 1 - type: Transform - - uid: 4311 - components: - - pos: -46.5,25.5 - parent: 1 - type: Transform - - uid: 4326 - components: - - pos: -48.5,25.5 - parent: 1 - type: Transform - - uid: 4532 - components: - - pos: -49.5,-11.5 - parent: 1 - type: Transform - - uid: 4540 - components: - - pos: -61.5,-8.5 - parent: 1 - type: Transform - - uid: 4541 - components: - - pos: -60.5,-8.5 - parent: 1 - type: Transform - - uid: 4576 - components: - - pos: -48.5,24.5 - parent: 1 - type: Transform - - uid: 4578 - components: - - pos: 22.5,36.5 - parent: 1 - type: Transform - - uid: 4592 - components: - - pos: 16.5,42.5 - parent: 1 - type: Transform - - uid: 4597 - components: - - pos: 23.5,36.5 - parent: 1 - type: Transform - - uid: 4598 - components: - - pos: 16.5,43.5 - parent: 1 - type: Transform - - uid: 4817 - components: - - pos: -59.5,-6.5 - parent: 1 - type: Transform - - uid: 4818 - components: - - pos: -59.5,-5.5 - parent: 1 - type: Transform - - uid: 4819 - components: - - pos: -59.5,-4.5 - parent: 1 - type: Transform - - uid: 4820 - components: - - pos: -59.5,-3.5 - parent: 1 - type: Transform - - uid: 4821 - components: - - pos: -59.5,-2.5 - parent: 1 - type: Transform - - uid: 4822 - components: - - pos: -59.5,-1.5 - parent: 1 - type: Transform - - uid: 4823 - components: - - pos: -59.5,-0.5 - parent: 1 - type: Transform - - uid: 4824 - components: - - pos: -59.5,0.5 - parent: 1 - type: Transform - - uid: 4825 - components: - - pos: -59.5,1.5 - parent: 1 - type: Transform - - uid: 4826 - components: - - pos: -59.5,2.5 - parent: 1 - type: Transform - - uid: 4837 - components: - - pos: -60.5,3.5 - parent: 1 - type: Transform - - uid: 4838 - components: - - pos: -61.5,3.5 - parent: 1 - type: Transform - - uid: 4839 - components: - - pos: -62.5,3.5 - parent: 1 - type: Transform - - uid: 4840 - components: - - pos: -63.5,3.5 - parent: 1 - type: Transform - - uid: 4841 - components: - - pos: -64.5,3.5 - parent: 1 - type: Transform - - uid: 4845 - components: - - pos: -68.5,3.5 - parent: 1 - type: Transform - - uid: 4846 - components: - - pos: -69.5,3.5 - parent: 1 - type: Transform - - uid: 4847 - components: - - pos: -70.5,3.5 - parent: 1 - type: Transform - - uid: 4848 - components: - - pos: -71.5,3.5 - parent: 1 - type: Transform - - uid: 4852 - components: - - pos: -75.5,3.5 - parent: 1 - type: Transform - - uid: 4863 - components: - - pos: -59.5,-7.5 - parent: 1 - type: Transform - - uid: 4882 - components: - - pos: -65.5,-13.5 - parent: 1 - type: Transform - - uid: 4891 - components: - - pos: -68.5,-8.5 - parent: 1 - type: Transform - - uid: 4892 - components: - - pos: -69.5,-8.5 - parent: 1 - type: Transform - - uid: 4893 - components: - - pos: -71.5,-8.5 - parent: 1 - type: Transform - - uid: 4903 - components: - - pos: -62.5,-8.5 - parent: 1 - type: Transform - - uid: 4911 - components: - - pos: -70.5,-8.5 - parent: 1 - type: Transform - - uid: 4922 - components: - - rot: 3.141592653589793 rad - pos: -70.5,-12.5 - parent: 1 - type: Transform - - uid: 4923 - components: - - rot: 3.141592653589793 rad - pos: -69.5,-12.5 - parent: 1 - type: Transform - - uid: 4930 - components: - - rot: 3.141592653589793 rad - pos: -60.5,-12.5 - parent: 1 - type: Transform - - uid: 4935 - components: - - rot: 3.141592653589793 rad - pos: -61.5,-12.5 - parent: 1 - type: Transform - - uid: 4937 - components: - - rot: 3.141592653589793 rad - pos: -58.5,-12.5 - parent: 1 - type: Transform - - uid: 4938 - components: - - pos: -65.5,-14.5 - parent: 1 - type: Transform - - uid: 4943 - components: - - rot: 3.141592653589793 rad - pos: -57.5,-12.5 - parent: 1 - type: Transform - - uid: 4946 - components: - - rot: 3.141592653589793 rad - pos: -62.5,-12.5 - parent: 1 - type: Transform - - uid: 4947 - components: - - pos: -75.5,-8.5 - parent: 1 - type: Transform - - uid: 4961 - components: - - pos: -63.5,-8.5 - parent: 1 - type: Transform - - uid: 4966 - components: - - pos: -64.5,-8.5 - parent: 1 - type: Transform - - uid: 4968 - components: - - rot: 3.141592653589793 rad - pos: -68.5,-12.5 - parent: 1 - type: Transform - - uid: 4978 - components: - - pos: -73.5,-14.5 - parent: 1 - type: Transform - - uid: 4982 - components: - - pos: -73.5,-13.5 - parent: 1 - type: Transform - - uid: 5069 - components: - - pos: -76.5,4.5 - parent: 1 - type: Transform - - uid: 5070 - components: - - pos: -76.5,5.5 - parent: 1 - type: Transform - - uid: 5071 - components: - - pos: -76.5,6.5 - parent: 1 - type: Transform - - uid: 5172 - components: - - pos: -75.5,7.5 - parent: 1 - type: Transform - - uid: 5174 - components: - - pos: -74.5,7.5 - parent: 1 - type: Transform - - uid: 5760 - components: - - pos: -50.5,48.5 - parent: 1 - type: Transform - - uid: 5763 - components: - - pos: -51.5,48.5 - parent: 1 - type: Transform - - uid: 5766 - components: - - pos: -53.5,48.5 - parent: 1 - type: Transform - - uid: 5768 - components: - - pos: -54.5,48.5 - parent: 1 - type: Transform - - uid: 5770 - components: - - pos: -56.5,48.5 - parent: 1 - type: Transform - - uid: 5820 - components: - - pos: -14.5,46.5 - parent: 1 - type: Transform - - uid: 5822 - components: - - pos: -18.5,46.5 - parent: 1 - type: Transform - - uid: 5827 - components: - - pos: -21.5,36.5 - parent: 1 - type: Transform - - uid: 5831 - components: - - pos: -18.5,47.5 - parent: 1 - type: Transform - - uid: 5832 - components: - - pos: -18.5,48.5 - parent: 1 - type: Transform - - uid: 5833 - components: - - pos: -22.5,36.5 - parent: 1 - type: Transform - - uid: 5900 - components: - - pos: -14.5,49.5 - parent: 1 - type: Transform - - uid: 5939 - components: - - pos: -2.5,49.5 - parent: 1 - type: Transform - - uid: 5949 - components: - - pos: -2.5,50.5 - parent: 1 - type: Transform - - uid: 5950 - components: - - pos: -2.5,51.5 - parent: 1 - type: Transform - - uid: 5951 - components: - - pos: -2.5,52.5 - parent: 1 - type: Transform - - uid: 5952 - components: - - pos: -2.5,53.5 - parent: 1 - type: Transform - - uid: 5960 - components: - - pos: -1.5,54.5 - parent: 1 - type: Transform - - uid: 5961 - components: - - pos: -0.5,54.5 - parent: 1 - type: Transform - - uid: 5962 - components: - - pos: 0.5,54.5 - parent: 1 - type: Transform - - uid: 6016 - components: - - pos: 16.5,53.5 - parent: 1 - type: Transform - - uid: 6017 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,51.5 - parent: 1 - type: Transform - - uid: 6018 - components: - - pos: 13.5,53.5 - parent: 1 - type: Transform - - uid: 6019 - components: - - pos: 14.5,53.5 - parent: 1 - type: Transform - - uid: 6020 - components: - - pos: 15.5,53.5 - parent: 1 - type: Transform - - uid: 6023 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,53.5 - parent: 1 - type: Transform - - uid: 6024 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,50.5 - parent: 1 - type: Transform - - uid: 6040 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,53.5 - parent: 1 - type: Transform - - uid: 6041 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,53.5 - parent: 1 - type: Transform - - uid: 6042 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,52.5 - parent: 1 - type: Transform - - uid: 6351 - components: - - rot: 3.141592653589793 rad - pos: -13.5,53.5 - parent: 1 - type: Transform - - uid: 6353 - components: - - rot: 3.141592653589793 rad - pos: -13.5,56.5 - parent: 1 - type: Transform - - uid: 6354 - components: - - rot: 3.141592653589793 rad - pos: -13.5,54.5 - parent: 1 - type: Transform - - uid: 6357 - components: - - rot: 3.141592653589793 rad - pos: -13.5,57.5 - parent: 1 - type: Transform - - uid: 6388 - components: - - rot: 3.141592653589793 rad - pos: -16.5,58.5 - parent: 1 - type: Transform - - uid: 6400 - components: - - pos: -4.5,60.5 - parent: 1 - type: Transform - - uid: 6401 - components: - - pos: -4.5,61.5 - parent: 1 - type: Transform - - uid: 6403 - components: - - pos: -5.5,62.5 - parent: 1 - type: Transform - - uid: 6404 - components: - - pos: -6.5,62.5 - parent: 1 - type: Transform - - uid: 6405 - components: - - pos: -7.5,62.5 - parent: 1 - type: Transform - - uid: 6406 - components: - - pos: -8.5,62.5 - parent: 1 - type: Transform - - uid: 6407 - components: - - pos: -9.5,62.5 - parent: 1 - type: Transform - - uid: 6435 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,64.5 - parent: 1 - type: Transform - - uid: 6436 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,65.5 - parent: 1 - type: Transform - - uid: 6437 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,65.5 - parent: 1 - type: Transform - - uid: 6438 - components: - - rot: -1.5707963267948966 rad - pos: -12.5,66.5 - parent: 1 - type: Transform - - uid: 6439 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,66.5 - parent: 1 - type: Transform - - uid: 6440 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,67.5 - parent: 1 - type: Transform - - uid: 6441 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,67.5 - parent: 1 - type: Transform - - uid: 6442 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,67.5 - parent: 1 - type: Transform - - uid: 6443 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,67.5 - parent: 1 - type: Transform - - uid: 6444 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,67.5 - parent: 1 - type: Transform - - uid: 6445 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,67.5 - parent: 1 - type: Transform - - uid: 6446 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,67.5 - parent: 1 - type: Transform - - uid: 6447 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,66.5 - parent: 1 - type: Transform - - uid: 6448 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,66.5 - parent: 1 - type: Transform - - uid: 6449 - components: - - rot: -1.5707963267948966 rad - pos: -20.5,65.5 - parent: 1 - type: Transform - - uid: 6450 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,65.5 - parent: 1 - type: Transform - - uid: 6451 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,64.5 - parent: 1 - type: Transform - - uid: 6454 - components: - - pos: -22.5,62.5 - parent: 1 - type: Transform - - uid: 6455 - components: - - pos: -22.5,61.5 - parent: 1 - type: Transform - - uid: 6456 - components: - - pos: -22.5,60.5 - parent: 1 - type: Transform - - uid: 6970 - components: - - pos: -56.5,59.5 - parent: 1 - type: Transform - - uid: 6971 - components: - - pos: -55.5,59.5 - parent: 1 - type: Transform - - uid: 6972 - components: - - pos: -54.5,59.5 - parent: 1 - type: Transform - - uid: 6982 - components: - - pos: -48.5,56.5 - parent: 1 - type: Transform - - uid: 6983 - components: - - pos: -46.5,56.5 - parent: 1 - type: Transform - - uid: 6986 - components: - - pos: -50.5,52.5 - parent: 1 - type: Transform - - uid: 6987 - components: - - pos: -53.5,52.5 - parent: 1 - type: Transform - - uid: 6988 - components: - - pos: -56.5,52.5 - parent: 1 - type: Transform - - uid: 7012 - components: - - pos: -46.5,63.5 - parent: 1 - type: Transform - - uid: 7013 - components: - - pos: -48.5,63.5 - parent: 1 - type: Transform - - uid: 7148 - components: - - pos: -53.5,63.5 - parent: 1 - type: Transform - - uid: 7149 - components: - - pos: -53.5,64.5 - parent: 1 - type: Transform - - uid: 7150 - components: - - pos: -53.5,65.5 - parent: 1 - type: Transform - - uid: 7154 - components: - - pos: -61.5,66.5 - parent: 1 - type: Transform - - uid: 7155 - components: - - pos: -60.5,66.5 - parent: 1 - type: Transform - - uid: 7156 - components: - - pos: -59.5,66.5 - parent: 1 - type: Transform - - uid: 7163 - components: - - pos: -58.5,62.5 - parent: 1 - type: Transform - - uid: 7164 - components: - - pos: -58.5,66.5 - parent: 1 - type: Transform - - uid: 7170 - components: - - pos: -56.5,66.5 - parent: 1 - type: Transform - - uid: 7171 - components: - - pos: -55.5,66.5 - parent: 1 - type: Transform - - uid: 7172 - components: - - pos: -54.5,66.5 - parent: 1 - type: Transform - - uid: 7177 - components: - - pos: -56.5,62.5 - parent: 1 - type: Transform - - uid: 7178 - components: - - pos: -54.5,62.5 - parent: 1 - type: Transform - - uid: 7237 - components: - - pos: -58.5,54.5 - parent: 1 - type: Transform - - uid: 7239 - components: - - pos: -49.5,54.5 - parent: 1 - type: Transform - - uid: 7249 - components: - - pos: -49.5,88.5 - parent: 1 - type: Transform - - uid: 7250 - components: - - pos: -49.5,87.5 - parent: 1 - type: Transform - - uid: 7251 - components: - - pos: -49.5,86.5 - parent: 1 - type: Transform - - uid: 7252 - components: - - pos: -49.5,85.5 - parent: 1 - type: Transform - - uid: 7253 - components: - - pos: -49.5,84.5 - parent: 1 - type: Transform - - uid: 7254 - components: - - pos: -49.5,83.5 - parent: 1 - type: Transform - - uid: 7262 - components: - - pos: -51.5,91.5 - parent: 1 - type: Transform - - uid: 7295 - components: - - pos: -62.5,88.5 - parent: 1 - type: Transform - - uid: 7305 - components: - - pos: -60.5,90.5 - parent: 1 - type: Transform - - uid: 7310 - components: - - pos: -58.5,90.5 - parent: 1 - type: Transform - - uid: 7315 - components: - - pos: -60.5,82.5 - parent: 1 - type: Transform - - uid: 7316 - components: - - pos: -63.5,85.5 - parent: 1 - type: Transform - - uid: 7321 - components: - - pos: -59.5,90.5 - parent: 1 - type: Transform - - uid: 7727 - components: - - pos: -58.5,82.5 - parent: 1 - type: Transform - - uid: 7734 - components: - - pos: -63.5,84.5 - parent: 1 - type: Transform - - uid: 7735 - components: - - pos: -63.5,83.5 - parent: 1 - type: Transform - - uid: 7736 - components: - - pos: -61.5,82.5 - parent: 1 - type: Transform - - uid: 7737 - components: - - pos: -59.5,82.5 - parent: 1 - type: Transform - - uid: 7861 - components: - - pos: -47.5,52.5 - parent: 1 - type: Transform - - uid: 8423 - components: - - pos: -57.5,48.5 - parent: 1 - type: Transform - - uid: 9033 - components: - - pos: -36.5,63.5 - parent: 1 - type: Transform - - uid: 9034 - components: - - pos: -36.5,66.5 - parent: 1 - type: Transform - - uid: 9035 - components: - - pos: -36.5,64.5 - parent: 1 - type: Transform - - uid: 9036 - components: - - pos: -36.5,65.5 - parent: 1 - type: Transform - - uid: 9037 - components: - - pos: -36.5,62.5 - parent: 1 - type: Transform - - uid: 9039 - components: - - pos: -36.5,68.5 - parent: 1 - type: Transform - - uid: 9040 - components: - - pos: -36.5,69.5 - parent: 1 - type: Transform - - uid: 9041 - components: - - pos: -37.5,69.5 - parent: 1 - type: Transform - - uid: 9042 - components: - - pos: -36.5,61.5 - parent: 1 - type: Transform - - uid: 9043 - components: - - pos: -38.5,69.5 - parent: 1 - type: Transform - - uid: 9044 - components: - - pos: -39.5,69.5 - parent: 1 - type: Transform - - uid: 9045 - components: - - pos: -36.5,67.5 - parent: 1 - type: Transform - - uid: 9046 - components: - - pos: -36.5,60.5 - parent: 1 - type: Transform - - uid: 9047 - components: - - pos: -36.5,59.5 - parent: 1 - type: Transform - - uid: 9190 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,57.5 - parent: 1 - type: Transform - - uid: 9281 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,32.5 - parent: 1 - type: Transform - - uid: 9302 - components: - - pos: -65.5,24.5 - parent: 1 - type: Transform - - uid: 9303 - components: - - pos: -64.5,24.5 - parent: 1 - type: Transform - - uid: 9306 - components: - - pos: -66.5,24.5 - parent: 1 - type: Transform - - uid: 9315 - components: - - rot: 1.5707963267948966 rad - pos: -63.5,29.5 - parent: 1 - type: Transform - - uid: 9342 - components: - - pos: -73.5,18.5 - parent: 1 - type: Transform - - uid: 9466 - components: - - pos: -72.5,22.5 - parent: 1 - type: Transform - - uid: 9619 - components: - - pos: -77.5,26.5 - parent: 1 - type: Transform - - uid: 9632 - components: - - pos: -71.5,32.5 - parent: 1 - type: Transform - - uid: 9661 - components: - - pos: -68.5,18.5 - parent: 1 - type: Transform - - uid: 9664 - components: - - pos: -69.5,18.5 - parent: 1 - type: Transform - - uid: 9665 - components: - - pos: -72.5,20.5 - parent: 1 - type: Transform - - uid: 9682 - components: - - pos: -77.5,24.5 - parent: 1 - type: Transform - - uid: 9696 - components: - - pos: -86.5,23.5 - parent: 1 - type: Transform - - uid: 9697 - components: - - pos: -86.5,24.5 - parent: 1 - type: Transform - - uid: 9698 - components: - - pos: -86.5,25.5 - parent: 1 - type: Transform - - uid: 9699 - components: - - pos: -86.5,26.5 - parent: 1 - type: Transform - - uid: 9700 - components: - - pos: -86.5,27.5 - parent: 1 - type: Transform - - uid: 9799 - components: - - pos: -82.5,47.5 - parent: 1 - type: Transform - - uid: 9824 - components: - - pos: -79.5,47.5 - parent: 1 - type: Transform - - uid: 9830 - components: - - pos: -84.5,47.5 - parent: 1 - type: Transform - - uid: 9831 - components: - - pos: -83.5,47.5 - parent: 1 - type: Transform - - uid: 9832 - components: - - pos: -81.5,47.5 - parent: 1 - type: Transform - - uid: 9833 - components: - - pos: -80.5,47.5 - parent: 1 - type: Transform - - uid: 9834 - components: - - pos: -85.5,47.5 - parent: 1 - type: Transform - - uid: 9835 - components: - - pos: -85.5,46.5 - parent: 1 - type: Transform - - uid: 9836 - components: - - pos: -85.5,45.5 - parent: 1 - type: Transform - - uid: 9837 - components: - - pos: -85.5,44.5 - parent: 1 - type: Transform - - uid: 9838 - components: - - pos: -85.5,43.5 - parent: 1 - type: Transform - - uid: 9839 - components: - - pos: -85.5,42.5 - parent: 1 - type: Transform - - uid: 9840 - components: - - pos: -85.5,41.5 - parent: 1 - type: Transform - - uid: 9841 - components: - - pos: -85.5,40.5 - parent: 1 - type: Transform - - uid: 9842 - components: - - pos: -85.5,39.5 - parent: 1 - type: Transform - - uid: 9843 - components: - - pos: -85.5,38.5 - parent: 1 - type: Transform - - uid: 9844 - components: - - pos: -85.5,37.5 - parent: 1 - type: Transform - - uid: 9845 - components: - - pos: -85.5,36.5 - parent: 1 - type: Transform - - uid: 9846 - components: - - pos: -85.5,35.5 - parent: 1 - type: Transform - - uid: 9847 - components: - - pos: -85.5,34.5 - parent: 1 - type: Transform - - uid: 9893 - components: - - pos: -85.5,33.5 - parent: 1 - type: Transform - - uid: 10159 - components: - - pos: -70.5,18.5 - parent: 1 - type: Transform - - uid: 10172 - components: - - pos: -69.5,24.5 - parent: 1 - type: Transform - - uid: 10242 - components: - - pos: -69.5,27.5 - parent: 1 - type: Transform - - uid: 10344 - components: - - pos: -43.5,-14.5 - parent: 1 - type: Transform - - uid: 10753 - components: - - rot: -1.5707963267948966 rad - pos: -83.5,49.5 - parent: 1 - type: Transform - - uid: 10756 - components: - - rot: -1.5707963267948966 rad - pos: -81.5,49.5 - parent: 1 - type: Transform - - uid: 10757 - components: - - rot: -1.5707963267948966 rad - pos: -80.5,50.5 - parent: 1 - type: Transform - - uid: 10760 - components: - - rot: -1.5707963267948966 rad - pos: -82.5,49.5 - parent: 1 - type: Transform - - uid: 11508 - components: - - rot: 1.5707963267948966 rad - pos: -84.5,50.5 - parent: 1 - type: Transform - - uid: 13846 - components: - - rot: -1.5707963267948966 rad - pos: 30.5,9.5 - parent: 1 - type: Transform - - uid: 13847 - components: - - rot: -1.5707963267948966 rad - pos: 31.5,9.5 - parent: 1 - type: Transform - - uid: 14528 - components: - - pos: -15.5,30.5 - parent: 1 - type: Transform - - uid: 14779 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,48.5 - parent: 1 - type: Transform - - uid: 14793 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,49.5 - parent: 1 - type: Transform - - uid: 14934 - components: - - pos: -40.5,69.5 - parent: 1 - type: Transform - - uid: 15036 - components: - - pos: -51.5,30.5 - parent: 1 - type: Transform - - uid: 15119 - components: - - pos: -53.5,30.5 - parent: 1 - type: Transform - - uid: 15382 - components: - - pos: -41.5,69.5 - parent: 1 - type: Transform - - uid: 15383 - components: - - pos: -42.5,69.5 - parent: 1 - type: Transform - - uid: 15384 - components: - - pos: -43.5,69.5 - parent: 1 - type: Transform - - uid: 15385 - components: - - pos: -44.5,69.5 - parent: 1 - type: Transform - - uid: 15836 - components: - - pos: -52.5,30.5 - parent: 1 - type: Transform -- proto: ResearchAndDevelopmentServer - entities: - - uid: 6943 - components: - - pos: -13.5,-8.5 - parent: 1 - type: Transform -- proto: RevolverCapGun - entities: - - uid: 2251 - components: - - rot: 1.5707963267948966 rad - pos: 0.88706434,42.793312 - parent: 1 - type: Transform -- proto: RubberStampApproved - entities: - - uid: 7583 - components: - - pos: -19.639711,39.734726 - parent: 1 - type: Transform -- proto: RubberStampClown - entities: - - uid: 4233 - components: - - pos: -41.031456,28.5956 - parent: 1 - type: Transform -- proto: RubberStampDenied - entities: - - uid: 7584 - components: - - pos: -19.389711,39.609726 - parent: 1 - type: Transform -- proto: RubberStampMime - entities: - - uid: 4218 - components: - - pos: -41.209343,23.558546 - parent: 1 - type: Transform -- proto: SalvageMagnet - entities: - - uid: 14223 - components: - - pos: -49.5,-15.5 - parent: 1 - type: Transform -- proto: Saw - entities: - - uid: 12803 - components: - - pos: 19.561224,28.58777 - parent: 1 - type: Transform -- proto: SaxophoneInstrument - entities: - - uid: 9326 - components: - - pos: -71.56229,45.50187 - parent: 1 - type: Transform -- proto: SecurityTechFab - entities: - - uid: 7917 - components: - - pos: -41.5,65.5 - parent: 1 - type: Transform -- proto: SeedExtractor - entities: - - uid: 6942 - components: - - pos: -41.5,49.5 - parent: 1 - type: Transform - - uid: 7723 - components: - - pos: -58.5,83.5 - parent: 1 - type: Transform -- proto: ShardGlass - entities: - - uid: 8324 - components: - - pos: 11.47951,24.442 - parent: 1 - type: Transform -- proto: SheetGlass - entities: - - uid: 262 - components: - - pos: -12.723352,-1.4051902 - parent: 1 - type: Transform - - uid: 263 - components: - - pos: -12.582727,-1.3895652 - parent: 1 - type: Transform - - uid: 326 - components: - - pos: -14.514996,-14.43877 - parent: 1 - type: Transform - - uid: 13605 - components: - - pos: -65.92235,25.549358 - parent: 1 - type: Transform - - uid: 13606 - components: - - pos: -65.92235,25.549358 - parent: 1 - type: Transform -- proto: SheetPlasma - entities: - - uid: 320 - components: - - pos: -17.481846,-13.543035 - parent: 1 - type: Transform - - uid: 10876 - components: - - pos: -22.475372,57.582253 - parent: 1 - type: Transform -- proto: SheetPlasteel - entities: - - uid: 13603 - components: - - pos: -66.25047,25.549358 - parent: 1 - type: Transform - - uid: 13604 - components: - - pos: -66.25047,25.549358 - parent: 1 - type: Transform -- proto: SheetPlastic - entities: - - uid: 264 - components: - - pos: -12.32629,-1.4051902 - parent: 1 - type: Transform - - uid: 265 - components: - - pos: -12.23254,-1.4051902 - parent: 1 - type: Transform -- proto: SheetSteel - entities: - - uid: 266 - components: - - pos: -11.498165,-5.4051905 - parent: 1 - type: Transform - - uid: 267 - components: - - pos: -11.016892,-5.4477215 - parent: 1 - type: Transform - - uid: 13600 - components: - - pos: -66.496956,25.561287 - parent: 1 - type: Transform - - uid: 13601 - components: - - pos: -66.496956,25.561287 - parent: 1 - type: Transform - - uid: 13610 - components: - - pos: -82.49008,29.604647 - parent: 1 - type: Transform - - uid: 13611 - components: - - pos: -82.49008,29.604647 - parent: 1 - type: Transform -- proto: SheetSteel1 - entities: - - uid: 268 - components: - - pos: 2.5175354,-1.5196886 - parent: 1 - type: Transform - - count: 10 - type: Stack -- proto: SheetUranium1 - entities: - - uid: 10865 - components: - - pos: -21.490997,57.551003 - parent: 1 - type: Transform - - uid: 10866 - components: - - pos: -21.490997,57.551003 - parent: 1 - type: Transform - - uid: 10867 - components: - - pos: -21.490997,57.551003 - parent: 1 - type: Transform - - uid: 10868 - components: - - pos: -21.490997,57.551003 - parent: 1 - type: Transform - - uid: 10869 - components: - - pos: -21.490997,57.551003 - parent: 1 - type: Transform -- proto: ShuttersNormal - entities: - - uid: 105 - components: - - pos: 0.5,3.5 - parent: 1 - type: Transform - - links: - - 523 - type: DeviceLinkSink - - uid: 215 - components: - - pos: 2.5,3.5 - parent: 1 - type: Transform - - links: - - 523 - type: DeviceLinkSink - - uid: 216 - components: - - pos: 1.5,3.5 - parent: 1 - type: Transform - - links: - - 523 - type: DeviceLinkSink - - uid: 1446 - components: - - pos: -10.5,11.5 - parent: 1 - type: Transform - - uid: 1487 - components: - - pos: -10.5,12.5 - parent: 1 - type: Transform - - uid: 4494 - components: - - pos: -48.5,20.5 - parent: 1 - type: Transform - - uid: 4495 - components: - - pos: -47.5,20.5 - parent: 1 - type: Transform - - uid: 4496 - components: - - pos: -45.5,19.5 - parent: 1 - type: Transform - - uid: 4497 - components: - - pos: -44.5,19.5 - parent: 1 - type: Transform - - uid: 4499 - components: - - pos: -41.5,19.5 - parent: 1 - type: Transform - - uid: 7075 - components: - - pos: -51.5,34.5 - parent: 1 - type: Transform - - links: - - 7077 - type: DeviceLinkSink - - uid: 7076 - components: - - pos: -50.5,34.5 - parent: 1 - type: Transform - - links: - - 7077 - type: DeviceLinkSink - - uid: 7468 - components: - - pos: -53.5,80.5 - parent: 1 - type: Transform - - uid: 7476 - components: - - pos: -53.5,79.5 - parent: 1 - type: Transform - - uid: 7719 - components: - - pos: -49.5,68.5 - parent: 1 - type: Transform - - uid: 7860 - components: - - pos: -49.5,67.5 - parent: 1 - type: Transform - - uid: 9955 - components: - - pos: -79.5,21.5 - parent: 1 - type: Transform -- proto: ShuttersNormalOpen - entities: - - uid: 4498 - components: - - pos: -42.5,19.5 - parent: 1 - type: Transform - - uid: 10698 - components: - - pos: -70.5,18.5 - parent: 1 - type: Transform - - links: - - 10701 - type: DeviceLinkSink - - uid: 10699 - components: - - pos: -69.5,18.5 - parent: 1 - type: Transform - - links: - - 10701 - type: DeviceLinkSink - - uid: 10700 - components: - - pos: -68.5,18.5 - parent: 1 - type: Transform - - links: - - 10701 - type: DeviceLinkSink -- proto: ShuttleConsoleCircuitboard - entities: - - uid: 15896 - components: - - pos: 11.536212,-16.49545 - parent: 1 - type: Transform -- proto: SignalButton - entities: - - uid: 351 - components: - - rot: 3.141592653589793 rad - pos: 3.5,-12.5 - parent: 1 - type: Transform - - linkedPorts: - 42: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 615 - components: - - pos: 17.5,-7.5 - parent: 1 - type: Transform - - linkedPorts: - 590: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 7077 - components: - - rot: 3.141592653589793 rad - pos: -52.5,34.5 - parent: 1 - type: Transform - - linkedPorts: - 7075: - - Pressed: Toggle - 7076: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 7192 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,79.5 - parent: 1 - type: Transform - - linkedPorts: - 7211: - - Pressed: Toggle - 7210: - - Pressed: Toggle - 7209: - - Pressed: Toggle - 7208: - - Pressed: Toggle - 7207: - - Pressed: Toggle - 7204: - - Pressed: Toggle - 7212: - - Pressed: Toggle - 7213: - - Pressed: Toggle - 7214: - - Pressed: Toggle - 7215: - - Pressed: Toggle - 7216: - - Pressed: Toggle - 7217: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 7218 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,68.5 - parent: 1 - type: Transform - - linkedPorts: - 7204: - - Pressed: Toggle - 7207: - - Pressed: Toggle - 7208: - - Pressed: Toggle - 7209: - - Pressed: Toggle - 7210: - - Pressed: Toggle - 7211: - - Pressed: Toggle - 7217: - - Pressed: Toggle - 7216: - - Pressed: Toggle - 7215: - - Pressed: Toggle - 7214: - - Pressed: Toggle - 7213: - - Pressed: Toggle - 7212: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 10701 - components: - - pos: -71.5,18.5 - parent: 1 - type: Transform - - linkedPorts: - 10698: - - Pressed: Toggle - 10699: - - Pressed: Toggle - 10700: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 13361 - components: - - pos: -78.5,47.5 - parent: 1 - type: Transform - - linkedPorts: - 13360: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 13367 - components: - - pos: -71.5,57.5 - parent: 1 - type: Transform - - linkedPorts: - 13366: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 13821 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,-9.5 - parent: 1 - type: Transform - - linkedPorts: - 13818: - - Pressed: Toggle - 13817: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 13822 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,-9.5 - parent: 1 - type: Transform - - linkedPorts: - 13819: - - Pressed: Toggle - 13820: - - Pressed: Toggle - type: DeviceLinkSource - - uid: 15185 - components: - - rot: 3.141592653589793 rad - pos: 18.5,48.5 - parent: 1 - type: Transform - - linkedPorts: - 15173: - - Pressed: Toggle - 15175: - - Pressed: Toggle - 15174: - - Pressed: Toggle - 15177: - - Pressed: Toggle - 15178: - - Pressed: Toggle - 15179: - - Pressed: Toggle - 15180: - - Pressed: Toggle - 15181: - - Pressed: Toggle - 15182: - - Pressed: Toggle - 15183: - - Pressed: Toggle - 15184: - - Pressed: Toggle - 15176: - - Pressed: Toggle - type: DeviceLinkSource -- proto: SignAnomaly - entities: - - uid: 325 - components: - - pos: -0.5,-9.5 - parent: 1 - type: Transform -- proto: SignAnomaly2 - entities: - - uid: 324 - components: - - pos: -10.5,-11.5 - parent: 1 - type: Transform -- proto: SignBar - entities: - - uid: 7371 - components: - - pos: -33.5,39.5 - parent: 1 - type: Transform - - uid: 7372 - components: - - pos: -37.5,34.5 - parent: 1 - type: Transform -- proto: SignBio - entities: - - uid: 14343 - components: - - pos: -76.5,57.5 - parent: 1 - type: Transform -- proto: SignCargo - entities: - - uid: 3658 - components: - - pos: -39.5,2.5 - parent: 1 - type: Transform - - uid: 3659 - components: - - pos: -35.5,2.5 - parent: 1 - type: Transform -- proto: SignChem - entities: - - uid: 1906 - components: - - pos: -3.5,28.5 - parent: 1 - type: Transform - - uid: 1907 - components: - - pos: 1.5,27.5 - parent: 1 - type: Transform -- proto: SignCloning - entities: - - uid: 1350 - components: - - pos: 2.5,35.5 - parent: 1 - type: Transform -- proto: SignCryogenicsMed - entities: - - uid: 1207 - components: - - pos: 5.5,34.5 - parent: 1 - type: Transform - - uid: 1321 - components: - - pos: 5.5,32.5 - parent: 1 - type: Transform -- proto: SignDanger - entities: - - uid: 14836 - components: - - pos: 11.5,-15.5 - parent: 1 - type: Transform - - uid: 14840 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,-12.5 - parent: 1 - type: Transform -- proto: SignDirectionalBar - entities: - - uid: 14501 - components: - - rot: 3.141592653589793 rad - pos: -59.490047,7.285572 - parent: 1 - type: Transform - - uid: 14507 - components: - - rot: 3.141592653589793 rad - pos: -39.450584,8.088224 - parent: 1 - type: Transform - - uid: 14525 - components: - - rot: 3.141592653589793 rad - pos: -14.487816,7.472787 - parent: 1 - type: Transform - - uid: 14530 - components: - - rot: -1.5707963267948966 rad - pos: -14.482212,30.621857 - parent: 1 - type: Transform - - uid: 14537 - components: - - rot: -1.5707963267948966 rad - pos: -18.473362,34.479904 - parent: 1 - type: Transform - - uid: 14547 - components: - - rot: 1.5707963267948966 rad - pos: -55.470596,30.735767 - parent: 1 - type: Transform -- proto: SignDirectionalBridge - entities: - - uid: 14517 - components: - - rot: 3.141592653589793 rad - pos: -14.488382,7.264183 - parent: 1 - type: Transform - - uid: 14518 - components: - - rot: 1.5707963267948966 rad - pos: -32.437344,7.701683 - parent: 1 - type: Transform - - uid: 14519 - components: - - rot: 1.5707963267948966 rad - pos: -55.473106,3.3110576 - parent: 1 - type: Transform - - uid: 14535 - components: - - rot: 3.141592653589793 rad - pos: -14.4896145,34.68303 - parent: 1 - type: Transform - - uid: 14540 - components: - - rot: 1.5707963267948966 rad - pos: -35.48712,30.33314 - parent: 1 - type: Transform - - uid: 14549 - components: - - rot: 1.5707963267948966 rad - pos: -55.470596,30.513163 - parent: 1 - type: Transform - - uid: 14552 - components: - - rot: 1.5707963267948966 rad - pos: -45.46681,34.272972 - parent: 1 - type: Transform - - uid: 14556 - components: - - pos: -49.482433,48.469536 - parent: 1 - type: Transform -- proto: SignDirectionalChapel - entities: - - uid: 14516 - components: - - rot: 1.5707963267948966 rad - pos: -10.488658,7.654808 - parent: 1 - type: Transform - - uid: 14520 - components: - - rot: 1.5707963267948966 rad - pos: -30.469654,3.3579326 - parent: 1 - type: Transform - - uid: 14521 - components: - - rot: 1.5707963267948966 rad - pos: -59.50527,3.7641826 - parent: 1 - type: Transform - - uid: 14527 - components: - - pos: 12.5,4.5 - parent: 1 - type: Transform -- proto: SignDirectionalEng - entities: - - uid: 14500 - components: - - rot: 3.141592653589793 rad - pos: -59.490047,7.504322 - parent: 1 - type: Transform - - uid: 14510 - components: - - rot: 3.141592653589793 rad - pos: -39.452663,8.478849 - parent: 1 - type: Transform - - uid: 14523 - components: - - rot: -1.5707963267948966 rad - pos: -14.487816,3.550912 - parent: 1 - type: Transform - - uid: 14533 - components: - - rot: -1.5707963267948966 rad - pos: -14.4896145,34.261154 - parent: 1 - type: Transform - - uid: 14545 - components: - - rot: -1.5707963267948966 rad - pos: -39.47286,34.276833 - parent: 1 - type: Transform - - uid: 14554 - components: - - rot: -1.5707963267948966 rad - pos: -45.482433,34.679222 - parent: 1 - type: Transform - - uid: 14555 - components: - - rot: -1.5707963267948966 rad - pos: -49.46681,48.26641 - parent: 1 - type: Transform -- proto: SignDirectionalEvac - entities: - - uid: 14505 - components: - - rot: 1.5707963267948966 rad - pos: -55.472736,3.7415338 - parent: 1 - type: Transform - - uid: 14513 - components: - - rot: 1.5707963267948966 rad - pos: -30.468357,3.5641694 - parent: 1 - type: Transform - - uid: 14514 - components: - - rot: 1.5707963267948966 rad - pos: -10.488658,7.248558 - parent: 1 - type: Transform - - uid: 14526 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,7.5 - parent: 1 - type: Transform - - uid: 14531 - components: - - pos: -14.474767,30.840607 - parent: 1 - type: Transform - - uid: 14542 - components: - - pos: -39.48712,30.567514 - parent: 1 - type: Transform -- proto: SignDirectionalGravity - entities: - - uid: 14506 - components: - - rot: 1.5707963267948966 rad - pos: -55.472736,3.5227838 - parent: 1 - type: Transform - - uid: 14512 - components: - - rot: 1.5707963267948966 rad - pos: -30.468357,3.7672944 - parent: 1 - type: Transform - - uid: 14532 - components: - - rot: 1.5707963267948966 rad - pos: -14.490392,7.668745 - parent: 1 - type: Transform - - uid: 14534 - components: - - pos: -14.4896145,34.46428 - parent: 1 - type: Transform - - uid: 14546 - components: - - pos: -39.47286,34.479958 - parent: 1 - type: Transform -- proto: SignDirectionalJanitor - entities: - - uid: 14561 - components: - - pos: -49.48419,37.304916 - parent: 1 - type: Transform -- proto: SignDirectionalMed - entities: - - uid: 14502 - components: - - rot: 1.5707963267948966 rad - pos: -55.48836,7.2415333 - parent: 1 - type: Transform - - uid: 14509 - components: - - rot: 1.5707963267948966 rad - pos: -32.43669,7.2913494 - parent: 1 - type: Transform - - uid: 14515 - components: - - rot: 3.141592653589793 rad - pos: -10.488658,7.451683 - parent: 1 - type: Transform - - uid: 14538 - components: - - rot: 1.5707963267948966 rad - pos: -35.48712,30.73939 - parent: 1 - type: Transform - - uid: 14550 - components: - - rot: 1.5707963267948966 rad - pos: -55.48622,34.45066 - parent: 1 - type: Transform - - uid: 14557 - components: - - pos: -49.482433,48.657036 - parent: 1 - type: Transform - - uid: 14558 - components: - - rot: 1.5707963267948966 rad - pos: -45.49806,34.875084 - parent: 1 - type: Transform -- proto: SignDirectionalSci - entities: - - uid: 2816 - components: - - pos: -14.4827,30.222769 - parent: 1 - type: Transform - - uid: 14503 - components: - - rot: 1.5707963267948966 rad - pos: -55.48836,7.4602833 - parent: 1 - type: Transform - - uid: 14511 - components: - - rot: 1.5707963267948966 rad - pos: -32.43541,7.4944744 - parent: 1 - type: Transform - - uid: 14539 - components: - - rot: 1.5707963267948966 rad - pos: -35.48712,30.55189 - parent: 1 - type: Transform - - uid: 14551 - components: - - pos: -55.472015,30.294413 - parent: 1 - type: Transform -- proto: SignDirectionalSec - entities: - - uid: 14499 - components: - - rot: 3.141592653589793 rad - pos: -59.490047,7.723072 - parent: 1 - type: Transform - - uid: 14508 - components: - - rot: 3.141592653589793 rad - pos: -39.450584,8.275724 - parent: 1 - type: Transform - - uid: 14522 - components: - - rot: -1.5707963267948966 rad - pos: -14.487816,3.769662 - parent: 1 - type: Transform - - uid: 14536 - components: - - rot: -1.5707963267948966 rad - pos: -18.473362,34.27678 - parent: 1 - type: Transform - - uid: 14541 - components: - - rot: -1.5707963267948966 rad - pos: -39.48712,30.348764 - parent: 1 - type: Transform - - uid: 14548 - components: - - rot: 3.141592653589793 rad - pos: -55.48622,34.247536 - parent: 1 - type: Transform - - uid: 14553 - components: - - rot: 3.141592653589793 rad - pos: -45.482433,34.476097 - parent: 1 - type: Transform -- proto: SignDirectionalSolar - entities: - - uid: 14544 - components: - - pos: 23.5,3.5 - parent: 1 - type: Transform -- proto: SignDirectionalSupply - entities: - - uid: 14504 - components: - - rot: 1.5707963267948966 rad - pos: -55.48836,7.6790333 - parent: 1 - type: Transform - - uid: 14524 - components: - - rot: -1.5707963267948966 rad - pos: -14.487816,3.363412 - parent: 1 - type: Transform - - uid: 14529 - components: - - pos: -14.482212,30.433353 - parent: 1 - type: Transform - - uid: 14543 - components: - - pos: -39.48712,30.77064 - parent: 1 - type: Transform -- proto: SignEVA - entities: - - uid: 7394 - components: - - pos: -14.5,49.5 - parent: 1 - type: Transform -- proto: SignLibrary - entities: - - uid: 3397 - components: - - pos: -24.5,7.5 - parent: 1 - type: Transform -- proto: SignMail - entities: - - uid: 15097 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,-0.5 - parent: 1 - type: Transform - - uid: 15281 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,0.5 - parent: 1 - type: Transform -- proto: SignMedical - entities: - - uid: 1361 - components: - - pos: 5.5,27.5 - parent: 1 - type: Transform - - uid: 1903 - components: - - pos: 1.5,31.5 - parent: 1 - type: Transform -- proto: SignMorgue - entities: - - uid: 1149 - components: - - pos: 2.5,18.5 - parent: 1 - type: Transform -- proto: SignPrison - entities: - - uid: 7205 - components: - - pos: -51.5,70.5 - parent: 1 - type: Transform - - uid: 7331 - components: - - pos: -51.5,77.5 - parent: 1 - type: Transform -- proto: SignScience - entities: - - uid: 228 - components: - - pos: -9.5,3.5 - parent: 1 - type: Transform -- proto: SignSecureMedRed - entities: - - uid: 1596 - components: - - pos: 12.5,-12.5 - parent: 1 - type: Transform - - uid: 7440 - components: - - pos: 9.5,41.5 - parent: 1 - type: Transform - - uid: 14837 - components: - - pos: 7.5,-15.5 - parent: 1 - type: Transform - - uid: 14841 - components: - - pos: 8.5,-11.5 - parent: 1 - type: Transform - - uid: 15010 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,-13.5 - parent: 1 - type: Transform - - uid: 15020 - components: - - rot: 1.5707963267948966 rad - pos: 12.5,-14.5 - parent: 1 - type: Transform -- proto: SignSpace - entities: - - uid: 5493 - components: - - pos: -53.5,78.5 - parent: 1 - type: Transform - - uid: 7329 - components: - - pos: -53.5,69.5 - parent: 1 - type: Transform - - uid: 7330 - components: - - pos: -49.5,69.5 - parent: 1 - type: Transform - - uid: 7333 - components: - - pos: -49.5,78.5 - parent: 1 - type: Transform -- proto: SignTelecomms - entities: - - uid: 9807 - components: - - pos: -40.5,7.5 - parent: 1 - type: Transform - - uid: 15381 - components: - - pos: 27.5,22.5 - parent: 1 - type: Transform -- proto: SignVirology - entities: - - uid: 1145 - components: - - pos: 5.5,20.5 - parent: 1 - type: Transform -- proto: SingularityGenerator - entities: - - uid: 9976 - components: - - pos: -77.5,22.5 - parent: 1 - type: Transform - - uid: 10648 - components: - - pos: -97.5,25.5 - parent: 1 - type: Transform -- proto: Sink - entities: - - uid: 4079 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,1.5 - parent: 1 - type: Transform - - uid: 4080 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,0.5 - parent: 1 - type: Transform - - uid: 4081 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,-0.5 - parent: 1 - type: Transform -- proto: SinkStemlessWater - entities: - - uid: 7088 - components: - - pos: -51.5,41.5 - parent: 1 - type: Transform -- proto: SinkWide - entities: - - uid: 15008 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,44.5 - parent: 1 - type: Transform -- proto: SMESBasic - entities: - - uid: 749 - components: - - name: Southeast Solars SMES - type: MetaData - - pos: 27.5,-7.5 - parent: 1 - type: Transform - - uid: 921 - components: - - name: Grav SMES - type: MetaData - - pos: 25.5,3.5 - parent: 1 - type: Transform - - uid: 2761 - components: - - name: Telecomms SMES - type: MetaData - - pos: 25.5,23.5 - parent: 1 - type: Transform - - uid: 10147 - components: - - name: SMES Bank 4 - type: MetaData - - pos: -71.5,28.5 - parent: 1 - type: Transform - - uid: 10148 - components: - - name: SMES Bank 3 - type: MetaData - - pos: -71.5,29.5 - parent: 1 - type: Transform - - uid: 10149 - components: - - name: SMES Bank 2 - type: MetaData - - pos: -71.5,30.5 - parent: 1 - type: Transform - - uid: 10165 - components: - - name: SMES Bank 1 - type: MetaData - - pos: -71.5,31.5 - parent: 1 - type: Transform -- proto: SMESMachineCircuitboard - entities: - - uid: 5551 - components: - - pos: -52.558533,24.686655 - parent: 1 - type: Transform - - uid: 5552 - components: - - pos: -52.386658,24.45228 - parent: 1 - type: Transform -- proto: SmokingPipe - entities: - - uid: 61 - components: - - pos: -34.59064,49.648758 - parent: 1 - type: Transform - - uid: 70 - components: - - pos: -34.481266,49.461258 - parent: 1 - type: Transform -- proto: soda_dispenser - entities: - - uid: 5270 - components: - - pos: -54.5,21.5 - parent: 1 - type: Transform - - uid: 9742 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,35.5 - parent: 1 - type: Transform - - uid: 15221 - components: - - rot: 3.141592653589793 rad - pos: 15.5,50.5 - parent: 1 - type: Transform -- proto: SolarAssemblyPart - entities: - - uid: 15982 - components: - - pos: -7.5718555,8.615294 - parent: 1 - type: Transform - - uid: 15983 - components: - - pos: -7.2749805,8.599669 - parent: 1 - type: Transform - - uid: 15984 - components: - - pos: -7.3374805,8.490294 - parent: 1 - type: Transform - - uid: 15985 - components: - - pos: -7.6812305,8.552794 - parent: 1 - type: Transform -- proto: SolarPanel - entities: - - uid: 803 - components: - - pos: 18.5,-14.5 - parent: 1 - type: Transform - - uid: 804 - components: - - pos: 19.5,-14.5 - parent: 1 - type: Transform - - uid: 805 - components: - - pos: 20.5,-14.5 - parent: 1 - type: Transform - - uid: 806 - components: - - pos: 21.5,-14.5 - parent: 1 - type: Transform - - uid: 807 - components: - - pos: 22.5,-14.5 - parent: 1 - type: Transform - - uid: 808 - components: - - pos: 23.5,-14.5 - parent: 1 - type: Transform - - uid: 809 - components: - - pos: 24.5,-14.5 - parent: 1 - type: Transform - - uid: 810 - components: - - pos: 25.5,-14.5 - parent: 1 - type: Transform - - uid: 811 - components: - - pos: 26.5,-14.5 - parent: 1 - type: Transform - - uid: 812 - components: - - pos: 27.5,-14.5 - parent: 1 - type: Transform - - uid: 813 - components: - - pos: 18.5,-16.5 - parent: 1 - type: Transform - - uid: 814 - components: - - pos: 19.5,-16.5 - parent: 1 - type: Transform - - uid: 815 - components: - - pos: 20.5,-16.5 - parent: 1 - type: Transform - - uid: 816 - components: - - pos: 21.5,-16.5 - parent: 1 - type: Transform - - uid: 817 - components: - - pos: 22.5,-16.5 - parent: 1 - type: Transform - - uid: 818 - components: - - pos: 23.5,-16.5 - parent: 1 - type: Transform - - uid: 819 - components: - - pos: 24.5,-16.5 - parent: 1 - type: Transform - - uid: 820 - components: - - pos: 25.5,-16.5 - parent: 1 - type: Transform - - uid: 821 - components: - - pos: 26.5,-16.5 - parent: 1 - type: Transform - - uid: 822 - components: - - pos: 27.5,-16.5 - parent: 1 - type: Transform - - uid: 823 - components: - - pos: 19.5,-18.5 - parent: 1 - type: Transform - - uid: 824 - components: - - pos: 20.5,-18.5 - parent: 1 - type: Transform - - uid: 825 - components: - - pos: 21.5,-18.5 - parent: 1 - type: Transform - - uid: 826 - components: - - pos: 22.5,-18.5 - parent: 1 - type: Transform - - uid: 827 - components: - - pos: 23.5,-18.5 - parent: 1 - type: Transform - - uid: 828 - components: - - pos: 24.5,-18.5 - parent: 1 - type: Transform - - uid: 829 - components: - - pos: 25.5,-18.5 - parent: 1 - type: Transform - - uid: 830 - components: - - pos: 26.5,-18.5 - parent: 1 - type: Transform - - uid: 831 - components: - - pos: 27.5,-18.5 - parent: 1 - type: Transform - - uid: 832 - components: - - pos: 19.5,-20.5 - parent: 1 - type: Transform - - uid: 833 - components: - - pos: 20.5,-20.5 - parent: 1 - type: Transform - - uid: 834 - components: - - pos: 21.5,-20.5 - parent: 1 - type: Transform - - uid: 835 - components: - - pos: 22.5,-20.5 - parent: 1 - type: Transform - - uid: 836 - components: - - pos: 23.5,-20.5 - parent: 1 - type: Transform - - uid: 837 - components: - - pos: 24.5,-20.5 - parent: 1 - type: Transform - - uid: 838 - components: - - pos: 25.5,-20.5 - parent: 1 - type: Transform - - uid: 839 - components: - - pos: 26.5,-20.5 - parent: 1 - type: Transform - - uid: 840 - components: - - pos: 27.5,-20.5 - parent: 1 - type: Transform - - uid: 841 - components: - - pos: 20.5,-22.5 - parent: 1 - type: Transform - - uid: 842 - components: - - pos: 21.5,-22.5 - parent: 1 - type: Transform - - uid: 843 - components: - - pos: 22.5,-22.5 - parent: 1 - type: Transform - - uid: 844 - components: - - pos: 23.5,-22.5 - parent: 1 - type: Transform - - uid: 845 - components: - - pos: 24.5,-22.5 - parent: 1 - type: Transform - - uid: 846 - components: - - pos: 25.5,-22.5 - parent: 1 - type: Transform - - uid: 847 - components: - - pos: 26.5,-22.5 - parent: 1 - type: Transform - - uid: 848 - components: - - pos: 27.5,-22.5 - parent: 1 - type: Transform - - uid: 849 - components: - - pos: 20.5,-24.5 - parent: 1 - type: Transform - - uid: 850 - components: - - pos: 21.5,-24.5 - parent: 1 - type: Transform - - uid: 851 - components: - - pos: 22.5,-24.5 - parent: 1 - type: Transform - - uid: 852 - components: - - pos: 23.5,-24.5 - parent: 1 - type: Transform - - uid: 853 - components: - - pos: 24.5,-24.5 - parent: 1 - type: Transform - - uid: 854 - components: - - pos: 25.5,-24.5 - parent: 1 - type: Transform - - uid: 855 - components: - - pos: 26.5,-24.5 - parent: 1 - type: Transform - - uid: 856 - components: - - pos: 27.5,-24.5 - parent: 1 - type: Transform -- proto: SolarTracker - entities: - - uid: 860 - components: - - pos: 28.5,-27.5 - parent: 1 - type: Transform -- proto: SolarTrackerElectronics - entities: - - uid: 15986 - components: - - pos: -7.5093555,8.3066 - parent: 1 - type: Transform -- proto: SpawnMobAlexander - entities: - - uid: 14184 - components: - - pos: -35.5,46.5 - parent: 1 - type: Transform -- proto: SpawnMobBandito - entities: - - uid: 14178 - components: - - pos: -8.5,-0.5 - parent: 1 - type: Transform -- proto: SpawnMobBear - entities: - - uid: 6324 - components: - - pos: 7.5,51.5 - parent: 1 - type: Transform -- proto: SpawnMobCatRuntime - entities: - - uid: 14180 - components: - - pos: 16.5,30.5 - parent: 1 - type: Transform -- proto: SpawnMobCorgi - entities: - - uid: 7575 - components: - - pos: -22.5,38.5 - parent: 1 - type: Transform -- proto: SpawnMobFoxRenault - entities: - - uid: 10907 - components: - - pos: -9.5,59.5 - parent: 1 - type: Transform -- proto: SpawnMobMcGriff - entities: - - uid: 14183 - components: - - pos: -46.5,59.5 - parent: 1 - type: Transform -- proto: SpawnMobMonkeyPunpun - entities: - - uid: 14168 - components: - - pos: -31.5,37.5 - parent: 1 - type: Transform -- proto: SpawnMobMouse - entities: - - uid: 4996 - components: - - pos: 10.5,39.5 - parent: 1 - type: Transform - - uid: 15041 - components: - - pos: 7.5,-5.5 - parent: 1 - type: Transform - - uid: 15042 - components: - - pos: 22.5,1.5 - parent: 1 - type: Transform - - uid: 15043 - components: - - pos: 14.5,17.5 - parent: 1 - type: Transform - - uid: 15045 - components: - - pos: -7.5,46.5 - parent: 1 - type: Transform - - uid: 15046 - components: - - pos: -44.5,53.5 - parent: 1 - type: Transform - - uid: 15047 - components: - - pos: -66.5,48.5 - parent: 1 - type: Transform -- proto: SpawnMobPossumMorty - entities: - - uid: 14182 - components: - - pos: 14.5,-1.5 - parent: 1 - type: Transform -- proto: SpawnMobRaccoonMorticia - entities: - - uid: 14179 - components: - - pos: -38.5,-4.5 - parent: 1 - type: Transform -- proto: SpawnMobShiva - entities: - - uid: 3680 - components: - - pos: -60.5,65.5 - parent: 1 - type: Transform -- proto: SpawnMobSlothPaperwork - entities: - - uid: 14185 - components: - - pos: -24.5,12.5 - parent: 1 - type: Transform -- proto: SpawnMobWalter - entities: - - uid: 14181 - components: - - pos: -2.5,22.5 - parent: 1 - type: Transform -- proto: SpawnPointAssistant - entities: - - uid: 10824 - components: - - pos: -25.5,27.5 - parent: 1 - type: Transform - - uid: 10825 - components: - - pos: -24.5,28.5 - parent: 1 - type: Transform - - uid: 10826 - components: - - pos: -23.5,27.5 - parent: 1 - type: Transform -- proto: SpawnPointAtmos - entities: - - uid: 14433 - components: - - pos: -81.5,31.5 - parent: 1 - type: Transform - - uid: 14434 - components: - - pos: -80.5,31.5 - parent: 1 - type: Transform - - uid: 14435 - components: - - pos: -79.5,31.5 - parent: 1 - type: Transform -- proto: SpawnPointBartender - entities: - - uid: 9724 - components: - - pos: -31.5,36.5 - parent: 1 - type: Transform - - uid: 9725 - components: - - pos: -31.5,39.5 - parent: 1 - type: Transform -- proto: SpawnPointBotanist - entities: - - uid: 5179 - components: - - pos: -43.5,46.5 - parent: 1 - type: Transform - - uid: 8209 - components: - - pos: -41.5,46.5 - parent: 1 - type: Transform - - uid: 8212 - components: - - pos: -43.5,42.5 - parent: 1 - type: Transform - - uid: 10814 - components: - - pos: -41.5,42.5 - parent: 1 - type: Transform -- proto: SpawnPointCaptain - entities: - - uid: 6508 - components: - - pos: -7.5,60.5 - parent: 1 - type: Transform -- proto: SpawnPointCargoTechnician - entities: - - uid: 3660 - components: - - pos: -39.5,-4.5 - parent: 1 - type: Transform - - uid: 3661 - components: - - pos: -37.5,-4.5 - parent: 1 - type: Transform - - uid: 3662 - components: - - pos: -39.5,-6.5 - parent: 1 - type: Transform - - uid: 3663 - components: - - pos: -37.5,-6.5 - parent: 1 - type: Transform -- proto: SpawnPointChaplain - entities: - - uid: 10823 - components: - - pos: 20.5,-1.5 - parent: 1 - type: Transform -- proto: SpawnPointChef - entities: - - uid: 6933 - components: - - pos: -37.5,44.5 - parent: 1 - type: Transform - - uid: 6934 - components: - - pos: -37.5,45.5 - parent: 1 - type: Transform -- proto: SpawnPointChemist - entities: - - uid: 2182 - components: - - pos: -1.5,25.5 - parent: 1 - type: Transform - - uid: 2183 - components: - - pos: -2.5,23.5 - parent: 1 - type: Transform -- proto: SpawnPointChiefEngineer - entities: - - uid: 3695 - components: - - pos: -69.5,16.5 - parent: 1 - type: Transform -- proto: SpawnPointChiefMedicalOfficer - entities: - - uid: 1314 - components: - - pos: 15.5,32.5 - parent: 1 - type: Transform -- proto: SpawnPointClown - entities: - - uid: 4188 - components: - - pos: -41.5,27.5 - parent: 1 - type: Transform -- proto: SpawnPointDetective - entities: - - uid: 14280 - components: - - pos: -70.5,48.5 - parent: 1 - type: Transform -- proto: SpawnPointHeadOfPersonnel - entities: - - uid: 11600 - components: - - pos: -20.5,38.5 - parent: 1 - type: Transform -- proto: SpawnPointHeadOfSecurity - entities: - - uid: 9989 - components: - - pos: -61.5,64.5 - parent: 1 - type: Transform -- proto: SpawnPointJanitor - entities: - - uid: 7090 - components: - - pos: -51.5,40.5 - parent: 1 - type: Transform - - uid: 9723 - components: - - pos: -52.5,36.5 - parent: 1 - type: Transform -- proto: SpawnPointLatejoin - entities: - - uid: 4855 - components: - - pos: -73.5,5.5 - parent: 1 - type: Transform - - uid: 4861 - components: - - pos: -66.5,5.5 - parent: 1 - type: Transform -- proto: SpawnPointLawyer - entities: - - uid: 9997 - components: - - pos: -53.5,54.5 - parent: 1 - type: Transform -- proto: SpawnPointLibrarian - entities: - - uid: 3398 - components: - - pos: -30.5,9.5 - parent: 1 - type: Transform -- proto: SpawnPointMedicalDoctor - entities: - - uid: 14923 - components: - - pos: 7.5,24.5 - parent: 1 - type: Transform - - uid: 14924 - components: - - pos: 8.5,24.5 - parent: 1 - type: Transform - - uid: 14925 - components: - - pos: 9.5,24.5 - parent: 1 - type: Transform - - uid: 14926 - components: - - pos: 8.5,23.5 - parent: 1 - type: Transform -- proto: SpawnPointMedicalIntern - entities: - - uid: 14927 - components: - - pos: 3.5,31.5 - parent: 1 - type: Transform - - uid: 14928 - components: - - pos: 3.5,29.5 - parent: 1 - type: Transform - - uid: 14929 - components: - - pos: 3.5,24.5 - parent: 1 - type: Transform - - uid: 14930 - components: - - pos: 3.5,22.5 - parent: 1 - type: Transform -- proto: SpawnPointMime - entities: - - uid: 4215 - components: - - pos: -41.5,24.5 - parent: 1 - type: Transform -- proto: SpawnPointMusician - entities: - - uid: 4139 - components: - - pos: -24.5,23.5 - parent: 1 - type: Transform -- proto: SpawnPointObserver - entities: - - uid: 13776 - components: - - pos: -37.5,32.5 - parent: 1 - type: Transform -- proto: SpawnPointQuartermaster - entities: - - uid: 3667 - components: - - pos: -44.5,-7.5 - parent: 1 - type: Transform -- proto: SpawnPointResearchAssistant - entities: - - uid: 2169 - components: - - pos: -7.5,-0.5 - parent: 1 - type: Transform - - uid: 15107 - components: - - pos: -10.5,-3.5 - parent: 1 - type: Transform - - uid: 15108 - components: - - pos: -4.5,-3.5 - parent: 1 - type: Transform -- proto: SpawnPointResearchDirector - entities: - - uid: 2167 - components: - - pos: -2.5,2.5 - parent: 1 - type: Transform -- proto: SpawnPointSalvageSpecialist - entities: - - uid: 10343 - components: - - pos: -38.5,-11.5 - parent: 1 - type: Transform - - uid: 13813 - components: - - pos: -42.5,-11.5 - parent: 1 - type: Transform - - uid: 13814 - components: - - pos: -40.5,-11.5 - parent: 1 - type: Transform -- proto: SpawnPointScientist - entities: - - uid: 2168 - components: - - pos: -7.5,1.5 - parent: 1 - type: Transform - - uid: 2170 - components: - - pos: -11.5,-3.5 - parent: 1 - type: Transform - - uid: 2171 - components: - - pos: -16.5,-3.5 - parent: 1 - type: Transform - - uid: 2172 - components: - - pos: -3.5,-3.5 - parent: 1 - type: Transform -- proto: SpawnPointSecurityCadet - entities: - - uid: 9994 - components: - - pos: -55.5,56.5 - parent: 1 - type: Transform - - uid: 9995 - components: - - pos: -53.5,56.5 - parent: 1 - type: Transform - - uid: 9996 - components: - - pos: -51.5,56.5 - parent: 1 - type: Transform -- proto: SpawnPointSecurityOfficer - entities: - - uid: 9990 - components: - - pos: -62.5,54.5 - parent: 1 - type: Transform - - uid: 9991 - components: - - pos: -62.5,52.5 - parent: 1 - type: Transform - - uid: 9992 - components: - - pos: -60.5,52.5 - parent: 1 - type: Transform - - uid: 9993 - components: - - pos: -60.5,54.5 - parent: 1 - type: Transform -- proto: SpawnPointSeniorEngineer - entities: - - uid: 7444 - components: - - pos: -66.5,31.5 - parent: 1 - type: Transform -- proto: SpawnPointSeniorOfficer - entities: - - uid: 7447 - components: - - pos: -52.5,57.5 - parent: 1 - type: Transform -- proto: SpawnPointSeniorPhysician - entities: - - uid: 7448 - components: - - pos: 4.5,23.5 - parent: 1 - type: Transform -- proto: SpawnPointSeniorResearcher - entities: - - uid: 7451 - components: - - pos: -8.5,-2.5 - parent: 1 - type: Transform -- proto: SpawnPointServiceWorker - entities: - - uid: 6036 - components: - - pos: -35.5,43.5 - parent: 1 - type: Transform - - uid: 10216 - components: - - pos: -33.5,43.5 - parent: 1 - type: Transform -- proto: SpawnPointStationEngineer - entities: - - uid: 14426 - components: - - pos: -66.5,26.5 - parent: 1 - type: Transform - - uid: 14427 - components: - - pos: -66.5,28.5 - parent: 1 - type: Transform - - uid: 14428 - components: - - pos: -64.5,28.5 - parent: 1 - type: Transform - - uid: 14429 - components: - - pos: -64.5,26.5 - parent: 1 - type: Transform -- proto: SpawnPointTechnicalAssistant - entities: - - uid: 14430 - components: - - pos: -67.5,33.5 - parent: 1 - type: Transform - - uid: 14431 - components: - - pos: -64.5,33.5 - parent: 1 - type: Transform - - uid: 14432 - components: - - pos: -64.5,31.5 - parent: 1 - type: Transform -- proto: SpawnPointWarden - entities: - - uid: 7958 - components: - - pos: -47.5,61.5 - parent: 1 - type: Transform -- proto: SpawnVehicleJanicart - entities: - - uid: 7067 - components: - - pos: -51.5,36.5 - parent: 1 - type: Transform -- proto: SpawnVehicleSecway - entities: - - uid: 7973 - components: - - pos: -61.5,55.5 - parent: 1 - type: Transform - - uid: 7974 - components: - - pos: -60.5,55.5 - parent: 1 - type: Transform -- proto: SpawnVendingMachineRestockFoodDrink - entities: - - uid: 13674 - components: - - pos: -50.5,41.5 - parent: 1 - type: Transform - - uid: 13675 - components: - - pos: -53.5,44.5 - parent: 1 - type: Transform -- proto: SpeedLoaderMagnum - entities: - - uid: 14951 - components: - - pos: -43.393112,61.308212 - parent: 1 - type: Transform - - uid: 14952 - components: - - pos: -43.099293,61.292587 - parent: 1 - type: Transform - - uid: 14953 - components: - - pos: -43.689987,61.308212 - parent: 1 - type: Transform -- proto: Spoon - entities: - - uid: 15910 - components: - - pos: -49.478313,9.54667 - parent: 1 - type: Transform -- proto: SprayBottleSpaceCleaner - entities: - - uid: 7133 - components: - - flags: InContainer - type: MetaData - - parent: 7074 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - - uid: 7134 - components: - - flags: InContainer - type: MetaData - - parent: 7074 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - - uid: 7136 - components: - - flags: InContainer - type: MetaData - - parent: 7074 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage - - uid: 7565 - components: - - flags: InContainer - type: MetaData - - parent: 7074 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: StasisBedMachineCircuitboard - entities: - - uid: 5548 - components: - - pos: -49.451916,24.552746 - parent: 1 - type: Transform -- proto: StatueVenusBlue - entities: - - uid: 5707 - components: - - pos: -32.5,17.5 - parent: 1 - type: Transform -- proto: StatueVenusRed - entities: - - uid: 5706 - components: - - pos: -34.5,18.5 - parent: 1 - type: Transform -- proto: Stool - entities: - - uid: 6 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,10.5 - parent: 1 - type: Transform - - uid: 9 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,8.5 - parent: 1 - type: Transform - - uid: 581 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,12.5 - parent: 1 - type: Transform - - uid: 583 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,12.5 - parent: 1 - type: Transform - - uid: 4140 - components: - - rot: 3.141592653589793 rad - pos: -29.5,26.5 - parent: 1 - type: Transform - - uid: 4169 - components: - - pos: -10.5,34.5 - parent: 1 - type: Transform - - uid: 4219 - components: - - pos: -7.5,34.5 - parent: 1 - type: Transform -- proto: StoolBar - entities: - - uid: 5262 - components: - - rot: 3.141592653589793 rad - pos: -54.5,16.5 - parent: 1 - type: Transform - - uid: 5263 - components: - - rot: 3.141592653589793 rad - pos: -53.5,16.5 - parent: 1 - type: Transform - - uid: 5281 - components: - - rot: 3.141592653589793 rad - pos: -52.5,16.5 - parent: 1 - type: Transform - - uid: 9743 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,38.5 - parent: 1 - type: Transform - - uid: 9744 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,37.5 - parent: 1 - type: Transform - - uid: 9745 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,36.5 - parent: 1 - type: Transform - - uid: 9746 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,35.5 - parent: 1 - type: Transform -- proto: StorageCanister - entities: - - uid: 369 - components: - - pos: 3.5,-8.5 - parent: 1 - type: Transform - - uid: 10737 - components: - - pos: -77.5,28.5 - parent: 1 - type: Transform - - uid: 10738 - components: - - pos: -76.5,28.5 - parent: 1 - type: Transform - - uid: 13924 - components: - - pos: -77.5,43.5 - parent: 1 - type: Transform - - uid: 13925 - components: - - pos: -77.5,44.5 - parent: 1 - type: Transform - - uid: 13926 - components: - - pos: -77.5,45.5 - parent: 1 - type: Transform -- proto: Stunbaton - entities: - - uid: 7999 - components: - - pos: -63.653942,50.74784 - parent: 1 - type: Transform - - uid: 8000 - components: - - pos: -63.450817,50.59159 - parent: 1 - type: Transform - - uid: 8004 - components: - - pos: -63.185192,50.544716 - parent: 1 - type: Transform -- proto: SubstationBasic - entities: - - uid: 606 - components: - - name: Science Substation - type: MetaData - - pos: 11.5,-7.5 - parent: 1 - type: Transform - - uid: 608 - components: - - name: Library Substation - type: MetaData - - pos: -15.5,17.5 - parent: 1 - type: Transform - - uid: 922 - components: - - name: Grav Substation - type: MetaData - - pos: 25.5,1.5 - parent: 1 - type: Transform - - uid: 2515 - components: - - name: Evac Substation - type: MetaData - - pos: 23.5,9.5 - parent: 1 - type: Transform - - uid: 2593 - components: - - name: Telecomms Substation - type: MetaData - - pos: 28.5,23.5 - parent: 1 - type: Transform - - uid: 2693 - components: - - name: Medical Substation - type: MetaData - - pos: -9.5,18.5 - parent: 1 - type: Transform - - uid: 3932 - components: - - name: Supply Substation - type: MetaData - - pos: -24.5,-3.5 - parent: 1 - type: Transform - - uid: 4339 - components: - - name: Tech Storage Substation - type: MetaData - - pos: -40.5,15.5 - parent: 1 - type: Transform - - uid: 6198 - components: - - name: Northeast Maints Substation - type: MetaData - - pos: 18.5,46.5 - parent: 1 - type: Transform - - uid: 6527 - components: - - name: Bridge Substation - type: MetaData - - pos: -3.5,56.5 - parent: 1 - type: Transform - - uid: 6812 - components: - - name: Service Substation - type: MetaData - - pos: -35.5,57.5 - parent: 1 - type: Transform - - uid: 9336 - components: - - name: Engineering Substation - type: MetaData - - pos: -71.5,25.5 - parent: 1 - type: Transform - - uid: 10141 - components: - - name: Security Substation - type: MetaData - - pos: -65.5,59.5 - parent: 1 - type: Transform - - uid: 10207 - components: - - name: PA Substation - type: MetaData - - pos: -79.5,27.5 - parent: 1 - type: Transform -- proto: SubstationMachineCircuitboard - entities: - - uid: 5549 - components: - - pos: -52.589783,25.717905 - parent: 1 - type: Transform - - uid: 5550 - components: - - pos: -52.433533,25.45228 - parent: 1 - type: Transform -- proto: SuitStorageCE - entities: - - uid: 3616 - components: - - pos: -68.5,17.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.1496 - moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: SuitStorageEVA - entities: - - uid: 3552 - components: - - pos: -10.5,49.5 - parent: 1 - type: Transform - - uid: 3553 - components: - - pos: -13.5,49.5 - parent: 1 - type: Transform - - uid: 5467 - components: - - pos: -12.5,49.5 - parent: 1 - type: Transform - - uid: 7387 - components: - - pos: -11.5,49.5 - parent: 1 - type: Transform -- proto: SuitStorageEVAPrisoner - entities: - - uid: 7186 - components: - - pos: -47.5,68.5 - parent: 1 - type: Transform - - uid: 7391 - components: - - pos: -48.5,68.5 - parent: 1 - type: Transform - - uid: 7410 - components: - - pos: -55.5,79.5 - parent: 1 - type: Transform - - uid: 10735 - components: - - pos: -55.5,80.5 - parent: 1 - type: Transform - - uid: 10736 - components: - - pos: -46.5,68.5 - parent: 1 - type: Transform -- proto: SuitStorageHOS - entities: - - uid: 7344 - components: - - pos: -58.5,63.5 - parent: 1 - type: Transform -- proto: SuitStorageRD - entities: - - uid: 334 - components: - - pos: -3.5,2.5 - parent: 1 - type: Transform -- proto: SuitStorageSec - entities: - - uid: 5494 - components: - - pos: -41.5,64.5 - parent: 1 - type: Transform -- proto: SurveillanceCameraCommand - entities: - - uid: 13732 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,37.5 - parent: 1 - type: Transform - - id: HoP Office Line - type: SurveillanceCamera - - uid: 13733 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,45.5 - parent: 1 - type: Transform - - id: HoP Office Backroom - type: SurveillanceCamera - - uid: 13734 - components: - - pos: -11.5,46.5 - parent: 1 - type: Transform - - id: EVA Room - type: SurveillanceCamera - - uid: 13735 - components: - - rot: 3.141592653589793 rad - pos: -15.5,51.5 - parent: 1 - type: Transform - - id: Bridge Entrance - type: SurveillanceCamera - - uid: 13736 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,56.5 - parent: 1 - type: Transform - - id: Bridge Reception - type: SurveillanceCamera - - uid: 13737 - components: - - rot: 1.5707963267948966 rad - pos: -20.5,56.5 - parent: 1 - type: Transform - - id: Vault - type: SurveillanceCamera - - uid: 13738 - components: - - rot: 3.141592653589793 rad - pos: -9.5,57.5 - parent: 1 - type: Transform - - id: Meeting Room - type: SurveillanceCamera - - uid: 13739 - components: - - pos: -6.5,59.5 - parent: 1 - type: Transform - - id: Captain's Office - type: SurveillanceCamera - - uid: 13740 - components: - - pos: -14.5,62.5 - parent: 1 - type: Transform - - id: Bridge - type: SurveillanceCamera - - uid: 15365 - components: - - rot: 3.141592653589793 rad - pos: 27.5,28.5 - parent: 1 - type: Transform - - id: Telecomms - type: SurveillanceCamera -- proto: SurveillanceCameraEngineering - entities: - - uid: 2016 - components: - - rot: -1.5707963267948966 rad - pos: -61.5,33.5 - parent: 1 - type: Transform - - id: Entrance - type: SurveillanceCamera - - uid: 13723 - components: - - rot: 3.141592653589793 rad - pos: -51.5,29.5 - parent: 1 - type: Transform - - id: Storage - type: SurveillanceCamera - - uid: 13724 - components: - - pos: -50.5,23.5 - parent: 1 - type: Transform - - id: Tech Vault - type: SurveillanceCamera - - uid: 14858 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,28.5 - parent: 1 - type: Transform - - id: Equipment Room - type: SurveillanceCamera - - uid: 14859 - components: - - rot: 1.5707963267948966 rad - pos: -69.5,29.5 - parent: 1 - type: Transform - - id: SMES - type: SurveillanceCamera - - uid: 14860 - components: - - pos: -80.5,29.5 - parent: 1 - type: Transform - - id: Atmospherics Equipment - type: SurveillanceCamera - - uid: 14861 - components: - - rot: 1.5707963267948966 rad - pos: -77.5,41.5 - parent: 1 - type: Transform - - id: Atmospherics - type: SurveillanceCamera - - uid: 14862 - components: - - rot: 3.141592653589793 rad - pos: -82.5,27.5 - parent: 1 - type: Transform - - id: PA Room - type: SurveillanceCamera - - uid: 14863 - components: - - pos: -66.5,19.5 - parent: 1 - type: Transform - - id: AME - type: SurveillanceCamera -- proto: SurveillanceCameraGeneral - entities: - - uid: 8969 - components: - - rot: 3.141592653589793 rad - pos: -31.5,29.5 - parent: 1 - type: Transform - - id: Theatre - type: SurveillanceCamera - - uid: 13727 - components: - - rot: 1.5707963267948966 rad - pos: -11.5,13.5 - parent: 1 - type: Transform - - setupAvailableNetworks: - - SurveillanceCameraGeneral - id: Store Area - type: SurveillanceCamera - - uid: 13728 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,11.5 - parent: 1 - type: Transform - - id: Library - type: SurveillanceCamera - - uid: 13729 - components: - - rot: 3.141592653589793 rad - pos: -25.5,18.5 - parent: 1 - type: Transform - - id: Library Backroom - type: SurveillanceCamera - - uid: 13731 - components: - - pos: -24.5,26.5 - parent: 1 - type: Transform - - id: Tool Room - type: SurveillanceCamera - - uid: 13747 - components: - - rot: 1.5707963267948966 rad - pos: -56.5,2.5 - parent: 1 - type: Transform - - id: Arrivals Corridor - type: SurveillanceCamera - - uid: 13748 - components: - - rot: 3.141592653589793 rad - pos: 14.5,6.5 - parent: 1 - type: Transform - - id: Evac Corridor - type: SurveillanceCamera - - uid: 13749 - components: - - pos: 13.5,-2.5 - parent: 1 - type: Transform - - id: Chapel - type: SurveillanceCamera - - uid: 13750 - components: - - rot: 1.5707963267948966 rad - pos: 28.5,11.5 - parent: 1 - type: Transform - - id: Evac 2 - type: SurveillanceCamera - - uid: 13751 - components: - - rot: -1.5707963267948966 rad - pos: 25.5,20.5 - parent: 1 - type: Transform - - id: Evac 1 - type: SurveillanceCamera -- proto: SurveillanceCameraMedical - entities: - - uid: 13090 - components: - - rot: 3.141592653589793 rad - pos: 0.5,17.5 - parent: 1 - type: Transform - - id: Morgue - type: SurveillanceCamera - - uid: 13091 - components: - - pos: 1.5,36.5 - parent: 1 - type: Transform - - id: Cloning - type: SurveillanceCamera - - uid: 13092 - components: - - rot: 3.141592653589793 rad - pos: 10.5,37.5 - parent: 1 - type: Transform - - id: Cryo - type: SurveillanceCamera - - uid: 13093 - components: - - pos: 10.5,28.5 - parent: 1 - type: Transform - - id: Ward - type: SurveillanceCamera - - uid: 13094 - components: - - pos: 9.5,22.5 - parent: 1 - type: Transform - - id: Equipment Room - type: SurveillanceCamera - - uid: 13095 - components: - - rot: 3.141592653589793 rad - pos: 8.5,17.5 - parent: 1 - type: Transform - - id: Virology - type: SurveillanceCamera - - uid: 13297 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,27.5 - parent: 1 - type: Transform - - id: Main Hall - type: SurveillanceCamera - - uid: 13759 - components: - - rot: -1.5707963267948966 rad - pos: -4.5,24.5 - parent: 1 - type: Transform - - id: Chemistry - type: SurveillanceCamera - - uid: 13762 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,31.5 - parent: 1 - type: Transform - - id: Reception - type: SurveillanceCamera - - uid: 13763 - components: - - rot: 3.141592653589793 rad - pos: -11.5,33.5 - parent: 1 - type: Transform - - id: Entrance - type: SurveillanceCamera -- proto: SurveillanceCameraRouterCommand - entities: - - uid: 4281 - components: - - pos: -40.5,8.5 - parent: 1 - type: Transform -- proto: SurveillanceCameraRouterEngineering - entities: - - uid: 4276 - components: - - pos: -42.5,9.5 - parent: 1 - type: Transform -- proto: SurveillanceCameraRouterGeneral - entities: - - uid: 4278 - components: - - pos: -40.5,11.5 - parent: 1 - type: Transform -- proto: SurveillanceCameraRouterMedical - entities: - - uid: 4274 - components: - - pos: -42.5,11.5 - parent: 1 - type: Transform -- proto: SurveillanceCameraRouterScience - entities: - - uid: 4277 - components: - - pos: -42.5,8.5 - parent: 1 - type: Transform -- proto: SurveillanceCameraRouterSecurity - entities: - - uid: 4280 - components: - - pos: -40.5,9.5 - parent: 1 - type: Transform -- proto: SurveillanceCameraRouterService - entities: - - uid: 4275 - components: - - pos: -42.5,10.5 - parent: 1 - type: Transform -- proto: SurveillanceCameraRouterSupply - entities: - - uid: 4279 - components: - - pos: -40.5,10.5 - parent: 1 - type: Transform -- proto: SurveillanceCameraScience - entities: - - uid: 13704 - components: - - rot: 3.141592653589793 rad - pos: -11.5,-1.5 - parent: 1 - type: Transform - - id: Main Area - type: SurveillanceCamera - - uid: 13705 - components: - - rot: 3.141592653589793 rad - pos: 2.5,-8.5 - parent: 1 - type: Transform - - id: Xenoarch - type: SurveillanceCamera - - uid: 13706 - components: - - rot: 3.141592653589793 rad - pos: -12.5,-10.5 - parent: 1 - type: Transform - - id: Anomaly Lab - type: SurveillanceCamera - - uid: 13707 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - type: Transform - - id: Robotics Room - type: SurveillanceCamera - - uid: 13726 - components: - - pos: -10.5,4.5 - parent: 1 - type: Transform - - id: Entrance - type: SurveillanceCamera -- proto: SurveillanceCameraSecurity - entities: - - uid: 9146 - components: - - rot: 3.141592653589793 rad - pos: -63.5,55.5 - parent: 1 - type: Transform - - id: Equipment Room - type: SurveillanceCamera - - uid: 9147 - components: - - rot: 1.5707963267948966 rad - pos: -50.5,56.5 - parent: 1 - type: Transform - - id: Brig Area - type: SurveillanceCamera - - uid: 9148 - components: - - rot: -1.5707963267948966 rad - pos: -48.5,50.5 - parent: 1 - type: Transform - - id: Entrance - type: SurveillanceCamera - - uid: 9149 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,60.5 - parent: 1 - type: Transform - - id: Warden's Office - type: SurveillanceCamera - - uid: 9150 - components: - - rot: -1.5707963267948966 rad - pos: -56.5,64.5 - parent: 1 - type: Transform - - id: Breakroom - type: SurveillanceCamera - - uid: 9151 - components: - - pos: -51.5,60.5 - parent: 1 - type: Transform - - id: Main Hall - type: SurveillanceCamera - - uid: 9152 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,63.5 - parent: 1 - type: Transform - - id: Armory - type: SurveillanceCamera - - uid: 9153 - components: - - pos: -51.5,71.5 - parent: 1 - type: Transform - - id: Space Bridge - type: SurveillanceCamera - - uid: 9154 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,86.5 - parent: 1 - type: Transform - - id: Perma Hall - type: SurveillanceCamera - - uid: 9155 - components: - - rot: 1.5707963267948966 rad - pos: -57.5,85.5 - parent: 1 - type: Transform - - id: Permabrig - type: SurveillanceCamera - - uid: 13089 - components: - - rot: 3.141592653589793 rad - pos: 0.5,10.5 - parent: 1 - type: Transform - - id: Evac Corridor Checkpoint - type: SurveillanceCamera - - uid: 13854 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,28.5 - parent: 1 - type: Transform - - id: Med Checkpoint - type: SurveillanceCamera -- proto: SurveillanceCameraService - entities: - - uid: 13741 - components: - - rot: 3.141592653589793 rad - pos: -28.5,47.5 - parent: 1 - type: Transform - - id: Freezer - type: SurveillanceCamera - - uid: 13742 - components: - - rot: 3.141592653589793 rad - pos: -35.5,47.5 - parent: 1 - type: Transform - - id: Kitchen - type: SurveillanceCamera - - uid: 13743 - components: - - pos: -42.5,41.5 - parent: 1 - type: Transform - - id: Botany - type: SurveillanceCamera - - uid: 13744 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,36.5 - parent: 1 - type: Transform - - id: Bar Right - type: SurveillanceCamera - - uid: 13745 - components: - - pos: -43.5,35.5 - parent: 1 - type: Transform - - id: Bar Left - type: SurveillanceCamera - - uid: 13746 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,51.5 - parent: 1 - type: Transform - - id: Botany Backroom - type: SurveillanceCamera -- proto: SurveillanceCameraSupply - entities: - - uid: 3835 - components: - - pos: -44.5,-13.5 - parent: 1 - type: Transform - - id: Salvage Bay - type: SurveillanceCamera - - uid: 6818 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,-9.5 - parent: 1 - type: Transform - - id: Cargo Dock - type: SurveillanceCamera - - uid: 13708 - components: - - pos: -35.5,0.5 - parent: 1 - type: Transform - - id: Reception Area - type: SurveillanceCamera - - uid: 13709 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,-5.5 - parent: 1 - type: Transform - - id: Cargo Bay - type: SurveillanceCamera -- proto: SurveillanceWirelessCameraMovableEntertainment - entities: - - uid: 8350 - components: - - rot: 3.141592653589793 rad - pos: -29.5,23.5 - parent: 1 - type: Transform -- proto: Syringe - entities: - - uid: 1963 - components: - - pos: -0.47509155,19.63882 - parent: 1 - type: Transform - - uid: 1964 - components: - - pos: -0.4652393,20.229368 - parent: 1 - type: Transform - - uid: 12770 - components: - - desc: A suspicious looking syringe. - name: suspicious syringe - type: MetaData - - pos: 19.469204,28.644407 - parent: 1 - type: Transform - - tags: [] - type: Tag - - solutions: - injector: - temperature: 293.15 - canMix: False - canReact: True - maxVol: 15 - reagents: - - data: null - ReagentId: Hyronalin - Quantity: 15 - type: SolutionContainerManager -- proto: Table - entities: - - uid: 64 - components: - - pos: 8.5,31.5 - parent: 1 - type: Transform - - uid: 230 - components: - - pos: -11.5,-5.5 - parent: 1 - type: Transform - - uid: 233 - components: - - pos: -10.5,-5.5 - parent: 1 - type: Transform - - uid: 235 - components: - - pos: -13.5,-1.5 - parent: 1 - type: Transform - - uid: 236 - components: - - pos: -12.5,-1.5 - parent: 1 - type: Transform - - uid: 237 - components: - - pos: -11.5,-1.5 - parent: 1 - type: Transform - - uid: 239 - components: - - pos: 2.5,-1.5 - parent: 1 - type: Transform - - uid: 241 - components: - - pos: 2.5,-2.5 - parent: 1 - type: Transform - - uid: 250 - components: - - pos: -9.5,2.5 - parent: 1 - type: Transform - - uid: 273 - components: - - pos: -7.5,3.5 - parent: 1 - type: Transform - - uid: 279 - components: - - pos: -0.5,-3.5 - parent: 1 - type: Transform - - uid: 280 - components: - - pos: -0.5,-4.5 - parent: 1 - type: Transform - - uid: 284 - components: - - pos: -17.5,-13.5 - parent: 1 - type: Transform - - uid: 288 - components: - - pos: -3.5,-5.5 - parent: 1 - type: Transform - - uid: 289 - components: - - pos: -4.5,-5.5 - parent: 1 - type: Transform - - uid: 322 - components: - - pos: -14.5,-14.5 - parent: 1 - type: Transform - - uid: 328 - components: - - pos: -16.5,-14.5 - parent: 1 - type: Transform - - uid: 329 - components: - - pos: -15.5,-14.5 - parent: 1 - type: Transform - - uid: 330 - components: - - pos: -17.5,-14.5 - parent: 1 - type: Transform - - uid: 350 - components: - - pos: 5.5,-11.5 - parent: 1 - type: Transform - - uid: 352 - components: - - pos: 4.5,-11.5 - parent: 1 - type: Transform - - uid: 353 - components: - - pos: 2.5,-11.5 - parent: 1 - type: Transform - - uid: 578 - components: - - pos: 12.5,31.5 - parent: 1 - type: Transform - - uid: 579 - components: - - pos: 10.5,31.5 - parent: 1 - type: Transform - - uid: 923 - components: - - pos: 25.5,2.5 - parent: 1 - type: Transform - - uid: 1619 - components: - - rot: 3.141592653589793 rad - pos: 4.5,16.5 - parent: 1 - type: Transform - - uid: 1621 - components: - - rot: 3.141592653589793 rad - pos: 4.5,15.5 - parent: 1 - type: Transform - - uid: 1623 - components: - - rot: 3.141592653589793 rad - pos: 4.5,17.5 - parent: 1 - type: Transform - - uid: 1634 - components: - - pos: -0.5,7.5 - parent: 1 - type: Transform - - uid: 1668 - components: - - pos: 16.5,-7.5 - parent: 1 - type: Transform - - uid: 1669 - components: - - pos: 16.5,-8.5 - parent: 1 - type: Transform - - uid: 1872 - components: - - pos: 25.5,-7.5 - parent: 1 - type: Transform - - uid: 1874 - components: - - pos: 22.5,-7.5 - parent: 1 - type: Transform - - uid: 1948 - components: - - pos: 1.5,25.5 - parent: 1 - type: Transform - - uid: 1949 - components: - - pos: 1.5,26.5 - parent: 1 - type: Transform - - uid: 1950 - components: - - pos: -0.5,28.5 - parent: 1 - type: Transform - - uid: 2019 - components: - - pos: 0.5,7.5 - parent: 1 - type: Transform - - uid: 2020 - components: - - pos: 6.5,23.5 - parent: 1 - type: Transform - - uid: 2021 - components: - - pos: 6.5,22.5 - parent: 1 - type: Transform - - uid: 2022 - components: - - pos: 7.5,22.5 - parent: 1 - type: Transform - - uid: 2023 - components: - - pos: 8.5,22.5 - parent: 1 - type: Transform - - uid: 2025 - components: - - pos: 10.5,26.5 - parent: 1 - type: Transform - - uid: 2026 - components: - - pos: 10.5,25.5 - parent: 1 - type: Transform - - uid: 2027 - components: - - pos: 10.5,24.5 - parent: 1 - type: Transform - - uid: 2038 - components: - - pos: 8.5,33.5 - parent: 1 - type: Transform - - uid: 2039 - components: - - pos: 9.5,33.5 - parent: 1 - type: Transform - - uid: 2040 - components: - - pos: 10.5,33.5 - parent: 1 - type: Transform - - uid: 2042 - components: - - pos: 4.5,37.5 - parent: 1 - type: Transform - - uid: 2043 - components: - - pos: 4.5,38.5 - parent: 1 - type: Transform - - uid: 2044 - components: - - pos: 4.5,39.5 - parent: 1 - type: Transform - - uid: 2353 - components: - - pos: 11.5,19.5 - parent: 1 - type: Transform - - uid: 2354 - components: - - pos: 11.5,18.5 - parent: 1 - type: Transform - - uid: 2355 - components: - - pos: 8.5,17.5 - parent: 1 - type: Transform - - uid: 2356 - components: - - pos: 7.5,17.5 - parent: 1 - type: Transform - - uid: 2357 - components: - - pos: 6.5,17.5 - parent: 1 - type: Transform - - uid: 2358 - components: - - pos: 6.5,16.5 - parent: 1 - type: Transform - - uid: 2636 - components: - - pos: -9.5,28.5 - parent: 1 - type: Transform - - uid: 2765 - components: - - pos: -14.5,8.5 - parent: 1 - type: Transform - - uid: 2766 - components: - - pos: -14.5,9.5 - parent: 1 - type: Transform - - uid: 2767 - components: - - pos: -14.5,10.5 - parent: 1 - type: Transform - - uid: 2768 - components: - - pos: -10.5,8.5 - parent: 1 - type: Transform - - uid: 2769 - components: - - pos: -10.5,9.5 - parent: 1 - type: Transform - - uid: 2770 - components: - - pos: -10.5,11.5 - parent: 1 - type: Transform - - uid: 2771 - components: - - pos: -10.5,12.5 - parent: 1 - type: Transform - - uid: 2773 - components: - - pos: -14.5,13.5 - parent: 1 - type: Transform - - uid: 2774 - components: - - pos: -14.5,14.5 - parent: 1 - type: Transform - - uid: 2776 - components: - - pos: -10.5,15.5 - parent: 1 - type: Transform - - uid: 2840 - components: - - pos: -16.5,29.5 - parent: 1 - type: Transform - - uid: 2841 - components: - - pos: -15.5,29.5 - parent: 1 - type: Transform - - uid: 2845 - components: - - pos: -15.5,24.5 - parent: 1 - type: Transform - - uid: 2885 - components: - - pos: 25.5,-8.5 - parent: 1 - type: Transform - - uid: 2951 - components: - - pos: 29.5,-4.5 - parent: 1 - type: Transform - - uid: 2952 - components: - - pos: 28.5,-4.5 - parent: 1 - type: Transform - - uid: 2958 - components: - - pos: 8.5,-4.5 - parent: 1 - type: Transform - - uid: 2959 - components: - - pos: 7.5,-4.5 - parent: 1 - type: Transform - - uid: 3038 - components: - - pos: -15.5,25.5 - parent: 1 - type: Transform - - uid: 3507 - components: - - pos: -21.5,-10.5 - parent: 1 - type: Transform - - uid: 3508 - components: - - pos: -21.5,-11.5 - parent: 1 - type: Transform - - uid: 3515 - components: - - pos: -19.5,-10.5 - parent: 1 - type: Transform - - uid: 3532 - components: - - pos: -39.5,1.5 - parent: 1 - type: Transform - - uid: 3534 - components: - - pos: -39.5,0.5 - parent: 1 - type: Transform - - uid: 3535 - components: - - pos: -38.5,2.5 - parent: 1 - type: Transform - - uid: 3536 - components: - - pos: -37.5,2.5 - parent: 1 - type: Transform - - uid: 3545 - components: - - pos: -36.5,2.5 - parent: 1 - type: Transform - - uid: 3546 - components: - - pos: -35.5,1.5 - parent: 1 - type: Transform - - uid: 3547 - components: - - pos: -35.5,0.5 - parent: 1 - type: Transform - - uid: 3671 - components: - - pos: -42.5,1.5 - parent: 1 - type: Transform - - uid: 3741 - components: - - pos: -46.5,2.5 - parent: 1 - type: Transform - - uid: 3742 - components: - - pos: -46.5,1.5 - parent: 1 - type: Transform - - uid: 3743 - components: - - pos: -46.5,0.5 - parent: 1 - type: Transform - - uid: 4128 - components: - - pos: -26.5,24.5 - parent: 1 - type: Transform - - uid: 4129 - components: - - pos: -25.5,24.5 - parent: 1 - type: Transform - - uid: 4130 - components: - - pos: -24.5,24.5 - parent: 1 - type: Transform - - uid: 4131 - components: - - pos: -23.5,24.5 - parent: 1 - type: Transform - - uid: 4132 - components: - - pos: -22.5,24.5 - parent: 1 - type: Transform - - uid: 4207 - components: - - pos: -42.5,23.5 - parent: 1 - type: Transform - - uid: 4208 - components: - - pos: -41.5,23.5 - parent: 1 - type: Transform - - uid: 4209 - components: - - pos: -40.5,23.5 - parent: 1 - type: Transform - - uid: 4210 - components: - - pos: -42.5,24.5 - parent: 1 - type: Transform - - uid: 4211 - components: - - pos: -42.5,28.5 - parent: 1 - type: Transform - - uid: 4212 - components: - - pos: -41.5,28.5 - parent: 1 - type: Transform - - uid: 4213 - components: - - pos: -40.5,28.5 - parent: 1 - type: Transform - - uid: 4214 - components: - - pos: -40.5,27.5 - parent: 1 - type: Transform - - uid: 4557 - components: - - pos: 23.5,40.5 - parent: 1 - type: Transform - - uid: 5250 - components: - - pos: -53.5,17.5 - parent: 1 - type: Transform - - uid: 5251 - components: - - pos: -54.5,17.5 - parent: 1 - type: Transform - - uid: 5256 - components: - - pos: -54.5,21.5 - parent: 1 - type: Transform - - uid: 5257 - components: - - pos: -53.5,21.5 - parent: 1 - type: Transform - - uid: 5258 - components: - - pos: -52.5,21.5 - parent: 1 - type: Transform - - uid: 5259 - components: - - pos: -53.5,13.5 - parent: 1 - type: Transform - - uid: 5278 - components: - - pos: -52.5,17.5 - parent: 1 - type: Transform - - uid: 5283 - components: - - pos: -54.5,29.5 - parent: 1 - type: Transform - - uid: 5284 - components: - - pos: -53.5,29.5 - parent: 1 - type: Transform - - uid: 5285 - components: - - pos: -52.5,29.5 - parent: 1 - type: Transform - - uid: 5286 - components: - - pos: -51.5,29.5 - parent: 1 - type: Transform - - uid: 5287 - components: - - pos: -47.5,29.5 - parent: 1 - type: Transform - - uid: 5288 - components: - - pos: -47.5,28.5 - parent: 1 - type: Transform - - uid: 5289 - components: - - pos: -47.5,27.5 - parent: 1 - type: Transform - - uid: 5325 - components: - - pos: 23.5,38.5 - parent: 1 - type: Transform - - uid: 5339 - components: - - pos: 23.5,42.5 - parent: 1 - type: Transform - - uid: 5407 - components: - - pos: -28.5,-8.5 - parent: 1 - type: Transform - - uid: 5424 - components: - - pos: -18.5,0.5 - parent: 1 - type: Transform - - uid: 5425 - components: - - pos: -29.5,-2.5 - parent: 1 - type: Transform - - uid: 5440 - components: - - pos: -23.5,-3.5 - parent: 1 - type: Transform - - uid: 5520 - components: - - pos: -47.5,-6.5 - parent: 1 - type: Transform - - uid: 5521 - components: - - pos: -47.5,-7.5 - parent: 1 - type: Transform - - uid: 5601 - components: - - pos: -41.5,13.5 - parent: 1 - type: Transform - - uid: 5602 - components: - - pos: -46.5,15.5 - parent: 1 - type: Transform - - uid: 5603 - components: - - pos: -47.5,15.5 - parent: 1 - type: Transform - - uid: 5610 - components: - - pos: -45.5,25.5 - parent: 1 - type: Transform - - uid: 5611 - components: - - pos: -45.5,24.5 - parent: 1 - type: Transform - - uid: 5635 - components: - - pos: -26.5,26.5 - parent: 1 - type: Transform - - uid: 5636 - components: - - pos: -25.5,26.5 - parent: 1 - type: Transform - - uid: 5637 - components: - - pos: -24.5,26.5 - parent: 1 - type: Transform - - uid: 5639 - components: - - pos: -24.5,29.5 - parent: 1 - type: Transform - - uid: 5713 - components: - - pos: -22.5,20.5 - parent: 1 - type: Transform - - uid: 5717 - components: - - pos: -30.5,12.5 - parent: 1 - type: Transform - - uid: 5718 - components: - - pos: -34.5,13.5 - parent: 1 - type: Transform - - uid: 5720 - components: - - pos: -20.5,14.5 - parent: 1 - type: Transform - - uid: 5784 - components: - - pos: -7.5,22.5 - parent: 1 - type: Transform - - uid: 6329 - components: - - pos: 9.5,46.5 - parent: 1 - type: Transform - - uid: 6330 - components: - - pos: -0.5,51.5 - parent: 1 - type: Transform - - uid: 6512 - components: - - pos: -18.5,66.5 - parent: 1 - type: Transform - - uid: 6513 - components: - - pos: -17.5,66.5 - parent: 1 - type: Transform - - uid: 6514 - components: - - pos: -18.5,65.5 - parent: 1 - type: Transform - - uid: 6515 - components: - - pos: -19.5,65.5 - parent: 1 - type: Transform - - uid: 6516 - components: - - pos: -15.5,66.5 - parent: 1 - type: Transform - - uid: 6517 - components: - - pos: -14.5,66.5 - parent: 1 - type: Transform - - uid: 6518 - components: - - pos: -14.5,65.5 - parent: 1 - type: Transform - - uid: 6519 - components: - - pos: -13.5,65.5 - parent: 1 - type: Transform - - uid: 6520 - components: - - pos: -12.5,63.5 - parent: 1 - type: Transform - - uid: 6521 - components: - - pos: -20.5,63.5 - parent: 1 - type: Transform - - uid: 6522 - components: - - pos: -21.5,62.5 - parent: 1 - type: Transform - - uid: 6523 - components: - - pos: -21.5,59.5 - parent: 1 - type: Transform - - uid: 6524 - components: - - pos: -11.5,62.5 - parent: 1 - type: Transform - - uid: 6525 - components: - - pos: -11.5,59.5 - parent: 1 - type: Transform - - uid: 6890 - components: - - pos: -45.5,42.5 - parent: 1 - type: Transform - - uid: 6891 - components: - - pos: -45.5,43.5 - parent: 1 - type: Transform - - uid: 6892 - components: - - pos: -45.5,44.5 - parent: 1 - type: Transform - - uid: 6893 - components: - - pos: -39.5,43.5 - parent: 1 - type: Transform - - uid: 6894 - components: - - pos: -39.5,44.5 - parent: 1 - type: Transform - - uid: 6895 - components: - - pos: -39.5,45.5 - parent: 1 - type: Transform - - uid: 6896 - components: - - pos: -39.5,46.5 - parent: 1 - type: Transform - - uid: 6897 - components: - - pos: -36.5,41.5 - parent: 1 - type: Transform - - uid: 6898 - components: - - pos: -35.5,41.5 - parent: 1 - type: Transform - - uid: 6909 - components: - - pos: -36.5,45.5 - parent: 1 - type: Transform - - uid: 6910 - components: - - pos: -36.5,44.5 - parent: 1 - type: Transform - - uid: 6911 - components: - - pos: -35.5,45.5 - parent: 1 - type: Transform - - uid: 6912 - components: - - pos: -35.5,44.5 - parent: 1 - type: Transform - - uid: 6913 - components: - - pos: -34.5,45.5 - parent: 1 - type: Transform - - uid: 6914 - components: - - pos: -34.5,44.5 - parent: 1 - type: Transform - - uid: 6915 - components: - - pos: -37.5,47.5 - parent: 1 - type: Transform - - uid: 6916 - components: - - pos: -36.5,47.5 - parent: 1 - type: Transform - - uid: 6917 - components: - - pos: -35.5,47.5 - parent: 1 - type: Transform - - uid: 6920 - components: - - pos: -33.5,42.5 - parent: 1 - type: Transform - - uid: 6921 - components: - - pos: -32.5,42.5 - parent: 1 - type: Transform - - uid: 6922 - components: - - pos: -33.5,44.5 - parent: 1 - type: Transform - - uid: 6923 - components: - - pos: -33.5,45.5 - parent: 1 - type: Transform - - uid: 7073 - components: - - pos: -53.5,36.5 - parent: 1 - type: Transform - - uid: 7296 - components: - - pos: -59.5,89.5 - parent: 1 - type: Transform - - uid: 7298 - components: - - pos: -61.5,88.5 - parent: 1 - type: Transform - - uid: 7302 - components: - - pos: -61.5,89.5 - parent: 1 - type: Transform - - uid: 7438 - components: - - pos: -50.5,88.5 - parent: 1 - type: Transform - - uid: 7443 - components: - - pos: -50.5,89.5 - parent: 1 - type: Transform - - uid: 7564 - components: - - pos: -19.5,36.5 - parent: 1 - type: Transform - - uid: 7571 - components: - - pos: -19.5,39.5 - parent: 1 - type: Transform - - uid: 7572 - components: - - pos: -19.5,40.5 - parent: 1 - type: Transform - - uid: 7640 - components: - - pos: -54.5,82.5 - parent: 1 - type: Transform - - uid: 7641 - components: - - pos: -54.5,88.5 - parent: 1 - type: Transform - - uid: 7711 - components: - - pos: -58.5,89.5 - parent: 1 - type: Transform - - uid: 7738 - components: - - pos: -60.5,89.5 - parent: 1 - type: Transform - - uid: 7902 - components: - - pos: -47.5,56.5 - parent: 1 - type: Transform - - uid: 7903 - components: - - pos: -47.5,63.5 - parent: 1 - type: Transform - - uid: 7905 - components: - - pos: -48.5,59.5 - parent: 1 - type: Transform - - uid: 7906 - components: - - pos: -47.5,59.5 - parent: 1 - type: Transform - - uid: 7960 - components: - - pos: -55.5,58.5 - parent: 1 - type: Transform - - uid: 7961 - components: - - pos: -56.5,58.5 - parent: 1 - type: Transform - - uid: 7963 - components: - - pos: -53.5,58.5 - parent: 1 - type: Transform - - uid: 7967 - components: - - pos: -60.5,50.5 - parent: 1 - type: Transform - - uid: 7968 - components: - - pos: -61.5,50.5 - parent: 1 - type: Transform - - uid: 7969 - components: - - pos: -62.5,50.5 - parent: 1 - type: Transform - - uid: 7970 - components: - - pos: -63.5,50.5 - parent: 1 - type: Transform - - uid: 7971 - components: - - pos: -63.5,51.5 - parent: 1 - type: Transform - - uid: 7984 - components: - - pos: -60.5,58.5 - parent: 1 - type: Transform - - uid: 8170 - components: - - pos: 20.5,32.5 - parent: 1 - type: Transform - - uid: 9006 - components: - - pos: -32.5,-5.5 - parent: 1 - type: Transform - - uid: 9070 - components: - - pos: 17.5,42.5 - parent: 1 - type: Transform - - uid: 9082 - components: - - pos: 18.5,40.5 - parent: 1 - type: Transform - - uid: 9226 - components: - - pos: -63.5,41.5 - parent: 1 - type: Transform - - uid: 9274 - components: - - pos: -60.5,41.5 - parent: 1 - type: Transform - - uid: 9948 - components: - - rot: 1.5707963267948966 rad - pos: -64.5,14.5 - parent: 1 - type: Transform - - uid: 9949 - components: - - rot: 1.5707963267948966 rad - pos: -81.5,22.5 - parent: 1 - type: Transform - - uid: 9950 - components: - - rot: 1.5707963267948966 rad - pos: -80.5,22.5 - parent: 1 - type: Transform - - uid: 10095 - components: - - pos: -13.5,-7.5 - parent: 1 - type: Transform - - uid: 10362 - components: - - pos: -3.5,43.5 - parent: 1 - type: Transform - - uid: 10366 - components: - - pos: -3.5,42.5 - parent: 1 - type: Transform - - uid: 10370 - components: - - pos: -29.5,49.5 - parent: 1 - type: Transform - - uid: 10371 - components: - - pos: -28.5,49.5 - parent: 1 - type: Transform - - uid: 10403 - components: - - pos: 22.5,29.5 - parent: 1 - type: Transform - - uid: 10719 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,25.5 - parent: 1 - type: Transform - - uid: 10720 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,25.5 - parent: 1 - type: Transform - - uid: 10721 - components: - - rot: -1.5707963267948966 rad - pos: -64.5,25.5 - parent: 1 - type: Transform - - uid: 10722 - components: - - rot: -1.5707963267948966 rad - pos: -63.5,25.5 - parent: 1 - type: Transform - - uid: 10731 - components: - - rot: -1.5707963267948966 rad - pos: -82.5,29.5 - parent: 1 - type: Transform - - uid: 10732 - components: - - rot: -1.5707963267948966 rad - pos: -82.5,30.5 - parent: 1 - type: Transform - - uid: 10733 - components: - - rot: -1.5707963267948966 rad - pos: -82.5,31.5 - parent: 1 - type: Transform - - uid: 10851 - components: - - pos: -61.5,41.5 - parent: 1 - type: Transform - - uid: 12512 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,14.5 - parent: 1 - type: Transform - - uid: 12767 - components: - - pos: 18.5,28.5 - parent: 1 - type: Transform - - uid: 12768 - components: - - pos: 19.5,28.5 - parent: 1 - type: Transform - - uid: 12769 - components: - - pos: 20.5,28.5 - parent: 1 - type: Transform - - uid: 12902 - components: - - pos: 4.5,8.5 - parent: 1 - type: Transform - - uid: 12903 - components: - - pos: 5.5,8.5 - parent: 1 - type: Transform - - uid: 13083 - components: - - pos: -2.5,10.5 - parent: 1 - type: Transform - - uid: 13084 - components: - - pos: -1.5,10.5 - parent: 1 - type: Transform - - uid: 14239 - components: - - pos: -73.5,51.5 - parent: 1 - type: Transform - - uid: 14240 - components: - - pos: -72.5,51.5 - parent: 1 - type: Transform - - uid: 14245 - components: - - rot: 3.141592653589793 rad - pos: -66.5,41.5 - parent: 1 - type: Transform - - uid: 14246 - components: - - rot: 3.141592653589793 rad - pos: -66.5,42.5 - parent: 1 - type: Transform - - uid: 14315 - components: - - rot: 3.141592653589793 rad - pos: -74.5,46.5 - parent: 1 - type: Transform - - uid: 14580 - components: - - pos: -60.5,19.5 - parent: 1 - type: Transform - - uid: 14586 - components: - - rot: -1.5707963267948966 rad - pos: -61.5,25.5 - parent: 1 - type: Transform - - uid: 14590 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,10.5 - parent: 1 - type: Transform - - uid: 15110 - components: - - pos: 14.5,-7.5 - parent: 1 - type: Transform - - uid: 15547 - components: - - pos: 11.5,-20.5 - parent: 1 - type: Transform - - uid: 15548 - components: - - pos: 12.5,-20.5 - parent: 1 - type: Transform -- proto: TableCarpet - entities: - - uid: 6782 - components: - - pos: -37.5,52.5 - parent: 1 - type: Transform - - uid: 6822 - components: - - pos: -36.5,52.5 - parent: 1 - type: Transform - - uid: 6823 - components: - - pos: -35.5,52.5 - parent: 1 - type: Transform - - uid: 6824 - components: - - pos: -34.5,52.5 - parent: 1 - type: Transform -- proto: TableFrame - entities: - - uid: 1934 - components: - - pos: -4.5,21.5 - parent: 1 - type: Transform - - uid: 1939 - components: - - pos: -4.5,24.5 - parent: 1 - type: Transform - - uid: 7140 - components: - - pos: -64.5,41.5 - parent: 1 - type: Transform - - uid: 7514 - components: - - pos: -25.5,55.5 - parent: 1 - type: Transform - - uid: 7515 - components: - - pos: -25.5,54.5 - parent: 1 - type: Transform - - uid: 10923 - components: - - pos: -61.5,39.5 - parent: 1 - type: Transform -- proto: TableGlass - entities: - - uid: 342 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,-11.5 - parent: 1 - type: Transform - - uid: 1935 - components: - - pos: -3.5,27.5 - parent: 1 - type: Transform - - uid: 1937 - components: - - pos: 0.5,27.5 - parent: 1 - type: Transform - - uid: 1938 - components: - - pos: -4.5,20.5 - parent: 1 - type: Transform - - uid: 1941 - components: - - pos: -0.5,19.5 - parent: 1 - type: Transform - - uid: 1942 - components: - - pos: -0.5,22.5 - parent: 1 - type: Transform - - uid: 1943 - components: - - pos: -0.5,20.5 - parent: 1 - type: Transform - - uid: 1945 - components: - - pos: -0.5,21.5 - parent: 1 - type: Transform - - uid: 2035 - components: - - pos: 15.5,28.5 - parent: 1 - type: Transform - - uid: 2036 - components: - - pos: 16.5,28.5 - parent: 1 - type: Transform -- proto: TableReinforced - entities: - - uid: 1327 - components: - - pos: 10.5,-13.5 - parent: 1 - type: Transform - - uid: 2969 - components: - - rot: 1.5707963267948966 rad - pos: 27.5,23.5 - parent: 1 - type: Transform - - uid: 7912 - components: - - pos: -43.5,61.5 - parent: 1 - type: Transform - - uid: 7913 - components: - - pos: -42.5,61.5 - parent: 1 - type: Transform - - uid: 7914 - components: - - pos: -41.5,61.5 - parent: 1 - type: Transform - - uid: 7915 - components: - - pos: -41.5,62.5 - parent: 1 - type: Transform - - uid: 7916 - components: - - pos: -41.5,63.5 - parent: 1 - type: Transform - - uid: 10857 - components: - - pos: -23.5,54.5 - parent: 1 - type: Transform - - uid: 10858 - components: - - pos: -23.5,53.5 - parent: 1 - type: Transform - - uid: 10859 - components: - - pos: -22.5,53.5 - parent: 1 - type: Transform - - uid: 14818 - components: - - pos: -21.5,53.5 - parent: 1 - type: Transform -- proto: TableReinforcedGlass - entities: - - uid: 6940 - components: - - pos: -42.5,47.5 - parent: 1 - type: Transform - - uid: 6948 - components: - - pos: -43.5,47.5 - parent: 1 - type: Transform -- proto: TableStone - entities: - - uid: 1808 - components: - - pos: 13.5,3.5 - parent: 1 - type: Transform - - uid: 1809 - components: - - pos: 14.5,3.5 - parent: 1 - type: Transform - - uid: 1811 - components: - - pos: 16.5,3.5 - parent: 1 - type: Transform - - uid: 1812 - components: - - pos: 17.5,3.5 - parent: 1 - type: Transform -- proto: TableWood - entities: - - uid: 246 - components: - - pos: -1.5,1.5 - parent: 1 - type: Transform - - uid: 628 - components: - - pos: 6.5,-2.5 - parent: 1 - type: Transform - - uid: 629 - components: - - pos: 7.5,2.5 - parent: 1 - type: Transform - - uid: 910 - components: - - pos: 27.5,-1.5 - parent: 1 - type: Transform - - uid: 911 - components: - - pos: 28.5,-1.5 - parent: 1 - type: Transform - - uid: 1279 - components: - - pos: 14.5,31.5 - parent: 1 - type: Transform - - uid: 1313 - components: - - pos: 15.5,31.5 - parent: 1 - type: Transform - - uid: 1521 - components: - - pos: -17.5,-4.5 - parent: 1 - type: Transform - - uid: 1833 - components: - - pos: 21.5,-2.5 - parent: 1 - type: Transform - - uid: 1834 - components: - - pos: 21.5,-1.5 - parent: 1 - type: Transform - - uid: 1974 - components: - - pos: -1.5,34.5 - parent: 1 - type: Transform - - uid: 1975 - components: - - pos: -1.5,33.5 - parent: 1 - type: Transform - - uid: 1976 - components: - - pos: -1.5,32.5 - parent: 1 - type: Transform - - uid: 1977 - components: - - pos: -0.5,32.5 - parent: 1 - type: Transform - - uid: 1978 - components: - - pos: 0.5,32.5 - parent: 1 - type: Transform - - uid: 2260 - components: - - pos: 16.5,15.5 - parent: 1 - type: Transform - - uid: 2261 - components: - - pos: 17.5,15.5 - parent: 1 - type: Transform - - uid: 2262 - components: - - pos: 18.5,15.5 - parent: 1 - type: Transform - - uid: 2263 - components: - - pos: 19.5,15.5 - parent: 1 - type: Transform - - uid: 2264 - components: - - pos: 20.5,15.5 - parent: 1 - type: Transform - - uid: 2265 - components: - - pos: 17.5,19.5 - parent: 1 - type: Transform - - uid: 2991 - components: - - pos: 24.5,14.5 - parent: 1 - type: Transform - - uid: 3096 - components: - - pos: -27.5,13.5 - parent: 1 - type: Transform - - uid: 3097 - components: - - pos: -28.5,13.5 - parent: 1 - type: Transform - - uid: 3103 - components: - - pos: -27.5,9.5 - parent: 1 - type: Transform - - uid: 3104 - components: - - pos: -26.5,9.5 - parent: 1 - type: Transform - - uid: 3105 - components: - - pos: -25.5,9.5 - parent: 1 - type: Transform - - uid: 3106 - components: - - pos: -24.5,9.5 - parent: 1 - type: Transform - - uid: 3107 - components: - - pos: -24.5,8.5 - parent: 1 - type: Transform - - uid: 3183 - components: - - pos: -27.5,17.5 - parent: 1 - type: Transform - - uid: 3185 - components: - - pos: -26.5,17.5 - parent: 1 - type: Transform - - uid: 3186 - components: - - pos: -26.5,16.5 - parent: 1 - type: Transform - - uid: 3196 - components: - - pos: -31.5,9.5 - parent: 1 - type: Transform - - uid: 3201 - components: - - pos: -27.5,16.5 - parent: 1 - type: Transform - - uid: 3572 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,15.5 - parent: 1 - type: Transform - - uid: 3575 - components: - - pos: -31.5,-1.5 - parent: 1 - type: Transform - - uid: 3577 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,-3.5 - parent: 1 - type: Transform - - uid: 3584 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,15.5 - parent: 1 - type: Transform - - uid: 3692 - components: - - pos: -37.5,-9.5 - parent: 1 - type: Transform - - uid: 3727 - components: - - pos: -45.5,-3.5 - parent: 1 - type: Transform - - uid: 3747 - components: - - pos: -45.5,-7.5 - parent: 1 - type: Transform - - uid: 3749 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,-6.5 - parent: 1 - type: Transform - - uid: 5342 - components: - - rot: 3.141592653589793 rad - pos: -50.5,9.5 - parent: 1 - type: Transform - - uid: 5343 - components: - - rot: 3.141592653589793 rad - pos: -48.5,9.5 - parent: 1 - type: Transform - - uid: 5351 - components: - - pos: -54.5,-5.5 - parent: 1 - type: Transform - - uid: 5352 - components: - - pos: -53.5,-5.5 - parent: 1 - type: Transform - - uid: 5353 - components: - - pos: -52.5,-5.5 - parent: 1 - type: Transform - - uid: 5354 - components: - - pos: -53.5,-0.5 - parent: 1 - type: Transform - - uid: 5355 - components: - - pos: -53.5,-1.5 - parent: 1 - type: Transform - - uid: 6077 - components: - - rot: 3.141592653589793 rad - pos: -49.5,9.5 - parent: 1 - type: Transform - - uid: 6243 - components: - - pos: -9.5,44.5 - parent: 1 - type: Transform - - uid: 6244 - components: - - pos: -8.5,44.5 - parent: 1 - type: Transform - - uid: 6245 - components: - - pos: -6.5,44.5 - parent: 1 - type: Transform - - uid: 6331 - components: - - pos: 2.5,49.5 - parent: 1 - type: Transform - - uid: 6332 - components: - - pos: 15.5,50.5 - parent: 1 - type: Transform - - uid: 6333 - components: - - pos: 14.5,50.5 - parent: 1 - type: Transform - - uid: 6510 - components: - - pos: -6.5,61.5 - parent: 1 - type: Transform - - uid: 6511 - components: - - pos: -7.5,61.5 - parent: 1 - type: Transform - - uid: 6646 - components: - - pos: -10.5,55.5 - parent: 1 - type: Transform - - uid: 6647 - components: - - pos: -9.5,55.5 - parent: 1 - type: Transform - - uid: 6648 - components: - - pos: -8.5,55.5 - parent: 1 - type: Transform - - uid: 6899 - components: - - pos: -33.5,38.5 - parent: 1 - type: Transform - - uid: 6901 - components: - - pos: -33.5,36.5 - parent: 1 - type: Transform - - uid: 6902 - components: - - pos: -33.5,35.5 - parent: 1 - type: Transform - - uid: 7357 - components: - - rot: 1.5707963267948966 rad - pos: -3.5,0.5 - parent: 1 - type: Transform - - uid: 7373 - components: - - pos: -5.5,44.5 - parent: 1 - type: Transform - - uid: 7388 - components: - - pos: -37.5,-10.5 - parent: 1 - type: Transform - - uid: 7528 - components: - - pos: -22.5,46.5 - parent: 1 - type: Transform - - uid: 7529 - components: - - pos: -21.5,46.5 - parent: 1 - type: Transform - - uid: 7542 - components: - - pos: -19.5,47.5 - parent: 1 - type: Transform - - uid: 7543 - components: - - pos: -19.5,48.5 - parent: 1 - type: Transform - - uid: 7544 - components: - - pos: -19.5,46.5 - parent: 1 - type: Transform - - uid: 7924 - components: - - pos: -54.5,64.5 - parent: 1 - type: Transform - - uid: 7925 - components: - - pos: -56.5,63.5 - parent: 1 - type: Transform - - uid: 7926 - components: - - pos: -56.5,64.5 - parent: 1 - type: Transform - - uid: 7927 - components: - - pos: -60.5,64.5 - parent: 1 - type: Transform - - uid: 7928 - components: - - pos: -60.5,63.5 - parent: 1 - type: Transform - - uid: 7929 - components: - - pos: -58.5,64.5 - parent: 1 - type: Transform - - uid: 8071 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,16.5 - parent: 1 - type: Transform - - uid: 9728 - components: - - pos: -30.5,39.5 - parent: 1 - type: Transform - - uid: 9729 - components: - - pos: -30.5,38.5 - parent: 1 - type: Transform - - uid: 9730 - components: - - pos: -30.5,36.5 - parent: 1 - type: Transform - - uid: 9731 - components: - - pos: -30.5,35.5 - parent: 1 - type: Transform - - uid: 9747 - components: - - pos: -41.5,35.5 - parent: 1 - type: Transform - - uid: 9748 - components: - - pos: -44.5,36.5 - parent: 1 - type: Transform - - uid: 9750 - components: - - pos: -38.5,37.5 - parent: 1 - type: Transform - - uid: 9751 - components: - - pos: -37.5,37.5 - parent: 1 - type: Transform - - uid: 9752 - components: - - pos: -36.5,37.5 - parent: 1 - type: Transform - - uid: 9770 - components: - - pos: -38.5,40.5 - parent: 1 - type: Transform - - uid: 10256 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,-2.5 - parent: 1 - type: Transform - - uid: 10702 - components: - - rot: -1.5707963267948966 rad - pos: -68.5,16.5 - parent: 1 - type: Transform - - uid: 10853 - components: - - pos: -63.5,39.5 - parent: 1 - type: Transform - - uid: 10922 - components: - - pos: -62.5,39.5 - parent: 1 - type: Transform - - uid: 10964 - components: - - pos: -72.5,41.5 - parent: 1 - type: Transform - - uid: 10965 - components: - - pos: -70.5,39.5 - parent: 1 - type: Transform - - uid: 14000 - components: - - pos: -70.5,45.5 - parent: 1 - type: Transform - - uid: 14001 - components: - - pos: -69.5,45.5 - parent: 1 - type: Transform - - uid: 14203 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,15.5 - parent: 1 - type: Transform - - uid: 14206 - components: - - pos: -37.5,-13.5 - parent: 1 - type: Transform - - uid: 14282 - components: - - pos: -71.5,49.5 - parent: 1 - type: Transform - - uid: 14283 - components: - - pos: -70.5,49.5 - parent: 1 - type: Transform - - uid: 14288 - components: - - pos: -72.5,47.5 - parent: 1 - type: Transform - - uid: 15012 - components: - - pos: 18.5,48.5 - parent: 1 - type: Transform - - uid: 15093 - components: - - pos: -38.5,-9.5 - parent: 1 - type: Transform - - uid: 15220 - components: - - pos: 17.5,52.5 - parent: 1 - type: Transform -- proto: TelecomServer - entities: - - uid: 982 - components: - - pos: 26.5,28.5 - parent: 1 - type: Transform - - containers: - key_slots: !type:Container - showEnts: False - occludes: True - ents: - - 983 - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - type: ContainerContainer - - uid: 1026 - components: - - pos: 25.5,26.5 - parent: 1 - type: Transform - - containers: - key_slots: !type:Container - showEnts: False - occludes: True - ents: - - 1027 - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - type: ContainerContainer - - uid: 2590 - components: - - pos: 25.5,25.5 - parent: 1 - type: Transform - - containers: - key_slots: !type:Container - showEnts: False - occludes: True - ents: - - 2591 - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - type: ContainerContainer - - uid: 15336 - components: - - pos: 25.5,28.5 - parent: 1 - type: Transform - - containers: - key_slots: !type:Container - showEnts: False - occludes: True - ents: - - 15337 - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - type: ContainerContainer - - uid: 15338 - components: - - pos: 27.5,28.5 - parent: 1 - type: Transform - - containers: - key_slots: !type:Container - showEnts: False - occludes: True - ents: - - 15339 - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - type: ContainerContainer - - uid: 15340 - components: - - pos: 28.5,28.5 - parent: 1 - type: Transform - - containers: - key_slots: !type:Container - showEnts: False - occludes: True - ents: - - 15341 - - 15342 - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - type: ContainerContainer - - uid: 15343 - components: - - pos: 28.5,26.5 - parent: 1 - type: Transform - - containers: - key_slots: !type:Container - showEnts: False - occludes: True - ents: - - 15344 - - 15345 - - 15346 - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - type: ContainerContainer - - uid: 15347 - components: - - pos: 28.5,25.5 - parent: 1 - type: Transform - - containers: - key_slots: !type:Container - showEnts: False - occludes: True - ents: - - 15348 - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - type: ContainerContainer -- proto: TintedWindow - entities: - - uid: 530 - components: - - pos: -42.5,-6.5 - parent: 1 - type: Transform - - uid: 536 - components: - - pos: -42.5,-7.5 - parent: 1 - type: Transform - - uid: 1325 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,31.5 - parent: 1 - type: Transform - - uid: 1397 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,30.5 - parent: 1 - type: Transform - - uid: 1664 - components: - - pos: 17.5,-11.5 - parent: 1 - type: Transform -- proto: ToiletDirtyWater - entities: - - uid: 1666 - components: - - rot: -1.5707963267948966 rad - pos: 19.5,-10.5 - parent: 1 - type: Transform - - uid: 4069 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,-1.5 - parent: 1 - type: Transform - - uid: 4070 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,0.5 - parent: 1 - type: Transform - - uid: 4071 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,2.5 - parent: 1 - type: Transform -- proto: ToiletEmpty - entities: - - uid: 7028 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,40.5 - parent: 1 - type: Transform - - containers: - stash: !type:ContainerSlot - showEnts: False - occludes: True - ent: 6979 - type: ContainerContainer - - uid: 7135 - components: - - pos: -64.5,42.5 - parent: 1 - type: Transform - - uid: 7322 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,86.5 - parent: 1 - type: Transform - - uid: 9954 - components: - - pos: -61.5,42.5 - parent: 1 - type: Transform - - uid: 10848 - components: - - rot: 3.141592653589793 rad - pos: -62.5,38.5 - parent: 1 - type: Transform - - uid: 10931 - components: - - pos: -64.5,45.5 - parent: 1 - type: Transform - - uid: 10932 - components: - - pos: -63.5,45.5 - parent: 1 - type: Transform - - uid: 10933 - components: - - pos: -60.5,45.5 - parent: 1 - type: Transform - - uid: 10951 - components: - - rot: 3.141592653589793 rad - pos: -64.5,39.5 - parent: 1 - type: Transform -- proto: ToolboxElectricalFilled - entities: - - uid: 5646 - components: - - pos: -25.110394,26.456669 - parent: 1 - type: Transform - - uid: 5840 - components: - - pos: -82.51737,30.870302 - parent: 1 - type: Transform - - uid: 13608 - components: - - pos: -63.54383,25.748787 - parent: 1 - type: Transform - - uid: 15549 - components: - - pos: 12.466422,-20.487698 - parent: 1 - type: Transform -- proto: ToolboxEmergencyFilled - entities: - - uid: 5645 - components: - - pos: -24.587534,26.550022 - parent: 1 - type: Transform - - uid: 10919 - components: - - pos: -21.512825,62.627495 - parent: 1 - type: Transform -- proto: ToolboxGoldFilled - entities: - - uid: 10871 - components: - - pos: -23.241955,53.59838 - parent: 1 - type: Transform -- proto: ToolboxMechanical - entities: - - uid: 4736 - components: - - pos: -8.936694,44.61425 - parent: 1 - type: Transform - - uid: 4738 - components: - - pos: -9.577319,44.598625 - parent: 1 - type: Transform - - uid: 5002 - components: - - pos: -8.436694,44.55175 - parent: 1 - type: Transform -- proto: ToolboxMechanicalFilled - entities: - - uid: 5641 - components: - - pos: -7.51254,9.424052 - parent: 1 - type: Transform - - uid: 5644 - components: - - pos: -25.165659,26.690647 - parent: 1 - type: Transform - - uid: 6065 - components: - - pos: -82.51737,30.995302 - parent: 1 - type: Transform - - uid: 10920 - components: - - pos: -11.49985,59.57393 - parent: 1 - type: Transform - - uid: 13609 - components: - - pos: -63.528206,25.389412 - parent: 1 - type: Transform - - uid: 15560 - components: - - pos: 12.466422,-20.253323 - parent: 1 - type: Transform -- proto: ToyDeathRipley - entities: - - uid: 3184 - components: - - pos: -26.45058,17.657667 - parent: 1 - type: Transform -- proto: ToyDurand - entities: - - uid: 3203 - components: - - pos: -27.13808,16.704542 - parent: 1 - type: Transform -- proto: ToyFireRipley - entities: - - uid: 3202 - components: - - pos: -26.466206,16.876417 - parent: 1 - type: Transform -- proto: ToyHonk - entities: - - uid: 3200 - components: - - pos: -27.54433,17.142042 - parent: 1 - type: Transform -- proto: ToyIan - entities: - - uid: 7576 - components: - - pos: -22.170961,37.297226 - parent: 1 - type: Transform -- proto: ToySkeleton - entities: - - uid: 15121 - components: - - pos: -4.60635,49.548958 - parent: 1 - type: Transform -- proto: ToySpawner - entities: - - uid: 3513 - components: - - pos: -19.5,-13.5 - parent: 1 - type: Transform - - uid: 3514 - components: - - pos: -19.5,-14.5 - parent: 1 - type: Transform - - uid: 5032 - components: - - pos: -31.5,25.5 - parent: 1 - type: Transform - - uid: 5046 - components: - - pos: -33.5,28.5 - parent: 1 - type: Transform - - uid: 15942 - components: - - pos: 18.5,-8.5 - parent: 1 - type: Transform -- proto: TrashBananaPeel - entities: - - uid: 1415 - components: - - pos: -37.219505,3.4937391 - parent: 1 - type: Transform - - uid: 1813 - components: - - pos: -47.903706,6.478619 - parent: 1 - type: Transform - - uid: 2259 - components: - - pos: -52.19529,31.223146 - parent: 1 - type: Transform - - uid: 2301 - components: - - pos: -34.750755,3.5093641 - parent: 1 - type: Transform - - uid: 2638 - components: - - pos: -58.333614,39.9851 - parent: 1 - type: Transform - - uid: 2660 - components: - - pos: -24.719154,34.580376 - parent: 1 - type: Transform - - uid: 2662 - components: - - pos: -46.437923,43.313522 - parent: 1 - type: Transform - - uid: 4161 - components: - - pos: -57.03674,38.469475 - parent: 1 - type: Transform - - uid: 15123 - components: - - pos: -42.080788,28.835457 - parent: 1 - type: Transform - - uid: 15124 - components: - - pos: -42.158913,28.601082 - parent: 1 - type: Transform - - uid: 15125 - components: - - pos: -42.237038,28.413582 - parent: 1 - type: Transform -- proto: TrashBananaPeelExplosive - entities: - - uid: 2791 - components: - - pos: -26.575481,55.467476 - parent: 1 - type: Transform - - uid: 15837 - components: - - pos: -29.528606,53.2956 - parent: 1 - type: Transform -- proto: trayScanner - entities: - - uid: 15559 - components: - - pos: 11.419547,-20.393948 - parent: 1 - type: Transform -- proto: TromboneInstrument - entities: - - uid: 10958 - components: - - pos: -69.56805,45.607796 - parent: 1 - type: Transform -- proto: TrumpetInstrument - entities: - - uid: 9676 - components: - - pos: -70.39617,45.607796 - parent: 1 - type: Transform -- proto: TwoWayLever - entities: - - uid: 523 - components: - - pos: 1.5,2.5 - parent: 1 - type: Transform - - linkedPorts: - 105: - - Left: Open - - Right: Open - - Middle: Close - 216: - - Left: Open - - Right: Open - - Middle: Close - 215: - - Left: Open - - Right: Open - - Middle: Close - type: DeviceLinkSource - - uid: 13823 - components: - - pos: -35.5,-8.5 - parent: 1 - type: Transform - - linkedPorts: - 13829: - - Left: Forward - - Right: Reverse - - Middle: Off - 13828: - - Left: Forward - - Right: Reverse - - Middle: Off - 13827: - - Left: Forward - - Right: Reverse - - Middle: Off - 13826: - - Left: Forward - - Right: Reverse - - Middle: Off - 13825: - - Left: Forward - - Right: Reverse - - Middle: Off - type: DeviceLinkSource - - uid: 13824 - components: - - pos: -31.5,-8.5 - parent: 1 - type: Transform - - linkedPorts: - 13834: - - Left: Forward - - Right: Reverse - - Middle: Off - 13833: - - Left: Forward - - Right: Reverse - - Middle: Off - 13832: - - Left: Forward - - Right: Reverse - - Middle: Off - 13831: - - Left: Forward - - Right: Reverse - - Middle: Off - 13830: - - Left: Forward - - Right: Reverse - - Middle: Off - type: DeviceLinkSource - - uid: 13842 - components: - - pos: -41.5,-9.5 - parent: 1 - type: Transform - - linkedPorts: - 6793: - - Left: Forward - - Right: Reverse - - Middle: Off - 6789: - - Left: Forward - - Right: Reverse - - Middle: Off - 7282: - - Left: Forward - - Right: Reverse - - Middle: Off - type: DeviceLinkSource - - uid: 13843 - components: - - pos: -38.5,-7.5 - parent: 1 - type: Transform - - linkedPorts: - 7282: - - Left: Forward - - Right: Reverse - - Middle: Off - 6789: - - Left: Forward - - Right: Reverse - - Middle: Off - 6793: - - Left: Forward - - Right: Reverse - - Middle: Off - type: DeviceLinkSource - - uid: 14233 - components: - - pos: -70.5,55.5 - parent: 1 - type: Transform - - linkedPorts: - 14225: - - Left: Forward - - Right: Reverse - - Middle: Off - 14226: - - Left: Forward - - Right: Reverse - - Middle: Off - 14224: - - Left: Forward - - Right: Reverse - - Middle: Off - 14227: - - Left: Forward - - Right: Reverse - - Middle: Off - 14228: - - Left: Forward - - Right: Reverse - - Middle: Off - 14229: - - Left: Forward - - Right: Reverse - - Middle: Off - 14230: - - Left: Forward - - Right: Reverse - - Middle: Off - type: DeviceLinkSource -- proto: UniformPrinter - entities: - - uid: 7560 - components: - - pos: -21.5,42.5 - parent: 1 - type: Transform -- proto: UniformShortsRed - entities: - - uid: 14365 - components: - - pos: -64.695595,14.460857 - parent: 1 - type: Transform - - uid: 14366 - components: - - pos: -64.24247,14.460857 - parent: 1 - type: Transform -- proto: UniformShortsRedWithTop - entities: - - uid: 14367 - components: - - pos: -64.601845,14.679607 - parent: 1 - type: Transform - - uid: 14368 - components: - - pos: -64.42997,14.679607 - parent: 1 - type: Transform -- proto: UprightPianoInstrument - entities: - - uid: 6705 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,42.5 - parent: 1 - type: Transform -- proto: UraniumWindow - entities: - - uid: 2696 - components: - - rot: 3.141592653589793 rad - pos: -24.5,30.5 - parent: 1 - type: Transform -- proto: Vaccinator - entities: - - uid: 2361 - components: - - pos: 11.5,17.5 - parent: 1 - type: Transform -- proto: VehicleKeyATV - entities: - - uid: 3519 - components: - - pos: -21.491938,-11.581937 - parent: 1 - type: Transform -- proto: VehicleKeyJanicart - entities: - - uid: 4162 - components: - - pos: -53.425735,36.403816 - parent: 1 - type: Transform - - uid: 15049 - components: - - flags: InContainer - type: MetaData - - parent: 7071 - type: Transform - - canCollide: False - type: Physics - - type: InsideEntityStorage -- proto: VehicleKeySecway - entities: - - uid: 8021 - components: - - pos: -63.41839,50.781906 - parent: 1 - type: Transform - - uid: 8022 - components: - - pos: -63.652763,50.594406 - parent: 1 - type: Transform -- proto: VehicleKeySkeleton - entities: - - uid: 15122 - components: - - pos: -4.309475,49.548958 - parent: 1 - type: Transform -- proto: VendingBarDrobe - entities: - - uid: 9726 - components: - - flags: SessionSpecific - type: MetaData - - pos: -27.5,38.5 - parent: 1 - type: Transform -- proto: VendingMachineAtmosDrobe - entities: - - uid: 133 - components: - - flags: SessionSpecific - type: MetaData - - pos: -84.5,32.5 - parent: 1 - type: Transform -- proto: VendingMachineBooze - entities: - - uid: 6339 - components: - - flags: SessionSpecific - type: MetaData - - pos: 13.5,50.5 - parent: 1 - type: Transform - - uid: 9727 - components: - - flags: SessionSpecific - type: MetaData - - pos: -30.5,40.5 - parent: 1 - type: Transform - - uid: 10103 - components: - - flags: SessionSpecific - type: MetaData - - pos: 4.5,49.5 - parent: 1 - type: Transform -- proto: VendingMachineCargoDrobe - entities: - - uid: 3655 - components: - - flags: SessionSpecific - type: MetaData - - pos: -41.5,-7.5 - parent: 1 - type: Transform -- proto: VendingMachineCart - entities: - - uid: 7561 - components: - - flags: SessionSpecific - type: MetaData - - pos: -22.5,42.5 - parent: 1 - type: Transform -- proto: VendingMachineChapel - entities: - - uid: 1835 - components: - - flags: SessionSpecific - type: MetaData - - pos: 19.5,-0.5 - parent: 1 - type: Transform -- proto: VendingMachineChefDrobe - entities: - - uid: 6930 - components: - - flags: SessionSpecific - type: MetaData - - pos: -31.5,42.5 - parent: 1 - type: Transform -- proto: VendingMachineChefvend - entities: - - uid: 6931 - components: - - flags: SessionSpecific - type: MetaData - - pos: -38.5,47.5 - parent: 1 - type: Transform -- proto: VendingMachineChemDrobe - entities: - - uid: 1928 - components: - - flags: SessionSpecific - type: MetaData - - pos: -4.5,19.5 - parent: 1 - type: Transform -- proto: VendingMachineChemicals - entities: - - uid: 527 - components: - - flags: SessionSpecific - type: MetaData - - pos: -4.5,26.5 - parent: 1 - type: Transform -- proto: VendingMachineCigs - entities: - - uid: 2661 - components: - - flags: SessionSpecific - type: MetaData - - pos: -9.5,34.5 - parent: 1 - type: Transform - - uid: 4159 - components: - - flags: SessionSpecific - type: MetaData - - pos: -31.5,23.5 - parent: 1 - type: Transform - - uid: 4160 - components: - - flags: SessionSpecific - type: MetaData - - pos: 19.5,4.5 - parent: 1 - type: Transform - - uid: 4164 - components: - - flags: SessionSpecific - type: MetaData - - pos: -18.5,3.5 - parent: 1 - type: Transform - - uid: 10970 - components: - - flags: SessionSpecific - type: MetaData - - pos: -72.5,39.5 - parent: 1 - type: Transform - - uid: 14249 - components: - - flags: SessionSpecific - type: MetaData - - pos: -65.5,50.5 - parent: 1 - type: Transform -- proto: VendingMachineClothing - entities: - - uid: 4238 - components: - - flags: SessionSpecific - type: MetaData - - pos: -6.5,28.5 - parent: 1 - type: Transform -- proto: VendingMachineCola - entities: - - uid: 4167 - components: - - flags: SessionSpecific - type: MetaData - - pos: -4.5,7.5 - parent: 1 - type: Transform -- proto: VendingMachineCondiments - entities: - - uid: 13669 - components: - - flags: SessionSpecific - type: MetaData - - pos: -38.5,40.5 - parent: 1 - type: Transform -- proto: VendingMachineDetDrobe - entities: - - uid: 14279 - components: - - flags: SessionSpecific - type: MetaData - - pos: -72.5,49.5 - parent: 1 - type: Transform -- proto: VendingMachineDinnerware - entities: - - uid: 6932 - components: - - flags: SessionSpecific - type: MetaData - - pos: -33.5,47.5 - parent: 1 - type: Transform -- proto: VendingMachineDiscount - entities: - - uid: 2663 - components: - - flags: SessionSpecific - type: MetaData - - pos: -8.5,34.5 - parent: 1 - type: Transform -- proto: VendingMachineDonut - entities: - - uid: 7943 - components: - - flags: SessionSpecific - type: MetaData - - pos: -56.5,65.5 - parent: 1 - type: Transform -- proto: VendingMachineEngiDrobe - entities: - - uid: 10749 - components: - - flags: SessionSpecific - type: MetaData - - pos: -67.5,25.5 - parent: 1 - type: Transform -- proto: VendingMachineEngivend - entities: - - uid: 10007 - components: - - flags: SessionSpecific - type: MetaData - - pos: -71.5,35.5 - parent: 1 - type: Transform -- proto: VendingMachineGames - entities: - - uid: 3195 - components: - - flags: SessionSpecific - type: MetaData - - pos: -22.5,18.5 - parent: 1 - type: Transform -- proto: VendingMachineHappyHonk - entities: - - uid: 6918 - components: - - flags: SessionSpecific - type: MetaData - - pos: -34.5,47.5 - parent: 1 - type: Transform -- proto: VendingMachineHydrobe - entities: - - uid: 5738 - components: - - flags: SessionSpecific - type: MetaData - - pos: -39.5,49.5 - parent: 1 - type: Transform -- proto: VendingMachineJaniDrobe - entities: - - uid: 7072 - components: - - flags: SessionSpecific - type: MetaData - - pos: -53.5,37.5 - parent: 1 - type: Transform -- proto: VendingMachineLawDrobe - entities: - - uid: 14296 - components: - - flags: SessionSpecific - type: MetaData - - pos: -64.5,38.5 - parent: 1 - type: Transform -- proto: VendingMachineMedical - entities: - - uid: 2031 - components: - - flags: SessionSpecific - type: MetaData - - pos: 5.5,31.5 - parent: 1 - type: Transform -- proto: VendingMachineMediDrobe - entities: - - uid: 2064 - components: - - flags: SessionSpecific - type: MetaData - - pos: 10.5,23.5 - parent: 1 - type: Transform -- proto: VendingMachineNutri - entities: - - uid: 6941 - components: - - flags: SessionSpecific - type: MetaData - - pos: -42.5,49.5 - parent: 1 - type: Transform -- proto: VendingMachineRestockBooze - entities: - - uid: 13676 - components: - - pos: -27.467127,35.556686 - parent: 1 - type: Transform -- proto: VendingMachineRoboDrobe - entities: - - uid: 238 - components: - - flags: SessionSpecific - type: MetaData - - pos: 1.5,-2.5 - parent: 1 - type: Transform -- proto: VendingMachineSalvage - entities: - - uid: 15798 - components: - - flags: SessionSpecific - type: MetaData - - pos: -37.5,-11.5 - parent: 1 - type: Transform -- proto: VendingMachineSciDrobe - entities: - - uid: 242 - components: - - flags: SessionSpecific - type: MetaData - - pos: -6.5,-5.5 - parent: 1 - type: Transform -- proto: VendingMachineSec - entities: - - uid: 7966 - components: - - flags: SessionSpecific - type: MetaData - - pos: -59.5,50.5 - parent: 1 - type: Transform -- proto: VendingMachineSecDrobe - entities: - - uid: 8023 - components: - - flags: SessionSpecific - type: MetaData - - pos: -61.5,61.5 - parent: 1 - type: Transform -- proto: VendingMachineSeeds - entities: - - uid: 5734 - components: - - flags: SessionSpecific - type: MetaData - - pos: -39.5,50.5 - parent: 1 - type: Transform -- proto: VendingMachineSeedsUnlocked - entities: - - uid: 7716 - components: - - flags: SessionSpecific - type: MetaData - - pos: -59.5,83.5 - parent: 1 - type: Transform -- proto: VendingMachineSmartFridge - entities: - - uid: 1936 - components: - - flags: SessionSpecific - type: MetaData - - pos: -4.5,27.5 - parent: 1 - type: Transform -- proto: VendingMachineSustenance - entities: - - uid: 3488 - components: - - flags: SessionSpecific - type: MetaData - - pos: -61.5,83.5 - parent: 1 - type: Transform -- proto: VendingMachineTankDispenserEngineering - entities: - - uid: 9210 - components: - - flags: SessionSpecific - type: MetaData - - pos: -69.5,35.5 - parent: 1 - type: Transform -- proto: VendingMachineTankDispenserEVA - entities: - - uid: 6070 - components: - - flags: SessionSpecific - type: MetaData - - pos: -10.5,46.5 - parent: 1 - type: Transform -- proto: VendingMachineTheater - entities: - - uid: 8968 - components: - - flags: SessionSpecific - type: MetaData - - pos: -32.5,23.5 - parent: 1 - type: Transform -- proto: VendingMachineVendomat - entities: - - uid: 5640 - components: - - flags: SessionSpecific - type: MetaData - - pos: -23.5,29.5 - parent: 1 - type: Transform - - uid: 15120 - components: - - flags: SessionSpecific - type: MetaData - - pos: -51.5,27.5 - parent: 1 - type: Transform -- proto: VendingMachineViroDrobe - entities: - - uid: 1144 - components: - - flags: SessionSpecific - type: MetaData - - pos: 11.5,20.5 - parent: 1 - type: Transform -- proto: VendingMachineWallMedical - entities: - - uid: 2034 - components: - - flags: SessionSpecific - type: MetaData - - pos: 17.5,29.5 - parent: 1 - type: Transform -- proto: VendingMachineWinter - entities: - - uid: 4217 - components: - - flags: SessionSpecific - type: MetaData - - pos: -6.5,27.5 - parent: 1 - type: Transform -- proto: VendingMachineYouTool - entities: - - uid: 5346 - components: - - flags: SessionSpecific - type: MetaData - - pos: -25.5,29.5 - parent: 1 - type: Transform - - uid: 11049 - components: - - flags: SessionSpecific - type: MetaData - - pos: -72.5,35.5 - parent: 1 - type: Transform -- proto: WallmountTelevision - entities: - - uid: 8351 - components: - - pos: -43.5,40.5 - parent: 1 - type: Transform -- proto: WallReinforced - entities: - - uid: 12 - components: - - pos: -4.5,62.5 - parent: 1 - type: Transform - - uid: 116 - components: - - pos: -4.5,58.5 - parent: 1 - type: Transform - - uid: 149 - components: - - pos: 4.5,-12.5 - parent: 1 - type: Transform - - uid: 164 - components: - - pos: -0.5,-14.5 - parent: 1 - type: Transform - - uid: 168 - components: - - pos: 6.5,-11.5 - parent: 1 - type: Transform - - uid: 172 - components: - - pos: 3.5,-7.5 - parent: 1 - type: Transform - - uid: 196 - components: - - pos: 6.5,-9.5 - parent: 1 - type: Transform - - uid: 198 - components: - - pos: 3.5,-12.5 - parent: 1 - type: Transform - - uid: 201 - components: - - pos: 6.5,-12.5 - parent: 1 - type: Transform - - uid: 202 - components: - - pos: 6.5,-10.5 - parent: 1 - type: Transform - - uid: 203 - components: - - pos: 5.5,-7.5 - parent: 1 - type: Transform - - uid: 204 - components: - - pos: 1.5,-16.5 - parent: 1 - type: Transform - - uid: 206 - components: - - pos: -0.5,-9.5 - parent: 1 - type: Transform - - uid: 207 - components: - - pos: 5.5,-12.5 - parent: 1 - type: Transform - - uid: 518 - components: - - pos: 14.5,-6.5 - parent: 1 - type: Transform - - uid: 522 - components: - - pos: -4.5,59.5 - parent: 1 - type: Transform - - uid: 674 - components: - - pos: 28.5,4.5 - parent: 1 - type: Transform - - uid: 676 - components: - - pos: 27.5,0.5 - parent: 1 - type: Transform - - uid: 678 - components: - - pos: 26.5,0.5 - parent: 1 - type: Transform - - uid: 694 - components: - - pos: 24.5,1.5 - parent: 1 - type: Transform - - uid: 703 - components: - - pos: 25.5,4.5 - parent: 1 - type: Transform - - uid: 704 - components: - - pos: 27.5,4.5 - parent: 1 - type: Transform - - uid: 705 - components: - - pos: 24.5,3.5 - parent: 1 - type: Transform - - uid: 707 - components: - - pos: 30.5,4.5 - parent: 1 - type: Transform - - uid: 948 - components: - - rot: 3.141592653589793 rad - pos: 29.5,7.5 - parent: 1 - type: Transform - - uid: 949 - components: - - rot: 3.141592653589793 rad - pos: 30.5,7.5 - parent: 1 - type: Transform - - uid: 950 - components: - - rot: 3.141592653589793 rad - pos: 31.5,7.5 - parent: 1 - type: Transform - - uid: 951 - components: - - rot: 3.141592653589793 rad - pos: 32.5,7.5 - parent: 1 - type: Transform - - uid: 952 - components: - - rot: 3.141592653589793 rad - pos: 29.5,9.5 - parent: 1 - type: Transform - - uid: 955 - components: - - rot: 3.141592653589793 rad - pos: 32.5,9.5 - parent: 1 - type: Transform - - uid: 956 - components: - - rot: 3.141592653589793 rad - pos: 29.5,11.5 - parent: 1 - type: Transform - - uid: 957 - components: - - rot: 3.141592653589793 rad - pos: 30.5,11.5 - parent: 1 - type: Transform - - uid: 958 - components: - - rot: 3.141592653589793 rad - pos: 31.5,11.5 - parent: 1 - type: Transform - - uid: 959 - components: - - rot: 3.141592653589793 rad - pos: 32.5,11.5 - parent: 1 - type: Transform - - uid: 960 - components: - - rot: 3.141592653589793 rad - pos: 29.5,15.5 - parent: 1 - type: Transform - - uid: 961 - components: - - rot: 3.141592653589793 rad - pos: 30.5,15.5 - parent: 1 - type: Transform - - uid: 962 - components: - - rot: 3.141592653589793 rad - pos: 31.5,15.5 - parent: 1 - type: Transform - - uid: 963 - components: - - rot: 3.141592653589793 rad - pos: 32.5,15.5 - parent: 1 - type: Transform - - uid: 964 - components: - - rot: 3.141592653589793 rad - pos: 29.5,17.5 - parent: 1 - type: Transform - - uid: 967 - components: - - rot: 3.141592653589793 rad - pos: 32.5,17.5 - parent: 1 - type: Transform - - uid: 968 - components: - - rot: 3.141592653589793 rad - pos: 29.5,19.5 - parent: 1 - type: Transform - - uid: 969 - components: - - rot: 3.141592653589793 rad - pos: 30.5,19.5 - parent: 1 - type: Transform - - uid: 970 - components: - - rot: 3.141592653589793 rad - pos: 31.5,19.5 - parent: 1 - type: Transform - - uid: 971 - components: - - rot: 3.141592653589793 rad - pos: 32.5,19.5 - parent: 1 - type: Transform - - uid: 1926 - components: - - pos: -55.5,48.5 - parent: 1 - type: Transform - - uid: 1927 - components: - - pos: -55.5,49.5 - parent: 1 - type: Transform - - uid: 1958 - components: - - pos: -55.5,50.5 - parent: 1 - type: Transform - - uid: 1982 - components: - - pos: -55.5,51.5 - parent: 1 - type: Transform - - uid: 1983 - components: - - pos: -55.5,52.5 - parent: 1 - type: Transform - - uid: 1984 - components: - - pos: -52.5,49.5 - parent: 1 - type: Transform - - uid: 1997 - components: - - pos: -52.5,48.5 - parent: 1 - type: Transform - - uid: 1998 - components: - - pos: -52.5,50.5 - parent: 1 - type: Transform - - uid: 1999 - components: - - pos: -52.5,51.5 - parent: 1 - type: Transform - - uid: 2000 - components: - - pos: -52.5,52.5 - parent: 1 - type: Transform - - uid: 2001 - components: - - pos: -49.5,51.5 - parent: 1 - type: Transform - - uid: 2002 - components: - - pos: -49.5,52.5 - parent: 1 - type: Transform - - uid: 2003 - components: - - pos: -49.5,48.5 - parent: 1 - type: Transform - - uid: 2004 - components: - - pos: -49.5,49.5 - parent: 1 - type: Transform - - uid: 2005 - components: - - pos: -49.5,50.5 - parent: 1 - type: Transform - - uid: 2656 - components: - - pos: -18.5,37.5 - parent: 1 - type: Transform - - uid: 2657 - components: - - pos: -18.5,38.5 - parent: 1 - type: Transform - - uid: 2658 - components: - - pos: -18.5,39.5 - parent: 1 - type: Transform - - uid: 2659 - components: - - pos: -18.5,40.5 - parent: 1 - type: Transform - - uid: 3440 - components: - - pos: -18.5,42.5 - parent: 1 - type: Transform - - uid: 3441 - components: - - pos: -18.5,41.5 - parent: 1 - type: Transform - - uid: 3443 - components: - - pos: -23.5,44.5 - parent: 1 - type: Transform - - uid: 3447 - components: - - pos: -23.5,40.5 - parent: 1 - type: Transform - - uid: 3449 - components: - - pos: -23.5,42.5 - parent: 1 - type: Transform - - uid: 3451 - components: - - pos: -23.5,48.5 - parent: 1 - type: Transform - - uid: 4200 - components: - - pos: -51.5,22.5 - parent: 1 - type: Transform - - uid: 4313 - components: - - pos: -49.5,26.5 - parent: 1 - type: Transform - - uid: 4319 - components: - - pos: -52.5,26.5 - parent: 1 - type: Transform - - uid: 4320 - components: - - pos: -53.5,26.5 - parent: 1 - type: Transform - - uid: 4321 - components: - - pos: -53.5,25.5 - parent: 1 - type: Transform - - uid: 4325 - components: - - pos: -52.5,22.5 - parent: 1 - type: Transform - - uid: 4327 - components: - - pos: -51.5,26.5 - parent: 1 - type: Transform - - uid: 4330 - components: - - pos: -49.5,22.5 - parent: 1 - type: Transform - - uid: 4331 - components: - - pos: -50.5,22.5 - parent: 1 - type: Transform - - uid: 4332 - components: - - pos: -47.5,22.5 - parent: 1 - type: Transform - - uid: 4333 - components: - - pos: -53.5,22.5 - parent: 1 - type: Transform - - uid: 4542 - components: - - pos: -48.5,22.5 - parent: 1 - type: Transform - - uid: 4572 - components: - - pos: -46.5,26.5 - parent: 1 - type: Transform - - uid: 4573 - components: - - pos: -47.5,26.5 - parent: 1 - type: Transform - - uid: 4574 - components: - - pos: -48.5,26.5 - parent: 1 - type: Transform - - uid: 4583 - components: - - pos: -46.5,22.5 - parent: 1 - type: Transform - - uid: 4584 - components: - - pos: -53.5,24.5 - parent: 1 - type: Transform - - uid: 4585 - components: - - pos: -53.5,23.5 - parent: 1 - type: Transform - - uid: 4744 - components: - - rot: 3.141592653589793 rad - pos: -59.5,-12.5 - parent: 1 - type: Transform - - uid: 4792 - components: - - pos: -72.5,2.5 - parent: 1 - type: Transform - - uid: 4793 - components: - - pos: -74.5,2.5 - parent: 1 - type: Transform - - uid: 4799 - components: - - pos: -59.5,3.5 - parent: 1 - type: Transform - - uid: 4809 - components: - - pos: -67.5,2.5 - parent: 1 - type: Transform - - uid: 4810 - components: - - pos: -65.5,2.5 - parent: 1 - type: Transform - - uid: 4843 - components: - - pos: -65.5,3.5 - parent: 1 - type: Transform - - uid: 4849 - components: - - pos: -74.5,3.5 - parent: 1 - type: Transform - - uid: 4856 - components: - - pos: -72.5,3.5 - parent: 1 - type: Transform - - uid: 4862 - components: - - rot: 3.141592653589793 rad - pos: -75.5,-13.5 - parent: 1 - type: Transform - - uid: 4873 - components: - - pos: -67.5,3.5 - parent: 1 - type: Transform - - uid: 4883 - components: - - rot: 3.141592653589793 rad - pos: -73.5,-15.5 - parent: 1 - type: Transform - - uid: 4885 - components: - - rot: 3.141592653589793 rad - pos: -71.5,-12.5 - parent: 1 - type: Transform - - uid: 4886 - components: - - rot: 3.141592653589793 rad - pos: -71.5,-13.5 - parent: 1 - type: Transform - - uid: 4887 - components: - - rot: 3.141592653589793 rad - pos: -67.5,-12.5 - parent: 1 - type: Transform - - uid: 4888 - components: - - rot: 3.141592653589793 rad - pos: -67.5,-13.5 - parent: 1 - type: Transform - - uid: 4896 - components: - - rot: 3.141592653589793 rad - pos: -75.5,-12.5 - parent: 1 - type: Transform - - uid: 4897 - components: - - rot: 3.141592653589793 rad - pos: -65.5,-15.5 - parent: 1 - type: Transform - - uid: 4901 - components: - - rot: 3.141592653589793 rad - pos: -63.5,-14.5 - parent: 1 - type: Transform - - uid: 4907 - components: - - pos: -59.5,-8.5 - parent: 1 - type: Transform - - uid: 4924 - components: - - rot: 3.141592653589793 rad - pos: -63.5,-12.5 - parent: 1 - type: Transform - - uid: 4927 - components: - - rot: 3.141592653589793 rad - pos: -63.5,-13.5 - parent: 1 - type: Transform - - uid: 4928 - components: - - rot: 3.141592653589793 rad - pos: -67.5,-15.5 - parent: 1 - type: Transform - - uid: 4929 - components: - - rot: 3.141592653589793 rad - pos: -65.5,-12.5 - parent: 1 - type: Transform - - uid: 4933 - components: - - rot: 3.141592653589793 rad - pos: -75.5,-14.5 - parent: 1 - type: Transform - - uid: 4936 - components: - - rot: 3.141592653589793 rad - pos: -75.5,-15.5 - parent: 1 - type: Transform - - uid: 4939 - components: - - rot: 3.141592653589793 rad - pos: -73.5,-12.5 - parent: 1 - type: Transform - - uid: 4940 - components: - - pos: -76.5,-8.5 - parent: 1 - type: Transform - - uid: 4941 - components: - - pos: -76.5,-12.5 - parent: 1 - type: Transform - - uid: 4942 - components: - - pos: -76.5,-9.5 - parent: 1 - type: Transform - - uid: 4945 - components: - - pos: -76.5,-11.5 - parent: 1 - type: Transform - - uid: 4948 - components: - - pos: -77.5,-11.5 - parent: 1 - type: Transform - - uid: 4949 - components: - - pos: -78.5,-11.5 - parent: 1 - type: Transform - - uid: 4950 - components: - - pos: -74.5,-8.5 - parent: 1 - type: Transform - - uid: 4953 - components: - - pos: -72.5,-7.5 - parent: 1 - type: Transform - - uid: 4954 - components: - - pos: -67.5,-8.5 - parent: 1 - type: Transform - - uid: 4955 - components: - - pos: -74.5,-7.5 - parent: 1 - type: Transform - - uid: 4956 - components: - - pos: -72.5,-8.5 - parent: 1 - type: Transform - - uid: 4959 - components: - - pos: -65.5,-8.5 - parent: 1 - type: Transform - - uid: 4960 - components: - - pos: -65.5,-7.5 - parent: 1 - type: Transform - - uid: 4962 - components: - - pos: -77.5,-9.5 - parent: 1 - type: Transform - - uid: 4963 - components: - - pos: -67.5,-7.5 - parent: 1 - type: Transform - - uid: 4965 - components: - - pos: -78.5,-9.5 - parent: 1 - type: Transform - - uid: 4967 - components: - - rot: 3.141592653589793 rad - pos: -63.5,-15.5 - parent: 1 - type: Transform - - uid: 4969 - components: - - rot: 3.141592653589793 rad - pos: -71.5,-15.5 - parent: 1 - type: Transform - - uid: 4970 - components: - - rot: 3.141592653589793 rad - pos: -71.5,-14.5 - parent: 1 - type: Transform - - uid: 4979 - components: - - rot: 3.141592653589793 rad - pos: -67.5,-14.5 - parent: 1 - type: Transform - - uid: 5072 - components: - - rot: -1.5707963267948966 rad - pos: -76.5,7.5 - parent: 1 - type: Transform - - uid: 5073 - components: - - pos: -76.5,3.5 - parent: 1 - type: Transform - - uid: 5472 - components: - - rot: 3.141592653589793 rad - pos: -49.5,69.5 - parent: 1 - type: Transform - - uid: 5473 - components: - - pos: -64.5,49.5 - parent: 1 - type: Transform - - uid: 5476 - components: - - rot: 3.141592653589793 rad - pos: -53.5,69.5 - parent: 1 - type: Transform - - uid: 5478 - components: - - pos: -64.5,51.5 - parent: 1 - type: Transform - - uid: 5686 - components: - - pos: -56.5,79.5 - parent: 1 - type: Transform - - uid: 5750 - components: - - pos: -45.5,56.5 - parent: 1 - type: Transform - - uid: 5754 - components: - - rot: 3.141592653589793 rad - pos: -45.5,68.5 - parent: 1 - type: Transform - - uid: 5776 - components: - - pos: -64.5,50.5 - parent: 1 - type: Transform - - uid: 5777 - components: - - pos: -58.5,56.5 - parent: 1 - type: Transform - - uid: 5785 - components: - - pos: -58.5,49.5 - parent: 1 - type: Transform - - uid: 5816 - components: - - pos: -23.5,47.5 - parent: 1 - type: Transform - - uid: 5817 - components: - - pos: -23.5,37.5 - parent: 1 - type: Transform - - uid: 5818 - components: - - pos: -23.5,38.5 - parent: 1 - type: Transform - - uid: 5821 - components: - - pos: -19.5,43.5 - parent: 1 - type: Transform - - uid: 5824 - components: - - pos: -19.5,49.5 - parent: 1 - type: Transform - - uid: 5826 - components: - - pos: -21.5,49.5 - parent: 1 - type: Transform - - uid: 5829 - components: - - pos: -22.5,43.5 - parent: 1 - type: Transform - - uid: 5834 - components: - - pos: -18.5,44.5 - parent: 1 - type: Transform - - uid: 5902 - components: - - pos: -22.5,49.5 - parent: 1 - type: Transform - - uid: 5904 - components: - - pos: -15.5,52.5 - parent: 1 - type: Transform - - uid: 5905 - components: - - pos: -18.5,52.5 - parent: 1 - type: Transform - - uid: 5947 - components: - - pos: -17.5,52.5 - parent: 1 - type: Transform - - uid: 6349 - components: - - rot: 3.141592653589793 rad - pos: -4.5,57.5 - parent: 1 - type: Transform - - uid: 6350 - components: - - rot: 3.141592653589793 rad - pos: -5.5,57.5 - parent: 1 - type: Transform - - uid: 6359 - components: - - pos: -6.5,57.5 - parent: 1 - type: Transform - - uid: 6360 - components: - - rot: 3.141592653589793 rad - pos: -6.5,58.5 - parent: 1 - type: Transform - - uid: 6361 - components: - - rot: 3.141592653589793 rad - pos: -8.5,58.5 - parent: 1 - type: Transform - - uid: 6362 - components: - - rot: 3.141592653589793 rad - pos: -9.5,58.5 - parent: 1 - type: Transform - - uid: 6363 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,58.5 - parent: 1 - type: Transform - - uid: 6368 - components: - - rot: 3.141592653589793 rad - pos: -19.5,53.5 - parent: 1 - type: Transform - - uid: 6369 - components: - - rot: 3.141592653589793 rad - pos: -19.5,55.5 - parent: 1 - type: Transform - - uid: 6370 - components: - - rot: 3.141592653589793 rad - pos: -19.5,56.5 - parent: 1 - type: Transform - - uid: 6371 - components: - - rot: 3.141592653589793 rad - pos: -19.5,57.5 - parent: 1 - type: Transform - - uid: 6374 - components: - - rot: 3.141592653589793 rad - pos: -21.5,58.5 - parent: 1 - type: Transform - - uid: 6375 - components: - - rot: 3.141592653589793 rad - pos: -22.5,58.5 - parent: 1 - type: Transform - - uid: 6376 - components: - - rot: 3.141592653589793 rad - pos: -23.5,58.5 - parent: 1 - type: Transform - - uid: 6378 - components: - - rot: 3.141592653589793 rad - pos: -24.5,57.5 - parent: 1 - type: Transform - - uid: 6379 - components: - - rot: 3.141592653589793 rad - pos: -24.5,56.5 - parent: 1 - type: Transform - - uid: 6380 - components: - - rot: 3.141592653589793 rad - pos: -24.5,55.5 - parent: 1 - type: Transform - - uid: 6381 - components: - - rot: 3.141592653589793 rad - pos: -24.5,54.5 - parent: 1 - type: Transform - - uid: 6382 - components: - - rot: 3.141592653589793 rad - pos: -23.5,52.5 - parent: 1 - type: Transform - - uid: 6383 - components: - - rot: 3.141592653589793 rad - pos: -22.5,52.5 - parent: 1 - type: Transform - - uid: 6384 - components: - - rot: 3.141592653589793 rad - pos: -21.5,52.5 - parent: 1 - type: Transform - - uid: 6385 - components: - - rot: 3.141592653589793 rad - pos: -20.5,52.5 - parent: 1 - type: Transform - - uid: 6386 - components: - - rot: 3.141592653589793 rad - pos: -24.5,53.5 - parent: 1 - type: Transform - - uid: 6387 - components: - - rot: 3.141592653589793 rad - pos: -24.5,52.5 - parent: 1 - type: Transform - - uid: 6390 - components: - - rot: 3.141592653589793 rad - pos: -14.5,58.5 - parent: 1 - type: Transform - - uid: 6391 - components: - - rot: 3.141592653589793 rad - pos: -18.5,58.5 - parent: 1 - type: Transform - - uid: 6429 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,62.5 - parent: 1 - type: Transform - - uid: 6430 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,61.5 - parent: 1 - type: Transform - - uid: 6431 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,60.5 - parent: 1 - type: Transform - - uid: 6432 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,59.5 - parent: 1 - type: Transform - - uid: 6433 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,63.5 - parent: 1 - type: Transform - - uid: 6434 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,63.5 - parent: 1 - type: Transform - - uid: 6452 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,63.5 - parent: 1 - type: Transform - - uid: 6453 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,63.5 - parent: 1 - type: Transform - - uid: 6457 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,59.5 - parent: 1 - type: Transform - - uid: 6494 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,61.5 - parent: 1 - type: Transform - - uid: 6495 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,61.5 - parent: 1 - type: Transform - - uid: 6654 - components: - - pos: -21.5,43.5 - parent: 1 - type: Transform - - uid: 6805 - components: - - pos: -62.5,57.5 - parent: 1 - type: Transform - - uid: 6806 - components: - - pos: -58.5,50.5 - parent: 1 - type: Transform - - uid: 6813 - components: - - pos: -61.5,56.5 - parent: 1 - type: Transform - - uid: 6814 - components: - - pos: -58.5,51.5 - parent: 1 - type: Transform - - uid: 6815 - components: - - pos: -60.5,56.5 - parent: 1 - type: Transform - - uid: 6817 - components: - - pos: -58.5,52.5 - parent: 1 - type: Transform - - uid: 6819 - components: - - pos: -59.5,56.5 - parent: 1 - type: Transform - - uid: 6858 - components: - - pos: -59.5,49.5 - parent: 1 - type: Transform - - uid: 6859 - components: - - pos: -60.5,49.5 - parent: 1 - type: Transform - - uid: 6873 - components: - - pos: -61.5,49.5 - parent: 1 - type: Transform - - uid: 6874 - components: - - pos: -62.5,49.5 - parent: 1 - type: Transform - - uid: 6875 - components: - - pos: -63.5,49.5 - parent: 1 - type: Transform - - uid: 6876 - components: - - pos: -58.5,48.5 - parent: 1 - type: Transform - - uid: 6877 - components: - - pos: -62.5,56.5 - parent: 1 - type: Transform - - uid: 6878 - components: - - pos: -62.5,58.5 - parent: 1 - type: Transform - - uid: 6882 - components: - - pos: -62.5,59.5 - parent: 1 - type: Transform - - uid: 6944 - components: - - pos: -58.5,58.5 - parent: 1 - type: Transform - - uid: 6952 - components: - - pos: -61.5,59.5 - parent: 1 - type: Transform - - uid: 6969 - components: - - pos: -57.5,59.5 - parent: 1 - type: Transform - - uid: 6973 - components: - - pos: -51.5,59.5 - parent: 1 - type: Transform - - uid: 6974 - components: - - pos: -53.5,66.5 - parent: 1 - type: Transform - - uid: 6975 - components: - - pos: -45.5,58.5 - parent: 1 - type: Transform - - uid: 6976 - components: - - pos: -45.5,57.5 - parent: 1 - type: Transform - - uid: 6977 - components: - - pos: -49.5,56.5 - parent: 1 - type: Transform - - uid: 6978 - components: - - pos: -49.5,57.5 - parent: 1 - type: Transform - - uid: 6980 - components: - - pos: -49.5,58.5 - parent: 1 - type: Transform - - uid: 6981 - components: - - pos: -49.5,59.5 - parent: 1 - type: Transform - - uid: 6998 - components: - - pos: -60.5,59.5 - parent: 1 - type: Transform - - uid: 6999 - components: - - pos: -59.5,59.5 - parent: 1 - type: Transform - - uid: 7000 - components: - - pos: -58.5,59.5 - parent: 1 - type: Transform - - uid: 7001 - components: - - pos: -64.5,56.5 - parent: 1 - type: Transform - - uid: 7002 - components: - - pos: -63.5,56.5 - parent: 1 - type: Transform - - uid: 7003 - components: - - pos: -53.5,59.5 - parent: 1 - type: Transform - - uid: 7007 - components: - - pos: -45.5,59.5 - parent: 1 - type: Transform - - uid: 7008 - components: - - pos: -42.5,66.5 - parent: 1 - type: Transform - - uid: 7009 - components: - - pos: -43.5,66.5 - parent: 1 - type: Transform - - uid: 7011 - components: - - pos: -45.5,63.5 - parent: 1 - type: Transform - - uid: 7015 - components: - - pos: -49.5,63.5 - parent: 1 - type: Transform - - uid: 7016 - components: - - pos: -41.5,59.5 - parent: 1 - type: Transform - - uid: 7017 - components: - - pos: -39.5,59.5 - parent: 1 - type: Transform - - uid: 7018 - components: - - pos: -40.5,60.5 - parent: 1 - type: Transform - - uid: 7019 - components: - - pos: -39.5,61.5 - parent: 1 - type: Transform - - uid: 7020 - components: - - pos: -39.5,62.5 - parent: 1 - type: Transform - - uid: 7021 - components: - - pos: -40.5,59.5 - parent: 1 - type: Transform - - uid: 7022 - components: - - pos: -39.5,60.5 - parent: 1 - type: Transform - - uid: 7023 - components: - - pos: -43.5,60.5 - parent: 1 - type: Transform - - uid: 7024 - components: - - pos: -42.5,59.5 - parent: 1 - type: Transform - - uid: 7025 - components: - - pos: -45.5,66.5 - parent: 1 - type: Transform - - uid: 7026 - components: - - pos: -41.5,60.5 - parent: 1 - type: Transform - - uid: 7078 - components: - - pos: -39.5,63.5 - parent: 1 - type: Transform - - uid: 7079 - components: - - pos: -39.5,64.5 - parent: 1 - type: Transform - - uid: 7080 - components: - - pos: -40.5,62.5 - parent: 1 - type: Transform - - uid: 7081 - components: - - pos: -40.5,63.5 - parent: 1 - type: Transform - - uid: 7082 - components: - - pos: -42.5,60.5 - parent: 1 - type: Transform - - uid: 7083 - components: - - pos: -41.5,66.5 - parent: 1 - type: Transform - - uid: 7084 - components: - - pos: -41.5,67.5 - parent: 1 - type: Transform - - uid: 7086 - components: - - pos: -40.5,67.5 - parent: 1 - type: Transform - - uid: 7103 - components: - - pos: -40.5,64.5 - parent: 1 - type: Transform - - uid: 7104 - components: - - pos: -40.5,65.5 - parent: 1 - type: Transform - - uid: 7105 - components: - - pos: -40.5,66.5 - parent: 1 - type: Transform - - uid: 7106 - components: - - pos: -42.5,67.5 - parent: 1 - type: Transform - - uid: 7108 - components: - - pos: -43.5,67.5 - parent: 1 - type: Transform - - uid: 7109 - components: - - pos: -44.5,66.5 - parent: 1 - type: Transform - - uid: 7110 - components: - - pos: -44.5,67.5 - parent: 1 - type: Transform - - uid: 7111 - components: - - pos: -44.5,59.5 - parent: 1 - type: Transform - - uid: 7112 - components: - - pos: -49.5,60.5 - parent: 1 - type: Transform - - uid: 7114 - components: - - pos: -39.5,65.5 - parent: 1 - type: Transform - - uid: 7115 - components: - - pos: -39.5,66.5 - parent: 1 - type: Transform - - uid: 7116 - components: - - pos: -39.5,67.5 - parent: 1 - type: Transform - - uid: 7117 - components: - - pos: -40.5,61.5 - parent: 1 - type: Transform - - uid: 7118 - components: - - pos: -44.5,60.5 - parent: 1 - type: Transform - - uid: 7119 - components: - - pos: -43.5,59.5 - parent: 1 - type: Transform - - uid: 7120 - components: - - pos: -47.5,66.5 - parent: 1 - type: Transform - - uid: 7121 - components: - - pos: -48.5,66.5 - parent: 1 - type: Transform - - uid: 7123 - components: - - pos: -46.5,66.5 - parent: 1 - type: Transform - - uid: 7124 - components: - - pos: -49.5,66.5 - parent: 1 - type: Transform - - uid: 7125 - components: - - pos: -49.5,62.5 - parent: 1 - type: Transform - - uid: 7132 - components: - - pos: -59.5,48.5 - parent: 1 - type: Transform - - uid: 7142 - components: - - pos: -62.5,62.5 - parent: 1 - type: Transform - - uid: 7143 - components: - - pos: -62.5,63.5 - parent: 1 - type: Transform - - uid: 7144 - components: - - pos: -62.5,64.5 - parent: 1 - type: Transform - - uid: 7145 - components: - - pos: -62.5,65.5 - parent: 1 - type: Transform - - uid: 7146 - components: - - pos: -62.5,66.5 - parent: 1 - type: Transform - - uid: 7147 - components: - - pos: -53.5,62.5 - parent: 1 - type: Transform - - uid: 7157 - components: - - pos: -57.5,65.5 - parent: 1 - type: Transform - - uid: 7158 - components: - - pos: -57.5,64.5 - parent: 1 - type: Transform - - uid: 7159 - components: - - pos: -57.5,63.5 - parent: 1 - type: Transform - - uid: 7160 - components: - - pos: -61.5,62.5 - parent: 1 - type: Transform - - uid: 7161 - components: - - pos: -60.5,62.5 - parent: 1 - type: Transform - - uid: 7169 - components: - - pos: -57.5,66.5 - parent: 1 - type: Transform - - uid: 7176 - components: - - pos: -57.5,62.5 - parent: 1 - type: Transform - - uid: 7181 - components: - - rot: 3.141592653589793 rad - pos: -53.5,70.5 - parent: 1 - type: Transform - - uid: 7182 - components: - - rot: 3.141592653589793 rad - pos: -48.5,69.5 - parent: 1 - type: Transform - - uid: 7183 - components: - - rot: 3.141592653589793 rad - pos: -47.5,69.5 - parent: 1 - type: Transform - - uid: 7184 - components: - - rot: 3.141592653589793 rad - pos: -46.5,69.5 - parent: 1 - type: Transform - - uid: 7185 - components: - - rot: 3.141592653589793 rad - pos: -45.5,69.5 - parent: 1 - type: Transform - - uid: 7190 - components: - - rot: 3.141592653589793 rad - pos: -49.5,77.5 - parent: 1 - type: Transform - - uid: 7191 - components: - - pos: -51.5,66.5 - parent: 1 - type: Transform - - uid: 7194 - components: - - rot: 3.141592653589793 rad - pos: -49.5,70.5 - parent: 1 - type: Transform - - uid: 7195 - components: - - rot: 3.141592653589793 rad - pos: -51.5,70.5 - parent: 1 - type: Transform - - uid: 7197 - components: - - rot: 3.141592653589793 rad - pos: -53.5,68.5 - parent: 1 - type: Transform - - uid: 7198 - components: - - rot: 3.141592653589793 rad - pos: -51.5,77.5 - parent: 1 - type: Transform - - uid: 7200 - components: - - rot: 3.141592653589793 rad - pos: -53.5,67.5 - parent: 1 - type: Transform - - uid: 7201 - components: - - rot: 3.141592653589793 rad - pos: -53.5,77.5 - parent: 1 - type: Transform - - uid: 7224 - components: - - pos: -56.5,78.5 - parent: 1 - type: Transform - - uid: 7226 - components: - - pos: -56.5,80.5 - parent: 1 - type: Transform - - uid: 7230 - components: - - pos: -49.5,81.5 - parent: 1 - type: Transform - - uid: 7231 - components: - - pos: -49.5,80.5 - parent: 1 - type: Transform - - uid: 7232 - components: - - pos: -49.5,79.5 - parent: 1 - type: Transform - - uid: 7233 - components: - - pos: -49.5,78.5 - parent: 1 - type: Transform - - uid: 7234 - components: - - pos: -56.5,81.5 - parent: 1 - type: Transform - - uid: 7235 - components: - - pos: -53.5,81.5 - parent: 1 - type: Transform - - uid: 7236 - components: - - pos: -51.5,81.5 - parent: 1 - type: Transform - - uid: 7243 - components: - - pos: -55.5,81.5 - parent: 1 - type: Transform - - uid: 7245 - components: - - pos: -49.5,82.5 - parent: 1 - type: Transform - - uid: 7246 - components: - - pos: -49.5,90.5 - parent: 1 - type: Transform - - uid: 7247 - components: - - pos: -49.5,89.5 - parent: 1 - type: Transform - - uid: 7248 - components: - - pos: -49.5,91.5 - parent: 1 - type: Transform - - uid: 7261 - components: - - pos: -50.5,91.5 - parent: 1 - type: Transform - - uid: 7263 - components: - - pos: -52.5,91.5 - parent: 1 - type: Transform - - uid: 7264 - components: - - pos: -53.5,91.5 - parent: 1 - type: Transform - - uid: 7265 - components: - - pos: -53.5,90.5 - parent: 1 - type: Transform - - uid: 7266 - components: - - pos: -56.5,87.5 - parent: 1 - type: Transform - - uid: 7267 - components: - - pos: -56.5,85.5 - parent: 1 - type: Transform - - uid: 7268 - components: - - pos: -55.5,85.5 - parent: 1 - type: Transform - - uid: 7269 - components: - - pos: -53.5,84.5 - parent: 1 - type: Transform - - uid: 7270 - components: - - pos: -53.5,82.5 - parent: 1 - type: Transform - - uid: 7272 - components: - - pos: -53.5,88.5 - parent: 1 - type: Transform - - uid: 7273 - components: - - pos: -54.5,87.5 - parent: 1 - type: Transform - - uid: 7274 - components: - - pos: -53.5,87.5 - parent: 1 - type: Transform - - uid: 7277 - components: - - pos: -54.5,85.5 - parent: 1 - type: Transform - - uid: 7278 - components: - - pos: -55.5,87.5 - parent: 1 - type: Transform - - uid: 7279 - components: - - pos: -53.5,85.5 - parent: 1 - type: Transform - - uid: 7280 - components: - - pos: -56.5,82.5 - parent: 1 - type: Transform - - uid: 7281 - components: - - pos: -56.5,84.5 - parent: 1 - type: Transform - - uid: 7283 - components: - - pos: -56.5,88.5 - parent: 1 - type: Transform - - uid: 7286 - components: - - pos: -56.5,90.5 - parent: 1 - type: Transform - - uid: 7287 - components: - - pos: -56.5,91.5 - parent: 1 - type: Transform - - uid: 7289 - components: - - pos: -54.5,91.5 - parent: 1 - type: Transform - - uid: 7290 - components: - - pos: -62.5,90.5 - parent: 1 - type: Transform - - uid: 7291 - components: - - pos: -62.5,89.5 - parent: 1 - type: Transform - - uid: 7293 - components: - - pos: -62.5,86.5 - parent: 1 - type: Transform - - uid: 7294 - components: - - pos: -63.5,86.5 - parent: 1 - type: Transform - - uid: 7299 - components: - - pos: -62.5,82.5 - parent: 1 - type: Transform - - uid: 7300 - components: - - pos: -62.5,87.5 - parent: 1 - type: Transform - - uid: 7314 - components: - - pos: -51.5,78.5 - parent: 1 - type: Transform - - uid: 7317 - components: - - pos: -63.5,82.5 - parent: 1 - type: Transform - - uid: 7327 - components: - - pos: -57.5,82.5 - parent: 1 - type: Transform - - uid: 7328 - components: - - pos: -57.5,90.5 - parent: 1 - type: Transform - - uid: 7332 - components: - - pos: -55.5,78.5 - parent: 1 - type: Transform - - uid: 7338 - components: - - pos: -54.5,78.5 - parent: 1 - type: Transform - - uid: 7339 - components: - - pos: -53.5,78.5 - parent: 1 - type: Transform - - uid: 7362 - components: - - pos: -45.5,67.5 - parent: 1 - type: Transform - - uid: 7646 - components: - - pos: -44.5,63.5 - parent: 1 - type: Transform - - uid: 7648 - components: - - pos: -44.5,61.5 - parent: 1 - type: Transform - - uid: 7718 - components: - - pos: -61.5,90.5 - parent: 1 - type: Transform - - uid: 7898 - components: - - pos: -51.5,69.5 - parent: 1 - type: Transform - - uid: 7976 - components: - - pos: -66.5,52.5 - parent: 1 - type: Transform - - uid: 7978 - components: - - pos: -66.5,51.5 - parent: 1 - type: Transform - - uid: 8012 - components: - - pos: -65.5,51.5 - parent: 1 - type: Transform - - uid: 8014 - components: - - pos: -66.5,53.5 - parent: 1 - type: Transform - - uid: 8015 - components: - - pos: -66.5,54.5 - parent: 1 - type: Transform - - uid: 8016 - components: - - pos: -66.5,55.5 - parent: 1 - type: Transform - - uid: 8017 - components: - - pos: -66.5,56.5 - parent: 1 - type: Transform - - uid: 8018 - components: - - pos: -65.5,56.5 - parent: 1 - type: Transform - - uid: 9334 - components: - - rot: 1.5707963267948966 rad - pos: -65.5,29.5 - parent: 1 - type: Transform - - uid: 10718 - components: - - rot: -1.5707963267948966 rad - pos: -84.5,49.5 - parent: 1 - type: Transform - - uid: 10750 - components: - - rot: -1.5707963267948966 rad - pos: -80.5,49.5 - parent: 1 - type: Transform - - uid: 10751 - components: - - rot: -1.5707963267948966 rad - pos: -80.5,51.5 - parent: 1 - type: Transform - - uid: 10752 - components: - - rot: -1.5707963267948966 rad - pos: -81.5,51.5 - parent: 1 - type: Transform - - uid: 10754 - components: - - rot: -1.5707963267948966 rad - pos: -83.5,51.5 - parent: 1 - type: Transform - - uid: 10755 - components: - - rot: -1.5707963267948966 rad - pos: -84.5,51.5 - parent: 1 - type: Transform - - uid: 10763 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,46.5 - parent: 1 - type: Transform - - uid: 10764 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,46.5 - parent: 1 - type: Transform - - uid: 10765 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,46.5 - parent: 1 - type: Transform - - uid: 10766 - components: - - rot: -1.5707963267948966 rad - pos: -90.5,46.5 - parent: 1 - type: Transform - - uid: 10767 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,46.5 - parent: 1 - type: Transform - - uid: 10768 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,45.5 - parent: 1 - type: Transform - - uid: 10769 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,44.5 - parent: 1 - type: Transform - - uid: 10770 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,43.5 - parent: 1 - type: Transform - - uid: 10771 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,42.5 - parent: 1 - type: Transform - - uid: 10772 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,41.5 - parent: 1 - type: Transform - - uid: 10773 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,40.5 - parent: 1 - type: Transform - - uid: 10774 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,39.5 - parent: 1 - type: Transform - - uid: 10775 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,38.5 - parent: 1 - type: Transform - - uid: 10776 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,37.5 - parent: 1 - type: Transform - - uid: 10777 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,36.5 - parent: 1 - type: Transform - - uid: 10778 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,35.5 - parent: 1 - type: Transform - - uid: 10779 - components: - - rot: -1.5707963267948966 rad - pos: -91.5,34.5 - parent: 1 - type: Transform - - uid: 10780 - components: - - rot: -1.5707963267948966 rad - pos: -90.5,34.5 - parent: 1 - type: Transform - - uid: 10781 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,34.5 - parent: 1 - type: Transform - - uid: 10782 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,34.5 - parent: 1 - type: Transform - - uid: 10783 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,34.5 - parent: 1 - type: Transform - - uid: 10784 - components: - - rot: -1.5707963267948966 rad - pos: -90.5,36.5 - parent: 1 - type: Transform - - uid: 10785 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,36.5 - parent: 1 - type: Transform - - uid: 10786 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,36.5 - parent: 1 - type: Transform - - uid: 10787 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,36.5 - parent: 1 - type: Transform - - uid: 10788 - components: - - rot: -1.5707963267948966 rad - pos: -90.5,38.5 - parent: 1 - type: Transform - - uid: 10789 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,38.5 - parent: 1 - type: Transform - - uid: 10790 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,38.5 - parent: 1 - type: Transform - - uid: 10791 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,38.5 - parent: 1 - type: Transform - - uid: 10792 - components: - - rot: -1.5707963267948966 rad - pos: -90.5,40.5 - parent: 1 - type: Transform - - uid: 10793 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,40.5 - parent: 1 - type: Transform - - uid: 10794 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,40.5 - parent: 1 - type: Transform - - uid: 10795 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,40.5 - parent: 1 - type: Transform - - uid: 10815 - components: - - rot: -1.5707963267948966 rad - pos: -90.5,42.5 - parent: 1 - type: Transform - - uid: 10816 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,42.5 - parent: 1 - type: Transform - - uid: 10817 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,42.5 - parent: 1 - type: Transform - - uid: 10818 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,42.5 - parent: 1 - type: Transform - - uid: 10819 - components: - - rot: -1.5707963267948966 rad - pos: -90.5,44.5 - parent: 1 - type: Transform - - uid: 10820 - components: - - rot: -1.5707963267948966 rad - pos: -89.5,44.5 - parent: 1 - type: Transform - - uid: 10821 - components: - - rot: -1.5707963267948966 rad - pos: -88.5,44.5 - parent: 1 - type: Transform - - uid: 10822 - components: - - rot: -1.5707963267948966 rad - pos: -87.5,44.5 - parent: 1 - type: Transform -- proto: WallSolid - entities: - - uid: 2 - components: - - pos: -4.5,-14.5 - parent: 1 - type: Transform - - uid: 3 - components: - - pos: -6.5,-16.5 - parent: 1 - type: Transform - - uid: 20 - components: - - pos: -12.5,-0.5 - parent: 1 - type: Transform - - uid: 21 - components: - - pos: -10.5,0.5 - parent: 1 - type: Transform - - uid: 22 - components: - - pos: -10.5,2.5 - parent: 1 - type: Transform - - uid: 23 - components: - - pos: -13.5,3.5 - parent: 1 - type: Transform - - uid: 24 - components: - - pos: -14.5,1.5 - parent: 1 - type: Transform - - uid: 26 - components: - - pos: -7.5,-3.5 - parent: 1 - type: Transform - - uid: 27 - components: - - pos: -10.5,3.5 - parent: 1 - type: Transform - - uid: 31 - components: - - pos: -14.5,-0.5 - parent: 1 - type: Transform - - uid: 34 - components: - - pos: -14.5,3.5 - parent: 1 - type: Transform - - uid: 35 - components: - - pos: -9.5,3.5 - parent: 1 - type: Transform - - uid: 43 - components: - - pos: 0.5,-0.5 - parent: 1 - type: Transform - - uid: 45 - components: - - pos: 0.5,-2.5 - parent: 1 - type: Transform - - uid: 47 - components: - - pos: 3.5,3.5 - parent: 1 - type: Transform - - uid: 48 - components: - - pos: 3.5,2.5 - parent: 1 - type: Transform - - uid: 50 - components: - - pos: 3.5,0.5 - parent: 1 - type: Transform - - uid: 53 - components: - - pos: 3.5,-2.5 - parent: 1 - type: Transform - - uid: 55 - components: - - pos: 2.5,-3.5 - parent: 1 - type: Transform - - uid: 58 - components: - - pos: -8.5,-6.5 - parent: 1 - type: Transform - - uid: 60 - components: - - pos: -9.5,-6.5 - parent: 1 - type: Transform - - uid: 73 - components: - - pos: -10.5,-10.5 - parent: 1 - type: Transform - - uid: 76 - components: - - pos: -6.5,-6.5 - parent: 1 - type: Transform - - uid: 81 - components: - - pos: 30.5,-1.5 - parent: 1 - type: Transform - - uid: 82 - components: - - pos: 30.5,-2.5 - parent: 1 - type: Transform - - uid: 85 - components: - - pos: 0.5,-6.5 - parent: 1 - type: Transform - - uid: 86 - components: - - pos: -5.5,-6.5 - parent: 1 - type: Transform - - uid: 88 - components: - - pos: -3.5,-6.5 - parent: 1 - type: Transform - - uid: 113 - components: - - pos: -18.5,-12.5 - parent: 1 - type: Transform - - uid: 117 - components: - - pos: -39.5,53.5 - parent: 1 - type: Transform - - uid: 124 - components: - - pos: -10.5,-11.5 - parent: 1 - type: Transform - - uid: 125 - components: - - pos: -8.5,-13.5 - parent: 1 - type: Transform - - uid: 175 - components: - - pos: 11.5,-8.5 - parent: 1 - type: Transform - - uid: 176 - components: - - pos: 6.5,-8.5 - parent: 1 - type: Transform - - uid: 178 - components: - - pos: 2.5,-6.5 - parent: 1 - type: Transform - - uid: 183 - components: - - pos: 9.5,-6.5 - parent: 1 - type: Transform - - uid: 190 - components: - - pos: -0.5,-15.5 - parent: 1 - type: Transform - - uid: 192 - components: - - pos: -0.5,-11.5 - parent: 1 - type: Transform - - uid: 205 - components: - - pos: 0.5,-7.5 - parent: 1 - type: Transform - - uid: 209 - components: - - pos: 6.5,-6.5 - parent: 1 - type: Transform - - uid: 214 - components: - - pos: -18.5,-14.5 - parent: 1 - type: Transform - - uid: 462 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,-0.5 - parent: 1 - type: Transform - - uid: 463 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,-0.5 - parent: 1 - type: Transform - - uid: 465 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,-2.5 - parent: 1 - type: Transform - - uid: 466 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,-3.5 - parent: 1 - type: Transform - - uid: 468 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,1.5 - parent: 1 - type: Transform - - uid: 469 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,2.5 - parent: 1 - type: Transform - - uid: 472 - components: - - rot: -1.5707963267948966 rad - pos: 5.5,2.5 - parent: 1 - type: Transform - - uid: 478 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,-3.5 - parent: 1 - type: Transform - - uid: 482 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,3.5 - parent: 1 - type: Transform - - uid: 483 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,3.5 - parent: 1 - type: Transform - - uid: 485 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,1.5 - parent: 1 - type: Transform - - uid: 486 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,-0.5 - parent: 1 - type: Transform - - uid: 487 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,-1.5 - parent: 1 - type: Transform - - uid: 491 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,-4.5 - parent: 1 - type: Transform - - uid: 492 - components: - - rot: -1.5707963267948966 rad - pos: 12.5,-3.5 - parent: 1 - type: Transform - - uid: 496 - components: - - pos: 10.5,-6.5 - parent: 1 - type: Transform - - uid: 502 - components: - - pos: 10.5,-7.5 - parent: 1 - type: Transform - - uid: 512 - components: - - pos: 15.5,-3.5 - parent: 1 - type: Transform - - uid: 525 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,17.5 - parent: 1 - type: Transform - - uid: 528 - components: - - pos: 13.5,-6.5 - parent: 1 - type: Transform - - uid: 531 - components: - - pos: 12.5,-7.5 - parent: 1 - type: Transform - - uid: 575 - components: - - pos: 10.5,-8.5 - parent: 1 - type: Transform - - uid: 584 - components: - - pos: -4.5,3.5 - parent: 1 - type: Transform - - uid: 610 - components: - - rot: 3.141592653589793 rad - pos: -15.5,16.5 - parent: 1 - type: Transform - - uid: 613 - components: - - pos: -4.5,2.5 - parent: 1 - type: Transform - - uid: 614 - components: - - pos: -16.5,16.5 - parent: 1 - type: Transform - - uid: 619 - components: - - pos: -4.5,-0.5 - parent: 1 - type: Transform - - uid: 632 - components: - - pos: 12.5,0.5 - parent: 1 - type: Transform - - uid: 634 - components: - - pos: 12.5,2.5 - parent: 1 - type: Transform - - uid: 635 - components: - - pos: 12.5,3.5 - parent: 1 - type: Transform - - uid: 636 - components: - - pos: 14.5,4.5 - parent: 1 - type: Transform - - uid: 638 - components: - - pos: 12.5,4.5 - parent: 1 - type: Transform - - uid: 639 - components: - - pos: 15.5,4.5 - parent: 1 - type: Transform - - uid: 641 - components: - - pos: 18.5,3.5 - parent: 1 - type: Transform - - uid: 642 - components: - - pos: 18.5,2.5 - parent: 1 - type: Transform - - uid: 643 - components: - - pos: 22.5,-2.5 - parent: 1 - type: Transform - - uid: 644 - components: - - pos: 18.5,0.5 - parent: 1 - type: Transform - - uid: 646 - components: - - pos: 19.5,3.5 - parent: 1 - type: Transform - - uid: 647 - components: - - pos: 18.5,-2.5 - parent: 1 - type: Transform - - uid: 649 - components: - - pos: 17.5,-3.5 - parent: 1 - type: Transform - - uid: 651 - components: - - pos: 21.5,3.5 - parent: 1 - type: Transform - - uid: 654 - components: - - pos: 21.5,0.5 - parent: 1 - type: Transform - - uid: 656 - components: - - pos: 22.5,-0.5 - parent: 1 - type: Transform - - uid: 659 - components: - - pos: 20.5,-3.5 - parent: 1 - type: Transform - - uid: 660 - components: - - pos: 26.5,-6.5 - parent: 1 - type: Transform - - uid: 662 - components: - - pos: 22.5,-3.5 - parent: 1 - type: Transform - - uid: 664 - components: - - pos: 23.5,-6.5 - parent: 1 - type: Transform - - uid: 665 - components: - - pos: -3.5,3.5 - parent: 1 - type: Transform - - uid: 666 - components: - - pos: 26.5,-7.5 - parent: 1 - type: Transform - - uid: 667 - components: - - pos: -2.5,3.5 - parent: 1 - type: Transform - - uid: 668 - components: - - pos: -1.5,3.5 - parent: 1 - type: Transform - - uid: 669 - components: - - pos: -0.5,3.5 - parent: 1 - type: Transform - - uid: 670 - components: - - pos: -0.5,2.5 - parent: 1 - type: Transform - - uid: 671 - components: - - pos: -0.5,1.5 - parent: 1 - type: Transform - - uid: 672 - components: - - pos: -0.5,0.5 - parent: 1 - type: Transform - - uid: 677 - components: - - pos: 24.5,0.5 - parent: 1 - type: Transform - - uid: 680 - components: - - pos: 25.5,-1.5 - parent: 1 - type: Transform - - uid: 682 - components: - - pos: 25.5,-3.5 - parent: 1 - type: Transform - - uid: 685 - components: - - pos: 28.5,-3.5 - parent: 1 - type: Transform - - uid: 688 - components: - - pos: 27.5,-6.5 - parent: 1 - type: Transform - - uid: 695 - components: - - pos: 25.5,0.5 - parent: 1 - type: Transform - - uid: 697 - components: - - pos: 29.5,0.5 - parent: 1 - type: Transform - - uid: 698 - components: - - pos: -1.5,-0.5 - parent: 1 - type: Transform - - uid: 700 - components: - - pos: 18.5,4.5 - parent: 1 - type: Transform - - uid: 701 - components: - - pos: 23.5,3.5 - parent: 1 - type: Transform - - uid: 702 - components: - - pos: 24.5,4.5 - parent: 1 - type: Transform - - uid: 706 - components: - - pos: 29.5,4.5 - parent: 1 - type: Transform - - uid: 714 - components: - - pos: -4.5,1.5 - parent: 1 - type: Transform - - uid: 715 - components: - - pos: -10.5,-6.5 - parent: 1 - type: Transform - - uid: 716 - components: - - pos: -11.5,-6.5 - parent: 1 - type: Transform - - uid: 722 - components: - - pos: -10.5,-7.5 - parent: 1 - type: Transform - - uid: 723 - components: - - pos: -13.5,-6.5 - parent: 1 - type: Transform - - uid: 724 - components: - - pos: -11.5,-9.5 - parent: 1 - type: Transform - - uid: 725 - components: - - pos: -12.5,-9.5 - parent: 1 - type: Transform - - uid: 726 - components: - - pos: -13.5,-9.5 - parent: 1 - type: Transform - - uid: 727 - components: - - pos: -14.5,-9.5 - parent: 1 - type: Transform - - uid: 881 - components: - - pos: 15.5,14.5 - parent: 1 - type: Transform - - uid: 985 - components: - - pos: -14.5,-8.5 - parent: 1 - type: Transform - - uid: 987 - components: - - pos: -14.5,-7.5 - parent: 1 - type: Transform - - uid: 989 - components: - - pos: -14.5,-6.5 - parent: 1 - type: Transform - - uid: 994 - components: - - pos: -10.5,-15.5 - parent: 1 - type: Transform - - uid: 996 - components: - - pos: -12.5,-15.5 - parent: 1 - type: Transform - - uid: 997 - components: - - pos: -11.5,-15.5 - parent: 1 - type: Transform - - uid: 998 - components: - - rot: 3.141592653589793 rad - pos: 24.5,20.5 - parent: 1 - type: Transform - - uid: 1001 - components: - - pos: 20.5,13.5 - parent: 1 - type: Transform - - uid: 1002 - components: - - pos: 20.5,14.5 - parent: 1 - type: Transform - - uid: 1004 - components: - - pos: -10.5,-14.5 - parent: 1 - type: Transform - - uid: 1005 - components: - - pos: 17.5,14.5 - parent: 1 - type: Transform - - uid: 1006 - components: - - pos: 16.5,14.5 - parent: 1 - type: Transform - - uid: 1007 - components: - - rot: 3.141592653589793 rad - pos: 24.5,10.5 - parent: 1 - type: Transform - - uid: 1008 - components: - - rot: 3.141592653589793 rad - pos: 24.5,9.5 - parent: 1 - type: Transform - - uid: 1010 - components: - - rot: 3.141592653589793 rad - pos: 24.5,7.5 - parent: 1 - type: Transform - - uid: 1011 - components: - - pos: -10.5,-9.5 - parent: 1 - type: Transform - - uid: 1012 - components: - - pos: -6.5,-17.5 - parent: 1 - type: Transform - - uid: 1013 - components: - - pos: -4.5,-16.5 - parent: 1 - type: Transform - - uid: 1030 - components: - - pos: -4.5,-15.5 - parent: 1 - type: Transform - - uid: 1035 - components: - - pos: 21.5,10.5 - parent: 1 - type: Transform - - uid: 1036 - components: - - pos: 20.5,10.5 - parent: 1 - type: Transform - - uid: 1038 - components: - - pos: 20.5,8.5 - parent: 1 - type: Transform - - uid: 1039 - components: - - pos: 20.5,7.5 - parent: 1 - type: Transform - - uid: 1041 - components: - - pos: 23.5,7.5 - parent: 1 - type: Transform - - uid: 1043 - components: - - pos: 15.5,10.5 - parent: 1 - type: Transform - - uid: 1045 - components: - - pos: 1.5,41.5 - parent: 1 - type: Transform - - uid: 1046 - components: - - pos: -4.5,-17.5 - parent: 1 - type: Transform - - uid: 1047 - components: - - pos: 15.5,8.5 - parent: 1 - type: Transform - - uid: 1050 - components: - - pos: 21.5,15.5 - parent: 1 - type: Transform - - uid: 1057 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,18.5 - parent: 1 - type: Transform - - uid: 1060 - components: - - pos: 6.5,7.5 - parent: 1 - type: Transform - - uid: 1062 - components: - - rot: -1.5707963267948966 rad - pos: 21.5,23.5 - parent: 1 - type: Transform - - uid: 1071 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,-6.5 - parent: 1 - type: Transform - - uid: 1074 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,-5.5 - parent: 1 - type: Transform - - uid: 1075 - components: - - rot: 1.5707963267948966 rad - pos: -22.5,3.5 - parent: 1 - type: Transform - - uid: 1076 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,-3.5 - parent: 1 - type: Transform - - uid: 1078 - components: - - rot: -1.5707963267948966 rad - pos: -19.5,-1.5 - parent: 1 - type: Transform - - uid: 1081 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,-0.5 - parent: 1 - type: Transform - - uid: 1083 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,-0.5 - parent: 1 - type: Transform - - uid: 1084 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,2.5 - parent: 1 - type: Transform - - uid: 1087 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,3.5 - parent: 1 - type: Transform - - uid: 1093 - components: - - pos: -15.5,-9.5 - parent: 1 - type: Transform - - uid: 1095 - components: - - pos: -18.5,-11.5 - parent: 1 - type: Transform - - uid: 1097 - components: - - pos: -19.5,-9.5 - parent: 1 - type: Transform - - uid: 1098 - components: - - pos: -6.5,-15.5 - parent: 1 - type: Transform - - uid: 1099 - components: - - pos: -21.5,-9.5 - parent: 1 - type: Transform - - uid: 1100 - components: - - rot: 1.5707963267948966 rad - pos: -22.5,2.5 - parent: 1 - type: Transform - - uid: 1103 - components: - - rot: 1.5707963267948966 rad - pos: -22.5,-0.5 - parent: 1 - type: Transform - - uid: 1104 - components: - - pos: -22.5,-1.5 - parent: 1 - type: Transform - - uid: 1108 - components: - - rot: 1.5707963267948966 rad - pos: -23.5,-2.5 - parent: 1 - type: Transform - - uid: 1111 - components: - - rot: 1.5707963267948966 rad - pos: -24.5,-2.5 - parent: 1 - type: Transform - - uid: 1113 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,-3.5 - parent: 1 - type: Transform - - uid: 1115 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,-5.5 - parent: 1 - type: Transform - - uid: 1119 - components: - - rot: 1.5707963267948966 rad - pos: -23.5,-0.5 - parent: 1 - type: Transform - - uid: 1121 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,-2.5 - parent: 1 - type: Transform - - uid: 1123 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,-0.5 - parent: 1 - type: Transform - - uid: 1124 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,0.5 - parent: 1 - type: Transform - - uid: 1125 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,1.5 - parent: 1 - type: Transform - - uid: 1127 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,3.5 - parent: 1 - type: Transform - - uid: 1129 - components: - - rot: 1.5707963267948966 rad - pos: -23.5,3.5 - parent: 1 - type: Transform - - uid: 1131 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,3.5 - parent: 1 - type: Transform - - uid: 1132 - components: - - rot: 1.5707963267948966 rad - pos: -24.5,1.5 - parent: 1 - type: Transform - - uid: 1135 - components: - - rot: 1.5707963267948966 rad - pos: 13.5,7.5 - parent: 1 - type: Transform - - uid: 1136 - components: - - rot: 1.5707963267948966 rad - pos: 12.5,7.5 - parent: 1 - type: Transform - - uid: 1141 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,7.5 - parent: 1 - type: Transform - - uid: 1152 - components: - - pos: 19.5,24.5 - parent: 1 - type: Transform - - uid: 1154 - components: - - pos: 2.5,35.5 - parent: 1 - type: Transform - - uid: 1160 - components: - - pos: 9.5,21.5 - parent: 1 - type: Transform - - uid: 1171 - components: - - pos: 12.5,23.5 - parent: 1 - type: Transform - - uid: 1177 - components: - - pos: 13.5,24.5 - parent: 1 - type: Transform - - uid: 1180 - components: - - pos: 11.5,10.5 - parent: 1 - type: Transform - - uid: 1182 - components: - - pos: 12.5,-6.5 - parent: 1 - type: Transform - - uid: 1183 - components: - - pos: 14.5,-12.5 - parent: 1 - type: Transform - - uid: 1184 - components: - - pos: 13.5,-12.5 - parent: 1 - type: Transform - - uid: 1185 - components: - - pos: 16.5,-12.5 - parent: 1 - type: Transform - - uid: 1186 - components: - - pos: 12.5,-9.5 - parent: 1 - type: Transform - - uid: 1187 - components: - - pos: 12.5,-11.5 - parent: 1 - type: Transform - - uid: 1188 - components: - - pos: 12.5,-10.5 - parent: 1 - type: Transform - - uid: 1194 - components: - - pos: 15.5,-12.5 - parent: 1 - type: Transform - - uid: 1195 - components: - - pos: 17.5,-6.5 - parent: 1 - type: Transform - - uid: 1196 - components: - - pos: 17.5,-12.5 - parent: 1 - type: Transform - - uid: 1197 - components: - - pos: 21.5,28.5 - parent: 1 - type: Transform - - uid: 1198 - components: - - pos: 20.5,-9.5 - parent: 1 - type: Transform - - uid: 1199 - components: - - pos: 13.5,34.5 - parent: 1 - type: Transform - - uid: 1201 - components: - - pos: 19.5,33.5 - parent: 1 - type: Transform - - uid: 1202 - components: - - rot: 1.5707963267948966 rad - pos: 21.5,17.5 - parent: 1 - type: Transform - - uid: 1204 - components: - - pos: 3.5,7.5 - parent: 1 - type: Transform - - uid: 1205 - components: - - pos: -1.5,13.5 - parent: 1 - type: Transform - - uid: 1206 - components: - - pos: 4.5,41.5 - parent: 1 - type: Transform - - uid: 1209 - components: - - pos: 18.5,-12.5 - parent: 1 - type: Transform - - uid: 1210 - components: - - pos: -0.5,13.5 - parent: 1 - type: Transform - - uid: 1212 - components: - - pos: 16.5,22.5 - parent: 1 - type: Transform - - uid: 1214 - components: - - pos: 5.5,20.5 - parent: 1 - type: Transform - - uid: 1215 - components: - - pos: 19.5,-12.5 - parent: 1 - type: Transform - - uid: 1216 - components: - - pos: 20.5,-12.5 - parent: 1 - type: Transform - - uid: 1217 - components: - - pos: 20.5,-10.5 - parent: 1 - type: Transform - - uid: 1218 - components: - - pos: 18.5,-9.5 - parent: 1 - type: Transform - - uid: 1219 - components: - - pos: 21.5,-9.5 - parent: 1 - type: Transform - - uid: 1220 - components: - - pos: 27.5,-9.5 - parent: 1 - type: Transform - - uid: 1221 - components: - - pos: 30.5,-6.5 - parent: 1 - type: Transform - - uid: 1222 - components: - - pos: 22.5,-9.5 - parent: 1 - type: Transform - - uid: 1224 - components: - - pos: 5.5,10.5 - parent: 1 - type: Transform - - uid: 1226 - components: - - pos: 4.5,13.5 - parent: 1 - type: Transform - - uid: 1227 - components: - - pos: 5.5,12.5 - parent: 1 - type: Transform - - uid: 1231 - components: - - pos: 6.5,10.5 - parent: 1 - type: Transform - - uid: 1232 - components: - - pos: 23.5,-9.5 - parent: 1 - type: Transform - - uid: 1235 - components: - - pos: 9.5,10.5 - parent: 1 - type: Transform - - uid: 1238 - components: - - pos: 10.5,32.5 - parent: 1 - type: Transform - - uid: 1239 - components: - - pos: 5.5,15.5 - parent: 1 - type: Transform - - uid: 1243 - components: - - pos: 2.5,18.5 - parent: 1 - type: Transform - - uid: 1244 - components: - - pos: 24.5,-9.5 - parent: 1 - type: Transform - - uid: 1245 - components: - - pos: 25.5,-9.5 - parent: 1 - type: Transform - - uid: 1251 - components: - - pos: 26.5,-9.5 - parent: 1 - type: Transform - - uid: 1252 - components: - - pos: 30.5,-3.5 - parent: 1 - type: Transform - - uid: 1253 - components: - - pos: 30.5,-0.5 - parent: 1 - type: Transform - - uid: 1254 - components: - - pos: 30.5,0.5 - parent: 1 - type: Transform - - uid: 1255 - components: - - pos: 30.5,-4.5 - parent: 1 - type: Transform - - uid: 1256 - components: - - pos: 29.5,-9.5 - parent: 1 - type: Transform - - uid: 1257 - components: - - pos: 30.5,-9.5 - parent: 1 - type: Transform - - uid: 1258 - components: - - pos: 30.5,-8.5 - parent: 1 - type: Transform - - uid: 1259 - components: - - pos: 30.5,-7.5 - parent: 1 - type: Transform - - uid: 1260 - components: - - pos: 30.5,-5.5 - parent: 1 - type: Transform - - uid: 1261 - components: - - pos: 29.5,22.5 - parent: 1 - type: Transform - - uid: 1262 - components: - - pos: 29.5,27.5 - parent: 1 - type: Transform - - uid: 1267 - components: - - pos: 29.5,23.5 - parent: 1 - type: Transform - - uid: 1268 - components: - - pos: 24.5,25.5 - parent: 1 - type: Transform - - uid: 1273 - components: - - pos: 24.5,24.5 - parent: 1 - type: Transform - - uid: 1274 - components: - - pos: 24.5,23.5 - parent: 1 - type: Transform - - uid: 1275 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,38.5 - parent: 1 - type: Transform - - uid: 1278 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,31.5 - parent: 1 - type: Transform - - uid: 1280 - components: - - rot: 1.5707963267948966 rad - pos: 0.5,35.5 - parent: 1 - type: Transform - - uid: 1282 - components: - - rot: 1.5707963267948966 rad - pos: -1.5,35.5 - parent: 1 - type: Transform - - uid: 1285 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,35.5 - parent: 1 - type: Transform - - uid: 1288 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,38.5 - parent: 1 - type: Transform - - uid: 1292 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,38.5 - parent: 1 - type: Transform - - uid: 1294 - components: - - pos: 5.5,34.5 - parent: 1 - type: Transform - - uid: 1295 - components: - - pos: 5.5,32.5 - parent: 1 - type: Transform - - uid: 1299 - components: - - pos: 17.5,31.5 - parent: 1 - type: Transform - - uid: 1302 - components: - - rot: 1.5707963267948966 rad - pos: 18.5,33.5 - parent: 1 - type: Transform - - uid: 1306 - components: - - rot: 1.5707963267948966 rad - pos: 21.5,32.5 - parent: 1 - type: Transform - - uid: 1309 - components: - - rot: 1.5707963267948966 rad - pos: 21.5,29.5 - parent: 1 - type: Transform - - uid: 1310 - components: - - pos: 24.5,22.5 - parent: 1 - type: Transform - - uid: 1312 - components: - - pos: 5.5,37.5 - parent: 1 - type: Transform - - uid: 1326 - components: - - rot: 1.5707963267948966 rad - pos: 12.5,38.5 - parent: 1 - type: Transform - - uid: 1334 - components: - - pos: 5.5,27.5 - parent: 1 - type: Transform - - uid: 1337 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,26.5 - parent: 1 - type: Transform - - uid: 1339 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,26.5 - parent: 1 - type: Transform - - uid: 1349 - components: - - pos: 0.5,41.5 - parent: 1 - type: Transform - - uid: 1358 - components: - - pos: -2.5,15.5 - parent: 1 - type: Transform - - uid: 1359 - components: - - pos: 12.5,20.5 - parent: 1 - type: Transform - - uid: 1362 - components: - - pos: 6.5,18.5 - parent: 1 - type: Transform - - uid: 1364 - components: - - pos: 12.5,18.5 - parent: 1 - type: Transform - - uid: 1366 - components: - - pos: 12.5,13.5 - parent: 1 - type: Transform - - uid: 1368 - components: - - pos: 8.5,32.5 - parent: 1 - type: Transform - - uid: 1374 - components: - - pos: -1.5,38.5 - parent: 1 - type: Transform - - uid: 1376 - components: - - pos: -1.5,36.5 - parent: 1 - type: Transform - - uid: 1378 - components: - - pos: -1.5,41.5 - parent: 1 - type: Transform - - uid: 1380 - components: - - pos: -1.5,43.5 - parent: 1 - type: Transform - - uid: 1384 - components: - - pos: 1.5,44.5 - parent: 1 - type: Transform - - uid: 1385 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,45.5 - parent: 1 - type: Transform - - uid: 1386 - components: - - rot: 1.5707963267948966 rad - pos: 2.5,45.5 - parent: 1 - type: Transform - - uid: 1388 - components: - - pos: 5.5,44.5 - parent: 1 - type: Transform - - uid: 1390 - components: - - pos: 5.5,42.5 - parent: 1 - type: Transform - - uid: 1393 - components: - - pos: 16.5,24.5 - parent: 1 - type: Transform - - uid: 1395 - components: - - pos: 24.5,26.5 - parent: 1 - type: Transform - - uid: 1396 - components: - - pos: 27.5,29.5 - parent: 1 - type: Transform - - uid: 1398 - components: - - pos: 6.5,21.5 - parent: 1 - type: Transform - - uid: 1399 - components: - - pos: 29.5,26.5 - parent: 1 - type: Transform - - uid: 1400 - components: - - pos: 17.5,29.5 - parent: 1 - type: Transform - - uid: 1408 - components: - - rot: 1.5707963267948966 rad - pos: 4.5,45.5 - parent: 1 - type: Transform - - uid: 1409 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,45.5 - parent: 1 - type: Transform - - uid: 1420 - components: - - rot: -1.5707963267948966 rad - pos: 18.5,44.5 - parent: 1 - type: Transform - - uid: 1426 - components: - - pos: -3.5,10.5 - parent: 1 - type: Transform - - uid: 1427 - components: - - pos: -3.5,9.5 - parent: 1 - type: Transform - - uid: 1428 - components: - - pos: -3.5,8.5 - parent: 1 - type: Transform - - uid: 1429 - components: - - pos: -2.5,7.5 - parent: 1 - type: Transform - - uid: 1430 - components: - - pos: -3.5,7.5 - parent: 1 - type: Transform - - uid: 1431 - components: - - pos: -1.5,7.5 - parent: 1 - type: Transform - - uid: 1432 - components: - - pos: -3.5,11.5 - parent: 1 - type: Transform - - uid: 1433 - components: - - pos: 13.5,33.5 - parent: 1 - type: Transform - - uid: 1434 - components: - - pos: 17.5,28.5 - parent: 1 - type: Transform - - uid: 1435 - components: - - pos: 17.5,30.5 - parent: 1 - type: Transform - - uid: 1436 - components: - - pos: 16.5,33.5 - parent: 1 - type: Transform - - uid: 1441 - components: - - pos: -2.5,18.5 - parent: 1 - type: Transform - - uid: 1442 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,7.5 - parent: 1 - type: Transform - - uid: 1443 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,16.5 - parent: 1 - type: Transform - - uid: 1444 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,16.5 - parent: 1 - type: Transform - - uid: 1449 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,14.5 - parent: 1 - type: Transform - - uid: 1450 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,13.5 - parent: 1 - type: Transform - - uid: 1453 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,10.5 - parent: 1 - type: Transform - - uid: 1455 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,8.5 - parent: 1 - type: Transform - - uid: 1456 - components: - - rot: 1.5707963267948966 rad - pos: -6.5,7.5 - parent: 1 - type: Transform - - uid: 1457 - components: - - pos: -1.5,18.5 - parent: 1 - type: Transform - - uid: 1458 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,7.5 - parent: 1 - type: Transform - - uid: 1460 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,10.5 - parent: 1 - type: Transform - - uid: 1461 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,10.5 - parent: 1 - type: Transform - - uid: 1462 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,10.5 - parent: 1 - type: Transform - - uid: 1464 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,13.5 - parent: 1 - type: Transform - - uid: 1465 - components: - - pos: -0.5,18.5 - parent: 1 - type: Transform - - uid: 1467 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,13.5 - parent: 1 - type: Transform - - uid: 1468 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,20.5 - parent: 1 - type: Transform - - uid: 1471 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,19.5 - parent: 1 - type: Transform - - uid: 1472 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,19.5 - parent: 1 - type: Transform - - uid: 1475 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,23.5 - parent: 1 - type: Transform - - uid: 1477 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,23.5 - parent: 1 - type: Transform - - uid: 1478 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,23.5 - parent: 1 - type: Transform - - uid: 1480 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,21.5 - parent: 1 - type: Transform - - uid: 1482 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,19.5 - parent: 1 - type: Transform - - uid: 1484 - components: - - rot: 1.5707963267948966 rad - pos: -10.5,17.5 - parent: 1 - type: Transform - - uid: 1485 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,7.5 - parent: 1 - type: Transform - - uid: 1492 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,10.5 - parent: 1 - type: Transform - - uid: 1493 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,11.5 - parent: 1 - type: Transform - - uid: 1494 - components: - - rot: -1.5707963267948966 rad - pos: -16.5,11.5 - parent: 1 - type: Transform - - uid: 1496 - components: - - rot: 1.5707963267948966 rad - pos: -15.5,11.5 - parent: 1 - type: Transform - - uid: 1497 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,11.5 - parent: 1 - type: Transform - - uid: 1503 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,14.5 - parent: 1 - type: Transform - - uid: 1511 - components: - - pos: -14.5,18.5 - parent: 1 - type: Transform - - uid: 1560 - components: - - rot: 1.5707963267948966 rad - pos: -4.5,8.5 - parent: 1 - type: Transform - - uid: 1589 - components: - - pos: 0.5,18.5 - parent: 1 - type: Transform - - uid: 1590 - components: - - pos: -4.5,18.5 - parent: 1 - type: Transform - - uid: 1595 - components: - - pos: 0.5,19.5 - parent: 1 - type: Transform - - uid: 1624 - components: - - pos: 0.5,20.5 - parent: 1 - type: Transform - - uid: 1626 - components: - - pos: 11.5,21.5 - parent: 1 - type: Transform - - uid: 1628 - components: - - pos: 7.5,27.5 - parent: 1 - type: Transform - - uid: 1661 - components: - - pos: 0.5,21.5 - parent: 1 - type: Transform - - uid: 1670 - components: - - pos: 1.5,21.5 - parent: 1 - type: Transform - - uid: 1671 - components: - - pos: 1.5,11.5 - parent: 1 - type: Transform - - uid: 1673 - components: - - pos: 2.5,7.5 - parent: 1 - type: Transform - - uid: 1751 - components: - - pos: -5.5,20.5 - parent: 1 - type: Transform - - uid: 1844 - components: - - pos: -5.5,19.5 - parent: 1 - type: Transform - - uid: 1845 - components: - - pos: -5.5,18.5 - parent: 1 - type: Transform - - uid: 1857 - components: - - pos: -5.5,26.5 - parent: 1 - type: Transform - - uid: 1858 - components: - - pos: -5.5,25.5 - parent: 1 - type: Transform - - uid: 1875 - components: - - pos: -5.5,24.5 - parent: 1 - type: Transform - - uid: 1879 - components: - - pos: -5.5,23.5 - parent: 1 - type: Transform - - uid: 1880 - components: - - pos: -5.5,22.5 - parent: 1 - type: Transform - - uid: 1882 - components: - - pos: -5.5,21.5 - parent: 1 - type: Transform - - uid: 1883 - components: - - pos: 19.5,27.5 - parent: 1 - type: Transform - - uid: 1884 - components: - - pos: 20.5,27.5 - parent: 1 - type: Transform - - uid: 1888 - components: - - pos: 1.5,27.5 - parent: 1 - type: Transform - - uid: 1893 - components: - - pos: 10.5,27.5 - parent: 1 - type: Transform - - uid: 1895 - components: - - pos: 2.5,13.5 - parent: 1 - type: Transform - - uid: 1899 - components: - - pos: 8.5,20.5 - parent: 1 - type: Transform - - uid: 1929 - components: - - pos: 1.5,28.5 - parent: 1 - type: Transform - - uid: 1930 - components: - - pos: -3.5,28.5 - parent: 1 - type: Transform - - uid: 1931 - components: - - pos: -4.5,28.5 - parent: 1 - type: Transform - - uid: 1932 - components: - - pos: 13.5,32.5 - parent: 1 - type: Transform - - uid: 1933 - components: - - pos: 13.5,31.5 - parent: 1 - type: Transform - - uid: 1956 - components: - - pos: 13.5,30.5 - parent: 1 - type: Transform - - uid: 1957 - components: - - pos: 17.5,33.5 - parent: 1 - type: Transform - - uid: 1965 - components: - - pos: 13.5,27.5 - parent: 1 - type: Transform - - uid: 1966 - components: - - pos: 16.5,27.5 - parent: 1 - type: Transform - - uid: 2013 - components: - - pos: -30.5,53.5 - parent: 1 - type: Transform - - uid: 2014 - components: - - pos: 24.5,36.5 - parent: 1 - type: Transform - - uid: 2032 - components: - - pos: 5.5,18.5 - parent: 1 - type: Transform - - uid: 2045 - components: - - pos: 24.5,35.5 - parent: 1 - type: Transform - - uid: 2047 - components: - - pos: 24.5,34.5 - parent: 1 - type: Transform - - uid: 2048 - components: - - pos: 24.5,33.5 - parent: 1 - type: Transform - - uid: 2049 - components: - - pos: 24.5,32.5 - parent: 1 - type: Transform - - uid: 2056 - components: - - pos: 24.5,31.5 - parent: 1 - type: Transform - - uid: 2057 - components: - - pos: 24.5,30.5 - parent: 1 - type: Transform - - uid: 2058 - components: - - pos: 15.5,21.5 - parent: 1 - type: Transform - - uid: 2061 - components: - - pos: 24.5,29.5 - parent: 1 - type: Transform - - uid: 2068 - components: - - pos: 5.5,17.5 - parent: 1 - type: Transform - - uid: 2069 - components: - - pos: 24.5,28.5 - parent: 1 - type: Transform - - uid: 2104 - components: - - pos: 24.5,27.5 - parent: 1 - type: Transform - - uid: 2184 - components: - - pos: 20.5,44.5 - parent: 1 - type: Transform - - uid: 2235 - components: - - pos: 18.5,21.5 - parent: 1 - type: Transform - - uid: 2236 - components: - - pos: 19.5,21.5 - parent: 1 - type: Transform - - uid: 2250 - components: - - pos: 24.5,37.5 - parent: 1 - type: Transform - - uid: 2318 - components: - - pos: -16.5,-15.5 - parent: 1 - type: Transform - - uid: 2332 - components: - - pos: 20.5,-11.5 - parent: 1 - type: Transform - - uid: 2366 - components: - - pos: 13.5,-11.5 - parent: 1 - type: Transform - - uid: 2377 - components: - - pos: 17.5,-8.5 - parent: 1 - type: Transform - - uid: 2646 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,35.5 - parent: 1 - type: Transform - - uid: 2647 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,35.5 - parent: 1 - type: Transform - - uid: 2651 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,34.5 - parent: 1 - type: Transform - - uid: 2652 - components: - - rot: -1.5707963267948966 rad - pos: -11.5,35.5 - parent: 1 - type: Transform - - uid: 2653 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,34.5 - parent: 1 - type: Transform - - uid: 2654 - components: - - pos: -18.5,34.5 - parent: 1 - type: Transform - - uid: 2655 - components: - - pos: 9.5,53.5 - parent: 1 - type: Transform - - uid: 2668 - components: - - pos: -18.5,-15.5 - parent: 1 - type: Transform - - uid: 2669 - components: - - pos: 15.5,33.5 - parent: 1 - type: Transform - - uid: 2732 - components: - - pos: -15.5,18.5 - parent: 1 - type: Transform - - uid: 2733 - components: - - pos: -14.5,17.5 - parent: 1 - type: Transform - - uid: 2749 - components: - - pos: 14.5,33.5 - parent: 1 - type: Transform - - uid: 2755 - components: - - pos: 17.5,27.5 - parent: 1 - type: Transform - - uid: 2763 - components: - - pos: 15.5,27.5 - parent: 1 - type: Transform - - uid: 2764 - components: - - pos: 14.5,27.5 - parent: 1 - type: Transform - - uid: 2772 - components: - - pos: -2.5,11.5 - parent: 1 - type: Transform - - uid: 2795 - components: - - pos: -1.5,11.5 - parent: 1 - type: Transform - - uid: 2797 - components: - - pos: 2.5,9.5 - parent: 1 - type: Transform - - uid: 2810 - components: - - pos: 0.5,11.5 - parent: 1 - type: Transform - - uid: 2815 - components: - - pos: 2.5,10.5 - parent: 1 - type: Transform - - uid: 2817 - components: - - pos: 2.5,11.5 - parent: 1 - type: Transform - - uid: 2818 - components: - - pos: 2.5,8.5 - parent: 1 - type: Transform - - uid: 2823 - components: - - pos: -0.5,11.5 - parent: 1 - type: Transform - - uid: 2827 - components: - - pos: -46.5,-14.5 - parent: 1 - type: Transform - - uid: 2829 - components: - - rot: 3.141592653589793 rad - pos: -20.5,30.5 - parent: 1 - type: Transform - - uid: 2835 - components: - - pos: -18.5,36.5 - parent: 1 - type: Transform - - uid: 2836 - components: - - pos: -14.5,22.5 - parent: 1 - type: Transform - - uid: 2838 - components: - - pos: -14.5,25.5 - parent: 1 - type: Transform - - uid: 2844 - components: - - pos: -14.5,30.5 - parent: 1 - type: Transform - - uid: 2849 - components: - - pos: -18.5,30.5 - parent: 1 - type: Transform - - uid: 2850 - components: - - pos: -14.5,21.5 - parent: 1 - type: Transform - - uid: 2893 - components: - - pos: -18.5,22.5 - parent: 1 - type: Transform - - uid: 2960 - components: - - pos: -18.5,28.5 - parent: 1 - type: Transform - - uid: 2961 - components: - - pos: -15.5,21.5 - parent: 1 - type: Transform - - uid: 2975 - components: - - pos: -18.5,21.5 - parent: 1 - type: Transform - - uid: 2976 - components: - - pos: 28.5,29.5 - parent: 1 - type: Transform - - uid: 2977 - components: - - pos: 29.5,29.5 - parent: 1 - type: Transform - - uid: 3026 - components: - - pos: -20.5,8.5 - parent: 1 - type: Transform - - uid: 3030 - components: - - pos: -21.5,10.5 - parent: 1 - type: Transform - - uid: 3031 - components: - - pos: -21.5,11.5 - parent: 1 - type: Transform - - uid: 3033 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,13.5 - parent: 1 - type: Transform - - uid: 3035 - components: - - pos: -21.5,15.5 - parent: 1 - type: Transform - - uid: 3037 - components: - - pos: -21.5,17.5 - parent: 1 - type: Transform - - uid: 3043 - components: - - pos: -21.5,19.5 - parent: 1 - type: Transform - - uid: 3048 - components: - - pos: -27.5,26.5 - parent: 1 - type: Transform - - uid: 3050 - components: - - pos: -23.5,25.5 - parent: 1 - type: Transform - - uid: 3051 - components: - - pos: -21.5,27.5 - parent: 1 - type: Transform - - uid: 3053 - components: - - pos: -22.5,7.5 - parent: 1 - type: Transform - - uid: 3054 - components: - - pos: -24.5,7.5 - parent: 1 - type: Transform - - uid: 3056 - components: - - pos: -29.5,7.5 - parent: 1 - type: Transform - - uid: 3059 - components: - - pos: -29.5,10.5 - parent: 1 - type: Transform - - uid: 3063 - components: - - pos: -29.5,14.5 - parent: 1 - type: Transform - - uid: 3065 - components: - - pos: -29.5,16.5 - parent: 1 - type: Transform - - uid: 3068 - components: - - pos: -25.5,14.5 - parent: 1 - type: Transform - - uid: 3069 - components: - - pos: -28.5,19.5 - parent: 1 - type: Transform - - uid: 3072 - components: - - pos: -28.5,14.5 - parent: 1 - type: Transform - - uid: 3074 - components: - - pos: -22.5,19.5 - parent: 1 - type: Transform - - uid: 3076 - components: - - pos: -24.5,19.5 - parent: 1 - type: Transform - - uid: 3077 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,19.5 - parent: 1 - type: Transform - - uid: 3079 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,18.5 - parent: 1 - type: Transform - - uid: 3081 - components: - - pos: -22.5,14.5 - parent: 1 - type: Transform - - uid: 3108 - components: - - pos: -31.5,11.5 - parent: 1 - type: Transform - - uid: 3110 - components: - - pos: -27.5,30.5 - parent: 1 - type: Transform - - uid: 3113 - components: - - pos: -32.5,7.5 - parent: 1 - type: Transform - - uid: 3114 - components: - - pos: -31.5,7.5 - parent: 1 - type: Transform - - uid: 3120 - components: - - pos: -21.5,25.5 - parent: 1 - type: Transform - - uid: 3123 - components: - - pos: -21.5,22.5 - parent: 1 - type: Transform - - uid: 3125 - components: - - pos: -23.5,22.5 - parent: 1 - type: Transform - - uid: 3126 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,22.5 - parent: 1 - type: Transform - - uid: 3128 - components: - - pos: -24.5,25.5 - parent: 1 - type: Transform - - uid: 3138 - components: - - pos: -27.5,22.5 - parent: 1 - type: Transform - - uid: 3141 - components: - - pos: -29.5,30.5 - parent: 1 - type: Transform - - uid: 3142 - components: - - pos: -30.5,30.5 - parent: 1 - type: Transform - - uid: 3143 - components: - - pos: -31.5,30.5 - parent: 1 - type: Transform - - uid: 3148 - components: - - pos: -30.5,22.5 - parent: 1 - type: Transform - - uid: 3149 - components: - - pos: -31.5,22.5 - parent: 1 - type: Transform - - uid: 3153 - components: - - pos: -35.5,30.5 - parent: 1 - type: Transform - - uid: 3155 - components: - - pos: -35.5,22.5 - parent: 1 - type: Transform - - uid: 3156 - components: - - pos: -31.5,21.5 - parent: 1 - type: Transform - - uid: 3162 - components: - - pos: -31.5,15.5 - parent: 1 - type: Transform - - uid: 3163 - components: - - pos: -31.5,14.5 - parent: 1 - type: Transform - - uid: 3165 - components: - - pos: -33.5,14.5 - parent: 1 - type: Transform - - uid: 3170 - components: - - pos: 25.5,22.5 - parent: 1 - type: Transform - - uid: 3171 - components: - - pos: -35.5,8.5 - parent: 1 - type: Transform - - uid: 3172 - components: - - pos: -35.5,9.5 - parent: 1 - type: Transform - - uid: 3182 - components: - - pos: -34.5,8.5 - parent: 1 - type: Transform - - uid: 3214 - components: - - pos: -39.5,17.5 - parent: 1 - type: Transform - - uid: 3216 - components: - - pos: -39.5,14.5 - parent: 1 - type: Transform - - uid: 3218 - components: - - pos: -39.5,7.5 - parent: 1 - type: Transform - - uid: 3219 - components: - - pos: -43.5,7.5 - parent: 1 - type: Transform - - uid: 3221 - components: - - pos: -42.5,7.5 - parent: 1 - type: Transform - - uid: 3361 - components: - - pos: -40.5,7.5 - parent: 1 - type: Transform - - uid: 3408 - components: - - pos: -33.5,-14.5 - parent: 1 - type: Transform - - uid: 3421 - components: - - pos: -35.5,14.5 - parent: 1 - type: Transform - - uid: 3436 - components: - - pos: -39.5,9.5 - parent: 1 - type: Transform - - uid: 3438 - components: - - pos: -39.5,11.5 - parent: 1 - type: Transform - - uid: 3439 - components: - - pos: -39.5,12.5 - parent: 1 - type: Transform - - uid: 3442 - components: - - pos: -18.5,43.5 - parent: 1 - type: Transform - - uid: 3445 - components: - - pos: -23.5,45.5 - parent: 1 - type: Transform - - uid: 3450 - components: - - pos: -23.5,43.5 - parent: 1 - type: Transform - - uid: 3459 - components: - - pos: -30.5,3.5 - parent: 1 - type: Transform - - uid: 3460 - components: - - pos: -30.5,2.5 - parent: 1 - type: Transform - - uid: 3462 - components: - - pos: -30.5,0.5 - parent: 1 - type: Transform - - uid: 3466 - components: - - pos: -30.5,-3.5 - parent: 1 - type: Transform - - uid: 3467 - components: - - pos: -30.5,-4.5 - parent: 1 - type: Transform - - uid: 3470 - components: - - pos: -29.5,-9.5 - parent: 1 - type: Transform - - uid: 3472 - components: - - pos: -30.5,-9.5 - parent: 1 - type: Transform - - uid: 3482 - components: - - pos: -24.5,-14.5 - parent: 1 - type: Transform - - uid: 3483 - components: - - pos: -25.5,-14.5 - parent: 1 - type: Transform - - uid: 3484 - components: - - pos: -26.5,-14.5 - parent: 1 - type: Transform - - uid: 3487 - components: - - pos: -22.5,-15.5 - parent: 1 - type: Transform - - uid: 3489 - components: - - pos: -20.5,-15.5 - parent: 1 - type: Transform - - uid: 3490 - components: - - pos: -30.5,-11.5 - parent: 1 - type: Transform - - uid: 3495 - components: - - pos: -30.5,-12.5 - parent: 1 - type: Transform - - uid: 3497 - components: - - pos: -28.5,-13.5 - parent: 1 - type: Transform - - uid: 3498 - components: - - pos: -30.5,-13.5 - parent: 1 - type: Transform - - uid: 3501 - components: - - pos: -27.5,-13.5 - parent: 1 - type: Transform - - uid: 3502 - components: - - pos: -43.5,-8.5 - parent: 1 - type: Transform - - uid: 3503 - components: - - pos: -19.5,-12.5 - parent: 1 - type: Transform - - uid: 3520 - components: - - pos: -39.5,2.5 - parent: 1 - type: Transform - - uid: 3523 - components: - - pos: -42.5,2.5 - parent: 1 - type: Transform - - uid: 3526 - components: - - pos: -35.5,-0.5 - parent: 1 - type: Transform - - uid: 3529 - components: - - pos: -31.5,-0.5 - parent: 1 - type: Transform - - uid: 3533 - components: - - pos: -42.5,-0.5 - parent: 1 - type: Transform - - uid: 3537 - components: - - pos: -43.5,3.5 - parent: 1 - type: Transform - - uid: 3538 - components: - - pos: -44.5,-8.5 - parent: 1 - type: Transform - - uid: 3539 - components: - - pos: -45.5,-8.5 - parent: 1 - type: Transform - - uid: 3540 - components: - - pos: -46.5,-7.5 - parent: 1 - type: Transform - - uid: 3541 - components: - - pos: -46.5,-8.5 - parent: 1 - type: Transform - - uid: 3542 - components: - - pos: -46.5,-6.5 - parent: 1 - type: Transform - - uid: 3550 - components: - - pos: -35.5,-3.5 - parent: 1 - type: Transform - - uid: 3560 - components: - - pos: -36.5,-10.5 - parent: 1 - type: Transform - - uid: 3561 - components: - - pos: -36.5,-9.5 - parent: 1 - type: Transform - - uid: 3562 - components: - - pos: -36.5,-8.5 - parent: 1 - type: Transform - - uid: 3579 - components: - - pos: -46.5,-5.5 - parent: 1 - type: Transform - - uid: 3580 - components: - - pos: -42.5,-8.5 - parent: 1 - type: Transform - - uid: 3581 - components: - - pos: -45.5,-5.5 - parent: 1 - type: Transform - - uid: 3583 - components: - - pos: -49.5,2.5 - parent: 1 - type: Transform - - uid: 3585 - components: - - pos: -43.5,-5.5 - parent: 1 - type: Transform - - uid: 3587 - components: - - pos: -42.5,-5.5 - parent: 1 - type: Transform - - uid: 3590 - components: - - pos: -48.5,-11.5 - parent: 1 - type: Transform - - uid: 3598 - components: - - pos: -47.5,-3.5 - parent: 1 - type: Transform - - uid: 3599 - components: - - pos: -50.5,3.5 - parent: 1 - type: Transform - - uid: 3600 - components: - - pos: -47.5,-1.5 - parent: 1 - type: Transform - - uid: 3601 - components: - - pos: -47.5,-0.5 - parent: 1 - type: Transform - - uid: 3604 - components: - - pos: -47.5,2.5 - parent: 1 - type: Transform - - uid: 3605 - components: - - pos: -47.5,3.5 - parent: 1 - type: Transform - - uid: 3606 - components: - - pos: -46.5,3.5 - parent: 1 - type: Transform - - uid: 3611 - components: - - pos: -43.5,-0.5 - parent: 1 - type: Transform - - uid: 3628 - components: - - pos: -46.5,-11.5 - parent: 1 - type: Transform - - uid: 3632 - components: - - pos: -38.5,-14.5 - parent: 1 - type: Transform - - uid: 3645 - components: - - pos: -36.5,-14.5 - parent: 1 - type: Transform - - uid: 3647 - components: - - pos: -36.5,-11.5 - parent: 1 - type: Transform - - uid: 3676 - components: - - pos: -44.5,-14.5 - parent: 1 - type: Transform - - uid: 3678 - components: - - pos: -33.5,-11.5 - parent: 1 - type: Transform - - uid: 3684 - components: - - pos: -30.5,-14.5 - parent: 1 - type: Transform - - uid: 3690 - components: - - pos: -39.5,8.5 - parent: 1 - type: Transform - - uid: 3691 - components: - - pos: -43.5,8.5 - parent: 1 - type: Transform - - uid: 3699 - components: - - pos: -43.5,11.5 - parent: 1 - type: Transform - - uid: 3700 - components: - - pos: -43.5,12.5 - parent: 1 - type: Transform - - uid: 3705 - components: - - pos: -35.5,-4.5 - parent: 1 - type: Transform - - uid: 3766 - components: - - pos: -42.5,12.5 - parent: 1 - type: Transform - - uid: 3832 - components: - - pos: -41.5,12.5 - parent: 1 - type: Transform - - uid: 3903 - components: - - pos: -40.5,12.5 - parent: 1 - type: Transform - - uid: 3904 - components: - - pos: 29.5,28.5 - parent: 1 - type: Transform - - uid: 3963 - components: - - pos: 8.5,53.5 - parent: 1 - type: Transform - - uid: 3964 - components: - - pos: -50.5,-11.5 - parent: 1 - type: Transform - - uid: 4084 - components: - - pos: -51.5,-11.5 - parent: 1 - type: Transform - - uid: 4091 - components: - - pos: -52.5,-11.5 - parent: 1 - type: Transform - - uid: 4093 - components: - - pos: -54.5,-11.5 - parent: 1 - type: Transform - - uid: 4094 - components: - - pos: -55.5,-11.5 - parent: 1 - type: Transform - - uid: 4095 - components: - - pos: -56.5,-11.5 - parent: 1 - type: Transform - - uid: 4096 - components: - - pos: 10.5,53.5 - parent: 1 - type: Transform - - uid: 4097 - components: - - pos: 16.5,40.5 - parent: 1 - type: Transform - - uid: 4113 - components: - - pos: -56.5,-12.5 - parent: 1 - type: Transform - - uid: 4124 - components: - - pos: -73.5,7.5 - parent: 1 - type: Transform - - uid: 4136 - components: - - pos: -36.5,-13.5 - parent: 1 - type: Transform - - uid: 4170 - components: - - pos: -39.5,18.5 - parent: 1 - type: Transform - - uid: 4173 - components: - - pos: -40.5,20.5 - parent: 1 - type: Transform - - uid: 4177 - components: - - pos: -39.5,25.5 - parent: 1 - type: Transform - - uid: 4179 - components: - - pos: -39.5,27.5 - parent: 1 - type: Transform - - uid: 4180 - components: - - pos: -39.5,28.5 - parent: 1 - type: Transform - - uid: 4182 - components: - - pos: -39.5,30.5 - parent: 1 - type: Transform - - uid: 4184 - components: - - pos: -41.5,29.5 - parent: 1 - type: Transform - - uid: 4186 - components: - - pos: -43.5,29.5 - parent: 1 - type: Transform - - uid: 4187 - components: - - pos: -43.5,28.5 - parent: 1 - type: Transform - - uid: 4190 - components: - - pos: -43.5,25.5 - parent: 1 - type: Transform - - uid: 4192 - components: - - pos: -43.5,23.5 - parent: 1 - type: Transform - - uid: 4195 - components: - - pos: -41.5,22.5 - parent: 1 - type: Transform - - uid: 4196 - components: - - pos: -40.5,22.5 - parent: 1 - type: Transform - - uid: 4202 - components: - - pos: -50.5,30.5 - parent: 1 - type: Transform - - uid: 4203 - components: - - pos: -18.5,24.5 - parent: 1 - type: Transform - - uid: 4205 - components: - - pos: -51.5,20.5 - parent: 1 - type: Transform - - uid: 4206 - components: - - pos: -47.5,30.5 - parent: 1 - type: Transform - - uid: 4239 - components: - - pos: -44.5,56.5 - parent: 1 - type: Transform - - uid: 4253 - components: - - pos: -18.5,27.5 - parent: 1 - type: Transform - - uid: 4266 - components: - - pos: -17.5,21.5 - parent: 1 - type: Transform - - uid: 4267 - components: - - pos: 17.5,-7.5 - parent: 1 - type: Transform - - uid: 4269 - components: - - pos: -23.5,39.5 - parent: 1 - type: Transform - - uid: 4270 - components: - - pos: -20.5,49.5 - parent: 1 - type: Transform - - uid: 4271 - components: - - pos: -23.5,35.5 - parent: 1 - type: Transform - - uid: 4273 - components: - - pos: -9.5,45.5 - parent: 1 - type: Transform - - uid: 4282 - components: - - pos: -10.5,45.5 - parent: 1 - type: Transform - - uid: 4283 - components: - - pos: -43.5,17.5 - parent: 1 - type: Transform - - uid: 4286 - components: - - pos: -43.5,19.5 - parent: 1 - type: Transform - - uid: 4287 - components: - - pos: -42.5,16.5 - parent: 1 - type: Transform - - uid: 4289 - components: - - pos: -40.5,16.5 - parent: 1 - type: Transform - - uid: 4290 - components: - - pos: -44.5,16.5 - parent: 1 - type: Transform - - uid: 4291 - components: - - pos: -45.5,16.5 - parent: 1 - type: Transform - - uid: 4293 - components: - - pos: -49.5,20.5 - parent: 1 - type: Transform - - uid: 4295 - components: - - pos: -49.5,18.5 - parent: 1 - type: Transform - - uid: 4296 - components: - - pos: -49.5,17.5 - parent: 1 - type: Transform - - uid: 4298 - components: - - pos: -48.5,16.5 - parent: 1 - type: Transform - - uid: 4299 - components: - - pos: -47.5,16.5 - parent: 1 - type: Transform - - uid: 4301 - components: - - pos: -46.5,18.5 - parent: 1 - type: Transform - - uid: 4305 - components: - - pos: -42.5,13.5 - parent: 1 - type: Transform - - uid: 4324 - components: - - pos: -51.5,16.5 - parent: 1 - type: Transform - - uid: 4430 - components: - - pos: -11.5,45.5 - parent: 1 - type: Transform - - uid: 4431 - components: - - pos: -12.5,45.5 - parent: 1 - type: Transform - - uid: 4433 - components: - - pos: -14.5,45.5 - parent: 1 - type: Transform - - uid: 4500 - components: - - pos: -49.5,-1.5 - parent: 1 - type: Transform - - uid: 4506 - components: - - pos: -49.5,-7.5 - parent: 1 - type: Transform - - uid: 4509 - components: - - pos: -54.5,3.5 - parent: 1 - type: Transform - - uid: 4510 - components: - - pos: -55.5,3.5 - parent: 1 - type: Transform - - uid: 4511 - components: - - pos: -49.5,0.5 - parent: 1 - type: Transform - - uid: 4513 - components: - - pos: -51.5,0.5 - parent: 1 - type: Transform - - uid: 4516 - components: - - pos: -54.5,0.5 - parent: 1 - type: Transform - - uid: 4519 - components: - - pos: -55.5,-1.5 - parent: 1 - type: Transform - - uid: 4521 - components: - - pos: -55.5,-3.5 - parent: 1 - type: Transform - - uid: 4522 - components: - - pos: -55.5,-4.5 - parent: 1 - type: Transform - - uid: 4525 - components: - - pos: -55.5,-7.5 - parent: 1 - type: Transform - - uid: 4526 - components: - - pos: -55.5,-8.5 - parent: 1 - type: Transform - - uid: 4529 - components: - - pos: -52.5,-8.5 - parent: 1 - type: Transform - - uid: 4533 - components: - - pos: -9.5,48.5 - parent: 1 - type: Transform - - uid: 4534 - components: - - pos: -13.5,45.5 - parent: 1 - type: Transform - - uid: 4535 - components: - - pos: -9.5,50.5 - parent: 1 - type: Transform - - uid: 4536 - components: - - pos: -9.5,49.5 - parent: 1 - type: Transform - - uid: 4537 - components: - - pos: -6.5,52.5 - parent: 1 - type: Transform - - uid: 4538 - components: - - pos: -10.5,50.5 - parent: 1 - type: Transform - - uid: 4539 - components: - - pos: -14.5,50.5 - parent: 1 - type: Transform - - uid: 4544 - components: - - pos: -13.5,50.5 - parent: 1 - type: Transform - - uid: 4545 - components: - - pos: -12.5,50.5 - parent: 1 - type: Transform - - uid: 4551 - components: - - pos: -55.5,28.5 - parent: 1 - type: Transform - - uid: 4553 - components: - - pos: -55.5,30.5 - parent: 1 - type: Transform - - uid: 4554 - components: - - pos: -54.5,30.5 - parent: 1 - type: Transform - - uid: 4563 - components: - - pos: -30.5,57.5 - parent: 1 - type: Transform - - uid: 4564 - components: - - pos: -30.5,58.5 - parent: 1 - type: Transform - - uid: 4571 - components: - - pos: -46.5,27.5 - parent: 1 - type: Transform - - uid: 4575 - components: - - pos: -51.5,19.5 - parent: 1 - type: Transform - - uid: 4579 - components: - - pos: -55.5,22.5 - parent: 1 - type: Transform - - uid: 4581 - components: - - pos: -46.5,29.5 - parent: 1 - type: Transform - - uid: 4586 - components: - - pos: -55.5,26.5 - parent: 1 - type: Transform - - uid: 4587 - components: - - pos: -55.5,25.5 - parent: 1 - type: Transform - - uid: 4594 - components: - - pos: -11.5,50.5 - parent: 1 - type: Transform - - uid: 4707 - components: - - pos: -9.5,46.5 - parent: 1 - type: Transform - - uid: 4712 - components: - - pos: -6.5,49.5 - parent: 1 - type: Transform - - uid: 4737 - components: - - pos: -5.5,54.5 - parent: 1 - type: Transform - - uid: 4981 - components: - - pos: -6.5,48.5 - parent: 1 - type: Transform - - uid: 5006 - components: - - pos: -32.5,56.5 - parent: 1 - type: Transform - - uid: 5007 - components: - - pos: -33.5,56.5 - parent: 1 - type: Transform - - uid: 5009 - components: - - pos: -33.5,57.5 - parent: 1 - type: Transform - - uid: 5012 - components: - - pos: -6.5,53.5 - parent: 1 - type: Transform - - uid: 5015 - components: - - pos: -32.5,58.5 - parent: 1 - type: Transform - - uid: 5016 - components: - - pos: -4.5,54.5 - parent: 1 - type: Transform - - uid: 5017 - components: - - pos: -3.5,54.5 - parent: 1 - type: Transform - - uid: 5018 - components: - - pos: -12.5,52.5 - parent: 1 - type: Transform - - uid: 5019 - components: - - pos: -9.5,52.5 - parent: 1 - type: Transform - - uid: 5020 - components: - - pos: -8.5,52.5 - parent: 1 - type: Transform - - uid: 5021 - components: - - pos: -4.5,48.5 - parent: 1 - type: Transform - - uid: 5022 - components: - - pos: -14.5,52.5 - parent: 1 - type: Transform - - uid: 5023 - components: - - pos: -6.5,51.5 - parent: 1 - type: Transform - - uid: 5024 - components: - - pos: -6.5,50.5 - parent: 1 - type: Transform - - uid: 5025 - components: - - pos: -5.5,53.5 - parent: 1 - type: Transform - - uid: 5027 - components: - - pos: -5.5,48.5 - parent: 1 - type: Transform - - uid: 5028 - components: - - pos: -11.5,52.5 - parent: 1 - type: Transform - - uid: 5029 - components: - - pos: -13.5,52.5 - parent: 1 - type: Transform - - uid: 5030 - components: - - pos: -7.5,52.5 - parent: 1 - type: Transform - - uid: 5031 - components: - - pos: -3.5,48.5 - parent: 1 - type: Transform - - uid: 5034 - components: - - pos: -2.5,48.5 - parent: 1 - type: Transform - - uid: 5035 - components: - - pos: -18.5,49.5 - parent: 1 - type: Transform - - uid: 5036 - components: - - pos: -10.5,52.5 - parent: 1 - type: Transform - - uid: 5037 - components: - - pos: -2.5,54.5 - parent: 1 - type: Transform - - uid: 5038 - components: - - pos: 1.5,54.5 - parent: 1 - type: Transform - - uid: 5041 - components: - - pos: 1.5,53.5 - parent: 1 - type: Transform - - uid: 5042 - components: - - pos: 10.5,44.5 - parent: 1 - type: Transform - - uid: 5043 - components: - - pos: 9.5,44.5 - parent: 1 - type: Transform - - uid: 5044 - components: - - pos: 12.5,44.5 - parent: 1 - type: Transform - - uid: 5048 - components: - - pos: -35.5,58.5 - parent: 1 - type: Transform - - uid: 5049 - components: - - pos: 8.5,42.5 - parent: 1 - type: Transform - - uid: 5050 - components: - - pos: 13.5,42.5 - parent: 1 - type: Transform - - uid: 5051 - components: - - pos: 13.5,41.5 - parent: 1 - type: Transform - - uid: 5052 - components: - - pos: 12.5,41.5 - parent: 1 - type: Transform - - uid: 5055 - components: - - pos: 11.5,41.5 - parent: 1 - type: Transform - - uid: 5056 - components: - - pos: 13.5,44.5 - parent: 1 - type: Transform - - uid: 5057 - components: - - pos: 22.5,44.5 - parent: 1 - type: Transform - - uid: 5058 - components: - - pos: 9.5,41.5 - parent: 1 - type: Transform - - uid: 5059 - components: - - pos: 8.5,41.5 - parent: 1 - type: Transform - - uid: 5060 - components: - - pos: 21.5,44.5 - parent: 1 - type: Transform - - uid: 5061 - components: - - pos: 2.5,53.5 - parent: 1 - type: Transform - - uid: 5062 - components: - - pos: 3.5,53.5 - parent: 1 - type: Transform - - uid: 5063 - components: - - pos: 4.5,53.5 - parent: 1 - type: Transform - - uid: 5064 - components: - - pos: 5.5,53.5 - parent: 1 - type: Transform - - uid: 5065 - components: - - pos: 6.5,53.5 - parent: 1 - type: Transform - - uid: 5066 - components: - - pos: 7.5,53.5 - parent: 1 - type: Transform - - uid: 5067 - components: - - pos: 11.5,53.5 - parent: 1 - type: Transform - - uid: 5068 - components: - - pos: 12.5,53.5 - parent: 1 - type: Transform - - uid: 5077 - components: - - pos: -61.5,7.5 - parent: 1 - type: Transform - - uid: 5078 - components: - - pos: 16.5,49.5 - parent: 1 - type: Transform - - uid: 5104 - components: - - pos: 16.5,48.5 - parent: 1 - type: Transform - - uid: 5105 - components: - - pos: 18.5,47.5 - parent: 1 - type: Transform - - uid: 5107 - components: - - pos: 17.5,47.5 - parent: 1 - type: Transform - - uid: 5108 - components: - - pos: 12.5,52.5 - parent: 1 - type: Transform - - uid: 5109 - components: - - pos: 13.5,49.5 - parent: 1 - type: Transform - - uid: 5110 - components: - - pos: 14.5,49.5 - parent: 1 - type: Transform - - uid: 5111 - components: - - pos: 15.5,49.5 - parent: 1 - type: Transform - - uid: 5112 - components: - - pos: 12.5,49.5 - parent: 1 - type: Transform - - uid: 5113 - components: - - pos: 12.5,51.5 - parent: 1 - type: Transform - - uid: 5114 - components: - - pos: 12.5,50.5 - parent: 1 - type: Transform - - uid: 5115 - components: - - pos: 8.5,43.5 - parent: 1 - type: Transform - - uid: 5116 - components: - - pos: 8.5,44.5 - parent: 1 - type: Transform - - uid: 5117 - components: - - pos: 11.5,44.5 - parent: 1 - type: Transform - - uid: 5118 - components: - - pos: 13.5,43.5 - parent: 1 - type: Transform - - uid: 5119 - components: - - pos: 23.5,44.5 - parent: 1 - type: Transform - - uid: 5120 - components: - - pos: 24.5,44.5 - parent: 1 - type: Transform - - uid: 5121 - components: - - pos: 24.5,43.5 - parent: 1 - type: Transform - - uid: 5122 - components: - - pos: 24.5,42.5 - parent: 1 - type: Transform - - uid: 5123 - components: - - pos: 16.5,47.5 - parent: 1 - type: Transform - - uid: 5124 - components: - - pos: 19.5,-9.5 - parent: 1 - type: Transform - - uid: 5125 - components: - - pos: 19.5,46.5 - parent: 1 - type: Transform - - uid: 5126 - components: - - pos: 19.5,44.5 - parent: 1 - type: Transform - - uid: 5164 - components: - - pos: 19.5,45.5 - parent: 1 - type: Transform - - uid: 5165 - components: - - pos: 19.5,47.5 - parent: 1 - type: Transform - - uid: 5166 - components: - - pos: 16.5,39.5 - parent: 1 - type: Transform - - uid: 5168 - components: - - pos: 18.5,36.5 - parent: 1 - type: Transform - - uid: 5169 - components: - - pos: 16.5,41.5 - parent: 1 - type: Transform - - uid: 5171 - components: - - pos: -2.5,57.5 - parent: 1 - type: Transform - - uid: 5173 - components: - - pos: -2.5,56.5 - parent: 1 - type: Transform - - uid: 5176 - components: - - rot: -1.5707963267948966 rad - pos: -70.5,7.5 - parent: 1 - type: Transform - - uid: 5178 - components: - - rot: -1.5707963267948966 rad - pos: -68.5,7.5 - parent: 1 - type: Transform - - uid: 5180 - components: - - rot: -1.5707963267948966 rad - pos: -66.5,7.5 - parent: 1 - type: Transform - - uid: 5183 - components: - - pos: -59.5,7.5 - parent: 1 - type: Transform - - uid: 5187 - components: - - pos: -2.5,55.5 - parent: 1 - type: Transform - - uid: 5188 - components: - - pos: -3.5,57.5 - parent: 1 - type: Transform - - uid: 5199 - components: - - pos: -23.5,49.5 - parent: 1 - type: Transform - - uid: 5209 - components: - - pos: -26.5,56.5 - parent: 1 - type: Transform - - uid: 5222 - components: - - pos: -27.5,56.5 - parent: 1 - type: Transform - - uid: 5224 - components: - - pos: -29.5,56.5 - parent: 1 - type: Transform - - uid: 5255 - components: - - pos: -55.5,21.5 - parent: 1 - type: Transform - - uid: 5307 - components: - - pos: -53.5,-3.5 - parent: 1 - type: Transform - - uid: 5309 - components: - - pos: -50.5,-3.5 - parent: 1 - type: Transform - - uid: 5320 - components: - - pos: -30.5,56.5 - parent: 1 - type: Transform - - uid: 5330 - components: - - pos: 18.5,-6.5 - parent: 1 - type: Transform - - uid: 5331 - components: - - pos: -62.5,35.5 - parent: 1 - type: Transform - - uid: 5333 - components: - - pos: 20.5,-6.5 - parent: 1 - type: Transform - - uid: 5334 - components: - - pos: 21.5,-6.5 - parent: 1 - type: Transform - - uid: 5345 - components: - - pos: 21.5,-7.5 - parent: 1 - type: Transform - - uid: 5349 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,9.5 - parent: 1 - type: Transform - - uid: 5360 - components: - - pos: -36.5,57.5 - parent: 1 - type: Transform - - uid: 5361 - components: - - pos: -36.5,56.5 - parent: 1 - type: Transform - - uid: 5374 - components: - - pos: -46.5,-10.5 - parent: 1 - type: Transform - - uid: 5379 - components: - - pos: 19.5,36.5 - parent: 1 - type: Transform - - uid: 5380 - components: - - pos: 21.5,-8.5 - parent: 1 - type: Transform - - uid: 5412 - components: - - pos: -23.5,-5.5 - parent: 1 - type: Transform - - uid: 5428 - components: - - pos: -73.5,13.5 - parent: 1 - type: Transform - - uid: 5455 - components: - - pos: -73.5,12.5 - parent: 1 - type: Transform - - uid: 5505 - components: - - pos: -73.5,11.5 - parent: 1 - type: Transform - - uid: 5508 - components: - - pos: 21.5,36.5 - parent: 1 - type: Transform - - uid: 5523 - components: - - pos: -40.5,56.5 - parent: 1 - type: Transform - - uid: 5530 - components: - - pos: -42.5,56.5 - parent: 1 - type: Transform - - uid: 5557 - components: - - pos: -77.5,52.5 - parent: 1 - type: Transform - - uid: 5597 - components: - - pos: -76.5,52.5 - parent: 1 - type: Transform - - uid: 5621 - components: - - pos: -76.5,53.5 - parent: 1 - type: Transform - - uid: 5629 - components: - - pos: -75.5,53.5 - parent: 1 - type: Transform - - uid: 5632 - components: - - pos: -74.5,57.5 - parent: 1 - type: Transform - - uid: 5633 - components: - - pos: -72.5,36.5 - parent: 1 - type: Transform - - uid: 5659 - components: - - pos: -70.5,36.5 - parent: 1 - type: Transform - - uid: 5668 - components: - - pos: -67.5,35.5 - parent: 1 - type: Transform - - uid: 5679 - components: - - pos: -66.5,35.5 - parent: 1 - type: Transform - - uid: 5681 - components: - - pos: -73.5,36.5 - parent: 1 - type: Transform - - uid: 5722 - components: - - pos: -43.5,49.5 - parent: 1 - type: Transform - - uid: 5724 - components: - - pos: -44.5,48.5 - parent: 1 - type: Transform - - uid: 5730 - components: - - pos: -68.5,36.5 - parent: 1 - type: Transform - - uid: 5732 - components: - - pos: -64.5,58.5 - parent: 1 - type: Transform - - uid: 5749 - components: - - pos: -62.5,27.5 - parent: 1 - type: Transform - - uid: 5753 - components: - - pos: -45.5,55.5 - parent: 1 - type: Transform - - uid: 5757 - components: - - pos: -76.5,42.5 - parent: 1 - type: Transform - - uid: 5759 - components: - - pos: -45.5,50.5 - parent: 1 - type: Transform - - uid: 5802 - components: - - pos: -76.5,38.5 - parent: 1 - type: Transform - - uid: 5819 - components: - - pos: -76.5,37.5 - parent: 1 - type: Transform - - uid: 5825 - components: - - pos: -76.5,40.5 - parent: 1 - type: Transform - - uid: 5828 - components: - - pos: -76.5,39.5 - parent: 1 - type: Transform - - uid: 5830 - components: - - pos: -76.5,46.5 - parent: 1 - type: Transform - - uid: 5839 - components: - - pos: -10.5,38.5 - parent: 1 - type: Transform - - uid: 5841 - components: - - pos: -10.5,40.5 - parent: 1 - type: Transform - - uid: 5842 - components: - - pos: -10.5,41.5 - parent: 1 - type: Transform - - uid: 5844 - components: - - pos: -10.5,43.5 - parent: 1 - type: Transform - - uid: 5846 - components: - - pos: -76.5,45.5 - parent: 1 - type: Transform - - uid: 5847 - components: - - pos: -76.5,47.5 - parent: 1 - type: Transform - - uid: 5848 - components: - - pos: -76.5,44.5 - parent: 1 - type: Transform - - uid: 5849 - components: - - pos: -76.5,43.5 - parent: 1 - type: Transform - - uid: 5850 - components: - - pos: -76.5,49.5 - parent: 1 - type: Transform - - uid: 5853 - components: - - pos: -6.5,38.5 - parent: 1 - type: Transform - - uid: 5855 - components: - - pos: -76.5,50.5 - parent: 1 - type: Transform - - uid: 5858 - components: - - pos: -4.5,40.5 - parent: 1 - type: Transform - - uid: 5863 - components: - - pos: -7.5,38.5 - parent: 1 - type: Transform - - uid: 5865 - components: - - pos: -9.5,38.5 - parent: 1 - type: Transform - - uid: 5871 - components: - - pos: -4.5,41.5 - parent: 1 - type: Transform - - uid: 5873 - components: - - pos: -4.5,43.5 - parent: 1 - type: Transform - - uid: 5876 - components: - - pos: -5.5,45.5 - parent: 1 - type: Transform - - uid: 5880 - components: - - pos: -74.5,53.5 - parent: 1 - type: Transform - - uid: 5881 - components: - - pos: -74.5,55.5 - parent: 1 - type: Transform - - uid: 5882 - components: - - pos: -74.5,56.5 - parent: 1 - type: Transform - - uid: 5883 - components: - - pos: -76.5,36.5 - parent: 1 - type: Transform - - uid: 5884 - components: - - pos: -75.5,36.5 - parent: 1 - type: Transform - - uid: 5885 - components: - - pos: -71.5,36.5 - parent: 1 - type: Transform - - uid: 5886 - components: - - pos: -62.5,30.5 - parent: 1 - type: Transform - - uid: 5887 - components: - - pos: -62.5,31.5 - parent: 1 - type: Transform - - uid: 5888 - components: - - pos: -62.5,28.5 - parent: 1 - type: Transform - - uid: 5889 - components: - - pos: -62.5,29.5 - parent: 1 - type: Transform - - uid: 5890 - components: - - pos: -71.5,24.5 - parent: 1 - type: Transform - - uid: 5891 - components: - - pos: -72.5,25.5 - parent: 1 - type: Transform - - uid: 5892 - components: - - pos: -68.5,25.5 - parent: 1 - type: Transform - - uid: 5893 - components: - - pos: -62.5,26.5 - parent: 1 - type: Transform - - uid: 5894 - components: - - pos: -68.5,27.5 - parent: 1 - type: Transform - - uid: 5895 - components: - - pos: -68.5,26.5 - parent: 1 - type: Transform - - uid: 5896 - components: - - pos: -68.5,31.5 - parent: 1 - type: Transform - - uid: 5897 - components: - - pos: -68.5,30.5 - parent: 1 - type: Transform - - uid: 5898 - components: - - pos: -68.5,29.5 - parent: 1 - type: Transform - - uid: 5899 - components: - - pos: -18.5,50.5 - parent: 1 - type: Transform - - uid: 5903 - components: - - pos: -67.5,24.5 - parent: 1 - type: Transform - - uid: 5906 - components: - - pos: -68.5,28.5 - parent: 1 - type: Transform - - uid: 5907 - components: - - pos: -63.5,24.5 - parent: 1 - type: Transform - - uid: 5908 - components: - - pos: -62.5,33.5 - parent: 1 - type: Transform - - uid: 5909 - components: - - pos: -62.5,25.5 - parent: 1 - type: Transform - - uid: 5940 - components: - - pos: -62.5,34.5 - parent: 1 - type: Transform - - uid: 5941 - components: - - pos: -62.5,24.5 - parent: 1 - type: Transform - - uid: 5942 - components: - - pos: -68.5,32.5 - parent: 1 - type: Transform - - uid: 5943 - components: - - pos: -65.5,32.5 - parent: 1 - type: Transform - - uid: 5944 - components: - - pos: -68.5,24.5 - parent: 1 - type: Transform - - uid: 5945 - components: - - pos: -78.5,27.5 - parent: 1 - type: Transform - - uid: 5946 - components: - - pos: -79.5,28.5 - parent: 1 - type: Transform - - uid: 5948 - components: - - pos: -81.5,28.5 - parent: 1 - type: Transform - - uid: 5953 - components: - - pos: -75.5,21.5 - parent: 1 - type: Transform - - uid: 5954 - components: - - pos: 1.5,48.5 - parent: 1 - type: Transform - - uid: 5956 - components: - - pos: 1.5,50.5 - parent: 1 - type: Transform - - uid: 5959 - components: - - pos: -75.5,19.5 - parent: 1 - type: Transform - - uid: 5971 - components: - - pos: -75.5,18.5 - parent: 1 - type: Transform - - uid: 5973 - components: - - pos: 0.5,48.5 - parent: 1 - type: Transform - - uid: 5974 - components: - - pos: -75.5,17.5 - parent: 1 - type: Transform - - uid: 5975 - components: - - pos: -75.5,23.5 - parent: 1 - type: Transform - - uid: 5976 - components: - - pos: -77.5,23.5 - parent: 1 - type: Transform - - uid: 5977 - components: - - pos: -78.5,23.5 - parent: 1 - type: Transform - - uid: 5978 - components: - - pos: -64.5,59.5 - parent: 1 - type: Transform - - uid: 5980 - components: - - rot: -1.5707963267948966 rad - pos: 13.5,47.5 - parent: 1 - type: Transform - - uid: 5982 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,47.5 - parent: 1 - type: Transform - - uid: 5983 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,47.5 - parent: 1 - type: Transform - - uid: 5985 - components: - - rot: -1.5707963267948966 rad - pos: 12.5,47.5 - parent: 1 - type: Transform - - uid: 5988 - components: - - pos: -78.5,22.5 - parent: 1 - type: Transform - - uid: 5989 - components: - - pos: -78.5,21.5 - parent: 1 - type: Transform - - uid: 5990 - components: - - pos: -80.5,21.5 - parent: 1 - type: Transform - - uid: 5991 - components: - - pos: -72.5,24.5 - parent: 1 - type: Transform - - uid: 5992 - components: - - pos: -72.5,30.5 - parent: 1 - type: Transform - - uid: 5993 - components: - - pos: -78.5,28.5 - parent: 1 - type: Transform - - uid: 5994 - components: - - pos: -80.5,28.5 - parent: 1 - type: Transform - - uid: 5995 - components: - - pos: -72.5,29.5 - parent: 1 - type: Transform - - uid: 5997 - components: - - pos: -72.5,31.5 - parent: 1 - type: Transform - - uid: 5999 - components: - - pos: 5.5,48.5 - parent: 1 - type: Transform - - uid: 6000 - components: - - pos: -66.5,18.5 - parent: 1 - type: Transform - - uid: 6001 - components: - - pos: -72.5,19.5 - parent: 1 - type: Transform - - uid: 6002 - components: - - pos: -63.5,18.5 - parent: 1 - type: Transform - - uid: 6003 - components: - - pos: -72.5,18.5 - parent: 1 - type: Transform - - uid: 6004 - components: - - pos: 6.5,49.5 - parent: 1 - type: Transform - - uid: 6005 - components: - - pos: 5.5,51.5 - parent: 1 - type: Transform - - uid: 6007 - components: - - pos: 5.5,49.5 - parent: 1 - type: Transform - - uid: 6009 - components: - - pos: -72.5,23.5 - parent: 1 - type: Transform - - uid: 6010 - components: - - pos: -70.5,27.5 - parent: 1 - type: Transform - - uid: 6014 - components: - - pos: -71.5,18.5 - parent: 1 - type: Transform - - uid: 6015 - components: - - pos: -81.5,21.5 - parent: 1 - type: Transform - - uid: 6021 - components: - - pos: -82.5,21.5 - parent: 1 - type: Transform - - uid: 6022 - components: - - pos: -86.5,22.5 - parent: 1 - type: Transform - - uid: 6025 - components: - - pos: -85.5,22.5 - parent: 1 - type: Transform - - uid: 6026 - components: - - pos: 8.5,49.5 - parent: 1 - type: Transform - - uid: 6028 - components: - - pos: -77.5,27.5 - parent: 1 - type: Transform - - uid: 6029 - components: - - pos: 11.5,49.5 - parent: 1 - type: Transform - - uid: 6030 - components: - - pos: -83.5,21.5 - parent: 1 - type: Transform - - uid: 6031 - components: - - pos: -83.5,22.5 - parent: 1 - type: Transform - - uid: 6032 - components: - - pos: -75.5,20.5 - parent: 1 - type: Transform - - uid: 6033 - components: - - pos: -64.5,18.5 - parent: 1 - type: Transform - - uid: 6034 - components: - - pos: 9.5,52.5 - parent: 1 - type: Transform - - uid: 6035 - components: - - pos: 9.5,51.5 - parent: 1 - type: Transform - - uid: 6037 - components: - - pos: -65.5,18.5 - parent: 1 - type: Transform - - uid: 6038 - components: - - pos: -62.5,23.5 - parent: 1 - type: Transform - - uid: 6039 - components: - - pos: -76.5,23.5 - parent: 1 - type: Transform - - uid: 6047 - components: - - pos: -75.5,22.5 - parent: 1 - type: Transform - - uid: 6048 - components: - - pos: -62.5,22.5 - parent: 1 - type: Transform - - uid: 6049 - components: - - pos: -62.5,21.5 - parent: 1 - type: Transform - - uid: 6050 - components: - - pos: -62.5,20.5 - parent: 1 - type: Transform - - uid: 6051 - components: - - pos: -62.5,19.5 - parent: 1 - type: Transform - - uid: 6052 - components: - - pos: -62.5,18.5 - parent: 1 - type: Transform - - uid: 6053 - components: - - pos: -67.5,18.5 - parent: 1 - type: Transform - - uid: 6054 - components: - - pos: -72.5,32.5 - parent: 1 - type: Transform - - uid: 6055 - components: - - pos: -73.5,10.5 - parent: 1 - type: Transform - - uid: 6057 - components: - - pos: -75.5,57.5 - parent: 1 - type: Transform - - uid: 6059 - components: - - pos: -76.5,57.5 - parent: 1 - type: Transform - - uid: 6060 - components: - - pos: -77.5,57.5 - parent: 1 - type: Transform - - uid: 6061 - components: - - pos: -78.5,57.5 - parent: 1 - type: Transform - - uid: 6062 - components: - - pos: -78.5,56.5 - parent: 1 - type: Transform - - uid: 6063 - components: - - pos: -78.5,52.5 - parent: 1 - type: Transform - - uid: 6064 - components: - - pos: -78.5,53.5 - parent: 1 - type: Transform - - uid: 6079 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,44.5 - parent: 1 - type: Transform - - uid: 6254 - components: - - pos: -78.5,55.5 - parent: 1 - type: Transform - - uid: 6256 - components: - - pos: -78.5,54.5 - parent: 1 - type: Transform - - uid: 6266 - components: - - pos: -82.5,28.5 - parent: 1 - type: Transform - - uid: 6267 - components: - - pos: -83.5,28.5 - parent: 1 - type: Transform - - uid: 6268 - components: - - pos: -86.5,28.5 - parent: 1 - type: Transform - - uid: 6269 - components: - - pos: -85.5,28.5 - parent: 1 - type: Transform - - uid: 6270 - components: - - pos: -76.5,17.5 - parent: 1 - type: Transform - - uid: 6303 - components: - - pos: -78.5,17.5 - parent: 1 - type: Transform - - uid: 6304 - components: - - pos: -77.5,17.5 - parent: 1 - type: Transform - - uid: 6305 - components: - - pos: -79.5,17.5 - parent: 1 - type: Transform - - uid: 6306 - components: - - pos: -80.5,17.5 - parent: 1 - type: Transform - - uid: 6309 - components: - - pos: -81.5,17.5 - parent: 1 - type: Transform - - uid: 6310 - components: - - pos: -82.5,17.5 - parent: 1 - type: Transform - - uid: 6311 - components: - - pos: -83.5,17.5 - parent: 1 - type: Transform - - uid: 6312 - components: - - pos: -83.5,18.5 - parent: 1 - type: Transform - - uid: 6340 - components: - - pos: -83.5,20.5 - parent: 1 - type: Transform - - uid: 6344 - components: - - rot: 3.141592653589793 rad - pos: -5.5,56.5 - parent: 1 - type: Transform - - uid: 6345 - components: - - pos: -83.5,19.5 - parent: 1 - type: Transform - - uid: 6346 - components: - - pos: -83.5,29.5 - parent: 1 - type: Transform - - uid: 6347 - components: - - pos: -83.5,30.5 - parent: 1 - type: Transform - - uid: 6348 - components: - - pos: -83.5,31.5 - parent: 1 - type: Transform - - uid: 6366 - components: - - rot: 3.141592653589793 rad - pos: -13.5,58.5 - parent: 1 - type: Transform - - uid: 6367 - components: - - pos: -84.5,31.5 - parent: 1 - type: Transform - - uid: 6373 - components: - - rot: 3.141592653589793 rad - pos: -20.5,58.5 - parent: 1 - type: Transform - - uid: 6377 - components: - - pos: -85.5,31.5 - parent: 1 - type: Transform - - uid: 6398 - components: - - pos: -86.5,31.5 - parent: 1 - type: Transform - - uid: 6399 - components: - - pos: -86.5,29.5 - parent: 1 - type: Transform - - uid: 6402 - components: - - pos: -84.5,19.5 - parent: 1 - type: Transform - - uid: 6413 - components: - - pos: -85.5,19.5 - parent: 1 - type: Transform - - uid: 6416 - components: - - pos: -86.5,19.5 - parent: 1 - type: Transform - - uid: 6417 - components: - - pos: -86.5,21.5 - parent: 1 - type: Transform - - uid: 6418 - components: - - pos: -75.5,31.5 - parent: 1 - type: Transform - - uid: 6419 - components: - - pos: -75.5,32.5 - parent: 1 - type: Transform - - uid: 6420 - components: - - pos: -64.5,35.5 - parent: 1 - type: Transform - - uid: 6421 - components: - - pos: -75.5,30.5 - parent: 1 - type: Transform - - uid: 6422 - components: - - pos: -75.5,27.5 - parent: 1 - type: Transform - - uid: 6423 - components: - - pos: -75.5,28.5 - parent: 1 - type: Transform - - uid: 6424 - components: - - pos: 27.5,22.5 - parent: 1 - type: Transform - - uid: 6425 - components: - - pos: 28.5,22.5 - parent: 1 - type: Transform - - uid: 6426 - components: - - pos: -75.5,29.5 - parent: 1 - type: Transform - - uid: 6427 - components: - - pos: -76.5,27.5 - parent: 1 - type: Transform - - uid: 6428 - components: - - pos: -78.5,47.5 - parent: 1 - type: Transform - - uid: 6475 - components: - - pos: -77.5,50.5 - parent: 1 - type: Transform - - uid: 6476 - components: - - pos: -78.5,49.5 - parent: 1 - type: Transform - - uid: 6477 - components: - - pos: -78.5,50.5 - parent: 1 - type: Transform - - uid: 6478 - components: - - pos: -78.5,51.5 - parent: 1 - type: Transform - - uid: 6479 - components: - - pos: -73.5,9.5 - parent: 1 - type: Transform - - uid: 6480 - components: - - pos: -73.5,8.5 - parent: 1 - type: Transform - - uid: 6481 - components: - - pos: -76.5,41.5 - parent: 1 - type: Transform - - uid: 6482 - components: - - pos: -72.5,28.5 - parent: 1 - type: Transform - - uid: 6483 - components: - - pos: -72.5,27.5 - parent: 1 - type: Transform - - uid: 6484 - components: - - pos: -75.5,16.5 - parent: 1 - type: Transform - - uid: 6485 - components: - - pos: -75.5,15.5 - parent: 1 - type: Transform - - uid: 6486 - components: - - pos: -75.5,14.5 - parent: 1 - type: Transform - - uid: 6487 - components: - - pos: -74.5,14.5 - parent: 1 - type: Transform - - uid: 6488 - components: - - pos: -73.5,14.5 - parent: 1 - type: Transform - - uid: 6489 - components: - - pos: -72.5,14.5 - parent: 1 - type: Transform - - uid: 6490 - components: - - pos: -71.5,14.5 - parent: 1 - type: Transform - - uid: 6491 - components: - - pos: -70.5,14.5 - parent: 1 - type: Transform - - uid: 6492 - components: - - pos: -69.5,14.5 - parent: 1 - type: Transform - - uid: 6493 - components: - - pos: -68.5,14.5 - parent: 1 - type: Transform - - uid: 6509 - components: - - pos: -67.5,14.5 - parent: 1 - type: Transform - - uid: 6556 - components: - - pos: -67.5,15.5 - parent: 1 - type: Transform - - uid: 6649 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,47.5 - parent: 1 - type: Transform - - uid: 6650 - components: - - pos: -67.5,16.5 - parent: 1 - type: Transform - - uid: 6662 - components: - - pos: -67.5,17.5 - parent: 1 - type: Transform - - uid: 6663 - components: - - pos: -85.5,32.5 - parent: 1 - type: Transform - - uid: 6664 - components: - - pos: -26.5,57.5 - parent: 1 - type: Transform - - uid: 6665 - components: - - pos: -75.5,33.5 - parent: 1 - type: Transform - - uid: 6666 - components: - - pos: -74.5,36.5 - parent: 1 - type: Transform - - uid: 6667 - components: - - pos: -68.5,35.5 - parent: 1 - type: Transform - - uid: 6677 - components: - - pos: -64.5,60.5 - parent: 1 - type: Transform - - uid: 6679 - components: - - pos: -64.5,61.5 - parent: 1 - type: Transform - - uid: 6680 - components: - - pos: -63.5,61.5 - parent: 1 - type: Transform - - uid: 6681 - components: - - pos: -62.5,61.5 - parent: 1 - type: Transform - - uid: 6683 - components: - - pos: -68.5,57.5 - parent: 1 - type: Transform - - uid: 6684 - components: - - pos: -67.5,58.5 - parent: 1 - type: Transform - - uid: 6688 - components: - - pos: -71.5,27.5 - parent: 1 - type: Transform - - uid: 6689 - components: - - pos: -70.5,24.5 - parent: 1 - type: Transform - - uid: 6690 - components: - - pos: -65.5,35.5 - parent: 1 - type: Transform - - uid: 6691 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,48.5 - parent: 1 - type: Transform - - uid: 6692 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,48.5 - parent: 1 - type: Transform - - uid: 6694 - components: - - rot: 1.5707963267948966 rad - pos: -31.5,48.5 - parent: 1 - type: Transform - - uid: 6697 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,48.5 - parent: 1 - type: Transform - - uid: 6700 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,46.5 - parent: 1 - type: Transform - - uid: 6702 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,44.5 - parent: 1 - type: Transform - - uid: 6707 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,39.5 - parent: 1 - type: Transform - - uid: 6708 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,38.5 - parent: 1 - type: Transform - - uid: 6712 - components: - - rot: 1.5707963267948966 rad - pos: -26.5,34.5 - parent: 1 - type: Transform - - uid: 6713 - components: - - rot: 1.5707963267948966 rad - pos: -25.5,35.5 - parent: 1 - type: Transform - - uid: 6715 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,34.5 - parent: 1 - type: Transform - - uid: 6716 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,34.5 - parent: 1 - type: Transform - - uid: 6717 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,34.5 - parent: 1 - type: Transform - - uid: 6720 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,39.5 - parent: 1 - type: Transform - - uid: 6721 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,38.5 - parent: 1 - type: Transform - - uid: 6723 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,40.5 - parent: 1 - type: Transform - - uid: 6725 - components: - - rot: 1.5707963267948966 rad - pos: -27.5,39.5 - parent: 1 - type: Transform - - uid: 6726 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,40.5 - parent: 1 - type: Transform - - uid: 6727 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,34.5 - parent: 1 - type: Transform - - uid: 6728 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,34.5 - parent: 1 - type: Transform - - uid: 6729 - components: - - rot: 1.5707963267948966 rad - pos: -28.5,34.5 - parent: 1 - type: Transform - - uid: 6734 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,41.5 - parent: 1 - type: Transform - - uid: 6736 - components: - - rot: 1.5707963267948966 rad - pos: -29.5,43.5 - parent: 1 - type: Transform - - uid: 6737 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,41.5 - parent: 1 - type: Transform - - uid: 6738 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,42.5 - parent: 1 - type: Transform - - uid: 6742 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,40.5 - parent: 1 - type: Transform - - uid: 6745 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,40.5 - parent: 1 - type: Transform - - uid: 6747 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,39.5 - parent: 1 - type: Transform - - uid: 6751 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,35.5 - parent: 1 - type: Transform - - uid: 6752 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,34.5 - parent: 1 - type: Transform - - uid: 6759 - components: - - rot: 1.5707963267948966 rad - pos: -43.5,34.5 - parent: 1 - type: Transform - - uid: 6762 - components: - - rot: 1.5707963267948966 rad - pos: -32.5,34.5 - parent: 1 - type: Transform - - uid: 6763 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,34.5 - parent: 1 - type: Transform - - uid: 6765 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,40.5 - parent: 1 - type: Transform - - uid: 6767 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,43.5 - parent: 1 - type: Transform - - uid: 6769 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,45.5 - parent: 1 - type: Transform - - uid: 6770 - components: - - rot: 1.5707963267948966 rad - pos: -30.5,47.5 - parent: 1 - type: Transform - - uid: 6771 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,48.5 - parent: 1 - type: Transform - - uid: 6774 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,48.5 - parent: 1 - type: Transform - - uid: 6775 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,48.5 - parent: 1 - type: Transform - - uid: 6778 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,52.5 - parent: 1 - type: Transform - - uid: 6779 - components: - - rot: 1.5707963267948966 rad - pos: -33.5,51.5 - parent: 1 - type: Transform - - uid: 6781 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,42.5 - parent: 1 - type: Transform - - uid: 6785 - components: - - pos: -69.5,36.5 - parent: 1 - type: Transform - - uid: 6786 - components: - - pos: 17.5,36.5 - parent: 1 - type: Transform - - uid: 6788 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,47.5 - parent: 1 - type: Transform - - uid: 6792 - components: - - pos: -23.5,-9.5 - parent: 1 - type: Transform - - uid: 6795 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,53.5 - parent: 1 - type: Transform - - uid: 6796 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,53.5 - parent: 1 - type: Transform - - uid: 6798 - components: - - rot: 1.5707963267948966 rad - pos: -37.5,53.5 - parent: 1 - type: Transform - - uid: 6799 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,53.5 - parent: 1 - type: Transform - - uid: 6801 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,51.5 - parent: 1 - type: Transform - - uid: 6803 - components: - - rot: 1.5707963267948966 rad - pos: -38.5,49.5 - parent: 1 - type: Transform - - uid: 6804 - components: - - pos: -26.5,-9.5 - parent: 1 - type: Transform - - uid: 6809 - components: - - pos: -66.5,58.5 - parent: 1 - type: Transform - - uid: 6810 - components: - - pos: -26.5,-11.5 - parent: 1 - type: Transform - - uid: 6826 - components: - - pos: -26.5,52.5 - parent: 1 - type: Transform - - uid: 6827 - components: - - pos: -27.5,51.5 - parent: 1 - type: Transform - - uid: 6828 - components: - - pos: -29.5,51.5 - parent: 1 - type: Transform - - uid: 6829 - components: - - pos: -30.5,54.5 - parent: 1 - type: Transform - - uid: 6830 - components: - - pos: 16.5,36.5 - parent: 1 - type: Transform - - uid: 6831 - components: - - pos: 20.5,36.5 - parent: 1 - type: Transform - - uid: 6832 - components: - - pos: -66.5,59.5 - parent: 1 - type: Transform - - uid: 6845 - components: - - pos: -66.5,60.5 - parent: 1 - type: Transform - - uid: 6846 - components: - - pos: -65.5,60.5 - parent: 1 - type: Transform - - uid: 6847 - components: - - pos: -68.5,58.5 - parent: 1 - type: Transform - - uid: 6848 - components: - - pos: -69.5,57.5 - parent: 1 - type: Transform - - uid: 6849 - components: - - pos: -71.5,57.5 - parent: 1 - type: Transform - - uid: 6851 - components: - - pos: -72.5,57.5 - parent: 1 - type: Transform - - uid: 6887 - components: - - pos: -22.5,-10.5 - parent: 1 - type: Transform - - uid: 6960 - components: - - pos: -43.5,53.5 - parent: 1 - type: Transform - - uid: 7033 - components: - - pos: -55.5,45.5 - parent: 1 - type: Transform - - uid: 7034 - components: - - pos: -55.5,44.5 - parent: 1 - type: Transform - - uid: 7036 - components: - - pos: -55.5,42.5 - parent: 1 - type: Transform - - uid: 7038 - components: - - pos: -55.5,40.5 - parent: 1 - type: Transform - - uid: 7040 - components: - - pos: -55.5,38.5 - parent: 1 - type: Transform - - uid: 7041 - components: - - pos: -54.5,34.5 - parent: 1 - type: Transform - - uid: 7043 - components: - - pos: -54.5,37.5 - parent: 1 - type: Transform - - uid: 7047 - components: - - pos: -52.5,34.5 - parent: 1 - type: Transform - - uid: 7048 - components: - - pos: -53.5,34.5 - parent: 1 - type: Transform - - uid: 7050 - components: - - pos: -49.5,35.5 - parent: 1 - type: Transform - - uid: 7053 - components: - - pos: -49.5,38.5 - parent: 1 - type: Transform - - uid: 7056 - components: - - pos: -49.5,41.5 - parent: 1 - type: Transform - - uid: 7057 - components: - - pos: -49.5,42.5 - parent: 1 - type: Transform - - uid: 7059 - components: - - pos: -51.5,42.5 - parent: 1 - type: Transform - - uid: 7061 - components: - - pos: -53.5,42.5 - parent: 1 - type: Transform - - uid: 7064 - components: - - pos: -53.5,39.5 - parent: 1 - type: Transform - - uid: 7065 - components: - - pos: -53.5,38.5 - parent: 1 - type: Transform - - uid: 7068 - components: - - pos: -50.5,39.5 - parent: 1 - type: Transform - - uid: 7107 - components: - - pos: -22.5,-9.5 - parent: 1 - type: Transform - - uid: 7137 - components: - - pos: -26.5,-10.5 - parent: 1 - type: Transform - - uid: 7138 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,41.5 - parent: 1 - type: Transform - - uid: 7139 - components: - - pos: -25.5,-9.5 - parent: 1 - type: Transform - - uid: 7141 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,48.5 - parent: 1 - type: Transform - - uid: 7188 - components: - - pos: -30.5,52.5 - parent: 1 - type: Transform - - uid: 7389 - components: - - pos: -30.5,55.5 - parent: 1 - type: Transform - - uid: 7390 - components: - - pos: -28.5,51.5 - parent: 1 - type: Transform - - uid: 7408 - components: - - pos: -25.5,52.5 - parent: 1 - type: Transform - - uid: 7517 - components: - - pos: -69.5,32.5 - parent: 1 - type: Transform - - uid: 7923 - components: - - pos: -50.5,-14.5 - parent: 1 - type: Transform - - uid: 8059 - components: - - pos: 26.5,29.5 - parent: 1 - type: Transform - - uid: 8109 - components: - - pos: -24.5,58.5 - parent: 1 - type: Transform - - uid: 8114 - components: - - pos: 17.5,-9.5 - parent: 1 - type: Transform - - uid: 8191 - components: - - pos: 25.5,29.5 - parent: 1 - type: Transform - - uid: 8214 - components: - - pos: 29.5,25.5 - parent: 1 - type: Transform - - uid: 8215 - components: - - pos: 29.5,24.5 - parent: 1 - type: Transform - - uid: 8224 - components: - - pos: -74.5,54.5 - parent: 1 - type: Transform - - uid: 8235 - components: - - pos: 12.5,-8.5 - parent: 1 - type: Transform - - uid: 8240 - components: - - rot: 1.5707963267948966 rad - pos: -8.5,17.5 - parent: 1 - type: Transform - - uid: 8264 - components: - - pos: -42.5,53.5 - parent: 1 - type: Transform - - uid: 9157 - components: - - rot: 1.5707963267948966 rad - pos: -67.5,46.5 - parent: 1 - type: Transform - - uid: 9159 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,49.5 - parent: 1 - type: Transform - - uid: 9161 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,51.5 - parent: 1 - type: Transform - - uid: 9163 - components: - - pos: -69.5,46.5 - parent: 1 - type: Transform - - uid: 9166 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,56.5 - parent: 1 - type: Transform - - uid: 9177 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,46.5 - parent: 1 - type: Transform - - uid: 9179 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,47.5 - parent: 1 - type: Transform - - uid: 9181 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,49.5 - parent: 1 - type: Transform - - uid: 9182 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,50.5 - parent: 1 - type: Transform - - uid: 9184 - components: - - rot: 1.5707963267948966 rad - pos: -70.5,50.5 - parent: 1 - type: Transform - - uid: 9191 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,50.5 - parent: 1 - type: Transform - - uid: 9193 - components: - - rot: 1.5707963267948966 rad - pos: -74.5,51.5 - parent: 1 - type: Transform - - uid: 9194 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,38.5 - parent: 1 - type: Transform - - uid: 9202 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,44.5 - parent: 1 - type: Transform - - uid: 9206 - components: - - rot: -1.5707963267948966 rad - pos: -62.5,46.5 - parent: 1 - type: Transform - - uid: 9207 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,43.5 - parent: 1 - type: Transform - - uid: 9213 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,45.5 - parent: 1 - type: Transform - - uid: 9216 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,42.5 - parent: 1 - type: Transform - - uid: 9218 - components: - - rot: -1.5707963267948966 rad - pos: -60.5,46.5 - parent: 1 - type: Transform - - uid: 9220 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,38.5 - parent: 1 - type: Transform - - uid: 9221 - components: - - pos: -59.5,37.5 - parent: 1 - type: Transform - - uid: 9225 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,37.5 - parent: 1 - type: Transform - - uid: 9230 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,45.5 - parent: 1 - type: Transform - - uid: 9232 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,42.5 - parent: 1 - type: Transform - - uid: 9233 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,43.5 - parent: 1 - type: Transform - - uid: 9235 - components: - - pos: -68.5,45.5 - parent: 1 - type: Transform - - uid: 9236 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,43.5 - parent: 1 - type: Transform - - uid: 9237 - components: - - pos: -68.5,45.5 - parent: 1 - type: Transform - - uid: 9238 - components: - - rot: 1.5707963267948966 rad - pos: -73.5,41.5 - parent: 1 - type: Transform - - uid: 9240 - components: - - rot: 1.5707963267948966 rad - pos: -68.5,39.5 - parent: 1 - type: Transform - - uid: 9243 - components: - - pos: -68.5,38.5 - parent: 1 - type: Transform - - uid: 9244 - components: - - rot: 1.5707963267948966 rad - pos: -71.5,38.5 - parent: 1 - type: Transform - - uid: 9270 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,38.5 - parent: 1 - type: Transform - - uid: 9276 - components: - - rot: -1.5707963267948966 rad - pos: -65.5,46.5 - parent: 1 - type: Transform - - uid: 9277 - components: - - rot: -1.5707963267948966 rad - pos: -64.5,46.5 - parent: 1 - type: Transform - - uid: 9278 - components: - - rot: -1.5707963267948966 rad - pos: -61.5,37.5 - parent: 1 - type: Transform - - uid: 9279 - components: - - rot: -1.5707963267948966 rad - pos: -62.5,37.5 - parent: 1 - type: Transform - - uid: 9280 - components: - - rot: -1.5707963267948966 rad - pos: -63.5,37.5 - parent: 1 - type: Transform - - uid: 9289 - components: - - pos: -59.5,35.5 - parent: 1 - type: Transform - - uid: 9290 - components: - - pos: -59.5,34.5 - parent: 1 - type: Transform - - uid: 9291 - components: - - pos: -61.5,34.5 - parent: 1 - type: Transform - - uid: 9299 - components: - - pos: -61.5,30.5 - parent: 1 - type: Transform - - uid: 9895 - components: - - pos: -72.5,7.5 - parent: 1 - type: Transform - - uid: 9896 - components: - - pos: -71.5,7.5 - parent: 1 - type: Transform - - uid: 9898 - components: - - pos: -59.5,28.5 - parent: 1 - type: Transform - - uid: 9900 - components: - - pos: -59.5,26.5 - parent: 1 - type: Transform - - uid: 9904 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,40.5 - parent: 1 - type: Transform - - uid: 9905 - components: - - pos: -59.5,21.5 - parent: 1 - type: Transform - - uid: 9907 - components: - - pos: -59.5,19.5 - parent: 1 - type: Transform - - uid: 9908 - components: - - pos: -59.5,18.5 - parent: 1 - type: Transform - - uid: 9909 - components: - - pos: -59.5,15.5 - parent: 1 - type: Transform - - uid: 9910 - components: - - pos: -59.5,16.5 - parent: 1 - type: Transform - - uid: 9917 - components: - - pos: -59.5,9.5 - parent: 1 - type: Transform - - uid: 9918 - components: - - pos: -59.5,8.5 - parent: 1 - type: Transform - - uid: 9919 - components: - - pos: -68.5,13.5 - parent: 1 - type: Transform - - uid: 9921 - components: - - pos: -68.5,11.5 - parent: 1 - type: Transform - - uid: 9922 - components: - - pos: -68.5,10.5 - parent: 1 - type: Transform - - uid: 9924 - components: - - pos: -68.5,8.5 - parent: 1 - type: Transform - - uid: 9927 - components: - - pos: -62.5,9.5 - parent: 1 - type: Transform - - uid: 9929 - components: - - pos: -64.5,9.5 - parent: 1 - type: Transform - - uid: 9933 - components: - - pos: -65.5,12.5 - parent: 1 - type: Transform - - uid: 9934 - components: - - pos: -65.5,13.5 - parent: 1 - type: Transform - - uid: 9935 - components: - - pos: -65.5,14.5 - parent: 1 - type: Transform - - uid: 9937 - components: - - pos: -64.5,15.5 - parent: 1 - type: Transform - - uid: 9939 - components: - - pos: -62.5,15.5 - parent: 1 - type: Transform - - uid: 9941 - components: - - pos: -60.5,15.5 - parent: 1 - type: Transform - - uid: 10315 - components: - - pos: -16.5,18.5 - parent: 1 - type: Transform - - uid: 10316 - components: - - pos: -17.5,18.5 - parent: 1 - type: Transform - - uid: 10317 - components: - - pos: -17.5,16.5 - parent: 1 - type: Transform - - uid: 10436 - components: - - rot: 1.5707963267948966 rad - pos: -49.5,13.5 - parent: 1 - type: Transform - - uid: 10437 - components: - - rot: 1.5707963267948966 rad - pos: -50.5,13.5 - parent: 1 - type: Transform - - uid: 10438 - components: - - rot: 1.5707963267948966 rad - pos: -48.5,13.5 - parent: 1 - type: Transform - - uid: 10439 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,7.5 - parent: 1 - type: Transform - - uid: 10442 - components: - - rot: 1.5707963267948966 rad - pos: -46.5,13.5 - parent: 1 - type: Transform - - uid: 10444 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,12.5 - parent: 1 - type: Transform - - uid: 10447 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,10.5 - parent: 1 - type: Transform - - uid: 10448 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,11.5 - parent: 1 - type: Transform - - uid: 10449 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,8.5 - parent: 1 - type: Transform - - uid: 10451 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,8.5 - parent: 1 - type: Transform - - uid: 10452 - components: - - rot: 1.5707963267948966 rad - pos: -47.5,13.5 - parent: 1 - type: Transform - - uid: 10454 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,11.5 - parent: 1 - type: Transform - - uid: 10455 - components: - - rot: 1.5707963267948966 rad - pos: -53.5,11.5 - parent: 1 - type: Transform - - uid: 10457 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,7.5 - parent: 1 - type: Transform - - uid: 10458 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,9.5 - parent: 1 - type: Transform - - uid: 11052 - components: - - rot: 1.5707963267948966 rad - pos: -76.5,51.5 - parent: 1 - type: Transform - - uid: 11886 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,12.5 - parent: 1 - type: Transform - - uid: 11887 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,11.5 - parent: 1 - type: Transform - - uid: 14010 - components: - - pos: -68.5,9.5 - parent: 1 - type: Transform -- proto: WallSolidRust - entities: - - uid: 17 - components: - - pos: -5.5,3.5 - parent: 1 - type: Transform - - uid: 18 - components: - - pos: -14.5,0.5 - parent: 1 - type: Transform - - uid: 19 - components: - - pos: -13.5,-0.5 - parent: 1 - type: Transform - - uid: 25 - components: - - pos: 5.5,-6.5 - parent: 1 - type: Transform - - uid: 30 - components: - - pos: -11.5,-0.5 - parent: 1 - type: Transform - - uid: 32 - components: - - pos: -10.5,-0.5 - parent: 1 - type: Transform - - uid: 33 - components: - - pos: 3.5,-1.5 - parent: 1 - type: Transform - - uid: 40 - components: - - pos: 3.5,1.5 - parent: 1 - type: Transform - - uid: 44 - components: - - pos: 3.5,-0.5 - parent: 1 - type: Transform - - uid: 46 - components: - - pos: -11.5,3.5 - parent: 1 - type: Transform - - uid: 49 - components: - - pos: 1.5,-6.5 - parent: 1 - type: Transform - - uid: 51 - components: - - pos: 1.5,-3.5 - parent: 1 - type: Transform - - uid: 52 - components: - - pos: 0.5,-4.5 - parent: 1 - type: Transform - - uid: 56 - components: - - pos: 4.5,-6.5 - parent: 1 - type: Transform - - uid: 83 - components: - - pos: 0.5,-3.5 - parent: 1 - type: Transform - - uid: 109 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,-10.5 - parent: 1 - type: Transform - - uid: 115 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,-13.5 - parent: 1 - type: Transform - - uid: 173 - components: - - pos: 2.5,-7.5 - parent: 1 - type: Transform - - uid: 181 - components: - - pos: -14.5,2.5 - parent: 1 - type: Transform - - uid: 193 - components: - - pos: -0.5,-12.5 - parent: 1 - type: Transform - - uid: 197 - components: - - pos: 3.5,-13.5 - parent: 1 - type: Transform - - uid: 467 - components: - - rot: 3.141592653589793 rad - pos: 6.5,-3.5 - parent: 1 - type: Transform - - uid: 470 - components: - - pos: 6.5,3.5 - parent: 1 - type: Transform - - uid: 476 - components: - - rot: 3.141592653589793 rad - pos: 7.5,-3.5 - parent: 1 - type: Transform - - uid: 479 - components: - - pos: 9.5,-4.5 - parent: 1 - type: Transform - - uid: 480 - components: - - pos: 13.5,-3.5 - parent: 1 - type: Transform - - uid: 481 - components: - - pos: 7.5,3.5 - parent: 1 - type: Transform - - uid: 484 - components: - - pos: 9.5,2.5 - parent: 1 - type: Transform - - uid: 489 - components: - - pos: 8.5,-0.5 - parent: 1 - type: Transform - - uid: 490 - components: - - pos: 12.5,-4.5 - parent: 1 - type: Transform - - uid: 513 - components: - - pos: 7.5,-0.5 - parent: 1 - type: Transform - - uid: 529 - components: - - pos: 16.5,-6.5 - parent: 1 - type: Transform - - uid: 576 - components: - - pos: 7.5,-6.5 - parent: 1 - type: Transform - - uid: 618 - components: - - pos: -4.5,0.5 - parent: 1 - type: Transform - - uid: 633 - components: - - pos: 18.5,1.5 - parent: 1 - type: Transform - - uid: 637 - components: - - pos: 16.5,4.5 - parent: 1 - type: Transform - - uid: 640 - components: - - pos: 13.5,4.5 - parent: 1 - type: Transform - - uid: 645 - components: - - pos: 16.5,-3.5 - parent: 1 - type: Transform - - uid: 650 - components: - - pos: 20.5,3.5 - parent: 1 - type: Transform - - uid: 652 - components: - - pos: 21.5,2.5 - parent: 1 - type: Transform - - uid: 653 - components: - - pos: 21.5,1.5 - parent: 1 - type: Transform - - uid: 657 - components: - - pos: 12.5,1.5 - parent: 1 - type: Transform - - uid: 658 - components: - - pos: 21.5,-3.5 - parent: 1 - type: Transform - - uid: 661 - components: - - pos: 22.5,-1.5 - parent: 1 - type: Transform - - uid: 663 - components: - - pos: 18.5,-0.5 - parent: 1 - type: Transform - - uid: 673 - components: - - pos: 25.5,-6.5 - parent: 1 - type: Transform - - uid: 675 - components: - - pos: 24.5,2.5 - parent: 1 - type: Transform - - uid: 679 - components: - - pos: 25.5,-0.5 - parent: 1 - type: Transform - - uid: 683 - components: - - pos: 27.5,-3.5 - parent: 1 - type: Transform - - uid: 684 - components: - - pos: 29.5,-3.5 - parent: 1 - type: Transform - - uid: 686 - components: - - pos: -0.5,-0.5 - parent: 1 - type: Transform - - uid: 687 - components: - - pos: 26.5,-3.5 - parent: 1 - type: Transform - - uid: 689 - components: - - pos: 29.5,-6.5 - parent: 1 - type: Transform - - uid: 690 - components: - - pos: 26.5,-8.5 - parent: 1 - type: Transform - - uid: 696 - components: - - pos: 28.5,0.5 - parent: 1 - type: Transform - - uid: 699 - components: - - pos: 17.5,4.5 - parent: 1 - type: Transform - - uid: 995 - components: - - pos: 24.5,21.5 - parent: 1 - type: Transform - - uid: 999 - components: - - pos: 20.5,11.5 - parent: 1 - type: Transform - - uid: 1003 - components: - - pos: 21.5,27.5 - parent: 1 - type: Transform - - uid: 1009 - components: - - pos: 20.5,9.5 - parent: 1 - type: Transform - - uid: 1033 - components: - - pos: 23.5,10.5 - parent: 1 - type: Transform - - uid: 1034 - components: - - pos: 24.5,8.5 - parent: 1 - type: Transform - - uid: 1037 - components: - - pos: 22.5,10.5 - parent: 1 - type: Transform - - uid: 1040 - components: - - pos: 21.5,7.5 - parent: 1 - type: Transform - - uid: 1042 - components: - - pos: 20.5,33.5 - parent: 1 - type: Transform - - uid: 1055 - components: - - pos: 21.5,20.5 - parent: 1 - type: Transform - - uid: 1058 - components: - - pos: 4.5,7.5 - parent: 1 - type: Transform - - uid: 1059 - components: - - pos: 5.5,7.5 - parent: 1 - type: Transform - - uid: 1069 - components: - - pos: -16.5,-0.5 - parent: 1 - type: Transform - - uid: 1070 - components: - - pos: -18.5,2.5 - parent: 1 - type: Transform - - uid: 1072 - components: - - pos: -16.5,2.5 - parent: 1 - type: Transform - - uid: 1073 - components: - - pos: -19.5,-6.5 - parent: 1 - type: Transform - - uid: 1077 - components: - - pos: -19.5,2.5 - parent: 1 - type: Transform - - uid: 1079 - components: - - pos: -21.5,3.5 - parent: 1 - type: Transform - - uid: 1080 - components: - - pos: -19.5,-0.5 - parent: 1 - type: Transform - - uid: 1082 - components: - - pos: -18.5,-0.5 - parent: 1 - type: Transform - - uid: 1085 - components: - - pos: -19.5,-2.5 - parent: 1 - type: Transform - - uid: 1088 - components: - - pos: -19.5,-4.5 - parent: 1 - type: Transform - - uid: 1089 - components: - - pos: -18.5,-6.5 - parent: 1 - type: Transform - - uid: 1092 - components: - - pos: -16.5,-9.5 - parent: 1 - type: Transform - - uid: 1096 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,-9.5 - parent: 1 - type: Transform - - uid: 1101 - components: - - pos: -23.5,1.5 - parent: 1 - type: Transform - - uid: 1102 - components: - - pos: -22.5,0.5 - parent: 1 - type: Transform - - uid: 1106 - components: - - pos: -22.5,-3.5 - parent: 1 - type: Transform - - uid: 1107 - components: - - pos: -15.5,-6.5 - parent: 1 - type: Transform - - uid: 1109 - components: - - pos: -22.5,-6.5 - parent: 1 - type: Transform - - uid: 1110 - components: - - pos: -22.5,-5.5 - parent: 1 - type: Transform - - uid: 1112 - components: - - pos: -25.5,-2.5 - parent: 1 - type: Transform - - uid: 1116 - components: - - pos: -25.5,-6.5 - parent: 1 - type: Transform - - uid: 1117 - components: - - pos: -25.5,-4.5 - parent: 1 - type: Transform - - uid: 1120 - components: - - pos: -27.5,-1.5 - parent: 1 - type: Transform - - uid: 1122 - components: - - pos: -27.5,2.5 - parent: 1 - type: Transform - - uid: 1126 - components: - - pos: -27.5,-3.5 - parent: 1 - type: Transform - - uid: 1133 - components: - - pos: -24.5,-0.5 - parent: 1 - type: Transform - - uid: 1137 - components: - - pos: 11.5,7.5 - parent: 1 - type: Transform - - uid: 1140 - components: - - pos: 14.5,7.5 - parent: 1 - type: Transform - - uid: 1146 - components: - - pos: 18.5,24.5 - parent: 1 - type: Transform - - uid: 1158 - components: - - pos: 8.5,21.5 - parent: 1 - type: Transform - - uid: 1159 - components: - - pos: 8.5,18.5 - parent: 1 - type: Transform - - uid: 1161 - components: - - pos: 18.5,27.5 - parent: 1 - type: Transform - - uid: 1162 - components: - - pos: 21.5,30.5 - parent: 1 - type: Transform - - uid: 1163 - components: - - pos: 13.5,26.5 - parent: 1 - type: Transform - - uid: 1164 - components: - - pos: 15.5,19.5 - parent: 1 - type: Transform - - uid: 1166 - components: - - pos: 15.5,15.5 - parent: 1 - type: Transform - - uid: 1167 - components: - - pos: 7.5,18.5 - parent: 1 - type: Transform - - uid: 1168 - components: - - pos: 21.5,21.5 - parent: 1 - type: Transform - - uid: 1169 - components: - - pos: 12.5,10.5 - parent: 1 - type: Transform - - uid: 1170 - components: - - pos: 21.5,24.5 - parent: 1 - type: Transform - - uid: 1173 - components: - - pos: 11.5,23.5 - parent: 1 - type: Transform - - uid: 1176 - components: - - pos: 12.5,12.5 - parent: 1 - type: Transform - - uid: 1178 - components: - - pos: 15.5,12.5 - parent: 1 - type: Transform - - uid: 1179 - components: - - pos: 21.5,31.5 - parent: 1 - type: Transform - - uid: 1190 - components: - - pos: 7.5,21.5 - parent: 1 - type: Transform - - uid: 1192 - components: - - pos: -0.5,41.5 - parent: 1 - type: Transform - - uid: 1193 - components: - - pos: 10.5,38.5 - parent: 1 - type: Transform - - uid: 1203 - components: - - pos: 15.5,20.5 - parent: 1 - type: Transform - - uid: 1208 - components: - - pos: 1.5,18.5 - parent: 1 - type: Transform - - uid: 1211 - components: - - pos: 4.5,18.5 - parent: 1 - type: Transform - - uid: 1223 - components: - - pos: 16.5,23.5 - parent: 1 - type: Transform - - uid: 1230 - components: - - pos: 12.5,19.5 - parent: 1 - type: Transform - - uid: 1233 - components: - - pos: 10.5,10.5 - parent: 1 - type: Transform - - uid: 1234 - components: - - pos: 8.5,10.5 - parent: 1 - type: Transform - - uid: 1236 - components: - - pos: 7.5,10.5 - parent: 1 - type: Transform - - uid: 1237 - components: - - pos: 20.5,24.5 - parent: 1 - type: Transform - - uid: 1241 - components: - - pos: 21.5,19.5 - parent: 1 - type: Transform - - uid: 1247 - components: - - pos: 15.5,13.5 - parent: 1 - type: Transform - - uid: 1249 - components: - - pos: 1.5,35.5 - parent: 1 - type: Transform - - uid: 1276 - components: - - rot: 1.5707963267948966 rad - pos: 6.5,32.5 - parent: 1 - type: Transform - - uid: 1277 - components: - - pos: 1.5,32.5 - parent: 1 - type: Transform - - uid: 1281 - components: - - pos: -0.5,35.5 - parent: 1 - type: Transform - - uid: 1283 - components: - - pos: -2.5,35.5 - parent: 1 - type: Transform - - uid: 1284 - components: - - pos: -3.5,35.5 - parent: 1 - type: Transform - - uid: 1286 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,35.5 - parent: 1 - type: Transform - - uid: 1287 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,32.5 - parent: 1 - type: Transform - - uid: 1289 - components: - - pos: 11.5,38.5 - parent: 1 - type: Transform - - uid: 1291 - components: - - pos: 1.5,34.5 - parent: 1 - type: Transform - - uid: 1293 - components: - - pos: 6.5,38.5 - parent: 1 - type: Transform - - uid: 1296 - components: - - pos: 13.5,37.5 - parent: 1 - type: Transform - - uid: 1297 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,35.5 - parent: 1 - type: Transform - - uid: 1298 - components: - - rot: 1.5707963267948966 rad - pos: 12.5,32.5 - parent: 1 - type: Transform - - uid: 1300 - components: - - rot: 1.5707963267948966 rad - pos: 5.5,36.5 - parent: 1 - type: Transform - - uid: 1301 - components: - - pos: 15.5,9.5 - parent: 1 - type: Transform - - uid: 1304 - components: - - pos: 18.5,14.5 - parent: 1 - type: Transform - - uid: 1307 - components: - - pos: 19.5,14.5 - parent: 1 - type: Transform - - uid: 1308 - components: - - pos: 21.5,16.5 - parent: 1 - type: Transform - - uid: 1311 - components: - - pos: 8.5,38.5 - parent: 1 - type: Transform - - uid: 1315 - components: - - pos: 15.5,17.5 - parent: 1 - type: Transform - - uid: 1322 - components: - - pos: 13.5,36.5 - parent: 1 - type: Transform - - uid: 1328 - components: - - pos: 10.5,21.5 - parent: 1 - type: Transform - - uid: 1330 - components: - - pos: 12.5,11.5 - parent: 1 - type: Transform - - uid: 1332 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,32.5 - parent: 1 - type: Transform - - uid: 1335 - components: - - pos: 12.5,14.5 - parent: 1 - type: Transform - - uid: 1338 - components: - - rot: -1.5707963267948966 rad - pos: -7.5,26.5 - parent: 1 - type: Transform - - uid: 1346 - components: - - rot: -1.5707963267948966 rad - pos: -9.5,26.5 - parent: 1 - type: Transform - - uid: 1348 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,26.5 - parent: 1 - type: Transform - - uid: 1355 - components: - - rot: 1.5707963267948966 rad - pos: 11.5,32.5 - parent: 1 - type: Transform - - uid: 1357 - components: - - pos: 12.5,17.5 - parent: 1 - type: Transform - - uid: 1363 - components: - - pos: 12.5,16.5 - parent: 1 - type: Transform - - uid: 1367 - components: - - pos: 4.5,35.5 - parent: 1 - type: Transform - - uid: 1370 - components: - - pos: -2.5,17.5 - parent: 1 - type: Transform - - uid: 1373 - components: - - pos: 3.5,45.5 - parent: 1 - type: Transform - - uid: 1375 - components: - - pos: 0.5,44.5 - parent: 1 - type: Transform - - uid: 1377 - components: - - pos: 5.5,43.5 - parent: 1 - type: Transform - - uid: 1379 - components: - - pos: 5.5,41.5 - parent: 1 - type: Transform - - uid: 1382 - components: - - pos: -1.5,42.5 - parent: 1 - type: Transform - - uid: 1383 - components: - - pos: -0.5,44.5 - parent: 1 - type: Transform - - uid: 1387 - components: - - pos: -1.5,40.5 - parent: 1 - type: Transform - - uid: 1389 - components: - - pos: -1.5,39.5 - parent: 1 - type: Transform - - uid: 1391 - components: - - pos: -1.5,37.5 - parent: 1 - type: Transform - - uid: 1392 - components: - - pos: 5.5,39.5 - parent: 1 - type: Transform - - uid: 1394 - components: - - pos: 5.5,21.5 - parent: 1 - type: Transform - - uid: 1419 - components: - - rot: -1.5707963267948966 rad - pos: 16.5,46.5 - parent: 1 - type: Transform - - uid: 1445 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,22.5 - parent: 1 - type: Transform - - uid: 1448 - components: - - pos: -6.5,9.5 - parent: 1 - type: Transform - - uid: 1451 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,13.5 - parent: 1 - type: Transform - - uid: 1452 - components: - - pos: -6.5,11.5 - parent: 1 - type: Transform - - uid: 1454 - components: - - rot: -1.5707963267948966 rad - pos: -6.5,12.5 - parent: 1 - type: Transform - - uid: 1459 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,7.5 - parent: 1 - type: Transform - - uid: 1463 - components: - - pos: -6.5,15.5 - parent: 1 - type: Transform - - uid: 1473 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,18.5 - parent: 1 - type: Transform - - uid: 1474 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,16.5 - parent: 1 - type: Transform - - uid: 1479 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,21.5 - parent: 1 - type: Transform - - uid: 1481 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,20.5 - parent: 1 - type: Transform - - uid: 1483 - components: - - rot: -1.5707963267948966 rad - pos: -8.5,22.5 - parent: 1 - type: Transform - - uid: 1486 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,8.5 - parent: 1 - type: Transform - - uid: 1488 - components: - - rot: -1.5707963267948966 rad - pos: -15.5,7.5 - parent: 1 - type: Transform - - uid: 1490 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,7.5 - parent: 1 - type: Transform - - uid: 1495 - components: - - pos: -18.5,12.5 - parent: 1 - type: Transform - - uid: 1499 - components: - - rot: 1.5707963267948966 rad - pos: -9.5,13.5 - parent: 1 - type: Transform - - uid: 1500 - components: - - rot: 1.5707963267948966 rad - pos: -7.5,10.5 - parent: 1 - type: Transform - - uid: 1501 - components: - - rot: -1.5707963267948966 rad - pos: -17.5,15.5 - parent: 1 - type: Transform - - uid: 1502 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,15.5 - parent: 1 - type: Transform - - uid: 1504 - components: - - pos: -18.5,13.5 - parent: 1 - type: Transform - - uid: 1505 - components: - - pos: -18.5,9.5 - parent: 1 - type: Transform - - uid: 1507 - components: - - rot: -1.5707963267948966 rad - pos: -18.5,7.5 - parent: 1 - type: Transform - - uid: 1512 - components: - - pos: -14.5,16.5 - parent: 1 - type: Transform - - uid: 1588 - components: - - rot: 1.5707963267948966 rad - pos: -17.5,11.5 - parent: 1 - type: Transform - - uid: 1627 - components: - - pos: 9.5,27.5 - parent: 1 - type: Transform - - uid: 1630 - components: - - pos: 6.5,27.5 - parent: 1 - type: Transform - - uid: 1633 - components: - - pos: -2.5,14.5 - parent: 1 - type: Transform - - uid: 1846 - components: - - pos: -5.5,28.5 - parent: 1 - type: Transform - - uid: 1856 - components: - - pos: -5.5,27.5 - parent: 1 - type: Transform - - uid: 1868 - components: - - pos: -6.5,35.5 - parent: 1 - type: Transform - - uid: 1881 - components: - - pos: 13.5,25.5 - parent: 1 - type: Transform - - uid: 1885 - components: - - pos: 1.5,22.5 - parent: 1 - type: Transform - - uid: 1889 - components: - - pos: 2.5,41.5 - parent: 1 - type: Transform - - uid: 1891 - components: - - pos: 3.5,41.5 - parent: 1 - type: Transform - - uid: 1892 - components: - - pos: 8.5,27.5 - parent: 1 - type: Transform - - uid: 1900 - components: - - pos: 12.5,21.5 - parent: 1 - type: Transform - - uid: 2006 - components: - - pos: -45.5,52.5 - parent: 1 - type: Transform - - uid: 2007 - components: - - pos: -45.5,51.5 - parent: 1 - type: Transform - - uid: 2046 - components: - - pos: 17.5,21.5 - parent: 1 - type: Transform - - uid: 2644 - components: - - pos: -19.5,30.5 - parent: 1 - type: Transform - - uid: 2645 - components: - - rot: -1.5707963267948966 rad - pos: -5.5,35.5 - parent: 1 - type: Transform - - uid: 2648 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,35.5 - parent: 1 - type: Transform - - uid: 2649 - components: - - rot: -1.5707963267948966 rad - pos: -13.5,34.5 - parent: 1 - type: Transform - - uid: 2650 - components: - - pos: -12.5,34.5 - parent: 1 - type: Transform - - uid: 2667 - components: - - pos: -17.5,-15.5 - parent: 1 - type: Transform - - uid: 2813 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,19.5 - parent: 1 - type: Transform - - uid: 2837 - components: - - pos: -14.5,26.5 - parent: 1 - type: Transform - - uid: 2936 - components: - - pos: -18.5,23.5 - parent: 1 - type: Transform - - uid: 3027 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,7.5 - parent: 1 - type: Transform - - uid: 3028 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,8.5 - parent: 1 - type: Transform - - uid: 3029 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,9.5 - parent: 1 - type: Transform - - uid: 3039 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,19.5 - parent: 1 - type: Transform - - uid: 3046 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,25.5 - parent: 1 - type: Transform - - uid: 3052 - components: - - pos: -21.5,30.5 - parent: 1 - type: Transform - - uid: 3055 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,7.5 - parent: 1 - type: Transform - - uid: 3057 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,9.5 - parent: 1 - type: Transform - - uid: 3058 - components: - - rot: -1.5707963267948966 rad - pos: -24.5,14.5 - parent: 1 - type: Transform - - uid: 3060 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,11.5 - parent: 1 - type: Transform - - uid: 3061 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,12.5 - parent: 1 - type: Transform - - uid: 3062 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,14.5 - parent: 1 - type: Transform - - uid: 3066 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,18.5 - parent: 1 - type: Transform - - uid: 3067 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,13.5 - parent: 1 - type: Transform - - uid: 3071 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,19.5 - parent: 1 - type: Transform - - uid: 3073 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,14.5 - parent: 1 - type: Transform - - uid: 3075 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,19.5 - parent: 1 - type: Transform - - uid: 3078 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,17.5 - parent: 1 - type: Transform - - uid: 3080 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,9.5 - parent: 1 - type: Transform - - uid: 3111 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,8.5 - parent: 1 - type: Transform - - uid: 3112 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,7.5 - parent: 1 - type: Transform - - uid: 3115 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,11.5 - parent: 1 - type: Transform - - uid: 3116 - components: - - pos: -27.5,29.5 - parent: 1 - type: Transform - - uid: 3119 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,25.5 - parent: 1 - type: Transform - - uid: 3121 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,24.5 - parent: 1 - type: Transform - - uid: 3124 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,22.5 - parent: 1 - type: Transform - - uid: 3127 - components: - - rot: -1.5707963267948966 rad - pos: -22.5,25.5 - parent: 1 - type: Transform - - uid: 3136 - components: - - rot: -1.5707963267948966 rad - pos: -24.5,22.5 - parent: 1 - type: Transform - - uid: 3137 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,22.5 - parent: 1 - type: Transform - - uid: 3139 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,24.5 - parent: 1 - type: Transform - - uid: 3140 - components: - - pos: -34.5,30.5 - parent: 1 - type: Transform - - uid: 3145 - components: - - pos: -10.5,36.5 - parent: 1 - type: Transform - - uid: 3147 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,14.5 - parent: 1 - type: Transform - - uid: 3152 - components: - - pos: -28.5,30.5 - parent: 1 - type: Transform - - uid: 3157 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,-1.5 - parent: 1 - type: Transform - - uid: 3158 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,-0.5 - parent: 1 - type: Transform - - uid: 3166 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,22.5 - parent: 1 - type: Transform - - uid: 3167 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,10.5 - parent: 1 - type: Transform - - uid: 3169 - components: - - pos: -46.5,19.5 - parent: 1 - type: Transform - - uid: 3213 - components: - - pos: -42.5,15.5 - parent: 1 - type: Transform - - uid: 3215 - components: - - pos: -39.5,19.5 - parent: 1 - type: Transform - - uid: 3217 - components: - - pos: -39.5,16.5 - parent: 1 - type: Transform - - uid: 3420 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,13.5 - parent: 1 - type: Transform - - uid: 3437 - components: - - pos: -39.5,10.5 - parent: 1 - type: Transform - - uid: 3446 - components: - - pos: -23.5,46.5 - parent: 1 - type: Transform - - uid: 3453 - components: - - rot: -1.5707963267948966 rad - pos: -23.5,34.5 - parent: 1 - type: Transform - - uid: 3463 - components: - - pos: -30.5,-2.5 - parent: 1 - type: Transform - - uid: 3465 - components: - - pos: -30.5,-1.5 - parent: 1 - type: Transform - - uid: 3468 - components: - - pos: -30.5,-5.5 - parent: 1 - type: Transform - - uid: 3471 - components: - - pos: -30.5,-7.5 - parent: 1 - type: Transform - - uid: 3473 - components: - - pos: -30.5,1.5 - parent: 1 - type: Transform - - uid: 3474 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,-9.5 - parent: 1 - type: Transform - - uid: 3475 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,-10.5 - parent: 1 - type: Transform - - uid: 3492 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,-9.5 - parent: 1 - type: Transform - - uid: 3494 - components: - - pos: -29.5,-13.5 - parent: 1 - type: Transform - - uid: 3500 - components: - - pos: -26.5,-13.5 - parent: 1 - type: Transform - - uid: 3521 - components: - - pos: -35.5,2.5 - parent: 1 - type: Transform - - uid: 3525 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,0.5 - parent: 1 - type: Transform - - uid: 3528 - components: - - pos: -33.5,-0.5 - parent: 1 - type: Transform - - uid: 3548 - components: - - pos: -30.5,-8.5 - parent: 1 - type: Transform - - uid: 3582 - components: - - pos: -41.5,-8.5 - parent: 1 - type: Transform - - uid: 3597 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,-4.5 - parent: 1 - type: Transform - - uid: 3602 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,0.5 - parent: 1 - type: Transform - - uid: 3603 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,3.5 - parent: 1 - type: Transform - - uid: 3607 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,1.5 - parent: 1 - type: Transform - - uid: 3609 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,-0.5 - parent: 1 - type: Transform - - uid: 3610 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,-0.5 - parent: 1 - type: Transform - - uid: 3612 - components: - - rot: -1.5707963267948966 rad - pos: -55.5,2.5 - parent: 1 - type: Transform - - uid: 3633 - components: - - pos: -45.5,-14.5 - parent: 1 - type: Transform - - uid: 3648 - components: - - pos: -37.5,-14.5 - parent: 1 - type: Transform - - uid: 3689 - components: - - pos: -16.5,21.5 - parent: 1 - type: Transform - - uid: 3693 - components: - - pos: -43.5,9.5 - parent: 1 - type: Transform - - uid: 3694 - components: - - pos: -43.5,10.5 - parent: 1 - type: Transform - - uid: 4092 - components: - - pos: -53.5,-11.5 - parent: 1 - type: Transform - - uid: 4125 - components: - - pos: -36.5,-12.5 - parent: 1 - type: Transform - - uid: 4171 - components: - - pos: -39.5,15.5 - parent: 1 - type: Transform - - uid: 4174 - components: - - pos: -39.5,26.5 - parent: 1 - type: Transform - - uid: 4175 - components: - - pos: -39.5,29.5 - parent: 1 - type: Transform - - uid: 4178 - components: - - pos: -39.5,22.5 - parent: 1 - type: Transform - - uid: 4181 - components: - - pos: -43.5,26.5 - parent: 1 - type: Transform - - uid: 4183 - components: - - pos: -42.5,22.5 - parent: 1 - type: Transform - - uid: 4185 - components: - - pos: -43.5,24.5 - parent: 1 - type: Transform - - uid: 4189 - components: - - pos: -39.5,23.5 - parent: 1 - type: Transform - - uid: 4191 - components: - - pos: -40.5,29.5 - parent: 1 - type: Transform - - uid: 4194 - components: - - pos: -42.5,29.5 - parent: 1 - type: Transform - - uid: 4198 - components: - - pos: -49.5,30.5 - parent: 1 - type: Transform - - uid: 4204 - components: - - pos: -51.5,18.5 - parent: 1 - type: Transform - - uid: 4251 - components: - - pos: -18.5,26.5 - parent: 1 - type: Transform - - uid: 4268 - components: - - pos: -18.5,25.5 - parent: 1 - type: Transform - - uid: 4272 - components: - - pos: -23.5,36.5 - parent: 1 - type: Transform - - uid: 4285 - components: - - pos: -41.5,16.5 - parent: 1 - type: Transform - - uid: 4288 - components: - - pos: -46.5,17.5 - parent: 1 - type: Transform - - uid: 4300 - components: - - pos: -46.5,20.5 - parent: 1 - type: Transform - - uid: 4302 - components: - - pos: -49.5,16.5 - parent: 1 - type: Transform - - uid: 4304 - components: - - pos: -39.5,13.5 - parent: 1 - type: Transform - - uid: 4307 - components: - - pos: -55.5,23.5 - parent: 1 - type: Transform - - uid: 4318 - components: - - pos: -51.5,21.5 - parent: 1 - type: Transform - - uid: 4322 - components: - - pos: -51.5,17.5 - parent: 1 - type: Transform - - uid: 4323 - components: - - pos: -51.5,14.5 - parent: 1 - type: Transform - - uid: 4503 - components: - - pos: -49.5,-4.5 - parent: 1 - type: Transform - - uid: 4504 - components: - - pos: -49.5,-5.5 - parent: 1 - type: Transform - - uid: 4505 - components: - - pos: -49.5,-2.5 - parent: 1 - type: Transform - - uid: 4507 - components: - - pos: -49.5,-8.5 - parent: 1 - type: Transform - - uid: 4514 - components: - - pos: -55.5,0.5 - parent: 1 - type: Transform - - uid: 4515 - components: - - pos: -54.5,-8.5 - parent: 1 - type: Transform - - uid: 4517 - components: - - pos: -52.5,0.5 - parent: 1 - type: Transform - - uid: 4520 - components: - - pos: -55.5,-2.5 - parent: 1 - type: Transform - - uid: 4528 - components: - - pos: -49.5,-0.5 - parent: 1 - type: Transform - - uid: 4530 - components: - - pos: -51.5,-8.5 - parent: 1 - type: Transform - - uid: 4531 - components: - - pos: -53.5,0.5 - parent: 1 - type: Transform - - uid: 4552 - components: - - pos: -55.5,29.5 - parent: 1 - type: Transform - - uid: 4555 - components: - - pos: -54.5,22.5 - parent: 1 - type: Transform - - uid: 4580 - components: - - pos: -46.5,30.5 - parent: 1 - type: Transform - - uid: 4582 - components: - - pos: -46.5,28.5 - parent: 1 - type: Transform - - uid: 4588 - components: - - pos: -54.5,26.5 - parent: 1 - type: Transform - - uid: 4589 - components: - - pos: -55.5,27.5 - parent: 1 - type: Transform - - uid: 4591 - components: - - pos: -55.5,17.5 - parent: 1 - type: Transform - - uid: 5008 - components: - - rot: 3.141592653589793 rad - pos: -42.5,3.5 - parent: 1 - type: Transform - - uid: 5010 - components: - - pos: -33.5,58.5 - parent: 1 - type: Transform - - uid: 5045 - components: - - pos: -34.5,58.5 - parent: 1 - type: Transform - - uid: 5167 - components: - - pos: -36.5,58.5 - parent: 1 - type: Transform - - uid: 5170 - components: - - pos: -26.5,51.5 - parent: 1 - type: Transform - - uid: 5182 - components: - - rot: -1.5707963267948966 rad - pos: -67.5,7.5 - parent: 1 - type: Transform - - uid: 5190 - components: - - pos: -19.5,52.5 - parent: 1 - type: Transform - - uid: 5208 - components: - - pos: -25.5,56.5 - parent: 1 - type: Transform - - uid: 5223 - components: - - pos: -28.5,56.5 - parent: 1 - type: Transform - - uid: 5306 - components: - - pos: -54.5,-3.5 - parent: 1 - type: Transform - - uid: 5308 - components: - - pos: -52.5,-3.5 - parent: 1 - type: Transform - - uid: 5310 - components: - - rot: -1.5707963267948966 rad - pos: -50.5,2.5 - parent: 1 - type: Transform - - uid: 5410 - components: - - pos: -37.5,56.5 - parent: 1 - type: Transform - - uid: 5411 - components: - - pos: -24.5,-5.5 - parent: 1 - type: Transform - - uid: 5452 - components: - - pos: -38.5,56.5 - parent: 1 - type: Transform - - uid: 5495 - components: - - pos: -39.5,56.5 - parent: 1 - type: Transform - - uid: 5524 - components: - - pos: -41.5,56.5 - parent: 1 - type: Transform - - uid: 5532 - components: - - pos: -43.5,56.5 - parent: 1 - type: Transform - - uid: 5725 - components: - - pos: -43.5,48.5 - parent: 1 - type: Transform - - uid: 5755 - components: - - pos: -45.5,53.5 - parent: 1 - type: Transform - - uid: 5837 - components: - - pos: -10.5,39.5 - parent: 1 - type: Transform - - uid: 5838 - components: - - pos: -8.5,38.5 - parent: 1 - type: Transform - - uid: 5843 - components: - - pos: -10.5,44.5 - parent: 1 - type: Transform - - uid: 5845 - components: - - pos: -6.5,45.5 - parent: 1 - type: Transform - - uid: 5854 - components: - - pos: -5.5,38.5 - parent: 1 - type: Transform - - uid: 5859 - components: - - pos: -10.5,42.5 - parent: 1 - type: Transform - - uid: 5868 - components: - - pos: -4.5,38.5 - parent: 1 - type: Transform - - uid: 5872 - components: - - pos: -4.5,39.5 - parent: 1 - type: Transform - - uid: 5874 - components: - - pos: -4.5,44.5 - parent: 1 - type: Transform - - uid: 5877 - components: - - pos: -4.5,42.5 - parent: 1 - type: Transform - - uid: 5879 - components: - - pos: -8.5,45.5 - parent: 1 - type: Transform - - uid: 5955 - components: - - rot: 3.141592653589793 rad - pos: 2.5,48.5 - parent: 1 - type: Transform - - uid: 5957 - components: - - rot: 3.141592653589793 rad - pos: 1.5,51.5 - parent: 1 - type: Transform - - uid: 5958 - components: - - rot: 3.141592653589793 rad - pos: 1.5,52.5 - parent: 1 - type: Transform - - uid: 5972 - components: - - rot: 3.141592653589793 rad - pos: 4.5,48.5 - parent: 1 - type: Transform - - uid: 5979 - components: - - rot: 3.141592653589793 rad - pos: 9.5,49.5 - parent: 1 - type: Transform - - uid: 5981 - components: - - rot: 3.141592653589793 rad - pos: 13.5,46.5 - parent: 1 - type: Transform - - uid: 5984 - components: - - rot: 3.141592653589793 rad - pos: 11.5,47.5 - parent: 1 - type: Transform - - uid: 5986 - components: - - rot: 3.141592653589793 rad - pos: 10.5,47.5 - parent: 1 - type: Transform - - uid: 5987 - components: - - rot: 3.141592653589793 rad - pos: 8.5,46.5 - parent: 1 - type: Transform - - uid: 5996 - components: - - rot: 3.141592653589793 rad - pos: 5.5,52.5 - parent: 1 - type: Transform - - uid: 5998 - components: - - rot: 3.141592653589793 rad - pos: 5.5,50.5 - parent: 1 - type: Transform - - uid: 6006 - components: - - rot: 3.141592653589793 rad - pos: 1.5,49.5 - parent: 1 - type: Transform - - uid: 6008 - components: - - rot: 3.141592653589793 rad - pos: 9.5,50.5 - parent: 1 - type: Transform - - uid: 6027 - components: - - rot: 3.141592653589793 rad - pos: 8.5,45.5 - parent: 1 - type: Transform - - uid: 6066 - components: - - rot: -1.5707963267948966 rad - pos: 17.5,44.5 - parent: 1 - type: Transform - - uid: 6364 - components: - - rot: 3.141592653589793 rad - pos: -11.5,58.5 - parent: 1 - type: Transform - - uid: 6365 - components: - - rot: 3.141592653589793 rad - pos: -12.5,58.5 - parent: 1 - type: Transform - - uid: 6372 - components: - - rot: 3.141592653589793 rad - pos: -19.5,58.5 - parent: 1 - type: Transform - - uid: 6695 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,43.5 - parent: 1 - type: Transform - - uid: 6696 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,42.5 - parent: 1 - type: Transform - - uid: 6698 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,48.5 - parent: 1 - type: Transform - - uid: 6699 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,48.5 - parent: 1 - type: Transform - - uid: 6701 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,48.5 - parent: 1 - type: Transform - - uid: 6703 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,48.5 - parent: 1 - type: Transform - - uid: 6704 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,48.5 - parent: 1 - type: Transform - - uid: 6706 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,40.5 - parent: 1 - type: Transform - - uid: 6709 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,37.5 - parent: 1 - type: Transform - - uid: 6711 - components: - - rot: -1.5707963267948966 rad - pos: -26.5,35.5 - parent: 1 - type: Transform - - uid: 6714 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,52.5 - parent: 1 - type: Transform - - uid: 6718 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,36.5 - parent: 1 - type: Transform - - uid: 6719 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,35.5 - parent: 1 - type: Transform - - uid: 6722 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,39.5 - parent: 1 - type: Transform - - uid: 6724 - components: - - rot: -1.5707963267948966 rad - pos: -29.5,39.5 - parent: 1 - type: Transform - - uid: 6730 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,34.5 - parent: 1 - type: Transform - - uid: 6732 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,41.5 - parent: 1 - type: Transform - - uid: 6733 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,41.5 - parent: 1 - type: Transform - - uid: 6735 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,41.5 - parent: 1 - type: Transform - - uid: 6739 - components: - - rot: -1.5707963267948966 rad - pos: -27.5,43.5 - parent: 1 - type: Transform - - uid: 6740 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,40.5 - parent: 1 - type: Transform - - uid: 6741 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,38.5 - parent: 1 - type: Transform - - uid: 6743 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,44.5 - parent: 1 - type: Transform - - uid: 6744 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,37.5 - parent: 1 - type: Transform - - uid: 6746 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,34.5 - parent: 1 - type: Transform - - uid: 6748 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,41.5 - parent: 1 - type: Transform - - uid: 6749 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,41.5 - parent: 1 - type: Transform - - uid: 6750 - components: - - rot: -1.5707963267948966 rad - pos: -41.5,40.5 - parent: 1 - type: Transform - - uid: 6756 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,40.5 - parent: 1 - type: Transform - - uid: 6761 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,34.5 - parent: 1 - type: Transform - - uid: 6764 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,34.5 - parent: 1 - type: Transform - - uid: 6766 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,36.5 - parent: 1 - type: Transform - - uid: 6768 - components: - - rot: -1.5707963267948966 rad - pos: -28.5,43.5 - parent: 1 - type: Transform - - uid: 6772 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,51.5 - parent: 1 - type: Transform - - uid: 6773 - components: - - rot: -1.5707963267948966 rad - pos: -43.5,52.5 - parent: 1 - type: Transform - - uid: 6776 - components: - - rot: -1.5707963267948966 rad - pos: -38.5,50.5 - parent: 1 - type: Transform - - uid: 6777 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,53.5 - parent: 1 - type: Transform - - uid: 6780 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,47.5 - parent: 1 - type: Transform - - uid: 6787 - components: - - pos: -45.5,48.5 - parent: 1 - type: Transform - - uid: 6790 - components: - - pos: -45.5,45.5 - parent: 1 - type: Transform - - uid: 6797 - components: - - rot: -1.5707963267948966 rad - pos: -36.5,48.5 - parent: 1 - type: Transform - - uid: 6800 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,49.5 - parent: 1 - type: Transform - - uid: 6802 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,50.5 - parent: 1 - type: Transform - - uid: 6825 - components: - - pos: -26.5,-12.5 - parent: 1 - type: Transform - - uid: 6850 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,56.5 - parent: 1 - type: Transform - - uid: 6852 - components: - - pos: -19.5,-15.5 - parent: 1 - type: Transform - - uid: 6853 - components: - - pos: -22.5,-14.5 - parent: 1 - type: Transform - - uid: 6854 - components: - - pos: -23.5,-14.5 - parent: 1 - type: Transform - - uid: 6855 - components: - - pos: -21.5,-15.5 - parent: 1 - type: Transform - - uid: 6856 - components: - - pos: -22.5,-11.5 - parent: 1 - type: Transform - - uid: 6857 - components: - - pos: -22.5,-13.5 - parent: 1 - type: Transform - - uid: 6900 - components: - - pos: -22.5,-12.5 - parent: 1 - type: Transform - - uid: 6961 - components: - - rot: -1.5707963267948966 rad - pos: -37.5,48.5 - parent: 1 - type: Transform - - uid: 7027 - components: - - pos: -49.5,39.5 - parent: 1 - type: Transform - - uid: 7035 - components: - - pos: -55.5,43.5 - parent: 1 - type: Transform - - uid: 7039 - components: - - pos: -51.5,39.5 - parent: 1 - type: Transform - - uid: 7042 - components: - - pos: -54.5,38.5 - parent: 1 - type: Transform - - uid: 7044 - components: - - pos: -54.5,35.5 - parent: 1 - type: Transform - - uid: 7049 - components: - - pos: -54.5,36.5 - parent: 1 - type: Transform - - uid: 7052 - components: - - pos: -50.5,45.5 - parent: 1 - type: Transform - - uid: 7054 - components: - - pos: -52.5,42.5 - parent: 1 - type: Transform - - uid: 7055 - components: - - pos: -50.5,44.5 - parent: 1 - type: Transform - - uid: 7060 - components: - - pos: -49.5,40.5 - parent: 1 - type: Transform - - uid: 7069 - components: - - pos: -55.5,34.5 - parent: 1 - type: Transform - - uid: 7070 - components: - - pos: -49.5,34.5 - parent: 1 - type: Transform - - uid: 7087 - components: - - pos: -49.5,37.5 - parent: 1 - type: Transform - - uid: 7244 - components: - - pos: -54.5,81.5 - parent: 1 - type: Transform - - uid: 7275 - components: - - pos: -53.5,86.5 - parent: 1 - type: Transform - - uid: 7288 - components: - - pos: -55.5,91.5 - parent: 1 - type: Transform - - uid: 7566 - components: - - pos: -64.5,37.5 - parent: 1 - type: Transform - - uid: 7567 - components: - - pos: -65.5,45.5 - parent: 1 - type: Transform - - uid: 7568 - components: - - pos: -59.5,43.5 - parent: 1 - type: Transform - - uid: 7921 - components: - - pos: -50.5,-13.5 - parent: 1 - type: Transform - - uid: 7922 - components: - - pos: -50.5,-12.5 - parent: 1 - type: Transform - - uid: 8057 - components: - - pos: -26.5,58.5 - parent: 1 - type: Transform - - uid: 8058 - components: - - pos: -25.5,58.5 - parent: 1 - type: Transform - - uid: 8314 - components: - - rot: 3.141592653589793 rad - pos: -69.5,7.5 - parent: 1 - type: Transform - - uid: 9160 - components: - - pos: -68.5,53.5 - parent: 1 - type: Transform - - uid: 9164 - components: - - pos: -68.5,50.5 - parent: 1 - type: Transform - - uid: 9165 - components: - - pos: -68.5,54.5 - parent: 1 - type: Transform - - uid: 9167 - components: - - pos: -71.5,50.5 - parent: 1 - type: Transform - - uid: 9168 - components: - - pos: -69.5,50.5 - parent: 1 - type: Transform - - uid: 9175 - components: - - pos: -68.5,46.5 - parent: 1 - type: Transform - - uid: 9176 - components: - - pos: -70.5,46.5 - parent: 1 - type: Transform - - uid: 9178 - components: - - pos: -71.5,46.5 - parent: 1 - type: Transform - - uid: 9180 - components: - - pos: -73.5,46.5 - parent: 1 - type: Transform - - uid: 9183 - components: - - pos: -73.5,42.5 - parent: 1 - type: Transform - - uid: 9192 - components: - - pos: -68.5,55.5 - parent: 1 - type: Transform - - uid: 9200 - components: - - pos: -73.5,48.5 - parent: 1 - type: Transform - - uid: 9205 - components: - - pos: -59.5,46.5 - parent: 1 - type: Transform - - uid: 9208 - components: - - pos: -65.5,40.5 - parent: 1 - type: Transform - - uid: 9215 - components: - - pos: -59.5,41.5 - parent: 1 - type: Transform - - uid: 9222 - components: - - pos: -61.5,46.5 - parent: 1 - type: Transform - - uid: 9228 - components: - - pos: -63.5,46.5 - parent: 1 - type: Transform - - uid: 9229 - components: - - pos: -69.5,38.5 - parent: 1 - type: Transform - - uid: 9231 - components: - - pos: -73.5,39.5 - parent: 1 - type: Transform - - uid: 9234 - components: - - pos: -68.5,44.5 - parent: 1 - type: Transform - - uid: 9239 - components: - - pos: -73.5,40.5 - parent: 1 - type: Transform - - uid: 9242 - components: - - pos: -68.5,41.5 - parent: 1 - type: Transform - - uid: 9269 - components: - - pos: -72.5,38.5 - parent: 1 - type: Transform - - uid: 9273 - components: - - pos: -65.5,42.5 - parent: 1 - type: Transform - - uid: 9275 - components: - - pos: -60.5,37.5 - parent: 1 - type: Transform - - uid: 9293 - components: - - pos: -65.5,39.5 - parent: 1 - type: Transform - - uid: 9301 - components: - - pos: -59.5,36.5 - parent: 1 - type: Transform - - uid: 9782 - components: - - rot: 3.141592653589793 rad - pos: -1.5,48.5 - parent: 1 - type: Transform - - uid: 9897 - components: - - pos: -59.5,20.5 - parent: 1 - type: Transform - - uid: 9899 - components: - - pos: -59.5,17.5 - parent: 1 - type: Transform - - uid: 9915 - components: - - pos: -60.5,9.5 - parent: 1 - type: Transform - - uid: 9916 - components: - - pos: -61.5,9.5 - parent: 1 - type: Transform - - uid: 9925 - components: - - pos: -63.5,9.5 - parent: 1 - type: Transform - - uid: 9928 - components: - - pos: -65.5,10.5 - parent: 1 - type: Transform - - uid: 9930 - components: - - pos: -65.5,11.5 - parent: 1 - type: Transform - - uid: 9931 - components: - - pos: -65.5,15.5 - parent: 1 - type: Transform - - uid: 9932 - components: - - pos: -61.5,15.5 - parent: 1 - type: Transform - - uid: 10440 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,13.5 - parent: 1 - type: Transform - - uid: 10441 - components: - - rot: 1.5707963267948966 rad - pos: -55.5,11.5 - parent: 1 - type: Transform - - uid: 10450 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,10.5 - parent: 1 - type: Transform - - uid: 10453 - components: - - rot: 1.5707963267948966 rad - pos: -51.5,13.5 - parent: 1 - type: Transform - - uid: 10456 - components: - - rot: 1.5707963267948966 rad - pos: -52.5,11.5 - parent: 1 - type: Transform - - uid: 13310 - components: - - pos: 1.5,13.5 - parent: 1 - type: Transform - - uid: 13311 - components: - - pos: 0.5,13.5 - parent: 1 - type: Transform - - uid: 13312 - components: - - pos: 3.5,13.5 - parent: 1 - type: Transform - - uid: 13313 - components: - - pos: 5.5,14.5 - parent: 1 - type: Transform - - uid: 13314 - components: - - pos: 5.5,13.5 - parent: 1 - type: Transform - - uid: 13315 - components: - - pos: 5.5,16.5 - parent: 1 - type: Transform - - uid: 13316 - components: - - pos: 5.5,11.5 - parent: 1 - type: Transform - - uid: 14971 - components: - - pos: -59.5,27.5 - parent: 1 - type: Transform - - uid: 14972 - components: - - pos: -59.5,29.5 - parent: 1 - type: Transform - - uid: 14973 - components: - - pos: -59.5,30.5 - parent: 1 - type: Transform -- proto: WallVaultRock - entities: - - uid: 167 - components: - - rot: -1.5707963267948966 rad - pos: 8.5,-11.5 - parent: 1 - type: Transform - - uid: 210 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,-12.5 - parent: 1 - type: Transform - - uid: 211 - components: - - rot: -1.5707963267948966 rad - pos: 10.5,-11.5 - parent: 1 - type: Transform - - uid: 494 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,-11.5 - parent: 1 - type: Transform - - uid: 524 - components: - - pos: 12.5,-12.5 - parent: 1 - type: Transform - - uid: 1920 - components: - - rot: -1.5707963267948966 rad - pos: 9.5,-11.5 - parent: 1 - type: Transform - - uid: 1921 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,-13.5 - parent: 1 - type: Transform - - uid: 14822 - components: - - pos: 12.5,-14.5 - parent: 1 - type: Transform - - uid: 14827 - components: - - rot: -1.5707963267948966 rad - pos: 7.5,-15.5 - parent: 1 - type: Transform - - uid: 14828 - components: - - rot: -1.5707963267948966 rad - pos: 6.5,-14.5 - parent: 1 - type: Transform - - uid: 14829 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,-15.5 - parent: 1 - type: Transform -- proto: WallWood - entities: - - uid: 3476 - components: - - rot: -1.5707963267948966 rad - pos: -51.5,7.5 - parent: 1 - type: Transform - - uid: 3496 - components: - - rot: 3.141592653589793 rad - pos: -49.5,11.5 - parent: 1 - type: Transform - - uid: 5315 - components: - - rot: -1.5707963267948966 rad - pos: -46.5,7.5 - parent: 1 - type: Transform - - uid: 5321 - components: - - rot: -1.5707963267948966 rad - pos: -49.5,7.5 - parent: 1 - type: Transform - - uid: 5323 - components: - - rot: -1.5707963267948966 rad - pos: -52.5,7.5 - parent: 1 - type: Transform - - uid: 5347 - components: - - rot: 3.141592653589793 rad - pos: -48.5,12.5 - parent: 1 - type: Transform - - uid: 5348 - components: - - rot: 3.141592653589793 rad - pos: -48.5,11.5 - parent: 1 - type: Transform - - uid: 5445 - components: - - rot: 3.141592653589793 rad - pos: -53.5,9.5 - parent: 1 - type: Transform - - uid: 6154 - components: - - rot: -1.5707963267948966 rad - pos: -54.5,7.5 - parent: 1 - type: Transform - - uid: 10443 - components: - - rot: 1.5707963267948966 rad - pos: -54.5,9.5 - parent: 1 - type: Transform - - uid: 10446 - components: - - rot: 3.141592653589793 rad - pos: -46.5,11.5 - parent: 1 - type: Transform - - uid: 11894 - components: - - rot: -1.5707963267948966 rad - pos: -47.5,7.5 - parent: 1 - type: Transform - - uid: 13292 - components: - - rot: -1.5707963267948966 rad - pos: -53.5,7.5 - parent: 1 - type: Transform - - uid: 14820 - components: - - rot: -1.5707963267948966 rad - pos: -48.5,7.5 - parent: 1 - type: Transform -- proto: WardrobeCargoFilled - entities: - - uid: 3664 - components: - - pos: -43.5,2.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 15095 - components: - - pos: -44.5,2.5 - parent: 1 - type: Transform -- proto: WardrobeGreenFilled - entities: - - uid: 14456 - components: - - pos: -72.5,8.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 14457 - components: - - pos: -69.5,8.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: WardrobeGreyFilled - entities: - - uid: 5934 - components: - - pos: -6.5,39.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5935 - components: - - pos: -5.5,39.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5936 - components: - - pos: -8.5,39.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 5937 - components: - - pos: -9.5,39.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: WardrobePrisonFilled - entities: - - uid: 1913 - components: - - pos: -50.5,51.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1917 - components: - - pos: -53.5,51.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 1919 - components: - - pos: -56.5,51.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 7350 - components: - - pos: -55.5,90.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - - uid: 7359 - components: - - pos: -55.5,84.5 - parent: 1 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14963 - moles: - - 3.3523011 - - 12.611038 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: WarningCO2 - entities: - - uid: 13931 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,38.5 - parent: 1 - type: Transform -- proto: WarningN2 - entities: - - uid: 13935 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,36.5 - parent: 1 - type: Transform -- proto: WarningN2O - entities: - - uid: 13932 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,40.5 - parent: 1 - type: Transform -- proto: WarningO2 - entities: - - uid: 13934 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,34.5 - parent: 1 - type: Transform -- proto: WarningPlasma - entities: - - uid: 13933 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,42.5 - parent: 1 - type: Transform -- proto: WarningWaste - entities: - - uid: 13930 - components: - - rot: 1.5707963267948966 rad - pos: -87.5,44.5 - parent: 1 - type: Transform -- proto: WarpPoint - entities: - - uid: 13298 - components: - - rot: 1.5707963267948966 rad - pos: 3.5,25.5 - parent: 1 - type: Transform - - location: med - type: WarpPoint - - uid: 13777 - components: - - pos: -37.5,37.5 - parent: 1 - type: Transform - - location: bar - type: WarpPoint - - uid: 13783 - components: - - pos: -32.5,26.5 - parent: 1 - type: Transform - - location: theatre - type: WarpPoint - - uid: 13784 - components: - - pos: -21.5,40.5 - parent: 1 - type: Transform - - location: HoP - type: WarpPoint - - uid: 13785 - components: - - pos: -16.5,60.5 - parent: 1 - type: Transform - - location: bridge - type: WarpPoint - - uid: 13787 - components: - - pos: 27.5,13.5 - parent: 1 - type: Transform - - location: evac - type: WarpPoint - - uid: 13788 - components: - - pos: 15.5,-0.5 - parent: 1 - type: Transform - - location: chapel - type: WarpPoint - - uid: 13789 - components: - - pos: -7.5,-1.5 - parent: 1 - type: Transform - - location: sci - type: WarpPoint - - uid: 13790 - components: - - pos: -38.5,-5.5 - parent: 1 - type: Transform - - location: cargo - type: WarpPoint - - uid: 14931 - components: - - pos: -53.5,55.5 - parent: 1 - type: Transform - - location: sec - type: WarpPoint - - uid: 14932 - components: - - pos: -70.5,26.5 - parent: 1 - type: Transform - - location: eng - type: WarpPoint -- proto: WaterCooler - entities: - - uid: 331 - components: - - pos: -2.5,-5.5 - parent: 1 - type: Transform - - uid: 3088 - components: - - pos: -22.5,13.5 - parent: 1 - type: Transform - - uid: 8024 - components: - - pos: -60.5,61.5 - parent: 1 - type: Transform -- proto: WaterTank - entities: - - uid: 10388 - components: - - pos: -0.5,45.5 - parent: 1 - type: Transform -- proto: WaterTankFull - entities: - - uid: 78 - components: - - pos: -52.5,41.5 - parent: 1 - type: Transform - - uid: 3679 - components: - - pos: -51.5,-10.5 - parent: 1 - type: Transform - - uid: 5418 - components: - - pos: -29.5,-1.5 - parent: 1 - type: Transform - - uid: 5419 - components: - - pos: -21.5,2.5 - parent: 1 - type: Transform - - uid: 5420 - components: - - pos: 16.5,-4.5 - parent: 1 - type: Transform - - uid: 5614 - components: - - pos: -49.5,15.5 - parent: 1 - type: Transform - - uid: 5712 - components: - - pos: -24.5,20.5 - parent: 1 - type: Transform - - uid: 5741 - components: - - pos: -61.5,86.5 - parent: 1 - type: Transform - - uid: 5787 - components: - - pos: -7.5,21.5 - parent: 1 - type: Transform - - uid: 10365 - components: - - pos: -35.5,54.5 - parent: 1 - type: Transform - - uid: 10476 - components: - - pos: -52.5,44.5 - parent: 1 - type: Transform - - uid: 12899 - components: - - pos: 8.5,8.5 - parent: 1 - type: Transform - - uid: 12913 - components: - - pos: 19.5,25.5 - parent: 1 - type: Transform - - uid: 14308 - components: - - pos: -74.5,48.5 - parent: 1 - type: Transform - - uid: 14589 - components: - - pos: -67.5,9.5 - parent: 1 - type: Transform -- proto: WaterTankHighCapacity - entities: - - uid: 6945 - components: - - pos: -41.5,47.5 - parent: 1 - type: Transform -- proto: WaterVaporCanister - entities: - - uid: 368 - components: - - pos: 4.5,-8.5 - parent: 1 - type: Transform -- proto: WeaponCapacitorRecharger - entities: - - uid: 3134 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,10.5 - parent: 1 - type: Transform - - uid: 7965 - components: - - pos: -60.5,50.5 - parent: 1 - type: Transform - - uid: 9156 - components: - - rot: 3.141592653589793 rad - pos: -53.5,58.5 - parent: 1 - type: Transform - - uid: 10918 - components: - - pos: -17.5,66.5 - parent: 1 - type: Transform - - uid: 13338 - components: - - pos: -1.5,10.5 - parent: 1 - type: Transform -- proto: WeaponDisabler - entities: - - uid: 7954 - components: - - pos: -48.547054,59.421623 - parent: 1 - type: Transform - - uid: 8005 - components: - - pos: -61.153942,50.71659 - parent: 1 - type: Transform - - uid: 8006 - components: - - pos: -61.200817,50.52909 - parent: 1 - type: Transform - - uid: 8007 - components: - - pos: -61.372692,50.68534 - parent: 1 - type: Transform -- proto: WeaponFlareGun - entities: - - uid: 1672 - components: - - pos: 16.491018,-8.470055 - parent: 1 - type: Transform -- proto: WeaponLaserCarbine - entities: - - uid: 8357 - components: - - pos: -43.394764,61.749336 - parent: 1 - type: Transform - - uid: 8358 - components: - - pos: -43.31664,61.63996 - parent: 1 - type: Transform -- proto: WeaponPistolMk58 - entities: - - uid: 7955 - components: - - pos: -48.53143,59.640373 - parent: 1 - type: Transform - - uid: 8373 - components: - - pos: -42.53539,61.624336 - parent: 1 - type: Transform - - uid: 8374 - components: - - pos: -42.426014,61.54621 - parent: 1 - type: Transform -- proto: WeaponRifleLecter - entities: - - uid: 8354 - components: - - pos: -41.519764,63.624336 - parent: 1 - type: Transform - - uid: 8355 - components: - - pos: -41.488514,63.38996 - parent: 1 - type: Transform - - uid: 8356 - components: - - pos: -41.488514,63.13996 - parent: 1 - type: Transform -- proto: WeaponShotgunKammerer - entities: - - uid: 8370 - components: - - pos: -41.69164,61.686836 - parent: 1 - type: Transform - - uid: 8371 - components: - - pos: -41.62914,61.561836 - parent: 1 - type: Transform -- proto: WeaponSubMachineGunWt550 - entities: - - uid: 7937 - components: - - pos: -60.450623,64.62244 - parent: 1 - type: Transform -- proto: WeaponTurretSyndicateBroken - entities: - - uid: 15844 - components: - - pos: -27.5,54.5 - parent: 1 - type: Transform -- proto: WelderIndustrialAdvanced - entities: - - uid: 15838 - components: - - pos: -82.43898,31.548532 - parent: 1 - type: Transform -- proto: WeldingFuelTankFull - entities: - - uid: 3565 - components: - - pos: -50.5,-10.5 - parent: 1 - type: Transform - - uid: 5416 - components: - - pos: -20.5,2.5 - parent: 1 - type: Transform - - uid: 5417 - components: - - pos: -29.5,-0.5 - parent: 1 - type: Transform - - uid: 5421 - components: - - pos: 17.5,-4.5 - parent: 1 - type: Transform - - uid: 5613 - components: - - pos: -48.5,15.5 - parent: 1 - type: Transform - - uid: 5615 - components: - - pos: -50.5,29.5 - parent: 1 - type: Transform - - uid: 5711 - components: - - pos: -23.5,20.5 - parent: 1 - type: Transform - - uid: 5786 - components: - - pos: -7.5,20.5 - parent: 1 - type: Transform - - uid: 10364 - components: - - pos: -36.5,54.5 - parent: 1 - type: Transform - - uid: 10387 - components: - - pos: 0.5,45.5 - parent: 1 - type: Transform - - uid: 10475 - components: - - pos: -51.5,44.5 - parent: 1 - type: Transform - - uid: 11051 - components: - - pos: -70.5,35.5 - parent: 1 - type: Transform - - uid: 12898 - components: - - pos: 7.5,8.5 - parent: 1 - type: Transform - - uid: 12912 - components: - - pos: 20.5,25.5 - parent: 1 - type: Transform - - uid: 14307 - components: - - pos: -74.5,49.5 - parent: 1 - type: Transform - - uid: 14588 - components: - - pos: -67.5,8.5 - parent: 1 - type: Transform -- proto: Windoor - entities: - - uid: 275 - components: - - rot: 3.141592653589793 rad - pos: -7.5,3.5 - parent: 1 - type: Transform - - uid: 3758 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,0.5 - parent: 1 - type: Transform - - uid: 3759 - components: - - rot: -1.5707963267948966 rad - pos: -39.5,1.5 - parent: 1 - type: Transform - - uid: 3760 - components: - - rot: 3.141592653589793 rad - pos: -38.5,2.5 - parent: 1 - type: Transform - - uid: 3761 - components: - - rot: 3.141592653589793 rad - pos: -37.5,2.5 - parent: 1 - type: Transform - - uid: 3762 - components: - - rot: 3.141592653589793 rad - pos: -36.5,2.5 - parent: 1 - type: Transform - - uid: 3763 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,1.5 - parent: 1 - type: Transform - - uid: 3764 - components: - - rot: 1.5707963267948966 rad - pos: -35.5,0.5 - parent: 1 - type: Transform - - uid: 6963 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,44.5 - parent: 1 - type: Transform - - uid: 6964 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,43.5 - parent: 1 - type: Transform - - uid: 6965 - components: - - rot: -1.5707963267948966 rad - pos: -45.5,42.5 - parent: 1 - type: Transform - - uid: 13999 - components: - - pos: -69.5,43.5 - parent: 1 - type: Transform - - uid: 14360 - components: - - rot: -1.5707963267948966 rad - pos: -62.5,14.5 - parent: 1 - type: Transform - - uid: 14826 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,1.5 - parent: 1 - type: Transform -- proto: WindoorChapelLocked - entities: - - uid: 1648 - components: - - pos: 20.5,0.5 - parent: 1 - type: Transform -- proto: WindoorHydroponicsLocked - entities: - - uid: 6888 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,42.5 - parent: 1 - type: Transform - - uid: 6889 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,43.5 - parent: 1 - type: Transform - - uid: 6962 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,44.5 - parent: 1 - type: Transform -- proto: WindoorKitchenHydroponicsLocked - entities: - - uid: 6883 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,46.5 - parent: 1 - type: Transform - - uid: 6884 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,45.5 - parent: 1 - type: Transform - - uid: 6885 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,44.5 - parent: 1 - type: Transform - - uid: 6886 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,43.5 - parent: 1 - type: Transform -- proto: WindoorKitchenLocked - entities: - - uid: 6904 - components: - - rot: 3.141592653589793 rad - pos: -36.5,41.5 - parent: 1 - type: Transform - - uid: 6905 - components: - - rot: 3.141592653589793 rad - pos: -35.5,41.5 - parent: 1 - type: Transform -- proto: WindoorSecure - entities: - - uid: 1652 - components: - - rot: 3.141592653589793 rad - pos: -0.5,28.5 - parent: 1 - type: Transform - - uid: 1653 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,26.5 - parent: 1 - type: Transform - - uid: 1654 - components: - - rot: 1.5707963267948966 rad - pos: 1.5,25.5 - parent: 1 - type: Transform - - uid: 6655 - components: - - pos: -19.5,36.5 - parent: 1 - type: Transform - - uid: 6656 - components: - - rot: 1.5707963267948966 rad - pos: -18.5,35.5 - parent: 1 - type: Transform - - uid: 6657 - components: - - rot: 3.141592653589793 rad - pos: -22.5,34.5 - parent: 1 - type: Transform - - uid: 7877 - components: - - pos: -47.5,56.5 - parent: 1 - type: Transform - - uid: 7878 - components: - - rot: 3.141592653589793 rad - pos: -47.5,63.5 - parent: 1 - type: Transform - - uid: 13321 - components: - - pos: -0.5,7.5 - parent: 1 - type: Transform - - uid: 13322 - components: - - pos: 0.5,7.5 - parent: 1 - type: Transform - - uid: 13370 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,54.5 - parent: 1 - type: Transform -- proto: WindoorSecureArmoryLocked - entities: - - uid: 7874 - components: - - rot: 3.141592653589793 rad - pos: -47.5,56.5 - parent: 1 - type: Transform - - uid: 7875 - components: - - pos: -47.5,63.5 - parent: 1 - type: Transform -- proto: WindoorSecureCargoLocked - entities: - - uid: 3625 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,0.5 - parent: 1 - type: Transform - - uid: 3626 - components: - - pos: -38.5,2.5 - parent: 1 - type: Transform - - uid: 3627 - components: - - rot: 1.5707963267948966 rad - pos: -39.5,1.5 - parent: 1 - type: Transform - - uid: 3635 - components: - - pos: -37.5,2.5 - parent: 1 - type: Transform - - uid: 3636 - components: - - pos: -36.5,2.5 - parent: 1 - type: Transform - - uid: 3637 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,1.5 - parent: 1 - type: Transform - - uid: 3638 - components: - - rot: -1.5707963267948966 rad - pos: -35.5,0.5 - parent: 1 - type: Transform - - uid: 14713 - components: - - rot: -1.5707963267948966 rad - pos: -42.5,1.5 - parent: 1 - type: Transform -- proto: WindoorSecureChemistryLocked - entities: - - uid: 1649 - components: - - pos: -0.5,28.5 - parent: 1 - type: Transform - - uid: 1650 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,26.5 - parent: 1 - type: Transform - - uid: 1651 - components: - - rot: -1.5707963267948966 rad - pos: 1.5,25.5 - parent: 1 - type: Transform -- proto: WindoorSecureEngineeringLocked - entities: - - uid: 2800 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,8.5 - parent: 1 - type: Transform - - uid: 13624 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,32.5 - parent: 1 - type: Transform -- proto: WindoorSecureHeadOfPersonnelLocked - entities: - - uid: 3458 - components: - - rot: 3.141592653589793 rad - pos: -19.5,36.5 - parent: 1 - type: Transform -- proto: WindoorSecureMedicalLocked - entities: - - uid: 2342 - components: - - rot: 3.141592653589793 rad - pos: 10.5,13.5 - parent: 1 - type: Transform - - uid: 2343 - components: - - rot: 3.141592653589793 rad - pos: 8.5,13.5 - parent: 1 - type: Transform - - uid: 2344 - components: - - rot: 3.141592653589793 rad - pos: 6.5,13.5 - parent: 1 - type: Transform - - uid: 2798 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,13.5 - parent: 1 - type: Transform -- proto: WindoorSecureScienceLocked - entities: - - uid: 220 - components: - - pos: -5.5,-14.5 - parent: 1 - type: Transform - - uid: 274 - components: - - pos: -7.5,3.5 - parent: 1 - type: Transform -- proto: WindoorSecureSecurityLocked - entities: - - uid: 5570 - components: - - pos: -16.5,24.5 - parent: 1 - type: Transform - - uid: 7871 - components: - - rot: 3.141592653589793 rad - pos: -57.5,52.5 - parent: 1 - type: Transform - - links: - - 4985 - type: DeviceLinkSink - - uid: 7872 - components: - - rot: 3.141592653589793 rad - pos: -54.5,52.5 - parent: 1 - type: Transform - - links: - - 4986 - type: DeviceLinkSink - - uid: 7873 - components: - - rot: 3.141592653589793 rad - pos: -51.5,52.5 - parent: 1 - type: Transform - - links: - - 4987 - type: DeviceLinkSink - - uid: 13318 - components: - - rot: 3.141592653589793 rad - pos: -0.5,7.5 - parent: 1 - type: Transform - - uid: 13319 - components: - - rot: 3.141592653589793 rad - pos: 0.5,7.5 - parent: 1 - type: Transform - - uid: 15975 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,9.5 - parent: 1 - type: Transform -- proto: WindoorServiceLocked - entities: - - uid: 2799 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,14.5 - parent: 1 - type: Transform -- proto: WindoorTheatreLocked - entities: - - uid: 3417 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,29.5 - parent: 1 - type: Transform -- proto: Window - entities: - - uid: 4 - components: - - pos: -8.5,3.5 - parent: 1 - type: Transform - - uid: 36 - components: - - pos: -6.5,3.5 - parent: 1 - type: Transform - - uid: 39 - components: - - pos: -7.5,-4.5 - parent: 1 - type: Transform - - uid: 57 - components: - - pos: -7.5,-5.5 - parent: 1 - type: Transform - - uid: 66 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-4.5 - parent: 1 - type: Transform - - uid: 177 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-3.5 - parent: 1 - type: Transform - - uid: 180 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-5.5 - parent: 1 - type: Transform - - uid: 227 - components: - - rot: -1.5707963267948966 rad - pos: -14.5,-1.5 - parent: 1 - type: Transform - - uid: 1051 - components: - - pos: 18.5,7.5 - parent: 1 - type: Transform - - uid: 1250 - components: - - pos: 11.5,27.5 - parent: 1 - type: Transform - - uid: 1336 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,34.5 - parent: 1 - type: Transform - - uid: 1340 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,30.5 - parent: 1 - type: Transform - - uid: 1341 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,29.5 - parent: 1 - type: Transform - - uid: 1344 - components: - - rot: 1.5707963267948966 rad - pos: -5.5,32.5 - parent: 1 - type: Transform - - uid: 1371 - components: - - pos: 5.5,23.5 - parent: 1 - type: Transform - - uid: 1372 - components: - - pos: 5.5,22.5 - parent: 1 - type: Transform - - uid: 1437 - components: - - rot: 3.141592653589793 rad - pos: 24.5,39.5 - parent: 1 - type: Transform - - uid: 1438 - components: - - rot: 3.141592653589793 rad - pos: 24.5,40.5 - parent: 1 - type: Transform - - uid: 1625 - components: - - pos: 12.5,27.5 - parent: 1 - type: Transform - - uid: 1635 - components: - - pos: 5.5,26.5 - parent: 1 - type: Transform - - uid: 3047 - components: - - pos: -26.5,30.5 - parent: 1 - type: Transform - - uid: 3082 - components: - - pos: -27.5,7.5 - parent: 1 - type: Transform - - uid: 3083 - components: - - pos: -26.5,7.5 - parent: 1 - type: Transform - - uid: 3084 - components: - - pos: -25.5,7.5 - parent: 1 - type: Transform - - uid: 3131 - components: - - pos: -23.5,30.5 - parent: 1 - type: Transform - - uid: 3423 - components: - - pos: -35.5,15.5 - parent: 1 - type: Transform - - uid: 3425 - components: - - pos: -35.5,18.5 - parent: 1 - type: Transform - - uid: 3426 - components: - - pos: -35.5,19.5 - parent: 1 - type: Transform - - uid: 3428 - components: - - pos: -35.5,21.5 - parent: 1 - type: Transform - - uid: 3549 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,-0.5 - parent: 1 - type: Transform - - uid: 3568 - components: - - pos: -38.5,-8.5 - parent: 1 - type: Transform - - uid: 3576 - components: - - rot: -1.5707963267948966 rad - pos: -33.5,-4.5 - parent: 1 - type: Transform - - uid: 3586 - components: - - pos: -42.5,-4.5 - parent: 1 - type: Transform - - uid: 3591 - components: - - pos: -42.5,-3.5 - parent: 1 - type: Transform - - uid: 3592 - components: - - pos: -42.5,-1.5 - parent: 1 - type: Transform - - uid: 3608 - components: - - pos: -44.5,3.5 - parent: 1 - type: Transform - - uid: 3640 - components: - - pos: -38.5,-0.5 - parent: 1 - type: Transform - - uid: 3641 - components: - - pos: -36.5,-0.5 - parent: 1 - type: Transform - - uid: 3710 - components: - - pos: -37.5,-8.5 - parent: 1 - type: Transform - - uid: 3774 - components: - - rot: -1.5707963267948966 rad - pos: -31.5,-4.5 - parent: 1 - type: Transform - - uid: 5253 - components: - - pos: -55.5,18.5 - parent: 1 - type: Transform - - uid: 5254 - components: - - pos: -55.5,19.5 - parent: 1 - type: Transform - - uid: 5851 - components: - - pos: -14.5,44.5 - parent: 1 - type: Transform - - uid: 5852 - components: - - pos: -14.5,43.5 - parent: 1 - type: Transform - - uid: 5856 - components: - - pos: -14.5,39.5 - parent: 1 - type: Transform - - uid: 5857 - components: - - pos: -14.5,38.5 - parent: 1 - type: Transform - - uid: 5860 - components: - - pos: -14.5,35.5 - parent: 1 - type: Transform - - uid: 6272 - components: - - pos: -59.5,10.5 - parent: 1 - type: Transform - - uid: 6753 - components: - - rot: 1.5707963267948966 rad - pos: -44.5,34.5 - parent: 1 - type: Transform - - uid: 6754 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,34.5 - parent: 1 - type: Transform - - uid: 6755 - components: - - rot: 1.5707963267948966 rad - pos: -40.5,34.5 - parent: 1 - type: Transform - - uid: 6784 - components: - - rot: 1.5707963267948966 rad - pos: -42.5,48.5 - parent: 1 - type: Transform - - uid: 6794 - components: - - rot: 1.5707963267948966 rad - pos: -45.5,41.5 - parent: 1 - type: Transform - - uid: 6808 - components: - - pos: -40.5,53.5 - parent: 1 - type: Transform - - uid: 6820 - components: - - rot: 1.5707963267948966 rad - pos: -41.5,48.5 - parent: 1 - type: Transform - - uid: 6949 - components: - - pos: -41.5,53.5 - parent: 1 - type: Transform - - uid: 9008 - components: - - rot: 3.141592653589793 rad - pos: 24.5,38.5 - parent: 1 - type: Transform - - uid: 9009 - components: - - rot: 3.141592653589793 rad - pos: 24.5,41.5 - parent: 1 - type: Transform - - uid: 9018 - components: - - pos: -59.5,11.5 - parent: 1 - type: Transform - - uid: 10249 - components: - - rot: -1.5707963267948966 rad - pos: -34.5,-4.5 - parent: 1 - type: Transform - - uid: 10251 - components: - - rot: -1.5707963267948966 rad - pos: -32.5,-4.5 - parent: 1 - type: Transform - - uid: 10924 - components: - - pos: -64.5,43.5 - parent: 1 - type: Transform - - uid: 10925 - components: - - pos: -63.5,43.5 - parent: 1 - type: Transform - - uid: 10929 - components: - - pos: -61.5,43.5 - parent: 1 - type: Transform - - uid: 11934 - components: - - pos: -59.5,13.5 - parent: 1 - type: Transform - - uid: 13054 - components: - - pos: -59.5,14.5 - parent: 1 - type: Transform -- proto: WindowDirectional - entities: - - uid: 1229 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,25.5 - parent: 1 - type: Transform - - uid: 1632 - components: - - rot: -1.5707963267948966 rad - pos: 11.5,26.5 - parent: 1 - type: Transform - - uid: 1647 - components: - - pos: 19.5,0.5 - parent: 1 - type: Transform - - uid: 2695 - components: - - rot: 3.141592653589793 rad - pos: -25.5,30.5 - parent: 1 - type: Transform - - uid: 3133 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,15.5 - parent: 1 - type: Transform -- proto: WindowFrostedDirectional - entities: - - uid: 1225 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,30.5 - parent: 1 - type: Transform - - uid: 1410 - components: - - rot: 1.5707963267948966 rad - pos: 8.5,31.5 - parent: 1 - type: Transform - - uid: 1411 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,30.5 - parent: 1 - type: Transform - - uid: 1412 - components: - - rot: 1.5707963267948966 rad - pos: 10.5,31.5 - parent: 1 - type: Transform -- proto: WindowReinforcedDirectional - entities: - - uid: 1023 - components: - - rot: -1.5707963267948966 rad - pos: 31.5,3.5 - parent: 1 - type: Transform - - uid: 1024 - components: - - rot: -1.5707963267948966 rad - pos: 31.5,2.5 - parent: 1 - type: Transform - - uid: 1025 - components: - - rot: -1.5707963267948966 rad - pos: 31.5,1.5 - parent: 1 - type: Transform - - uid: 2309 - components: - - rot: 1.5707963267948966 rad - pos: -23.5,57.5 - parent: 1 - type: Transform - - uid: 2310 - components: - - pos: -23.5,57.5 - parent: 1 - type: Transform - - uid: 2333 - components: - - rot: 3.141592653589793 rad - pos: 7.5,13.5 - parent: 1 - type: Transform - - uid: 2334 - components: - - rot: 3.141592653589793 rad - pos: 9.5,13.5 - parent: 1 - type: Transform - - uid: 2335 - components: - - rot: 3.141592653589793 rad - pos: 11.5,13.5 - parent: 1 - type: Transform - - uid: 2336 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,13.5 - parent: 1 - type: Transform - - uid: 2337 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,12.5 - parent: 1 - type: Transform - - uid: 2338 - components: - - rot: 1.5707963267948966 rad - pos: 7.5,11.5 - parent: 1 - type: Transform - - uid: 2339 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,13.5 - parent: 1 - type: Transform - - uid: 2340 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,12.5 - parent: 1 - type: Transform - - uid: 2341 - components: - - rot: 1.5707963267948966 rad - pos: 9.5,11.5 - parent: 1 - type: Transform - - uid: 2786 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,8.5 - parent: 1 - type: Transform - - uid: 2790 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,55.5 - parent: 1 - type: Transform - - uid: 2801 - components: - - rot: -1.5707963267948966 rad - pos: -10.5,9.5 - parent: 1 - type: Transform - - uid: 2884 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,10.5 - parent: 1 - type: Transform - - uid: 4201 - components: - - rot: 3.141592653589793 rad - pos: -14.5,14.5 - parent: 1 - type: Transform - - uid: 4561 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,14.5 - parent: 1 - type: Transform - - uid: 4729 - components: - - rot: 1.5707963267948966 rad - pos: -14.5,12.5 - parent: 1 - type: Transform - - uid: 5569 - components: - - pos: -17.5,24.5 - parent: 1 - type: Transform - - uid: 5684 - components: - - pos: -15.5,24.5 - parent: 1 - type: Transform - - uid: 6658 - components: - - rot: 3.141592653589793 rad - pos: -21.5,34.5 - parent: 1 - type: Transform - - uid: 6659 - components: - - rot: 3.141592653589793 rad - pos: -20.5,34.5 - parent: 1 - type: Transform - - uid: 6660 - components: - - rot: 3.141592653589793 rad - pos: -19.5,34.5 - parent: 1 - type: Transform - - uid: 13368 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,56.5 - parent: 1 - type: Transform - - uid: 13369 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,55.5 - parent: 1 - type: Transform - - uid: 13371 - components: - - rot: 1.5707963267948966 rad - pos: -72.5,53.5 - parent: 1 - type: Transform - - uid: 13372 - components: - - pos: -73.5,53.5 - parent: 1 - type: Transform - - uid: 13373 - components: - - pos: -72.5,53.5 - parent: 1 - type: Transform - - uid: 13625 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,33.5 - parent: 1 - type: Transform - - uid: 13626 - components: - - rot: 1.5707963267948966 rad - pos: -59.5,31.5 - parent: 1 - type: Transform - - uid: 15126 - components: - - rot: -1.5707963267948966 rad - pos: -21.5,34.5 - parent: 1 - type: Transform - - uid: 15127 - components: - - pos: -21.5,34.5 - parent: 1 - type: Transform - - uid: 15128 - components: - - pos: -20.5,34.5 - parent: 1 - type: Transform - - uid: 15129 - components: - - pos: -19.5,34.5 - parent: 1 - type: Transform - - uid: 15130 - components: - - rot: 1.5707963267948966 rad - pos: -19.5,34.5 - parent: 1 - type: Transform - - uid: 15839 - components: - - rot: -1.5707963267948966 rad - pos: -25.5,54.5 - parent: 1 - type: Transform - - uid: 15909 - components: - - pos: -25.5,54.5 - parent: 1 - type: Transform -- proto: Wrench - entities: - - uid: 376 - components: - - pos: 2.4658198,-11.416069 - parent: 1 - type: Transform - - uid: 2378 - components: - - pos: 8.571079,33.55169 - parent: 1 - type: Transform - - uid: 5648 - components: - - pos: -24.486898,29.543127 - parent: 1 - type: Transform -- proto: YellowOxygenTank - entities: - - uid: 14198 - components: - - pos: -77.3013,42.445312 - parent: 1 - type: Transform -... +meta: + format: 6 + postmapinit: false +tilemap: + 0: Space + 2: FloorArcadeBlue2 + 7: FloorAsteroidSand + 11: FloorAsteroidTile + 15: FloorBlueCircuit + 18: FloorCarpetClown + 26: FloorDark + 27: FloorDarkDiagonal + 29: FloorDarkHerringbone + 31: FloorDarkMono + 33: FloorDarkPavement + 35: FloorDarkPlastic + 37: FloorDirt + 38: FloorEighties + 41: FloorFreezer + 42: FloorGlass + 44: FloorGrass + 51: FloorGreenCircuit + 55: FloorHydro + 59: FloorLino + 61: FloorMetalDiamond + 62: FloorMime + 67: FloorPlanetDirt + 70: FloorRGlass + 71: FloorReinforced + 73: FloorRockVault + 74: FloorShowroom + 83: FloorSteel + 85: FloorSteelCheckerLight + 88: FloorSteelDirty + 89: FloorSteelHerringbone + 93: FloorSteelPavement + 95: FloorTechMaint + 99: FloorWhite + 102: FloorWhiteHerringbone + 103: FloorWhiteMini + 109: FloorWood + 111: Lattice + 112: Plating + 113: PlatingAsteroid +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + - pos: 0.43985805,0.83991814 + parent: 5005 + type: Transform + - chunks: + -1,-1: + ind: -1,-1 + tiles: cAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAKBwAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAcAAAAAAACwAAAAAAcQAAAAAACwAAAAAAcQAAAAAACwAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAAcAAAAAAACwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAcAAAAAAACwAAAAAACwAAAAAAcQAAAAAACwAAAAAACwAAAAAAcQAAAAAABwAAAAAABwAAAAAABwAAAAAACwAAAAAAcQAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAcQAAAAAACwAAAAAACwAAAAAAcQAAAAAACwAAAAAAcAAAAAAACwAAAAAAcQAAAAAAcQAAAAAACwAAAAAAcQAAAAAAcQAAAAAABwAAAAABBwAAAAAABwAAAAABcAAAAAAACwAAAAAAcQAAAAAACwAAAAAAcQAAAAAACwAAAAAAcAAAAAAACwAAAAAACwAAAAAAcQAAAAAABwAAAAAABwAAAAAACwAAAAAACwAAAAAACwAAAAAACwAAAAAAcAAAAAAAcQAAAAAACwAAAAAACwAAAAAACwAAAAAAcQAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAEBwAAAAACCwAAAAAAcQAAAAAACwAAAAAACwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAMBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAGBwAAAAAAcQAAAAAAcQAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAHQAAAAACHQAAAAAAHQAAAAACcAAAAAAABwAAAAAIBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAcQAAAAAABwAAAAAAXwAAAAAAcAAAAAAAHQAAAAABHQAAAAADHQAAAAABcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAJBwAAAAAABwAAAAAABwAAAAAABwAAAAAACwAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAHQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAABwAAAAAACwAAAAAABwAAAAAFbQAAAAADcAAAAAAAYwAAAAABYwAAAAABYwAAAAABYwAAAAAAYwAAAAACYwAAAAABcAAAAAAAUwAAAAAAUwAAAAABUwAAAAAAUwAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAbQAAAAABcAAAAAAAYwAAAAADYwAAAAAAYwAAAAABYwAAAAAAYwAAAAAAYwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcQAAAAAAUwAAAAACbQAAAAADcAAAAAAAYwAAAAADYwAAAAADYwAAAAACYwAAAAABYwAAAAAAYwAAAAAAcAAAAAAAUwAAAAABcAAAAAAADwAAAAAADwAAAAAADwAAAAAAUwAAAAACUwAAAAAAbQAAAAAAbQAAAAADUwAAAAADUwAAAAADUwAAAAADUwAAAAABUwAAAAACUwAAAAACUwAAAAACUwAAAAADUwAAAAAADwAAAAAADwAAAAAADwAAAAAAUwAAAAABUwAAAAACbQAAAAACcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAADcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABDwAAAAAAcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: cAAAAAAAcAAAAAAAIQAAAAADGgAAAAABGgAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADDwAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAACKgAAAAAAGgAAAAAAGgAAAAAAUwAAAAABUwAAAAABUwAAAAAAUwAAAAABDwAAAAAAcAAAAAAAbQAAAAACbQAAAAACbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAADGgAAAAABGgAAAAACcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAADUwAAAAADcAAAAAAAbQAAAAAAbQAAAAAAbQAAAAADcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAACUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAAAUwAAAAAAUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAACcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAUwAAAAABcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAABcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAAD + version: 6 + 0,-1: + ind: 0,-1 + tiles: RwAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAARwAAAAAARwAAAAAARwAAAAAAcAAAAAAABwAAAAAABwAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAARwAAAAAARwAAAAAAcAAAAAAABwAAAAAABwAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAABwAAAAAAbwAAAAAAAAAAAAAAcAAAAAAARwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAACwAAAAAAcQAAAAAACwAAAAAAcQAAAAAACwAAAAAACwAAAAAAcAAAAAAABwAAAAAASQAAAAAASQAAAAAASQAAAAAASQAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAACwAAAAAACwAAAAAAcQAAAAAAcQAAAAAACwAAAAAACwAAAAAAcAAAAAAABwAAAAAIBwAAAAAABwAAAAAABwAAAAAFBwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAADCwAAAAAAcQAAAAAACwAAAAAACwAAAAAACwAAAAAAcQAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAADcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADCwAAAAAACwAAAAAACwAAAAAAcQAAAAAAcQAAAAAAcQAAAAAAcAAAAAAABwAAAAAABwAAAAABBwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcQAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAABBwAAAAAJcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAADbQAAAAAAbQAAAAABUwAAAAADUwAAAAABUwAAAAACOwAAAAAAOwAAAAAAOwAAAAAAGgAAAAADGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAABcAAAAAAAUwAAAAABUwAAAAAAUwAAAAAAOwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAADOwAAAAAAOwAAAAAAOwAAAAAA + version: 6 + 0,0: + ind: 0,0 + tiles: DwAAAAAAUwAAAAAAMwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAAAbQAAAAABUwAAAAACUwAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAADwAAAAAAUwAAAAABMwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAADcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAADwAAAAAAUwAAAAADMwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAACcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAAUwAAAAABUwAAAAABUwAAAAACcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAAAUwAAAAADUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAACGgAAAAABGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAGgAAAAADGgAAAAACGgAAAAADGgAAAAADGgAAAAABGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAAAGgAAAAABGgAAAAAAGgAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADGgAAAAABGgAAAAADcAAAAAAAYwAAAAACYwAAAAADYwAAAAABYwAAAAACYwAAAAABYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAADGgAAAAABGgAAAAAAcAAAAAAAYwAAAAABYwAAAAADYwAAAAACYwAAAAABYwAAAAAAYwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAA + version: 6 + -1,-2: + ind: -1,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAEBwAAAAADAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAGBwAAAAAABwAAAAAKcAAAAAAABwAAAAAIBwAAAAAAAAAAAAAABwAAAAAABwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAABwAAAAAABwAAAAAJBwAAAAAABwAAAAAABwAAAAAAcAAAAAAAcAAAAAAABwAAAAAIBwAAAAAABwAAAAAABwAAAAAABwAAAAAA + version: 6 + 0,-2: + ind: 0,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAABwAAAAALBwAAAAAABwAAAAAABwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAAABwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAABwAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAA + version: 6 + -2,-1: + ind: -2,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAJgAAAAAAJgAAAAAAcAAAAAAAcQAAAAAACwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAJgAAAAAAcAAAAAAAJgAAAAAAcAAAAAAACwAAAAAAcQAAAAAAcAAAAAAAcAAAAAAAIwAAAAAAIwAAAAABIwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAJgAAAAAAcAAAAAAAcAAAAAAACwAAAAAACwAAAAAAcAAAAAAAcAAAAAAAIwAAAAACIwAAAAAAIwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAcAAAAAAACwAAAAAAcQAAAAAAUwAAAAADcAAAAAAAIwAAAAAAIwAAAAADIwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcQAAAAAACwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAAAbQAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAAAbQAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAADbQAAAAACbQAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAAAbQAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + -2,0: + ind: -2,0 + tiles: UwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAUwAAAAACUwAAAAACUwAAAAADcAAAAAAAUwAAAAADUwAAAAABUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAACUwAAAAACUwAAAAADUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAADUwAAAAABUwAAAAADUwAAAAAAUwAAAAABUwAAAAABUwAAAAACUwAAAAABUwAAAAADcAAAAAAAUwAAAAAAUwAAAAADUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAOwAAAAAAbQAAAAAAbQAAAAACbQAAAAAAbQAAAAADbQAAAAACbQAAAAADbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACOwAAAAAAOwAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAADbQAAAAABbQAAAAACbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAADbQAAAAACbQAAAAABbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAACbQAAAAABbQAAAAAAbQAAAAADbQAAAAADbQAAAAACcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAACbQAAAAADbQAAAAADbQAAAAACbQAAAAADbQAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAbQAAAAABbQAAAAACbQAAAAADbQAAAAAAbQAAAAABbQAAAAADbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAABbQAAAAACbQAAAAADbQAAAAAAbQAAAAAAbQAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + 1,-1: + ind: 1,-1 + tiles: bwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAARwAAAAAARwAAAAAARwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAARwAAAAAARwAAAAAARwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAARwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAXQAAAAADXQAAAAACXQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAOwAAAAAAOwAAAAAAXQAAAAACXQAAAAACXQAAAAAAXQAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAAAAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAXQAAAAADXQAAAAAAXQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAbwAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: OwAAAAAAOwAAAAAAcAAAAAAAGwAAAAABGwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAGwAAAAACGwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAACXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAGwAAAAAAGwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAABcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAUwAAAAACUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAADcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAACUwAAAAAAUwAAAAADUwAAAAADUwAAAAADUwAAAAADcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAABUwAAAAACcAAAAAAAbwAAAAAAbwAAAAAAAgAAAAAAcAAAAAAAAgAAAAAAAgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAbwAAAAAAbwAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + 1,-2: + ind: 1,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAA + version: 6 + 1,1: + ind: 1,1 + tiles: EgAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAABcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAACUwAAAAABcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAADGgAAAAACGgAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAACGgAAAAABGgAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAABGgAAAAABcAAAAAAAbwAAAAAAAAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAABGgAAAAACGgAAAAABcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAGgAAAAADGgAAAAABGgAAAAACGgAAAAABcAAAAAAAbwAAAAAAAAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAACGgAAAAAAGgAAAAACcAAAAAAAbwAAAAAAAAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,0: + ind: 2,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,1: + ind: 2,1 + tiles: cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 0,1: + ind: 0,1 + tiles: GgAAAAADGgAAAAABGgAAAAAAGgAAAAADGgAAAAABcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAABYwAAAAACYwAAAAADYwAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAADGgAAAAACGgAAAAAAGgAAAAAAGgAAAAACcAAAAAAAYwAAAAADYwAAAAACYwAAAAAAYwAAAAADYwAAAAAAYwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAADYwAAAAADYwAAAAAAYwAAAAACYwAAAAAAYwAAAAADYwAAAAABYwAAAAACYwAAAAACYwAAAAABYwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAYwAAAAABYwAAAAACYwAAAAAAcAAAAAAAYwAAAAACYwAAAAADcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAADYwAAAAADYwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAYwAAAAADcAAAAAAAYwAAAAABYwAAAAABYwAAAAAAcAAAAAAAYwAAAAABYwAAAAAAYwAAAAADYwAAAAABYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAYwAAAAABYwAAAAADYwAAAAACYwAAAAAAYwAAAAAAcAAAAAAAYwAAAAACYwAAAAACYwAAAAACYwAAAAABYwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAYwAAAAADcAAAAAAAYwAAAAABYwAAAAADYwAAAAADYwAAAAADYwAAAAADYwAAAAADYwAAAAADYwAAAAADYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAACYwAAAAADYwAAAAAAYwAAAAABYwAAAAADYwAAAAADYwAAAAACYwAAAAABYwAAAAACYwAAAAAAYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAAAYwAAAAACYwAAAAABcAAAAAAAYwAAAAABYwAAAAAAYwAAAAACYwAAAAACYwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAcAAAAAAAYwAAAAADYwAAAAAAYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAABYwAAAAAAYwAAAAADYwAAAAACYwAAAAACYwAAAAABYwAAAAADYwAAAAADYwAAAAADYwAAAAACYwAAAAABUwAAAAACUwAAAAAAUwAAAAACYwAAAAAAYwAAAAACYwAAAAABYwAAAAACYwAAAAACYwAAAAABYwAAAAABYwAAAAABYwAAAAABYwAAAAABYwAAAAAAYwAAAAAAYwAAAAADcAAAAAAAUwAAAAAAUwAAAAADYwAAAAADYwAAAAABYwAAAAABYwAAAAADYwAAAAAAYwAAAAADcAAAAAAAYwAAAAACYwAAAAABYwAAAAACYwAAAAABYwAAAAADYwAAAAABcAAAAAAAUwAAAAADUwAAAAAAYwAAAAADcAAAAAAAYwAAAAAAYwAAAAABYwAAAAAAYwAAAAACcAAAAAAAYwAAAAADYwAAAAACYwAAAAABYwAAAAADYwAAAAAAYwAAAAADcAAAAAAAUwAAAAAAUwAAAAAD + version: 6 + -1,1: + ind: -1,1 + tiles: cAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAABYwAAAAABYwAAAAABYwAAAAACYwAAAAACcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAYwAAAAAAcAAAAAAAZwAAAAACZwAAAAABYwAAAAACcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAZwAAAAADZwAAAAACZwAAAAADYwAAAAADGgAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAZwAAAAACZwAAAAAAYwAAAAACGgAAAAACcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAZwAAAAABZwAAAAACZwAAAAABUwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAZwAAAAABcAAAAAAAZwAAAAACZwAAAAABUwAAAAADcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAYwAAAAADZwAAAAADZwAAAAAAZwAAAAADZwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAACZwAAAAABZwAAAAAAZwAAAAACZwAAAAACUwAAAAACUwAAAAADcAAAAAAAUwAAAAABUwAAAAABWQAAAAAAWQAAAAABWQAAAAABWQAAAAADWQAAAAACcAAAAAAAYwAAAAAAYwAAAAAAYwAAAAACYwAAAAABYwAAAAABUwAAAAADcAAAAAAAUwAAAAACUwAAAAADUwAAAAACWQAAAAACWQAAAAABWQAAAAAAWQAAAAABWQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAABUwAAAAACcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADWQAAAAAAWQAAAAADWQAAAAADWQAAAAAAWQAAAAADcAAAAAAAYwAAAAADYwAAAAADYwAAAAABYwAAAAADYwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAAAWQAAAAAAWQAAAAABWQAAAAADWQAAAAACWQAAAAAAcAAAAAAAYwAAAAACYwAAAAACYwAAAAACYwAAAAACYwAAAAACUwAAAAACcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAABUwAAAAADUwAAAAAAUwAAAAAAUwAAAAAAYwAAAAADYwAAAAABYwAAAAABYwAAAAACYwAAAAAAYwAAAAAA + version: 6 + 0,2: + ind: 0,2 + tiles: YwAAAAABcAAAAAAAYwAAAAADYwAAAAABYwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABYwAAAAAAYwAAAAAAYwAAAAACYwAAAAADYwAAAAABYwAAAAACYwAAAAACKgAAAAABKgAAAAAAKgAAAAACKgAAAAADKgAAAAAAYwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAACcAAAAAAAYwAAAAABYwAAAAACYwAAAAADcAAAAAAAYwAAAAAAYwAAAAABYwAAAAADYwAAAAADYwAAAAADYwAAAAABYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAZgAAAAADZgAAAAAAZgAAAAACZgAAAAAAZgAAAAADYwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAABcAAAAAAAcAAAAAAAYwAAAAABcAAAAAAAcAAAAAAAYwAAAAACZgAAAAABZgAAAAADZgAAAAACZgAAAAADZgAAAAAAYwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAAAYwAAAAADKgAAAAADYwAAAAACcAAAAAAAYwAAAAAAZgAAAAABZgAAAAACZgAAAAACZgAAAAACZgAAAAABYwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAYwAAAAAAcAAAAAAAYwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACcAAAAAAAcAAAAAAAKgAAAAAAYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAIQAAAAACIQAAAAACYwAAAAAAYwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAUwAAAAABUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAPQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAPQAAAAAAPQAAAAAAPQAAAAAAPQAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAPQAAAAAAPQAAAAAAPQAAAAAAPQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAABbQAAAAACbQAAAAABcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAADbQAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + -1,2: + ind: -1,2 + tiles: UwAAAAABUwAAAAABcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAAAUwAAAAACUwAAAAADcAAAAAAAYwAAAAABYwAAAAABYwAAAAAAYwAAAAAAYwAAAAAAUwAAAAADUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAACUwAAAAADUwAAAAADYwAAAAACYwAAAAACYwAAAAADYwAAAAADYwAAAAABYwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAYwAAAAACYwAAAAADYwAAAAADYwAAAAAAYwAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAACUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAIQAAAAACUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAADGgAAAAAAGgAAAAAAGgAAAAACGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAABUwAAAAACcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAACGgAAAAADGgAAAAABcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADGgAAAAABGgAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAADGgAAAAABGgAAAAADGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAADGgAAAAABGgAAAAADGgAAAAADGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAACGgAAAAADGgAAAAADcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAUwAAAAADUwAAAAABUwAAAAACUwAAAAABUwAAAAACUwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + 1,2: + ind: 1,2 + tiles: UwAAAAACUwAAAAACXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAADcAAAAAAAbQAAAAACcAAAAAAAbQAAAAADbQAAAAACbQAAAAADcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAABbQAAAAAAbQAAAAABbQAAAAABcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABJQAAAAACQwAAAAAAbQAAAAACbQAAAAACcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAAAbQAAAAABJQAAAAACJQAAAAACcAAAAAAAbQAAAAAAbQAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACQwAAAAAAcAAAAAAAbQAAAAACbQAAAAACcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAABbQAAAAADcAAAAAAAbQAAAAABbQAAAAABcAAAAAAAbQAAAAABcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAbQAAAAADbQAAAAABcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -2,2: + ind: -2,2 + tiles: cAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAAAUwAAAAACUwAAAAABXwAAAAAAUwAAAAABUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAABUwAAAAACUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAUwAAAAACLAAAAAAALAAAAAAALAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAGgAAAAACGgAAAAADcAAAAAAAGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAABUwAAAAACUwAAAAABcAAAAAAAGgAAAAADGgAAAAAAcAAAAAAAGgAAAAACGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACcAAAAAAAUwAAAAAAcAAAAAAAGgAAAAAAGgAAAAABGgAAAAADGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAADGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAUwAAAAABGgAAAAACGgAAAAAAcAAAAAAAGgAAAAADGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAADGgAAAAABGgAAAAACcAAAAAAAcAAAAAAAUwAAAAACGgAAAAABGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAABGgAAAAAAcAAAAAAAUwAAAAABcAAAAAAAGgAAAAAAGgAAAAADcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAABGgAAAAADGgAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAABGgAAAAAAGgAAAAAAcAAAAAAAUwAAAAACUwAAAAACVQAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAABGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAACVQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAVQAAAAABcAAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAAAbQAAAAAAbQAAAAADcAAAAAAAUwAAAAAAUwAAAAABVQAAAAAAcAAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAACbQAAAAAAbQAAAAAAUwAAAAABUwAAAAADUwAAAAAAVQAAAAADUwAAAAACKQAAAAAAKQAAAAAAKQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAACbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAVQAAAAADcAAAAAAAKQAAAAAAKQAAAAAAKQAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAACbQAAAAAAbQAAAAACcAAAAAAAUwAAAAAAcAAAAAAA + version: 6 + -2,1: + ind: -2,1 + tiles: cAAAAAAAXwAAAAAAcAAAAAAAbQAAAAAAbQAAAAACbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAADbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAACbQAAAAABbQAAAAADbQAAAAADbQAAAAADbQAAAAABbQAAAAABcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAALAAAAAAALAAAAAAAcAAAAAAAbQAAAAADbQAAAAACbQAAAAACbQAAAAABbQAAAAADbQAAAAAAbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAADbQAAAAAAbQAAAAABcAAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAGgAAAAAAGgAAAAADGgAAAAADbQAAAAADbQAAAAADbQAAAAADcAAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAJgAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABGgAAAAACbQAAAAACbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAADGgAAAAABbQAAAAABbQAAAAAAbQAAAAACcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADcAAAAAAAUwAAAAADcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAUwAAAAACGgAAAAAAbQAAAAABbQAAAAADbQAAAAABcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAACGgAAAAAAbQAAAAACbQAAAAABcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAAAGgAAAAAAbQAAAAACbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAUwAAAAABUwAAAAACUwAAAAADXwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAUwAAAAABUwAAAAADXwAAAAAAXwAAAAAAUwAAAAACUwAAAAABUwAAAAAB + version: 6 + -2,-2: + ind: -2,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAA + version: 6 + -3,0: + ind: -3,0 + tiles: cAAAAAAAUwAAAAABUwAAAAADUwAAAAAAUwAAAAACcAAAAAAAUwAAAAACUwAAAAABUwAAAAACUwAAAAADUwAAAAAAUwAAAAABUwAAAAACUwAAAAABUwAAAAABUwAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAACUwAAAAABUwAAAAACUwAAAAABUwAAAAABUwAAAAABUwAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAAAUwAAAAABcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAABcAAAAAAAUwAAAAACUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAADUwAAAAABUwAAAAACUwAAAAAAUwAAAAABUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAADUwAAAAABUwAAAAADUwAAAAABUwAAAAADUwAAAAADcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAADUwAAAAADUwAAAAABUwAAAAAAUwAAAAADUwAAAAAAUwAAAAACcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADUwAAAAADcAAAAAAAUwAAAAADcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAWAAAAAAAWAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAACUwAAAAAAUwAAAAABUwAAAAADcAAAAAAAbQAAAAABbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAADcAAAAAAAUwAAAAABUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAACbQAAAAACcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAA + version: 6 + -3,1: + ind: -3,1 + tiles: cAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAWAAAAAAAcAAAAAAAUwAAAAADcAAAAAAALAAAAAAALAAAAAAALAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAWAAAAAAAWAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAALAAAAAAALAAAAAAALAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAALAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAAAGgAAAAACcAAAAAAAGgAAAAABcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADGgAAAAADGgAAAAAAGgAAAAACGgAAAAADUwAAAAADcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAGgAAAAABGgAAAAAAGgAAAAAAGgAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADGgAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACGgAAAAACGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAACUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAACUwAAAAABUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAA + version: 6 + -3,2: + ind: -3,2 + tiles: cAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAACUwAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAACUwAAAAABUwAAAAADUwAAAAACXwAAAAAAUwAAAAAAUwAAAAACcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAADUwAAAAACUwAAAAACUwAAAAADUwAAAAABUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAACbQAAAAADbQAAAAAAbQAAAAADbQAAAAACbQAAAAAAbQAAAAACbQAAAAADGgAAAAACGgAAAAACGgAAAAADcAAAAAAAUwAAAAADcAAAAAAAbQAAAAACbQAAAAABbQAAAAACcAAAAAAAbQAAAAAAbQAAAAADbQAAAAABbQAAAAADbQAAAAACbQAAAAABGgAAAAACGgAAAAAAGgAAAAADUwAAAAACUwAAAAABcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAACbQAAAAABbQAAAAADGgAAAAADGgAAAAACGgAAAAADcAAAAAAAUwAAAAADcAAAAAAAbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAAAbQAAAAADbQAAAAAAbQAAAAAAbQAAAAABGgAAAAABGgAAAAADGgAAAAADcAAAAAAAUwAAAAAAcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAAAbQAAAAAAbQAAAAACbQAAAAABbQAAAAADcAAAAAAAGgAAAAACUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAADbQAAAAABbQAAAAADbQAAAAACGgAAAAACGgAAAAABUwAAAAADUwAAAAABcAAAAAAANwAAAAAANwAAAAAANwAAAAAANwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAGgAAAAADGgAAAAACGgAAAAACGgAAAAACGgAAAAADcAAAAAAAcAAAAAAAVQAAAAADVQAAAAAAVQAAAAACVQAAAAADVQAAAAADVQAAAAACVQAAAAABUwAAAAABUwAAAAADGgAAAAADGgAAAAAANwAAAAAANwAAAAAANwAAAAAAGgAAAAADGgAAAAADVQAAAAABVQAAAAACVQAAAAABVQAAAAADVQAAAAACVQAAAAADVQAAAAAAUwAAAAADUwAAAAABGgAAAAACGgAAAAADNwAAAAAANwAAAAAANwAAAAAAGgAAAAAAGgAAAAACVQAAAAABVQAAAAACVQAAAAABVQAAAAADVQAAAAADVQAAAAABVQAAAAACUwAAAAACcAAAAAAAcAAAAAAAGgAAAAAANwAAAAAANwAAAAAANwAAAAAAGgAAAAABGgAAAAACVQAAAAADVQAAAAABVQAAAAADVQAAAAABVQAAAAACVQAAAAAAVQAAAAADUwAAAAACUwAAAAACGgAAAAACGgAAAAABGgAAAAACGgAAAAAAGgAAAAAAGgAAAAABGgAAAAAAVQAAAAADVQAAAAADVQAAAAABVQAAAAACVQAAAAADVQAAAAAAVQAAAAADUwAAAAACUwAAAAABcAAAAAAAGgAAAAACGgAAAAABGgAAAAADGgAAAAADGgAAAAABcAAAAAAAVQAAAAAAVQAAAAAAVQAAAAACVQAAAAABVQAAAAABVQAAAAAAVQAAAAAB + version: 6 + -3,-1: + ind: -3,-1 + tiles: bwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAABcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABUwAAAAAAUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAACUwAAAAABUwAAAAADUwAAAAAAXwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAADUwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAADUwAAAAABUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADcAAAAAAAUwAAAAAAUwAAAAADUwAAAAABUwAAAAABUwAAAAAAUwAAAAACUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAbQAAAAADbQAAAAACbQAAAAAAbQAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAADbQAAAAAAbQAAAAADcAAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAACcAAAAAAAUwAAAAABcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACcAAAAAAAbQAAAAAAbQAAAAAAbQAAAAABcAAAAAAAbQAAAAAAUwAAAAABUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAABUwAAAAABUwAAAAADcAAAAAAAbQAAAAAAbQAAAAABbQAAAAADbQAAAAACcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAC + version: 6 + -4,-1: + ind: -4,-1 + tiles: cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAABUwAAAAADUwAAAAACcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAbQAAAAADcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAbQAAAAADbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAADcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAACcAAAAAAAbQAAAAACcAAAAAAAbQAAAAACbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + -4,0: + ind: -4,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAABUwAAAAAAUwAAAAADUwAAAAACUwAAAAABUwAAAAABUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAAAUwAAAAAAUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAAAcAAAAAAAWAAAAAAAWAAAAAAAWAAAAAAAUwAAAAAAUwAAAAACWAAAAAAAWAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAADcAAAAAAAbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAACbQAAAAAAbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAADcAAAAAAAbQAAAAABbQAAAAAAbQAAAAAAbQAAAAAAbQAAAAABbQAAAAAAbQAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADcAAAAAAAbQAAAAAAbQAAAAADbQAAAAACbQAAAAADbQAAAAAAbQAAAAADbQAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADbQAAAAABbQAAAAABbQAAAAAAbQAAAAACcAAAAAAAbQAAAAACbQAAAAABbQAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACbQAAAAAAbQAAAAABbQAAAAACbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADbQAAAAAAbQAAAAABbQAAAAABbQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAABbQAAAAACbQAAAAADbQAAAAADbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + -4,1: + ind: -4,1 + tiles: XwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADbQAAAAACbQAAAAADbQAAAAACbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAGgAAAAAAGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAACGgAAAAABcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAGgAAAAABGgAAAAABGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAADGgAAAAADGgAAAAACGgAAAAACGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAAAGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAABcAAAAAAAIQAAAAADIQAAAAAAIQAAAAABIQAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAIQAAAAABIQAAAAAAIQAAAAADIQAAAAADcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAIQAAAAADIQAAAAABIQAAAAAAIQAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAIQAAAAACcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADcAAAAAAAUwAAAAADUwAAAAACUwAAAAAAUwAAAAAAWAAAAAAAUwAAAAACUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACcAAAAAAAUwAAAAAAUwAAAAADUwAAAAABUwAAAAAAUwAAAAAAWAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAABUwAAAAAAUwAAAAADUwAAAAADUwAAAAABUwAAAAADUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAAAUwAAAAABcAAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAACUwAAAAACWAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + -4,2: + ind: -4,2 + tiles: UwAAAAACUwAAAAADUwAAAAABUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABcAAAAAAAUwAAAAACUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAACUwAAAAADcAAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAANwAAAAAANwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAACNwAAAAAANwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAACNwAAAAAANwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAABNwAAAAAANwAAAAAAcAAAAAAAUwAAAAADcAAAAAAASgAAAAAAUwAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABGgAAAAADGgAAAAACcAAAAAAAUwAAAAACSgAAAAAAcAAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACSgAAAAAASgAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAASgAAAAAASgAAAAAAcAAAAAAAUwAAAAAASgAAAAAAUwAAAAACSgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAASgAAAAAASgAAAAAASgAAAAAAcAAAAAAAUwAAAAACSgAAAAAAUwAAAAADUwAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAACSgAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADSgAAAAAAUwAAAAAASgAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAADWAAAAAAA + version: 6 + -5,-1: + ind: -5,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAUwAAAAADUwAAAAABUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAUwAAAAACbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAADUwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAABUwAAAAABUwAAAAACUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAACbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -5,0: + ind: -5,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAABUwAAAAACbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAACbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAGgAAAAACGgAAAAAAGgAAAAADGgAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAGgAAAAADGgAAAAACGgAAAAAAGgAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAGgAAAAAAGgAAAAADGgAAAAACGgAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAGgAAAAABGgAAAAADGgAAAAAAGgAAAAACcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAABUwAAAAAAUwAAAAACUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + -2,3: + ind: -2,3 + tiles: cAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbQAAAAACbQAAAAADbQAAAAAAbQAAAAADcAAAAAAAUwAAAAACcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAARwAAAAAARwAAAAAARwAAAAAARwAAAAAAcAAAAAAAGgAAAAAAGgAAAAADGgAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAARwAAAAAAGgAAAAABGgAAAAABGgAAAAADRwAAAAAAGgAAAAADGgAAAAABGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAARwAAAAAAGgAAAAACRgAAAAAAGgAAAAACcAAAAAAAGgAAAAACGgAAAAACGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAADwAAAAAAGgAAAAACRgAAAAADGgAAAAACcAAAAAAAGgAAAAAAGgAAAAABGgAAAAADcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAARwAAAAAAGgAAAAAAGgAAAAAAGgAAAAACcAAAAAAAGgAAAAABGgAAAAACGgAAAAABcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABGgAAAAAAGgAAAAADGgAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAAAUwAAAAABUwAAAAADGgAAAAADGgAAAAADGgAAAAACbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAAAcAAAAAAAGgAAAAAAGgAAAAACbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAADUwAAAAABUwAAAAABUwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAAB + version: 6 + -1,3: + ind: -1,3 + tiles: cAAAAAAAUwAAAAAAUwAAAAABUwAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAGgAAAAADGgAAAAADcAAAAAAAUwAAAAADUwAAAAABUwAAAAABUwAAAAABUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAEgAAAAAAEgAAAAAAGgAAAAABGgAAAAABcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAACUwAAAAADUwAAAAAAUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAAAGgAAAAACUwAAAAABUwAAAAACUwAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAGgAAAAACGgAAAAABcAAAAAAAUwAAAAAAUwAAAAADUwAAAAAAUwAAAAADUwAAAAADUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAGgAAAAADGgAAAAABcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAGgAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAbQAAAAACcAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAAADGgAAAAADUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAGgAAAAADGgAAAAADGgAAAAACbQAAAAAAbQAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAGgAAAAAAGgAAAAAAUwAAAAABUwAAAAABUwAAAAADcAAAAAAAGgAAAAABGgAAAAAAGgAAAAAAbQAAAAABbQAAAAACcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAGgAAAAACcAAAAAAAUwAAAAADUwAAAAADUwAAAAACcAAAAAAAGgAAAAABGgAAAAAAGgAAAAABbQAAAAADbQAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAUwAAAAACUwAAAAACUwAAAAACUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAA + version: 6 + 0,3: + ind: 0,3 + tiles: cAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAEgAAAAAAcAAAAAAAbQAAAAABbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAADcAAAAAAAbQAAAAABbQAAAAACbQAAAAABEgAAAAAAcAAAAAAAbQAAAAADcAAAAAAAbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAABcAAAAAAAbQAAAAAAbQAAAAADbQAAAAACEgAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAbQAAAAACbQAAAAACbQAAAAACEgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,3: + ind: 1,3 + tiles: cAAAAAAAbQAAAAAAbQAAAAABcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbQAAAAABbQAAAAADcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAbQAAAAACbQAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAbQAAAAABbQAAAAACcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAbQAAAAADbQAAAAADcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -1,4: + ind: -1,4 + tiles: UwAAAAABUwAAAAABUwAAAAADUwAAAAACcAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -2,4: + ind: -2,4 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAABUwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -3,3: + ind: -3,3 + tiles: UwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAABUwAAAAABcAAAAAAAUwAAAAACcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAADcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAADcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAACGgAAAAABcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAGgAAAAADGgAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAGgAAAAABGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAGgAAAAABGgAAAAADGgAAAAACUwAAAAACUwAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAGgAAAAABGgAAAAABGgAAAAABGgAAAAADUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAGgAAAAACcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -4,3: + ind: -4,3 + tiles: XwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAWAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAACUwAAAAADUwAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAABUwAAAAABUwAAAAABUwAAAAACcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAACUwAAAAABUwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAADUwAAAAACUwAAAAAAUwAAAAACUwAAAAABUwAAAAAAUwAAAAABUwAAAAABUwAAAAADUwAAAAADUwAAAAACUwAAAAACUwAAAAADUwAAAAAAcAAAAAAAUwAAAAADUwAAAAABUwAAAAAAUwAAAAABUwAAAAACcAAAAAAAUwAAAAAAUwAAAAABUwAAAAAAUwAAAAADUwAAAAADUwAAAAACUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAABUwAAAAAAUwAAAAABUwAAAAACUwAAAAAAUwAAAAACUwAAAAADUwAAAAACUwAAAAACUwAAAAADUwAAAAABUwAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABUwAAAAACUwAAAAAAUwAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAGgAAAAADcAAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAACUwAAAAABUwAAAAADUwAAAAADUwAAAAABUwAAAAACUwAAAAADUwAAAAACUwAAAAADcAAAAAAAGgAAAAAAGgAAAAABcAAAAAAAGgAAAAACGgAAAAACGgAAAAABcAAAAAAAUwAAAAAAUwAAAAACUwAAAAACUwAAAAADUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAACcAAAAAAAGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAADcAAAAAAAGgAAAAAAGgAAAAACHwAAAAADUwAAAAADUwAAAAAAUwAAAAACUwAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAADUwAAAAAAUwAAAAADUwAAAAABUwAAAAAAcAAAAAAAGgAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAACUwAAAAABUwAAAAADUwAAAAABUwAAAAABUwAAAAABUwAAAAACUwAAAAAAUwAAAAABUwAAAAADGgAAAAADGgAAAAADAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAABcAAAAAAAGgAAAAACAAAAAAAAcAAAAAAAbQAAAAACbQAAAAACbQAAAAAAbQAAAAAAcAAAAAAAbQAAAAACbQAAAAABbQAAAAABcAAAAAAAUwAAAAADUwAAAAABUwAAAAACcAAAAAAAcAAAAAAA + version: 6 + -4,-2: + ind: -4,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAA + version: 6 + -3,-2: + ind: -3,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -5,2: + ind: -5,2 + tiles: UwAAAAABUwAAAAADUwAAAAADUwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAADcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACUwAAAAAAUwAAAAAAUwAAAAACUwAAAAADUwAAAAACUwAAAAACUwAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAADUwAAAAAAUwAAAAACUwAAAAABUwAAAAACUwAAAAABUwAAAAACUwAAAAABUwAAAAACUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAUwAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAABUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAAAbQAAAAABbQAAAAACbQAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAACbQAAAAABbQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAABbQAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAABbQAAAAABcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbQAAAAADbQAAAAABbQAAAAABbQAAAAABcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbQAAAAACbQAAAAABbQAAAAADcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAUwAAAAAC + version: 6 + -5,3: + ind: -5,3 + tiles: bwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAOwAAAAAAOwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAcAAAAAAAOwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAABbwAAAAAAcAAAAAAAGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABbwAAAAAAcAAAAAAAGgAAAAACGgAAAAADGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACbwAAAAAAcAAAAAAAGgAAAAABGgAAAAAAGgAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAABbwAAAAAAcAAAAAAAGgAAAAAAGgAAAAABGgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAA + version: 6 + -3,4: + ind: -3,4 + tiles: UwAAAAADUwAAAAADUwAAAAABUwAAAAADUwAAAAABUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAcAAAAAAAUwAAAAACUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -4,4: + ind: -4,4 + tiles: AAAAAAAAcAAAAAAAbQAAAAABbQAAAAADbQAAAAABbQAAAAAAcAAAAAAAbQAAAAABbQAAAAADbQAAAAABcAAAAAAAUwAAAAADUwAAAAAAUwAAAAACUwAAAAABUwAAAAACbwAAAAAAcAAAAAAAbQAAAAADbQAAAAABbQAAAAABbQAAAAAAcAAAAAAAbQAAAAADbQAAAAACbQAAAAACcAAAAAAAUwAAAAACUwAAAAACUwAAAAAAUwAAAAAAUwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAA + version: 6 + -4,5: + ind: -4,5 + tiles: AAAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACcAAAAAAABwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAABwAAAAAGcAAAAAAALAAAAAAAUwAAAAADcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAUwAAAAABcAAAAAAAUwAAAAADUwAAAAADUwAAAAABcAAAAAAAUwAAAAABcAAAAAAABwAAAAAAcAAAAAAALAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAABwAAAAAAcAAAAAAALAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAADcAAAAAAABwAAAAABcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACUwAAAAACcAAAAAAAUwAAAAADSgAAAAAAcAAAAAAASgAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAABwAAAAAAAAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAACUwAAAAABcAAAAAAABwAAAAAAbwAAAAAAcAAAAAAAUwAAAAABUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADcAAAAAAABwAAAAAAAAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAUwAAAAACUwAAAAADUwAAAAABUwAAAAABUwAAAAAAcAAAAAAAUwAAAAABUwAAAAADUwAAAAABcAAAAAAAcAAAAAAABwAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAUwAAAAABcAAAAAAABwAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAADBwAAAAAMBwAAAAAABwAAAAAHBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAIBwAAAAAJBwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -3,5: + ind: -3,5 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -5,5: + ind: -5,5 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -5,1: + ind: -5,1 + tiles: bwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAAAUwAAAAADUwAAAAADUwAAAAADcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAADUwAAAAABUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAUwAAAAACcAAAAAAAUwAAAAACUwAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAABUwAAAAADUwAAAAABUwAAAAACUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAACUwAAAAABUwAAAAAAUwAAAAACcAAAAAAAUwAAAAABUwAAAAADUwAAAAADUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAADUwAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAcAAAAAAAcAAAAAAAUwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAUwAAAAABcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAABcAAAAAAAcAAAAAAAUwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAABcAAAAAAAcAAAAAAAUwAAAAACXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAACcAAAAAAAcAAAAAAA + version: 6 + -6,1: + ind: -6,1 + tiles: AAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAUwAAAAABUwAAAAACUwAAAAADbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAADUwAAAAAAUwAAAAAAUwAAAAABUwAAAAABUwAAAAABAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAACcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAADcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAUwAAAAABUwAAAAAAUwAAAAACUwAAAAADUwAAAAADUwAAAAABbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAXwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAACUwAAAAABUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAXwAAAAAAXwAAAAAAXwAAAAAAcAAAAAAAUwAAAAADUwAAAAACUwAAAAACbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAAC + version: 6 + -6,2: + ind: -6,2 + tiles: bwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAADUwAAAAADUwAAAAADbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAUwAAAAABUwAAAAABUwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAA + version: 6 + -7,1: + ind: -7,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAA + version: 6 + -7,2: + ind: -7,2 + tiles: bwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAcAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -6,3: + ind: -6,3 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -5,4: + ind: -5,4 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -7,0: + ind: -7,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -6,0: + ind: -6,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAbwAAAAAAAAAAAAAA + version: 6 + 2,-1: + ind: 2,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,2: + ind: 2,2 + tiles: bwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + type: MapGrid + - type: Broadphase + - bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: {} + type: Fixtures + - type: OccluderTree + - type: Shuttle + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: + version: 2 + nodes: + - node: + color: '#DE3A3A96' + id: Bot + decals: + 7285: -43,66 + - node: + color: '#52B4E996' + id: BotGreyscale + decals: + 6936: 25,28 + 6939: 28,28 + - node: + color: '#9FED5896' + id: BotGreyscale + decals: + 6940: 25,26 + 6941: 25,25 + - node: + color: '#A4610696' + id: BotGreyscale + decals: + 6943: 28,25 + - node: + color: '#D381C996' + id: BotGreyscale + decals: + 6942: 28,26 + - node: + color: '#DE3A3A96' + id: BotGreyscale + decals: + 6937: 26,28 + - node: + color: '#EFB34196' + id: BotGreyscale + decals: + 6938: 27,28 + - node: + color: '#A46106FF' + id: BotLeft + decals: + 7159: -45,-11 + 7160: -45,-12 + 7161: -44,-12 + 7162: -44,-11 + 7163: -43,-11 + 7164: -43,-12 + 7165: -42,-11 + 7166: -42,-12 + - node: + color: '#A46106FF' + id: Box + decals: + 2154: -11,56 + - node: + color: '#EFB341FF' + id: Box + decals: + 2152: -10,54 + - node: + color: '#334E6DC8' + id: BoxGreyscale + decals: + 2156: -9,56 + - node: + color: '#334E6DFF' + id: BoxGreyscale + decals: + 2155: -8,55 + - node: + color: '#52B4E9FF' + id: BoxGreyscale + decals: + 2158: -10,56 + - node: + color: '#D381C9FF' + id: BoxGreyscale + decals: + 2153: -11,54 + - node: + color: '#DE3A3AFF' + id: BoxGreyscale + decals: + 2157: -9,54 + - node: + color: '#D381C9FF' + id: BrickTileSteelBox + decals: + 13: -13,-7 + 63: -11,1 + 64: 0,-2 + - node: + color: '#52B4E9FF' + id: BrickTileSteelCornerNe + decals: + 2674: 4,17 + - node: + color: '#D381C9FF' + id: BrickTileSteelCornerNe + decals: + 8: -12,-8 + 62: -12,2 + - node: + color: '#52B4E9FF' + id: BrickTileSteelCornerNw + decals: + 2675: -2,17 + 2705: 2,40 + - node: + color: '#D381C9FF' + id: BrickTileSteelCornerNw + decals: + 7: -14,-8 + - node: + color: '#52B4E9FF' + id: BrickTileSteelCornerSe + decals: + 2616: 16,28 + 2676: 4,14 + - node: + color: '#D381C9FF' + id: BrickTileSteelCornerSe + decals: + 10: -12,-9 + 61: -12,0 + 70: 2,-3 + - node: + color: '#52B4E9FF' + id: BrickTileSteelCornerSw + decals: + 2613: 14,28 + 2677: -2,14 + - node: + color: '#D381C9FF' + id: BrickTileSteelCornerSw + decals: + 9: -14,-9 + 69: 1,-3 + - node: + color: '#52B4E9FF' + id: BrickTileSteelEndN + decals: + 2713: 0,39 + - node: + color: '#52B4E9FF' + id: BrickTileSteelLineE + decals: + 2617: 16,29 + 2678: 4,15 + 2679: 4,16 + 2698: 4,37 + 2699: 4,38 + 2700: 4,39 + - node: + color: '#D381C9FF' + id: BrickTileSteelLineE + decals: + 59: -12,1 + 65: 2,-1 + 66: 2,-2 + - node: + color: '#52B4E9FF' + id: BrickTileSteelLineN + decals: + 2680: -1,17 + 2681: 0,17 + 2682: 1,17 + 2683: 2,17 + 2684: 2,17 + 2685: 3,17 + 2701: 3,40 + - node: + color: '#D381C9FF' + id: BrickTileSteelLineN + decals: + 11: -13,-8 + 58: -13,2 + - node: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + decals: + 0: -13,-4 + 1: -12,-4 + 2: -11,-4 + 3: -10,-4 + - node: + color: '#52B4E9FF' + id: BrickTileSteelLineS + decals: + 2615: 15,28 + 2688: -1,14 + 2689: 0,14 + 2690: 1,14 + 2691: 2,14 + 2692: 3,14 + 2702: 3,36 + - node: + color: '#D381C9FF' + id: BrickTileSteelLineS + decals: + 12: -13,-9 + 60: -13,0 + - node: + color: '#52B4E9FF' + id: BrickTileSteelLineW + decals: + 2614: 14,29 + 2686: -2,16 + 2687: -2,15 + 2703: 2,37 + 2704: 2,38 + - node: + color: '#D381C9FF' + id: BrickTileSteelLineW + decals: + 67: 1,-1 + 68: 1,-2 + - node: + color: '#334E6DFF' + id: BrickTileWhiteCornerNe + decals: + 5525: -8,57 + 5526: -7,56 + - node: + color: '#52B4E9FF' + id: BrickTileWhiteCornerNe + decals: + 2694: 11,33 + - node: + color: '#9FED58FF' + id: BrickTileWhiteCornerNe + decals: + 2634: 11,13 + 2635: 9,13 + 2636: 7,13 + - node: + color: '#A46106FF' + id: BrickTileWhiteCornerNe + decals: + 722: -37,1 + 747: -44,-7 + - node: + color: '#D381C9FF' + id: BrickTileWhiteCornerNe + decals: + 43: -1,-2 + 78: -3,-3 + - node: + color: '#DE3A3AFF' + id: BrickTileWhiteCornerNe + decals: + 3351: -42,65 + - node: + color: '#EFB341FF' + id: BrickTileWhiteCornerNe + decals: + 4225: -70,31 + - node: + color: '#334E6DC8' + id: BrickTileWhiteCornerNw + decals: + 2159: -13,57 + - node: + color: '#334E6DFF' + id: BrickTileWhiteCornerNw + decals: + 2160: -13,57 + - node: + color: '#52B4E9FF' + id: BrickTileWhiteCornerNw + decals: + 2693: 7,33 + - node: + color: '#9FED58FF' + id: BrickTileWhiteCornerNw + decals: + 2631: 6,13 + 2632: 8,13 + 2633: 10,13 + - node: + color: '#A46106FF' + id: BrickTileWhiteCornerNw + decals: + 721: -39,1 + 746: -46,-7 + - node: + color: '#D381C9FF' + id: BrickTileWhiteCornerNw + decals: + 41: -14,-2 + 42: -10,2 + 80: -5,-3 + - node: + color: '#DE3A3AFF' + id: BrickTileWhiteCornerNw + decals: + 3352: -44,65 + - node: + color: '#EFB341FF' + id: BrickTileWhiteCornerNw + decals: + 4208: -75,17 + 4211: -68,31 + - node: + color: '#334E6DFF' + id: BrickTileWhiteCornerSe + decals: + 2161: -7,54 + 2162: -8,53 + - node: + color: '#9FED58FF' + id: BrickTileWhiteCornerSe + decals: + 2628: 7,11 + 2629: 9,11 + 2630: 11,11 + - node: + color: '#A46106FF' + id: BrickTileWhiteCornerSe + decals: + 720: -37,0 + 745: -44,-8 + - node: + color: '#D381C9FF' + id: BrickTileWhiteCornerSe + decals: + 79: -3,-4 + - node: + color: '#DE3A3AFF' + id: BrickTileWhiteCornerSe + decals: + 3353: -42,61 + - node: + color: '#EFB341FF' + id: BrickTileWhiteCornerSe + decals: + 4212: -64,25 + - node: + color: '#334E6DFF' + id: BrickTileWhiteCornerSw + decals: + 2163: -13,53 + - node: + color: '#9FED58FF' + id: BrickTileWhiteCornerSw + decals: + 2637: 6,11 + 2638: 8,11 + 2639: 10,11 + - node: + color: '#A46106FF' + id: BrickTileWhiteCornerSw + decals: + 719: -39,0 + 748: -46,-8 + - node: + color: '#D381C9FF' + id: BrickTileWhiteCornerSw + decals: + 44: -7,-6 + 81: -5,-4 + - node: + color: '#DE3A3AFF' + id: BrickTileWhiteCornerSw + decals: + 3354: -44,61 + - node: + color: '#EFB341FF' + id: BrickTileWhiteCornerSw + decals: + 4209: -75,15 + 4210: -68,25 + - node: + color: '#D381C9FF' + id: BrickTileWhiteEndE + decals: + 57: -6,2 + - node: + color: '#334E6DFF' + id: BrickTileWhiteInnerNe + decals: + 5527: -8,56 + - node: + color: '#A4610696' + id: BrickTileWhiteInnerNe + decals: + 6947: 27,24 + - node: + color: '#D381C9FF' + id: BrickTileWhiteInnerNe + decals: + 45: -7,-2 + - node: + color: '#9FED5896' + id: BrickTileWhiteInnerNw + decals: + 6955: 26,24 + - node: + color: '#D381C9FF' + id: BrickTileWhiteInnerNw + decals: + 48: -10,-2 + 56: -14,-4 + - node: + color: '#334E6DFF' + id: BrickTileWhiteInnerSe + decals: + 2174: -8,54 + 2187: -20,62 + - node: + color: '#D381C996' + id: BrickTileWhiteInnerSe + decals: + 6951: 27,27 + - node: + color: '#D381C9FF' + id: BrickTileWhiteInnerSe + decals: + 46: -9,-3 + 49: -7,2 + - node: + color: '#334E6DFF' + id: BrickTileWhiteInnerSw + decals: + 2186: -14,62 + - node: + color: '#9FED5896' + id: BrickTileWhiteInnerSw + decals: + 6948: 26,27 + - node: + color: '#D381C9FF' + id: BrickTileWhiteInnerSw + decals: + 47: -7,-3 + - node: + color: '#334E6DFF' + id: BrickTileWhiteLineE + decals: + 2164: -7,55 + 2175: -20,59 + 2176: -20,60 + 2177: -20,61 + - node: + color: '#9FED58FF' + id: BrickTileWhiteLineE + decals: + 2640: 7,12 + 2641: 9,12 + 2645: 11,12 + 7329: -12,15 + 7330: -12,14 + - node: + color: '#A4610696' + id: BrickTileWhiteLineE + decals: + 6946: 27,25 + - node: + color: '#D381C996' + id: BrickTileWhiteLineE + decals: + 6952: 27,26 + - node: + color: '#D381C9FF' + id: BrickTileWhiteLineE + decals: + 24: -7,-1 + 25: -7,0 + 26: -7,1 + 27: -1,-3 + 28: -1,-4 + 29: -1,-5 + - node: + color: '#DE3A3AFF' + id: BrickTileWhiteLineE + decals: + 3344: -42,64 + 3345: -42,63 + 3346: -42,62 + - node: + color: '#EFB341FF' + id: BrickTileWhiteLineE + decals: + 4213: -64,26 + 4214: -64,27 + 4215: -64,28 + 4228: -70,30 + 4229: -70,29 + 4230: -70,28 + 7334: -12,8 + 7335: -12,9 + - node: + color: '#334E6DC8' + id: BrickTileWhiteLineN + decals: + 6932: 25,27 + - node: + color: '#334E6DFF' + id: BrickTileWhiteLineN + decals: + 2165: -11,57 + 2166: -12,57 + 5523: -10,57 + 5524: -9,57 + - node: + color: '#52B4E996' + id: BrickTileWhiteLineN + decals: + 6935: 28,27 + - node: + color: '#52B4E9FF' + id: BrickTileWhiteLineN + decals: + 2695: 8,33 + 2696: 9,33 + 2697: 10,33 + - node: + color: '#9FED5896' + id: BrickTileWhiteLineN + decals: + 6945: 25,24 + - node: + color: '#A4610696' + id: BrickTileWhiteLineN + decals: + 6944: 28,24 + - node: + color: '#A46106FF' + id: BrickTileWhiteLineN + decals: + 718: -38,1 + 750: -45,-7 + - node: + color: '#D381C9FF' + id: BrickTileWhiteLineN + decals: + 30: -6,-2 + 31: -5,-2 + 32: -4,-2 + 33: -3,-2 + 34: -2,-2 + 35: -7,2 + 36: -8,2 + 37: -9,2 + 38: -11,-2 + 39: -12,-2 + 40: -13,-2 + 50: -9,-4 + 51: -10,-4 + 52: -11,-4 + 53: -12,-4 + 54: -13,-4 + 55: -14,-4 + 83: -4,-3 + - node: + color: '#DE3A3A96' + id: BrickTileWhiteLineN + decals: + 6933: 26,27 + - node: + color: '#DE3A3AFF' + id: BrickTileWhiteLineN + decals: + 3343: -43,65 + - node: + color: '#EFB34196' + id: BrickTileWhiteLineN + decals: + 6934: 27,27 + - node: + color: '#EFB341FF' + id: BrickTileWhiteLineN + decals: + 4205: -74,17 + 4206: -73,17 + 4207: -72,17 + 4216: -67,31 + 4226: -71,31 + 4227: -72,31 + - node: + color: '#334E6DFF' + id: BrickTileWhiteLineS + decals: + 2167: -12,53 + 2168: -11,53 + 2169: -10,53 + 2170: -9,53 + 2178: -19,62 + 2179: -18,62 + 2180: -17,62 + 2181: -16,62 + 2182: -15,62 + - node: + color: '#9FED5896' + id: BrickTileWhiteLineS + decals: + 6949: 25,27 + - node: + color: '#A46106FF' + id: BrickTileWhiteLineS + decals: + 717: -38,0 + 749: -45,-8 + - node: + color: '#D381C996' + id: BrickTileWhiteLineS + decals: + 6950: 28,27 + - node: + color: '#D381C9FF' + id: BrickTileWhiteLineS + decals: + 20: -8,-3 + 21: -6,-6 + 22: -5,-6 + 23: -4,-6 + 82: -4,-4 + - node: + color: '#DE3A3AFF' + id: BrickTileWhiteLineS + decals: + 3347: -43,61 + - node: + color: '#EFB341FF' + id: BrickTileWhiteLineS + decals: + 4203: -72,15 + 4217: -67,25 + 4218: -66,25 + 4219: -65,25 + 7292: -74,15 + 7293: -73,15 + - node: + color: '#334E6DFF' + id: BrickTileWhiteLineW + decals: + 2171: -13,54 + 2172: -13,55 + 2173: -13,56 + 2183: -14,59 + 2184: -14,60 + 2185: -14,61 + - node: + color: '#52B4E9FF' + id: BrickTileWhiteLineW + decals: + 7331: -14,14 + 7332: -14,13 + 7333: -14,12 + - node: + color: '#9FED5896' + id: BrickTileWhiteLineW + decals: + 6953: 26,26 + 6954: 26,25 + - node: + color: '#9FED58FF' + id: BrickTileWhiteLineW + decals: + 2642: 6,12 + 2643: 8,12 + 2644: 10,12 + - node: + color: '#D381C9FF' + id: BrickTileWhiteLineW + decals: + 14: -14,-3 + 15: -7,-4 + 16: -7,-5 + 17: -10,0 + 18: -10,1 + 19: -10,-1 + - node: + color: '#DE3A3AFF' + id: BrickTileWhiteLineW + decals: + 3348: -44,62 + 3349: -44,63 + 3350: -44,64 + 7326: -14,8 + 7327: -14,9 + 7328: -14,10 + - node: + color: '#EFB341FF' + id: BrickTileWhiteLineW + decals: + 4204: -75,16 + 4220: -68,26 + 4221: -68,27 + 4222: -68,28 + 4223: -68,29 + 4224: -68,30 + - node: + color: '#FFFFFFFF' + id: Bushb1 + decals: + 7311: 17,37 + 7312: 22,37 + 7313: 19,40 + - node: + color: '#FFFFFFFF' + id: Bushc3 + decals: + 7309: 21,43 + 7310: 23,43 + - node: + color: '#FFFFFFFF' + id: Bushf2 + decals: + 7308: 21,40 + - node: + color: '#FFFFFFFF' + id: Bushh2 + decals: + 7307: 21,38 + - node: + color: '#FFFFFFFF' + id: Bushi3 + decals: + 7305: 17,40 + 7306: 18,41 + - node: + color: '#DE3A3A96' + id: CheckerNWSE + decals: + 3416: -57,57 + 3417: -57,56 + 3418: -57,55 + 3419: -57,54 + 3420: -56,54 + 3421: -56,55 + 3422: -56,56 + 3423: -56,57 + 3424: -55,57 + 3425: -55,56 + 3426: -55,55 + 3427: -55,54 + 3428: -54,54 + 3429: -54,55 + 3430: -54,56 + 3431: -54,57 + 3432: -53,57 + 3433: -53,56 + 3434: -53,55 + 3435: -53,54 + 3436: -52,54 + 3437: -52,55 + 3438: -52,56 + 3439: -52,57 + 3444: -58,58 + 3445: -57,58 + 3446: -56,58 + 3447: -55,58 + 3448: -54,58 + 3449: -53,58 + 3450: -52,58 + 3451: -51,58 + 3452: -51,57 + 3453: -51,56 + 3454: -51,55 + 3455: -51,54 + 3456: -51,53 + 3457: -52,53 + 3458: -53,53 + 3459: -54,53 + 3460: -55,53 + 3461: -56,53 + 3462: -57,53 + 3463: -58,53 + 3464: -58,54 + 3465: -58,55 + 3466: -58,56 + 3467: -58,57 + - node: + color: '#FF00FFFF' + id: CheckerNWSE + decals: + 693: -30,-13 + 694: -30,-12 + 695: -30,-11 + 696: -29,-11 + 697: -29,-12 + 698: -29,-13 + 699: -28,-13 + 700: -28,-12 + 701: -28,-11 + - node: + cleanable: True + color: '#0000008F' + id: Damaged + decals: + 7776: 26,16 + 7777: 19,6 + 7778: 15,6 + 7779: 16,6 + 7780: 11,3 + 7781: 11,3 + - node: + color: '#FFFFFFFF' + id: Dirt + decals: + 7299: -55,7 + 7300: -54,7 + 7301: -53,7 + 7302: -50,7 + 7303: -48,7 + 7304: -47,7 + - node: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + decals: + 4577: -68,44 + 7347: -13,55 + 7348: -13,55 + 7349: -13,55 + 7350: -13,56 + 7351: -9,57 + 7352: -9,56 + 7353: -10,56 + 7354: -12,56 + 7355: -10,54 + 7356: -9,53 + 7357: -8,54 + 7358: -8,53 + 7359: -15,53 + 7360: -15,54 + 7361: -16,55 + 7362: -16,54 + 7363: -17,55 + 7364: -19,55 + 7365: -14,57 + 7366: -17,57 + 7367: -15,57 + 7368: -17,53 + 7369: -18,59 + 7370: -21,60 + 7371: -21,60 + 7372: -20,62 + 7373: -19,64 + 7374: -17,62 + 7375: -19,61 + 7376: -17,62 + 7377: -17,61 + 7378: -16,60 + 7379: -17,60 + 7380: -16,60 + 7381: -16,59 + 7382: -15,60 + 7383: -18,60 + 7384: -15,59 + 7385: -16,61 + 7386: -17,59 + 7387: -18,61 + 7388: -19,59 + 7389: -19,60 + 7390: -20,59 + 7391: -20,60 + 7392: -20,61 + 7393: -15,64 + 7394: -16,64 + 7395: -16,62 + 7396: -18,65 + 7397: -18,51 + 7398: -16,51 + 7399: -17,50 + 7400: -17,49 + 7401: -17,48 + 7402: -16,47 + 7403: -16,46 + 7404: -17,46 + 7405: -17,44 + 7406: -18,42 + 7407: -16,39 + 7408: -17,40 + 7409: -17,39 + 7410: -16,38 + 7411: -16,35 + 7412: -17,36 + 7413: -17,35 + 7414: -18,34 + 7415: -17,34 + 7416: -16,34 + 7417: -17,33 + 7418: -18,31 + 7419: -19,31 + 7420: -20,31 + 7421: -21,31 + 7422: -24,31 + 7423: -25,31 + 7424: -25,32 + 7425: -26,31 + 7426: -27,31 + 7427: -23,31 + 7428: -25,32 + 7429: -24,32 + 7430: -23,34 + 7431: -25,33 + 7432: -25,34 + 7433: -26,33 + 7434: -20,38 + 7435: -20,37 + 7436: -22,38 + 7437: -21,40 + 7438: -23,40 + 7439: -22,41 + 7440: -21,42 + 7441: -22,39 + 7442: -21,44 + 7443: -21,45 + 7444: -20,45 + 7445: -20,44 + 7446: -22,44 + 7447: -23,44 + 7448: -21,46 + 7449: -20,46 + 7450: -20,47 + 7451: -21,47 + 7452: -21,48 + 7453: -22,48 + 7454: -23,48 + 7455: -20,48 + 7456: -16,40 + 7457: -15,40 + 7458: -15,37 + 7459: -8,36 + 7460: -9,37 + 7461: -4,31 + 7462: -4,30 + 7463: -2,30 + 7464: -1,30 + 7465: 3,26 + 7466: 3,27 + 7467: 3,24 + 7468: 3,23 + 7469: 3,21 + 7470: 3,20 + 7471: 3,28 + 7472: 2,27 + 7473: 2,19 + 7474: 3,16 + 7475: 3,17 + 7476: 1,16 + 7477: -1,16 + 7478: 0,15 + 7479: 2,15 + 7480: 3,14 + 7481: 9,15 + 7482: 8,15 + 7483: 9,16 + 7484: 10,16 + 7485: 9,17 + 7486: 10,18 + 7487: 10,19 + 7488: 9,22 + 7489: 7,22 + 7490: 6,22 + 7491: 6,23 + 7492: 6,24 + 7493: 6,26 + 7494: 7,26 + 7495: 8,26 + 7496: 8,25 + 7497: 7,28 + 7498: 7,29 + 7499: 7,29 + 7500: 9,29 + 7501: 10,30 + 7502: 11,30 + 7503: 11,29 + 7504: 9,30 + 7505: 9,31 + 7506: 2,29 + 7507: 2,30 + 7508: 3,29 + 7509: 5,30 + 7510: 5,29 + 7511: 3,32 + 7512: 2,32 + 7513: 0,33 + 7514: -1,32 + 7515: -7,31 + 7516: -9,31 + 7517: -8,32 + 7518: -8,33 + 7519: -10,33 + 7520: -12,32 + 7521: -11,31 + 7522: -12,31 + 7523: -12,29 + 7524: -14,30 + 7525: -14,30 + 7526: -13,31 + 7527: -14,31 + 7528: -15,32 + 7529: -15,31 + 7530: -15,33 + 7531: -42,36 + 7532: -42,38 + 7533: -43,38 + 7534: -45,37 + 7535: -44,37 + 7536: -44,36 + 7537: -39,35 + 7538: -40,36 + 7539: -40,37 + 7540: -40,38 + 7541: -38,39 + 7542: -36,36 + 7543: -35,36 + 7544: -35,37 + 7545: -36,37 + 7546: -36,38 + 7547: -35,39 + 7548: -35,40 + 7549: -36,40 + 7550: -37,40 + 7551: -33,35 + 7552: -32,35 + 7553: -33,36 + 7554: -32,37 + 7555: -31,37 + 7556: -33,39 + 7557: -32,40 + 7558: -38,42 + 7559: -39,43 + 7560: -39,44 + 7561: -36,43 + 7562: -36,46 + 7563: -37,46 + 7564: -34,46 + 7565: -32,46 + 7566: -32,45 + 7567: -33,49 + 7568: -31,50 + 7569: -29,50 + 7570: -26,45 + 7571: -26,44 + 7572: -25,45 + 7573: -26,41 + 7574: -25,40 + 7575: -25,39 + 7576: -26,40 + 7577: -28,44 + 7578: -28,45 + 7579: -29,45 + 7580: -30,45 + 7581: -29,46 + 7582: -30,47 + 7583: -30,44 + 7584: -28,46 + 7585: -28,47 + 7586: -35,43 + 7587: -36,43 + 7588: -37,43 + 7589: -36,42 + 7590: -39,44 + 7591: -39,43 + 7592: -38,44 + 7593: -38,45 + 7594: -37,46 + 7595: -35,46 + 7596: -35,47 + 7597: -34,47 + 7598: -42,42 + 7599: -43,42 + 7600: -44,42 + 7601: -45,42 + 7602: -45,43 + 7603: -45,44 + 7604: -44,44 + 7605: -43,44 + 7606: -42,44 + 7607: -42,45 + 7608: -43,45 + 7609: -43,46 + 7610: -42,46 + 7611: -41,45 + 7612: -48,41 + 7613: -48,42 + 7614: -47,42 + 7615: -48,43 + 7616: -49,43 + 7617: -50,43 + 7618: -49,44 + 7619: -50,45 + 7620: -53,43 + 7621: -53,43 + 7622: -54,43 + 7623: -56,42 + 7624: -55,41 + 7625: -55,42 + 7626: -55,40 + 7627: -55,39 + 7628: -52,41 + 7629: -52,40 + 7630: -51,40 + 7631: -51,41 + 7632: -52,31 + 7633: -52,32 + 7634: -53,31 + 7635: -54,33 + 7636: -54,32 + 7637: -53,33 + 7638: -49,29 + 7639: -50,28 + 7640: -51,27 + 7641: -52,28 + 7642: -51,28 + 7643: -53,28 + 7644: -44,31 + 7645: -44,32 + 7646: -41,25 + 7647: -42,25 + 7648: -43,25 + 7649: -43,24 + 7650: -42,24 + 7651: -41,24 + 7652: -41,23 + 7653: -42,23 + 7654: -43,23 + 7655: -41,26 + 7656: -42,26 + 7657: -43,26 + 7658: -43,27 + 7659: -42,27 + 7660: -41,27 + 7661: -41,28 + 7662: -42,28 + 7663: -43,28 + 7664: -36,24 + 7665: -36,25 + 7666: -36,26 + 7667: -37,24 + 7668: -38,24 + 7669: -38,25 + 7670: -37,23 + 7671: -36,23 + 7672: -36,17 + 7673: -37,11 + 7674: -37,12 + 7675: -38,12 + 7676: -39,13 + 7677: -39,12 + 7678: -39,8 + 7679: -37,8 + 7680: -39,7 + 7681: -39,5 + 7682: -41,6 + 7683: -41,2 + 7684: -42,0 + 7685: -42,1 + 7686: -39,-4 + 7687: -39,-11 + 7688: -40,-12 + 7689: -41,-11 + 7690: -41,-11 + 7691: -41,-13 + 7692: -36,-7 + 7693: -36,-6 + 7694: -37,-6 + 7695: -34,-8 + 7696: -40,-6 + 7697: -39,-3 + 7698: -38,-4 + 7699: -43,-5 + 7700: -42,-5 + 7701: -42,-13 + 7702: -43,-13 + 7703: -45,-13 + 7704: -46,-11 + 7705: -45,-10 + 7706: 1,0 + 7707: 1,1 + 7708: 1,2 + 7709: 1,2 + 7710: 1,1 + 7711: 1,3 + 7712: 0,3 + 7713: 1,3 + 7714: 2,3 + 7715: 1,4 + 7716: 0,4 + 7717: 1,4 + 7718: 2,4 + 7719: 1,5 + 7720: 0,5 + 7721: -1,4 + 7722: -1,5 + 7723: 0,6 + 7724: -3,6 + 7725: -4,5 + 7726: -5,5 + 7727: 24,11 + 7728: 24,12 + 7729: 24,12 + 7730: 23,12 + 7731: 23,13 + 7732: 23,13 + 7733: 24,14 + 7734: 23,16 + 7735: 23,17 + 7736: 24,18 + 7737: 24,15 + 7738: 23,14 + 7739: 22,16 + 7740: 22,18 + 7741: 23,19 + 7742: 23,13 + 7782: 11,3 + 7783: 10,3 + 7784: 11,2 + 7785: 10,2 + 7786: 11,4 + 7787: 9,4 + 7788: 8,5 + 7789: 8,6 + 7790: 7,6 + 7791: 5,6 + 7792: 3,6 + 7793: 1,6 + 7794: -1,5 + 7795: -4,5 + 7796: -7,6 + 7797: -9,5 + 7798: -12,5 + 7799: -12,4 + 7800: -17,5 + 7801: -19,4 + 7802: -21,4 + 7803: -24,6 + 7804: -26,5 + 7805: -28,6 + 7806: -28,4 + 7807: -27,4 + 7808: -28,5 + 7809: -28,6 + 7810: -32,5 + 7811: -35,6 + 7812: -33,5 + 7813: -33,6 + 7814: -36,4 + 7815: -41,6 + 7816: -41,6 + 7817: -45,5 + 7818: -49,6 + 7819: -50,5 + 7820: -50,4 + 7821: -51,4 + 7822: -54,4 + 7823: -57,4 + 7824: -59,6 + 7825: -58,8 + 7826: -58,9 + 7827: -59,13 + 7828: -59,16 + 7829: -59,18 + 7830: -58,20 + 7831: -58,22 + 7832: -58,24 + 7833: -59,24 + 7834: -60,22 + 7835: -60,23 + 7836: -61,23 + 7837: -61,22 + 7838: -62,20 + 7839: -63,21 + 7840: -62,22 + 7841: -62,22 + 7842: -61,23 + 7843: -61,24 + 7844: -61,24 + 7845: -66,20 + 7846: -66,21 + 7847: -69,21 + 7848: -71,22 + 7849: -70,22 + 7850: -58,36 + 7851: -59,36 + 7852: -59,38 + 7853: -59,39 + 7854: -59,39 + 7855: -59,40 + 7856: -57,38 + 7857: -57,38 + 7858: -58,38 + 7859: -57,39 + 7860: -57,40 + 7861: -57,41 + 7862: -57,42 + 7863: -57,42 + 7864: -57,42 + 7865: -57,43 + 7866: -57,43 + 7867: -57,44 + 7868: -57,44 + 7869: -58,45 + 7870: -59,45 + 7871: -58,44 + 7872: -59,42 + 7873: -58,39 + 7874: -58,34 + 7875: -57,34 + 7876: -56,33 + 7877: -56,32 + 7878: -53,32 + 7879: -51,32 + 7880: -49,32 + 7881: -47,33 + 7882: -46,33 + 7883: -45,33 + 7884: -43,33 + 7885: -42,33 + 7886: -40,33 + 7887: -39,33 + 7888: -58,12 + 7889: -58,12 + 7890: -59,12 + 7891: -59,12 + 7892: -59,11 + 7893: -59,11 + 7894: -59,10 + 7895: -59,10 + 7896: -59,10 + 7897: -59,10 + 7898: -59,8 + 7899: -59,5 + 7900: -59,5 + 7901: -58,3 + 7902: -58,0 + 7903: -58,-2 + 7904: -58,-5 + 7905: -58,-7 + 7906: -65,31 + 7907: -65,31 + 7908: -65,32 + 7909: -67,33 + 7910: -66,33 + 7911: -66,33 + 7912: -66,34 + 7913: -70,34 + 7914: -72,34 + 7915: -75,33 + 7916: -75,32 + 7917: -75,28 + 7918: -75,29 + 7919: -74,32 + 7920: -74,31 + 7921: -74,33 + 7922: -64,20 + 7923: -64,19 + 7924: -65,19 + 7925: -64,21 + 7926: -64,22 + 7927: -64,23 + 7928: -65,23 + 7929: -67,23 + 7930: -70,23 + 7931: -72,23 + 7932: -71,21 + 7933: -70,19 + 7934: -69,19 + 7935: -68,19 + 7936: -68,21 + 7937: -69,22 + 7938: -69,17 + 7939: -75,17 + 7940: -75,17 + 7941: -75,17 + 7942: -74,17 + 7943: -74,17 + 7944: -74,18 + 7945: -75,18 + 7946: -79,19 + 7947: -81,20 + 7948: -82,20 + 7949: -82,24 + 7950: -83,24 + 7951: -84,24 + 7952: -82,26 + 7953: -82,25 + 7954: -80,25 + 7955: -79,25 + 7956: -79,24 + 7957: -77,26 + 7958: -77,24 + 7959: -74,25 + 7960: -75,21 + 7961: -74,21 + 7962: -81,33 + 7963: -82,32 + 7964: -83,32 + 7965: -81,32 + 7966: -80,31 + 7967: -80,30 + 7968: -3,31 + 7969: -3,32 + 7970: -2,31 + 7975: 0,29 + 7976: 0,30 + 7977: -2,29 + 7978: -5,30 + 7979: 8,30 + 7980: -34,-3 + 7981: -35,-3 + 7982: -35,-3 + 7983: -34,-4 + 7984: -33,-4 + 7985: -33,-4 + 7986: -32,-3 + 7987: -32,-2 + 7988: -34,-2 + 7989: -35,-2 + 7990: -46,61 + 7991: -46,62 + 7992: -47,62 + 7993: -44,62 + 7994: -43,62 + 7995: -43,63 + 7996: -44,63 + 8002: -63,60 + 8003: -64,59 + 8004: -64,60 + 8005: -64,57 + 8006: -66,57 + 8007: -68,54 + 8008: -68,53 + 8009: -70,53 + 8010: -71,53 + 8011: -73,52 + 8012: -72,54 + 8013: -73,55 + - node: + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 1623: -30,52 + 1624: -29,53 + 1625: -28,54 + 1626: -26,54 + 1627: -26,55 + 1628: -26,55 + 1629: -26,53 + 1630: -40,45 + 1637: -35,35 + 1638: -37,37 + 1639: -36,34 + 1640: -35,38 + 1641: -37,39 + 1642: -40,38 + 1643: -41,36 + 1644: -38,39 + 1645: -42,38 + 1646: -44,37 + 1647: -41,37 + 1648: -43,39 + 1649: -44,38 + 1650: -44,36 + 1651: -39,36 + 1652: -37,39 + 1653: -37,38 + 1654: -36,36 + 1655: -36,40 + 1656: -38,40 + 1657: -41,37 + 1658: -43,36 + 1659: -41,35 + 1660: -39,36 + 1661: -45,39 + 1662: -45,39 + 1663: -41,37 + 1664: -39,36 + 1665: -37,38 + 1666: -39,39 + 1713: -28,40 + 1714: -29,41 + 1715: -29,42 + 1716: -27,42 + 1717: -29,42 + 1718: -29,41 + 1719: -28,40 + 1720: -28,40 + 1721: -29,42 + 1722: -29,42 + 1723: -29,42 + 1724: -30,25 + 1725: -29,23 + 1726: -29,25 + 1727: -30,27 + 1728: -31,28 + 1729: -31,24 + 1730: -30,24 + 1731: -29,27 + 1732: -30,29 + 1733: -31,27 + 1734: -31,24 + 1735: -29,27 + 1736: -30,28 + 1737: -28,12 + 1738: -29,11 + 1739: -29,9 + 1740: -27,8 + 1741: -25,12 + 1742: -27,12 + 1743: -27,10 + 1744: -25,10 + 1745: -24,12 + 1746: -24,11 + 1747: -24,9 + 1748: -26,8 + 1749: -28,12 + 1750: -26,12 + 1751: -28,11 + 1752: -28,9 + 1753: -26,8 + 1754: -24,12 + 1755: -26,13 + 1756: -28,11 + 1757: -27,9 + 1758: -24,9 + 1759: -28,12 + 1760: -29,10 + 1761: -25,10 + 1762: -24,16 + 1763: -26,18 + 1764: -29,17 + 1765: -28,16 + 1766: -25,17 + 1767: -27,17 + 1768: -26,16 + 1769: -23,15 + 1770: -25,17 + 1771: -30,17 + 1772: -28,16 + 1773: -27,18 + 1774: -29,17 + 1775: -27,15 + 1776: -23,15 + 1777: -24,17 + 1778: -28,18 + 1779: -29,16 + 1780: -26,16 + 1781: -30,25 + 1782: -30,24 + 1783: -31,25 + 1784: -30,28 + 1785: -31,27 + 1786: -17,-3 + 1787: -17,-3 + 1788: -18,-5 + 1789: -17,-5 + 1790: -17,-3 + 1791: -18,-4 + 1792: -18,-5 + 1793: -16,-5 + 1794: -17,-2 + 1795: -19,-3 + 1796: -19,-5 + 1797: -17,-5 + 1798: -17,-2 + 1799: -19,-3 + 1800: -19,-9 + 1801: -18,-9 + 1802: -16,-8 + 1803: -16,-8 + 1804: -16,-9 + 1805: -18,-8 + 1806: -29,-9 + 1807: -30,-8 + 1808: -27,-6 + 1809: -28,-5 + 1810: -30,-8 + 1811: -28,-9 + 1812: -29,-6 + 1813: -29,-4 + 1814: -30,-5 + 1815: -29,-7 + 1816: -25,-9 + 1817: -25,-9 + 1818: -22,-9 + 1819: -22,-8 + 1820: -22,-8 + 1821: -21,-6 + 1822: -22,-2 + 1823: -21,0 + 1824: -19,1 + 1825: -17,1 + 1826: -30,2 + 1827: -30,1 + 1828: -29,0 + 1829: -29,-2 + 1830: -26,-2 + 1831: -27,-1 + 1832: -26,-2 + 1833: -26,1 + 1834: -27,1 + 1835: -27,2 + 1836: -26,0 + 1837: -27,1 + 1838: -27,2 + 1839: -27,0 + 1840: -27,-1 + 1841: -26,-2 + 1842: -24,-2 + 1843: -24,-2 + 1844: -24,1 + 1845: -24,2 + 1846: -26,1 + 1847: -27,1 + 1848: -26,-1 + 1849: -28,-2 + 1850: -33,-2 + 1851: -34,-2 + 1852: -36,-4 + 1853: -33,-2 + 1854: -33,-3 + 1855: -34,-4 + 1856: -33,-3 + 1857: -33,-3 + 1858: -33,-3 + 1859: -45,-3 + 1860: -45,-2 + 1861: -46,-3 + 1862: -47,-4 + 1863: -45,-5 + 1864: -44,-4 + 1865: -44,-2 + 1866: -45,-2 + 1867: -46,-3 + 1868: -46,-4 + 1869: -47,-4 + 1870: -45,-3 + 1871: -44,1 + 1872: -46,1 + 1873: -46,1 + 1874: -44,1 + 1875: -45,2 + 1876: -46,2 + 1877: -46,0 + 1878: -44,0 + 1879: -46,1 + 1880: -46,2 + 1881: -47,1 + 1882: -47,1 + 1883: -44,1 + 1884: -45,2 + 1885: -46,1 + 1886: -45,1 + 1887: -45,0 + 1888: -46,0 + 1889: -47,1 + 1890: -52,-2 + 1891: -51,-1 + 1892: -53,-1 + 1893: -52,-3 + 1894: -51,-2 + 1895: -52,-1 + 1896: -55,-1 + 1897: -55,-2 + 1898: -53,-2 + 1899: -54,-2 + 1900: -55,-3 + 1901: -52,-1 + 1902: -53,-1 + 1903: -52,-3 + 1904: -51,-3 + 1905: -52,-7 + 1906: -52,-6 + 1907: -54,-6 + 1908: -52,-8 + 1909: -51,-5 + 1910: -53,-5 + 1911: -54,-7 + 1912: -55,-8 + 1913: -53,-8 + 1914: -51,-7 + 1915: -53,-5 + 1916: -55,-6 + 1917: -53,-7 + 1918: -53,-5 + 1919: -53,-4 + 1920: -53,46 + 1921: -53,46 + 1922: -59,36 + 1923: -59,33 + 1924: -59,32 + 2364: -36,-11 + 2619: 8,21 + 2620: 11,32 + 5513: -35,36 + 5514: -35,37 + 5515: -35,37 + 5516: -35,37 + 5517: -35,36 + 5518: -35,36 + 5519: -35,35 + 5520: -35,35 + 5521: -35,36 + 5522: -35,36 + 6886: -1,43 + 6887: -1,42 + 6888: 0,42 + 6889: 0,43 + 6890: 0,43 + 6891: 1,42 + 6892: 1,42 + 6893: 2,43 + 6894: 2,44 + 6895: 3,44 + 6896: 4,44 + 6897: 4,43 + 6898: 4,42 + 6899: 4,43 + 6900: 3,43 + 6901: 3,42 + 6902: 2,42 + 6903: 2,43 + 6904: 0,43 + 6905: 0,43 + 6921: 18,45 + 6922: 18,46 + 6924: 10,52 + 6925: 11,52 + 6926: 11,52 + 6927: 11,51 + 6928: 10,52 + 6929: 17,46 + 6930: 17,46 + 6931: 17,46 + 6956: 25,26 + 6957: 25,25 + 6958: 26,25 + 6959: 26,26 + 6960: 27,26 + 6961: 28,25 + 6962: 28,25 + 6963: 28,26 + 6964: 27,27 + 6965: 26,27 + 6966: 25,27 + 6967: 26,27 + 6968: 28,27 + 6969: 28,28 + 6970: 26,28 + 6971: 25,28 + 6972: 26,28 + 6973: 27,28 + 6974: 27,28 + 7005: -60,-10 + 7006: -60,-11 + 7007: -59,-12 + 7008: -59,-12 + 7009: -58,-12 + 7010: -59,-12 + 7011: -61,-12 + 7012: -61,-10 + 7013: -62,-10 + 7014: -63,-11 + 7015: -61,-12 + 7016: -61,-11 + 7017: -62,-11 + 7018: -63,-11 + 7019: -62,-12 + 7020: -63,-10 + 7021: -64,-10 + 7022: -64,-11 + 7023: -64,-12 + 7024: -64,-12 + 7025: -65,-11 + 7026: -66,-11 + 7027: -65,-11 + 7028: -66,-11 + 7029: -67,-11 + 7030: -67,-11 + 7031: -66,-12 + 7032: -65,-12 + 7033: -66,-10 + 7034: -68,-10 + 7035: -69,-11 + 7036: -69,-12 + 7037: -68,-11 + 7038: -67,-10 + 7039: -66,-10 + 7040: -65,-10 + 7041: -67,-11 + 7042: -67,-12 + 7043: -68,-11 + 7044: -69,-10 + 7045: -70,-11 + 7046: -70,-12 + 7047: -71,-12 + 7048: -71,-11 + 7049: -71,-10 + 7050: -72,-10 + 7051: -73,-11 + 7052: -73,-12 + 7053: -72,-12 + 7054: -72,-11 + 7055: -75,-10 + 7056: -76,-10 + 7057: -75,-11 + 7058: -74,-12 + 7059: -73,-11 + 7060: -73,-10 + 7061: -74,-11 + 7062: -75,-12 + 7063: -76,-11 + 7064: -75,-11 + 7065: -74,-11 + 7066: -72,-11 + 7067: -71,-10 + 7068: -68,-11 + 7069: -67,-12 + 7070: -67,-12 + 7071: -68,-12 + 7072: -76,-12 + 7073: -62,-12 + 7074: -62,-12 + 7075: -63,-12 + 7076: -67,-10 + 7077: -68,-10 + 7078: -69,-10 + 7079: -70,-10 + 7080: -73,-10 + 7081: -74,-10 + 7113: -67,-14 + 7114: -67,-14 + 7115: -65,-14 + 7116: -65,-15 + 7117: -65,-15 + 7118: -73,-14 + 7119: -73,-15 + 7120: -75,-14 + 7121: -75,-14 + 7122: -75,-15 + 7123: -78,-11 + 7124: -78,-11 + 7125: -77,-11 + 7126: -79,-11 + 7127: -75,-13 + 7128: -73,-13 + 7129: -67,-13 + 7130: -67,-13 + 7131: -64,-13 + 7132: -65,-13 + 7133: -75,-13 + 7134: -75,-16 + 7135: -73,-16 + 7136: -67,-16 + 7137: -73,-16 + 7138: -65,-16 + 7139: -74,-9 + 7140: -74,-9 + 7141: -74,-8 + 7142: -74,-9 + 7143: -67,-9 + 7144: -67,-8 + 7145: -67,-9 + 7146: -74,3 + 7147: -74,3 + 7148: -74,2 + 7149: -67,3 + 7150: -67,3 + 7151: -67,2 + 7152: -67,2 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 160: 27,23 + 161: 26,24 + 162: 27,24 + 163: 25,24 + 164: 27,21 + 165: 26,20 + 166: 26,18 + 167: 27,17 + 168: 28,17 + 169: 27,18 + 170: 25,18 + 171: 25,17 + 172: 26,16 + 173: 27,16 + 174: 27,17 + 175: 26,17 + 176: 27,16 + 177: 27,15 + 178: 27,14 + 179: 27,13 + 180: 26,12 + 181: 26,12 + 182: 25,11 + 183: 27,11 + 184: 27,10 + 185: 28,9 + 186: 27,8 + 187: 26,8 + 188: 25,8 + 189: 26,7 + 190: 27,5 + 191: 28,6 + 192: 27,6 + 193: 26,6 + 194: 23,6 + 195: 21,5 + 196: 21,4 + 197: 22,4 + 198: 21,5 + 199: 19,5 + 200: 17,6 + 201: 16,5 + 202: 16,5 + 203: 16,6 + 204: 14,6 + 205: 12,6 + 206: 11,5 + 207: 12,5 + 208: 12,6 + 209: 9,6 + 210: 9,4 + 211: 10,4 + 212: 10,3 + 213: 11,2 + 214: 9,4 + 215: 8,5 + 216: 6,5 + 217: 6,6 + 218: 5,5 + 219: 5,4 + 220: 5,6 + 221: 2,5 + 222: 1,5 + 223: 1,5 + 224: -1,5 + 225: -1,4 + 226: -1,6 + 227: -2,6 + 228: -4,5 + 229: -5,4 + 230: -7,5 + 231: -6,6 + 232: -5,7 + 233: -6,6 + 234: -6,5 + 235: -8,5 + 236: -9,6 + 237: -10,6 + 238: -11,5 + 239: -12,4 + 240: -14,5 + 241: -13,6 + 242: -13,6 + 243: -13,4 + 244: -12,2 + 245: -12,0 + 246: -12,0 + 247: -13,2 + 248: -13,2 + 249: -12,1 + 250: -13,0 + 251: -12,1 + 252: -9,-1 + 253: -7,-2 + 254: -7,-1 + 255: -8,0 + 256: -9,-1 + 257: -10,-2 + 296: -8,-13 + 297: -8,-12 + 298: -10,-12 + 299: -7,-14 + 300: -6,-13 + 301: -4,-12 + 302: -3,-12 + 303: -2,-10 + 304: 3,-10 + 305: 1,-11 + 306: 0,-9 + 392: 1,-2 + 393: 2,-1 + 394: 2,-2 + 395: 1,-2 + 396: 1,-1 + 397: 2,-1 + 399: -13,8 + 400: -12,8 + 401: -12,10 + 402: -13,10 + 403: -14,11 + 404: -16,8 + 405: -17,8 + 406: -17,10 + 407: -18,10 + 408: -18,9 + 455: -12,18 + 456: -13,19 + 457: -14,20 + 458: -13,22 + 459: -12,23 + 460: -12,24 + 461: -14,26 + 462: -13,27 + 463: -12,28 + 464: -13,28 + 465: -14,28 + 466: -13,26 + 467: -12,25 + 468: -13,29 + 469: -14,32 + 470: -12,28 + 471: -12,30 + 472: -13,32 + 473: -15,32 + 474: -15,31 + 475: -13,30 + 476: -13,29 + 477: -12,32 + 478: -12,33 + 479: -13,33 + 480: -10,31 + 481: -9,32 + 482: -9,32 + 483: -8,33 + 484: -8,32 + 485: -8,31 + 486: -9,32 + 487: -10,32 + 488: -10,32 + 500: 0,29 + 501: -1,30 + 502: -3,30 + 503: -4,31 + 504: -4,32 + 505: -3,33 + 506: -4,32 + 507: -5,32 + 508: 0,33 + 509: -1,33 + 510: -1,34 + 511: -4,25 + 512: -4,26 + 513: -2,26 + 514: -1,26 + 515: -1,27 + 516: -4,27 + 517: -5,26 + 518: -4,24 + 519: -2,23 + 520: -3,22 + 521: -3,20 + 522: -4,19 + 523: -2,19 + 524: -2,20 + 537: -2,7 + 574: 13,-8 + 575: 13,-9 + 576: 14,-9 + 577: 15,-8 + 578: 15,-8 + 579: 14,-10 + 580: 15,-11 + 581: 13,-11 + 582: 13,-12 + 583: 14,-12 + 584: 19,-2 + 585: 20,-3 + 586: 20,-2 + 587: 21,-1 + 588: 20,-2 + 603: 19,1 + 604: 19,1 + 605: 20,1 + 606: 26,1 + 607: 26,2 + 608: 26,2 + 609: 25,2 + 610: 27,3 + 611: 28,3 + 612: 29,1 + 613: 27,1 + 614: 28,2 + 615: 29,3 + 616: 26,1 + 617: 25,2 + 618: 26,2 + 619: 27,3 + 620: 28,3 + 621: 29,3 + 622: 29,3 + 623: 11,-2 + 624: -3,-5 + 625: -5,-5 + 626: -5,-6 + 627: -6,-6 + 628: -7,-5 + 629: -6,-4 + 630: -10,-5 + 631: -9,-5 + 632: -9,-4 + 633: -9,-5 + 634: -13,-8 + 635: -12,-8 + 636: -13,-9 + 637: -14,-9 + 638: -14,-9 + 639: -13,-8 + 640: -12,-9 + 641: -14,-13 + 642: -15,-13 + 643: -16,-15 + 644: -16,-15 + 645: -16,-15 + 646: -16,-14 + 647: -9,30 + 648: -7,28 + 649: -8,27 + 650: -10,27 + 651: -10,27 + 652: -17,29 + 653: -16,29 + 654: -16,28 + 655: -16,27 + 656: -17,27 + 657: -18,29 + 658: -18,29 + 751: -45,-7 + 752: -46,-7 + 753: -45,-8 + 754: -44,-8 + 840: -39,1 + 841: -38,0 + 842: -37,1 + 843: -38,4 + 844: -37,6 + 845: -34,6 + 846: -37,7 + 847: -40,6 + 848: -41,5 + 849: -40,4 + 850: -37,4 + 851: -34,3 + 852: -32,1 + 853: -34,1 + 854: -35,1 + 855: -35,1 + 856: -33,0 + 857: -32,0 + 987: -37,9 + 988: -38,9 + 989: -38,9 + 990: -39,11 + 991: -39,12 + 992: -39,14 + 993: -38,15 + 994: -37,16 + 995: -38,17 + 996: -38,19 + 997: -39,19 + 998: -38,20 + 999: -38,21 + 1000: -39,18 + 1001: -39,17 + 1002: -37,21 + 1003: -37,23 + 1004: -39,24 + 1005: -39,23 + 1006: -37,22 + 1007: -37,26 + 1008: -38,27 + 1009: -39,25 + 1010: -38,25 + 1011: -38,29 + 1012: -39,29 + 1013: -38,27 + 1014: -38,27 + 1015: -37,27 + 1016: -37,27 + 1017: -34,25 + 1018: -32,26 + 1019: -33,28 + 1020: -35,28 + 1021: -35,25 + 1022: -33,25 + 1023: -32,27 + 1024: -34,28 + 1025: -35,28 + 1026: -33,26 + 1027: -34,25 + 1028: -35,28 + 1029: -27,28 + 1030: -26,28 + 1031: -25,28 + 1032: -26,27 + 1033: -24,28 + 1034: -23,28 + 1035: -26,28 + 1036: -24,26 + 1037: -23,26 + 1038: -24,27 + 1039: -26,28 + 1040: -24,27 + 1041: -18,33 + 1042: -17,31 + 1043: -15,32 + 1044: -16,33 + 1045: -20,32 + 1046: -19,32 + 1047: -19,32 + 1048: -21,33 + 1049: -22,32 + 1050: -21,32 + 1051: -23,33 + 1052: -27,33 + 1053: -28,33 + 1054: -29,32 + 1055: -27,32 + 1056: -29,33 + 1057: -31,32 + 1058: -29,31 + 1059: -30,32 + 1060: -32,32 + 1061: -32,31 + 1062: -32,32 + 1063: -34,32 + 1064: -35,31 + 1065: -38,32 + 1066: -38,33 + 1067: -40,32 + 1068: -39,31 + 1069: -40,32 + 1070: -43,32 + 1071: -42,31 + 1072: -42,30 + 1073: -43,32 + 1074: -45,32 + 1075: -42,31 + 1076: -42,32 + 1077: -45,31 + 1078: -46,30 + 1079: -44,30 + 1080: -45,32 + 1081: -47,33 + 1082: -48,33 + 1083: -50,32 + 1084: -49,31 + 1085: -48,32 + 1086: -50,33 + 1087: -51,32 + 1088: -50,31 + 1089: -51,32 + 1090: -53,33 + 1091: -52,33 + 1092: -53,32 + 1093: -54,31 + 1094: -56,33 + 1095: -56,32 + 1096: -53,32 + 1097: -52,31 + 1098: -54,31 + 1099: -57,33 + 1100: -58,32 + 1101: -57,33 + 1102: -59,32 + 1103: -58,30 + 1104: -57,29 + 1105: -57,29 + 1106: -58,29 + 1107: -59,27 + 1108: -58,25 + 1109: -57,26 + 1110: -57,28 + 1111: -58,27 + 1112: -58,23 + 1113: -58,20 + 1114: -57,20 + 1115: -57,22 + 1116: -57,23 + 1117: -59,21 + 1118: -58,20 + 1119: -57,20 + 1120: -57,21 + 1121: -58,20 + 1122: -59,18 + 1123: -58,17 + 1124: -58,16 + 1125: -57,17 + 1126: -57,19 + 1127: -58,18 + 1128: -59,16 + 1129: -58,14 + 1130: -58,14 + 1131: -54,19 + 1132: -54,20 + 1133: -55,19 + 1134: -54,18 + 1135: -53,19 + 1136: -54,20 + 1137: -59,14 + 1138: -58,13 + 1139: -57,12 + 1140: -58,11 + 1141: -58,13 + 1142: -58,11 + 1143: -59,10 + 1144: -58,12 + 1145: -58,11 + 1146: -57,8 + 1147: -58,7 + 1148: -58,7 + 1149: -57,9 + 1150: -58,9 + 1151: -58,5 + 1152: -58,4 + 1153: -58,4 + 1154: -57,5 + 1155: -59,6 + 1156: -58,3 + 1157: -57,1 + 1158: -58,-1 + 1159: -57,-2 + 1160: -58,1 + 1161: -58,2 + 1162: -59,0 + 1163: -58,-1 + 1164: -58,-3 + 1165: -58,-4 + 1166: -57,-4 + 1167: -59,-4 + 1168: -58,-4 + 1169: -57,-2 + 1170: -59,-3 + 1171: -58,-5 + 1172: -58,-7 + 1173: -57,-6 + 1174: -58,-5 + 1175: -59,-7 + 1176: -59,-8 + 1177: -57,-9 + 1178: -57,-9 + 1179: -58,-10 + 1180: -59,-10 + 1181: -75,5 + 1182: -75,5 + 1183: -73,5 + 1184: -72,5 + 1185: -70,6 + 1186: -71,5 + 1187: -75,5 + 1188: -73,5 + 1189: -73,6 + 1190: -75,6 + 1191: -74,4 + 1192: -70,4 + 1193: -68,5 + 1194: -67,5 + 1195: -75,5 + 1196: -74,4 + 1197: -71,5 + 1198: -66,6 + 1199: -64,6 + 1200: -66,5 + 1201: -62,4 + 1202: -61,5 + 1203: -64,5 + 1204: -66,5 + 1205: -62,5 + 1206: -68,4 + 1207: -67,6 + 1208: -54,5 + 1209: -56,6 + 1210: -53,6 + 1211: -51,6 + 1212: -50,5 + 1213: -49,4 + 1214: -46,5 + 1215: -44,5 + 1216: -45,6 + 1217: -49,6 + 1218: -47,5 + 1219: -44,4 + 1220: -45,5 + 1221: -46,5 + 1222: -55,28 + 1223: -54,27 + 1224: -51,28 + 1225: -49,28 + 1226: -51,29 + 1227: -53,28 + 1228: -52,27 + 1229: -49,27 + 1230: -50,29 + 1231: -52,29 + 1232: -54,28 + 1233: -54,28 + 1234: -50,27 + 1235: -49,27 + 1236: -50,29 + 1442: -42,10 + 1443: -43,10 + 1444: -42,9 + 1445: -41,8 + 1446: -41,11 + 1447: -43,11 + 1932: -59,31 + 1933: -22,35 + 1934: -20,35 + 1935: -19,35 + 1936: -19,35 + 1937: -22,35 + 1938: -23,35 + 1939: -20,35 + 1940: -16,36 + 1941: -16,37 + 1942: -17,37 + 1943: -18,35 + 1944: -16,36 + 1945: -17,38 + 1946: -18,38 + 1947: -18,36 + 1948: -16,37 + 1949: -17,40 + 1950: -18,39 + 1951: -17,38 + 1952: -17,42 + 1953: -18,41 + 1954: -17,39 + 1955: -16,42 + 1956: -17,43 + 1957: -17,41 + 1958: -16,44 + 1959: -17,45 + 1960: -18,43 + 1961: -16,45 + 1962: -17,47 + 1963: -17,45 + 1964: -16,48 + 1965: -18,49 + 1966: -17,47 + 1967: -16,49 + 1968: -18,49 + 1969: -18,47 + 1970: -16,50 + 1971: -18,49 + 1972: -16,50 + 1973: -17,50 + 1974: -17,46 + 1975: -18,45 + 1976: -17,45 + 1977: -18,47 + 1978: -17,45 + 1979: -15,47 + 1980: -16,47 + 1981: -16,45 + 1982: -14,48 + 1983: -14,48 + 1984: -13,47 + 1985: -12,48 + 1986: -13,47 + 1987: -11,48 + 1988: -13,48 + 1989: -12,46 + 1990: -11,47 + 1991: -12,48 + 1992: -13,49 + 1993: -13,47 + 1994: -12,47 + 1995: -12,47 + 2093: -22,40 + 2094: -21,41 + 2095: -22,42 + 2096: -23,42 + 2097: -23,40 + 2098: -21,39 + 2099: -20,38 + 2100: -21,38 + 2101: -22,40 + 2102: -23,39 + 2103: -23,39 + 2104: -22,41 + 2105: -23,41 + 2106: -22,40 + 2107: -22,38 + 2108: -23,38 + 2109: -23,37 + 2110: -22,37 + 2111: -21,39 + 2112: -22,39 + 2113: -21,37 + 2114: -20,39 + 2115: -21,41 + 2116: -23,42 + 2117: -22,39 + 2118: -21,39 + 2119: -21,42 + 2120: -20,42 + 2121: -22,42 + 2122: -21,41 + 2123: -20,44 + 2124: -20,45 + 2125: -21,46 + 2126: -20,48 + 2127: -22,48 + 2128: -22,46 + 2129: -20,45 + 2130: -22,44 + 2131: -22,48 + 2132: -22,48 + 2133: -23,45 + 2134: -22,44 + 2135: -21,44 + 2136: -20,46 + 2137: -21,48 + 2138: -23,48 + 2139: -23,46 + 2140: -21,44 + 2141: -21,44 + 2142: -22,45 + 2143: -20,47 + 2144: -22,48 + 2145: -22,46 + 2146: -22,44 + 2147: -20,44 + 2148: -21,48 + 2149: -22,48 + 2150: -23,47 + 2151: -22,44 + 2195: -17,53 + 2196: -18,53 + 2197: -19,53 + 2198: -19,56 + 2199: -19,57 + 2200: -19,57 + 2201: -15,57 + 2202: -15,55 + 2203: -15,54 + 2204: -16,53 + 2205: -18,53 + 2206: -12,55 + 2207: -13,54 + 2208: -12,53 + 2209: -11,53 + 2210: -10,55 + 2211: -12,56 + 2212: -12,54 + 2213: -11,54 + 2214: -9,54 + 2215: -7,54 + 2216: -9,53 + 2217: -10,53 + 2218: -10,56 + 2219: -12,55 + 2220: -11,54 + 2221: -8,54 + 2222: -12,57 + 2223: -13,57 + 2224: -11,56 + 2225: -11,57 + 2226: -12,57 + 2227: -6,59 + 2228: -6,58 + 2229: -6,60 + 2230: -6,60 + 2231: -12,59 + 2232: -13,59 + 2233: -13,60 + 2234: -13,62 + 2235: -14,60 + 2236: -13,60 + 2237: -13,62 + 2238: -14,63 + 2239: -15,63 + 2240: -14,63 + 2241: -15,63 + 2242: -16,62 + 2243: -15,62 + 2244: -15,64 + 2245: -17,64 + 2246: -17,63 + 2247: -16,63 + 2248: -17,65 + 2249: -19,64 + 2250: -20,63 + 2251: -17,64 + 2252: -17,66 + 2253: -19,65 + 2254: -20,63 + 2255: -21,62 + 2256: -20,63 + 2257: -21,61 + 2258: -20,60 + 2259: -22,60 + 2260: -20,62 + 2261: -19,63 + 2262: -18,64 + 2263: -19,65 + 2264: -19,65 + 2265: -17,66 + 2266: -15,65 + 2267: -14,64 + 2268: -14,64 + 2269: -19,64 + 2270: -22,63 + 2271: -22,62 + 2272: -22,60 + 2273: -22,59 + 2274: -20,59 + 2275: -19,63 + 2276: -17,64 + 2277: -15,62 + 2278: -19,60 + 2279: -19,59 + 2280: -18,61 + 2281: -15,59 + 2362: -36,-9 + 2423: -41,-8 + 2424: -41,-8 + 2425: -42,-7 + 2426: -41,-5 + 2427: -41,-4 + 2428: -40,-3 + 2429: -38,-5 + 2430: -38,-7 + 2431: -40,-7 + 2432: -41,-4 + 2433: -38,-3 + 2434: -38,-2 + 2435: -41,-3 + 2436: -40,-5 + 2437: -38,-7 + 2438: -37,-7 + 2439: -38,-4 + 2440: -38,-4 + 2441: -39,-5 + 2442: -35,-8 + 2443: -33,-7 + 2444: -33,-6 + 2445: -35,-7 + 2446: -34,-9 + 2447: -33,-8 + 2448: -34,-7 + 2449: -33,-10 + 2450: -33,-9 + 2451: -37,-7 + 2452: -38,-7 + 2453: -35,-7 + 2454: -37,-7 + 2455: -38,-8 + 2456: -40,-7 + 2457: -41,-5 + 2458: -41,-4 + 2459: -41,-5 + 2460: -41,-7 + 2461: -40,-7 + 2462: -39,-4 + 2463: -41,-7 + 2464: -42,-7 + 2465: -42,-8 + 2466: -42,-6 + 2467: -42,-3 + 2468: -42,-2 + 2469: -40,-2 + 2470: -38,-2 + 2471: -37,-2 + 2472: -37,-3 + 2473: -37,-5 + 2474: -34,-6 + 2475: -32,-7 + 2476: -32,-8 + 2477: -33,-11 + 2478: -32,-11 + 2479: -33,-11 + 2480: -35,-11 + 2481: -35,-10 + 2482: -35,-9 + 2483: -36,-10 + 2484: -36,-11 + 2485: -37,-8 + 2486: -37,-8 + 2487: -38,-8 + 2488: -40,-8 + 2803: 6,12 + 2804: 6,11 + 2805: 7,11 + 2806: 7,12 + 2807: 6,13 + 2808: 7,14 + 2809: 9,15 + 2810: 10,15 + 2811: 8,15 + 2812: 7,14 + 2813: 9,14 + 2814: 10,15 + 2815: 9,17 + 2816: 7,15 + 2817: 6,14 + 2818: 9,14 + 2819: 11,16 + 2820: 10,19 + 2821: 10,20 + 2822: 9,19 + 2823: 10,18 + 2824: 11,18 + 2825: 10,20 + 2826: 10,17 + 2827: 8,15 + 2828: 7,15 + 2829: 7,13 + 2830: 8,12 + 2831: 9,11 + 2832: 9,11 + 2833: 10,12 + 2834: 11,11 + 2835: 11,11 + 2836: 11,13 + 2837: 10,13 + 2838: 3,17 + 2839: 1,16 + 2840: -1,15 + 2841: -1,14 + 2842: 2,15 + 2843: 2,17 + 2844: -1,16 + 2845: 0,14 + 2846: 3,14 + 2847: 1,16 + 2848: -1,16 + 2849: -1,15 + 2850: 3,16 + 2851: 3,17 + 2852: 4,15 + 2853: 3,14 + 2854: 1,14 + 2855: -1,15 + 2856: -2,14 + 2857: -2,17 + 2858: -2,17 + 2859: 1,17 + 2860: 2,20 + 2861: 1,19 + 2862: 2,19 + 2863: 4,20 + 2864: 2,21 + 2865: 1,19 + 2866: 3,20 + 2867: 3,22 + 2868: 2,21 + 2869: 2,21 + 2870: 2,23 + 2871: 2,26 + 2872: 2,28 + 2873: 2,31 + 2874: 2,34 + 2875: 4,34 + 2876: 4,33 + 2877: 4,33 + 2878: 4,31 + 2879: 4,29 + 2880: 4,27 + 2881: 4,25 + 2882: 4,23 + 2883: 4,21 + 2884: 4,19 + 2885: 3,19 + 2886: 3,20 + 2887: 3,21 + 2888: 3,23 + 2889: 3,25 + 2890: 3,28 + 2891: 3,30 + 2892: 3,32 + 2893: 3,33 + 2894: 3,33 + 2895: 2,34 + 2896: 2,33 + 2897: 7,29 + 2898: 7,28 + 2899: 9,28 + 2900: 11,28 + 2901: 12,29 + 2902: 10,30 + 2903: 8,30 + 2904: 9,28 + 2905: 12,30 + 2906: 11,31 + 2907: 8,31 + 2908: 9,29 + 2909: 11,29 + 2910: 10,30 + 2911: 8,25 + 2912: 7,26 + 2913: 7,24 + 2914: 7,23 + 2915: 6,22 + 2916: 7,25 + 2917: 9,25 + 2918: 9,23 + 2919: 8,22 + 2920: 10,24 + 2921: 8,25 + 2922: 7,24 + 2923: 7,23 + 2924: 6,25 + 2925: 8,36 + 2926: 8,37 + 2927: 6,36 + 2928: 7,35 + 2929: 8,34 + 2930: 10,34 + 2931: 8,35 + 2932: 6,34 + 2933: 8,33 + 2934: 11,34 + 2935: 11,36 + 2936: 10,37 + 2937: 12,35 + 2938: 11,33 + 2939: 11,35 + 2940: 9,37 + 2941: 9,35 + 2942: 11,34 + 2943: 11,37 + 2944: 9,36 + 2945: 7,36 + 2946: 7,37 + 2947: 6,35 + 2948: 7,34 + 2949: 8,33 + 2950: 9,33 + 2951: 6,33 + 2952: 12,34 + 2953: 12,37 + 2954: 11,34 + 2955: 4,40 + 2956: 2,42 + 2957: 0,41 + 2958: 1,40 + 2959: 0,40 + 2960: -1,39 + 2961: 0,37 + 2962: 4,40 + 2963: 0,38 + 2964: 0,38 + 2965: 2,36 + 2966: 4,36 + 2967: 2,38 + 2968: 0,37 + 2969: -1,37 + 2970: 1,38 + 2971: 4,39 + 2972: 2,40 + 2973: 0,39 + 2974: 2,37 + 2975: 3,40 + 2976: 2,39 + 2977: 3,36 + 2978: 2,36 + 2979: 2,39 + 2980: -1,39 + 2981: 1,37 + 3307: -2,8 + 3308: -2,8 + 3309: -2,9 + 3310: -1,10 + 3311: 1,9 + 3312: 0,8 + 3313: -1,8 + 3314: -1,9 + 3315: 1,10 + 3316: 1,9 + 3317: -2,9 + 3318: -3,9 + 3319: -3,10 + 3320: -3,10 + 3490: -60,50 + 3491: -60,51 + 3492: -61,53 + 3493: -63,54 + 3494: -64,55 + 3495: -65,54 + 3496: -65,52 + 3497: -63,51 + 3498: -61,51 + 3499: -63,50 + 3500: -65,53 + 3501: -62,53 + 3502: -62,53 + 3503: -64,52 + 3504: -60,54 + 3505: -59,55 + 3506: -62,54 + 3507: -61,54 + 3508: -58,53 + 3509: -57,53 + 3510: -54,54 + 3511: -51,54 + 3512: -52,55 + 3513: -54,56 + 3514: -55,56 + 3515: -55,54 + 3516: -53,54 + 3517: -52,56 + 3518: -54,57 + 3519: -56,57 + 3520: -57,56 + 3521: -57,55 + 3522: -56,54 + 3523: -58,55 + 3524: -58,58 + 3525: -55,57 + 3526: -53,57 + 3527: -52,57 + 3528: -51,56 + 3529: -52,55 + 3530: -54,55 + 3531: -55,57 + 3532: -54,58 + 3533: -52,57 + 3534: -49,58 + 3535: -48,58 + 3536: -47,59 + 3537: -48,61 + 3538: -49,61 + 3539: -48,58 + 3540: -47,60 + 3541: -47,62 + 3542: -49,61 + 3543: -49,59 + 3544: -48,58 + 3545: -47,59 + 3546: -48,55 + 3547: -49,55 + 3548: -47,55 + 3549: -47,55 + 3550: -47,54 + 3551: -47,54 + 3552: -48,50 + 3553: -49,50 + 3554: -48,51 + 3555: -47,51 + 3556: -61,60 + 3557: -61,60 + 3558: -60,61 + 3559: -58,61 + 3560: -56,60 + 3561: -53,60 + 3562: -53,61 + 3563: -55,61 + 3564: -59,60 + 3565: -60,60 + 3566: -57,60 + 3567: -54,60 + 3568: -53,60 + 3569: -52,62 + 3570: -52,63 + 3571: -50,63 + 3572: -49,65 + 3573: -51,65 + 3574: -52,64 + 3575: -53,63 + 3576: -52,64 + 3577: -50,65 + 3578: -47,64 + 3579: -45,64 + 3580: -43,64 + 3581: -43,65 + 3582: -43,64 + 3583: -43,62 + 3584: -42,62 + 3585: -42,64 + 3586: -44,65 + 3587: -43,62 + 3588: -43,61 + 3589: -43,63 + 3590: -47,64 + 3591: -49,65 + 3592: -50,65 + 3593: -48,64 + 3594: -48,65 + 3595: -50,64 + 3596: -53,82 + 3597: -53,82 + 3598: -53,83 + 3599: -51,84 + 3600: -51,86 + 3601: -52,89 + 3602: -53,89 + 3603: -53,88 + 3604: -52,87 + 3605: -51,89 + 3606: -53,90 + 3607: -53,89 + 3608: -53,87 + 3609: -53,85 + 3610: -52,83 + 3611: -51,83 + 3612: -51,86 + 3613: -51,89 + 3614: -52,89 + 3615: -56,89 + 3616: -56,89 + 3617: -55,88 + 3618: -55,90 + 3619: -56,90 + 3620: -55,86 + 3621: -55,86 + 3622: -56,86 + 3623: -56,86 + 3624: -55,83 + 3625: -55,84 + 3626: -56,83 + 3627: -55,82 + 3628: -55,82 + 3629: -54,83 + 3630: -54,83 + 3631: -54,89 + 3632: -57,86 + 3633: -57,86 + 3634: -58,89 + 3635: -59,89 + 3636: -61,88 + 3637: -61,87 + 3638: -61,85 + 3639: -59,83 + 3640: -59,83 + 3641: -58,86 + 3642: -60,88 + 3643: -61,88 + 3644: -61,86 + 3645: -62,85 + 3646: -62,84 + 3647: -61,83 + 3648: -60,86 + 3649: -61,88 + 3650: -62,89 + 3651: -61,87 + 3652: -60,85 + 3653: -59,84 + 3654: -59,83 + 3655: -60,84 + 3656: -62,84 + 3657: -60,87 + 3658: -60,89 + 3659: -60,89 + 3660: -58,89 + 3700: -61,58 + 3701: -62,58 + 3702: -61,57 + 3703: -61,57 + 3704: -61,58 + 3705: -61,57 + 3706: -60,57 + 4096: -58,52 + 4097: -58,50 + 4098: -58,50 + 4099: -57,50 + 4100: -57,51 + 4101: -58,49 + 4102: -57,49 + 4103: -55,52 + 4104: -55,50 + 4105: -54,49 + 4106: -54,51 + 4107: -52,52 + 4108: -52,51 + 4109: -52,50 + 4110: -51,49 + 4111: -51,51 + 4112: -51,51 + 4252: -83,33 + 4253: -82,32 + 4254: -82,31 + 4255: -82,30 + 4256: -81,30 + 4257: -80,33 + 4258: -79,33 + 4259: -78,33 + 4260: -80,32 + 4261: -82,32 + 4262: -81,31 + 4263: -79,30 + 4264: -77,30 + 4265: -77,32 + 4266: -78,31 + 4267: -78,28 + 4268: -78,29 + 4269: -79,31 + 4270: -77,32 + 4271: -80,33 + 4272: -81,30 + 4273: -80,32 + 4274: -81,33 + 4275: -67,31 + 4276: -68,31 + 4277: -68,30 + 4278: -67,28 + 4279: -67,26 + 4280: -66,26 + 4281: -64,27 + 4282: -67,27 + 4283: -65,26 + 4284: -64,25 + 4285: -65,28 + 4286: -67,28 + 4287: -68,26 + 4288: -67,25 + 4289: -67,30 + 4290: -64,30 + 4291: -64,32 + 4292: -65,33 + 4293: -66,33 + 4294: -65,34 + 4295: -66,34 + 4296: -68,34 + 4297: -70,33 + 4298: -68,33 + 4299: -70,34 + 4300: -72,35 + 4301: -74,34 + 4302: -73,33 + 4303: -71,34 + 4304: -73,35 + 4305: -75,34 + 4306: -75,33 + 4307: -75,31 + 4308: -75,30 + 4309: -74,29 + 4310: -75,26 + 4311: -75,27 + 4312: -75,27 + 4313: -75,25 + 4314: -74,23 + 4315: -74,26 + 4316: -75,26 + 4317: -76,25 + 4318: -77,25 + 4319: -76,24 + 4320: -76,26 + 4321: -76,25 + 4322: -74,23 + 4323: -74,20 + 4324: -75,19 + 4325: -75,22 + 4326: -75,23 + 4327: -74,22 + 4328: -70,22 + 4329: -70,22 + 4330: -65,22 + 4331: -63,22 + 4332: -66,21 + 4333: -68,22 + 4334: -70,21 + 4335: -66,20 + 4336: -69,20 + 4337: -71,20 + 4338: -67,20 + 4339: -70,22 + 4340: -66,22 + 4341: -68,20 + 4342: -81,23 + 4343: -83,23 + 4344: -85,23 + 4345: -86,23 + 4346: -87,26 + 4347: -86,27 + 4348: -85,27 + 4349: -82,27 + 4350: -81,26 + 4351: -80,25 + 4352: -80,23 + 4353: -80,23 + 4354: -79,26 + 4355: -80,27 + 4356: -80,24 + 4357: -81,23 + 4358: -82,22 + 4359: -84,23 + 4360: -86,25 + 4361: -86,26 + 4362: -86,26 + 4363: -86,23 + 4364: -85,30 + 4365: -86,30 + 4366: -86,29 + 4367: -85,30 + 4368: -85,21 + 4369: -86,21 + 4370: -86,20 + 4371: -85,21 + 4372: -82,19 + 4373: -82,19 + 4374: -82,20 + 4375: -83,18 + 4376: -82,18 + 4377: -80,19 + 4378: -78,19 + 4379: -79,19 + 4380: -81,19 + 4381: -80,18 + 4382: -79,18 + 4383: -77,19 + 4384: -77,21 + 4385: -77,22 + 4386: -78,21 + 4387: -77,20 + 4388: -77,21 + 4389: -77,20 + 4390: -78,18 + 4391: -80,19 + 4392: -81,20 + 4393: -82,19 + 4394: -80,20 + 4395: -80,20 + 4396: -74,17 + 4397: -75,16 + 4398: -73,15 + 4399: -73,16 + 4400: -74,17 + 4401: -73,16 + 4402: -72,15 + 4403: -72,16 + 4404: -74,17 + 4405: -74,17 + 4414: -62,42 + 4415: -63,42 + 4416: -64,41 + 4417: -64,39 + 4418: -64,41 + 4419: -65,40 + 4420: -65,39 + 4421: -64,40 + 4422: -63,41 + 4423: -61,41 + 4424: -61,38 + 4425: -62,38 + 4426: -61,41 + 4427: -63,41 + 4428: -63,39 + 4429: -62,39 + 4430: -63,42 + 4431: -64,41 + 4432: -64,41 + 4433: -63,39 + 4434: -61,40 + 4435: -62,42 + 4436: -64,41 + 4437: -65,40 + 4438: -65,39 + 4439: -65,40 + 4440: -64,41 + 4441: -62,42 + 4442: -64,44 + 4443: -65,44 + 4444: -64,44 + 4445: -61,45 + 4446: -63,45 + 4447: -64,45 + 4448: -64,44 + 4449: -62,44 + 4450: -62,45 + 4451: -64,45 + 4511: -73,49 + 4512: -73,48 + 4513: -73,47 + 4514: -71,48 + 4515: -72,49 + 4516: -72,48 + 4517: -70,49 + 4518: -70,49 + 4519: -70,48 + 4520: -69,47 + 4521: -71,48 + 4522: -72,48 + 4523: -72,49 + 4565: -67,49 + 4566: -68,49 + 4567: -67,50 + 4568: -67,50 + 4569: -66,48 + 4570: -67,47 + 4571: -66,46 + 4572: -66,47 + 4573: -67,46 + 4578: -67,45 + 4579: -67,44 + 4580: -68,42 + 4581: -68,40 + 4582: -68,38 + 4583: -67,38 + 4584: -67,43 + 4585: -67,46 + 4586: -67,45 + 4587: -67,41 + 4588: -67,37 + 4589: -68,37 + 4590: -70,37 + 4591: -72,37 + 4592: -74,37 + 4593: -76,37 + 4594: -76,39 + 4595: -76,41 + 4596: -76,43 + 4597: -76,45 + 4598: -76,48 + 4599: -75,48 + 4600: -75,45 + 4601: -75,43 + 4602: -75,43 + 4603: -76,47 + 4604: -76,50 + 4605: -76,52 + 4606: -76,50 + 4607: -74,52 + 4608: -74,52 + 4609: -72,51 + 4610: -72,53 + 4611: -72,52 + 4612: -71,51 + 4613: -70,53 + 4614: -71,55 + 4615: -72,55 + 4616: -72,52 + 4617: -72,52 + 4618: -71,55 + 4619: -72,55 + 4620: -72,53 + 4621: -70,51 + 4622: -70,53 + 4623: -70,55 + 4624: -71,56 + 4625: -71,55 + 4626: -70,54 + 4656: -76,54 + 4657: -77,54 + 4658: -78,54 + 4659: -78,53 + 4660: -68,57 + 4661: -68,56 + 4662: -68,55 + 4663: -68,52 + 4664: -68,50 + 4665: -61,35 + 4666: -62,36 + 4667: -62,36 + 4668: -64,36 + 4669: -67,36 + 4670: -68,36 + 4671: -68,38 + 4672: -68,40 + 4673: -68,39 + 4674: -71,43 + 4675: -70,43 + 4676: -71,44 + 4677: -72,44 + 4678: -73,44 + 4679: -71,43 + 4680: -71,41 + 4681: -72,40 + 4682: -72,42 + 4683: -72,42 + 4684: -73,40 + 4685: -72,39 + 4686: -70,39 + 4687: -70,41 + 4688: -71,43 + 4689: -72,44 + 4690: -72,44 + 4691: -73,43 + 4692: -61,33 + 4693: -60,33 + 4694: -62,33 + 4695: -61,32 + 4696: -60,31 + 4697: -60,32 + 4698: -61,33 + 4699: -62,32 + 4700: -62,31 + 4701: -61,31 + 4788: -69,16 + 4789: -71,17 + 4790: -71,16 + 4791: -70,15 + 4792: -69,16 + 4793: -71,16 + 4794: -71,22 + 4795: -71,21 + 4796: -71,22 + 4797: -68,22 + 4798: -69,22 + 4799: -65,22 + 4800: -70,20 + 4801: -63,19 + 4802: -68,20 + 4803: -70,22 + 4976: -84,32 + 4977: -85,33 + 4978: -84,35 + 4979: -84,38 + 4980: -84,40 + 4981: -84,43 + 4982: -83,45 + 4983: -82,46 + 4984: -80,46 + 4985: -80,45 + 4986: -82,46 + 4987: -84,45 + 4988: -82,43 + 4989: -81,44 + 4990: -84,45 + 4991: -85,46 + 4992: -82,44 + 4993: -80,43 + 4994: -82,42 + 4995: -84,42 + 4996: -83,41 + 4997: -79,42 + 4998: -80,43 + 4999: -83,40 + 5000: -81,39 + 5001: -82,40 + 5002: -83,41 + 5003: -82,40 + 5004: -80,39 + 5005: -83,39 + 5006: -84,38 + 5007: -82,36 + 5008: -80,35 + 5009: -80,36 + 5010: -82,39 + 5011: -81,41 + 5012: -80,42 + 5013: -81,44 + 5014: -64,14 + 5015: -65,14 + 5016: -65,13 + 5017: -65,11 + 5018: -64,10 + 5019: -64,13 + 5020: -65,14 + 5021: -65,12 + 5022: -64,11 + 5023: -62,12 + 5024: -62,14 + 5025: -63,11 + 5026: -61,11 + 5027: -61,13 + 5028: -62,14 + 5029: -62,12 + 5030: -62,10 + 5062: -67,8 + 5063: -66,8 + 5064: -63,8 + 5065: -62,8 + 5066: -62,8 + 5067: -65,8 + 5068: -67,8 + 5069: -68,9 + 5070: -68,12 + 5071: -67,13 + 5072: -67,13 + 5073: -67,15 + 5074: -67,16 + 5075: -66,17 + 5076: -63,16 + 5077: -62,16 + 5078: -62,16 + 5079: -64,17 + 5080: -64,16 + 5081: -62,17 + 5082: -61,19 + 5083: -62,19 + 5084: -61,20 + 5085: -61,21 + 5086: -61,23 + 5087: -62,22 + 5088: -61,23 + 5089: -61,24 + 5090: -62,26 + 5091: -62,27 + 5092: -62,28 + 5093: -61,36 + 5094: -61,36 + 5095: -55,44 + 5096: -45,50 + 5097: -45,51 + 5098: -45,53 + 5099: -44,55 + 5100: -43,55 + 5101: -42,55 + 5102: -41,55 + 5103: -41,54 + 5104: -39,55 + 5105: -38,55 + 5106: -39,55 + 5107: -38,54 + 5108: -35,54 + 5109: -34,55 + 5110: -35,55 + 5111: -33,54 + 5112: -32,54 + 5113: -33,53 + 5114: -33,51 + 5115: -32,49 + 5116: -31,49 + 5117: -30,50 + 5118: -30,50 + 5119: -28,50 + 5120: -27,50 + 5121: -26,50 + 5122: -26,49 + 5123: -24,51 + 5124: -24,51 + 5125: -22,51 + 5126: -20,51 + 5127: -20,51 + 5128: -23,51 + 5129: -26,50 + 5130: -26,48 + 5131: -25,46 + 5132: -25,48 + 5133: -26,47 + 5134: -26,45 + 5135: -25,43 + 5136: -25,44 + 5137: -26,44 + 5138: -26,42 + 5139: -25,40 + 5140: -25,41 + 5141: -26,41 + 5142: -26,38 + 5143: -25,37 + 5144: -25,38 + 5145: -26,38 + 5146: -26,36 + 5147: -26,36 + 5148: -26,39 + 5149: -26,41 + 5150: -25,39 + 5151: -25,39 + 5152: -26,40 + 5153: -26,40 + 5154: -26,41 + 5155: -26,43 + 5156: -26,43 + 5157: -13,51 + 5158: -12,51 + 5159: -10,51 + 5160: -8,51 + 5161: -8,50 + 5162: -9,49 + 5163: -9,47 + 5164: -8,47 + 5165: -6,47 + 5166: -4,47 + 5167: -5,46 + 5168: -5,46 + 5169: -3,47 + 5170: -2,47 + 5171: -2,46 + 5172: 0,46 + 5173: 0,47 + 5174: 0,46 + 5175: 2,47 + 5176: 2,47 + 5177: 1,46 + 5178: 4,46 + 5179: 4,47 + 5180: 4,47 + 5181: 5,46 + 5182: 7,47 + 5183: 7,48 + 5184: 7,48 + 5185: 9,48 + 5186: 10,48 + 5187: 11,48 + 5188: 10,48 + 5189: 13,48 + 5190: 14,48 + 5191: 15,48 + 5192: 16,48 + 5193: 15,47 + 5194: 14,45 + 5195: 15,46 + 5196: 14,45 + 5197: 15,45 + 5198: 15,46 + 5199: 14,44 + 5200: 14,42 + 5201: 15,42 + 5202: 15,42 + 5203: 15,41 + 5204: 15,40 + 5205: 14,41 + 5206: 14,39 + 5207: 14,39 + 5208: 12,40 + 5209: 10,39 + 5210: 12,39 + 5211: 11,40 + 5212: 9,40 + 5213: 8,39 + 5214: 8,40 + 5215: 8,39 + 5216: 8,39 + 5217: 7,40 + 5218: 7,41 + 5219: 7,43 + 5220: 6,45 + 5221: 6,44 + 5222: 6,46 + 5223: 6,45 + 5224: 6,45 + 5225: 3,47 + 5226: 2,46 + 5227: 2,46 + 5228: 1,47 + 5229: 1,47 + 5230: 0,46 + 5231: -3,45 + 5232: -3,43 + 5233: -3,42 + 5234: -4,44 + 5235: -4,43 + 5236: -4,42 + 5237: -3,40 + 5238: -3,41 + 5239: -4,40 + 5240: -4,40 + 5241: -4,44 + 5242: -4,44 + 5243: -3,40 + 5244: -3,38 + 5245: -3,37 + 5246: -5,36 + 5247: -5,36 + 5248: -4,37 + 5249: -6,36 + 5250: -7,36 + 5251: -8,37 + 5252: -9,36 + 5253: -9,37 + 5254: -10,36 + 5255: -9,36 + 5256: -8,37 + 5257: -9,36 + 5258: 14,37 + 5259: 14,37 + 5260: 14,35 + 5261: 15,36 + 5262: 15,36 + 5263: 14,33 + 5264: 15,35 + 5265: 15,34 + 5266: 15,34 + 5267: 15,34 + 5268: 14,34 + 5269: 17,34 + 5270: 20,35 + 5271: 18,35 + 5272: 17,34 + 5273: 19,34 + 5274: 19,35 + 5275: 20,35 + 5276: 22,35 + 5277: 22,34 + 5278: 23,33 + 5279: 21,35 + 5280: 20,35 + 5281: 18,35 + 5282: 23,32 + 5283: 22,31 + 5284: 22,30 + 5285: 23,31 + 5286: 22,30 + 5287: 23,28 + 5288: 23,27 + 5289: 23,27 + 5290: 22,26 + 5291: 23,25 + 5292: 23,23 + 5293: 23,22 + 5294: 22,23 + 5295: 22,24 + 5296: 22,24 + 5297: 22,23 + 5298: 21,26 + 5299: 18,26 + 5300: 17,25 + 5301: 19,25 + 5302: 16,26 + 5303: 15,26 + 5304: 14,25 + 5305: 15,23 + 5306: 14,22 + 5307: 14,22 + 5308: 13,20 + 5309: 14,21 + 5310: 13,21 + 5311: 14,19 + 5312: 14,18 + 5313: 14,18 + 5314: 14,18 + 5315: 13,16 + 5316: 13,16 + 5317: 13,17 + 5318: 14,16 + 5319: 14,15 + 5320: 13,14 + 5321: 13,14 + 5322: 14,13 + 5323: 14,13 + 5324: 13,12 + 5325: 14,12 + 5326: 13,11 + 5327: 14,10 + 5328: 13,11 + 5329: 13,9 + 5330: 14,9 + 5331: 14,8 + 5332: 12,8 + 5333: 12,8 + 5334: 11,8 + 5335: 10,8 + 5336: 10,8 + 5337: 9,9 + 5338: 8,9 + 5339: 7,9 + 5340: 6,9 + 5341: 4,9 + 5342: 4,9 + 5343: 4,10 + 5344: 4,12 + 5345: 3,12 + 5346: 2,12 + 5347: 1,12 + 5348: -1,12 + 5349: -1,12 + 5350: -3,12 + 5351: -4,12 + 5352: -5,12 + 5353: -6,11 + 5354: -6,10 + 5355: -7,10 + 5356: -6,11 + 5357: -6,14 + 5358: -5,14 + 5359: -4,16 + 5360: -5,17 + 5361: -7,17 + 5362: -8,17 + 5363: -8,17 + 5364: -9,17 + 5365: -9,17 + 5366: -7,18 + 5367: -7,19 + 5368: -7,21 + 5369: -7,22 + 5370: -7,23 + 5371: -8,25 + 5372: -9,25 + 5373: -9,24 + 5374: -8,24 + 5375: -8,25 + 5376: -9,25 + 5377: -10,25 + 5378: -8,15 + 5379: -9,15 + 5380: -10,14 + 5381: -10,14 + 5382: -8,12 + 5383: -9,12 + 5384: -9,12 + 5385: -10,11 + 5386: -9,8 + 5387: -9,9 + 5388: -10,9 + 5389: -9,8 + 5390: -21,9 + 5391: -20,9 + 5392: -20,10 + 5393: -21,12 + 5394: -21,11 + 5395: -20,13 + 5396: -20,14 + 5397: -21,16 + 5398: -21,14 + 5399: -20,18 + 5400: -21,17 + 5401: -21,16 + 5402: -20,18 + 5403: -17,20 + 5404: -16,20 + 5405: -18,20 + 5406: -20,20 + 5407: -20,20 + 5408: -21,20 + 5409: -20,22 + 5410: -20,23 + 5411: -21,24 + 5412: -20,23 + 5413: -20,26 + 5414: -20,27 + 5415: -20,28 + 5416: -21,26 + 5417: -21,24 + 5418: -20,21 + 5419: -22,20 + 5420: -22,22 + 5421: -23,22 + 5422: -24,21 + 5423: -23,21 + 5424: -25,21 + 5425: -27,21 + 5426: -28,21 + 5427: -29,21 + 5428: -30,21 + 5429: -31,20 + 5430: -31,20 + 5431: -32,18 + 5432: -31,17 + 5433: -31,15 + 5434: -31,15 + 5435: -31,13 + 5436: -31,13 + 5437: -32,12 + 5438: -33,12 + 5439: -34,12 + 5440: -34,11 + 5441: -34,11 + 5442: -34,12 + 5443: -34,10 + 5444: -34,9 + 5445: -35,12 + 5446: -34,12 + 5447: -33,13 + 5448: -32,13 + 5449: -31,13 + 5450: -31,14 + 5451: -45,9 + 5452: -45,9 + 5453: -45,10 + 5454: -45,11 + 5455: -45,12 + 5456: -45,13 + 5457: -45,14 + 5458: -46,14 + 5459: -48,14 + 5460: -49,14 + 5461: -50,14 + 5462: -51,14 + 5463: -51,14 + 5464: -51,16 + 5465: -51,17 + 5466: -51,18 + 5467: -51,19 + 5468: -51,20 + 5469: -51,21 + 5470: -51,21 + 5471: -49,21 + 5472: -48,21 + 5473: -47,21 + 5474: -46,21 + 5475: -46,21 + 5476: -42,20 + 5477: -42,20 + 5478: -45,21 + 5479: -46,20 + 5480: -45,20 + 5481: -42,18 + 5482: -42,18 + 5483: -42,17 + 5484: -43,18 + 5485: -42,17 + 5486: -42,17 + 5487: -46,18 + 5488: -45,17 + 5489: -45,17 + 5490: -46,18 + 5491: -48,18 + 5492: -48,17 + 5493: -49,19 + 5494: -49,18 + 5495: -49,17 + 5496: -48,19 + 5497: -45,21 + 5498: -45,22 + 5499: -45,23 + 5500: -46,23 + 5501: -45,24 + 5502: -46,25 + 5503: -46,25 + 5504: -45,26 + 5505: -46,27 + 5506: -45,27 + 5507: -46,28 + 5508: -46,27 + 5532: -10,57 + 5533: -10,57 + 5534: -9,57 + 5535: -8,57 + 5536: -8,57 + 5537: -10,57 + 5538: -11,57 + 5539: -8,56 + 5540: -7,56 + 5541: -7,55 + 5542: -8,56 + 5543: -8,56 + 5544: -8,56 + 5545: -7,56 + 5546: -9,59 + 5547: -8,59 + 5548: -9,59 + 5549: -10,59 + 5550: -10,60 + 5551: -10,61 + 5552: -9,61 + 5553: -9,60 + 5554: -8,59 + 5555: -8,60 + 5556: -8,61 + 5557: -10,61 + 5558: -10,60 + 5559: -9,59 + 5560: -8,59 + 5561: -9,61 + 5562: -10,61 + 5563: -10,60 + 5564: -9,60 + 5565: -8,61 + 5566: -10,60 + 5567: -8,59 + 5568: -8,60 + 5569: -9,60 + 5570: -8,61 + 5571: -10,61 + 5572: -14,61 + 5573: -14,61 + 5574: -17,62 + 5575: -19,62 + 5576: -18,63 + 5577: -18,64 + 5578: -18,65 + 5579: -16,65 + 5580: -18,66 + 5581: -20,65 + 5582: -19,66 + 5583: -21,64 + 5584: -15,66 + 5585: -14,65 + 5586: -16,66 + 5587: -13,64 + 5588: -14,59 + 5589: -21,59 + 5590: -22,59 + 5591: -22,61 + 5592: -22,62 + 5593: -16,64 + 5594: -18,62 + 5595: -27,53 + 5596: -27,53 + 5597: -51,62 + 5598: -51,62 + 5599: -51,63 + 5600: -51,64 + 5601: -50,64 + 5602: -49,64 + 5603: -49,64 + 5604: -51,64 + 5605: -53,65 + 5606: -53,65 + 5607: -44,63 + 5608: -44,62 + 5609: -44,62 + 5610: -56,61 + 5611: -54,61 + 5612: -54,61 + 5613: -58,56 + 5614: -51,55 + 5615: -51,54 + 5616: -51,53 + 5617: -52,53 + 5618: -54,53 + 5619: -55,53 + 5620: -57,53 + 5621: -57,53 + 5622: -52,53 + 5623: -54,54 + 5624: -55,54 + 5625: -55,56 + 5626: -56,56 + 5627: -57,57 + 5628: -57,57 + 5629: -57,34 + 5630: -58,34 + 5631: -59,35 + 5632: -59,35 + 5633: -58,35 + 5634: -58,35 + 5635: -56,35 + 5636: -57,36 + 5637: -58,36 + 5638: -56,37 + 5639: -58,37 + 5640: -58,37 + 5641: -58,36 + 5642: -57,37 + 5643: -58,38 + 5644: -59,37 + 5645: -57,37 + 5646: -58,39 + 5647: -59,38 + 5648: -58,37 + 5649: -57,38 + 5650: -58,40 + 5651: -59,40 + 5652: -59,41 + 5653: -59,44 + 5654: -59,45 + 5655: -59,46 + 5656: -57,46 + 5657: -57,45 + 5658: -57,42 + 5659: -57,41 + 5660: -57,40 + 5661: -57,38 + 5662: -58,39 + 5663: -58,40 + 5664: -58,42 + 5665: -58,43 + 5666: -58,45 + 5667: -58,45 + 5668: -58,46 + 5669: -58,46 + 5670: -59,43 + 5671: -59,42 + 5672: -58,42 + 5673: -59,39 + 5674: -59,38 + 5675: -57,39 + 5676: -57,40 + 5677: -58,41 + 5678: -59,41 + 5679: -59,43 + 5680: -57,43 + 5681: -57,44 + 5682: -59,46 + 5683: -59,46 + 5684: -59,47 + 5685: -58,47 + 5686: -56,47 + 5687: -55,47 + 5688: -55,47 + 5689: -56,47 + 5690: -56,46 + 5691: -58,47 + 5692: -53,47 + 5693: -53,47 + 5694: -55,47 + 5695: -54,46 + 5696: -53,46 + 5697: -52,46 + 5698: -54,47 + 5699: -54,46 + 5700: -51,47 + 5701: -52,46 + 5702: -50,46 + 5703: -49,46 + 5704: -49,47 + 5705: -51,47 + 5706: -50,46 + 5707: -48,46 + 5708: -48,47 + 5709: -48,47 + 5710: -47,47 + 5711: -47,48 + 5712: -48,49 + 5713: -49,49 + 5714: -49,48 + 5715: -50,47 + 5716: -50,46 + 5717: -48,47 + 5718: -48,48 + 5719: -47,49 + 5720: -52,46 + 5721: -50,46 + 5722: -48,46 + 5723: -48,46 + 5724: -48,48 + 5725: -47,47 + 5726: -47,46 + 5727: -48,44 + 5728: -49,45 + 5729: -49,44 + 5730: -48,43 + 5731: -47,45 + 5732: -47,45 + 5733: -49,45 + 5734: -50,44 + 5735: -50,43 + 5736: -49,43 + 5737: -50,45 + 5738: -49,44 + 5739: -49,42 + 5740: -48,42 + 5741: -47,43 + 5742: -47,44 + 5743: -47,42 + 5744: -47,41 + 5745: -48,41 + 5746: -49,40 + 5747: -48,40 + 5748: -47,41 + 5749: -49,42 + 5750: -49,42 + 5751: -49,40 + 5752: -48,39 + 5753: -47,38 + 5754: -47,39 + 5755: -48,39 + 5756: -49,38 + 5757: -49,37 + 5758: -48,35 + 5759: -47,36 + 5760: -48,37 + 5761: -48,38 + 5762: -48,38 + 5763: -48,36 + 5764: -47,35 + 5765: -47,35 + 5766: -48,36 + 5767: -49,35 + 5768: -49,35 + 5769: -49,38 + 5770: -48,39 + 5771: -48,40 + 5772: -49,42 + 5773: -49,41 + 5774: -47,39 + 5775: -49,39 + 5776: -47,37 + 5777: -49,34 + 5778: -48,34 + 5779: -47,34 + 5780: -47,34 + 5781: -48,34 + 5782: -10,34 + 5783: -11,33 + 5784: -11,32 + 5785: -11,31 + 5786: -13,30 + 5787: -14,31 + 5788: -14,29 + 5789: -14,29 + 5790: -11,32 + 5791: -10,33 + 5792: -9,33 + 5793: -10,34 + 5794: -11,34 + 5795: -10,34 + 5796: -8,34 + 5797: -7,33 + 5798: -7,32 + 5799: -8,31 + 5800: -10,31 + 5801: -12,30 + 5802: -13,29 + 5803: -12,28 + 5804: -14,25 + 5805: -14,23 + 5806: -14,22 + 5807: -12,21 + 5808: -12,22 + 5809: -12,20 + 5810: -12,19 + 5811: -14,21 + 5812: -14,21 + 5813: -13,20 + 5814: -13,22 + 5815: -14,24 + 5816: -14,25 + 5817: -14,15 + 5818: -13,13 + 5819: -12,15 + 5820: -13,16 + 5821: -14,17 + 5822: -13,16 + 5823: -13,16 + 5824: -14,16 + 5825: -14,19 + 5826: -13,21 + 5827: -13,23 + 5828: -13,25 + 5829: -13,11 + 5830: -12,13 + 5831: -13,12 + 5832: -13,12 + 5833: -12,6 + 5834: -13,6 + 5835: -14,6 + 5836: -13,4 + 5837: -12,5 + 5838: -12,5 + 5839: -13,5 + 5840: -14,4 + 5841: -10,5 + 5842: -9,5 + 5843: -10,4 + 5844: -9,4 + 5845: -8,4 + 5846: -8,4 + 5847: -8,4 + 5848: -6,4 + 5849: -7,6 + 5850: -8,6 + 5851: -6,7 + 5852: -4,6 + 5853: -3,6 + 5854: -3,5 + 5855: -3,4 + 5856: -4,4 + 5857: -2,5 + 5858: -2,5 + 5859: -3,4 + 5860: -1,5 + 5861: 1,6 + 5862: 0,5 + 5863: 0,5 + 5864: 2,4 + 5865: 4,5 + 5866: 2,6 + 5867: 2,5 + 5868: 4,4 + 5869: 4,5 + 5870: 3,6 + 5871: 3,4 + 5872: 4,5 + 5873: 3,5 + 5874: 4,6 + 5875: 7,4 + 5876: 6,4 + 5877: 7,4 + 5878: 8,4 + 5879: 5,3 + 5880: 4,3 + 5881: 9,4 + 5882: 10,4 + 5883: 10,4 + 5884: 10,5 + 5885: 11,4 + 5886: 11,6 + 5887: 11,6 + 5888: 14,5 + 5889: 15,5 + 5890: 17,6 + 5891: 18,6 + 5892: 17,5 + 5893: 18,6 + 5894: 20,6 + 5895: 21,6 + 5896: 22,6 + 5897: 23,5 + 5898: 23,5 + 5899: 22,4 + 5900: 23,4 + 5901: 21,5 + 5902: 19,6 + 5903: 25,5 + 5904: 25,6 + 5905: 25,7 + 5906: 26,6 + 5907: 26,5 + 5908: 28,7 + 5909: 29,7 + 5910: 28,8 + 5911: 27,9 + 5912: 26,9 + 5913: 26,9 + 5914: 26,10 + 5915: 25,11 + 5916: 25,12 + 5917: 26,13 + 5918: 26,14 + 5919: 26,15 + 5920: 25,16 + 5921: 28,13 + 5922: 28,13 + 5923: 28,14 + 5924: 28,16 + 5925: 27,17 + 5926: 27,18 + 5927: 28,19 + 5928: 27,19 + 5929: 25,20 + 5930: 27,20 + 5931: 27,21 + 5932: 28,21 + 5933: 28,20 + 5934: 26,22 + 5935: 28,24 + 5936: 28,24 + 5937: 26,25 + 5938: 25,25 + 5939: 25,25 + 5940: 25,23 + 5941: 26,23 + 5942: 28,11 + 5943: 28,10 + 5944: 28,12 + 5945: 28,12 + 5952: -22,55 + 5953: -23,54 + 5954: -22,54 + 5955: -21,54 + 5956: -21,55 + 5957: -21,56 + 5958: -22,57 + 5959: -22,57 + 5960: -23,55 + 5961: -23,54 + 5962: -22,55 + 5963: -22,56 + 5964: -22,57 + 5965: -23,56 + 5966: -23,55 + 5967: -23,54 + 5968: -23,54 + 5969: -23,56 + 5970: -22,57 + 5971: -21,57 + 5972: -24,54 + 5973: -24,53 + 5974: -23,53 + 5975: -21,53 + 5976: -21,53 + 5977: -24,54 + 5978: -24,55 + 5979: -24,56 + 5980: -24,56 + 5981: -21,54 + 5982: -21,54 + 5983: -21,55 + 5984: -22,57 + 5985: -23,55 + 5986: -51,33 + 5987: -49,32 + 5988: -51,31 + 5989: -55,31 + 5990: -54,32 + 5991: -55,33 + 5992: -57,25 + 5993: -58,22 + 5994: -58,21 + 5995: -59,20 + 5996: -57,18 + 5997: -59,17 + 5998: -59,12 + 5999: -57,10 + 6000: -58,10 + 6001: -59,8 + 6002: -59,9 + 6003: -59,4 + 6004: -59,5 + 6005: -57,4 + 6006: -61,4 + 6007: -56,4 + 6008: -65,4 + 6009: -67,4 + 6010: -69,5 + 6011: -69,4 + 6012: -70,5 + 6013: -72,6 + 6014: -74,5 + 6015: -75,4 + 6016: -57,0 + 6017: -58,0 + 6018: -59,-2 + 6019: -59,-1 + 6020: -58,-2 + 6021: -58,-6 + 6022: -57,-5 + 6023: -57,-8 + 6024: -58,-8 + 6025: -59,-9 + 6026: -57,-10 + 6027: -52,6 + 6028: -50,6 + 6029: -51,4 + 6030: -49,3 + 6031: -50,3 + 6032: -48,6 + 6033: -46,6 + 6034: -48,5 + 6035: -47,6 + 6036: -44,6 + 6037: -43,5 + 6038: -43,6 + 6039: -42,6 + 6040: -39,6 + 6041: -34,7 + 6042: -39,4 + 6043: -35,4 + 6044: -37,3 + 6045: -38,3 + 6046: -39,3 + 6047: -41,3 + 6048: -35,3 + 6049: -33,4 + 6050: -29,4 + 6051: -28,4 + 6052: -39,4 + 6053: -38,4 + 6054: -36,5 + 6055: -37,6 + 6056: -39,6 + 6057: -40,5 + 6058: -39,4 + 6059: -37,4 + 6060: -37,6 + 6061: -38,6 + 6062: -38,5 + 6063: -38,7 + 6064: -38,8 + 6065: -41,5 + 6066: -42,5 + 6067: -32,5 + 6068: -32,5 + 6069: -34,6 + 6070: -33,6 + 6071: -33,5 + 6072: -38,18 + 6073: -39,16 + 6074: -37,14 + 6075: -39,13 + 6076: -38,23 + 6077: -38,23 + 6078: -39,26 + 6079: -39,26 + 6080: -39,27 + 6081: -38,26 + 6082: -37,24 + 6083: -37,25 + 6084: -38,24 + 6085: -37,29 + 6086: -38,30 + 6087: -38,31 + 6088: -37,31 + 6089: -38,30 + 6090: -37,32 + 6091: -39,32 + 6092: -40,33 + 6093: -41,32 + 6094: -42,32 + 6095: -41,33 + 6096: -39,33 + 6097: -38,32 + 6098: -38,31 + 6099: -37,31 + 6100: -35,32 + 6101: -35,33 + 6102: -36,33 + 6103: -39,32 + 6104: -39,32 + 6105: -38,32 + 6106: -37,33 + 6107: -39,33 + 6108: -39,33 + 6109: -38,31 + 6110: -37,31 + 6111: -36,32 + 6112: -35,32 + 6113: -36,31 + 6114: -34,33 + 6115: -33,32 + 6116: -31,31 + 6117: -30,31 + 6118: -29,32 + 6119: -28,32 + 6120: -38,30 + 6121: -39,30 + 6122: -39,28 + 6123: -37,30 + 6124: -39,28 + 6125: -39,27 + 6126: -28,35 + 6127: -29,35 + 6128: -29,36 + 6129: -29,37 + 6130: -28,37 + 6131: -28,37 + 6132: -28,36 + 6133: -28,37 + 6134: -29,38 + 6135: -29,38 + 6136: -29,36 + 6137: -29,35 + 6138: -29,35 + 6139: -28,37 + 6140: -28,38 + 6141: -31,39 + 6142: -31,40 + 6143: -32,40 + 6144: -33,39 + 6145: -32,39 + 6146: -32,40 + 6147: -33,40 + 6148: -32,38 + 6149: -31,39 + 6150: -32,40 + 6151: -33,38 + 6152: -32,38 + 6153: -31,39 + 6154: -33,39 + 6155: -33,37 + 6156: -32,36 + 6157: -31,37 + 6158: -33,37 + 6159: -33,35 + 6160: -31,35 + 6161: -31,37 + 6162: -33,36 + 6163: -32,35 + 6164: -32,37 + 6165: -32,36 + 6166: -33,35 + 6167: -33,37 + 6168: -33,36 + 6169: -33,35 + 6170: -34,36 + 6171: -34,38 + 6173: -51,35 + 6174: -52,36 + 6175: -53,35 + 6176: -51,34 + 6177: -52,34 + 6178: -52,34 + 6179: -52,35 + 6180: -51,35 + 6181: -53,36 + 6182: -54,35 + 6183: -54,36 + 6184: -53,37 + 6185: -52,38 + 6186: -52,38 + 6187: -51,37 + 6188: -51,36 + 6189: -52,36 + 6190: -52,37 + 6191: -52,36 + 6192: -53,35 + 6193: -53,36 + 6194: -53,38 + 6195: -53,40 + 6196: -53,40 + 6197: -51,40 + 6198: -52,41 + 6199: -53,41 + 6200: -53,40 + 6201: -51,40 + 6202: -52,41 + 6203: -53,41 + 6204: -53,38 + 6205: -53,38 + 6206: -54,37 + 6207: -54,36 + 6208: -53,36 + 6209: -52,38 + 6210: -51,38 + 6211: -51,37 + 6212: -52,36 + 6213: -53,36 + 6214: -53,35 + 6215: -45,47 + 6216: -45,46 + 6217: -45,45 + 6218: -45,44 + 6219: -45,43 + 6220: -45,42 + 6221: -45,41 + 6222: -44,41 + 6223: -44,42 + 6224: -44,43 + 6225: -44,45 + 6226: -44,46 + 6227: -43,46 + 6228: -43,46 + 6229: -43,46 + 6230: -43,44 + 6231: -43,43 + 6232: -43,42 + 6233: -43,42 + 6234: -43,41 + 6235: -42,41 + 6236: -42,43 + 6237: -42,44 + 6238: -42,45 + 6239: -42,46 + 6240: -42,47 + 6241: -43,47 + 6242: -43,46 + 6243: -43,46 + 6244: -42,46 + 6245: -41,46 + 6246: -41,46 + 6247: -41,44 + 6248: -41,42 + 6249: -41,42 + 6250: -41,41 + 6251: -41,44 + 6252: -41,46 + 6253: -41,47 + 6254: -42,47 + 6255: -43,43 + 6256: -43,42 + 6257: -44,42 + 6258: -44,44 + 6259: -44,45 + 6260: -43,45 + 6261: -43,44 + 6262: -44,43 + 6263: -43,43 + 6264: -42,45 + 6265: -43,45 + 6266: -44,45 + 6267: -43,46 + 6268: -45,47 + 6269: -45,44 + 6270: -45,42 + 6271: -45,41 + 6272: -44,41 + 6273: -43,41 + 6274: -42,42 + 6275: -42,43 + 6276: -43,45 + 6277: -43,45 + 6278: -44,44 + 6279: -45,44 + 6280: -45,43 + 6281: -45,41 + 6282: -44,41 + 6283: -43,42 + 6284: -44,45 + 6285: -44,46 + 6286: -45,45 + 6287: -44,44 + 6288: -43,43 + 6289: -42,45 + 6290: -44,46 + 6291: -44,46 + 6292: -45,45 + 6293: -45,43 + 6294: -43,42 + 6295: -42,42 + 6296: -41,44 + 6297: -42,46 + 6298: -42,47 + 6299: -44,47 + 6300: -40,44 + 6301: -40,45 + 6302: -40,46 + 6303: -39,46 + 6304: -38,47 + 6305: -39,47 + 6306: -39,45 + 6307: -38,45 + 6308: -37,47 + 6309: -38,46 + 6310: -38,45 + 6311: -38,43 + 6312: -37,43 + 6313: -37,46 + 6314: -39,45 + 6315: -39,42 + 6316: -38,42 + 6317: -36,43 + 6318: -36,43 + 6319: -37,43 + 6320: -36,42 + 6321: -35,42 + 6322: -34,43 + 6323: -34,42 + 6324: -33,42 + 6325: -33,43 + 6326: -34,43 + 6327: -33,42 + 6328: -32,43 + 6329: -32,44 + 6330: -33,45 + 6331: -33,47 + 6332: -34,46 + 6333: -33,45 + 6334: -32,46 + 6335: -34,47 + 6336: -35,46 + 6337: -36,45 + 6338: -35,44 + 6339: -34,44 + 6340: -35,46 + 6341: -36,46 + 6342: -38,46 + 6343: -39,47 + 6344: -38,47 + 6345: -34,46 + 6346: -33,46 + 6347: -33,47 + 6348: -33,47 + 6349: -33,44 + 6350: -32,44 + 6351: -32,43 + 6352: -33,44 + 6353: -34,43 + 6354: -35,43 + 6355: -36,43 + 6356: -37,42 + 6357: -38,42 + 6358: -38,43 + 6359: -39,44 + 6360: -39,43 + 6361: -39,42 + 6362: -39,45 + 6363: -38,46 + 6364: -39,47 + 6365: -39,47 + 6366: -37,44 + 6367: -36,44 + 6368: -34,45 + 6369: -37,45 + 6370: -32,45 + 6371: -32,46 + 6372: -32,46 + 6373: -32,44 + 6374: -32,43 + 6375: -33,43 + 6376: -35,42 + 6377: -33,42 + 6378: -33,42 + 6379: -32,47 + 6380: -29,44 + 6381: -29,45 + 6382: -29,47 + 6383: -30,46 + 6384: -30,45 + 6385: -30,44 + 6386: -28,44 + 6387: -28,45 + 6388: -28,46 + 6389: -29,47 + 6390: -29,47 + 6391: -30,45 + 6392: -29,45 + 6393: -29,44 + 6394: -28,44 + 6395: -29,45 + 6396: -30,46 + 6397: -30,46 + 6398: -29,45 + 6399: -28,45 + 6400: -29,46 + 6401: -29,47 + 6402: -30,47 + 6403: -30,44 + 6404: -29,44 + 6405: -28,44 + 6406: -28,47 + 6407: -36,49 + 6408: -36,49 + 6409: -35,51 + 6410: -35,51 + 6411: -37,51 + 6412: -38,43 + 6413: -38,44 + 6414: -38,44 + 6415: -36,41 + 6416: -37,41 + 6417: -37,41 + 6418: -38,41 + 6419: -38,41 + 6420: -37,41 + 6421: -37,41 + 6422: -36,49 + 6423: -36,50 + 6424: -36,51 + 6425: -36,51 + 6426: -37,50 + 6427: -37,49 + 6428: -37,49 + 6429: -38,50 + 6430: -38,50 + 6431: -38,49 + 6432: -38,51 + 6433: -37,52 + 6434: -37,52 + 6435: -38,52 + 6436: -38,51 + 6437: -37,51 + 6438: -35,50 + 6439: -35,49 + 6440: -35,50 + 6441: -36,51 + 6442: -37,51 + 6443: -38,52 + 6444: -38,51 + 6445: -38,50 + 6446: -38,50 + 6447: -38,51 + 6448: -41,51 + 6449: -41,52 + 6450: -42,52 + 6451: -43,51 + 6452: -43,51 + 6453: -42,50 + 6454: -42,50 + 6455: -42,52 + 6456: -43,52 + 6457: -43,50 + 6458: -43,50 + 6459: -42,49 + 6460: -41,49 + 6461: -40,50 + 6462: -40,52 + 6463: -41,52 + 6464: -42,51 + 6465: -41,50 + 6466: -40,51 + 6467: -42,51 + 6468: -30,47 + 6469: -29,41 + 6470: -30,42 + 6471: -30,42 + 6472: -29,42 + 6473: -28,42 + 6474: -28,41 + 6475: -28,40 + 6476: -29,41 + 6477: -35,43 + 6478: -37,42 + 6479: -4,33 + 6480: -5,34 + 6481: -4,32 + 6482: -3,30 + 6483: -2,30 + 6484: -1,30 + 6485: -1,29 + 6486: 0,31 + 6487: 0,32 + 6488: 0,33 + 6489: -1,33 + 6490: -1,31 + 6491: 0,30 + 6492: -4,29 + 6493: -5,29 + 6494: -5,29 + 6495: -5,31 + 6496: -5,33 + 6497: -4,34 + 6498: -4,34 + 6499: 2,29 + 6500: 4,30 + 6501: 4,30 + 6502: 4,32 + 6503: 3,34 + 6504: 2,33 + 6505: 2,31 + 6506: 2,24 + 6507: 4,26 + 6508: 2,20 + 6509: 3,19 + 6510: 4,19 + 6511: 6,19 + 6512: 7,20 + 6513: 9,20 + 6514: 9,18 + 6515: 6,15 + 6516: 6,14 + 6517: 6,16 + 6518: 6,17 + 6519: 7,17 + 6520: 7,17 + 6521: 7,16 + 6522: 9,16 + 6523: 11,14 + 6524: -2,19 + 6525: -1,19 + 6526: -2,20 + 6527: -3,21 + 6528: -2,22 + 6529: -1,23 + 6530: 0,24 + 6531: 0,25 + 6532: 0,26 + 6533: -1,26 + 6534: -2,27 + 6535: -4,27 + 6536: -5,26 + 6537: -5,25 + 6538: -5,24 + 6539: -1,25 + 6540: -1,27 + 6541: -3,27 + 6542: -4,26 + 6543: -3,25 + 6544: -1,23 + 6545: -2,22 + 6546: -3,22 + 6547: -3,20 + 6548: -1,24 + 6549: -1,24 + 6550: -2,24 + 6551: -2,22 + 6552: 0,22 + 6553: 0,23 + 6554: -3,23 + 6555: -2,25 + 6556: 0,25 + 6557: -1,26 + 6558: -2,26 + 6559: -4,25 + 6560: -4,24 + 6561: -4,21 + 6562: -5,19 + 6563: -4,19 + 6564: -5,20 + 6565: -4,21 + 6566: 10,29 + 6567: 11,28 + 6568: 11,28 + 6569: 12,29 + 6570: 12,30 + 6571: 11,32 + 6572: 9,31 + 6573: 8,31 + 6574: 8,28 + 6575: 10,28 + 6576: 7,31 + 6577: 7,31 + 6578: 6,36 + 6579: 6,37 + 6580: 3,36 + 6581: 2,37 + 6582: 0,36 + 6583: -1,37 + 6584: 2,40 + 6585: 4,39 + 6586: 4,37 + 6587: 4,37 + 6588: 3,37 + 6589: 10,40 + 6590: 10,40 + 6591: 9,43 + 6592: 9,42 + 6593: 10,42 + 6594: 10,43 + 6595: 11,43 + 6596: 12,43 + 6597: 12,42 + 6598: -25,33 + 6599: -24,32 + 6600: -25,34 + 6601: -23,34 + 6602: -22,34 + 6603: -21,34 + 6604: -20,34 + 6605: -22,33 + 6606: -18,31 + 6607: -17,34 + 6608: -18,34 + 6609: -16,34 + 6610: -17,35 + 6611: -17,35 + 6612: -17,36 + 6613: -18,37 + 6614: -18,42 + 6615: -18,44 + 6616: -18,46 + 6617: -18,48 + 6618: -17,48 + 6619: -17,49 + 6620: -18,51 + 6621: -17,51 + 6622: -16,51 + 6623: -17,51 + 6624: -14,47 + 6625: -14,46 + 6626: -13,46 + 6627: -11,46 + 6628: -11,46 + 6629: -11,49 + 6630: -12,49 + 6631: -14,49 + 6632: -14,49 + 6633: -14,33 + 6634: -15,33 + 6635: -15,31 + 6636: -16,31 + 6637: -14,29 + 6638: -12,29 + 6639: -14,30 + 6640: -11,28 + 6641: -11,27 + 6642: -9,28 + 6643: -10,30 + 6644: -11,30 + 6645: -12,27 + 6646: -14,27 + 6647: -13,26 + 6648: -14,26 + 6649: -12,22 + 6650: -13,17 + 6651: -12,17 + 6652: -12,9 + 6653: -15,4 + 6654: -16,4 + 6655: -15,3 + 6656: -16,3 + 6657: -18,3 + 6658: -19,3 + 6659: -20,6 + 6660: -21,6 + 6661: -22,5 + 6662: -23,4 + 6663: -26,4 + 6664: -26,6 + 6665: -7,4 + 6666: -10,2 + 6667: -10,0 + 6668: -10,-1 + 6669: -9,-2 + 6670: -9,-2 + 6671: -10,0 + 6672: -10,1 + 6673: -9,-3 + 6674: -10,-3 + 6675: -11,-2 + 6676: -13,-2 + 6677: -14,-2 + 6678: -13,-4 + 6679: -14,-6 + 6680: -12,-5 + 6681: -10,-6 + 6682: -9,-6 + 6683: -12,-6 + 6684: -13,-6 + 6685: -12,-8 + 6686: -13,-8 + 6687: -14,-8 + 6688: -7,-6 + 6689: -7,-5 + 6690: -6,-3 + 6691: -6,-3 + 6692: -4,-2 + 6693: -5,-2 + 6694: -2,-4 + 6695: -3,-5 + 6696: -4,-5 + 6697: -6,-6 + 6698: -7,-6 + 6699: 1,-2 + 6700: 1,-1 + 6701: 1,4 + 6702: 0,4 + 6703: -5,5 + 6704: 10,2 + 6705: 10,1 + 6706: 11,0 + 6707: 10,-4 + 6708: 10,0 + 6709: 13,5 + 6710: 13,6 + 6711: 20,5 + 6712: 19,4 + 6713: 22,5 + 6714: 25,8 + 6715: 25,9 + 6716: 25,10 + 6717: 25,9 + 6718: -35,7 + 6719: -36,7 + 6720: -38,14 + 6721: -40,20 + 6722: -41,30 + 6723: -41,30 + 6724: -45,30 + 6725: -45,30 + 6726: -46,31 + 6727: -46,33 + 6728: -48,31 + 6729: -47,32 + 6730: -55,31 + 6731: -56,31 + 6732: -49,36 + 6733: -50,36 + 6734: -48,45 + 6735: -49,46 + 6736: -51,46 + 6737: -53,47 + 6738: -57,47 + 6739: -57,36 + 6740: -57,35 + 6741: -56,35 + 6742: -56,36 + 6743: -57,32 + 6744: -58,31 + 6745: -59,29 + 6746: -59,30 + 6747: -58,26 + 6748: -59,26 + 6749: -58,28 + 6750: -58,23 + 6751: -58,22 + 6752: -59,21 + 6753: -58,18 + 6754: -59,22 + 6755: -59,23 + 6756: -60,24 + 6757: -60,24 + 6758: -57,14 + 6759: -58,15 + 6760: -59,15 + 6761: -59,17 + 6762: -59,20 + 6763: -57,7 + 6764: -57,6 + 6765: -58,6 + 6766: -59,7 + 6767: -59,4 + 6768: -59,3 + 6769: -60,5 + 6770: -60,6 + 6771: -60,5 + 6772: -60,4 + 6773: -62,6 + 6774: -68,6 + 6775: -69,6 + 6776: -71,4 + 6777: -72,4 + 6778: -73,4 + 6779: -75,6 + 6780: -76,6 + 6781: -73,6 + 6782: -52,4 + 6783: -54,4 + 6784: -55,4 + 6785: -54,4 + 6786: -53,5 + 6787: -46,4 + 6788: -45,4 + 6789: -48,4 + 6790: -49,3 + 6791: -59,2 + 6792: -59,-4 + 6793: -59,-8 + 6794: -50,3 + 6795: -31,31 + 6796: -29,31 + 6797: -28,31 + 6798: -28,31 + 6799: -47,49 + 6800: -72,33 + 6801: -71,33 + 6802: -71,33 + 6803: -73,34 + 6804: -73,34 + 6805: -75,32 + 6806: -69,34 + 6807: -70,33 + 6808: -72,33 + 6809: -72,35 + 6810: -73,35 + 6811: -74,34 + 6812: -74,28 + 6813: -64,31 + 6814: -64,31 + 6815: -66,28 + 6816: -65,27 + 6817: -64,26 + 6818: -65,21 + 6831: 1,23 + 6832: 1,23 + 6833: 1,23 + 6834: 1,29 + 6835: 1,30 + 6836: 1,30 + 6837: 1,29 + 6838: 1,30 + 6839: 6,29 + 6840: 6,28 + 6841: 6,28 + 6842: 6,29 + 6843: 6,29 + 6844: 5,33 + 6845: 5,33 + 6846: 1,33 + 6847: 1,33 + 6848: 1,33 + 6849: 3,35 + 6850: 3,35 + 6851: 3,35 + 6852: 3,35 + 6853: 5,25 + 6854: 5,24 + 6855: 5,25 + 6856: 5,19 + 6857: 5,19 + 6858: 8,19 + 6859: 8,19 + 6860: 8,19 + 6861: -52,7 + 6862: -51,7 + 6863: -55,18 + 6864: -55,18 + 6865: -55,18 + 6866: -55,20 + 6867: -54,20 + 6868: -53,19 + 6869: -53,18 + 6870: -53,18 + 6871: -23,32 + 6872: -22,31 + 6873: -23,31 + 6874: -26,34 + 6875: -26,32 + 6876: -31,32 + 6877: -30,33 + 6881: -20,33 + 6882: -20,33 + 6883: -19,33 + 6884: -24,33 + 6885: -21,35 + 7167: -46,-10 + 7168: -45,-10 + 7169: -44,-10 + 7170: -42,-11 + 7171: -41,-11 + 7172: -41,-12 + 7173: -44,-12 + 7174: -45,-12 + 7175: -45,-13 + 7176: -43,-14 + 7177: -41,-14 + 7178: -41,-14 + 7179: -43,-14 + 7180: -45,-14 + 7181: -46,-14 + 7182: -46,-12 + 7183: -46,-11 + 7184: -43,-11 + 7185: -40,-11 + 7186: -39,-12 + 7187: -39,-13 + 7188: -41,-13 + 7189: -43,-13 + 7190: -44,-13 + 7191: -43,-14 + 7192: -40,-14 + 7193: -38,-14 + 7194: -38,-12 + 7195: -39,-11 + 7196: -40,-10 + 7197: -41,-10 + 7198: -42,-10 + 7199: -43,-10 + 7200: -43,-12 + 7201: -42,-12 + 7202: -42,-13 + 7277: -43,1 + 7278: -43,1 + 7286: -43,66 + 7287: -43,66 + 7288: -43,66 + 7294: -73,15 + 7295: -74,15 + 7296: -74,15 + 7297: -75,15 + 7298: -74,15 + 7337: -17,54 + 7338: -18,54 + 7339: -18,55 + 7340: -17,55 + 7341: -16,56 + 7342: -17,57 + 7343: -17,56 + 7344: -18,57 + 7345: -16,55 + 7346: -16,54 + 7743: 23,13 + 7744: 23,13 + 7745: 22,11 + 7746: 22,12 + 7747: 22,13 + 7748: 24,13 + 7749: 25,14 + 7750: 25,15 + 7751: 25,16 + 7752: 25,18 + 7753: 25,18 + 7754: 26,15 + 7755: 26,15 + 7756: 26,13 + 7757: 25,12 + 7758: 25,11 + 7759: 25,13 + 7760: 26,13 + 7971: -3,31 + 7972: -3,32 + 7973: -2,31 + 7974: -3,29 + 7998: -64,60 + 7999: -64,59 + 8000: -64,58 + 8001: -66,57 + - node: + cleanable: True + angle: 3.141592653589793 rad + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 2573: -18,22 + 2574: -17,22 + 2575: -16,22 + 2576: -16,23 + 2577: -17,24 + 2578: -18,23 + 2579: -16,23 + 2580: -16,25 + 2581: -18,26 + 2582: -18,24 + 2583: -16,25 + 2584: -17,26 + 2585: -17,26 + 2586: -17,24 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavyMonotile + decals: + 7761: 26,13 + 7762: 26,12 + 7763: 26,11 + 7764: 26,11 + 7765: 26,10 + 7766: 25,13 + 7767: 24,13 + 7768: 25,15 + 7769: 24,15 + 7770: 24,17 + 7771: 23,15 + 7772: 22,17 + 7773: 23,16 + 7774: 23,13 + 7775: 22,12 + 7997: -63,60 + - node: + color: '#FFFFFFFF' + id: DirtLight + decals: + 1616: -30,52 + 1617: -29,53 + 1618: -27,54 + 1619: -27,54 + 1620: -28,55 + 1621: -30,54 + 1622: -29,53 + 1631: -44,50 + 1632: -44,50 + 1633: -44,49 + 1634: -40,45 + 1667: -43,36 + 1668: -43,37 + 1669: -44,39 + 1670: -45,37 + 1671: -43,36 + 1672: -40,38 + 1673: -37,39 + 1674: -39,40 + 1675: -42,38 + 1676: -46,38 + 1677: -40,35 + 1678: -39,39 + 1679: -41,38 + 1680: -44,37 + 1681: -41,39 + 1682: -37,36 + 1683: -40,36 + 1684: -43,37 + 1685: -36,37 + 1686: -35,38 + 1687: -35,38 + 1688: -35,37 + 1689: -35,35 + 1925: -54,46 + 1926: -47,40 + 1927: -48,37 + 2621: 3,27 + 2622: 13,28 + 2623: 10,37 + 6975: 25,24 + 6976: 26,24 + 6977: 27,24 + 6978: 28,24 + 6979: 28,25 + 6980: 26,25 + 6981: 25,25 + 6982: 25,26 + 6983: 26,26 + 6984: 27,25 + 6985: 27,25 + 6986: 28,26 + 6987: 27,26 + 6988: 26,26 + 6989: 25,26 + 6990: 26,27 + 6991: 28,27 + 6992: 28,27 + 6993: 28,28 + 6994: 26,28 + 6995: 25,27 + 6996: 25,27 + 6997: 25,28 + 6998: 27,25 + 6999: 27,25 + 7000: 27,24 + 7001: 25,23 + 7002: 27,23 + 7003: 28,23 + 7004: 27,23 + 7082: -75,-10 + 7083: -75,-10 + 7084: -76,-11 + 7085: -76,-12 + 7086: -75,-12 + 7087: -74,-11 + 7088: -74,-10 + 7089: -73,-10 + 7090: -74,-11 + 7091: -73,-11 + 7092: -72,-10 + 7093: -71,-11 + 7094: -70,-12 + 7095: -67,-12 + 7096: -68,-12 + 7097: -69,-12 + 7098: -70,-11 + 7099: -70,-11 + 7100: -69,-11 + 7101: -65,-11 + 7102: -62,-11 + 7103: -63,-12 + 7104: -63,-12 + 7105: -60,-11 + 7106: -60,-12 + 7107: -60,-12 + 7108: -60,-12 + 7109: -60,-10 + 7110: -62,-10 + 7111: -64,-10 + 7112: -65,-10 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + decals: + 258: -9,1 + 259: -9,0 + 260: -10,0 + 261: -9,1 + 262: -7,2 + 263: -7,1 + 264: -7,-1 + 265: -7,-3 + 266: -6,-4 + 267: -5,-3 + 268: -3,-2 + 269: -2,-2 + 270: -2,-3 + 271: -2,-4 + 272: -3,-5 + 273: -4,-5 + 274: -6,-5 + 275: -10,-4 + 276: -11,-4 + 277: -12,-5 + 278: -13,-5 + 279: -14,-5 + 288: -18,-12 + 289: -17,-11 + 290: -15,-12 + 291: -13,-11 + 292: -13,-12 + 293: -12,-13 + 294: -12,-14 + 295: -13,-14 + 307: 4,-11 + 308: 5,-11 + 309: 5,-12 + 310: -11,5 + 311: -9,6 + 312: -5,5 + 313: -5,4 + 314: -3,4 + 315: 0,6 + 316: 2,7 + 317: 4,5 + 318: 5,4 + 319: 7,5 + 320: 7,5 + 321: 6,5 + 322: 7,5 + 323: 9,6 + 324: 11,5 + 325: 12,5 + 326: 15,5 + 327: 18,6 + 328: 21,5 + 329: 20,4 + 330: 20,5 + 331: 21,6 + 332: 26,5 + 333: 27,6 + 334: 27,7 + 335: 28,9 + 336: 27,11 + 337: 25,12 + 338: 27,14 + 339: 27,15 + 340: 27,17 + 341: 25,17 + 342: 26,19 + 343: 27,19 + 370: 10,-3 + 371: 10,-1 + 372: 10,0 + 373: 4,3 + 374: 4,5 + 375: 1,5 + 376: 0,4 + 377: 2,3 + 378: 2,4 + 379: 2,6 + 380: 2,6 + 381: 1,4 + 382: 1,-2 + 383: 2,-1 + 384: 2,-2 + 385: 1,-3 + 386: 1,-1 + 387: 2,-1 + 388: 2,-2 + 389: 2,-3 + 390: 1,-2 + 391: 2,-1 + 409: -9,9 + 410: -9,8 + 411: -9,8 + 412: -13,12 + 413: -12,12 + 414: -13,13 + 415: -13,9 + 416: -13,9 + 417: -12,9 + 418: -13,10 + 419: -16,14 + 420: -18,12 + 421: -9,12 + 422: -8,12 + 423: -12,13 + 424: -13,15 + 425: -12,16 + 426: -12,16 + 427: -13,15 + 428: -13,17 + 429: -12,18 + 430: -14,17 + 431: -16,17 + 432: -17,17 + 433: -18,16 + 434: -16,18 + 435: -12,18 + 436: -13,17 + 437: -13,18 + 438: -13,20 + 439: -14,20 + 440: -13,19 + 441: -12,21 + 442: -13,22 + 443: -13,22 + 444: -14,22 + 445: -13,22 + 446: -13,22 + 447: -13,24 + 448: -14,25 + 449: -13,24 + 450: -12,23 + 451: -13,25 + 452: -13,27 + 453: -12,27 + 454: -13,27 + 489: -3,33 + 490: -4,34 + 491: -4,32 + 492: -4,32 + 493: -4,30 + 494: -2,30 + 495: -1,30 + 496: 0,31 + 497: -1,30 + 498: -2,29 + 499: -3,29 + 525: -2,20 + 526: -2,21 + 527: -3,25 + 528: -1,25 + 529: 0,25 + 530: 0,24 + 531: -1,23 + 532: -2,24 + 533: -2,25 + 534: -2,24 + 535: -3,22 + 536: -3,21 + 538: -12,31 + 539: -13,31 + 540: -13,31 + 541: -13,29 + 542: -14,29 + 543: -13,27 + 544: -10,9 + 545: -11,8 + 546: -6,-15 + 547: -6,-15 + 548: -8,-13 + 549: 0,-15 + 550: 0,-16 + 551: 0,-15 + 552: 0,-15 + 553: 1,-14 + 554: 2,-14 + 555: 2,-15 + 556: 1,-15 + 557: 1,-15 + 558: 15,-10 + 559: 14,-10 + 560: 14,-9 + 561: 15,-8 + 562: 14,-8 + 563: 13,-8 + 564: 14,-10 + 565: 15,-11 + 566: 15,-11 + 567: 14,-12 + 568: 13,-11 + 569: 13,-10 + 570: 15,-11 + 571: 15,-9 + 572: 13,-8 + 573: 13,-8 + 589: 19,-1 + 590: 20,-1 + 591: 21,-1 + 592: 20,-3 + 593: 20,-3 + 594: 19,-2 + 595: 20,0 + 596: 20,1 + 597: 19,1 + 598: 19,0 + 599: 20,2 + 600: 19,2 + 601: 19,2 + 602: 20,0 + 659: -17,28 + 660: -16,28 + 661: -18,28 + 662: -17,27 + 663: -9,27 + 664: -10,28 + 665: -7,29 + 666: -7,30 + 667: -8,30 + 668: -11,29 + 669: -5,29 + 670: -5,30 + 671: -5,31 + 672: -5,32 + 673: -5,33 + 674: -4,33 + 675: -3,34 + 676: -2,34 + 677: 0,33 + 678: 0,32 + 679: 0,31 + 680: -1,30 + 681: -2,29 + 682: -3,29 + 683: -4,30 + 684: -4,30 + 685: -5,30 + 686: -9,29 + 687: -8,29 + 688: -8,28 + 689: -9,28 + 690: -9,29 + 691: -8,29 + 692: -8,28 + 755: -45,-8 + 756: -46,-7 + 757: -44,-8 + 758: -44,-8 + 759: -44,-7 + 760: -45,-7 + 795: -41,4 + 796: -41,5 + 797: -42,3 + 798: -41,1 + 799: -41,0 + 800: -42,1 + 801: -42,5 + 802: -41,6 + 803: -38,6 + 804: -35,5 + 805: -34,5 + 806: -34,3 + 807: -33,2 + 808: -32,4 + 809: -33,5 + 810: -35,5 + 811: -34,4 + 812: -33,1 + 813: -33,1 + 814: -34,1 + 815: -35,3 + 816: -36,5 + 817: -37,5 + 818: -37,7 + 819: -35,7 + 820: -35,7 + 821: -37,7 + 822: -38,7 + 823: -35,6 + 824: -32,5 + 825: -31,5 + 826: -33,6 + 827: -33,6 + 828: -36,6 + 829: -37,4 + 830: -37,3 + 831: -38,3 + 832: -39,2 + 833: -38,0 + 834: -37,2 + 835: -39,2 + 836: -38,0 + 837: -37,0 + 838: -37,1 + 839: -38,1 + 877: -29,5 + 878: -30,5 + 879: -30,4 + 880: -27,5 + 881: -27,6 + 882: -28,6 + 883: -27,5 + 884: -24,4 + 885: -21,5 + 886: -20,5 + 887: -22,6 + 888: -21,5 + 889: -17,4 + 890: -16,5 + 891: -16,6 + 892: -18,6 + 893: -19,6 + 894: -22,6 + 895: -25,5 + 896: -27,5 + 897: -24,4 + 898: -21,4 + 899: -17,4 + 900: -17,5 + 901: -20,6 + 902: -23,6 + 903: -25,6 + 904: -28,5 + 905: -29,5 + 906: -30,4 + 907: -27,4 + 908: -21,4 + 909: -19,4 + 910: -17,5 + 911: -20,6 + 912: -26,5 + 913: -29,5 + 914: -30,5 + 915: -19,6 + 916: -20,7 + 917: -21,7 + 918: -21,7 + 919: -18,4 + 920: -18,3 + 921: -16,3 + 922: -17,3 + 923: -18,3 + 1237: -38,9 + 1238: -39,11 + 1239: -39,11 + 1240: -38,12 + 1241: -38,14 + 1242: -38,13 + 1243: -37,15 + 1244: -38,16 + 1245: -39,16 + 1246: -39,15 + 1247: -37,15 + 1248: -38,16 + 1249: -38,17 + 1250: -39,17 + 1251: -38,17 + 1252: -37,19 + 1253: -38,21 + 1254: -39,20 + 1255: -38,21 + 1256: -39,21 + 1257: -40,21 + 1258: -38,21 + 1259: -37,23 + 1260: -37,25 + 1261: -38,22 + 1262: -38,21 + 1263: -37,23 + 1264: -38,26 + 1265: -39,26 + 1266: -38,28 + 1267: -37,30 + 1268: -38,32 + 1269: -38,33 + 1270: -39,32 + 1271: -39,31 + 1272: -39,32 + 1273: -42,32 + 1274: -43,31 + 1275: -44,33 + 1276: -45,33 + 1277: -44,31 + 1278: -43,31 + 1279: -40,32 + 1280: -36,33 + 1281: -33,33 + 1282: -30,32 + 1283: -31,33 + 1284: -31,33 + 1285: -27,32 + 1286: -27,33 + 1287: -29,33 + 1288: -24,33 + 1289: -22,33 + 1290: -23,32 + 1291: -22,32 + 1292: -21,32 + 1293: -23,31 + 1294: -22,32 + 1295: -19,33 + 1296: -16,32 + 1297: -16,31 + 1298: -17,32 + 1299: -16,33 + 1300: -18,33 + 1301: -21,33 + 1302: -25,33 + 1303: -26,32 + 1304: -24,27 + 1305: -23,26 + 1306: -24,27 + 1307: -27,28 + 1308: -26,27 + 1309: -24,33 + 1310: -27,34 + 1311: -30,33 + 1312: -32,33 + 1313: -33,33 + 1314: -36,33 + 1315: -39,32 + 1316: -41,32 + 1317: -43,32 + 1318: -45,32 + 1319: -49,33 + 1320: -50,32 + 1321: -49,31 + 1322: -48,32 + 1323: -47,31 + 1324: -47,31 + 1325: -47,32 + 1326: -49,33 + 1327: -52,33 + 1328: -55,33 + 1329: -57,32 + 1330: -57,31 + 1331: -55,33 + 1332: -54,32 + 1333: -56,32 + 1334: -58,31 + 1335: -58,30 + 1336: -59,28 + 1337: -58,27 + 1338: -57,27 + 1339: -59,26 + 1340: -59,23 + 1341: -57,22 + 1342: -57,24 + 1343: -59,24 + 1344: -59,23 + 1345: -59,21 + 1346: -59,19 + 1347: -59,16 + 1348: -58,14 + 1349: -57,14 + 1350: -57,16 + 1351: -58,16 + 1352: -59,14 + 1353: -54,18 + 1354: -55,18 + 1355: -54,20 + 1356: -55,20 + 1357: -54,18 + 1358: -53,18 + 1359: -53,20 + 1360: -54,20 + 1361: -58,15 + 1362: -53,21 + 1363: -53,21 + 1364: -55,21 + 1365: -55,21 + 1366: -53,20 + 1367: -53,21 + 1368: -59,15 + 1369: -58,13 + 1370: -58,11 + 1371: -58,8 + 1372: -58,9 + 1373: -59,10 + 1374: -57,11 + 1375: -57,6 + 1376: -58,5 + 1377: -59,6 + 1378: -62,5 + 1379: -63,4 + 1380: -63,4 + 1381: -64,4 + 1382: -66,4 + 1383: -66,4 + 1384: -62,6 + 1385: -61,7 + 1386: -64,6 + 1387: -68,6 + 1388: -71,5 + 1389: -71,4 + 1390: -73,4 + 1391: -74,6 + 1392: -74,6 + 1393: -75,6 + 1394: -76,5 + 1395: -76,4 + 1396: -75,5 + 1397: -59,1 + 1398: -59,1 + 1399: -58,2 + 1400: -57,1 + 1401: -57,0 + 1402: -58,-1 + 1403: -58,-3 + 1404: -57,-4 + 1405: -58,-5 + 1406: -59,-5 + 1407: -59,-7 + 1408: -58,-10 + 1409: -58,-7 + 1410: -58,-5 + 1411: -59,-5 + 1412: -59,-8 + 1413: -57,-9 + 1414: -58,-10 + 1415: -58,-12 + 1416: -50,4 + 1417: -50,4 + 1418: -51,4 + 1419: -49,3 + 1420: -45,6 + 1421: -46,5 + 1422: -47,4 + 1423: -46,4 + 1424: -45,4 + 1425: -48,6 + 1426: -41,8 + 1427: -41,8 + 1428: -42,9 + 1429: -43,10 + 1430: -43,10 + 1431: -43,11 + 1432: -42,11 + 1433: -41,11 + 1434: -41,11 + 1435: -43,10 + 1436: -42,9 + 1437: -43,8 + 1438: -41,9 + 1439: -42,10 + 1440: -41,9 + 1441: -52,12 + 1448: -54,28 + 1449: -55,28 + 1450: -54,28 + 1451: -52,28 + 1452: -52,28 + 1453: -49,28 + 1454: -49,29 + 1455: -52,29 + 1456: -55,28 + 1595: -75,4 + 1596: -76,4 + 1597: -76,5 + 1996: -8,42 + 1997: -9,43 + 1998: -9,40 + 1999: -7,40 + 2000: -7,43 + 2001: -9,41 + 2002: -9,39 + 2003: -6,40 + 2004: -7,43 + 2005: -8,44 + 2006: -10,42 + 2007: -8,39 + 2008: -6,41 + 2489: -40,-8 + 2490: -40,-7 + 2491: -41,-6 + 2492: -41,-6 + 2493: -39,-6 + 2494: -41,-5 + 2495: -42,-4 + 2496: -42,-6 + 2497: -42,-4 + 2498: -41,-3 + 2499: -40,-2 + 2500: -38,-3 + 2501: -39,-3 + 2502: -39,-4 + 2503: -40,-2 + 2504: -41,-4 + 2505: -40,-4 + 2506: -39,-3 + 2507: -41,-2 + 2508: -41,-3 + 2509: -39,-3 + 2510: -38,-4 + 2511: -39,-6 + 2512: -36,-8 + 2513: -35,-8 + 2514: -36,-8 + 2515: -35,-7 + 2516: -33,-8 + 2517: -33,-8 + 2518: -35,-8 + 2519: -34,-8 + 2520: -34,-9 + 2521: -34,-10 + 2522: -35,-10 + 2523: -34,-10 + 2524: -34,-11 + 2525: -33,-11 + 2526: -32,-9 + 2527: -34,-8 + 2528: -37,-7 + 2529: -38,-7 + 2530: -38,-8 + 2531: -37,-8 + 2532: -39,-7 + 2533: -39,-8 + 2534: -39,-8 + 2535: -40,-5 + 2536: -40,-6 + 2537: -39,-7 + 2538: -38,-5 + 2539: -40,-6 + 2982: 7,12 + 2983: 6,12 + 2984: 7,11 + 2985: 10,12 + 2986: 11,12 + 2987: 11,11 + 2988: 9,12 + 2989: 8,12 + 2990: 11,12 + 2991: 10,13 + 2992: 7,12 + 2993: 10,13 + 2994: 10,15 + 2995: 8,16 + 2996: 8,16 + 2997: 10,16 + 2998: 8,16 + 2999: 6,16 + 3000: 8,16 + 3001: 10,16 + 3002: 10,17 + 3003: 8,16 + 3004: 8,17 + 3005: 7,17 + 3006: 7,17 + 3007: 9,20 + 3008: 10,20 + 3009: 12,20 + 3010: 12,20 + 3011: 11,20 + 3012: 11,18 + 3013: 11,16 + 3014: 10,15 + 3015: 11,15 + 3016: 11,15 + 3017: 10,14 + 3018: 10,14 + 3019: 11,14 + 3020: 8,15 + 3021: 8,16 + 3022: 7,16 + 3023: 9,16 + 3024: 9,16 + 3025: 3,16 + 3026: 0,17 + 3027: -1,16 + 3028: -2,15 + 3029: -2,15 + 3030: -2,15 + 3031: -2,17 + 3032: -1,17 + 3033: 2,16 + 3034: 3,16 + 3035: 3,15 + 3036: 2,16 + 3037: 0,15 + 3038: 0,15 + 3039: 1,15 + 3040: 3,14 + 3041: 4,14 + 3042: 4,15 + 3043: 4,16 + 3044: 2,16 + 3045: -1,15 + 3046: 4,20 + 3047: 3,21 + 3048: 2,21 + 3049: 2,22 + 3050: 3,22 + 3051: 4,22 + 3052: 3,23 + 3053: 2,23 + 3054: 2,25 + 3055: 3,26 + 3056: 4,26 + 3057: 4,25 + 3058: 3,26 + 3059: 2,27 + 3060: 5,28 + 3061: 5,29 + 3062: 4,29 + 3063: 3,29 + 3064: 2,29 + 3065: 4,29 + 3066: 5,30 + 3067: 3,30 + 3068: 3,30 + 3069: 4,30 + 3070: 2,32 + 3071: 2,31 + 3072: 3,32 + 3073: 3,34 + 3074: 3,34 + 3075: 4,33 + 3076: 4,33 + 3077: 6,25 + 3078: 6,25 + 3079: 6,24 + 3080: 7,23 + 3081: 9,23 + 3082: 8,24 + 3083: 8,23 + 3084: 10,22 + 3085: 10,22 + 3086: 7,23 + 3087: 5,23 + 3088: 9,24 + 3089: 9,25 + 3090: 8,24 + 3091: 12,29 + 3092: 11,29 + 3093: 9,29 + 3094: 8,28 + 3095: 10,28 + 3096: 9,29 + 3097: 7,29 + 3098: 10,28 + 3099: 12,29 + 3100: 11,31 + 3101: 9,31 + 3102: 7,30 + 3103: 8,29 + 3104: 12,28 + 3105: 12,29 + 3106: 6,34 + 3107: 9,34 + 3108: 9,34 + 3109: 12,34 + 3110: 12,35 + 3111: 12,36 + 3112: 7,36 + 3113: 6,37 + 3114: 6,37 + 3115: 12,36 + 3116: 12,37 + 3117: 12,36 + 3118: 11,34 + 3119: 9,34 + 3120: 9,33 + 3121: 11,33 + 3122: 12,33 + 3123: 3,36 + 3124: 4,36 + 3125: 4,38 + 3126: 2,40 + 3127: 0,39 + 3128: -1,38 + 3129: 0,36 + 3130: 2,39 + 3131: 0,40 + 3132: 0,38 + 3133: -1,37 + 3134: 0,36 + 3321: -2,10 + 3322: -2,10 + 3323: -3,9 + 3324: -1,8 + 3325: 0,8 + 3326: 1,8 + 3327: 1,10 + 3328: 0,10 + 3329: -2,10 + 3330: 0,9 + 3331: 1,9 + 3332: 0,9 + 3333: -3,8 + 3661: -65,54 + 3662: -66,55 + 3663: -65,54 + 3664: -64,53 + 3665: -63,52 + 3666: -62,55 + 3667: -65,55 + 3668: -66,54 + 3669: -64,51 + 3670: -60,50 + 3671: -60,50 + 3672: -61,51 + 3673: -63,51 + 3674: -61,51 + 3675: -62,52 + 3676: -63,53 + 3677: -63,53 + 3678: -61,52 + 3679: -60,52 + 3680: -60,53 + 3681: -62,53 + 3682: -61,54 + 3683: -61,55 + 3684: -61,55 + 3685: -64,55 + 3686: -65,54 + 3687: -65,53 + 3688: -63,51 + 3689: -61,51 + 3690: -57,54 + 3691: -57,53 + 3692: -57,54 + 3693: -57,54 + 3694: -58,53 + 3695: -57,55 + 3696: -58,57 + 3697: -57,58 + 3698: -55,57 + 3699: -53,57 + 3707: -53,58 + 3708: -56,58 + 3709: -59,58 + 3710: -58,56 + 3711: -58,55 + 3712: -56,54 + 3713: -52,54 + 3714: -51,54 + 3715: -52,54 + 3716: -52,57 + 3717: -54,57 + 3718: -56,56 + 3719: -57,55 + 3720: -55,54 + 3721: -55,55 + 3722: -56,56 + 3723: -56,55 + 3724: -55,55 + 3725: -53,55 + 3726: -47,55 + 3727: -47,55 + 3728: -47,54 + 3729: -47,54 + 3730: -49,55 + 3731: -49,55 + 3732: -49,50 + 3733: -47,51 + 3734: -47,50 + 3735: -47,50 + 3736: -47,51 + 3737: -49,57 + 3738: -49,57 + 3739: -48,60 + 3740: -49,61 + 3741: -49,60 + 3742: -47,58 + 3743: -47,58 + 3744: -48,58 + 3745: -49,62 + 3746: -49,61 + 3747: -48,58 + 3748: -47,61 + 3749: -47,62 + 3750: -43,63 + 3751: -44,62 + 3752: -44,62 + 3753: -44,64 + 3754: -43,64 + 3755: -43,63 + 3756: -43,62 + 3757: -42,61 + 3758: -42,64 + 3759: -43,65 + 3760: -44,64 + 3761: -44,63 + 3762: -48,65 + 3763: -47,65 + 3764: -48,65 + 3765: -46,64 + 3766: -48,64 + 3767: -49,64 + 3768: -51,64 + 3769: -53,65 + 3770: -45,64 + 3771: -46,65 + 3772: -46,65 + 3773: -46,64 + 3774: -52,64 + 3775: -52,64 + 3776: -53,63 + 3777: -52,61 + 3778: -51,60 + 3779: -52,61 + 3780: -54,60 + 3781: -57,60 + 3782: -60,61 + 3783: -62,60 + 3784: -62,60 + 3785: -59,60 + 3786: -57,61 + 3787: -55,61 + 3788: -55,60 + 3789: -59,61 + 3790: -60,61 + 3791: -57,60 + 3792: -55,60 + 3793: -56,61 + 3794: -57,61 + 3795: -59,61 + 3796: -53,82 + 3797: -53,83 + 3798: -53,83 + 3799: -52,86 + 3800: -51,88 + 3801: -52,90 + 3802: -53,90 + 3803: -53,89 + 3804: -53,87 + 3805: -53,85 + 3806: -52,84 + 3807: -51,83 + 3808: -50,86 + 3809: -51,88 + 3810: -52,88 + 3811: -52,87 + 3812: -52,85 + 3813: -52,84 + 3814: -55,84 + 3815: -56,84 + 3816: -56,83 + 3817: -55,82 + 3818: -55,83 + 3819: -55,83 + 3820: -56,83 + 3821: -56,84 + 3822: -55,86 + 3823: -56,86 + 3824: -56,88 + 3825: -55,89 + 3826: -55,90 + 3827: -56,89 + 3828: -54,89 + 3829: -56,89 + 3830: -57,89 + 3831: -57,86 + 3832: -58,88 + 3833: -59,89 + 3834: -60,89 + 3835: -61,88 + 3836: -61,87 + 3837: -60,86 + 3838: -61,89 + 3839: -62,88 + 3840: -62,86 + 3841: -61,85 + 3842: -61,87 + 3843: -62,89 + 3844: -62,87 + 3845: -62,85 + 3846: -60,85 + 3847: -61,86 + 3848: -62,85 + 3849: -61,83 + 3850: -60,84 + 3851: -59,84 + 3852: -61,83 + 3853: -61,83 + 3854: -62,83 + 3855: -59,83 + 3856: -57,84 + 3857: -58,84 + 3858: -58,86 + 3859: -58,85 + 3860: -58,84 + 3861: -58,87 + 3862: -60,88 + 3863: -61,87 + 3864: -61,89 + 3865: -62,89 + 3866: -62,88 + 4075: -58,52 + 4076: -58,50 + 4077: -58,49 + 4078: -57,50 + 4079: -58,51 + 4080: -58,50 + 4081: -55,51 + 4082: -55,50 + 4083: -54,49 + 4084: -55,50 + 4085: -55,52 + 4086: -55,52 + 4087: -52,51 + 4088: -52,51 + 4089: -52,49 + 4090: -52,49 + 4091: -51,50 + 4092: -51,51 + 4093: -52,50 + 4094: -51,49 + 4095: -52,52 + 4452: -61,45 + 4453: -63,45 + 4454: -64,45 + 4455: -65,44 + 4456: -62,44 + 4457: -61,45 + 4458: -63,45 + 4459: -65,45 + 4460: -64,44 + 4461: -62,44 + 4462: -63,45 + 4463: -64,45 + 4464: -63,44 + 4465: -63,44 + 4466: -63,42 + 4467: -64,42 + 4468: -62,42 + 4469: -61,41 + 4470: -61,40 + 4471: -61,38 + 4472: -62,38 + 4473: -62,39 + 4474: -62,40 + 4475: -63,39 + 4476: -63,38 + 4477: -65,39 + 4478: -65,39 + 4479: -65,38 + 4480: -65,41 + 4481: -64,42 + 4482: -63,42 + 4483: -62,42 + 4524: -71,49 + 4525: -73,49 + 4526: -73,48 + 4527: -73,47 + 4528: -72,47 + 4529: -70,48 + 4530: -71,49 + 4531: -71,47 + 4532: -69,47 + 4533: -69,47 + 4534: -70,48 + 4535: -70,49 + 4536: -72,48 + 4537: -72,48 + 4574: -67,50 + 4575: -67,49 + 4576: -68,49 + 4627: -71,54 + 4628: -71,55 + 4629: -71,54 + 4630: -70,53 + 4631: -70,51 + 4632: -70,51 + 4633: -72,52 + 4634: -75,51 + 4635: -73,51 + 4636: -70,54 + 4637: -71,56 + 4638: -71,55 + 4639: -71,54 + 4640: -71,53 + 4702: -60,31 + 4703: -61,33 + 4704: -62,33 + 4705: -62,32 + 4706: -61,31 + 4707: -62,31 + 4708: -62,34 + 4709: -60,33 + 4710: -60,33 + 4711: -60,32 + 4712: -60,31 + 4713: -62,31 + 4718: -82,29 + 4719: -82,30 + 4720: -82,32 + 4721: -83,33 + 4722: -83,31 + 4723: -83,29 + 4724: -83,29 + 4725: -82,33 + 4726: -81,33 + 4727: -79,33 + 4728: -77,33 + 4729: -77,33 + 4730: -79,32 + 4731: -81,32 + 4732: -82,31 + 4733: -81,30 + 4734: -78,30 + 4735: -79,32 + 4736: -80,30 + 4737: -79,29 + 4738: -77,29 + 4739: -79,32 + 4740: -81,31 + 4741: -80,29 + 4742: -78,29 + 4743: -74,35 + 4744: -75,34 + 4745: -74,30 + 4746: -75,31 + 4747: -75,31 + 4748: -75,27 + 4749: -74,25 + 4750: -75,25 + 4751: -74,26 + 4752: -75,25 + 4753: -76,25 + 4754: -75,23 + 4755: -75,25 + 4756: -76,25 + 4757: -77,25 + 4758: -75,24 + 4759: -74,24 + 4760: -75,26 + 4761: -76,26 + 4762: -75,23 + 4763: -74,21 + 4764: -75,20 + 4765: -75,19 + 4766: -75,22 + 4767: -75,23 + 4768: -75,20 + 4769: -75,16 + 4770: -75,15 + 4771: -74,16 + 4772: -74,16 + 4773: -75,17 + 4774: -73,17 + 4775: -72,17 + 4776: -71,17 + 4777: -73,16 + 4778: -74,16 + 4779: -73,15 + 4780: -72,16 + 4781: -75,16 + 4782: -72,15 + 4783: -70,17 + 4784: -71,17 + 4785: -69,16 + 4786: -69,17 + 4787: -71,16 + 4804: -78,21 + 4805: -77,21 + 4806: -77,22 + 4807: -78,22 + 4808: -77,20 + 4809: -79,19 + 4810: -81,20 + 4811: -82,20 + 4812: -83,19 + 4813: -81,18 + 4814: -79,18 + 4815: -77,19 + 4816: -77,19 + 4817: -86,20 + 4818: -86,20 + 4819: -86,21 + 4820: -86,24 + 4821: -86,24 + 4822: -86,23 + 4823: -86,25 + 4824: -86,27 + 4825: -84,27 + 4826: -81,27 + 4827: -80,26 + 4828: -80,25 + 4829: -80,23 + 4830: -81,23 + 4831: -82,22 + 4832: -82,23 + 4833: -82,23 + 4834: -81,23 + 4835: -79,26 + 4836: -80,26 + 4837: -80,25 + 4838: -79,24 + 4839: -79,24 + 4840: -71,31 + 4841: -72,31 + 4842: -71,31 + 4843: -70,31 + 4844: -70,30 + 4845: -70,28 + 4846: -70,28 + 5031: -64,13 + 5032: -65,14 + 5033: -64,11 + 5034: -64,10 + 5035: -64,12 + 5036: -65,13 + 5037: -65,13 + 5038: -65,11 + 5039: -61,12 + 5040: -62,14 + 5041: -62,11 + 5042: -62,10 + 5043: -61,10 + 5044: -62,13 + 7229: -45,-10 + 7230: -46,-10 + 7231: -46,-11 + 7232: -46,-12 + 7233: -45,-13 + 7234: -45,-14 + 7235: -46,-14 + 7236: -43,-14 + 7237: -40,-13 + 7238: -40,-10 + 7239: -41,-9 + 7240: -41,-9 + 7241: -39,-10 + 7242: -38,-11 + 7243: -38,-11 + 7244: -40,-11 + 7245: -41,-11 + 7246: -41,-12 + 7247: -41,-13 + 7248: -42,-12 + 7249: -42,-11 + 7250: -43,-11 + 7251: -40,-13 + 7252: -38,-12 + 7253: -40,-11 + 7254: -42,-12 + 7255: -41,-13 + 7256: -40,-12 + 7257: -42,-13 + 7258: -43,-14 + 7259: -43,-13 + 7260: -42,-14 + 7261: -44,-14 + 7262: -44,-14 + 7263: -44,-14 + 7264: -41,-14 + 7265: -39,-14 + 7266: -38,-14 + 7267: -38,-14 + 7268: -39,-13 + 7269: -38,-12 + 7270: -38,-10 + 7271: -38,-10 + 7272: -39,-11 + 7273: -39,-14 + 7274: -39,-14 + 7275: -41,-14 + 7279: -43,1 + 7280: -43,1 + 7289: -43,66 + 7290: -43,66 + - node: + cleanable: True + angle: 3.141592653589793 rad + color: '#FFFFFFFF' + id: DirtLight + decals: + 2587: -17,26 + 2588: -16,26 + 2589: -16,26 + 2590: -17,25 + 2591: -18,24 + 2592: -18,23 + 2593: -17,22 + 2594: -16,22 + 2595: -17,23 + 2596: -17,22 + 2597: -16,23 + 2598: -17,26 + 2599: -18,26 + 2600: -18,25 + - node: + color: '#FFFFFFFF' + id: DirtMedium + decals: + 1598: -29,54 + 1599: -29,54 + 1600: -30,54 + 1601: -30,53 + 1602: -30,55 + 1603: -28,53 + 1604: -28,52 + 1605: -27,54 + 1606: -27,55 + 1607: -28,55 + 1608: -29,54 + 1609: -29,53 + 1610: -30,53 + 1611: -28,53 + 1612: -27,54 + 1613: -26,54 + 1614: -27,55 + 1615: -29,55 + 1635: -31,47 + 1636: -37,40 + 1690: -35,38 + 1691: -35,38 + 1692: -37,40 + 1693: -38,38 + 1694: -37,36 + 1695: -36,36 + 1696: -37,39 + 1697: -39,39 + 1698: -41,38 + 1699: -41,36 + 1700: -39,37 + 1701: -42,39 + 1702: -44,38 + 1703: -42,35 + 1704: -43,36 + 1705: -44,36 + 1706: -45,36 + 1707: -44,39 + 1708: -38,35 + 1709: -36,35 + 1710: -36,37 + 1711: -39,35 + 1712: -39,34 + 1928: -50,36 + 1929: -50,45 + 1930: -53,46 + 1931: -55,46 + 2624: 12,32 + 2625: 13,34 + 2626: 13,30 + 2627: 12,17 + 6906: -1,42 + 6907: 0,42 + 6908: 1,43 + 6909: 1,42 + 6910: 2,42 + 6911: 2,43 + 6912: 3,44 + 6913: 1,43 + 6914: 1,43 + 6915: 3,44 + 6916: 3,44 + 6917: 4,43 + 6918: 4,42 + 6919: 3,42 + 6920: 2,42 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + decals: + 280: -13,-5 + 281: -14,-4 + 282: -14,-3 + 283: -12,-3 + 284: -11,-3 + 285: -14,-15 + 286: -15,-14 + 287: -17,-13 + 344: 27,20 + 345: 26,19 + 346: 26,17 + 347: 27,16 + 348: 27,15 + 349: 27,12 + 350: 26,8 + 351: 26,6 + 352: 23,5 + 353: 22,4 + 354: 20,5 + 355: 18,5 + 356: 15,6 + 357: 14,5 + 358: 11,6 + 359: 9,6 + 360: 11,3 + 361: 11,2 + 362: 10,-1 + 363: 11,-3 + 364: 11,-1 + 365: 10,-2 + 366: 10,-3 + 367: 11,1 + 368: 11,1 + 369: 11,-3 + 761: -42,1 + 762: -42,1 + 763: -41,3 + 764: -40,4 + 765: -38,4 + 766: -35,5 + 767: -38,5 + 768: -41,5 + 769: -40,5 + 770: -36,5 + 771: -34,5 + 772: -34,3 + 773: -34,1 + 774: -33,1 + 775: -32,4 + 776: -34,6 + 777: -35,6 + 778: -38,6 + 779: -42,6 + 780: -42,5 + 781: -40,3 + 782: -36,4 + 783: -33,4 + 784: -34,1 + 785: -33,1 + 786: -33,3 + 787: -34,4 + 788: -35,2 + 789: -33,1 + 790: -34,4 + 791: -40,5 + 792: -40,4 + 793: -41,3 + 794: -41,3 + 858: -34,0 + 859: -34,0 + 860: -35,0 + 861: -35,1 + 862: -34,2 + 863: -34,3 + 864: -36,4 + 865: -38,5 + 866: -39,5 + 867: -37,5 + 868: -36,6 + 869: -36,6 + 870: -38,7 + 871: -39,7 + 872: -40,6 + 873: -40,5 + 874: -41,4 + 875: -41,3 + 876: -42,2 + 924: -31,4 + 925: -30,5 + 926: -28,5 + 927: -26,5 + 928: -25,4 + 929: -24,4 + 930: -24,5 + 931: -27,6 + 932: -30,6 + 933: -31,5 + 934: -28,5 + 935: -24,6 + 936: -22,6 + 937: -21,5 + 938: -21,5 + 939: -22,4 + 940: -21,4 + 941: -18,5 + 942: -18,5 + 943: -21,5 + 944: -21,5 + 945: -20,5 + 946: -19,5 + 947: -20,4 + 948: -21,4 + 949: -23,5 + 950: -23,5 + 951: -25,4 + 952: -27,4 + 953: -29,4 + 954: -30,5 + 955: -30,6 + 956: -32,6 + 957: -31,6 + 958: -25,6 + 959: -19,6 + 960: -17,6 + 961: -16,5 + 962: -17,4 + 963: -15,4 + 964: -15,4 + 965: -18,4 + 966: -41,2 + 967: -42,2 + 968: -41,1 + 969: -41,0 + 970: -41,0 + 971: -42,4 + 972: -42,4 + 973: -29,6 + 1457: -39,10 + 1458: -38,10 + 1459: -38,10 + 1460: -39,10 + 1461: -39,9 + 1462: -38,12 + 1463: -37,15 + 1464: -37,15 + 1465: -39,15 + 1466: -38,13 + 1467: -37,18 + 1468: -38,21 + 1469: -38,22 + 1470: -39,21 + 1471: -37,21 + 1472: -37,26 + 1473: -38,28 + 1474: -39,28 + 1475: -38,28 + 1476: -38,32 + 1477: -37,33 + 1478: -34,32 + 1479: -32,32 + 1480: -32,31 + 1481: -30,32 + 1482: -28,33 + 1483: -26,33 + 1484: -23,33 + 1485: -22,32 + 1486: -19,32 + 1487: -17,33 + 1488: -17,32 + 1489: -17,31 + 1490: -18,32 + 1491: -20,32 + 1492: -23,27 + 1493: -23,26 + 1494: -26,28 + 1495: -28,29 + 1496: -26,27 + 1497: -17,29 + 1498: -18,28 + 1499: -18,27 + 1500: -32,33 + 1501: -35,33 + 1502: -37,32 + 1503: -34,32 + 1504: -33,33 + 1505: -36,33 + 1506: -35,27 + 1507: -35,25 + 1508: -35,23 + 1509: -33,24 + 1510: -35,27 + 1511: -36,27 + 1512: -36,25 + 1513: -35,24 + 1514: -32,26 + 1515: -37,32 + 1516: -40,33 + 1517: -43,32 + 1518: -44,30 + 1519: -43,32 + 1520: -45,33 + 1521: -48,33 + 1522: -52,32 + 1523: -53,31 + 1524: -55,32 + 1525: -56,33 + 1526: -58,33 + 1527: -59,31 + 1528: -58,28 + 1529: -57,27 + 1530: -59,28 + 1531: -59,29 + 1532: -58,25 + 1533: -58,23 + 1534: -59,22 + 1535: -59,21 + 1536: -59,19 + 1537: -58,17 + 1538: -57,15 + 1539: -57,13 + 1540: -59,13 + 1541: -59,11 + 1542: -58,8 + 1543: -58,7 + 1544: -58,5 + 1545: -57,5 + 1546: -58,6 + 1547: -61,6 + 1548: -62,5 + 1549: -63,5 + 1550: -65,5 + 1551: -66,5 + 1552: -64,4 + 1553: -63,5 + 1554: -65,6 + 1555: -70,6 + 1556: -72,5 + 1557: -72,4 + 1558: -73,6 + 1559: -76,6 + 1560: -75,5 + 1561: -71,6 + 1562: -66,6 + 1563: -62,5 + 1564: -58,3 + 1565: -58,3 + 1566: -59,2 + 1567: -59,1 + 1568: -57,-1 + 1569: -57,2 + 1570: -58,1 + 1571: -58,-2 + 1572: -58,-4 + 1573: -59,-6 + 1574: -58,-9 + 1575: -57,-7 + 1576: -58,-10 + 1577: -58,-10 + 1578: -59,-11 + 1579: -57,-11 + 1580: -58,-11 + 1581: -59,-11 + 1582: -57,-11 + 1583: -55,5 + 1584: -55,5 + 1585: -54,6 + 1586: -55,6 + 1587: -56,5 + 1588: -44,5 + 1589: -46,5 + 1590: -48,4 + 1591: -38,20 + 1592: -37,19 + 1593: -37,17 + 1594: -37,20 + 2009: -7,42 + 2010: -9,44 + 2011: -10,43 + 2012: -10,41 + 2013: -10,39 + 2014: -6,39 + 2015: -6,42 + 2016: -7,44 + 2017: -8,42 + 2018: -7,40 + 2019: -7,41 + 2020: 4,49 + 2021: 2,50 + 2022: 2,52 + 2023: 2,51 + 2024: 4,49 + 2025: 4,51 + 2026: 3,50 + 2027: 11,51 + 2028: 10,51 + 2029: 10,50 + 2030: 11,52 + 2031: 10,51 + 2032: 11,50 + 2033: 10,46 + 2034: 11,45 + 2035: 11,46 + 2036: 10,45 + 2037: 12,44 + 2038: 11,46 + 2039: 10,46 + 2040: 9,46 + 2041: 9,43 + 2042: 9,42 + 2043: 11,42 + 2044: 12,43 + 2045: 10,43 + 2046: 11,42 + 2047: 12,42 + 2048: 10,42 + 2049: 11,43 + 2050: 18,38 + 2051: 21,39 + 2052: 22,38 + 2053: 23,37 + 2054: 20,38 + 2055: 17,38 + 2056: 19,37 + 2057: 22,39 + 2058: 22,40 + 2059: 19,42 + 2060: 17,42 + 2061: 16,40 + 2062: 18,39 + 2063: 20,40 + 2064: 19,42 + 2065: 18,42 + 2066: 18,39 + 2067: 21,42 + 2068: 22,43 + 2069: 23,41 + 2070: 22,40 + 2071: 22,42 + 2072: 20,42 + 2073: 19,40 + 2074: 18,41 + 2075: 18,42 + 2076: 17,40 + 2077: 18,38 + 2078: -21,38 + 2079: -22,37 + 2080: -23,37 + 2081: -22,40 + 2082: -22,42 + 2083: -24,42 + 2084: -22,40 + 2085: -21,39 + 2086: -21,41 + 2087: -21,42 + 2088: -20,40 + 2089: -21,39 + 2090: -21,39 + 2091: -22,42 + 2092: -23,42 + 2282: -22,60 + 2283: -20,59 + 2284: -21,60 + 2285: -20,61 + 2286: -19,63 + 2287: -18,63 + 2288: -18,62 + 2289: -19,62 + 2290: -17,62 + 2291: -15,62 + 2292: -16,63 + 2293: -17,65 + 2294: -16,65 + 2295: -18,66 + 2296: -19,65 + 2297: -18,64 + 2298: -17,65 + 2299: -15,66 + 2300: -14,65 + 2301: -14,64 + 2302: -20,64 + 2303: -21,63 + 2304: -21,62 + 2305: -20,62 + 2306: -21,61 + 2307: -22,59 + 2308: -22,59 + 2309: -13,59 + 2310: -12,59 + 2311: -14,59 + 2312: -14,60 + 2313: -14,62 + 2314: -17,61 + 2315: -19,59 + 2316: -19,57 + 2317: -19,56 + 2318: -19,54 + 2319: -16,53 + 2320: -15,55 + 2321: -15,56 + 2322: -15,53 + 2323: -16,53 + 2324: -16,41 + 2325: -17,41 + 2326: -18,39 + 2327: -17,37 + 2328: -16,38 + 2329: -17,41 + 2330: -17,42 + 2331: -18,40 + 2332: -16,40 + 2333: -16,43 + 2334: -17,45 + 2335: -18,43 + 2336: -18,40 + 2540: -40,-7 + 2541: -39,-6 + 2542: -39,-7 + 2543: -39,-8 + 2544: -41,-6 + 2545: -41,-5 + 2546: -41,-4 + 2547: -42,-6 + 2548: -42,-4 + 2549: -40,-2 + 2550: -38,-3 + 2551: -39,-5 + 2552: -42,-2 + 2553: -42,-2 + 2554: -41,-2 + 2555: -40,-3 + 2556: -35,-8 + 2557: -32,-9 + 2558: -33,-6 + 2559: -32,-6 + 2560: -32,-6 + 2561: -32,-10 + 2562: -33,-10 + 2563: -34,-10 + 2564: -32,-10 + 2565: -34,-10 + 2566: -37,-8 + 2567: -36,-8 + 2568: -35,-8 + 2569: -40,-7 + 2570: -40,-7 + 3135: 6,13 + 3136: 6,12 + 3137: 8,11 + 3138: 10,11 + 3139: 11,13 + 3140: 9,15 + 3141: 7,15 + 3142: 7,15 + 3143: 10,17 + 3144: 9,19 + 3145: 9,19 + 3146: 9,18 + 3147: 9,19 + 3148: 11,20 + 3149: 11,20 + 3150: 11,17 + 3151: 11,15 + 3152: 10,14 + 3153: 9,14 + 3154: 10,12 + 3155: 8,14 + 3156: 8,14 + 3157: 2,15 + 3158: 2,16 + 3159: -1,16 + 3160: -2,16 + 3161: 0,14 + 3162: 3,15 + 3163: 3,16 + 3164: 0,16 + 3165: 0,16 + 3166: 2,15 + 3167: 1,16 + 3168: 0,16 + 3169: -2,17 + 3170: -2,16 + 3171: -2,15 + 3172: 1,14 + 3173: 3,14 + 3174: 4,15 + 3175: 4,17 + 3176: 3,17 + 3177: 1,17 + 3178: 2,20 + 3179: 1,19 + 3180: 4,20 + 3181: 3,20 + 3182: 7,20 + 3183: 6,19 + 3184: 7,19 + 3185: 7,20 + 3186: 6,20 + 3187: 7,19 + 3188: 1,20 + 3189: 1,20 + 3190: 3,20 + 3191: 3,21 + 3192: 2,21 + 3193: 2,22 + 3194: 2,23 + 3195: 2,25 + 3196: 2,25 + 3197: 2,24 + 3198: 3,23 + 3199: 4,22 + 3200: 4,21 + 3201: 4,24 + 3202: 3,25 + 3203: 3,24 + 3204: 4,24 + 3205: 4,25 + 3206: 3,26 + 3207: 2,26 + 3208: 4,27 + 3209: 4,29 + 3210: 2,28 + 3211: 4,28 + 3212: 5,28 + 3213: 4,29 + 3214: 4,28 + 3215: 3,29 + 3216: 2,30 + 3217: 3,31 + 3218: 3,32 + 3219: 3,34 + 3220: 2,33 + 3221: 4,31 + 3222: 4,32 + 3223: 3,32 + 3224: 2,32 + 3225: 6,25 + 3226: 6,25 + 3227: 6,24 + 3228: 6,23 + 3229: 8,22 + 3230: 9,22 + 3231: 10,22 + 3232: 9,23 + 3233: 8,23 + 3234: 9,24 + 3235: 9,25 + 3236: 7,25 + 3237: 9,25 + 3238: 8,26 + 3239: 7,26 + 3240: 10,26 + 3241: 9,26 + 3242: 9,26 + 3243: 12,28 + 3244: 10,29 + 3245: 9,29 + 3246: 8,28 + 3247: 7,28 + 3248: 7,30 + 3249: 8,31 + 3250: 11,31 + 3251: 12,31 + 3252: 12,30 + 3253: 11,30 + 3254: 9,31 + 3255: 7,30 + 3256: 8,29 + 3257: 12,28 + 3258: 6,34 + 3259: 6,34 + 3260: 7,33 + 3261: 9,34 + 3262: 10,34 + 3263: 11,34 + 3264: 12,33 + 3265: 12,36 + 3266: 11,37 + 3267: 10,36 + 3268: 10,36 + 3269: 8,36 + 3270: 7,37 + 3271: 6,35 + 3272: 6,34 + 3273: 11,34 + 3274: 11,36 + 3275: 9,37 + 3276: -1,36 + 3277: 0,36 + 3278: 0,37 + 3279: -1,39 + 3280: 1,40 + 3281: 3,40 + 3282: 4,37 + 3283: 4,36 + 3284: 3,36 + 3285: 2,37 + 3286: 2,38 + 3287: 0,37 + 3288: 1,36 + 3289: 0,37 + 3290: -1,36 + 3291: 0,38 + 3292: -1,39 + 3293: 1,40 + 3294: 2,39 + 3334: -3,10 + 3335: -3,9 + 3336: -2,8 + 3337: 0,9 + 3338: 1,9 + 3339: 1,8 + 3340: 0,10 + 3341: -2,10 + 3342: -3,10 + 3867: -66,54 + 3868: -66,55 + 3869: -66,55 + 3870: -66,53 + 3871: -65,52 + 3872: -63,52 + 3873: -62,53 + 3874: -61,51 + 3875: -62,51 + 3876: -62,50 + 3877: -62,52 + 3878: -62,53 + 3879: -64,54 + 3880: -65,53 + 3881: -64,53 + 3882: -60,54 + 3883: -61,55 + 3884: -62,55 + 3885: -64,55 + 3886: -59,54 + 3887: -60,52 + 3888: -60,51 + 3889: -62,51 + 3890: -61,52 + 3891: -61,52 + 3892: -58,53 + 3893: -59,55 + 3894: -59,55 + 3895: -58,53 + 3896: -58,53 + 3897: -55,53 + 3898: -51,53 + 3899: -51,54 + 3900: -52,54 + 3901: -55,54 + 3902: -57,54 + 3903: -52,55 + 3904: -53,56 + 3905: -53,56 + 3906: -53,55 + 3907: -53,55 + 3908: -56,56 + 3909: -57,56 + 3910: -57,55 + 3911: -58,57 + 3912: -57,58 + 3913: -53,58 + 3914: -51,57 + 3915: -52,56 + 3916: -56,56 + 3917: -56,55 + 3918: -47,54 + 3919: -48,55 + 3920: -49,55 + 3921: -49,55 + 3922: -48,52 + 3923: -49,50 + 3924: -49,49 + 3925: -47,50 + 3926: -47,52 + 3927: -47,52 + 3928: -49,58 + 3929: -49,58 + 3930: -48,57 + 3931: -47,59 + 3932: -47,61 + 3933: -48,61 + 3934: -49,61 + 3935: -49,59 + 3936: -48,58 + 3937: -44,62 + 3938: -44,61 + 3939: -43,63 + 3940: -44,65 + 3941: -44,64 + 3942: -43,62 + 3943: -42,61 + 3944: -42,64 + 3945: -43,65 + 3946: -48,64 + 3947: -48,65 + 3948: -50,65 + 3949: -52,65 + 3950: -52,64 + 3951: -53,63 + 3952: -53,65 + 3953: -52,64 + 3954: -51,61 + 3955: -52,62 + 3956: -53,64 + 3957: -53,64 + 3958: -53,62 + 3959: -53,60 + 3960: -51,60 + 3961: -51,61 + 3962: -53,60 + 3963: -52,60 + 3964: -52,60 + 3965: -56,62 + 3966: -58,61 + 3967: -57,61 + 3968: -55,60 + 3969: -58,60 + 3970: -61,61 + 3971: -62,60 + 3972: -59,60 + 3973: -58,60 + 3974: -60,61 + 3975: -62,61 + 3976: -57,61 + 3977: -53,61 + 3978: -52,61 + 3979: -52,61 + 3980: -53,83 + 3981: -53,82 + 3982: -52,83 + 3983: -51,84 + 3984: -51,83 + 3985: -51,84 + 3986: -52,84 + 3987: -53,85 + 3988: -52,85 + 3989: -51,86 + 3990: -51,89 + 3991: -52,90 + 3992: -53,89 + 3993: -53,88 + 3994: -52,87 + 3995: -51,87 + 3996: -51,87 + 3997: -51,89 + 3998: -51,90 + 3999: -51,89 + 4000: -55,86 + 4001: -56,86 + 4002: -57,86 + 4003: -59,86 + 4004: -55,89 + 4005: -55,90 + 4006: -56,89 + 4007: -56,88 + 4008: -56,88 + 4009: -58,89 + 4010: -60,89 + 4011: -61,88 + 4012: -62,86 + 4013: -62,85 + 4014: -62,84 + 4015: -62,83 + 4016: -62,83 + 4017: -62,86 + 4018: -62,88 + 4019: -61,89 + 4020: -60,88 + 4021: -60,86 + 4022: -61,85 + 4023: -60,84 + 4024: -58,83 + 4025: -58,83 + 4026: -58,87 + 4027: -59,89 + 4028: -61,88 + 4029: -60,87 + 4030: -60,87 + 4031: -55,83 + 4032: -56,84 + 4033: -56,83 + 4034: -55,82 + 4035: -55,84 + 4036: -56,83 + 4037: -56,82 + 4038: -53,82 + 4039: -53,83 + 4040: -51,84 + 4041: -52,85 + 4042: -53,84 + 4043: -52,83 + 4044: -52,85 + 4045: -52,87 + 4046: -52,88 + 4047: -53,86 + 4048: -53,85 + 4049: -57,49 + 4050: -58,49 + 4051: -57,50 + 4052: -58,52 + 4053: -58,49 + 4054: -57,50 + 4055: -58,52 + 4056: -58,51 + 4057: -57,50 + 4058: -57,50 + 4059: -58,51 + 4060: -58,49 + 4061: -55,51 + 4062: -55,52 + 4063: -55,50 + 4064: -54,50 + 4065: -54,51 + 4066: -55,50 + 4067: -54,49 + 4068: -52,52 + 4069: -52,51 + 4070: -52,50 + 4071: -51,49 + 4072: -51,51 + 4073: -52,50 + 4074: -52,49 + 4484: -62,45 + 4485: -64,45 + 4486: -65,45 + 4487: -64,44 + 4488: -62,44 + 4489: -61,45 + 4490: -62,45 + 4491: -63,44 + 4492: -62,40 + 4493: -61,42 + 4494: -61,42 + 4495: -61,40 + 4496: -61,39 + 4497: -61,38 + 4498: -62,38 + 4499: -63,38 + 4500: -64,38 + 4501: -65,39 + 4502: -64,40 + 4503: -65,39 + 4504: -65,38 + 4505: -64,39 + 4506: -62,40 + 4507: -62,41 + 4508: -64,42 + 4509: -64,42 + 4510: -63,40 + 4538: -72,48 + 4539: -73,49 + 4540: -73,48 + 4541: -71,47 + 4542: -70,48 + 4543: -70,49 + 4544: -70,48 + 4545: -69,47 + 4546: -69,49 + 4547: -67,49 + 4548: -68,49 + 4549: -69,49 + 4550: -67,50 + 4551: -67,49 + 4552: -66,48 + 4553: -66,47 + 4554: -66,49 + 4555: -68,49 + 4556: -67,48 + 4557: -67,47 + 4558: -66,47 + 4559: -67,46 + 4560: -66,48 + 4561: -65,48 + 4562: -65,47 + 4563: -67,49 + 4564: -67,50 + 4641: -71,51 + 4642: -73,52 + 4643: -74,52 + 4644: -71,51 + 4645: -70,52 + 4646: -71,55 + 4647: -72,56 + 4648: -70,55 + 4649: -71,56 + 4650: -76,54 + 4651: -77,54 + 4652: -78,54 + 4653: -78,53 + 4654: -78,54 + 4655: -76,54 + 4714: -60,31 + 4715: -62,32 + 4716: -62,33 + 4717: -62,32 + 4847: -72,31 + 4848: -71,31 + 4849: -70,31 + 4850: -70,29 + 4851: -71,30 + 4852: -72,30 + 4853: -72,28 + 4854: -67,31 + 4855: -68,31 + 4856: -68,29 + 4857: -68,27 + 4858: -68,26 + 4859: -68,26 + 4860: -67,25 + 4861: -65,26 + 4862: -66,27 + 4863: -67,27 + 4864: -66,26 + 4865: -64,25 + 4866: -64,27 + 4867: -66,28 + 4868: -67,30 + 4869: -67,30 + 4870: -62,32 + 4871: -62,33 + 4872: -61,32 + 4873: -61,32 + 4874: -62,34 + 4875: -64,30 + 4876: -64,32 + 4877: -64,34 + 4878: -65,34 + 4879: -65,33 + 4880: -64,32 + 4881: -64,33 + 4882: -65,34 + 4883: -67,34 + 4884: -68,34 + 4885: -69,33 + 4886: -69,33 + 4887: -72,34 + 4888: -73,33 + 4889: -74,35 + 4890: -75,35 + 4891: -75,34 + 4892: -74,30 + 4893: -74,30 + 4894: -74,30 + 4895: -75,27 + 4896: -75,25 + 4897: -74,26 + 4898: -74,26 + 4899: -76,26 + 4900: -76,25 + 4901: -75,24 + 4902: -74,24 + 4903: -77,25 + 4904: -77,25 + 4905: -76,24 + 4906: -74,22 + 4907: -74,22 + 4908: -74,20 + 4909: -75,20 + 4910: -75,22 + 4911: -75,17 + 4912: -75,16 + 4913: -74,16 + 4914: -72,16 + 4915: -71,17 + 4916: -73,17 + 4917: -74,16 + 4918: -74,16 + 4919: -71,20 + 4920: -71,20 + 4921: -68,20 + 4922: -66,20 + 4923: -65,22 + 4924: -67,22 + 4925: -79,26 + 4926: -80,26 + 4927: -81,25 + 4928: -80,23 + 4929: -80,23 + 4930: -83,24 + 4931: -82,25 + 4932: -83,25 + 4933: -84,25 + 4934: -84,24 + 4935: -82,26 + 4936: -85,26 + 4937: -86,26 + 4938: -86,26 + 4939: -87,25 + 4940: -85,24 + 4941: -83,24 + 4942: -83,26 + 4943: -84,26 + 4944: -83,25 + 4945: -82,23 + 4946: -84,23 + 4947: -86,24 + 4948: -83,23 + 4949: -82,23 + 4950: -81,22 + 4951: -81,26 + 4952: -82,27 + 4953: -84,27 + 4954: -85,27 + 4955: -85,29 + 4956: -86,29 + 4957: -85,30 + 4958: -86,30 + 4959: -85,20 + 4960: -86,21 + 4961: -86,20 + 4962: -83,19 + 4963: -82,18 + 4964: -80,19 + 4965: -81,20 + 4966: -80,29 + 4967: -82,30 + 4968: -82,30 + 4969: -80,29 + 4970: -80,29 + 4971: -81,32 + 4972: -82,33 + 4973: -81,33 + 4974: -80,32 + 4975: -77,33 + 5045: -64,12 + 5046: -65,14 + 5047: -65,13 + 5048: -65,11 + 5049: -65,10 + 5050: -63,10 + 5051: -62,12 + 5052: -62,13 + 5053: -63,12 + 5054: -62,10 + 5055: -61,10 + 5056: -62,13 + 5057: -63,14 + 5058: -64,13 + 5059: -64,14 + 5060: -65,14 + 5061: -65,13 + 7203: -44,-11 + 7204: -44,-11 + 7205: -45,-11 + 7206: -45,-12 + 7207: -46,-13 + 7208: -46,-13 + 7209: -46,-14 + 7210: -43,-14 + 7211: -40,-14 + 7212: -38,-13 + 7213: -40,-13 + 7214: -40,-13 + 7215: -38,-14 + 7216: -38,-13 + 7217: -39,-11 + 7218: -40,-11 + 7219: -41,-10 + 7220: -40,-12 + 7221: -42,-12 + 7222: -43,-12 + 7223: -44,-12 + 7224: -45,-11 + 7225: -38,-10 + 7226: -39,-10 + 7227: -38,-10 + 7228: -38,-11 + 7281: -43,1 + 7282: -43,1 + 7283: -43,1 + 7291: -43,66 + - node: + cleanable: True + angle: 3.141592653589793 rad + color: '#FFFFFFFF' + id: DirtMedium + decals: + 2601: -17,25 + 2602: -17,26 + 2603: -18,25 + 2604: -17,23 + 2605: -16,23 + 2606: -18,23 + - node: + color: '#FFFFFFFF' + id: FlowersBROne + decals: + 6879: -20.998013,33.948563 + - node: + color: '#FFFFFFFF' + id: Flowersbr1 + decals: + 985: -34.770348,20.675009 + 2342: -13.913108,42.25173 + 2343: -12.522483,38.829857 + - node: + color: '#FFFFFFFF' + id: Flowersbr2 + decals: + 977: -31.035973,18.003134 + - node: + color: '#FFFFFFFF' + id: Flowersbr3 + decals: + 982: -33.082848,20.175009 + - node: + color: '#FFFFFFFF' + id: Flowerspv1 + decals: + 2341: -13.334983,39.50173 + - node: + color: '#FFFFFFFF' + id: Flowerspv3 + decals: + 986: -33.910973,21.581259 + - node: + color: '#FFFFFFFF' + id: Flowersy1 + decals: + 981: -34.192223,19.378134 + - node: + color: '#FFFFFFFF' + id: Flowersy2 + decals: + 978: -33.379723,16.550009 + 2338: -12.163108,42.62673 + 2339: -13.631858,41.18923 + 6878: -21.904263,33.948563 + - node: + color: '#FFFFFFFF' + id: Flowersy3 + decals: + 2340: -12.397483,40.892357 + - node: + color: '#334E6DC8' + id: FullTileOverlayGreyscale + decals: + 2188: -17,65 + 2189: -14,64 + 2190: -20,64 + 2191: -21,61 + 2192: -21,60 + 2193: -13,61 + 2194: -13,60 + - node: + color: '#52B4E996' + id: FullTileOverlayGreyscale + decals: + 6819: 1,23 + 6820: 6,28 + 6821: 6,29 + 6822: 1,29 + 6823: 1,30 + 6824: 1,33 + 6825: 3,35 + 6826: 5,33 + 6827: 5,25 + 6828: 5,24 + 6829: 5,19 + - node: + color: '#52B4E9FF' + id: FullTileOverlayGreyscale + decals: + 109: -1,28 + - node: + color: '#9FED5896' + id: FullTileOverlayGreyscale + decals: + 6830: 8,19 + - node: + color: '#A4610696' + id: FullTileOverlayGreyscale + decals: + 7276: -43,1 + - node: + color: '#A46106FF' + id: FullTileOverlayGreyscale + decals: + 702: -40,0 + 703: -40,1 + 704: -39,2 + 705: -38,2 + 706: -37,2 + 707: -36,1 + 708: -36,0 + - node: + color: '#DE3A3A96' + id: FullTileOverlayGreyscale + decals: + 3411: -53,59 + 3412: -51,59 + 3413: -46,64 + 3414: -46,65 + 3415: -45,64 + 3440: -50,55 + 3441: -50,53 + 3442: -59,53 + 3443: -59,55 + 7284: -43,66 + - node: + color: '#FFFFFFFF' + id: Grassa2 + decals: + 2344: -13.600608,37.69732 + 7314: 19,39 + - node: + color: '#FFFFFFFF' + id: Grassa4 + decals: + 974: -33.176598,15.425009 + 975: -34.785973,16.596884 + 976: -33.801598,18.065634 + - node: + color: '#FFFFFFFF' + id: Grassa5 + decals: + 984: -34.801598,15.284384 + 7318: 23,41 + - node: + color: '#FFFFFFFF' + id: Grassb1 + decals: + 7317: 21,39 + - node: + color: '#FFFFFFFF' + id: Grassb5 + decals: + 983: -32.160973,18.596884 + 2345: -13.788108,40.38482 + 2349: -11.991233,43.725113 + 7315: 17,39 + 7316: 17,40 + 7319: 18,37 + - node: + color: '#FFFFFFFF' + id: Grassc1 + decals: + 979: -34.910973,18.518759 + 2337: -13.616233,43.18923 + 6880: -20.044888,33.964188 + - node: + color: '#FFFFFFFF' + id: Grassc3 + decals: + 980: -32.395348,19.096884 + - node: + color: '#FFFFFFFF' + id: Grassc4 + decals: + 2346: -12.381858,37.369194 + - node: + color: '#FFFFFFFF' + id: Grassd1 + decals: + 2347: -13.881858,35.712944 + 2348: -12.897483,36.35357 + - node: + color: '#FFFFFFFF' + id: Grasse2 + decals: + 2350: -13.834983,36.936462 + - node: + color: '#52B4E996' + id: HalfTileOverlayGreyscale + decals: + 2777: 8,31 + 2778: 9,31 + 2779: 10,31 + 2780: 11,31 + 2781: 3,34 + 2782: 7,26 + 2783: 8,26 + 2784: 9,26 + - node: + color: '#9FED5896' + id: HalfTileOverlayGreyscale + decals: + 2651: 7,17 + 2652: 8,17 + 2653: 10,20 + - node: + color: '#DE3A3A96' + id: HalfTileOverlayGreyscale + decals: + 3298: -2,10 + 3299: -1,10 + 3300: 0,10 + 3355: -62,61 + 3356: -61,61 + 3357: -60,61 + 3358: -59,61 + 3359: -58,61 + 3360: -56,61 + 3361: -57,61 + 3362: -55,61 + 3363: -54,61 + 3364: -52,65 + 3365: -51,65 + 3366: -50,65 + 3367: -49,65 + 3368: -48,65 + 3369: -47,65 + 3468: -65,55 + 3469: -64,55 + 3470: -63,55 + 3471: -62,55 + 3472: -61,55 + - node: + color: '#EFB34196' + id: HalfTileOverlayGreyscale + decals: + 4179: -66,34 + 4180: -67,34 + 4181: -68,34 + 4182: -69,34 + 4183: -72,35 + 4184: -73,35 + 4185: -74,35 + 4186: -76,26 + 4198: -65,34 + 4201: -71,35 + 4231: -86,27 + 4232: -85,27 + 4233: -84,27 + 4234: -83,27 + 4235: -82,27 + 4236: -81,27 + 4413: -61,33 + - node: + color: '#52B4E996' + id: HalfTileOverlayGreyscale180 + decals: + 2768: 3,19 + 2769: 2,19 + 2770: 8,28 + 2771: 9,28 + 2772: 10,28 + 2773: 11,28 + 2774: 7,22 + 2775: 8,22 + 2776: 9,22 + - node: + color: '#DE3A3A96' + id: HalfTileOverlayGreyscale180 + decals: + 3295: -2,8 + 3296: -1,8 + 3297: 0,8 + 3370: -62,60 + 3371: -61,60 + 3372: -60,60 + 3373: -59,60 + 3374: -58,60 + 3375: -57,60 + 3376: -56,60 + 3377: -55,60 + 3378: -53,60 + 3379: -54,60 + 3380: -52,60 + 3381: -50,64 + 3382: -49,64 + 3383: -47,64 + 3384: -48,64 + 3473: -63,50 + 3474: -62,50 + 3475: -61,50 + 3476: -65,52 + - node: + color: '#EFB34196' + id: HalfTileOverlayGreyscale180 + decals: + 4171: -73,33 + 4172: -72,33 + 4173: -71,33 + 4174: -70,33 + 4175: -69,33 + 4176: -68,33 + 4177: -67,33 + 4178: -66,33 + 4187: -76,24 + 4243: -82,22 + 4244: -81,22 + 4245: -84,23 + 4246: -85,23 + 4247: -86,23 + 4410: -61,31 + - node: + color: '#52B4E996' + id: HalfTileOverlayGreyscale270 + decals: + 2728: 6,33 + 2729: 6,34 + 2730: 6,35 + 2731: 6,36 + 2732: 6,37 + 2733: 2,33 + 2734: 2,32 + 2735: 2,31 + 2736: 2,29 + 2737: 2,30 + 2738: 2,28 + 2739: 2,27 + 2740: 2,26 + 2741: 2,25 + 2742: 2,24 + 2743: 2,23 + 2744: 2,22 + 2745: 2,21 + 2746: 6,23 + 2747: 6,24 + 2748: 6,25 + 2749: 7,29 + 2750: 7,30 + - node: + color: '#9FED5896' + id: HalfTileOverlayGreyscale270 + decals: + 2646: 6,14 + 2647: 6,15 + 2648: 6,16 + 2649: 9,18 + 2650: 9,19 + - node: + color: '#DE3A3A96' + id: HalfTileOverlayGreyscale270 + decals: + 3306: -3,9 + 3388: -53,62 + 3389: -53,63 + 3390: -53,64 + 3481: -66,54 + 3482: -66,53 + 3489: -64,51 + - node: + color: '#EFB34196' + id: HalfTileOverlayGreyscale270 + decals: + 4147: -75,21 + 4148: -75,22 + 4149: -75,23 + 4150: -75,27 + 4151: -75,30 + 4152: -75,31 + 4153: -75,32 + 4154: -75,33 + 4155: -75,34 + 4156: -77,25 + 4193: -75,20 + 4411: -62,32 + - node: + color: '#52B4E996' + id: HalfTileOverlayGreyscale90 + decals: + 2618: 10,25 + 2723: 12,33 + 2724: 12,34 + 2725: 12,35 + 2726: 12,36 + 2727: 12,37 + 2751: 12,30 + 2752: 12,29 + 2753: 10,25 + 2754: 10,24 + 2755: 10,23 + 2756: 4,33 + 2757: 4,32 + 2758: 5,30 + 2759: 5,29 + 2760: 4,27 + 2761: 4,26 + 2762: 4,25 + 2763: 4,23 + 2764: 4,24 + 2765: 4,22 + 2766: 4,21 + 2767: 4,20 + - node: + color: '#9FED5896' + id: HalfTileOverlayGreyscale90 + decals: + 2654: 11,19 + 2655: 11,18 + 2656: 11,17 + 2657: 11,16 + 2658: 11,15 + 2659: 11,14 + - node: + color: '#DE3A3A96' + id: HalfTileOverlayGreyscale90 + decals: + 3301: 1,9 + 3385: -51,61 + 3386: -51,62 + 3387: -51,63 + 3477: -60,54 + 3478: -60,53 + 3479: -60,52 + 3480: -60,51 + - node: + color: '#EFB34196' + id: HalfTileOverlayGreyscale90 + decals: + 4157: -64,31 + 4158: -64,32 + 4159: -64,33 + 4160: -74,30 + 4161: -74,29 + 4162: -74,28 + 4163: -74,27 + 4164: -74,26 + 4165: -74,25 + 4166: -74,24 + 4167: -74,23 + 4168: -74,22 + 4169: -74,21 + 4170: -74,20 + 4248: -80,23 + 4251: -79,25 + 4412: -60,32 + - node: + color: '#FFFFFFFF' + id: LoadingArea + decals: + 2363: -36,-10 + - node: + angle: 3.141592653589793 rad + color: '#FFFFFFFF' + id: LoadingArea + decals: + 2571: -40,-11 + 2572: -40,-7 + - node: + cleanable: True + color: '#FFFFFFFF' + id: MiniTileDarkBox + decals: + 398: -13,1 + - node: + color: '#A46106FF' + id: MiniTileWhiteBox + decals: + 2421: -41,-9 + 2422: -40,-9 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteCornerNe + decals: + 89: 0,34 + - node: + color: '#A46106FF' + id: MiniTileWhiteCornerNe + decals: + 716: -32,-2 + 2411: -38,-10 + 2412: -32,-6 + 2413: -37,-2 + - node: + color: '#EF8941FF' + id: MiniTileWhiteCornerNe + decals: + 116: -1,26 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteCornerNw + decals: + 103: -5,34 + - node: + color: '#A46106FF' + id: MiniTileWhiteCornerNw + decals: + 709: -35,-2 + 2416: -42,-2 + 2417: -46,-10 + - node: + color: '#D4D4D4FF' + id: MiniTileWhiteCornerNw + decals: + 157: -11,30 + - node: + color: '#EF8941FF' + id: MiniTileWhiteCornerNw + decals: + 117: -4,26 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteCornerSe + decals: + 90: 0,29 + - node: + color: '#A46106FF' + id: MiniTileWhiteCornerSe + decals: + 2414: -38,-14 + 2415: -32,-11 + - node: + color: '#EF8941FF' + id: MiniTileWhiteCornerSe + decals: + 118: -1,23 + 149: -2,20 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteCornerSw + decals: + 104: -5,29 + - node: + color: '#A46106FF' + id: MiniTileWhiteCornerSw + decals: + 2418: -42,-8 + 2419: -36,-11 + 7153: -46,-14 + - node: + color: '#52B4E996' + id: MiniTileWhiteInnerNe + decals: + 158: -7,30 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteInnerNe + decals: + 88: -7,30 + 159: -7,30 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteInnerSe + decals: + 87: -7,34 + - node: + color: '#EF8941FF' + id: MiniTileWhiteInnerSe + decals: + 119: -2,23 + - node: + color: '#A46106FF' + id: MiniTileWhiteInnerSw + decals: + 2420: -36,-8 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteLineE + decals: + 84: -7,31 + 85: -7,32 + 86: -7,33 + 95: 0,30 + 96: 0,31 + 97: 0,32 + 98: 0,33 + - node: + color: '#A46106FF' + id: MiniTileWhiteLineE + decals: + 710: -32,-3 + 711: -32,-4 + 2400: -37,-3 + 2401: -37,-4 + 2402: -37,-5 + 2403: -32,-7 + 2404: -32,-7 + 2405: -32,-8 + 2406: -32,-9 + 2407: -32,-10 + 2408: -38,-11 + 2409: -38,-12 + 2410: -38,-13 + - node: + color: '#EF8941FF' + id: MiniTileWhiteLineE + decals: + 110: -1,25 + 111: -1,24 + 145: -2,22 + 146: -2,21 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteLineN + decals: + 99: -1,34 + 100: -2,34 + 101: -3,34 + 102: -4,34 + - node: + color: '#A46106FF' + id: MiniTileWhiteLineN + decals: + 714: -34,-2 + 715: -33,-2 + 2384: -45,-10 + 2385: -44,-10 + 2386: -43,-10 + 2387: -42,-10 + 2388: -42,-10 + 2389: -41,-10 + 2390: -40,-10 + 2391: -40,-10 + 2392: -40,-10 + 2393: -39,-10 + 2394: -34,-6 + 2395: -33,-6 + 2396: -41,-2 + 2397: -40,-2 + 2398: -40,-2 + 2399: -38,-2 + - node: + color: '#D4D4D4FF' + id: MiniTileWhiteLineN + decals: + 153: -10,30 + 154: -9,30 + 155: -8,30 + 156: -7,30 + - node: + color: '#EF8941FF' + id: MiniTileWhiteLineN + decals: + 114: -3,26 + 115: -2,26 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteLineS + decals: + 91: -1,29 + 92: -3,29 + 93: -2,29 + 94: -4,29 + - node: + color: '#A46106FF' + id: MiniTileWhiteLineS + decals: + 2365: -41,-8 + 2366: -40,-8 + 2367: -39,-8 + 2368: -37,-8 + 2369: -38,-8 + 2370: -35,-11 + 2371: -34,-11 + 2372: -33,-11 + 2373: -39,-14 + 2374: -40,-14 + 2375: -41,-14 + 2376: -43,-14 + 2377: -42,-14 + 7154: -45,-14 + 7155: -44,-14 + - node: + color: '#EF8941FF' + id: MiniTileWhiteLineS + decals: + 148: -3,20 + - node: + color: '#52B4E9FF' + id: MiniTileWhiteLineW + decals: + 105: -5,30 + 106: -5,31 + 107: -5,32 + 108: -5,33 + - node: + color: '#A46106FF' + id: MiniTileWhiteLineW + decals: + 712: -35,-4 + 713: -35,-3 + 2378: -42,-7 + 2379: -42,-6 + 2380: -42,-4 + 2381: -42,-3 + 2382: -36,-9 + 2383: -36,-10 + 7156: -46,-13 + 7157: -46,-12 + 7158: -46,-11 + - node: + color: '#D4D4D4FF' + id: MiniTileWhiteLineW + decals: + 150: -11,27 + 151: -11,28 + 152: -11,29 + - node: + color: '#EF8941FF' + id: MiniTileWhiteLineW + decals: + 112: -4,24 + 113: -4,25 + 147: -4,21 + - node: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale + decals: + 2802: 2,20 + - node: + color: '#9FED5896' + id: QuarterTileOverlayGreyscale + decals: + 2660: 9,17 + - node: + color: '#DE3A3A96' + id: QuarterTileOverlayGreyscale + decals: + 3391: -53,61 + 3395: -49,62 + 3396: -49,61 + 3397: -49,60 + 3398: -49,58 + 3399: -49,59 + 3400: -49,57 + 3407: -47,62 + 3408: -48,62 + - node: + color: '#EF8941FF' + id: QuarterTileOverlayGreyscale + decals: + 134: -5,19 + 135: -5,20 + 136: -5,25 + 137: -5,26 + 138: -5,27 + 139: -4,27 + 140: -3,27 + 141: -2,27 + 142: -1,27 + 143: -1,27 + 144: 0,27 + - node: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale + decals: + 4202: -75,26 + - node: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + decals: + 2801: 4,28 + - node: + color: '#A46106FF' + id: QuarterTileOverlayGreyscale180 + decals: + 723: -41,0 + 724: -41,1 + 725: -41,2 + 726: -41,3 + 727: -40,3 + 728: -39,3 + 736: -33,0 + 737: -32,0 + 738: -32,1 + 739: -32,2 + 740: -32,3 + - node: + color: '#DE3A3A96' + id: QuarterTileOverlayGreyscale180 + decals: + 3392: -51,64 + 3401: -47,57 + 3402: -47,58 + 3403: -47,59 + 3404: -47,60 + 3405: -47,61 + 3406: -47,62 + 3409: -48,57 + 3410: -49,57 + - node: + color: '#EF8941FF' + id: QuarterTileOverlayGreyscale180 + decals: + 120: 0,22 + 121: -1,22 + 122: -1,21 + 123: -1,20 + 124: -1,19 + 125: -2,19 + 126: -3,19 + 127: -4,19 + 128: -5,19 + 129: 0,23 + 130: 0,24 + 131: 0,25 + 132: 0,26 + 133: 0,27 + - node: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + decals: + 4249: -80,24 + - node: + color: '#A46106FF' + id: QuarterTileOverlayGreyscale270 + decals: + 729: -34,0 + 730: -35,0 + 731: -35,1 + 732: -35,2 + 733: -35,3 + 734: -36,3 + 735: -37,3 + 741: -42,0 + 742: -42,1 + 743: -42,2 + 744: -42,3 + - node: + color: '#DE3A3A96' + id: QuarterTileOverlayGreyscale270 + decals: + 3488: -64,52 + - node: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + decals: + 4195: -75,24 + 4197: -65,33 + 4242: -83,23 + - node: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + decals: + 2800: 4,31 + - node: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale90 + decals: + 4199: -70,34 + 4250: -80,26 + - node: + color: '#FFFFFFFF' + id: Remains + decals: + 77: 18.227499,-11.4046755 + - node: + cleanable: True + color: '#FFFFFFFF' + id: Remains + decals: + 2607: -3.964231,22.551708 + - node: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale + decals: + 2785: 2,34 + 2786: 7,31 + 2787: 1,20 + 2788: 6,26 + - node: + color: '#9FED5896' + id: ThreeQuarterTileOverlayGreyscale + decals: + 2661: 6,17 + 2662: 9,20 + - node: + color: '#DE3A3A96' + id: ThreeQuarterTileOverlayGreyscale + decals: + 3302: -3,10 + 3393: -53,65 + 3483: -66,55 + - node: + color: '#EFB34196' + id: ThreeQuarterTileOverlayGreyscale + decals: + 4188: -77,26 + 4194: -75,35 + 4406: -62,33 + - node: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale180 + decals: + 2789: 10,22 + 2790: 12,28 + 2791: 4,19 + 2792: 5,28 + - node: + color: '#DE3A3A96' + id: ThreeQuarterTileOverlayGreyscale180 + decals: + 3303: 1,8 + 3394: -51,60 + 3484: -60,50 + - node: + color: '#EFB34196' + id: ThreeQuarterTileOverlayGreyscale180 + decals: + 4190: -64,30 + 4192: -74,19 + 4239: -79,24 + 4240: -80,22 + 4407: -60,31 + - node: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale270 + decals: + 2797: 7,28 + 2798: 1,19 + 2799: 6,22 + - node: + color: '#DE3A3A96' + id: ThreeQuarterTileOverlayGreyscale270 + decals: + 3305: -3,8 + 3486: -66,52 + 3487: -64,50 + - node: + color: '#EFB34196' + id: ThreeQuarterTileOverlayGreyscale270 + decals: + 4189: -77,24 + 4191: -75,19 + 4241: -83,22 + 4408: -62,31 + - node: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale90 + decals: + 2793: 5,31 + 2794: 12,31 + 2795: 4,34 + 2796: 10,26 + - node: + color: '#9FED5896' + id: ThreeQuarterTileOverlayGreyscale90 + decals: + 2663: 11,20 + - node: + color: '#DE3A3A96' + id: ThreeQuarterTileOverlayGreyscale90 + decals: + 3304: 1,10 + 3485: -60,55 + - node: + color: '#EFB34196' + id: ThreeQuarterTileOverlayGreyscale90 + decals: + 4196: -64,34 + 4200: -70,35 + 4237: -80,27 + 4238: -79,26 + 4409: -60,33 + - node: + color: '#601F95FF' + id: Tunnel + decals: + 6923: 11,50 + - node: + color: '#FFFFFFFF' + id: WarnCornerNE + decals: + 2358: 12,43 + 2671: 7,20 + 2706: 1,40 + - node: + color: '#FFFFFFFF' + id: WarnCornerNW + decals: + 2357: 9,43 + 2670: 6,20 + 4128: -79,31 + - node: + color: '#FFFFFFFF' + id: WarnCornerSE + decals: + 2356: 12,42 + 2672: 7,19 + 2714: 11,35 + 4119: -77,34 + - node: + color: '#FFFFFFFF' + id: WarnCornerSW + decals: + 2359: 9,42 + 2673: 6,19 + 2707: -1,36 + 2715: 7,35 + 5947: -23,54 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallNE + decals: + 2361: 9,40 + 4144: -86,23 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallNW + decals: + 2360: 11,40 + 4143: -81,23 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallSE + decals: + 4123: -84,34 + 4145: -86,27 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallSW + decals: + 4146: -81,27 + 5946: -20,54 + - node: + color: '#FFFFFFFF' + id: WarnLineE + decals: + 4: -14,0 + 5: -14,1 + 6: -14,2 + 2711: 1,37 + 2721: 11,36 + 2722: 11,37 + 4120: -77,35 + 4121: -84,33 + 4122: -84,32 + 4129: -86,26 + 4130: -86,24 + 4131: -86,25 + - node: + color: '#FFFFFFFF' + id: WarnLineN + decals: + 73: 1,0 + 74: 2,0 + 75: 0,0 + 2351: 11,42 + 2352: 10,42 + 2664: 6,14 + 2665: 7,14 + 2666: 8,14 + 2667: 9,14 + 2668: 10,14 + 2669: 11,14 + 2710: 0,36 + 2718: 8,35 + 2719: 9,35 + 2720: 10,35 + 4113: -83,34 + 4114: -82,34 + 4115: -80,34 + 4116: -81,34 + 4117: -79,34 + 4118: -78,34 + 4136: -85,27 + 4137: -83,27 + 4138: -82,27 + 4139: -84,27 + 5948: -22,54 + 5949: -21,54 + - node: + color: '#FFFFFFFF' + id: WarnLineS + decals: + 2708: -1,37 + 2709: -1,39 + 2716: 7,36 + 2717: 7,37 + 4124: -79,30 + 4125: -79,29 + 4140: -81,24 + 4141: -81,25 + 4142: -81,26 + 5950: -23,55 + 5951: -23,56 + 7336: -23,57 + - node: + color: '#FFFFFFFF' + id: WarnLineW + decals: + 71: 1,-1 + 72: 2,-1 + 2353: 10,40 + 2354: 10,43 + 2355: 11,43 + 2712: 0,40 + 4126: -78,31 + 4127: -77,31 + 4132: -84,23 + 4133: -83,23 + 4134: -82,23 + 4135: -85,23 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinCornerNw + decals: + 5509: -35,38 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinInnerNe + decals: + 5531: -8,58 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinInnerNw + decals: + 6172: -34,38 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinLineE + decals: + 5528: -8,61 + 5529: -8,60 + 5530: -8,59 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinLineW + decals: + 5510: -35,37 + 5511: -35,35 + 5512: -35,36 + - node: + cleanable: True + color: '#FFFFFFFF' + id: body + decals: + 2612: 2.8074994,42.80365 + - node: + color: '#790906FF' + id: cyka + decals: + 7321: 19,38 + 7322: -25,-14 + - node: + color: '#B02E26FF' + id: cyka + decals: + 7320: 19,38 + - node: + cleanable: True + color: '#D381C996' + id: safe + decals: + 76: 19,-8 + - node: + color: '#DE3A3A96' + id: shop + decals: + 7325: -27,6 + - node: + color: '#FFFFFFFF' + id: shop + decals: + 7323: -12.9947195,8.064248 + 7324: -13.0103445,16.085691 + - node: + cleanable: True + color: '#A40000FF' + id: splatter + decals: + 2608: 1.6512494,42.225525 + 2609: 3.7762494,43.506775 + 2610: 2.3387494,43.413025 + 2611: 3.9168744,42.038025 + type: DecalGrid + - version: 2 + data: + tiles: + -1,-1: + 0: 65535 + -1,0: + 0: 65535 + -4,-3: + 0: 65535 + -4,-2: + 0: 65535 + -4,-1: + 0: 65535 + -4,-4: + 0: 65535 + -3,-4: + 0: 65535 + -3,-3: + 0: 65535 + -3,-2: + 0: 65535 + -3,-1: + 0: 65535 + -2,-4: + 0: 65535 + -2,-3: + 0: 65535 + -2,-2: + 0: 64511 + 1: 1024 + -2,-1: + 0: 65535 + -1,-4: + 0: 65535 + -1,-3: + 0: 65535 + -1,-2: + 0: 65535 + -4,0: + 0: 65535 + -4,1: + 0: 65535 + -3,0: + 0: 65535 + -3,1: + 0: 65535 + -2,0: + 0: 65535 + -2,1: + 0: 65535 + -1,1: + 0: 65535 + 0,-4: + 0: 65535 + 0,-3: + 0: 65535 + 0,-2: + 0: 65535 + 0,-1: + 0: 65535 + 1,-4: + 0: 63359 + 2: 2176 + 1,-3: + 0: 65535 + 1,-2: + 0: 65535 + 1,-1: + 0: 65535 + 2,-4: + 2: 65520 + 0: 15 + 2,-3: + 0: 65535 + 2,-2: + 0: 65535 + 2,-1: + 0: 65535 + 3,-4: + 0: 63324 + 3,-3: + 0: 65535 + 3,-2: + 0: 65535 + 3,-1: + 0: 65535 + 0,0: + 0: 65535 + 0,1: + 0: 65535 + 1,0: + 0: 65535 + 1,1: + 0: 65535 + 2,0: + 0: 65535 + 2,1: + 0: 65535 + 3,0: + 0: 65535 + 3,1: + 0: 65535 + -3,-5: + 0: 63504 + -2,-5: + 0: 65525 + -1,-5: + 0: 64836 + 0,-5: + 0: 65524 + 1,-5: + 0: 64426 + -5,-3: + 0: 65535 + -5,-2: + 0: 65535 + -5,-1: + 0: 65535 + -5,0: + 0: 65535 + -5,1: + 0: 65535 + 4,-4: + 0: 63997 + 4,-3: + 0: 65535 + 4,-2: + 0: 65535 + 4,-1: + 0: 65535 + 5,-4: + 0: 4351 + 5,-3: + 0: 65439 + 5,-2: + 0: 65535 + 5,-1: + 0: 65535 + 6,-3: + 0: 65295 + 6,-2: + 0: 65535 + 6,-1: + 0: 65535 + 7,-2: + 0: 30583 + 7,-1: + 0: 63359 + 4,0: + 0: 65535 + 4,1: + 0: 65535 + 5,0: + 0: 65535 + 5,1: + 0: 65535 + 6,0: + 0: 65535 + 6,1: + 0: 65535 + 6,2: + 0: 65535 + 7,0: + 0: 65535 + 7,1: + 0: 63487 + 7,2: + 0: 65535 + -4,2: + 0: 65535 + -4,3: + 0: 65535 + -3,2: + 0: 65535 + -3,3: + 0: 65535 + -2,2: + 0: 65535 + -2,3: + 0: 65535 + -1,2: + 0: 65535 + -1,3: + 0: 65535 + 0,2: + 0: 65535 + 0,3: + 0: 65535 + 1,2: + 0: 65535 + 1,3: + 0: 65535 + 2,2: + 0: 65535 + 2,3: + 0: 65535 + 3,2: + 0: 65535 + 3,3: + 0: 65535 + -8,-3: + 0: 65535 + -8,-2: + 0: 65535 + -7,-3: + 0: 65535 + -7,-2: + 0: 65535 + -7,-1: + 0: 65535 + -6,-3: + 0: 65535 + -6,-2: + 0: 65535 + -6,-1: + 0: 65535 + -7,0: + 0: 65535 + -7,1: + 0: 65535 + -6,0: + 0: 65535 + -6,1: + 0: 65535 + -5,2: + 0: 65535 + -5,3: + 0: 65535 + 6,-4: + 0: 255 + 7,-4: + 0: 21847 + 7,-3: + 0: 63447 + 4,2: + 0: 65535 + 4,3: + 0: 65535 + 5,2: + 0: 65535 + 5,3: + 0: 65535 + 6,3: + 0: 65535 + 7,3: + 0: 65535 + 4,-5: + 0: 53754 + 4,-6: + 0: 41700 + 5,-7: + 0: 62704 + 5,-6: + 0: 62207 + 5,-5: + 0: 61951 + 6,-7: + 0: 61564 + 6,-6: + 0: 61695 + 6,-5: + 0: 61695 + 7,-8: + 0: 22272 + 7,-7: + 0: 21847 + 7,-6: + 0: 21847 + 7,-5: + 0: 21847 + 4,4: + 0: 65535 + 4,5: + 0: 65535 + 4,6: + 0: 65535 + 4,7: + 0: 65535 + 5,4: + 0: 65535 + 5,5: + 0: 65535 + 5,6: + 0: 65535 + 5,7: + 0: 65535 + 6,4: + 0: 65535 + 6,5: + 0: 65535 + 6,6: + 0: 65535 + 6,7: + 0: 24575 + 7,4: + 0: 65535 + 7,5: + 0: 63351 + 7,6: + 0: 32631 + 8,1: + 0: 4096 + 8,2: + 0: 4369 + 8,3: + 0: 4096 + 8,4: + 0: 4369 + 0,4: + 0: 65535 + 0,5: + 0: 65535 + 0,6: + 0: 65535 + 0,7: + 0: 65535 + 1,4: + 0: 65535 + 1,5: + 0: 65535 + 1,6: + 0: 65535 + 1,7: + 0: 65535 + 2,4: + 0: 65535 + 2,5: + 0: 65535 + 2,6: + 0: 65535 + 2,7: + 0: 65535 + 3,4: + 0: 65535 + 3,5: + 0: 65535 + 3,6: + 0: 65535 + 3,7: + 0: 65535 + -4,4: + 0: 65535 + -4,5: + 0: 65535 + -4,6: + 0: 65535 + -4,7: + 0: 65535 + -3,4: + 0: 65535 + -3,5: + 0: 65535 + -3,6: + 0: 65535 + -3,7: + 0: 65535 + -2,4: + 0: 65535 + -2,5: + 0: 65535 + -2,6: + 0: 65535 + -2,7: + 0: 65535 + -1,4: + 0: 65535 + -1,5: + 0: 65535 + -1,6: + 0: 65535 + -1,7: + 0: 65535 + 0,8: + 0: 65535 + 0,9: + 0: 65535 + 0,10: + 0: 65535 + 0,11: + 0: 65535 + 1,8: + 0: 65535 + 1,9: + 0: 65535 + 1,10: + 0: 65535 + 1,11: + 0: 65535 + 2,8: + 0: 65535 + 2,9: + 0: 65535 + 2,10: + 0: 65535 + 3,8: + 0: 65535 + 3,9: + 0: 65535 + 3,10: + 0: 65535 + -4,8: + 0: 65535 + -3,8: + 0: 65535 + -2,8: + 0: 65535 + -1,8: + 0: 65535 + -1,9: + 0: 65535 + -1,10: + 0: 65535 + -1,11: + 0: 65535 + 4,8: + 0: 65535 + 4,9: + 0: 65535 + 4,10: + 0: 65535 + 5,8: + 0: 65535 + 5,9: + 0: 65535 + 5,10: + 0: 65535 + 6,8: + 0: 30039 + 6,9: + 0: 4437 + 6,10: + 0: 21877 + -6,8: + 0: 65535 + -5,8: + 0: 65535 + -5,4: + 0: 65535 + -5,-4: + 0: 65535 + -4,-5: + 0: 62704 + -6,7: + 0: 65535 + -5,7: + 0: 65535 + -5,6: + 0: 65535 + -5,-5: + 0: 36736 + -8,1: + 0: 65535 + -8,2: + 0: 65535 + -8,3: + 0: 65535 + -7,2: + 0: 65535 + -7,3: + 0: 65535 + -6,2: + 0: 65535 + -6,3: + 0: 65535 + -8,8: + 0: 65535 + -7,8: + 0: 65535 + -8,4: + 0: 65535 + -8,5: + 0: 65535 + -8,6: + 0: 65535 + -8,7: + 0: 65535 + -7,4: + 0: 65535 + -7,5: + 0: 65535 + -7,6: + 0: 65535 + -7,7: + 0: 65535 + -6,4: + 0: 65535 + -6,5: + 0: 65535 + -6,6: + 0: 65535 + -5,5: + 0: 65535 + -10,1: + 0: 65535 + -10,2: + 0: 65535 + -10,3: + 0: 65535 + -9,1: + 0: 65535 + -9,2: + 0: 65535 + -9,3: + 0: 65535 + -10,4: + 0: 65535 + -10,5: + 0: 65535 + -10,6: + 0: 65535 + -10,7: + 0: 65535 + -9,5: + 0: 65535 + -9,6: + 0: 65535 + -9,7: + 0: 65535 + -10,8: + 0: 65535 + -9,8: + 0: 65535 + -8,-4: + 0: 65328 + -8,-1: + 0: 65535 + -7,-4: + 0: 65504 + -6,-4: + 0: 65534 + -8,0: + 0: 65535 + -4,9: + 0: 65535 + -4,10: + 0: 65535 + -6,9: + 0: 65535 + -6,10: + 0: 65535 + -5,9: + 0: 65535 + -5,10: + 0: 65535 + -12,0: + 0: 65535 + -12,1: + 0: 65535 + -11,0: + 0: 65535 + -11,1: + 0: 65535 + -10,0: + 0: 65535 + -9,0: + 0: 65535 + -9,4: + 0: 65535 + -12,-3: + 0: 65535 + -12,-2: + 0: 65535 + -12,-1: + 0: 65535 + -11,-3: + 0: 65535 + -11,-2: + 0: 65535 + -11,-1: + 0: 65535 + -11,-4: + 0: 65535 + -10,-4: + 0: 65523 + -10,-3: + 0: 65535 + -10,-2: + 0: 65535 + -10,-1: + 0: 65535 + -9,-4: + 0: 65520 + -9,-3: + 0: 65535 + -9,-2: + 0: 65535 + -9,-1: + 0: 65535 + -13,-3: + 0: 65535 + -13,-2: + 0: 65535 + -13,-1: + 0: 65535 + -13,0: + 0: 65535 + -13,1: + 0: 65535 + -12,2: + 0: 65535 + -12,3: + 0: 65535 + -11,2: + 0: 65535 + -11,3: + 0: 65535 + -12,4: + 0: 65535 + -12,5: + 0: 65535 + -12,6: + 0: 65535 + -12,7: + 0: 65535 + -11,4: + 0: 65535 + -11,5: + 0: 65535 + -11,6: + 0: 65535 + -11,7: + 0: 65535 + -12,8: + 0: 65535 + -11,8: + 0: 65535 + -16,-3: + 0: 65535 + -16,-2: + 0: 28943 + -16,-1: + 0: 30583 + -15,-3: + 0: 65535 + -15,-2: + 0: 65535 + -15,-1: + 0: 65535 + -14,-3: + 0: 65535 + -14,-2: + 0: 65535 + -14,-1: + 0: 65535 + -16,0: + 0: 61463 + -16,1: + 0: 65535 + -15,0: + 0: 65535 + -15,1: + 0: 65535 + -15,2: + 0: 65535 + -15,3: + 0: 65535 + -14,0: + 0: 65535 + -14,1: + 0: 65535 + -14,2: + 0: 65535 + -14,3: + 0: 65535 + -13,2: + 0: 65535 + -13,3: + 0: 65535 + -15,4: + 0: 65535 + -15,5: + 0: 65535 + -15,6: + 0: 65535 + -15,7: + 0: 65535 + -14,4: + 0: 65535 + -14,5: + 0: 65535 + -14,6: + 0: 65535 + -14,7: + 0: 65535 + -13,4: + 0: 65535 + -13,5: + 0: 65535 + -13,6: + 0: 65535 + -13,7: + 0: 65535 + -15,8: + 0: 65535 + -14,8: + 0: 65535 + -13,8: + 0: 65535 + -20,-3: + 0: 65535 + -20,-1: + 0: 65535 + -20,-2: + 0: 59407 + -19,-3: + 0: 65535 + -19,-2: + 0: 65519 + -19,-1: + 0: 65535 + -18,-3: + 0: 65535 + -18,-2: + 0: 65295 + -18,-1: + 0: 65535 + -17,-3: + 0: 65535 + -17,-2: + 0: 65407 + -17,-1: + 0: 65535 + -20,0: + 0: 53390 + -20,1: + 0: 56799 + -19,0: + 0: 65279 + -19,1: + 0: 65535 + -18,0: + 0: 61695 + -18,1: + 0: 65535 + -17,0: + 0: 63487 + -17,1: + 0: 65535 + 2,11: + 0: 65535 + 3,11: + 0: 65535 + -4,11: + 0: 65535 + -3,9: + 0: 65535 + -3,10: + 0: 65535 + -3,11: + 0: 65535 + -2,9: + 0: 65535 + -2,10: + 0: 65535 + -2,11: + 0: 65535 + 4,11: + 0: 65535 + 5,11: + 0: 3983 + 6,11: + 0: 327 + -6,11: + 0: 65535 + -5,11: + 0: 65535 + -7,13: + 0: 65535 + -7,14: + 0: 8191 + -6,12: + 0: 65535 + -6,13: + 0: 65407 + 3: 128 + -6,14: + 0: 65535 + -6,15: + 0: 65535 + -5,12: + 0: 65535 + -5,13: + 0: 65535 + -5,14: + 0: 65535 + -5,15: + 0: 65535 + -4,12: + 0: 65535 + -4,13: + 0: 65535 + -4,14: + 0: 65535 + -4,15: + 0: 65535 + -3,12: + 0: 65535 + -3,13: + 0: 65535 + -3,14: + 0: 65535 + -3,15: + 0: 65535 + -2,12: + 0: 63487 + -2,13: + 0: 65527 + -2,14: + 0: 65535 + -2,15: + 0: 65535 + -1,12: + 0: 65535 + -1,13: + 0: 16383 + -1,14: + 0: 20795 + -1,15: + 0: 22359 + 0,12: + 0: 65535 + 0,13: + 0: 9215 + 1,12: + 0: 65535 + 1,13: + 0: 39423 + 2,12: + 0: 65535 + 2,13: + 0: 61951 + 3,12: + 0: 65535 + 3,13: + 0: 63999 + 4,12: + 0: 65535 + 4,13: + 0: 62719 + -4,16: + 0: 65535 + -4,17: + 0: 1839 + -3,16: + 0: 46003 + -6,16: + 0: 61167 + -6,17: + 0: 1595 + -5,16: + 0: 65535 + -5,17: + 0: 3919 + -8,9: + 0: 65535 + -8,10: + 0: 65535 + -8,11: + 0: 65535 + -7,9: + 0: 65535 + -7,10: + 0: 65535 + -7,11: + 0: 65535 + -12,9: + 0: 65535 + -12,10: + 0: 65535 + -12,11: + 0: 65535 + -11,9: + 0: 65535 + -11,10: + 0: 65535 + -11,11: + 0: 65535 + -10,9: + 0: 65535 + -10,10: + 0: 65535 + -10,11: + 0: 65535 + -9,9: + 0: 65535 + -9,10: + 0: 65535 + -9,11: + 0: 65535 + -13,9: + 0: 65535 + -13,10: + 0: 65535 + -13,11: + 0: 65535 + -8,12: + 0: 65535 + -8,13: + 0: 65535 + -8,14: + 0: 49087 + -8,15: + 0: 3999 + -7,12: + 0: 65535 + -7,15: + 0: 50447 + -12,12: + 0: 65535 + -12,13: + 0: 65535 + -12,14: + 0: 65535 + -11,12: + 0: 65535 + -11,13: + 0: 65535 + -11,14: + 0: 65535 + -10,12: + 0: 65535 + -10,13: + 0: 65535 + -10,14: + 0: 65535 + -9,12: + 0: 65535 + -9,13: + 0: 65535 + -9,14: + 0: 53247 + -9,15: + 0: 11055 + -15,9: + 0: 65535 + -15,10: + 0: 65535 + -15,11: + 0: 65535 + -14,9: + 0: 65535 + -14,10: + 0: 65535 + -14,11: + 0: 65535 + -12,15: + 0: 65535 + -11,15: + 0: 65535 + -10,15: + 0: 65535 + -16,12: + 0: 65535 + -16,13: + 0: 65535 + -16,14: + 0: 65535 + -16,15: + 0: 65535 + -15,12: + 0: 65535 + -15,13: + 0: 65535 + -15,14: + 0: 65535 + -15,15: + 0: 65535 + -14,12: + 0: 65535 + -14,13: + 0: 65535 + -14,14: + 0: 65535 + -14,15: + 0: 65535 + -13,12: + 0: 65535 + -13,13: + 0: 65535 + -13,14: + 0: 65535 + -13,15: + 0: 65535 + -20,13: + 0: 65535 + -20,14: + 0: 65535 + -20,15: + 0: 255 + -19,13: + 0: 65535 + -19,14: + 0: 65535 + -19,15: + 0: 255 + -18,13: + 0: 65535 + -18,14: + 0: 65535 + -18,15: + 0: 52479 + -17,13: + 0: 65535 + -17,14: + 0: 65535 + -17,15: + 0: 65535 + -17,12: + 0: 65535 + -16,16: + 0: 65535 + -16,17: + 0: 65535 + -16,18: + 0: 15 + -15,16: + 0: 65535 + -15,17: + 0: 65535 + -15,18: + 0: 239 + -14,16: + 0: 65535 + -14,17: + 0: 65535 + -14,18: + 0: 65023 + -13,16: + 0: 65535 + -13,17: + 0: 30719 + -13,18: + 0: 32631 + -12,16: + 0: 65535 + -12,17: + 0: 61951 + -18,16: + 0: 3276 + -17,16: + 0: 36863 + -17,17: + 0: 34952 + -17,18: + 0: 8 + -21,13: + 0: 61439 + -21,14: + 0: 8942 + -16,2: + 0: 65535 + -16,3: + 0: 65535 + -16,4: + 0: 65535 + -16,5: + 0: 65535 + -16,6: + 0: 65535 + -16,7: + 0: 65535 + -16,8: + 0: 65535 + -16,9: + 0: 65535 + -16,10: + 0: 65535 + -16,11: + 0: 65535 + -20,3: + 0: 65450 + -20,2: + 0: 44719 + -19,2: + 0: 65263 + -19,3: + 0: 65534 + -18,2: + 0: 65535 + -18,3: + 0: 65535 + -17,2: + 0: 65535 + -17,3: + 0: 65535 + -20,12: + 0: 65535 + -19,12: + 0: 65535 + -18,12: + 0: 65535 + -23,12: + 0: 52478 + -23,13: + 0: 3276 + -22,12: + 0: 65535 + -22,13: + 0: 4095 + -21,12: + 0: 63743 + 2: 1792 + -20,8: + 0: 65535 + -20,9: + 0: 65535 + -20,10: + 0: 65535 + -20,11: + 0: 65535 + -19,8: + 0: 65535 + -19,9: + 0: 65535 + -19,10: + 0: 65535 + -19,11: + 0: 65535 + -18,8: + 0: 65535 + -18,9: + 0: 65535 + -18,10: + 0: 65535 + -18,11: + 0: 65535 + -17,8: + 0: 65535 + -17,9: + 0: 65535 + -17,10: + 0: 65535 + -17,11: + 0: 65535 + -20,4: + 0: 65535 + -20,5: + 0: 65535 + -20,6: + 0: 65535 + -20,7: + 0: 65535 + -19,4: + 0: 65535 + -19,5: + 0: 65535 + -19,6: + 0: 65535 + -19,7: + 0: 65535 + -18,4: + 0: 65407 + 4: 128 + -18,5: + 0: 65535 + -18,6: + 0: 65535 + -18,7: + 0: 65535 + -17,4: + 0: 65535 + -17,5: + 0: 65535 + -17,6: + 0: 65535 + -17,7: + 0: 65535 + -24,8: + 0: 65535 + -24,9: + 0: 44719 + -23,8: + 0: 8191 + 5: 57344 + -23,9: + 0: 7967 + 6: 224 + 2: 57344 + -23,10: + 0: 7967 + 2: 224 + 7: 57344 + -23,11: + 0: 65311 + 2: 224 + -22,8: + 0: 65535 + -22,9: + 0: 65535 + -22,10: + 0: 65535 + -22,11: + 0: 65535 + -21,8: + 0: 65535 + -21,9: + 0: 65535 + -21,10: + 0: 65535 + -21,11: + 0: 65535 + -21,3: + 0: 57088 + -24,5: + 0: 57343 + -24,6: + 0: 56797 + -24,7: + 0: 63999 + -24,4: + 0: 65524 + -23,4: + 0: 65524 + -23,5: + 0: 65535 + -23,6: + 0: 65535 + -23,7: + 0: 65535 + -22,4: + 0: 65528 + -22,5: + 0: 65535 + -22,6: + 0: 65535 + -22,7: + 0: 65535 + -21,4: + 0: 65535 + -21,5: + 0: 65535 + -21,6: + 0: 65535 + -21,7: + 0: 65535 + -28,8: + 0: 65359 + -28,9: + 0: 8 + -27,8: + 0: 65503 + -27,9: + 0: 15 + -26,8: + 0: 65535 + -26,9: + 0: 15 + -25,8: + 0: 65535 + -25,9: + 0: 15 + -28,5: + 0: 4088 + -27,5: + 0: 24575 + -27,6: + 0: 21975 + -27,7: + 0: 62943 + -26,5: + 0: 20479 + -26,6: + 0: 56703 + -26,7: + 0: 64989 + -25,5: + 0: 49151 + -25,6: + 0: 48847 + -25,7: + 0: 63217 + -29,5: + 0: 224 + -29,8: + 0: 57344 + -21,15: + 0: 226 + -12,-4: + 0: 65535 + -16,-4: + 0: 65521 + -13,-4: + 0: 65535 + -19,-4: + 0: 65535 + -18,-4: + 0: 65521 + -17,-4: + 0: 65535 + -13,-5: + 0: 65280 + -12,-5: + 0: 65280 + -11,16: + 0: 65535 + -10,16: + 0: 65535 + -16,19: + 0: 61152 + -15,19: + 0: 65520 + -14,19: + 0: 65533 + -13,19: + 0: 30711 + -16,20: + 0: 65535 + -16,21: + 0: 61439 + -16,22: + 0: 61167 + -15,20: + 0: 65535 + -15,21: + 0: 65535 + -15,22: + 0: 65535 + -14,20: + 0: 65535 + -14,21: + 0: 65535 + -14,22: + 0: 65535 + -13,20: + 0: 65535 + -13,21: + 0: 65535 + -13,22: + 0: 32767 + 0,14: + 0: 15 + 1,14: + 0: 3 + -3,17: + 0: 878 + -2,16: + 0: 249 + -1,16: + 0: 20 + -7,16: + 0: 32836 + -7,17: + 0: 8 + -12,18: + 0: 4368 + -12,19: + 0: 273 + -11,17: + 0: 61951 + -10,17: + 0: 62207 + -16,23: + 0: 143 + -15,23: + 0: 3839 + -14,23: + 0: 2047 + -13,23: + 0: 119 + -12,20: + 0: 4369 + -12,21: + 0: 4369 + -12,22: + 0: 4369 + -12,23: + 0: 1 + -17,20: + 0: 50184 + -17,21: + 0: 19524 + -17,22: + 0: 2188 + -28,4: + 0: 36608 + -28,7: + 0: 32776 + -27,4: + 0: 65480 + -26,4: + 0: 65524 + -25,4: + 0: 65520 + 4,-7: + 0: 17600 + 6,-8: + 0: 19456 + 7,7: + 0: 12151 + -6,-5: + 0: 19968 + -15,-4: + 0: 63472 + -14,-4: + 0: 44936 + -20,-4: + 0: 64640 + -24,10: + 0: 43658 + -24,11: + 0: 44718 + -24,12: + 0: 192 + -27,3: + 0: 49152 + -26,3: + 0: 61440 + -25,3: + 0: 4096 + -24,3: + 0: 61440 + -23,3: + 0: 61440 + -22,3: + 0: 3584 + 8,-3: + 0: 4368 + 8,-2: + 0: 4369 + 8,-1: + 0: 4369 + 2,-5: + 0: 49151 + 5,12: + 0: 8754 + 5,13: + 0: 8754 + 8,5: + 0: 4368 + 8,6: + 0: 4369 + 8,7: + 0: 4368 + 7,8: + 0: 15 + 8,8: + 0: 1 + -9,16: + 0: 8994 + -9,17: + 0: 12835 + -2,-6: + 0: 63984 + -1,-6: + 0: 62672 + 0,-6: + 0: 61904 + 1,-6: + 0: 63984 + 2,-6: + 0: 63696 + 3,-6: + 0: 21616 + 3,-5: + 0: 17909 + -14,-5: + 0: 34816 + -11,-5: + 0: 61440 + -10,-5: + 0: 4096 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 21.6852 + - 81.57766 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 25.17718 + - 94.71416 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.14996 + moles: + - 20.078888 + - 75.53487 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 6666.982 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 6666.982 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 6666.982 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + type: GridAtmosphere + - type: GasTileOverlay + - type: RadiationGridResistance + - id: Barratry + type: BecomesStation + - type: SpreaderGrid + - type: GridPathfinding + - uid: 5005 + components: + - type: MetaData + - type: Transform + - type: Map + - type: PhysicsMap + - type: Broadphase + - type: OccluderTree + - type: LoadedMap + - type: GridTree + - type: MovedGrids +- proto: AcousticGuitarInstrument + entities: + - uid: 14704 + components: + - pos: 28.538687,-28.497456 + parent: 1 + type: Transform +- proto: ActionToggleLight + entities: + - uid: 7458 + components: + - flags: InContainer + type: MetaData + - parent: 7940 + type: Transform + - container: 7940 + type: InstantAction +- proto: AirAlarm + entities: + - uid: 316 + components: + - pos: -10.5,-0.5 + parent: 1 + type: Transform + - devices: + - 1749 + - 1741 + - 1747 + - 1750 + - 12320 + - 12321 + - 12353 + - 12352 + - 12416 + - 12413 + - 12332 + - 12331 + - 12414 + - 12415 + - 12384 + - 14970 + type: DeviceList + - uid: 317 + components: + - pos: 3.5,-7.5 + parent: 1 + type: Transform + - uid: 8960 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,56.5 + parent: 1 + type: Transform + - devices: + - 8573 + - 8574 + - 8578 + - 8576 + - 8575 + - 8757 + - 8764 + - 8778 + - 8779 + - 8765 + - 8766 + - 8690 + - 8686 + - 8697 + - 8754 + - 8761 + - 8755 + - 8762 + - 8756 + - 8763 + type: DeviceList + - uid: 8962 + components: + - pos: -47.5,66.5 + parent: 1 + type: Transform + - uid: 8965 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,88.5 + parent: 1 + type: Transform + - devices: + - 5742 + - 5579 + - 5501 + - 5496 + - 8883 + - 8884 + - 8887 + - 8888 + - 8886 + - 8885 + - 8925 + - 8967 + - 8928 + - 8924 + type: DeviceList + - uid: 13040 + components: + - rot: 3.141592653589793 rad + pos: -50.5,45.5 + parent: 1 + type: Transform + - devices: + - 7995 + - 7996 + - 7997 + - 8003 + - 8002 + - 8001 + - 11119 + - 11122 + - 11270 + - 11272 + - 11175 + - 11172 + - 11145 + - 11146 + - 11319 + - 11318 + - 11317 + - 8573 + - 8574 + type: DeviceList + - uid: 13047 + components: + - rot: 3.141592653589793 rad + pos: -47.5,30.5 + parent: 1 + type: Transform + - devices: + - 5240 + - 5241 + - 5242 + - 7995 + - 7996 + - 7997 + - 5233 + - 5232 + - 5231 + - 11303 + - 11306 + - 11305 + - 11304 + - 11321 + - 11320 + - 11555 + - 11557 + type: DeviceList + - uid: 13051 + components: + - pos: -68.5,7.5 + parent: 1 + type: Transform + - devices: + - 5213 + - 5214 + - 5215 + type: DeviceList + - uid: 13053 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,-3.5 + parent: 1 + type: Transform + - devices: + - 5216 + - 5217 + - 5218 + - 11842 + - 11841 + - 11840 + - 11843 + - 4749 + - 4807 + - 4802 + - 4750 + - 4800 + - 3967 + - 4912 + - 4913 + - 4126 + type: DeviceList + - uid: 13055 + components: + - pos: -45.5,7.5 + parent: 1 + type: Transform + - devices: + - 11968 + - 11970 + - 11926 + - 11925 + - 11789 + - 11790 + - 4112 + - 4111 + - 4110 + - 5212 + - 5211 + - 5210 + type: DeviceList + - uid: 13057 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,-3.5 + parent: 1 + type: Transform + - devices: + - 3718 + - 3719 + - 3720 + - 3721 + - 3722 + - 3723 + - 3724 + - 3717 + - 3716 + - 3726 + - 12016 + - 12018 + - 11970 + - 12079 + - 12063 + - 11996 + - 11998 + - 12001 + type: DeviceList + - uid: 13058 + components: + - pos: -35.5,8.5 + parent: 1 + type: Transform + - devices: + - 4110 + - 4111 + - 4112 + - 4114 + - 4115 + - 4116 + - 4109 + - 4108 + - 4107 + - 12079 + - 12080 + - 12063 + - 12064 + - 11968 + - 11970 + - 11926 + - 11925 + - 12140 + - 12139 + - 11642 + - 11645 + type: DeviceList + - uid: 13061 + components: + - pos: -21.5,7.5 + parent: 1 + type: Transform + - devices: + - 1766 + - 1765 + - 1764 + - 4107 + - 4108 + - 4109 + - 12296 + - 12297 + - 12139 + - 12140 + - 12130 + - 12128 + type: DeviceList + - uid: 13063 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,18.5 + parent: 1 + type: Transform + - devices: + - 4114 + - 4115 + - 4116 + - 4117 + - 4118 + - 4119 + - 4120 + - 4121 + - 4122 + - 4123 + - 5227 + - 5226 + - 5225 + - 11642 + - 11645 + - 11641 + - 11644 + - 11643 + - 11640 + type: DeviceList + - uid: 13065 + components: + - pos: -41.5,40.5 + parent: 1 + type: Transform + - devices: + - 5233 + - 5232 + - 5231 + - 5225 + - 5226 + - 5227 + - 5228 + - 5229 + - 5230 + - 11592 + - 11596 + - 11593 + - 11597 + - 11594 + - 11599 + - 9786 + - 9787 + - 9788 + - 9789 + - 9784 + - 9785 + type: DeviceList + - uid: 13067 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,45.5 + parent: 1 + type: Transform + - devices: + - 11238 + - 11237 + - 11239 + - 11236 + - 11240 + - 9784 + - 9785 + - 9790 + - 9791 + - 9792 + - 9793 + - 11235 + type: DeviceList + - uid: 13069 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,42.5 + parent: 1 + type: Transform + - devices: + - 9790 + - 9791 + - 9793 + - 9792 + - 11196 + - 11192 + - 11209 + - 11208 + type: DeviceList + - uid: 13071 + components: + - pos: -29.5,34.5 + parent: 1 + type: Transform + - devices: + - 12172 + - 12173 + - 5228 + - 5229 + - 5230 + - 5236 + - 5235 + - 5234 + type: DeviceList + - uid: 13073 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,42.5 + parent: 1 + type: Transform + - devices: + - 5237 + - 5238 + - 5239 + - 12259 + - 12255 + - 12256 + - 12260 + - 12273 + - 12272 + type: DeviceList + - uid: 13074 + components: + - pos: -22.5,43.5 + parent: 1 + type: Transform + - devices: + - 9819 + - 12257 + - 12261 + - 12258 + - 12190 + type: DeviceList + - uid: 13077 + components: + - pos: -13.5,34.5 + parent: 1 + type: Transform + - devices: + - 5237 + - 5238 + - 5239 + - 12259 + - 12255 + - 12256 + - 12260 + - 12273 + - 12272 + - 3064 + - 3122 + - 2814 + - 2881 + - 3175 + - 3176 + - 3177 + - 2866 + - 2865 + - 12485 + - 12482 + - 12486 + - 12481 + type: DeviceList + - uid: 13079 + components: + - pos: -18.5,58.5 + parent: 1 + type: Transform + - devices: + - 6496 + - 6497 + - 9808 + - 6498 + - 6499 + - 6500 + - 6501 + - 6502 + - 6503 + - 6504 + - 13010 + - 13004 + - 13011 + - 13005 + - 13012 + - 13006 + - 13013 + - 13007 + - 13031 + - 13034 + - 13032 + - 13033 + type: DeviceList + - uid: 13096 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,19.5 + parent: 1 + type: Transform + - devices: + - 1763 + - 1762 + - 1761 + - 3177 + - 3176 + - 3175 + - 12506 + - 12507 + - 12508 + - 12509 + - 12510 + - 12484 + - 12488 + - 12487 + - 12483 + type: DeviceList + - uid: 13099 + components: + - pos: -1.5,7.5 + parent: 1 + type: Transform + - devices: + - 1758 + - 1759 + - 1760 + - 1768 + - 1767 + - 1753 + - 1752 + - 12586 + - 12582 + - 12583 + - 12587 + type: DeviceList + - uid: 13100 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,-0.5 + parent: 1 + type: Transform + - devices: + - 12585 + - 12588 + - 12589 + - 12584 + - 1753 + - 1752 + - 12595 + - 12596 + - 12605 + - 12606 + type: DeviceList + - uid: 13103 + components: + - pos: 21.5,7.5 + parent: 1 + type: Transform + - devices: + - 1767 + - 1768 + - 1755 + - 1754 + - 12656 + - 12652 + - 12658 + - 12654 + - 12587 + - 12583 + type: DeviceList + - uid: 13105 + components: + - rot: 3.141592653589793 rad + pos: 28.5,4.5 + parent: 1 + type: Transform + - devices: + - 12658 + - 12654 + - 12715 + - 12710 + - 12716 + - 12713 + - 12714 + - 12717 + - 1755 + - 1754 + type: DeviceList + - uid: 13299 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,32.5 + parent: 1 + type: Transform + - devices: + - 2055 + - 2868 + - 2867 + - 2869 + - 13306 + - 13305 + - 2052 + - 2051 + - 13309 + - 13308 + - 13307 + - 2053 + - 2054 + - 12736 + - 2102 + - 3023 + - 3019 + - 2674 + - 2490 + - 2666 + - 2487 + - 2671 + - 2488 + - 2670 + - 2489 + - 3022 + - 3021 + - 15082 + - 15083 + type: DeviceList + - uid: 13304 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,22.5 + parent: 1 + type: Transform + - devices: + - 13301 + - 13302 + - 2051 + - 2052 + - 2880 + - 2878 + - 2879 + - 2869 + - 2870 + - 12859 + - 12858 + - 3021 + - 3022 + - 3023 + - 3019 + - 3020 + - 3024 + - 12766 + - 12765 + - 12759 + - 12760 + - 12761 + - 12762 + - 12763 + - 13307 + - 13308 + - 13309 + - 15079 + - 15080 + - 15081 + type: DeviceList + - uid: 14286 + components: + - rot: -1.5707963267948966 rad + pos: -72.5,32.5 + parent: 1 + type: Transform + - devices: + - 10685 + - 10684 + - 10688 + - 10689 + - 14115 + - 14116 + - 14038 + - 14045 + - 14148 + - 14149 + - 14160 + - 14161 + - 14040 + type: DeviceList + - uid: 14297 + components: + - rot: -1.5707963267948966 rad + pos: -76.5,38.5 + parent: 1 + type: Transform + - devices: + - 10676 + - 10675 + - 10674 + - 10673 + - 10672 + - 10671 + - 10670 + - 10669 + - 10668 + - 10667 + - 10666 + - 14046 + - 14047 + type: DeviceList + - uid: 14301 + components: + - rot: 1.5707963267948966 rad + pos: -75.5,20.5 + parent: 1 + type: Transform + - devices: + - 14304 + - 14302 + - 10686 + - 10687 + - 14303 + - 10684 + - 10685 + - 10682 + - 10683 + - 14114 + - 14109 + - 14111 + - 14110 + - 14112 + - 14113 + - 14116 + - 14115 + - 14159 + - 14158 + type: DeviceList +- proto: AirAlarmElectronics + entities: + - uid: 5539 + components: + - pos: -47.591698,28.816675 + parent: 1 + type: Transform + - uid: 5540 + components: + - pos: -47.388573,28.48855 + parent: 1 + type: Transform +- proto: AirCanister + entities: + - uid: 1153 + components: + - pos: 21.5,25.5 + parent: 1 + type: Transform + - uid: 1189 + components: + - pos: -3.5,13.5 + parent: 1 + type: Transform + - uid: 2400 + components: + - pos: 6.5,37.5 + parent: 1 + type: Transform + - uid: 5586 + components: + - pos: -2.5,36.5 + parent: 1 + type: Transform + - uid: 5673 + components: + - pos: -27.5,20.5 + parent: 1 + type: Transform + - uid: 6080 + components: + - pos: -76.5,31.5 + parent: 1 + type: Transform + - uid: 7930 + components: + - pos: -77.5,31.5 + parent: 1 + type: Transform + - uid: 9267 + components: + - pos: 25.5,-4.5 + parent: 1 + type: Transform + - uid: 9469 + components: + - pos: 22.5,25.5 + parent: 1 + type: Transform + - uid: 9470 + components: + - pos: -48.5,19.5 + parent: 1 + type: Transform + - uid: 10041 + components: + - pos: 14.5,43.5 + parent: 1 + type: Transform + - uid: 10127 + components: + - pos: -39.5,54.5 + parent: 1 + type: Transform + - uid: 10352 + components: + - pos: -78.5,31.5 + parent: 1 + type: Transform + - uid: 12895 + components: + - pos: 14.5,15.5 + parent: 1 + type: Transform + - uid: 14335 + components: + - pos: -75.5,42.5 + parent: 1 + type: Transform + - uid: 14579 + components: + - pos: -60.5,18.5 + parent: 1 + type: Transform + - uid: 15906 + components: + - pos: 5.5,-18.5 + parent: 1 + type: Transform +- proto: Airlock + entities: + - uid: 1600 + components: + - pos: 9.5,0.5 + parent: 1 + type: Transform + - uid: 1601 + components: + - pos: 9.5,-2.5 + parent: 1 + type: Transform + - uid: 1608 + components: + - pos: -26.5,3.5 + parent: 1 + type: Transform + - uid: 1609 + components: + - pos: -24.5,2.5 + parent: 1 + type: Transform + - uid: 1610 + components: + - pos: -24.5,0.5 + parent: 1 + type: Transform + - uid: 1611 + components: + - pos: -24.5,-1.5 + parent: 1 + type: Transform + - uid: 3412 + components: + - pos: -23.5,14.5 + parent: 1 + type: Transform + - uid: 5299 + components: + - pos: -55.5,24.5 + parent: 1 + type: Transform + - uid: 7276 + components: + - pos: -56.5,86.5 + parent: 1 + type: Transform + - uid: 9211 + components: + - rot: 3.141592653589793 rad + pos: -59.5,44.5 + parent: 1 + type: Transform +- proto: AirlockArmoryGlassLocked + entities: + - uid: 336 + components: + - pos: -49.5,65.5 + parent: 1 + type: Transform + - uid: 7431 + components: + - pos: -49.5,64.5 + parent: 1 + type: Transform +- proto: AirlockArmoryLocked + entities: + - uid: 7876 + components: + - pos: -49.5,61.5 + parent: 1 + type: Transform +- proto: AirlockAtmosphericsGlassLocked + entities: + - uid: 10695 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,34.5 + parent: 1 + type: Transform + - uid: 10696 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,35.5 + parent: 1 + type: Transform +- proto: AirlockBarGlassLocked + entities: + - uid: 5282 + components: + - pos: -55.5,20.5 + parent: 1 + type: Transform +- proto: AirlockBarLocked + entities: + - uid: 7369 + components: + - pos: -33.5,40.5 + parent: 1 + type: Transform + - uid: 7370 + components: + - pos: -29.5,37.5 + parent: 1 + type: Transform +- proto: AirlockBrigGlassLocked + entities: + - uid: 7879 + components: + - pos: -49.5,55.5 + parent: 1 + type: Transform + - uid: 7880 + components: + - pos: -49.5,53.5 + parent: 1 + type: Transform + - uid: 7881 + components: + - pos: -48.5,52.5 + parent: 1 + type: Transform + - uid: 7882 + components: + - pos: -46.5,52.5 + parent: 1 + type: Transform + - uid: 10935 + components: + - pos: -62.5,43.5 + parent: 1 + type: Transform +- proto: AirlockCaptainLocked + entities: + - uid: 6507 + components: + - pos: -7.5,58.5 + parent: 1 + type: Transform +- proto: AirlockCargo + entities: + - uid: 3646 + components: + - pos: -44.5,-0.5 + parent: 1 + type: Transform +- proto: AirlockCargoGlassLocked + entities: + - uid: 3620 + components: + - pos: -41.5,-0.5 + parent: 1 + type: Transform + - uid: 3621 + components: + - pos: -40.5,-0.5 + parent: 1 + type: Transform + - uid: 3622 + components: + - pos: -42.5,-2.5 + parent: 1 + type: Transform + - uid: 3639 + components: + - pos: -37.5,-0.5 + parent: 1 + type: Transform +- proto: AirlockChapelLocked + entities: + - uid: 1644 + components: + - pos: 18.5,-1.5 + parent: 1 + type: Transform +- proto: AirlockChemistryLocked + entities: + - uid: 1898 + components: + - pos: 1.5,23.5 + parent: 1 + type: Transform +- proto: AirlockChiefEngineerLocked + entities: + - uid: 5301 + components: + - pos: -50.5,26.5 + parent: 1 + type: Transform + - uid: 10697 + components: + - rot: -1.5707963267948966 rad + pos: -74.5,18.5 + parent: 1 + type: Transform +- proto: AirlockChiefMedicalOfficerLocked + entities: + - uid: 1240 + components: + - pos: 17.5,32.5 + parent: 1 + type: Transform + - uid: 1323 + components: + - pos: 13.5,28.5 + parent: 1 + type: Transform +- proto: AirlockCommandGlassLocked + entities: + - uid: 6392 + components: + - rot: 3.141592653589793 rad + pos: -16.5,52.5 + parent: 1 + type: Transform + - uid: 6393 + components: + - rot: 3.141592653589793 rad + pos: -13.5,55.5 + parent: 1 + type: Transform + - uid: 6394 + components: + - rot: 3.141592653589793 rad + pos: -15.5,58.5 + parent: 1 + type: Transform + - uid: 6395 + components: + - rot: 3.141592653589793 rad + pos: -17.5,58.5 + parent: 1 + type: Transform + - uid: 6651 + components: + - pos: -14.5,48.5 + parent: 1 + type: Transform + - uid: 6652 + components: + - pos: -14.5,47.5 + parent: 1 + type: Transform +- proto: AirlockCommandLocked + entities: + - uid: 3220 + components: + - pos: -41.5,7.5 + parent: 1 + type: Transform +- proto: AirlockEngineeringGlassLocked + entities: + - uid: 10679 + components: + - rot: 3.141592653589793 rad + pos: -84.5,22.5 + parent: 1 + type: Transform + - uid: 10680 + components: + - rot: 3.141592653589793 rad + pos: -84.5,28.5 + parent: 1 + type: Transform + - uid: 10681 + components: + - rot: 3.141592653589793 rad + pos: -77.5,25.5 + parent: 1 + type: Transform + - uid: 10692 + components: + - rot: -1.5707963267948966 rad + pos: -72.5,21.5 + parent: 1 + type: Transform + - uid: 10694 + components: + - rot: -1.5707963267948966 rad + pos: -64.5,29.5 + parent: 1 + type: Transform +- proto: AirlockEngineeringLocked + entities: + - uid: 607 + components: + - pos: 11.5,-6.5 + parent: 1 + type: Transform + - uid: 2694 + components: + - pos: 22.5,7.5 + parent: 1 + type: Transform + - uid: 3933 + components: + - pos: -22.5,-4.5 + parent: 1 + type: Transform + - uid: 4338 + components: + - pos: -42.5,14.5 + parent: 1 + type: Transform + - uid: 5300 + components: + - pos: -48.5,30.5 + parent: 1 + type: Transform + - uid: 5655 + components: + - rot: 3.141592653589793 rad + pos: -17.5,17.5 + parent: 1 + type: Transform + - uid: 6197 + components: + - pos: 16.5,45.5 + parent: 1 + type: Transform + - uid: 6807 + components: + - pos: -34.5,56.5 + parent: 1 + type: Transform + - uid: 10142 + components: + - pos: -65.5,58.5 + parent: 1 + type: Transform + - uid: 11061 + components: + - rot: -1.5707963267948966 rad + pos: -72.5,26.5 + parent: 1 + type: Transform + - uid: 13619 + components: + - pos: -62.5,32.5 + parent: 1 + type: Transform + - uid: 15044 + components: + - pos: -8.5,7.5 + parent: 1 + type: Transform +- proto: AirlockExternal + entities: + - uid: 184 + components: + - pos: -5.5,-17.5 + parent: 1 + type: Transform + - uid: 217 + components: + - pos: -5.5,-15.5 + parent: 1 + type: Transform + - uid: 1640 + components: + - pos: 29.5,18.5 + parent: 1 + type: Transform + - uid: 1641 + components: + - pos: 29.5,16.5 + parent: 1 + type: Transform + - uid: 1642 + components: + - pos: 29.5,10.5 + parent: 1 + type: Transform + - uid: 1645 + components: + - pos: 29.5,8.5 + parent: 1 + type: Transform + - uid: 4101 + components: + - rot: 3.141592653589793 rad + pos: -72.5,-12.5 + parent: 1 + type: Transform + - uid: 4102 + components: + - rot: 3.141592653589793 rad + pos: -74.5,-12.5 + parent: 1 + type: Transform + - uid: 4751 + components: + - rot: 3.141592653589793 rad + pos: -66.5,-12.5 + parent: 1 + type: Transform + - uid: 4754 + components: + - rot: 3.141592653589793 rad + pos: -64.5,-12.5 + parent: 1 + type: Transform +- proto: AirlockExternalAtmosphericsLocked + entities: + - uid: 9252 + components: + - rot: 1.5707963267948966 rad + pos: -77.5,47.5 + parent: 1 + type: Transform + - uid: 9256 + components: + - rot: 1.5707963267948966 rad + pos: -78.5,48.5 + parent: 1 + type: Transform + - uid: 10665 + components: + - rot: 1.5707963267948966 rad + pos: -76.5,48.5 + parent: 1 + type: Transform +- proto: AirlockExternalGlass + entities: + - uid: 1770 + components: + - rot: 3.141592653589793 rad + pos: -78.5,-10.5 + parent: 1 + type: Transform + - uid: 3969 + components: + - rot: 3.141592653589793 rad + pos: -76.5,-10.5 + parent: 1 + type: Transform + - uid: 4850 + components: + - pos: -66.5,3.5 + parent: 1 + type: Transform + - uid: 4871 + components: + - pos: -73.5,3.5 + parent: 1 + type: Transform + - uid: 4951 + components: + - rot: 3.141592653589793 rad + pos: -66.5,-8.5 + parent: 1 + type: Transform + - uid: 4952 + components: + - rot: 3.141592653589793 rad + pos: -73.5,-8.5 + parent: 1 + type: Transform + - uid: 7196 + components: + - pos: -52.5,66.5 + parent: 1 + type: Transform + - uid: 7199 + components: + - pos: -50.5,66.5 + parent: 1 + type: Transform + - uid: 7203 + components: + - pos: -50.5,70.5 + parent: 1 + type: Transform + - uid: 7206 + components: + - pos: -52.5,70.5 + parent: 1 + type: Transform + - uid: 7219 + components: + - pos: -52.5,77.5 + parent: 1 + type: Transform + - uid: 7220 + components: + - pos: -50.5,77.5 + parent: 1 + type: Transform + - uid: 7334 + components: + - pos: -52.5,81.5 + parent: 1 + type: Transform + - uid: 7335 + components: + - pos: -50.5,81.5 + parent: 1 + type: Transform +- proto: AirlockExternalGlassCargoLocked + entities: + - uid: 7343 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,-12.5 + parent: 1 + type: Transform + - uid: 7345 + components: + - pos: -48.5,-14.5 + parent: 1 + type: Transform + - uid: 9129 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,-13.5 + parent: 1 + type: Transform + - uid: 10260 + components: + - pos: -34.5,-11.5 + parent: 1 + type: Transform + - uid: 10261 + components: + - pos: -32.5,-11.5 + parent: 1 + type: Transform +- proto: AirlockExternalGlassEngineeringLocked + entities: + - uid: 10677 + components: + - rot: 3.141592653589793 rad + pos: -86.5,30.5 + parent: 1 + type: Transform + - uid: 10678 + components: + - rot: 3.141592653589793 rad + pos: -86.5,20.5 + parent: 1 + type: Transform +- proto: AirlockExternalGlassShuttleArrivals + entities: + - uid: 4844 + components: + - pos: -73.5,2.5 + parent: 1 + type: Transform + - uid: 4876 + components: + - pos: -66.5,2.5 + parent: 1 + type: Transform + - uid: 4964 + components: + - rot: 3.141592653589793 rad + pos: -73.5,-7.5 + parent: 1 + type: Transform + - uid: 4984 + components: + - rot: 3.141592653589793 rad + pos: -66.5,-7.5 + parent: 1 + type: Transform +- proto: AirlockExternalGlassShuttleEmergencyLocked + entities: + - uid: 1636 + components: + - rot: 1.5707963267948966 rad + pos: 32.5,10.5 + parent: 1 + type: Transform + - uid: 1637 + components: + - rot: 1.5707963267948966 rad + pos: 32.5,8.5 + parent: 1 + type: Transform + - uid: 1638 + components: + - rot: 1.5707963267948966 rad + pos: 32.5,16.5 + parent: 1 + type: Transform + - uid: 1639 + components: + - rot: 1.5707963267948966 rad + pos: 32.5,18.5 + parent: 1 + type: Transform +- proto: AirlockExternalGlassShuttleLocked + entities: + - uid: 3966 + components: + - pos: -64.5,-15.5 + parent: 1 + type: Transform + - uid: 4100 + components: + - pos: -74.5,-15.5 + parent: 1 + type: Transform + - uid: 4105 + components: + - pos: -72.5,-15.5 + parent: 1 + type: Transform + - uid: 4756 + components: + - pos: -66.5,-15.5 + parent: 1 + type: Transform + - uid: 10292 + components: + - pos: -34.5,-14.5 + parent: 1 + type: Transform + - uid: 10302 + components: + - pos: -32.5,-14.5 + parent: 1 + type: Transform +- proto: AirlockExternalLocked + entities: + - uid: 748 + components: + - pos: 28.5,-9.5 + parent: 1 + type: Transform + - uid: 909 + components: + - rot: 1.5707963267948966 rad + pos: 28.5,-6.5 + parent: 1 + type: Transform + - uid: 6966 + components: + - pos: -31.5,56.5 + parent: 1 + type: Transform + - uid: 6967 + components: + - pos: -31.5,58.5 + parent: 1 + type: Transform +- proto: AirlockFreezerLocked + entities: + - uid: 6926 + components: + - pos: -26.5,45.5 + parent: 1 + type: Transform + - uid: 6927 + components: + - pos: -30.5,46.5 + parent: 1 + type: Transform +- proto: AirlockGlass + entities: + - uid: 1597 + components: + - pos: 12.5,-0.5 + parent: 1 + type: Transform + - uid: 1598 + components: + - pos: 12.5,-1.5 + parent: 1 + type: Transform + - uid: 1599 + components: + - pos: 12.5,-2.5 + parent: 1 + type: Transform + - uid: 1756 + components: + - pos: 24.5,6.5 + parent: 1 + type: Transform + - uid: 1757 + components: + - pos: 24.5,5.5 + parent: 1 + type: Transform + - uid: 3396 + components: + - pos: -23.5,7.5 + parent: 1 + type: Transform + - uid: 7364 + components: + - pos: -38.5,34.5 + parent: 1 + type: Transform + - uid: 7365 + components: + - pos: -36.5,34.5 + parent: 1 + type: Transform + - uid: 10799 + components: + - pos: -22.5,30.5 + parent: 1 + type: Transform + - uid: 11909 + components: + - pos: -59.5,12.5 + parent: 1 + type: Transform + - uid: 15377 + components: + - rot: 3.141592653589793 rad + pos: 19.5,7.5 + parent: 1 + type: Transform +- proto: AirlockHeadOfPersonnelGlassLocked + entities: + - uid: 3454 + components: + - pos: -20.5,43.5 + parent: 1 + type: Transform + - uid: 5835 + components: + - pos: -18.5,45.5 + parent: 1 + type: Transform +- proto: AirlockHeadOfSecurityLocked + entities: + - uid: 5740 + components: + - pos: -59.5,62.5 + parent: 1 + type: Transform +- proto: AirlockHydroGlassLocked + entities: + - uid: 6879 + components: + - pos: -40.5,48.5 + parent: 1 + type: Transform +- proto: AirlockHydroponicsLocked + entities: + - uid: 6880 + components: + - pos: -45.5,46.5 + parent: 1 + type: Transform + - uid: 6881 + components: + - pos: -40.5,40.5 + parent: 1 + type: Transform +- proto: AirlockJanitorLocked + entities: + - uid: 7046 + components: + - pos: -52.5,39.5 + parent: 1 + type: Transform + - uid: 7051 + components: + - pos: -49.5,36.5 + parent: 1 + type: Transform +- proto: AirlockKitchenGlassLocked + entities: + - uid: 6903 + components: + - pos: -37.5,41.5 + parent: 1 + type: Transform +- proto: AirlockMaint + entities: + - uid: 1605 + components: + - pos: 24.5,-6.5 + parent: 1 + type: Transform + - uid: 2239 + components: + - pos: 15.5,18.5 + parent: 1 + type: Transform + - uid: 2240 + components: + - pos: 20.5,21.5 + parent: 1 + type: Transform + - uid: 3161 + components: + - pos: -31.5,16.5 + parent: 1 + type: Transform + - uid: 3504 + components: + - pos: -24.5,-9.5 + parent: 1 + type: Transform + - uid: 3505 + components: + - pos: -20.5,-9.5 + parent: 1 + type: Transform + - uid: 3506 + components: + - pos: -20.5,-12.5 + parent: 1 + type: Transform + - uid: 5369 + components: + - pos: -51.5,-3.5 + parent: 1 + type: Transform + - uid: 5463 + components: + - pos: -10.5,37.5 + parent: 1 + type: Transform + - uid: 6073 + components: + - pos: 7.5,49.5 + parent: 1 + type: Transform + - uid: 6075 + components: + - pos: 13.5,45.5 + parent: 1 + type: Transform + - uid: 6076 + components: + - pos: 10.5,49.5 + parent: 1 + type: Transform + - uid: 6078 + components: + - pos: 3.5,48.5 + parent: 1 + type: Transform + - uid: 6081 + components: + - pos: -0.5,48.5 + parent: 1 + type: Transform + - uid: 7586 + components: + - pos: -26.5,41.5 + parent: 1 + type: Transform + - uid: 13362 + components: + - pos: -73.5,44.5 + parent: 1 + type: Transform + - uid: 13363 + components: + - pos: -68.5,40.5 + parent: 1 + type: Transform + - uid: 13364 + components: + - pos: -74.5,52.5 + parent: 1 + type: Transform + - uid: 13365 + components: + - pos: -68.5,52.5 + parent: 1 + type: Transform + - uid: 14011 + components: + - rot: -1.5707963267948966 rad + pos: -63.5,15.5 + parent: 1 + type: Transform + - uid: 14465 + components: + - pos: -68.5,12.5 + parent: 1 + type: Transform +- proto: AirlockMaintBarLocked + entities: + - uid: 6710 + components: + - pos: -26.5,36.5 + parent: 1 + type: Transform +- proto: AirlockMaintCargoLocked + entities: + - uid: 3623 + components: + - pos: -47.5,-2.5 + parent: 1 + type: Transform + - uid: 3624 + components: + - pos: -30.5,-6.5 + parent: 1 + type: Transform +- proto: AirlockMaintChapelLocked + entities: + - uid: 1646 + components: + - pos: 19.5,-3.5 + parent: 1 + type: Transform +- proto: AirlockMaintChemLocked + entities: + - uid: 1620 + components: + - pos: -3.5,18.5 + parent: 1 + type: Transform +- proto: AirlockMaintCommandLocked + entities: + - uid: 6313 + components: + - pos: 16.5,37.5 + parent: 1 + type: Transform + - uid: 6397 + components: + - pos: -5.5,55.5 + parent: 1 + type: Transform + - uid: 6661 + components: + - pos: -9.5,47.5 + parent: 1 + type: Transform + - uid: 11896 + components: + - pos: 16.5,38.5 + parent: 1 + type: Transform +- proto: AirlockMaintEngiLocked + entities: + - uid: 612 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,18.5 + parent: 1 + type: Transform + - uid: 13621 + components: + - pos: -63.5,35.5 + parent: 1 + type: Transform +- proto: AirlockMaintGlass + entities: + - uid: 5878 + components: + - pos: -7.5,45.5 + parent: 1 + type: Transform +- proto: AirlockMaintHOPLocked + entities: + - uid: 3448 + components: + - pos: -23.5,41.5 + parent: 1 + type: Transform +- proto: AirlockMaintHydroLocked + entities: + - uid: 7896 + components: + - pos: -43.5,50.5 + parent: 1 + type: Transform +- proto: AirlockMaintJanitorLocked + entities: + - uid: 7063 + components: + - pos: -53.5,41.5 + parent: 1 + type: Transform +- proto: AirlockMaintKitchenLocked + entities: + - uid: 6693 + components: + - pos: -32.5,48.5 + parent: 1 + type: Transform +- proto: AirlockMaintLocked + entities: + - uid: 1602 + components: + - pos: 10.5,-4.5 + parent: 1 + type: Transform + - uid: 1603 + components: + - pos: 4.5,2.5 + parent: 1 + type: Transform + - uid: 1604 + components: + - pos: 22.5,3.5 + parent: 1 + type: Transform + - uid: 1606 + components: + - pos: -15.5,2.5 + parent: 1 + type: Transform + - uid: 1607 + components: + - pos: -26.5,-3.5 + parent: 1 + type: Transform + - uid: 1612 + components: + - pos: -5.5,8.5 + parent: 1 + type: Transform + - uid: 1613 + components: + - pos: -10.5,25.5 + parent: 1 + type: Transform + - uid: 3173 + components: + - pos: -33.5,8.5 + parent: 1 + type: Transform + - uid: 3180 + components: + - pos: -21.5,26.5 + parent: 1 + type: Transform + - uid: 3181 + components: + - pos: -19.5,8.5 + parent: 1 + type: Transform + - uid: 3391 + components: + - rot: 3.141592653589793 rad + pos: -21.5,16.5 + parent: 1 + type: Transform + - uid: 3392 + components: + - rot: 3.141592653589793 rad + pos: -29.5,15.5 + parent: 1 + type: Transform + - uid: 3393 + components: + - rot: 3.141592653589793 rad + pos: -21.5,12.5 + parent: 1 + type: Transform + - uid: 3906 + components: + - pos: -28.5,3.5 + parent: 1 + type: Transform + - uid: 4257 + components: + - pos: -44.5,29.5 + parent: 1 + type: Transform + - uid: 4258 + components: + - pos: -40.5,21.5 + parent: 1 + type: Transform + - uid: 4590 + components: + - pos: -51.5,15.5 + parent: 1 + type: Transform + - uid: 4741 + components: + - pos: -44.5,7.5 + parent: 1 + type: Transform + - uid: 5365 + components: + - pos: -48.5,2.5 + parent: 1 + type: Transform + - uid: 5366 + components: + - pos: -55.5,1.5 + parent: 1 + type: Transform + - uid: 5367 + components: + - pos: -55.5,-9.5 + parent: 1 + type: Transform + - uid: 5368 + components: + - pos: -55.5,-6.5 + parent: 1 + type: Transform + - uid: 5577 + components: + - rot: 3.141592653589793 rad + pos: -14.5,20.5 + parent: 1 + type: Transform + - uid: 6072 + components: + - pos: -18.5,51.5 + parent: 1 + type: Transform + - uid: 6074 + components: + - pos: -14.5,51.5 + parent: 1 + type: Transform + - uid: 7093 + components: + - pos: -55.5,39.5 + parent: 1 + type: Transform + - uid: 7094 + components: + - pos: -50.5,43.5 + parent: 1 + type: Transform + - uid: 7585 + components: + - pos: -24.5,35.5 + parent: 1 + type: Transform + - uid: 7897 + components: + - pos: -45.5,49.5 + parent: 1 + type: Transform + - uid: 9258 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,7.5 + parent: 1 + type: Transform + - uid: 9288 + components: + - pos: -59.5,47.5 + parent: 1 + type: Transform + - uid: 13622 + components: + - pos: -60.5,34.5 + parent: 1 + type: Transform + - uid: 13623 + components: + - pos: -60.5,30.5 + parent: 1 + type: Transform +- proto: AirlockMaintMedLocked + entities: + - uid: 1365 + components: + - pos: 12.5,15.5 + parent: 1 + type: Transform + - uid: 1901 + components: + - pos: 13.5,35.5 + parent: 1 + type: Transform + - uid: 1971 + components: + - pos: 11.5,22.5 + parent: 1 + type: Transform + - uid: 2008 + components: + - pos: 5.5,40.5 + parent: 1 + type: Transform + - uid: 2050 + components: + - rot: 3.141592653589793 rad + pos: -2.5,16.5 + parent: 1 + type: Transform +- proto: AirlockMaintRnDLocked + entities: + - uid: 226 + components: + - pos: 0.5,-5.5 + parent: 1 + type: Transform + - uid: 1094 + components: + - pos: -17.5,-9.5 + parent: 1 + type: Transform + - uid: 1515 + components: + - pos: -16.5,-6.5 + parent: 1 + type: Transform +- proto: AirlockMaintSalvageLocked + entities: + - uid: 5382 + components: + - pos: -46.5,-9.5 + parent: 1 + type: Transform +- proto: AirlockMaintSecLocked + entities: + - uid: 2848 + components: + - pos: -18.5,29.5 + parent: 1 + type: Transform + - uid: 7867 + components: + - pos: -64.5,57.5 + parent: 1 + type: Transform + - uid: 7883 + components: + - pos: -45.5,54.5 + parent: 1 + type: Transform +- proto: AirlockMaintTheatreLocked + entities: + - uid: 3419 + components: + - pos: -21.5,23.5 + parent: 1 + type: Transform + - uid: 4234 + components: + - pos: -43.5,27.5 + parent: 1 + type: Transform +- proto: AirlockMedicalGlass + entities: + - uid: 1995 + components: + - pos: -5.5,31.5 + parent: 1 + type: Transform + - uid: 1996 + components: + - pos: -5.5,33.5 + parent: 1 + type: Transform +- proto: AirlockMedicalGlassLocked + entities: + - uid: 1320 + components: + - pos: 6.5,28.5 + parent: 1 + type: Transform + - uid: 1354 + components: + - pos: 6.5,29.5 + parent: 1 + type: Transform + - uid: 1617 + components: + - pos: 1.5,29.5 + parent: 1 + type: Transform + - uid: 1618 + components: + - pos: 1.5,30.5 + parent: 1 + type: Transform + - uid: 10538 + components: + - rot: 3.141592653589793 rad + pos: -14.5,15.5 + parent: 1 + type: Transform +- proto: AirlockMedicalLocked + entities: + - uid: 1319 + components: + - pos: 5.5,24.5 + parent: 1 + type: Transform + - uid: 1351 + components: + - pos: 3.5,35.5 + parent: 1 + type: Transform + - uid: 1352 + components: + - pos: 5.5,33.5 + parent: 1 + type: Transform + - uid: 1353 + components: + - pos: 5.5,25.5 + parent: 1 + type: Transform + - uid: 1629 + components: + - pos: 1.5,33.5 + parent: 1 + type: Transform + - uid: 2312 + components: + - pos: 3.5,18.5 + parent: 1 + type: Transform +- proto: AirlockQuartermasterLocked + entities: + - uid: 3666 + components: + - pos: -44.5,-5.5 + parent: 1 + type: Transform +- proto: AirlockResearchDirectorLocked + entities: + - uid: 252 + components: + - pos: -2.5,-0.5 + parent: 1 + type: Transform + - uid: 256 + components: + - pos: -12.5,-6.5 + parent: 1 + type: Transform +- proto: AirlockSalvageGlassLocked + entities: + - uid: 3566 + components: + - pos: -40.5,-8.5 + parent: 1 + type: Transform + - uid: 10278 + components: + - pos: -35.5,-2.5 + parent: 1 + type: Transform +- proto: AirlockSalvageLocked + entities: + - uid: 3669 + components: + - pos: -32.5,-0.5 + parent: 1 + type: Transform +- proto: AirlockScienceLocked + entities: + - uid: 221 + components: + - pos: -0.5,-10.5 + parent: 1 + type: Transform + - uid: 222 + components: + - pos: 1.5,-12.5 + parent: 1 + type: Transform + - uid: 223 + components: + - pos: -12.5,3.5 + parent: 1 + type: Transform + - uid: 224 + components: + - pos: -10.5,1.5 + parent: 1 + type: Transform + - uid: 225 + components: + - pos: 0.5,-1.5 + parent: 1 + type: Transform + - uid: 283 + components: + - pos: -10.5,-12.5 + parent: 1 + type: Transform + - uid: 532 + components: + - pos: 19.5,-6.5 + parent: 1 + type: Transform + - uid: 1514 + components: + - rot: 3.141592653589793 rad + pos: -14.5,-2.5 + parent: 1 + type: Transform +- proto: AirlockSecurityGlassLocked + entities: + - uid: 2017 + components: + - pos: 1.5,7.5 + parent: 1 + type: Transform + - uid: 5477 + components: + - pos: -50.5,69.5 + parent: 1 + type: Transform + - uid: 5481 + components: + - pos: -52.5,69.5 + parent: 1 + type: Transform + - uid: 5739 + components: + - pos: -55.5,62.5 + parent: 1 + type: Transform + - uid: 5743 + components: + - pos: -50.5,78.5 + parent: 1 + type: Transform + - uid: 5744 + components: + - pos: -52.5,78.5 + parent: 1 + type: Transform + - uid: 7336 + components: + - pos: -53.5,83.5 + parent: 1 + type: Transform + - uid: 7337 + components: + - pos: -53.5,89.5 + parent: 1 + type: Transform + - uid: 7644 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,83.5 + parent: 1 + type: Transform + - uid: 7645 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,89.5 + parent: 1 + type: Transform + - uid: 7863 + components: + - pos: -52.5,59.5 + parent: 1 + type: Transform + - uid: 7864 + components: + - pos: -50.5,59.5 + parent: 1 + type: Transform + - uid: 7865 + components: + - pos: -58.5,55.5 + parent: 1 + type: Transform + - uid: 7866 + components: + - pos: -58.5,53.5 + parent: 1 + type: Transform +- proto: AirlockSecurityLocked + entities: + - uid: 2847 + components: + - rot: 3.141592653589793 rad + pos: -14.5,27.5 + parent: 1 + type: Transform + - uid: 7895 + components: + - pos: -58.5,57.5 + parent: 1 + type: Transform + - uid: 8601 + components: + - pos: -16.5,7.5 + parent: 1 + type: Transform + - uid: 9158 + components: + - pos: -67.5,47.5 + parent: 1 + type: Transform +- proto: AirlockServiceGlassLocked + entities: + - uid: 8236 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,16.5 + parent: 1 + type: Transform +- proto: AirlockServiceLocked + entities: + - uid: 3394 + components: + - pos: -29.5,8.5 + parent: 1 + type: Transform + - uid: 3395 + components: + - rot: 3.141592653589793 rad + pos: -32.5,10.5 + parent: 1 + type: Transform +- proto: AirlockTheatreLocked + entities: + - uid: 3418 + components: + - pos: -27.5,23.5 + parent: 1 + type: Transform + - uid: 4176 + components: + - pos: -39.5,24.5 + parent: 1 + type: Transform +- proto: AirlockVirologyLocked + entities: + - uid: 1147 + components: + - pos: 5.5,19.5 + parent: 1 + type: Transform + - uid: 1148 + components: + - pos: 8.5,19.5 + parent: 1 + type: Transform +- proto: AltarChaos + entities: + - uid: 5926 + components: + - pos: -7.5,39.5 + parent: 1 + type: Transform +- proto: AltarDruid + entities: + - uid: 14452 + components: + - pos: -71.5,8.5 + parent: 1 + type: Transform + - uid: 14453 + components: + - pos: -70.5,8.5 + parent: 1 + type: Transform +- proto: AltarSpawner + entities: + - uid: 1810 + components: + - pos: 15.5,3.5 + parent: 1 + type: Transform +- proto: AmeController + entities: + - uid: 10656 + components: + - pos: -71.5,19.5 + parent: 1 + type: Transform +- proto: AmeJar + entities: + - uid: 5545 + components: + - pos: -53.477688,27.48855 + parent: 1 + type: Transform +- proto: AnomalyScanner + entities: + - uid: 313 + components: + - pos: -17.139996,-14.28252 + parent: 1 + type: Transform + - uid: 327 + components: + - pos: -16.577496,-14.37627 + parent: 1 + type: Transform +- proto: APCBasic + entities: + - uid: 315 + components: + - pos: -4.5,-0.5 + parent: 1 + type: Transform + - uid: 348 + components: + - pos: 2.5,-7.5 + parent: 1 + type: Transform + - uid: 937 + components: + - rot: 3.141592653589793 rad + pos: 26.5,0.5 + parent: 1 + type: Transform + - uid: 1019 + components: + - rot: -1.5707963267948966 rad + pos: 29.5,24.5 + parent: 1 + type: Transform + - uid: 1674 + components: + - rot: -1.5707963267948966 rad + pos: 12.5,0.5 + parent: 1 + type: Transform + - uid: 2080 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,21.5 + parent: 1 + type: Transform + - uid: 2081 + components: + - pos: 4.5,35.5 + parent: 1 + type: Transform + - uid: 2514 + components: + - pos: 22.5,10.5 + parent: 1 + type: Transform + - uid: 2697 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,17.5 + parent: 1 + type: Transform + - uid: 3211 + components: + - pos: -24.5,19.5 + parent: 1 + type: Transform + - uid: 3527 + components: + - pos: -29.5,30.5 + parent: 1 + type: Transform + - uid: 3776 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,-5.5 + parent: 1 + type: Transform + - uid: 3872 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,-2.5 + parent: 1 + type: Transform + - uid: 4340 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,20.5 + parent: 1 + type: Transform + - uid: 4341 + components: + - pos: -41.5,12.5 + parent: 1 + type: Transform + - uid: 4610 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,14.5 + parent: 1 + type: Transform + - uid: 4611 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,27.5 + parent: 1 + type: Transform + - uid: 5103 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,-7.5 + parent: 1 + type: Transform + - uid: 6204 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,49.5 + parent: 1 + type: Transform + - uid: 6259 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,9.5 + parent: 1 + type: Transform + - uid: 6528 + components: + - pos: -4.5,57.5 + parent: 1 + type: Transform + - uid: 7743 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,85.5 + parent: 1 + type: Transform + - uid: 7842 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,63.5 + parent: 1 + type: Transform + - uid: 7843 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,56.5 + parent: 1 + type: Transform + - uid: 9395 + components: + - pos: -31.5,48.5 + parent: 1 + type: Transform + - uid: 9417 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,38.5 + parent: 1 + type: Transform + - uid: 9494 + components: + - rot: 1.5707963267948966 rad + pos: -23.5,40.5 + parent: 1 + type: Transform + - uid: 10426 + components: + - pos: -42.5,-8.5 + parent: 1 + type: Transform + - uid: 10998 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,44.5 + parent: 1 + type: Transform + - uid: 11058 + components: + - pos: -68.5,35.5 + parent: 1 + type: Transform + - uid: 11059 + components: + - rot: -1.5707963267948966 rad + pos: -76.5,36.5 + parent: 1 + type: Transform + - uid: 11060 + components: + - rot: 1.5707963267948966 rad + pos: -75.5,21.5 + parent: 1 + type: Transform + - uid: 15234 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,44.5 + parent: 1 + type: Transform +- proto: APCElectronics + entities: + - uid: 5534 + components: + - pos: -51.59716,29.743225 + parent: 1 + type: Transform + - uid: 5535 + components: + - pos: -51.50341,29.555725 + parent: 1 + type: Transform +- proto: APECircuitboard + entities: + - uid: 13662 + components: + - pos: -15.288552,-14.404373 + parent: 1 + type: Transform +- proto: AsteroidRock + entities: + - uid: 87 + components: + - pos: -4.5,-6.5 + parent: 1 + type: Transform + - uid: 89 + components: + - pos: -2.5,-6.5 + parent: 1 + type: Transform + - uid: 97 + components: + - pos: -0.5,-6.5 + parent: 1 + type: Transform + - uid: 170 + components: + - pos: -0.5,-7.5 + parent: 1 + type: Transform + - uid: 171 + components: + - pos: -0.5,-8.5 + parent: 1 + type: Transform + - uid: 174 + components: + - pos: 4.5,-7.5 + parent: 1 + type: Transform + - uid: 200 + components: + - pos: 7.5,-9.5 + parent: 1 + type: Transform + - uid: 471 + components: + - pos: 11.5,-9.5 + parent: 1 + type: Transform + - uid: 474 + components: + - pos: 9.5,-7.5 + parent: 1 + type: Transform + - uid: 475 + components: + - pos: 9.5,-8.5 + parent: 1 + type: Transform + - uid: 506 + components: + - pos: 8.5,-9.5 + parent: 1 + type: Transform + - uid: 507 + components: + - pos: 7.5,-7.5 + parent: 1 + type: Transform + - uid: 508 + components: + - pos: 9.5,-9.5 + parent: 1 + type: Transform + - uid: 510 + components: + - pos: 8.5,-7.5 + parent: 1 + type: Transform + - uid: 511 + components: + - pos: 7.5,-8.5 + parent: 1 + type: Transform + - uid: 592 + components: + - pos: 11.5,-10.5 + parent: 1 + type: Transform + - uid: 8978 + components: + - pos: -52.5,93.5 + parent: 1 + type: Transform + - uid: 8980 + components: + - pos: -53.5,93.5 + parent: 1 + type: Transform + - uid: 8982 + components: + - pos: -54.5,93.5 + parent: 1 + type: Transform + - uid: 8983 + components: + - pos: -55.5,93.5 + parent: 1 + type: Transform + - uid: 8996 + components: + - pos: -56.5,92.5 + parent: 1 + type: Transform + - uid: 8998 + components: + - pos: -56.5,94.5 + parent: 1 + type: Transform + - uid: 8999 + components: + - pos: -54.5,92.5 + parent: 1 + type: Transform + - uid: 9003 + components: + - pos: -61.5,91.5 + parent: 1 + type: Transform + - uid: 9004 + components: + - pos: -60.5,91.5 + parent: 1 + type: Transform + - uid: 9005 + components: + - pos: -60.5,92.5 + parent: 1 + type: Transform + - uid: 9007 + components: + - pos: -59.5,92.5 + parent: 1 + type: Transform + - uid: 9011 + components: + - pos: -48.5,83.5 + parent: 1 + type: Transform + - uid: 9012 + components: + - pos: -48.5,82.5 + parent: 1 + type: Transform + - uid: 9015 + components: + - pos: -48.5,81.5 + parent: 1 + type: Transform + - uid: 9017 + components: + - pos: -47.5,82.5 + parent: 1 + type: Transform + - uid: 9019 + components: + - pos: -47.5,83.5 + parent: 1 + type: Transform + - uid: 9021 + components: + - pos: -47.5,84.5 + parent: 1 + type: Transform + - uid: 9038 + components: + - pos: -62.5,81.5 + parent: 1 + type: Transform + - uid: 9057 + components: + - pos: -48.5,84.5 + parent: 1 + type: Transform + - uid: 9060 + components: + - pos: -48.5,86.5 + parent: 1 + type: Transform + - uid: 9062 + components: + - pos: -48.5,87.5 + parent: 1 + type: Transform + - uid: 9063 + components: + - pos: -48.5,88.5 + parent: 1 + type: Transform + - uid: 9065 + components: + - pos: -48.5,89.5 + parent: 1 + type: Transform + - uid: 9068 + components: + - pos: -47.5,85.5 + parent: 1 + type: Transform + - uid: 9071 + components: + - pos: -47.5,86.5 + parent: 1 + type: Transform + - uid: 9072 + components: + - pos: -47.5,87.5 + parent: 1 + type: Transform + - uid: 9075 + components: + - pos: -58.5,92.5 + parent: 1 + type: Transform + - uid: 9076 + components: + - pos: -57.5,94.5 + parent: 1 + type: Transform + - uid: 9087 + components: + - pos: -51.5,92.5 + parent: 1 + type: Transform + - uid: 9089 + components: + - pos: -53.5,92.5 + parent: 1 + type: Transform + - uid: 9101 + components: + - pos: -52.5,92.5 + parent: 1 + type: Transform + - uid: 15259 + components: + - pos: -56.5,93.5 + parent: 1 + type: Transform + - uid: 15260 + components: + - pos: -57.5,93.5 + parent: 1 + type: Transform + - uid: 15261 + components: + - pos: -58.5,93.5 + parent: 1 + type: Transform + - uid: 15262 + components: + - pos: -59.5,93.5 + parent: 1 + type: Transform + - uid: 15263 + components: + - pos: -58.5,91.5 + parent: 1 + type: Transform + - uid: 15264 + components: + - pos: -57.5,91.5 + parent: 1 + type: Transform + - uid: 15265 + components: + - pos: -61.5,81.5 + parent: 1 + type: Transform + - uid: 15266 + components: + - pos: -60.5,81.5 + parent: 1 + type: Transform + - uid: 15267 + components: + - pos: -59.5,81.5 + parent: 1 + type: Transform + - uid: 15268 + components: + - pos: -58.5,81.5 + parent: 1 + type: Transform + - uid: 15269 + components: + - pos: -57.5,81.5 + parent: 1 + type: Transform + - uid: 15270 + components: + - pos: -57.5,80.5 + parent: 1 + type: Transform + - uid: 15271 + components: + - pos: -58.5,80.5 + parent: 1 + type: Transform + - uid: 15272 + components: + - pos: -59.5,80.5 + parent: 1 + type: Transform + - uid: 15273 + components: + - pos: -60.5,80.5 + parent: 1 + type: Transform + - uid: 15274 + components: + - pos: -51.5,93.5 + parent: 1 + type: Transform + - uid: 15275 + components: + - pos: -50.5,92.5 + parent: 1 + type: Transform + - uid: 15276 + components: + - pos: -55.5,94.5 + parent: 1 + type: Transform + - uid: 15277 + components: + - pos: -54.5,94.5 + parent: 1 + type: Transform +- proto: AsteroidRockMining + entities: + - uid: 38 + components: + - pos: -6.5,-7.5 + parent: 1 + type: Transform + - uid: 59 + components: + - pos: -7.5,-6.5 + parent: 1 + type: Transform + - uid: 63 + components: + - pos: -6.5,-8.5 + parent: 1 + type: Transform + - uid: 72 + components: + - pos: -9.5,-8.5 + parent: 1 + type: Transform + - uid: 74 + components: + - pos: -9.5,-7.5 + parent: 1 + type: Transform + - uid: 75 + components: + - pos: -5.5,-8.5 + parent: 1 + type: Transform + - uid: 84 + components: + - pos: -4.5,-7.5 + parent: 1 + type: Transform + - uid: 90 + components: + - pos: -4.5,-10.5 + parent: 1 + type: Transform + - uid: 91 + components: + - pos: -5.5,-10.5 + parent: 1 + type: Transform + - uid: 92 + components: + - pos: -3.5,-9.5 + parent: 1 + type: Transform + - uid: 93 + components: + - pos: -3.5,-8.5 + parent: 1 + type: Transform + - uid: 94 + components: + - pos: -2.5,-8.5 + parent: 1 + type: Transform + - uid: 95 + components: + - pos: -4.5,-9.5 + parent: 1 + type: Transform + - uid: 98 + components: + - pos: -6.5,-9.5 + parent: 1 + type: Transform + - uid: 99 + components: + - pos: -5.5,-9.5 + parent: 1 + type: Transform + - uid: 100 + components: + - pos: -3.5,-7.5 + parent: 1 + type: Transform + - uid: 101 + components: + - pos: -2.5,-7.5 + parent: 1 + type: Transform + - uid: 102 + components: + - pos: -6.5,-10.5 + parent: 1 + type: Transform + - uid: 103 + components: + - pos: -5.5,-7.5 + parent: 1 + type: Transform + - uid: 104 + components: + - pos: -6.5,-11.5 + parent: 1 + type: Transform + - uid: 106 + components: + - pos: -5.5,-11.5 + parent: 1 + type: Transform + - uid: 107 + components: + - pos: -7.5,-10.5 + parent: 1 + type: Transform + - uid: 108 + components: + - pos: -8.5,-10.5 + parent: 1 + type: Transform + - uid: 111 + components: + - pos: -9.5,-10.5 + parent: 1 + type: Transform + - uid: 112 + components: + - pos: -9.5,-14.5 + parent: 1 + type: Transform + - uid: 114 + components: + - pos: -6.5,-14.5 + parent: 1 + type: Transform + - uid: 123 + components: + - pos: -9.5,-13.5 + parent: 1 + type: Transform + - uid: 127 + components: + - pos: -7.5,-13.5 + parent: 1 + type: Transform + - uid: 129 + components: + - pos: -7.5,-14.5 + parent: 1 + type: Transform + - uid: 130 + components: + - pos: -8.5,-14.5 + parent: 1 + type: Transform + - uid: 131 + components: + - pos: -8.5,-15.5 + parent: 1 + type: Transform + - uid: 132 + components: + - pos: -7.5,-15.5 + parent: 1 + type: Transform + - uid: 134 + components: + - pos: -3.5,-16.5 + parent: 1 + type: Transform + - uid: 135 + components: + - pos: -3.5,-15.5 + parent: 1 + type: Transform + - uid: 136 + components: + - pos: -3.5,-14.5 + parent: 1 + type: Transform + - uid: 138 + components: + - pos: -4.5,-13.5 + parent: 1 + type: Transform + - uid: 139 + components: + - pos: -3.5,-13.5 + parent: 1 + type: Transform + - uid: 140 + components: + - pos: -3.5,-12.5 + parent: 1 + type: Transform + - uid: 141 + components: + - pos: -2.5,-12.5 + parent: 1 + type: Transform + - uid: 142 + components: + - pos: -2.5,-13.5 + parent: 1 + type: Transform + - uid: 144 + components: + - pos: -2.5,-15.5 + parent: 1 + type: Transform + - uid: 145 + components: + - pos: -1.5,-15.5 + parent: 1 + type: Transform + - uid: 146 + components: + - pos: -1.5,-14.5 + parent: 1 + type: Transform + - uid: 147 + components: + - pos: -1.5,-13.5 + parent: 1 + type: Transform + - uid: 148 + components: + - pos: -1.5,-12.5 + parent: 1 + type: Transform + - uid: 150 + components: + - pos: 4.5,-13.5 + parent: 1 + type: Transform + - uid: 151 + components: + - pos: 5.5,-13.5 + parent: 1 + type: Transform + - uid: 152 + components: + - pos: 5.5,-14.5 + parent: 1 + type: Transform + - uid: 153 + components: + - pos: 4.5,-16.5 + parent: 1 + type: Transform + - uid: 154 + components: + - pos: 3.5,-17.5 + parent: 1 + type: Transform + - uid: 155 + components: + - pos: 2.5,-17.5 + parent: 1 + type: Transform + - uid: 156 + components: + - pos: 1.5,-17.5 + parent: 1 + type: Transform + - uid: 157 + components: + - pos: 0.5,-17.5 + parent: 1 + type: Transform + - uid: 158 + components: + - pos: -0.5,-16.5 + parent: 1 + type: Transform + - uid: 159 + components: + - pos: -1.5,-16.5 + parent: 1 + type: Transform + - uid: 160 + components: + - pos: 0.5,-16.5 + parent: 1 + type: Transform + - uid: 161 + components: + - pos: 3.5,-16.5 + parent: 1 + type: Transform + - uid: 162 + components: + - pos: 3.5,-15.5 + parent: 1 + type: Transform + - uid: 163 + components: + - pos: -0.5,-13.5 + parent: 1 + type: Transform + - uid: 165 + components: + - pos: 7.5,-10.5 + parent: 1 + type: Transform + - uid: 166 + components: + - pos: 7.5,-11.5 + parent: 1 + type: Transform + - uid: 291 + components: + - pos: -8.5,-7.5 + parent: 1 + type: Transform + - uid: 292 + components: + - pos: -8.5,-8.5 + parent: 1 + type: Transform + - uid: 293 + components: + - pos: -8.5,-9.5 + parent: 1 + type: Transform + - uid: 414 + components: + - pos: -7.5,-7.5 + parent: 1 + type: Transform + - uid: 415 + components: + - pos: -7.5,-8.5 + parent: 1 + type: Transform + - uid: 495 + components: + - pos: 8.5,-10.5 + parent: 1 + type: Transform + - uid: 501 + components: + - pos: 9.5,-10.5 + parent: 1 + type: Transform + - uid: 505 + components: + - pos: 10.5,-10.5 + parent: 1 + type: Transform + - uid: 3965 + components: + - pos: -9.5,-9.5 + parent: 1 + type: Transform + - uid: 14845 + components: + - pos: 6.5,-15.5 + parent: 1 + type: Transform +- proto: AtmosDeviceFanTiny + entities: + - uid: 3569 + components: + - pos: -66.5,-15.5 + parent: 1 + type: Transform + - uid: 3968 + components: + - pos: -64.5,-15.5 + parent: 1 + type: Transform + - uid: 4745 + components: + - pos: -74.5,-15.5 + parent: 1 + type: Transform + - uid: 4761 + components: + - pos: -72.5,-15.5 + parent: 1 + type: Transform + - uid: 4851 + components: + - pos: -66.5,2.5 + parent: 1 + type: Transform + - uid: 4854 + components: + - pos: -73.5,2.5 + parent: 1 + type: Transform + - uid: 4972 + components: + - pos: -73.5,-7.5 + parent: 1 + type: Transform + - uid: 4973 + components: + - pos: -66.5,-7.5 + parent: 1 + type: Transform + - uid: 14853 + components: + - pos: -34.5,-14.5 + parent: 1 + type: Transform + - uid: 14854 + components: + - pos: -32.5,-14.5 + parent: 1 + type: Transform + - uid: 15074 + components: + - pos: 32.5,8.5 + parent: 1 + type: Transform + - uid: 15076 + components: + - pos: 32.5,10.5 + parent: 1 + type: Transform + - uid: 15077 + components: + - pos: 32.5,16.5 + parent: 1 + type: Transform + - uid: 15078 + components: + - pos: 32.5,18.5 + parent: 1 + type: Transform + - uid: 15111 + components: + - pos: -30.5,46.5 + parent: 1 + type: Transform + - uid: 15112 + components: + - pos: -26.5,45.5 + parent: 1 + type: Transform +- proto: AtmosFixBlockerMarker + entities: + - uid: 13045 + components: + - pos: -90.5,45.5 + parent: 1 + type: Transform + - uid: 13048 + components: + - pos: -89.5,45.5 + parent: 1 + type: Transform + - uid: 13049 + components: + - pos: -88.5,45.5 + parent: 1 + type: Transform + - uid: 13345 + components: + - pos: -90.5,41.5 + parent: 1 + type: Transform + - uid: 13346 + components: + - pos: -89.5,41.5 + parent: 1 + type: Transform + - uid: 13347 + components: + - pos: -88.5,41.5 + parent: 1 + type: Transform + - uid: 13348 + components: + - pos: -90.5,39.5 + parent: 1 + type: Transform + - uid: 13349 + components: + - pos: -89.5,39.5 + parent: 1 + type: Transform + - uid: 13350 + components: + - pos: -88.5,39.5 + parent: 1 + type: Transform + - uid: 13357 + components: + - pos: -83.5,50.5 + parent: 1 + type: Transform + - uid: 13358 + components: + - pos: -82.5,50.5 + parent: 1 + type: Transform + - uid: 13359 + components: + - pos: -81.5,50.5 + parent: 1 + type: Transform +- proto: AtmosFixNitrogenMarker + entities: + - uid: 13354 + components: + - pos: -90.5,37.5 + parent: 1 + type: Transform + - uid: 13355 + components: + - pos: -89.5,37.5 + parent: 1 + type: Transform + - uid: 13356 + components: + - pos: -88.5,37.5 + parent: 1 + type: Transform +- proto: AtmosFixOxygenMarker + entities: + - uid: 13351 + components: + - pos: -90.5,35.5 + parent: 1 + type: Transform + - uid: 13352 + components: + - pos: -89.5,35.5 + parent: 1 + type: Transform + - uid: 13353 + components: + - pos: -88.5,35.5 + parent: 1 + type: Transform +- proto: AtmosFixPlasmaMarker + entities: + - uid: 13042 + components: + - pos: -90.5,43.5 + parent: 1 + type: Transform + - uid: 13043 + components: + - pos: -89.5,43.5 + parent: 1 + type: Transform + - uid: 13044 + components: + - pos: -88.5,43.5 + parent: 1 + type: Transform +- proto: Autolathe + entities: + - uid: 255 + components: + - pos: -5.5,-0.5 + parent: 1 + type: Transform + - uid: 14169 + components: + - pos: -38.5,-1.5 + parent: 1 + type: Transform +- proto: BananaPhoneInstrument + entities: + - uid: 4230 + components: + - pos: -40.3798,27.56435 + parent: 1 + type: Transform + - uid: 7304 + components: + - pos: -59.52376,89.56535 + parent: 1 + type: Transform +- proto: BannerScience + entities: + - uid: 229 + components: + - pos: -8.5,-5.5 + parent: 1 + type: Transform + - uid: 10082 + components: + - pos: -11.5,0.5 + parent: 1 + type: Transform +- proto: Barricade + entities: + - uid: 720 + components: + - pos: 12.5,-5.5 + parent: 1 + type: Transform + - uid: 1498 + components: + - pos: 13.5,39.5 + parent: 1 + type: Transform + - uid: 2037 + components: + - pos: 18.5,32.5 + parent: 1 + type: Transform + - uid: 2731 + components: + - pos: -28.5,53.5 + parent: 1 + type: Transform + - uid: 2794 + components: + - pos: 15.5,39.5 + parent: 1 + type: Transform + - uid: 5451 + components: + - pos: -21.5,-6.5 + parent: 1 + type: Transform + - uid: 5453 + components: + - pos: -25.5,-7.5 + parent: 1 + type: Transform + - uid: 5454 + components: + - pos: -25.5,-8.5 + parent: 1 + type: Transform + - uid: 5456 + components: + - pos: -20.5,-6.5 + parent: 1 + type: Transform + - uid: 5457 + components: + - pos: -19.5,-7.5 + parent: 1 + type: Transform + - uid: 5458 + components: + - pos: -19.5,-8.5 + parent: 1 + type: Transform + - uid: 5517 + components: + - pos: -54.5,-7.5 + parent: 1 + type: Transform + - uid: 5518 + components: + - pos: -51.5,-4.5 + parent: 1 + type: Transform + - uid: 6058 + components: + - pos: -17.5,50.5 + parent: 1 + type: Transform + - uid: 6067 + components: + - pos: -15.5,50.5 + parent: 1 + type: Transform + - uid: 7509 + components: + - pos: -28.5,52.5 + parent: 1 + type: Transform + - uid: 7510 + components: + - pos: -27.5,55.5 + parent: 1 + type: Transform + - uid: 9801 + components: + - pos: -31.5,52.5 + parent: 1 + type: Transform + - uid: 14839 + components: + - pos: 8.5,-14.5 + parent: 1 + type: Transform + - uid: 15914 + components: + - pos: 14.5,39.5 + parent: 1 + type: Transform + - uid: 15918 + components: + - pos: 17.5,35.5 + parent: 1 + type: Transform + - uid: 15919 + components: + - pos: 17.5,34.5 + parent: 1 + type: Transform +- proto: BarSign + entities: + - uid: 5279 + components: + - pos: -53.5,22.5 + parent: 1 + type: Transform + - uid: 7368 + components: + - pos: -33.5,34.5 + parent: 1 + type: Transform +- proto: BaseComputer + entities: + - uid: 5338 + components: + - rot: 3.141592653589793 rad + pos: 22.5,42.5 + parent: 1 + type: Transform +- proto: Beaker + entities: + - uid: 1959 + components: + - pos: -0.3099949,22.624739 + parent: 1 + type: Transform + - uid: 1960 + components: + - pos: -0.70061994,22.327864 + parent: 1 + type: Transform + - uid: 1961 + components: + - pos: -0.6683643,21.869993 + parent: 1 + type: Transform + - uid: 2382 + components: + - pos: 10.321079,33.83294 + parent: 1 + type: Transform + - uid: 2383 + components: + - pos: 10.680454,33.64544 + parent: 1 + type: Transform +- proto: Bed + entities: + - uid: 616 + components: + - pos: 18.5,-8.5 + parent: 1 + type: Transform + - uid: 617 + components: + - pos: 18.5,-7.5 + parent: 1 + type: Transform + - uid: 625 + components: + - pos: 8.5,2.5 + parent: 1 + type: Transform + - uid: 626 + components: + - pos: 6.5,-1.5 + parent: 1 + type: Transform + - uid: 1831 + components: + - pos: 21.5,-0.5 + parent: 1 + type: Transform + - uid: 1909 + components: + - pos: -53.5,49.5 + parent: 1 + type: Transform + - uid: 1916 + components: + - pos: -50.5,49.5 + parent: 1 + type: Transform + - uid: 1918 + components: + - pos: -56.5,49.5 + parent: 1 + type: Transform + - uid: 2266 + components: + - pos: 17.5,23.5 + parent: 1 + type: Transform + - uid: 2345 + components: + - pos: 6.5,11.5 + parent: 1 + type: Transform + - uid: 2346 + components: + - pos: 8.5,11.5 + parent: 1 + type: Transform + - uid: 2347 + components: + - pos: 10.5,11.5 + parent: 1 + type: Transform + - uid: 2905 + components: + - pos: -17.5,22.5 + parent: 1 + type: Transform + - uid: 2907 + components: + - pos: -15.5,22.5 + parent: 1 + type: Transform + - uid: 2993 + components: + - pos: 11.5,31.5 + parent: 1 + type: Transform + - uid: 2994 + components: + - pos: 7.5,31.5 + parent: 1 + type: Transform + - uid: 3406 + components: + - pos: -31.5,8.5 + parent: 1 + type: Transform + - uid: 3480 + components: + - pos: 9.5,31.5 + parent: 1 + type: Transform + - uid: 7347 + components: + - pos: -54.5,84.5 + parent: 1 + type: Transform + - uid: 7527 + components: + - pos: -54.5,90.5 + parent: 1 + type: Transform + - uid: 10903 + components: + - pos: -5.5,58.5 + parent: 1 + type: Transform + - uid: 15164 + components: + - pos: 17.5,48.5 + parent: 1 + type: Transform +- proto: BedsheetCaptain + entities: + - uid: 10904 + components: + - pos: -5.5,58.5 + parent: 1 + type: Transform +- proto: BedsheetClown + entities: + - uid: 2267 + components: + - pos: 17.5,23.5 + parent: 1 + type: Transform +- proto: BedsheetCult + entities: + - uid: 1830 + components: + - pos: 21.5,-0.5 + parent: 1 + type: Transform +- proto: BedsheetGreen + entities: + - uid: 622 + components: + - pos: 18.5,-7.5 + parent: 1 + type: Transform + - uid: 623 + components: + - pos: 18.5,-8.5 + parent: 1 + type: Transform + - uid: 2348 + components: + - rot: 3.141592653589793 rad + pos: 6.5,11.5 + parent: 1 + type: Transform + - uid: 2349 + components: + - rot: 3.141592653589793 rad + pos: 8.5,11.5 + parent: 1 + type: Transform + - uid: 2350 + components: + - rot: 3.141592653589793 rad + pos: 10.5,11.5 + parent: 1 + type: Transform +- proto: BedsheetMedical + entities: + - uid: 2062 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,31.5 + parent: 1 + type: Transform + - uid: 2063 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,31.5 + parent: 1 + type: Transform + - uid: 2065 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,31.5 + parent: 1 + type: Transform +- proto: BedsheetOrange + entities: + - uid: 1910 + components: + - pos: -56.5,49.5 + parent: 1 + type: Transform + - uid: 1912 + components: + - pos: -53.5,49.5 + parent: 1 + type: Transform + - uid: 1922 + components: + - pos: -50.5,49.5 + parent: 1 + type: Transform + - uid: 5555 + components: + - rot: 3.141592653589793 rad + pos: -15.5,22.5 + parent: 1 + type: Transform + - uid: 5565 + components: + - rot: 3.141592653589793 rad + pos: -17.5,22.5 + parent: 1 + type: Transform +- proto: BedsheetPurple + entities: + - uid: 15165 + components: + - pos: 17.5,48.5 + parent: 1 + type: Transform +- proto: BedsheetSpawner + entities: + - uid: 624 + components: + - pos: 6.5,-1.5 + parent: 1 + type: Transform + - uid: 627 + components: + - pos: 8.5,2.5 + parent: 1 + type: Transform + - uid: 3399 + components: + - pos: -31.5,8.5 + parent: 1 + type: Transform +- proto: BedsheetSyndie + entities: + - uid: 7352 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,90.5 + parent: 1 + type: Transform + - uid: 7356 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,84.5 + parent: 1 + type: Transform +- proto: Bible + entities: + - uid: 2750 + components: + - pos: 21.54948,-1.5566196 + parent: 1 + type: Transform +- proto: BlastDoor + entities: + - uid: 42 + components: + - pos: 3.5,-14.5 + parent: 1 + type: Transform + - links: + - 351 + type: DeviceLinkSink + - uid: 590 + components: + - pos: 15.5,-6.5 + parent: 1 + type: Transform + - links: + - 615 + type: DeviceLinkSink + - uid: 7204 + components: + - pos: -53.5,71.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7207 + components: + - pos: -53.5,72.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7208 + components: + - pos: -53.5,73.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7209 + components: + - pos: -53.5,74.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7210 + components: + - pos: -53.5,75.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7211 + components: + - pos: -53.5,76.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7212 + components: + - pos: -49.5,71.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7213 + components: + - pos: -49.5,72.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7214 + components: + - pos: -49.5,73.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7215 + components: + - pos: -49.5,74.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7216 + components: + - pos: -49.5,75.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 7217 + components: + - pos: -49.5,76.5 + parent: 1 + type: Transform + - links: + - 7192 + - 7218 + type: DeviceLinkSink + - uid: 13360 + components: + - pos: -82.5,51.5 + parent: 1 + type: Transform + - links: + - 13361 + type: DeviceLinkSink + - uid: 13366 + components: + - pos: -73.5,57.5 + parent: 1 + type: Transform + - links: + - 13367 + type: DeviceLinkSink + - uid: 13817 + components: + - pos: -35.5,-14.5 + parent: 1 + type: Transform + - links: + - 13821 + type: DeviceLinkSink + - uid: 13818 + components: + - pos: -35.5,-11.5 + parent: 1 + type: Transform + - links: + - 13821 + type: DeviceLinkSink + - uid: 13819 + components: + - pos: -31.5,-11.5 + parent: 1 + type: Transform + - links: + - 13822 + type: DeviceLinkSink + - uid: 13820 + components: + - pos: -31.5,-14.5 + parent: 1 + type: Transform + - links: + - 13822 + type: DeviceLinkSink +- proto: BlastDoorOpen + entities: + - uid: 15173 + components: + - pos: 13.5,53.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15174 + components: + - pos: 14.5,53.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15175 + components: + - pos: 15.5,53.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15176 + components: + - pos: 16.5,53.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15177 + components: + - pos: 17.5,53.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15178 + components: + - pos: 18.5,53.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15179 + components: + - pos: 19.5,53.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15180 + components: + - pos: 19.5,52.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15181 + components: + - pos: 19.5,51.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15182 + components: + - pos: 19.5,50.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15183 + components: + - pos: 19.5,49.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink + - uid: 15184 + components: + - pos: 19.5,48.5 + parent: 1 + type: Transform + - links: + - 15185 + type: DeviceLinkSink +- proto: Blunt + entities: + - uid: 14943 + components: + - pos: 23.683538,-11.353635 + parent: 1 + type: Transform +- proto: BookBase + entities: + - uid: 15231 + components: + - pos: 18.514118,48.62632 + parent: 1 + type: Transform +- proto: BookRandom + entities: + - uid: 3400 + components: + - pos: -26.002151,9.728267 + parent: 1 + type: Transform + - uid: 3402 + components: + - pos: -25.757227,9.715086 + parent: 1 + type: Transform + - uid: 3403 + components: + - pos: -26.484095,9.587642 + parent: 1 + type: Transform + - uid: 3404 + components: + - pos: -27.526798,9.572017 + parent: 1 + type: Transform + - uid: 3405 + components: + - pos: -26.984095,9.728267 + parent: 1 + type: Transform +- proto: BooksBag + entities: + - uid: 3401 + components: + - pos: -25.267776,9.592309 + parent: 1 + type: Transform +- proto: BookshelfFilled + entities: + - uid: 912 + components: + - pos: 27.5,-0.5 + parent: 1 + type: Transform + - uid: 3036 + components: + - pos: -22.5,15.5 + parent: 1 + type: Transform + - uid: 3089 + components: + - pos: -25.5,13.5 + parent: 1 + type: Transform + - uid: 3090 + components: + - pos: -26.5,13.5 + parent: 1 + type: Transform + - uid: 3091 + components: + - pos: -24.5,11.5 + parent: 1 + type: Transform + - uid: 3092 + components: + - pos: -25.5,11.5 + parent: 1 + type: Transform + - uid: 3093 + components: + - pos: -26.5,11.5 + parent: 1 + type: Transform + - uid: 3094 + components: + - pos: -27.5,11.5 + parent: 1 + type: Transform + - uid: 3095 + components: + - pos: -28.5,11.5 + parent: 1 + type: Transform + - uid: 3098 + components: + - pos: -22.5,8.5 + parent: 1 + type: Transform + - uid: 3099 + components: + - pos: -22.5,9.5 + parent: 1 + type: Transform + - uid: 3100 + components: + - pos: -22.5,10.5 + parent: 1 + type: Transform + - uid: 3101 + components: + - pos: -22.5,11.5 + parent: 1 + type: Transform + - uid: 3102 + components: + - pos: -24.5,13.5 + parent: 1 + type: Transform + - uid: 5357 + components: + - pos: -50.5,-0.5 + parent: 1 + type: Transform + - uid: 6334 + components: + - pos: 13.5,52.5 + parent: 1 + type: Transform + - uid: 7721 + components: + - pos: -61.5,87.5 + parent: 1 + type: Transform +- proto: BoozeDispenser + entities: + - uid: 6337 + components: + - rot: 3.141592653589793 rad + pos: 14.5,50.5 + parent: 1 + type: Transform + - uid: 9739 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,39.5 + parent: 1 + type: Transform + - uid: 9740 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,36.5 + parent: 1 + type: Transform +- proto: BorgCharger + entities: + - uid: 77 + components: + - pos: 0.5,0.5 + parent: 1 + type: Transform +- proto: BoxBeaker + entities: + - uid: 261 + components: + - pos: -9.507762,2.683241 + parent: 1 + type: Transform +- proto: BoxBodyBag + entities: + - uid: 2352 + components: + - pos: 4.501326,17.543652 + parent: 1 + type: Transform + - uid: 15780 + components: + - pos: 4.42369,38.89373 + parent: 1 + type: Transform +- proto: BoxCardboard + entities: + - uid: 15368 + components: + - desc: A box of spare encryption keys. + name: spare encryption keys box + type: MetaData + - pos: 27.49369,23.624804 + parent: 1 + type: Transform + - storageUsed: 30 + type: Storage + - containers: + storagebase: !type:Container + showEnts: False + occludes: True + ents: + - 15369 + - 15370 + - 15371 + - 15372 + - 15373 + - 15374 + type: ContainerContainer +- proto: BoxFlashbang + entities: + - uid: 8008 + components: + - pos: -62.513317,50.638466 + parent: 1 + type: Transform +- proto: BoxFolderBlack + entities: + - uid: 309 + components: + - pos: -0.32900378,-4.3884926 + parent: 1 + type: Transform + - uid: 10950 + components: + - pos: -62.793716,39.585648 + parent: 1 + type: Transform + - uid: 12801 + components: + - rot: -1.5707963267948966 rad + pos: 4.444498,15.859739 + parent: 1 + type: Transform + - uid: 12802 + components: + - rot: -1.5707963267948966 rad + pos: 4.491373,15.625364 + parent: 1 + type: Transform +- proto: BoxFolderBlue + entities: + - uid: 310 + components: + - pos: -0.45400378,-4.4353676 + parent: 1 + type: Transform + - uid: 3701 + components: + - pos: -3.3766222,0.6332265 + parent: 1 + type: Transform + - uid: 7554 + components: + - pos: -19.563011,46.957428 + parent: 1 + type: Transform + - uid: 7555 + components: + - pos: -19.391136,46.754303 + parent: 1 + type: Transform + - uid: 10942 + components: + - pos: -61.137554,41.601273 + parent: 1 + type: Transform +- proto: BoxFolderRed + entities: + - uid: 311 + components: + - pos: -0.5790038,-4.4666176 + parent: 1 + type: Transform + - uid: 7988 + components: + - pos: -60.701515,58.61342 + parent: 1 + type: Transform + - uid: 10943 + components: + - pos: -63.62193,41.570023 + parent: 1 + type: Transform + - uid: 14295 + components: + - pos: -70.85199,49.55786 + parent: 1 + type: Transform +- proto: BoxFolderWhite + entities: + - uid: 2330 + components: + - pos: 8.338302,31.568537 + parent: 1 + type: Transform + - uid: 2331 + components: + - pos: 10.338302,26.224789 + parent: 1 + type: Transform + - uid: 2372 + components: + - rot: -1.5707963267948966 rad + pos: 11.49155,19.354616 + parent: 1 + type: Transform + - uid: 12782 + components: + - pos: 15.076297,31.544756 + parent: 1 + type: Transform +- proto: BoxFolderYellow + entities: + - uid: 3756 + components: + - pos: -46.603218,1.8100886 + parent: 1 + type: Transform + - uid: 3757 + components: + - pos: -46.571968,1.5132136 + parent: 1 + type: Transform + - uid: 4264 + components: + - pos: -45.621056,-6.4408264 + parent: 1 + type: Transform + - uid: 5516 + components: + - pos: -53.308907,-5.477154 + parent: 1 + type: Transform + - uid: 8997 + components: + - pos: -32.463276,-5.5537453 + parent: 1 + type: Transform + - uid: 9001 + components: + - pos: -32.69765,-5.3818703 + parent: 1 + type: Transform + - uid: 12031 + components: + - pos: -31.49165,-1.6362362 + parent: 1 + type: Transform + - uid: 15795 + components: + - pos: -70.32392,16.415482 + parent: 1 + type: Transform + - uid: 15796 + components: + - pos: -70.60517,16.399857 + parent: 1 + type: Transform +- proto: BoxHandcuff + entities: + - uid: 7993 + components: + - pos: -56.703358,58.661354 + parent: 1 + type: Transform + - uid: 7994 + components: + - pos: -63.575817,51.607216 + parent: 1 + type: Transform +- proto: BoxLatexGloves + entities: + - uid: 2365 + components: + - pos: 7.4180007,17.608612 + parent: 1 + type: Transform +- proto: BoxLethalshot + entities: + - uid: 8376 + components: + - pos: -41.582264,61.530586 + parent: 1 + type: Transform + - uid: 8377 + components: + - pos: -41.582264,61.530586 + parent: 1 + type: Transform +- proto: BoxMouthSwab + entities: + - uid: 2364 + components: + - pos: 6.4961257,16.733612 + parent: 1 + type: Transform +- proto: BoxMRE + entities: + - uid: 620 + components: + - pos: 20.242428,-8.30875 + parent: 1 + type: Transform +- proto: BoxSterileMask + entities: + - uid: 2363 + components: + - pos: 6.4805007,17.592987 + parent: 1 + type: Transform +- proto: BoxSyringe + entities: + - uid: 372 + components: + - pos: 5.09082,-11.326899 + parent: 1 + type: Transform +- proto: BoxZiptie + entities: + - uid: 7998 + components: + - pos: -63.419567,51.34159 + parent: 1 + type: Transform +- proto: BrigTimer + entities: + - uid: 4985 + components: + - pos: -56.5,52.5 + parent: 1 + type: Transform + - linkedPorts: + 7871: + - Start: Close + - Timer: AutoClose + - Timer: Open + type: DeviceLinkSource + - uid: 4986 + components: + - pos: -53.5,52.5 + parent: 1 + type: Transform + - linkedPorts: + 7872: + - Start: Close + - Timer: AutoClose + - Timer: Open + type: DeviceLinkSource + - uid: 4987 + components: + - pos: -50.5,52.5 + parent: 1 + type: Transform + - linkedPorts: + 7873: + - Start: Close + - Timer: AutoClose + - Timer: Open + type: DeviceLinkSource +- proto: Brutepack + entities: + - uid: 1990 + components: + - pos: -1.3334682,33.60299 + parent: 1 + type: Transform + - uid: 1991 + components: + - pos: -1.5990932,33.97799 + parent: 1 + type: Transform +- proto: Bucket + entities: + - uid: 6946 + components: + - pos: -42.23494,47.51451 + parent: 1 + type: Transform + - uid: 6947 + components: + - pos: -42.42244,47.655136 + parent: 1 + type: Transform +- proto: CableApcExtension + entities: + - uid: 388 + components: + - pos: -4.5,-0.5 + parent: 1 + type: Transform + - uid: 389 + components: + - pos: -5.5,-0.5 + parent: 1 + type: Transform + - uid: 390 + components: + - pos: -6.5,-0.5 + parent: 1 + type: Transform + - uid: 391 + components: + - pos: -7.5,-0.5 + parent: 1 + type: Transform + - uid: 392 + components: + - pos: -7.5,0.5 + parent: 1 + type: Transform + - uid: 393 + components: + - pos: -7.5,1.5 + parent: 1 + type: Transform + - uid: 394 + components: + - pos: -8.5,1.5 + parent: 1 + type: Transform + - uid: 395 + components: + - pos: -9.5,1.5 + parent: 1 + type: Transform + - uid: 396 + components: + - pos: -10.5,1.5 + parent: 1 + type: Transform + - uid: 397 + components: + - pos: -11.5,1.5 + parent: 1 + type: Transform + - uid: 398 + components: + - pos: -12.5,1.5 + parent: 1 + type: Transform + - uid: 399 + components: + - pos: -7.5,-1.5 + parent: 1 + type: Transform + - uid: 400 + components: + - pos: -7.5,-2.5 + parent: 1 + type: Transform + - uid: 401 + components: + - pos: -9.5,-2.5 + parent: 1 + type: Transform + - uid: 402 + components: + - pos: -10.5,-2.5 + parent: 1 + type: Transform + - uid: 403 + components: + - pos: -11.5,-2.5 + parent: 1 + type: Transform + - uid: 404 + components: + - pos: -12.5,-2.5 + parent: 1 + type: Transform + - uid: 405 + components: + - pos: -8.5,-2.5 + parent: 1 + type: Transform + - uid: 406 + components: + - pos: -12.5,-3.5 + parent: 1 + type: Transform + - uid: 407 + components: + - pos: -12.5,-4.5 + parent: 1 + type: Transform + - uid: 408 + components: + - pos: -12.5,-5.5 + parent: 1 + type: Transform + - uid: 409 + components: + - pos: -12.5,-6.5 + parent: 1 + type: Transform + - uid: 410 + components: + - pos: -12.5,-7.5 + parent: 1 + type: Transform + - uid: 411 + components: + - pos: -12.5,-8.5 + parent: 1 + type: Transform + - uid: 412 + components: + - pos: -11.5,-8.5 + parent: 1 + type: Transform + - uid: 416 + components: + - pos: -9.5,-3.5 + parent: 1 + type: Transform + - uid: 417 + components: + - pos: -9.5,-4.5 + parent: 1 + type: Transform + - uid: 418 + components: + - pos: -4.5,-1.5 + parent: 1 + type: Transform + - uid: 419 + components: + - pos: -4.5,-2.5 + parent: 1 + type: Transform + - uid: 420 + components: + - pos: -4.5,-3.5 + parent: 1 + type: Transform + - uid: 421 + components: + - pos: -4.5,-4.5 + parent: 1 + type: Transform + - uid: 422 + components: + - pos: -3.5,-1.5 + parent: 1 + type: Transform + - uid: 423 + components: + - pos: -2.5,-1.5 + parent: 1 + type: Transform + - uid: 424 + components: + - pos: -1.5,-1.5 + parent: 1 + type: Transform + - uid: 425 + components: + - pos: -0.5,-1.5 + parent: 1 + type: Transform + - uid: 426 + components: + - pos: 0.5,-1.5 + parent: 1 + type: Transform + - uid: 427 + components: + - pos: 1.5,-1.5 + parent: 1 + type: Transform + - uid: 428 + components: + - pos: -2.5,-0.5 + parent: 1 + type: Transform + - uid: 429 + components: + - pos: -2.5,0.5 + parent: 1 + type: Transform + - uid: 430 + components: + - pos: -2.5,1.5 + parent: 1 + type: Transform + - uid: 431 + components: + - pos: 1.5,-0.5 + parent: 1 + type: Transform + - uid: 432 + components: + - pos: 1.5,0.5 + parent: 1 + type: Transform + - uid: 433 + components: + - pos: 1.5,1.5 + parent: 1 + type: Transform + - uid: 434 + components: + - pos: -1.5,-2.5 + parent: 1 + type: Transform + - uid: 435 + components: + - pos: -1.5,-3.5 + parent: 1 + type: Transform + - uid: 436 + components: + - pos: -1.5,-4.5 + parent: 1 + type: Transform + - uid: 437 + components: + - pos: 2.5,-8.5 + parent: 1 + type: Transform + - uid: 438 + components: + - pos: 2.5,-9.5 + parent: 1 + type: Transform + - uid: 439 + components: + - pos: 3.5,-9.5 + parent: 1 + type: Transform + - uid: 440 + components: + - pos: 4.5,-9.5 + parent: 1 + type: Transform + - uid: 441 + components: + - pos: 1.5,-9.5 + parent: 1 + type: Transform + - uid: 442 + components: + - pos: 1.5,-10.5 + parent: 1 + type: Transform + - uid: 443 + components: + - pos: 1.5,-11.5 + parent: 1 + type: Transform + - uid: 444 + components: + - pos: 1.5,-12.5 + parent: 1 + type: Transform + - uid: 445 + components: + - pos: 1.5,-13.5 + parent: 1 + type: Transform + - uid: 446 + components: + - pos: 1.5,-14.5 + parent: 1 + type: Transform + - uid: 447 + components: + - pos: 0.5,-10.5 + parent: 1 + type: Transform + - uid: 448 + components: + - pos: -0.5,-10.5 + parent: 1 + type: Transform + - uid: 449 + components: + - pos: -1.5,-10.5 + parent: 1 + type: Transform + - uid: 450 + components: + - pos: -2.5,-10.5 + parent: 1 + type: Transform + - uid: 451 + components: + - pos: -2.5,-11.5 + parent: 1 + type: Transform + - uid: 452 + components: + - pos: -3.5,-11.5 + parent: 1 + type: Transform + - uid: 453 + components: + - pos: -4.5,-11.5 + parent: 1 + type: Transform + - uid: 454 + components: + - pos: -4.5,-12.5 + parent: 1 + type: Transform + - uid: 455 + components: + - pos: -5.5,-12.5 + parent: 1 + type: Transform + - uid: 456 + components: + - pos: -6.5,-12.5 + parent: 1 + type: Transform + - uid: 457 + components: + - pos: -7.5,-12.5 + parent: 1 + type: Transform + - uid: 458 + components: + - pos: -8.5,-12.5 + parent: 1 + type: Transform + - uid: 459 + components: + - pos: -5.5,-13.5 + parent: 1 + type: Transform + - uid: 460 + components: + - pos: -5.5,-14.5 + parent: 1 + type: Transform + - uid: 461 + components: + - pos: -5.5,-15.5 + parent: 1 + type: Transform + - uid: 464 + components: + - pos: 16.5,-10.5 + parent: 1 + type: Transform + - uid: 588 + components: + - pos: 18.5,-10.5 + parent: 1 + type: Transform + - uid: 932 + components: + - pos: 26.5,0.5 + parent: 1 + type: Transform + - uid: 933 + components: + - pos: 26.5,1.5 + parent: 1 + type: Transform + - uid: 934 + components: + - pos: 26.5,2.5 + parent: 1 + type: Transform + - uid: 935 + components: + - pos: 27.5,2.5 + parent: 1 + type: Transform + - uid: 936 + components: + - pos: 28.5,2.5 + parent: 1 + type: Transform + - uid: 940 + components: + - pos: 29.5,2.5 + parent: 1 + type: Transform + - uid: 941 + components: + - pos: 30.5,3.5 + parent: 1 + type: Transform + - uid: 942 + components: + - pos: 30.5,2.5 + parent: 1 + type: Transform + - uid: 943 + components: + - pos: 30.5,1.5 + parent: 1 + type: Transform + - uid: 984 + components: + - pos: 26.5,27.5 + parent: 1 + type: Transform + - uid: 986 + components: + - pos: 26.5,26.5 + parent: 1 + type: Transform + - uid: 1016 + components: + - pos: 27.5,24.5 + parent: 1 + type: Transform + - uid: 1017 + components: + - pos: 26.5,24.5 + parent: 1 + type: Transform + - uid: 1021 + components: + - pos: 26.5,25.5 + parent: 1 + type: Transform + - uid: 1022 + components: + - pos: 26.5,23.5 + parent: 1 + type: Transform + - uid: 1031 + components: + - pos: 29.5,24.5 + parent: 1 + type: Transform + - uid: 1032 + components: + - pos: 28.5,24.5 + parent: 1 + type: Transform + - uid: 1418 + components: + - pos: -24.5,-12.5 + parent: 1 + type: Transform + - uid: 1422 + components: + - pos: 24.5,37.5 + parent: 1 + type: Transform + - uid: 1423 + components: + - pos: 21.5,36.5 + parent: 1 + type: Transform + - uid: 1425 + components: + - pos: 24.5,38.5 + parent: 1 + type: Transform + - uid: 1439 + components: + - pos: 20.5,36.5 + parent: 1 + type: Transform + - uid: 1440 + components: + - pos: 24.5,39.5 + parent: 1 + type: Transform + - uid: 1516 + components: + - pos: -13.5,-2.5 + parent: 1 + type: Transform + - uid: 1517 + components: + - pos: -14.5,-2.5 + parent: 1 + type: Transform + - uid: 1518 + components: + - pos: -15.5,-2.5 + parent: 1 + type: Transform + - uid: 1519 + components: + - pos: -16.5,-2.5 + parent: 1 + type: Transform + - uid: 1523 + components: + - pos: -16.5,-3.5 + parent: 1 + type: Transform + - uid: 1524 + components: + - pos: -16.5,-4.5 + parent: 1 + type: Transform + - uid: 1525 + components: + - pos: -16.5,-5.5 + parent: 1 + type: Transform + - uid: 1526 + components: + - pos: -16.5,-6.5 + parent: 1 + type: Transform + - uid: 1655 + components: + - pos: 16.5,-5.5 + parent: 1 + type: Transform + - uid: 1658 + components: + - pos: 15.5,-6.5 + parent: 1 + type: Transform + - uid: 1659 + components: + - pos: 15.5,-7.5 + parent: 1 + type: Transform + - uid: 1660 + components: + - pos: 15.5,-9.5 + parent: 1 + type: Transform + - uid: 1662 + components: + - pos: 15.5,-10.5 + parent: 1 + type: Transform + - uid: 1665 + components: + - pos: 17.5,-10.5 + parent: 1 + type: Transform + - uid: 1683 + components: + - pos: 12.5,0.5 + parent: 1 + type: Transform + - uid: 1684 + components: + - pos: 11.5,0.5 + parent: 1 + type: Transform + - uid: 1685 + components: + - pos: 10.5,0.5 + parent: 1 + type: Transform + - uid: 1686 + components: + - pos: 9.5,0.5 + parent: 1 + type: Transform + - uid: 1687 + components: + - pos: 8.5,0.5 + parent: 1 + type: Transform + - uid: 1688 + components: + - pos: 8.5,1.5 + parent: 1 + type: Transform + - uid: 1689 + components: + - pos: 10.5,-0.5 + parent: 1 + type: Transform + - uid: 1690 + components: + - pos: 10.5,-1.5 + parent: 1 + type: Transform + - uid: 1691 + components: + - pos: 10.5,-2.5 + parent: 1 + type: Transform + - uid: 1692 + components: + - pos: 9.5,-2.5 + parent: 1 + type: Transform + - uid: 1693 + components: + - pos: 8.5,-2.5 + parent: 1 + type: Transform + - uid: 1694 + components: + - pos: 7.5,-2.5 + parent: 1 + type: Transform + - uid: 1695 + components: + - pos: 11.5,-2.5 + parent: 1 + type: Transform + - uid: 1696 + components: + - pos: 12.5,-2.5 + parent: 1 + type: Transform + - uid: 1697 + components: + - pos: 13.5,-2.5 + parent: 1 + type: Transform + - uid: 1698 + components: + - pos: 14.5,-2.5 + parent: 1 + type: Transform + - uid: 1699 + components: + - pos: 15.5,-2.5 + parent: 1 + type: Transform + - uid: 1700 + components: + - pos: 16.5,-2.5 + parent: 1 + type: Transform + - uid: 1701 + components: + - pos: 17.5,-2.5 + parent: 1 + type: Transform + - uid: 1702 + components: + - pos: 15.5,-1.5 + parent: 1 + type: Transform + - uid: 1703 + components: + - pos: 15.5,-0.5 + parent: 1 + type: Transform + - uid: 1704 + components: + - pos: 15.5,0.5 + parent: 1 + type: Transform + - uid: 1705 + components: + - pos: 15.5,1.5 + parent: 1 + type: Transform + - uid: 1706 + components: + - pos: 15.5,2.5 + parent: 1 + type: Transform + - uid: 1707 + components: + - pos: 15.5,3.5 + parent: 1 + type: Transform + - uid: 1708 + components: + - pos: 17.5,-1.5 + parent: 1 + type: Transform + - uid: 1709 + components: + - pos: 18.5,-1.5 + parent: 1 + type: Transform + - uid: 1710 + components: + - pos: 19.5,-1.5 + parent: 1 + type: Transform + - uid: 1711 + components: + - pos: 20.5,-1.5 + parent: 1 + type: Transform + - uid: 1712 + components: + - pos: 20.5,-0.5 + parent: 1 + type: Transform + - uid: 1713 + components: + - pos: 20.5,0.5 + parent: 1 + type: Transform + - uid: 1714 + components: + - pos: 20.5,1.5 + parent: 1 + type: Transform + - uid: 1715 + components: + - pos: 21.5,-1.5 + parent: 1 + type: Transform + - uid: 1716 + components: + - pos: 20.5,-2.5 + parent: 1 + type: Transform + - uid: 1717 + components: + - pos: 10.5,-3.5 + parent: 1 + type: Transform + - uid: 1718 + components: + - pos: 10.5,-4.5 + parent: 1 + type: Transform + - uid: 1719 + components: + - pos: 10.5,-5.5 + parent: 1 + type: Transform + - uid: 1720 + components: + - pos: 11.5,-5.5 + parent: 1 + type: Transform + - uid: 1721 + components: + - pos: 12.5,-5.5 + parent: 1 + type: Transform + - uid: 1722 + components: + - pos: 13.5,-5.5 + parent: 1 + type: Transform + - uid: 1723 + components: + - pos: 14.5,-5.5 + parent: 1 + type: Transform + - uid: 1724 + components: + - pos: 15.5,-5.5 + parent: 1 + type: Transform + - uid: 1725 + components: + - pos: 15.5,-8.5 + parent: 1 + type: Transform + - uid: 1726 + components: + - pos: 17.5,-5.5 + parent: 1 + type: Transform + - uid: 1727 + components: + - pos: 18.5,-5.5 + parent: 1 + type: Transform + - uid: 1728 + components: + - pos: 19.5,-5.5 + parent: 1 + type: Transform + - uid: 1729 + components: + - pos: 20.5,-5.5 + parent: 1 + type: Transform + - uid: 1730 + components: + - pos: 21.5,-5.5 + parent: 1 + type: Transform + - uid: 1731 + components: + - pos: 22.5,-5.5 + parent: 1 + type: Transform + - uid: 1732 + components: + - pos: 23.5,-5.5 + parent: 1 + type: Transform + - uid: 1733 + components: + - pos: 24.5,-5.5 + parent: 1 + type: Transform + - uid: 1734 + components: + - pos: 25.5,-5.5 + parent: 1 + type: Transform + - uid: 1735 + components: + - pos: 26.5,-5.5 + parent: 1 + type: Transform + - uid: 1736 + components: + - pos: 27.5,-5.5 + parent: 1 + type: Transform + - uid: 1737 + components: + - pos: 28.5,-5.5 + parent: 1 + type: Transform + - uid: 1738 + components: + - pos: 28.5,-6.5 + parent: 1 + type: Transform + - uid: 1739 + components: + - pos: 28.5,-7.5 + parent: 1 + type: Transform + - uid: 1740 + components: + - pos: 28.5,-8.5 + parent: 1 + type: Transform + - uid: 1769 + components: + - pos: -61.5,-10.5 + parent: 1 + type: Transform + - uid: 1847 + components: + - pos: 10.5,1.5 + parent: 1 + type: Transform + - uid: 1848 + components: + - pos: 10.5,2.5 + parent: 1 + type: Transform + - uid: 1849 + components: + - pos: 10.5,3.5 + parent: 1 + type: Transform + - uid: 1850 + components: + - pos: 10.5,4.5 + parent: 1 + type: Transform + - uid: 1851 + components: + - pos: 9.5,4.5 + parent: 1 + type: Transform + - uid: 1852 + components: + - pos: 8.5,4.5 + parent: 1 + type: Transform + - uid: 1853 + components: + - pos: 7.5,4.5 + parent: 1 + type: Transform + - uid: 1854 + components: + - pos: 6.5,4.5 + parent: 1 + type: Transform + - uid: 1855 + components: + - pos: 5.5,4.5 + parent: 1 + type: Transform + - uid: 1860 + components: + - pos: -9.5,-12.5 + parent: 1 + type: Transform + - uid: 1861 + components: + - pos: -10.5,-12.5 + parent: 1 + type: Transform + - uid: 1862 + components: + - pos: -11.5,-12.5 + parent: 1 + type: Transform + - uid: 1863 + components: + - pos: -12.5,-12.5 + parent: 1 + type: Transform + - uid: 1864 + components: + - pos: -13.5,-12.5 + parent: 1 + type: Transform + - uid: 1865 + components: + - pos: -14.5,-12.5 + parent: 1 + type: Transform + - uid: 1866 + components: + - pos: -15.5,-12.5 + parent: 1 + type: Transform + - uid: 1867 + components: + - pos: -16.5,-12.5 + parent: 1 + type: Transform + - uid: 1877 + components: + - pos: -17.5,-12.5 + parent: 1 + type: Transform + - uid: 1878 + components: + - pos: -17.5,-11.5 + parent: 1 + type: Transform + - uid: 2082 + components: + - pos: 1.5,29.5 + parent: 1 + type: Transform + - uid: 2083 + components: + - pos: 2.5,29.5 + parent: 1 + type: Transform + - uid: 2084 + components: + - pos: 3.5,29.5 + parent: 1 + type: Transform + - uid: 2085 + components: + - pos: 4.5,29.5 + parent: 1 + type: Transform + - uid: 2086 + components: + - pos: 5.5,29.5 + parent: 1 + type: Transform + - uid: 2087 + components: + - pos: 6.5,29.5 + parent: 1 + type: Transform + - uid: 2088 + components: + - pos: 7.5,29.5 + parent: 1 + type: Transform + - uid: 2089 + components: + - pos: 8.5,29.5 + parent: 1 + type: Transform + - uid: 2090 + components: + - pos: 9.5,29.5 + parent: 1 + type: Transform + - uid: 2091 + components: + - pos: 10.5,29.5 + parent: 1 + type: Transform + - uid: 2092 + components: + - pos: 11.5,29.5 + parent: 1 + type: Transform + - uid: 2093 + components: + - pos: 12.5,29.5 + parent: 1 + type: Transform + - uid: 2094 + components: + - pos: 4.5,30.5 + parent: 1 + type: Transform + - uid: 2095 + components: + - pos: 4.5,31.5 + parent: 1 + type: Transform + - uid: 2096 + components: + - pos: 4.5,32.5 + parent: 1 + type: Transform + - uid: 2097 + components: + - pos: 4.5,33.5 + parent: 1 + type: Transform + - uid: 2098 + components: + - pos: 4.5,34.5 + parent: 1 + type: Transform + - uid: 2099 + components: + - pos: 4.5,35.5 + parent: 1 + type: Transform + - uid: 2100 + components: + - pos: 5.5,33.5 + parent: 1 + type: Transform + - uid: 2101 + components: + - pos: 6.5,33.5 + parent: 1 + type: Transform + - uid: 2105 + components: + - pos: 7.5,33.5 + parent: 1 + type: Transform + - uid: 2106 + components: + - pos: 8.5,33.5 + parent: 1 + type: Transform + - uid: 2107 + components: + - pos: 9.5,33.5 + parent: 1 + type: Transform + - uid: 2108 + components: + - pos: 8.5,34.5 + parent: 1 + type: Transform + - uid: 2109 + components: + - pos: 8.5,35.5 + parent: 1 + type: Transform + - uid: 2110 + components: + - pos: 8.5,36.5 + parent: 1 + type: Transform + - uid: 2111 + components: + - pos: 8.5,37.5 + parent: 1 + type: Transform + - uid: 2112 + components: + - pos: 11.5,33.5 + parent: 1 + type: Transform + - uid: 2113 + components: + - pos: 11.5,34.5 + parent: 1 + type: Transform + - uid: 2114 + components: + - pos: 11.5,35.5 + parent: 1 + type: Transform + - uid: 2115 + components: + - pos: 11.5,36.5 + parent: 1 + type: Transform + - uid: 2116 + components: + - pos: 11.5,37.5 + parent: 1 + type: Transform + - uid: 2117 + components: + - pos: 4.5,36.5 + parent: 1 + type: Transform + - uid: 2119 + components: + - pos: 4.5,37.5 + parent: 1 + type: Transform + - uid: 2120 + components: + - pos: 4.5,38.5 + parent: 1 + type: Transform + - uid: 2121 + components: + - pos: 3.5,38.5 + parent: 1 + type: Transform + - uid: 2122 + components: + - pos: 2.5,38.5 + parent: 1 + type: Transform + - uid: 2123 + components: + - pos: 1.5,38.5 + parent: 1 + type: Transform + - uid: 2124 + components: + - pos: 0.5,38.5 + parent: 1 + type: Transform + - uid: 2125 + components: + - pos: 1.5,21.5 + parent: 1 + type: Transform + - uid: 2126 + components: + - pos: 2.5,21.5 + parent: 1 + type: Transform + - uid: 2127 + components: + - pos: 3.5,21.5 + parent: 1 + type: Transform + - uid: 2128 + components: + - pos: 3.5,22.5 + parent: 1 + type: Transform + - uid: 2129 + components: + - pos: 3.5,23.5 + parent: 1 + type: Transform + - uid: 2130 + components: + - pos: 3.5,24.5 + parent: 1 + type: Transform + - uid: 2131 + components: + - pos: 3.5,25.5 + parent: 1 + type: Transform + - uid: 2132 + components: + - pos: 3.5,26.5 + parent: 1 + type: Transform + - uid: 2133 + components: + - pos: 3.5,27.5 + parent: 1 + type: Transform + - uid: 2134 + components: + - pos: 2.5,23.5 + parent: 1 + type: Transform + - uid: 2135 + components: + - pos: 4.5,25.5 + parent: 1 + type: Transform + - uid: 2138 + components: + - pos: 5.5,25.5 + parent: 1 + type: Transform + - uid: 2139 + components: + - pos: 6.5,25.5 + parent: 1 + type: Transform + - uid: 2140 + components: + - pos: 7.5,25.5 + parent: 1 + type: Transform + - uid: 2141 + components: + - pos: 8.5,25.5 + parent: 1 + type: Transform + - uid: 2142 + components: + - pos: 9.5,25.5 + parent: 1 + type: Transform + - uid: 2143 + components: + - pos: 9.5,24.5 + parent: 1 + type: Transform + - uid: 2144 + components: + - pos: 9.5,23.5 + parent: 1 + type: Transform + - uid: 2145 + components: + - pos: 9.5,22.5 + parent: 1 + type: Transform + - uid: 2146 + components: + - pos: 7.5,24.5 + parent: 1 + type: Transform + - uid: 2147 + components: + - pos: 7.5,23.5 + parent: 1 + type: Transform + - uid: 2148 + components: + - pos: 7.5,22.5 + parent: 1 + type: Transform + - uid: 2149 + components: + - pos: 3.5,20.5 + parent: 1 + type: Transform + - uid: 2150 + components: + - pos: 3.5,19.5 + parent: 1 + type: Transform + - uid: 2151 + components: + - pos: 3.5,18.5 + parent: 1 + type: Transform + - uid: 2152 + components: + - pos: 3.5,17.5 + parent: 1 + type: Transform + - uid: 2153 + components: + - pos: 3.5,16.5 + parent: 1 + type: Transform + - uid: 2154 + components: + - pos: 3.5,15.5 + parent: 1 + type: Transform + - uid: 2155 + components: + - pos: 2.5,16.5 + parent: 1 + type: Transform + - uid: 2156 + components: + - pos: 1.5,16.5 + parent: 1 + type: Transform + - uid: 2157 + components: + - pos: 0.5,16.5 + parent: 1 + type: Transform + - uid: 2158 + components: + - pos: -0.5,16.5 + parent: 1 + type: Transform + - uid: 2159 + components: + - pos: 4.5,19.5 + parent: 1 + type: Transform + - uid: 2160 + components: + - pos: 5.5,19.5 + parent: 1 + type: Transform + - uid: 2161 + components: + - pos: 6.5,19.5 + parent: 1 + type: Transform + - uid: 2162 + components: + - pos: 7.5,19.5 + parent: 1 + type: Transform + - uid: 2163 + components: + - pos: 8.5,19.5 + parent: 1 + type: Transform + - uid: 2164 + components: + - pos: 9.5,19.5 + parent: 1 + type: Transform + - uid: 2165 + components: + - pos: 10.5,19.5 + parent: 1 + type: Transform + - uid: 2166 + components: + - pos: 10.5,18.5 + parent: 1 + type: Transform + - uid: 2173 + components: + - pos: 10.5,17.5 + parent: 1 + type: Transform + - uid: 2174 + components: + - pos: 10.5,16.5 + parent: 1 + type: Transform + - uid: 2175 + components: + - pos: 10.5,15.5 + parent: 1 + type: Transform + - uid: 2176 + components: + - pos: 10.5,14.5 + parent: 1 + type: Transform + - uid: 2177 + components: + - pos: 10.5,13.5 + parent: 1 + type: Transform + - uid: 2178 + components: + - pos: 10.5,12.5 + parent: 1 + type: Transform + - uid: 2179 + components: + - pos: 9.5,15.5 + parent: 1 + type: Transform + - uid: 2180 + components: + - pos: 8.5,15.5 + parent: 1 + type: Transform + - uid: 2181 + components: + - pos: 7.5,15.5 + parent: 1 + type: Transform + - uid: 2185 + components: + - pos: 9.5,12.5 + parent: 1 + type: Transform + - uid: 2186 + components: + - pos: 8.5,12.5 + parent: 1 + type: Transform + - uid: 2187 + components: + - pos: 7.5,12.5 + parent: 1 + type: Transform + - uid: 2220 + components: + - pos: 12.5,28.5 + parent: 1 + type: Transform + - uid: 2221 + components: + - pos: 13.5,28.5 + parent: 1 + type: Transform + - uid: 2222 + components: + - pos: 14.5,28.5 + parent: 1 + type: Transform + - uid: 2223 + components: + - pos: 15.5,28.5 + parent: 1 + type: Transform + - uid: 2224 + components: + - pos: 15.5,29.5 + parent: 1 + type: Transform + - uid: 2225 + components: + - pos: 15.5,30.5 + parent: 1 + type: Transform + - uid: 2226 + components: + - pos: 15.5,31.5 + parent: 1 + type: Transform + - uid: 2227 + components: + - pos: 15.5,32.5 + parent: 1 + type: Transform + - uid: 2228 + components: + - pos: 16.5,32.5 + parent: 1 + type: Transform + - uid: 2229 + components: + - pos: 17.5,32.5 + parent: 1 + type: Transform + - uid: 2230 + components: + - pos: 18.5,32.5 + parent: 1 + type: Transform + - uid: 2231 + components: + - pos: 19.5,32.5 + parent: 1 + type: Transform + - uid: 2232 + components: + - pos: 19.5,31.5 + parent: 1 + type: Transform + - uid: 2233 + components: + - pos: 19.5,30.5 + parent: 1 + type: Transform + - uid: 2234 + components: + - pos: 19.5,29.5 + parent: 1 + type: Transform + - uid: 2241 + components: + - pos: 11.5,15.5 + parent: 1 + type: Transform + - uid: 2242 + components: + - pos: 12.5,15.5 + parent: 1 + type: Transform + - uid: 2243 + components: + - pos: 13.5,15.5 + parent: 1 + type: Transform + - uid: 2244 + components: + - pos: 13.5,16.5 + parent: 1 + type: Transform + - uid: 2245 + components: + - pos: 13.5,17.5 + parent: 1 + type: Transform + - uid: 2246 + components: + - pos: 13.5,18.5 + parent: 1 + type: Transform + - uid: 2247 + components: + - pos: 6.5,12.5 + parent: 1 + type: Transform + - uid: 2248 + components: + - pos: 6.5,15.5 + parent: 1 + type: Transform + - uid: 2269 + components: + - pos: 1.5,23.5 + parent: 1 + type: Transform + - uid: 2270 + components: + - pos: 0.5,23.5 + parent: 1 + type: Transform + - uid: 2271 + components: + - pos: -0.5,23.5 + parent: 1 + type: Transform + - uid: 2272 + components: + - pos: -1.5,23.5 + parent: 1 + type: Transform + - uid: 2273 + components: + - pos: -2.5,23.5 + parent: 1 + type: Transform + - uid: 2274 + components: + - pos: -2.5,22.5 + parent: 1 + type: Transform + - uid: 2275 + components: + - pos: -2.5,21.5 + parent: 1 + type: Transform + - uid: 2276 + components: + - pos: -2.5,20.5 + parent: 1 + type: Transform + - uid: 2277 + components: + - pos: -2.5,19.5 + parent: 1 + type: Transform + - uid: 2278 + components: + - pos: -2.5,24.5 + parent: 1 + type: Transform + - uid: 2279 + components: + - pos: -2.5,25.5 + parent: 1 + type: Transform + - uid: 2280 + components: + - pos: -2.5,26.5 + parent: 1 + type: Transform + - uid: 2281 + components: + - pos: 0.5,24.5 + parent: 1 + type: Transform + - uid: 2282 + components: + - pos: 0.5,25.5 + parent: 1 + type: Transform + - uid: 2283 + components: + - pos: 0.5,26.5 + parent: 1 + type: Transform + - uid: 2284 + components: + - pos: 0.5,27.5 + parent: 1 + type: Transform + - uid: 2288 + components: + - pos: 0.5,29.5 + parent: 1 + type: Transform + - uid: 2289 + components: + - pos: -0.5,29.5 + parent: 1 + type: Transform + - uid: 2290 + components: + - pos: -1.5,29.5 + parent: 1 + type: Transform + - uid: 2291 + components: + - pos: -2.5,29.5 + parent: 1 + type: Transform + - uid: 2292 + components: + - pos: -3.5,29.5 + parent: 1 + type: Transform + - uid: 2293 + components: + - pos: -3.5,30.5 + parent: 1 + type: Transform + - uid: 2294 + components: + - pos: -3.5,31.5 + parent: 1 + type: Transform + - uid: 2295 + components: + - pos: -3.5,32.5 + parent: 1 + type: Transform + - uid: 2296 + components: + - pos: -3.5,33.5 + parent: 1 + type: Transform + - uid: 2297 + components: + - pos: -0.5,30.5 + parent: 1 + type: Transform + - uid: 2298 + components: + - pos: -0.5,31.5 + parent: 1 + type: Transform + - uid: 2299 + components: + - pos: -0.5,32.5 + parent: 1 + type: Transform + - uid: 2300 + components: + - pos: -0.5,33.5 + parent: 1 + type: Transform + - uid: 2399 + components: + - pos: 16.5,36.5 + parent: 1 + type: Transform + - uid: 2519 + components: + - pos: 22.5,10.5 + parent: 1 + type: Transform + - uid: 2520 + components: + - pos: 22.5,9.5 + parent: 1 + type: Transform + - uid: 2521 + components: + - pos: 22.5,8.5 + parent: 1 + type: Transform + - uid: 2522 + components: + - pos: 22.5,7.5 + parent: 1 + type: Transform + - uid: 2523 + components: + - pos: 22.5,6.5 + parent: 1 + type: Transform + - uid: 2524 + components: + - pos: 21.5,6.5 + parent: 1 + type: Transform + - uid: 2525 + components: + - pos: 20.5,6.5 + parent: 1 + type: Transform + - uid: 2526 + components: + - pos: 19.5,6.5 + parent: 1 + type: Transform + - uid: 2527 + components: + - pos: 18.5,6.5 + parent: 1 + type: Transform + - uid: 2528 + components: + - pos: 17.5,6.5 + parent: 1 + type: Transform + - uid: 2529 + components: + - pos: 16.5,6.5 + parent: 1 + type: Transform + - uid: 2530 + components: + - pos: 15.5,6.5 + parent: 1 + type: Transform + - uid: 2531 + components: + - pos: 14.5,6.5 + parent: 1 + type: Transform + - uid: 2532 + components: + - pos: 13.5,6.5 + parent: 1 + type: Transform + - uid: 2533 + components: + - pos: 22.5,5.5 + parent: 1 + type: Transform + - uid: 2534 + components: + - pos: 22.5,4.5 + parent: 1 + type: Transform + - uid: 2535 + components: + - pos: 22.5,3.5 + parent: 1 + type: Transform + - uid: 2536 + components: + - pos: 17.5,7.5 + parent: 1 + type: Transform + - uid: 2537 + components: + - pos: 17.5,8.5 + parent: 1 + type: Transform + - uid: 2538 + components: + - pos: 17.5,9.5 + parent: 1 + type: Transform + - uid: 2539 + components: + - pos: 17.5,10.5 + parent: 1 + type: Transform + - uid: 2540 + components: + - pos: 17.5,11.5 + parent: 1 + type: Transform + - uid: 2541 + components: + - pos: 17.5,12.5 + parent: 1 + type: Transform + - uid: 2542 + components: + - pos: 22.5,11.5 + parent: 1 + type: Transform + - uid: 2543 + components: + - pos: 22.5,12.5 + parent: 1 + type: Transform + - uid: 2544 + components: + - pos: 22.5,13.5 + parent: 1 + type: Transform + - uid: 2545 + components: + - pos: 22.5,14.5 + parent: 1 + type: Transform + - uid: 2546 + components: + - pos: 22.5,15.5 + parent: 1 + type: Transform + - uid: 2547 + components: + - pos: 22.5,16.5 + parent: 1 + type: Transform + - uid: 2548 + components: + - pos: 22.5,17.5 + parent: 1 + type: Transform + - uid: 2549 + components: + - pos: 22.5,18.5 + parent: 1 + type: Transform + - uid: 2550 + components: + - pos: 22.5,19.5 + parent: 1 + type: Transform + - uid: 2551 + components: + - pos: 22.5,20.5 + parent: 1 + type: Transform + - uid: 2552 + components: + - pos: 22.5,21.5 + parent: 1 + type: Transform + - uid: 2553 + components: + - pos: 22.5,22.5 + parent: 1 + type: Transform + - uid: 2554 + components: + - pos: 22.5,23.5 + parent: 1 + type: Transform + - uid: 2555 + components: + - pos: 22.5,24.5 + parent: 1 + type: Transform + - uid: 2556 + components: + - pos: 22.5,25.5 + parent: 1 + type: Transform + - uid: 2557 + components: + - pos: 23.5,6.5 + parent: 1 + type: Transform + - uid: 2558 + components: + - pos: 24.5,6.5 + parent: 1 + type: Transform + - uid: 2559 + components: + - pos: 25.5,6.5 + parent: 1 + type: Transform + - uid: 2560 + components: + - pos: 26.5,6.5 + parent: 1 + type: Transform + - uid: 2561 + components: + - pos: 27.5,6.5 + parent: 1 + type: Transform + - uid: 2562 + components: + - pos: 27.5,7.5 + parent: 1 + type: Transform + - uid: 2563 + components: + - pos: 27.5,8.5 + parent: 1 + type: Transform + - uid: 2564 + components: + - pos: 27.5,9.5 + parent: 1 + type: Transform + - uid: 2565 + components: + - pos: 27.5,10.5 + parent: 1 + type: Transform + - uid: 2566 + components: + - pos: 28.5,8.5 + parent: 1 + type: Transform + - uid: 2567 + components: + - pos: 29.5,8.5 + parent: 1 + type: Transform + - uid: 2568 + components: + - pos: 30.5,8.5 + parent: 1 + type: Transform + - uid: 2569 + components: + - pos: 27.5,11.5 + parent: 1 + type: Transform + - uid: 2570 + components: + - pos: -7.5,2.5 + parent: 1 + type: Transform + - uid: 2571 + components: + - pos: -7.5,3.5 + parent: 1 + type: Transform + - uid: 2572 + components: + - pos: 23.5,14.5 + parent: 1 + type: Transform + - uid: 2573 + components: + - pos: 24.5,14.5 + parent: 1 + type: Transform + - uid: 2574 + components: + - pos: 25.5,14.5 + parent: 1 + type: Transform + - uid: 2575 + components: + - pos: 26.5,14.5 + parent: 1 + type: Transform + - uid: 2576 + components: + - pos: 27.5,14.5 + parent: 1 + type: Transform + - uid: 2577 + components: + - pos: 25.5,13.5 + parent: 1 + type: Transform + - uid: 2578 + components: + - pos: 25.5,12.5 + parent: 1 + type: Transform + - uid: 2579 + components: + - pos: 25.5,11.5 + parent: 1 + type: Transform + - uid: 2580 + components: + - pos: 23.5,18.5 + parent: 1 + type: Transform + - uid: 2581 + components: + - pos: 24.5,18.5 + parent: 1 + type: Transform + - uid: 2582 + components: + - pos: 25.5,18.5 + parent: 1 + type: Transform + - uid: 2583 + components: + - pos: 26.5,18.5 + parent: 1 + type: Transform + - uid: 2584 + components: + - pos: 27.5,18.5 + parent: 1 + type: Transform + - uid: 2585 + components: + - pos: 28.5,18.5 + parent: 1 + type: Transform + - uid: 2586 + components: + - pos: 29.5,18.5 + parent: 1 + type: Transform + - uid: 2587 + components: + - pos: 30.5,18.5 + parent: 1 + type: Transform + - uid: 2588 + components: + - pos: 26.5,19.5 + parent: 1 + type: Transform + - uid: 2594 + components: + - pos: 31.5,18.5 + parent: 1 + type: Transform + - uid: 2595 + components: + - pos: 31.5,8.5 + parent: 1 + type: Transform + - uid: 2596 + components: + - pos: -7.5,4.5 + parent: 1 + type: Transform + - uid: 2597 + components: + - pos: -7.5,5.5 + parent: 1 + type: Transform + - uid: 2598 + components: + - pos: -6.5,5.5 + parent: 1 + type: Transform + - uid: 2599 + components: + - pos: -5.5,5.5 + parent: 1 + type: Transform + - uid: 2600 + components: + - pos: -4.5,5.5 + parent: 1 + type: Transform + - uid: 2601 + components: + - pos: -3.5,5.5 + parent: 1 + type: Transform + - uid: 2602 + components: + - pos: -2.5,5.5 + parent: 1 + type: Transform + - uid: 2603 + components: + - pos: -1.5,5.5 + parent: 1 + type: Transform + - uid: 2604 + components: + - pos: -0.5,5.5 + parent: 1 + type: Transform + - uid: 2605 + components: + - pos: 0.5,5.5 + parent: 1 + type: Transform + - uid: 2606 + components: + - pos: 1.5,5.5 + parent: 1 + type: Transform + - uid: 2607 + components: + - pos: -5.5,6.5 + parent: 1 + type: Transform + - uid: 2608 + components: + - pos: -8.5,5.5 + parent: 1 + type: Transform + - uid: 2609 + components: + - pos: -9.5,5.5 + parent: 1 + type: Transform + - uid: 2610 + components: + - pos: -10.5,5.5 + parent: 1 + type: Transform + - uid: 2611 + components: + - pos: -11.5,5.5 + parent: 1 + type: Transform + - uid: 2612 + components: + - pos: -12.5,5.5 + parent: 1 + type: Transform + - uid: 2613 + components: + - pos: -13.5,5.5 + parent: 1 + type: Transform + - uid: 2614 + components: + - pos: -14.5,5.5 + parent: 1 + type: Transform + - uid: 2615 + components: + - pos: -15.5,5.5 + parent: 1 + type: Transform + - uid: 2616 + components: + - pos: -16.5,5.5 + parent: 1 + type: Transform + - uid: 2617 + components: + - pos: -16.5,4.5 + parent: 1 + type: Transform + - uid: 2618 + components: + - pos: -4.5,33.5 + parent: 1 + type: Transform + - uid: 2619 + components: + - pos: -5.5,33.5 + parent: 1 + type: Transform + - uid: 2620 + components: + - pos: -6.5,33.5 + parent: 1 + type: Transform + - uid: 2621 + components: + - pos: -7.5,33.5 + parent: 1 + type: Transform + - uid: 2622 + components: + - pos: -8.5,33.5 + parent: 1 + type: Transform + - uid: 2623 + components: + - pos: -8.5,32.5 + parent: 1 + type: Transform + - uid: 2624 + components: + - pos: -8.5,31.5 + parent: 1 + type: Transform + - uid: 2625 + components: + - pos: -8.5,30.5 + parent: 1 + type: Transform + - uid: 2626 + components: + - pos: -8.5,29.5 + parent: 1 + type: Transform + - uid: 2627 + components: + - pos: -8.5,28.5 + parent: 1 + type: Transform + - uid: 2628 + components: + - pos: -9.5,32.5 + parent: 1 + type: Transform + - uid: 2629 + components: + - pos: -10.5,32.5 + parent: 1 + type: Transform + - uid: 2630 + components: + - pos: -11.5,32.5 + parent: 1 + type: Transform + - uid: 2631 + components: + - pos: -12.5,32.5 + parent: 1 + type: Transform + - uid: 2699 + components: + - pos: -10.5,17.5 + parent: 1 + type: Transform + - uid: 2700 + components: + - pos: -11.5,17.5 + parent: 1 + type: Transform + - uid: 2701 + components: + - pos: -12.5,17.5 + parent: 1 + type: Transform + - uid: 2702 + components: + - pos: -12.5,16.5 + parent: 1 + type: Transform + - uid: 2703 + components: + - pos: -12.5,15.5 + parent: 1 + type: Transform + - uid: 2704 + components: + - pos: -12.5,14.5 + parent: 1 + type: Transform + - uid: 2705 + components: + - pos: -12.5,13.5 + parent: 1 + type: Transform + - uid: 2706 + components: + - pos: -12.5,12.5 + parent: 1 + type: Transform + - uid: 2707 + components: + - pos: -12.5,11.5 + parent: 1 + type: Transform + - uid: 2708 + components: + - pos: -12.5,10.5 + parent: 1 + type: Transform + - uid: 2709 + components: + - pos: -12.5,9.5 + parent: 1 + type: Transform + - uid: 2710 + components: + - pos: -11.5,9.5 + parent: 1 + type: Transform + - uid: 2711 + components: + - pos: -10.5,9.5 + parent: 1 + type: Transform + - uid: 2712 + components: + - pos: -9.5,9.5 + parent: 1 + type: Transform + - uid: 2713 + components: + - pos: -8.5,9.5 + parent: 1 + type: Transform + - uid: 2714 + components: + - pos: -13.5,9.5 + parent: 1 + type: Transform + - uid: 2715 + components: + - pos: -14.5,9.5 + parent: 1 + type: Transform + - uid: 2716 + components: + - pos: -15.5,9.5 + parent: 1 + type: Transform + - uid: 2717 + components: + - pos: -16.5,9.5 + parent: 1 + type: Transform + - uid: 2718 + components: + - pos: -13.5,13.5 + parent: 1 + type: Transform + - uid: 2719 + components: + - pos: -14.5,13.5 + parent: 1 + type: Transform + - uid: 2720 + components: + - pos: -15.5,13.5 + parent: 1 + type: Transform + - uid: 2721 + components: + - pos: -16.5,13.5 + parent: 1 + type: Transform + - uid: 2722 + components: + - pos: -11.5,12.5 + parent: 1 + type: Transform + - uid: 2723 + components: + - pos: -10.5,12.5 + parent: 1 + type: Transform + - uid: 2724 + components: + - pos: -9.5,12.5 + parent: 1 + type: Transform + - uid: 2725 + components: + - pos: -8.5,12.5 + parent: 1 + type: Transform + - uid: 2726 + components: + - pos: -11.5,15.5 + parent: 1 + type: Transform + - uid: 2727 + components: + - pos: -10.5,15.5 + parent: 1 + type: Transform + - uid: 2728 + components: + - pos: -9.5,15.5 + parent: 1 + type: Transform + - uid: 2729 + components: + - pos: -8.5,15.5 + parent: 1 + type: Transform + - uid: 2734 + components: + - pos: -12.5,18.5 + parent: 1 + type: Transform + - uid: 2735 + components: + - pos: -12.5,19.5 + parent: 1 + type: Transform + - uid: 2736 + components: + - pos: -12.5,20.5 + parent: 1 + type: Transform + - uid: 2737 + components: + - pos: -12.5,21.5 + parent: 1 + type: Transform + - uid: 2738 + components: + - pos: -12.5,22.5 + parent: 1 + type: Transform + - uid: 2739 + components: + - pos: -12.5,23.5 + parent: 1 + type: Transform + - uid: 2740 + components: + - pos: -12.5,24.5 + parent: 1 + type: Transform + - uid: 2741 + components: + - pos: -12.5,25.5 + parent: 1 + type: Transform + - uid: 2742 + components: + - pos: -12.5,26.5 + parent: 1 + type: Transform + - uid: 2743 + components: + - pos: -12.5,27.5 + parent: 1 + type: Transform + - uid: 2744 + components: + - pos: -12.5,28.5 + parent: 1 + type: Transform + - uid: 2745 + components: + - pos: -12.5,29.5 + parent: 1 + type: Transform + - uid: 2746 + components: + - pos: -9.5,17.5 + parent: 1 + type: Transform + - uid: 2747 + components: + - pos: -8.5,17.5 + parent: 1 + type: Transform + - uid: 2748 + components: + - pos: -7.5,17.5 + parent: 1 + type: Transform + - uid: 2778 + components: + - pos: -20.5,17.5 + parent: 1 + type: Transform + - uid: 2779 + components: + - pos: -20.5,16.5 + parent: 1 + type: Transform + - uid: 2783 + components: + - pos: -21.5,16.5 + parent: 1 + type: Transform + - uid: 2785 + components: + - pos: -19.5,17.5 + parent: 1 + type: Transform + - uid: 2793 + components: + - pos: -15.5,8.5 + parent: 1 + type: Transform + - uid: 2853 + components: + - pos: -13.5,28.5 + parent: 1 + type: Transform + - uid: 2854 + components: + - pos: -14.5,28.5 + parent: 1 + type: Transform + - uid: 2855 + components: + - pos: -15.5,28.5 + parent: 1 + type: Transform + - uid: 2856 + components: + - pos: -16.5,28.5 + parent: 1 + type: Transform + - uid: 2857 + components: + - pos: -14.5,29.5 + parent: 1 + type: Transform + - uid: 2858 + components: + - pos: -16.5,29.5 + parent: 1 + type: Transform + - uid: 2859 + components: + - pos: -16.5,30.5 + parent: 1 + type: Transform + - uid: 2860 + components: + - pos: -17.5,30.5 + parent: 1 + type: Transform + - uid: 2861 + components: + - pos: -15.5,30.5 + parent: 1 + type: Transform + - uid: 2862 + components: + - pos: 2.5,-7.5 + parent: 1 + type: Transform + - uid: 3041 + components: + - pos: -16.5,27.5 + parent: 1 + type: Transform + - uid: 3042 + components: + - pos: -16.5,26.5 + parent: 1 + type: Transform + - uid: 3159 + components: + - pos: -29.5,30.5 + parent: 1 + type: Transform + - uid: 3174 + components: + - pos: -16.5,25.5 + parent: 1 + type: Transform + - uid: 3178 + components: + - pos: -16.5,24.5 + parent: 1 + type: Transform + - uid: 3212 + components: + - pos: -24.5,19.5 + parent: 1 + type: Transform + - uid: 3224 + components: + - pos: -19.5,24.5 + parent: 1 + type: Transform + - uid: 3225 + components: + - pos: -20.5,24.5 + parent: 1 + type: Transform + - uid: 3226 + components: + - pos: -20.5,25.5 + parent: 1 + type: Transform + - uid: 3227 + components: + - pos: -20.5,26.5 + parent: 1 + type: Transform + - uid: 3228 + components: + - pos: -21.5,26.5 + parent: 1 + type: Transform + - uid: 3229 + components: + - pos: -22.5,26.5 + parent: 1 + type: Transform + - uid: 3230 + components: + - pos: -23.5,26.5 + parent: 1 + type: Transform + - uid: 3231 + components: + - pos: -24.5,26.5 + parent: 1 + type: Transform + - uid: 3232 + components: + - pos: -24.5,27.5 + parent: 1 + type: Transform + - uid: 3233 + components: + - pos: -24.5,28.5 + parent: 1 + type: Transform + - uid: 3234 + components: + - pos: -24.5,29.5 + parent: 1 + type: Transform + - uid: 3235 + components: + - pos: -23.5,29.5 + parent: 1 + type: Transform + - uid: 3236 + components: + - pos: -20.5,23.5 + parent: 1 + type: Transform + - uid: 3237 + components: + - pos: -21.5,23.5 + parent: 1 + type: Transform + - uid: 3238 + components: + - pos: -22.5,23.5 + parent: 1 + type: Transform + - uid: 3239 + components: + - pos: -23.5,23.5 + parent: 1 + type: Transform + - uid: 3240 + components: + - pos: -24.5,23.5 + parent: 1 + type: Transform + - uid: 3241 + components: + - pos: -25.5,23.5 + parent: 1 + type: Transform + - uid: 3242 + components: + - pos: -26.5,23.5 + parent: 1 + type: Transform + - uid: 3243 + components: + - pos: -27.5,23.5 + parent: 1 + type: Transform + - uid: 3244 + components: + - pos: -28.5,23.5 + parent: 1 + type: Transform + - uid: 3245 + components: + - pos: -29.5,23.5 + parent: 1 + type: Transform + - uid: 3246 + components: + - pos: -29.5,24.5 + parent: 1 + type: Transform + - uid: 3247 + components: + - pos: -29.5,25.5 + parent: 1 + type: Transform + - uid: 3248 + components: + - pos: -29.5,26.5 + parent: 1 + type: Transform + - uid: 3249 + components: + - pos: -29.5,27.5 + parent: 1 + type: Transform + - uid: 3250 + components: + - pos: -29.5,28.5 + parent: 1 + type: Transform + - uid: 3251 + components: + - pos: -30.5,28.5 + parent: 1 + type: Transform + - uid: 3252 + components: + - pos: -31.5,28.5 + parent: 1 + type: Transform + - uid: 3253 + components: + - pos: -32.5,28.5 + parent: 1 + type: Transform + - uid: 3254 + components: + - pos: -33.5,28.5 + parent: 1 + type: Transform + - uid: 3255 + components: + - pos: -30.5,25.5 + parent: 1 + type: Transform + - uid: 3256 + components: + - pos: -31.5,25.5 + parent: 1 + type: Transform + - uid: 3257 + components: + - pos: -32.5,25.5 + parent: 1 + type: Transform + - uid: 3258 + components: + - pos: -33.5,25.5 + parent: 1 + type: Transform + - uid: 3259 + components: + - pos: -34.5,25.5 + parent: 1 + type: Transform + - uid: 3260 + components: + - pos: -34.5,28.5 + parent: 1 + type: Transform + - uid: 3261 + components: + - pos: -24.5,18.5 + parent: 1 + type: Transform + - uid: 3262 + components: + - pos: -24.5,17.5 + parent: 1 + type: Transform + - uid: 3263 + components: + - pos: -24.5,16.5 + parent: 1 + type: Transform + - uid: 3264 + components: + - pos: -24.5,15.5 + parent: 1 + type: Transform + - uid: 3265 + components: + - pos: -25.5,15.5 + parent: 1 + type: Transform + - uid: 3266 + components: + - pos: -26.5,15.5 + parent: 1 + type: Transform + - uid: 3267 + components: + - pos: -27.5,15.5 + parent: 1 + type: Transform + - uid: 3268 + components: + - pos: -28.5,15.5 + parent: 1 + type: Transform + - uid: 3269 + components: + - pos: -25.5,18.5 + parent: 1 + type: Transform + - uid: 3270 + components: + - pos: -26.5,18.5 + parent: 1 + type: Transform + - uid: 3271 + components: + - pos: -27.5,18.5 + parent: 1 + type: Transform + - uid: 3272 + components: + - pos: -28.5,18.5 + parent: 1 + type: Transform + - uid: 3273 + components: + - pos: -23.5,16.5 + parent: 1 + type: Transform + - uid: 3274 + components: + - pos: -22.5,16.5 + parent: 1 + type: Transform + - uid: 3275 + components: + - pos: -23.5,15.5 + parent: 1 + type: Transform + - uid: 3276 + components: + - pos: -23.5,14.5 + parent: 1 + type: Transform + - uid: 3277 + components: + - pos: -23.5,13.5 + parent: 1 + type: Transform + - uid: 3278 + components: + - pos: -23.5,12.5 + parent: 1 + type: Transform + - uid: 3279 + components: + - pos: -23.5,11.5 + parent: 1 + type: Transform + - uid: 3280 + components: + - pos: -23.5,10.5 + parent: 1 + type: Transform + - uid: 3281 + components: + - pos: -23.5,9.5 + parent: 1 + type: Transform + - uid: 3282 + components: + - pos: -23.5,8.5 + parent: 1 + type: Transform + - uid: 3283 + components: + - pos: -24.5,8.5 + parent: 1 + type: Transform + - uid: 3284 + components: + - pos: -25.5,8.5 + parent: 1 + type: Transform + - uid: 3285 + components: + - pos: -26.5,8.5 + parent: 1 + type: Transform + - uid: 3286 + components: + - pos: -27.5,8.5 + parent: 1 + type: Transform + - uid: 3287 + components: + - pos: -28.5,8.5 + parent: 1 + type: Transform + - uid: 3288 + components: + - pos: -29.5,8.5 + parent: 1 + type: Transform + - uid: 3289 + components: + - pos: -30.5,8.5 + parent: 1 + type: Transform + - uid: 3290 + components: + - pos: -30.5,9.5 + parent: 1 + type: Transform + - uid: 3291 + components: + - pos: -30.5,10.5 + parent: 1 + type: Transform + - uid: 3292 + components: + - pos: -31.5,10.5 + parent: 1 + type: Transform + - uid: 3293 + components: + - pos: -31.5,10.5 + parent: 1 + type: Transform + - uid: 3294 + components: + - pos: -32.5,10.5 + parent: 1 + type: Transform + - uid: 3295 + components: + - pos: -33.5,10.5 + parent: 1 + type: Transform + - uid: 3296 + components: + - pos: -33.5,9.5 + parent: 1 + type: Transform + - uid: 3297 + components: + - pos: -23.5,7.5 + parent: 1 + type: Transform + - uid: 3298 + components: + - pos: -23.5,6.5 + parent: 1 + type: Transform + - uid: 3299 + components: + - pos: -23.5,5.5 + parent: 1 + type: Transform + - uid: 3300 + components: + - pos: -24.5,5.5 + parent: 1 + type: Transform + - uid: 3301 + components: + - pos: -25.5,5.5 + parent: 1 + type: Transform + - uid: 3302 + components: + - pos: -26.5,5.5 + parent: 1 + type: Transform + - uid: 3303 + components: + - pos: -27.5,5.5 + parent: 1 + type: Transform + - uid: 3304 + components: + - pos: -28.5,5.5 + parent: 1 + type: Transform + - uid: 3305 + components: + - pos: -29.5,5.5 + parent: 1 + type: Transform + - uid: 3306 + components: + - pos: -30.5,5.5 + parent: 1 + type: Transform + - uid: 3307 + components: + - pos: -31.5,5.5 + parent: 1 + type: Transform + - uid: 3308 + components: + - pos: -32.5,5.5 + parent: 1 + type: Transform + - uid: 3309 + components: + - pos: -33.5,5.5 + parent: 1 + type: Transform + - uid: 3310 + components: + - pos: -22.5,5.5 + parent: 1 + type: Transform + - uid: 3311 + components: + - pos: -21.5,5.5 + parent: 1 + type: Transform + - uid: 3312 + components: + - pos: -20.5,5.5 + parent: 1 + type: Transform + - uid: 3313 + components: + - pos: -19.5,5.5 + parent: 1 + type: Transform + - uid: 3314 + components: + - pos: -19.5,6.5 + parent: 1 + type: Transform + - uid: 3323 + components: + - pos: -42.5,-11.5 + parent: 1 + type: Transform + - uid: 3352 + components: + - pos: -42.5,-13.5 + parent: 1 + type: Transform + - uid: 3353 + components: + - pos: -43.5,-13.5 + parent: 1 + type: Transform + - uid: 3354 + components: + - pos: -47.5,-13.5 + parent: 1 + type: Transform + - uid: 3355 + components: + - pos: -42.5,-12.5 + parent: 1 + type: Transform + - uid: 3359 + components: + - pos: -39.5,-12.5 + parent: 1 + type: Transform + - uid: 3479 + components: + - pos: 17.5,36.5 + parent: 1 + type: Transform + - uid: 3485 + components: + - pos: 21.5,40.5 + parent: 1 + type: Transform + - uid: 3531 + components: + - pos: -29.5,29.5 + parent: 1 + type: Transform + - uid: 3556 + components: + - pos: -42.5,-10.5 + parent: 1 + type: Transform + - uid: 3557 + components: + - pos: -39.5,-13.5 + parent: 1 + type: Transform + - uid: 3681 + components: + - pos: -39.5,-10.5 + parent: 1 + type: Transform + - uid: 3702 + components: + - pos: -34.5,-6.5 + parent: 1 + type: Transform + - uid: 3703 + components: + - pos: -48.5,-13.5 + parent: 1 + type: Transform + - uid: 3707 + components: + - pos: -42.5,-8.5 + parent: 1 + type: Transform + - uid: 3709 + components: + - pos: -34.5,-10.5 + parent: 1 + type: Transform + - uid: 3711 + components: + - pos: -44.5,-13.5 + parent: 1 + type: Transform + - uid: 3712 + components: + - pos: -45.5,-13.5 + parent: 1 + type: Transform + - uid: 3713 + components: + - pos: -46.5,-13.5 + parent: 1 + type: Transform + - uid: 3777 + components: + - pos: -42.5,-5.5 + parent: 1 + type: Transform + - uid: 3778 + components: + - pos: -41.5,-5.5 + parent: 1 + type: Transform + - uid: 3779 + components: + - pos: -40.5,-5.5 + parent: 1 + type: Transform + - uid: 3780 + components: + - pos: -39.5,-5.5 + parent: 1 + type: Transform + - uid: 3781 + components: + - pos: -38.5,-5.5 + parent: 1 + type: Transform + - uid: 3782 + components: + - pos: -37.5,-5.5 + parent: 1 + type: Transform + - uid: 3783 + components: + - pos: -40.5,-4.5 + parent: 1 + type: Transform + - uid: 3784 + components: + - pos: -40.5,-3.5 + parent: 1 + type: Transform + - uid: 3785 + components: + - pos: -40.5,-2.5 + parent: 1 + type: Transform + - uid: 3786 + components: + - pos: -40.5,-1.5 + parent: 1 + type: Transform + - uid: 3787 + components: + - pos: -40.5,-0.5 + parent: 1 + type: Transform + - uid: 3788 + components: + - pos: -40.5,0.5 + parent: 1 + type: Transform + - uid: 3789 + components: + - pos: -40.5,1.5 + parent: 1 + type: Transform + - uid: 3790 + components: + - pos: -40.5,2.5 + parent: 1 + type: Transform + - uid: 3791 + components: + - pos: -37.5,-4.5 + parent: 1 + type: Transform + - uid: 3792 + components: + - pos: -37.5,-3.5 + parent: 1 + type: Transform + - uid: 3793 + components: + - pos: -37.5,-2.5 + parent: 1 + type: Transform + - uid: 3794 + components: + - pos: -37.5,-1.5 + parent: 1 + type: Transform + - uid: 3795 + components: + - pos: -37.5,-0.5 + parent: 1 + type: Transform + - uid: 3796 + components: + - pos: -37.5,0.5 + parent: 1 + type: Transform + - uid: 3797 + components: + - pos: -37.5,1.5 + parent: 1 + type: Transform + - uid: 3798 + components: + - pos: -37.5,2.5 + parent: 1 + type: Transform + - uid: 3799 + components: + - pos: -36.5,-2.5 + parent: 1 + type: Transform + - uid: 3800 + components: + - pos: -35.5,-2.5 + parent: 1 + type: Transform + - uid: 3801 + components: + - pos: -34.5,-2.5 + parent: 1 + type: Transform + - uid: 3802 + components: + - pos: -33.5,-2.5 + parent: 1 + type: Transform + - uid: 3803 + components: + - pos: -32.5,-2.5 + parent: 1 + type: Transform + - uid: 3804 + components: + - pos: -32.5,-1.5 + parent: 1 + type: Transform + - uid: 3805 + components: + - pos: -32.5,-0.5 + parent: 1 + type: Transform + - uid: 3806 + components: + - pos: -32.5,0.5 + parent: 1 + type: Transform + - uid: 3807 + components: + - pos: -32.5,1.5 + parent: 1 + type: Transform + - uid: 3808 + components: + - pos: -32.5,2.5 + parent: 1 + type: Transform + - uid: 3809 + components: + - pos: -37.5,3.5 + parent: 1 + type: Transform + - uid: 3810 + components: + - pos: -37.5,4.5 + parent: 1 + type: Transform + - uid: 3811 + components: + - pos: -37.5,5.5 + parent: 1 + type: Transform + - uid: 3812 + components: + - pos: -36.5,5.5 + parent: 1 + type: Transform + - uid: 3813 + components: + - pos: -35.5,5.5 + parent: 1 + type: Transform + - uid: 3814 + components: + - pos: -38.5,5.5 + parent: 1 + type: Transform + - uid: 3815 + components: + - pos: -39.5,5.5 + parent: 1 + type: Transform + - uid: 3816 + components: + - pos: -40.5,5.5 + parent: 1 + type: Transform + - uid: 3817 + components: + - pos: -41.5,-2.5 + parent: 1 + type: Transform + - uid: 3818 + components: + - pos: -42.5,-2.5 + parent: 1 + type: Transform + - uid: 3819 + components: + - pos: -43.5,-2.5 + parent: 1 + type: Transform + - uid: 3820 + components: + - pos: -44.5,-2.5 + parent: 1 + type: Transform + - uid: 3821 + components: + - pos: -44.5,-3.5 + parent: 1 + type: Transform + - uid: 3822 + components: + - pos: -44.5,-4.5 + parent: 1 + type: Transform + - uid: 3823 + components: + - pos: -44.5,-5.5 + parent: 1 + type: Transform + - uid: 3824 + components: + - pos: -44.5,-6.5 + parent: 1 + type: Transform + - uid: 3825 + components: + - pos: -45.5,-2.5 + parent: 1 + type: Transform + - uid: 3826 + components: + - pos: -44.5,-1.5 + parent: 1 + type: Transform + - uid: 3827 + components: + - pos: -44.5,-0.5 + parent: 1 + type: Transform + - uid: 3828 + components: + - pos: -44.5,0.5 + parent: 1 + type: Transform + - uid: 3829 + components: + - pos: -44.5,1.5 + parent: 1 + type: Transform + - uid: 3830 + components: + - pos: -45.5,1.5 + parent: 1 + type: Transform + - uid: 3831 + components: + - pos: -39.5,-6.5 + parent: 1 + type: Transform + - uid: 3834 + components: + - pos: -39.5,-9.5 + parent: 1 + type: Transform + - uid: 3836 + components: + - pos: -39.5,-11.5 + parent: 1 + type: Transform + - uid: 3838 + components: + - pos: -37.5,-6.5 + parent: 1 + type: Transform + - uid: 3839 + components: + - pos: -37.5,-7.5 + parent: 1 + type: Transform + - uid: 3845 + components: + - pos: -32.5,-3.5 + parent: 1 + type: Transform + - uid: 3847 + components: + - pos: -32.5,-12.5 + parent: 1 + type: Transform + - uid: 3848 + components: + - pos: -32.5,-11.5 + parent: 1 + type: Transform + - uid: 3849 + components: + - pos: -32.5,-10.5 + parent: 1 + type: Transform + - uid: 3850 + components: + - pos: -34.5,-12.5 + parent: 1 + type: Transform + - uid: 3852 + components: + - pos: -33.5,-9.5 + parent: 1 + type: Transform + - uid: 3853 + components: + - pos: -33.5,-10.5 + parent: 1 + type: Transform + - uid: 3855 + components: + - pos: -40.5,-9.5 + parent: 1 + type: Transform + - uid: 3856 + components: + - pos: -41.5,-9.5 + parent: 1 + type: Transform + - uid: 3857 + components: + - pos: -42.5,-9.5 + parent: 1 + type: Transform + - uid: 3858 + components: + - pos: -43.5,-9.5 + parent: 1 + type: Transform + - uid: 3859 + components: + - pos: -44.5,-9.5 + parent: 1 + type: Transform + - uid: 3860 + components: + - pos: -45.5,-9.5 + parent: 1 + type: Transform + - uid: 3861 + components: + - pos: -46.5,-9.5 + parent: 1 + type: Transform + - uid: 3862 + components: + - pos: -47.5,-9.5 + parent: 1 + type: Transform + - uid: 3863 + components: + - pos: -47.5,-2.5 + parent: 1 + type: Transform + - uid: 3864 + components: + - pos: -48.5,-2.5 + parent: 1 + type: Transform + - uid: 3866 + components: + - pos: -48.5,-1.5 + parent: 1 + type: Transform + - uid: 3867 + components: + - pos: -48.5,-0.5 + parent: 1 + type: Transform + - uid: 3868 + components: + - pos: -48.5,0.5 + parent: 1 + type: Transform + - uid: 3869 + components: + - pos: -48.5,1.5 + parent: 1 + type: Transform + - uid: 3870 + components: + - pos: -44.5,2.5 + parent: 1 + type: Transform + - uid: 3873 + components: + - pos: -27.5,-2.5 + parent: 1 + type: Transform + - uid: 3874 + components: + - pos: -26.5,-2.5 + parent: 1 + type: Transform + - uid: 3875 + components: + - pos: -26.5,-1.5 + parent: 1 + type: Transform + - uid: 3876 + components: + - pos: -26.5,-0.5 + parent: 1 + type: Transform + - uid: 3877 + components: + - pos: -26.5,0.5 + parent: 1 + type: Transform + - uid: 3878 + components: + - pos: -26.5,1.5 + parent: 1 + type: Transform + - uid: 3879 + components: + - pos: -26.5,2.5 + parent: 1 + type: Transform + - uid: 3880 + components: + - pos: -25.5,2.5 + parent: 1 + type: Transform + - uid: 3881 + components: + - pos: -25.5,0.5 + parent: 1 + type: Transform + - uid: 3882 + components: + - pos: -25.5,-1.5 + parent: 1 + type: Transform + - uid: 3883 + components: + - pos: -26.5,3.5 + parent: 1 + type: Transform + - uid: 3884 + components: + - pos: -26.5,-3.5 + parent: 1 + type: Transform + - uid: 3885 + components: + - pos: -26.5,-4.5 + parent: 1 + type: Transform + - uid: 3886 + components: + - pos: -26.5,-5.5 + parent: 1 + type: Transform + - uid: 3887 + components: + - pos: -26.5,-6.5 + parent: 1 + type: Transform + - uid: 3888 + components: + - pos: -26.5,-7.5 + parent: 1 + type: Transform + - uid: 3890 + components: + - pos: -25.5,-7.5 + parent: 1 + type: Transform + - uid: 3891 + components: + - pos: -24.5,-7.5 + parent: 1 + type: Transform + - uid: 3892 + components: + - pos: -23.5,-7.5 + parent: 1 + type: Transform + - uid: 3893 + components: + - pos: -22.5,-7.5 + parent: 1 + type: Transform + - uid: 3894 + components: + - pos: -21.5,-7.5 + parent: 1 + type: Transform + - uid: 3895 + components: + - pos: -20.5,-7.5 + parent: 1 + type: Transform + - uid: 3896 + components: + - pos: -20.5,-8.5 + parent: 1 + type: Transform + - uid: 3897 + components: + - pos: -20.5,-9.5 + parent: 1 + type: Transform + - uid: 3898 + components: + - pos: -20.5,-10.5 + parent: 1 + type: Transform + - uid: 3899 + components: + - pos: -20.5,-11.5 + parent: 1 + type: Transform + - uid: 3900 + components: + - pos: -20.5,-12.5 + parent: 1 + type: Transform + - uid: 3901 + components: + - pos: -24.5,-8.5 + parent: 1 + type: Transform + - uid: 3902 + components: + - pos: -24.5,-9.5 + parent: 1 + type: Transform + - uid: 4098 + components: + - pos: -21.5,-6.5 + parent: 1 + type: Transform + - uid: 4254 + components: + - pos: -22.5,29.5 + parent: 1 + type: Transform + - uid: 4255 + components: + - pos: -21.5,29.5 + parent: 1 + type: Transform + - uid: 4256 + components: + - pos: -20.5,29.5 + parent: 1 + type: Transform + - uid: 4342 + components: + - pos: -41.5,12.5 + parent: 1 + type: Transform + - uid: 4343 + components: + - pos: -41.5,13.5 + parent: 1 + type: Transform + - uid: 4344 + components: + - pos: -41.5,14.5 + parent: 1 + type: Transform + - uid: 4345 + components: + - pos: -41.5,11.5 + parent: 1 + type: Transform + - uid: 4346 + components: + - pos: -41.5,10.5 + parent: 1 + type: Transform + - uid: 4347 + components: + - pos: -41.5,9.5 + parent: 1 + type: Transform + - uid: 4348 + components: + - pos: -41.5,8.5 + parent: 1 + type: Transform + - uid: 4424 + components: + - pos: -41.5,7.5 + parent: 1 + type: Transform + - uid: 4425 + components: + - pos: -41.5,6.5 + parent: 1 + type: Transform + - uid: 4426 + components: + - pos: -41.5,5.5 + parent: 1 + type: Transform + - uid: 4427 + components: + - pos: -42.5,5.5 + parent: 1 + type: Transform + - uid: 4428 + components: + - pos: -43.5,5.5 + parent: 1 + type: Transform + - uid: 4429 + components: + - pos: -44.5,5.5 + parent: 1 + type: Transform + - uid: 4434 + components: + - pos: -50.5,7.5 + parent: 1 + type: Transform + - uid: 4435 + components: + - pos: -42.5,14.5 + parent: 1 + type: Transform + - uid: 4436 + components: + - pos: -43.5,14.5 + parent: 1 + type: Transform + - uid: 4437 + components: + - pos: -44.5,14.5 + parent: 1 + type: Transform + - uid: 4438 + components: + - pos: -45.5,14.5 + parent: 1 + type: Transform + - uid: 4439 + components: + - pos: -46.5,14.5 + parent: 1 + type: Transform + - uid: 4440 + components: + - pos: -47.5,14.5 + parent: 1 + type: Transform + - uid: 4441 + components: + - pos: -48.5,14.5 + parent: 1 + type: Transform + - uid: 4442 + components: + - pos: -49.5,14.5 + parent: 1 + type: Transform + - uid: 4443 + components: + - pos: -40.5,20.5 + parent: 1 + type: Transform + - uid: 4444 + components: + - pos: -40.5,21.5 + parent: 1 + type: Transform + - uid: 4445 + components: + - pos: -41.5,21.5 + parent: 1 + type: Transform + - uid: 4446 + components: + - pos: -42.5,21.5 + parent: 1 + type: Transform + - uid: 4447 + components: + - pos: -43.5,21.5 + parent: 1 + type: Transform + - uid: 4448 + components: + - pos: -44.5,21.5 + parent: 1 + type: Transform + - uid: 4449 + components: + - pos: -45.5,21.5 + parent: 1 + type: Transform + - uid: 4450 + components: + - pos: -46.5,21.5 + parent: 1 + type: Transform + - uid: 4451 + components: + - pos: -47.5,21.5 + parent: 1 + type: Transform + - uid: 4452 + components: + - pos: -48.5,21.5 + parent: 1 + type: Transform + - uid: 4453 + components: + - pos: -49.5,21.5 + parent: 1 + type: Transform + - uid: 4454 + components: + - pos: -44.5,22.5 + parent: 1 + type: Transform + - uid: 4455 + components: + - pos: -44.5,23.5 + parent: 1 + type: Transform + - uid: 4456 + components: + - pos: -44.5,24.5 + parent: 1 + type: Transform + - uid: 4457 + components: + - pos: -44.5,25.5 + parent: 1 + type: Transform + - uid: 4458 + components: + - pos: -44.5,26.5 + parent: 1 + type: Transform + - uid: 4459 + components: + - pos: -44.5,27.5 + parent: 1 + type: Transform + - uid: 4460 + components: + - pos: -39.5,21.5 + parent: 1 + type: Transform + - uid: 4461 + components: + - pos: -38.5,21.5 + parent: 1 + type: Transform + - uid: 4462 + components: + - pos: -37.5,21.5 + parent: 1 + type: Transform + - uid: 4463 + components: + - pos: -37.5,20.5 + parent: 1 + type: Transform + - uid: 4464 + components: + - pos: -37.5,19.5 + parent: 1 + type: Transform + - uid: 4465 + components: + - pos: -37.5,18.5 + parent: 1 + type: Transform + - uid: 4466 + components: + - pos: -37.5,17.5 + parent: 1 + type: Transform + - uid: 4467 + components: + - pos: -37.5,16.5 + parent: 1 + type: Transform + - uid: 4468 + components: + - pos: -37.5,15.5 + parent: 1 + type: Transform + - uid: 4469 + components: + - pos: -37.5,14.5 + parent: 1 + type: Transform + - uid: 4470 + components: + - pos: -37.5,13.5 + parent: 1 + type: Transform + - uid: 4471 + components: + - pos: -37.5,12.5 + parent: 1 + type: Transform + - uid: 4472 + components: + - pos: -37.5,11.5 + parent: 1 + type: Transform + - uid: 4473 + components: + - pos: -37.5,10.5 + parent: 1 + type: Transform + - uid: 4474 + components: + - pos: -37.5,9.5 + parent: 1 + type: Transform + - uid: 4475 + components: + - pos: -37.5,8.5 + parent: 1 + type: Transform + - uid: 4476 + components: + - pos: -37.5,22.5 + parent: 1 + type: Transform + - uid: 4477 + components: + - pos: -37.5,23.5 + parent: 1 + type: Transform + - uid: 4478 + components: + - pos: -37.5,24.5 + parent: 1 + type: Transform + - uid: 4479 + components: + - pos: -37.5,25.5 + parent: 1 + type: Transform + - uid: 4480 + components: + - pos: -37.5,26.5 + parent: 1 + type: Transform + - uid: 4481 + components: + - pos: -37.5,27.5 + parent: 1 + type: Transform + - uid: 4482 + components: + - pos: -37.5,28.5 + parent: 1 + type: Transform + - uid: 4483 + components: + - pos: -37.5,29.5 + parent: 1 + type: Transform + - uid: 4484 + components: + - pos: -37.5,30.5 + parent: 1 + type: Transform + - uid: 4485 + components: + - pos: -42.5,20.5 + parent: 1 + type: Transform + - uid: 4486 + components: + - pos: -42.5,19.5 + parent: 1 + type: Transform + - uid: 4487 + components: + - pos: -42.5,18.5 + parent: 1 + type: Transform + - uid: 4488 + components: + - pos: -45.5,20.5 + parent: 1 + type: Transform + - uid: 4489 + components: + - pos: -45.5,19.5 + parent: 1 + type: Transform + - uid: 4490 + components: + - pos: -45.5,18.5 + parent: 1 + type: Transform + - uid: 4491 + components: + - pos: -48.5,20.5 + parent: 1 + type: Transform + - uid: 4492 + components: + - pos: -48.5,19.5 + parent: 1 + type: Transform + - uid: 4493 + components: + - pos: -48.5,18.5 + parent: 1 + type: Transform + - uid: 4524 + components: + - pos: -56.5,-7.5 + parent: 1 + type: Transform + - uid: 4543 + components: + - pos: -50.5,8.5 + parent: 1 + type: Transform + - uid: 4547 + components: + - pos: -47.5,11.5 + parent: 1 + type: Transform + - uid: 4548 + components: + - pos: -50.5,11.5 + parent: 1 + type: Transform + - uid: 4593 + components: + - pos: 21.5,37.5 + parent: 1 + type: Transform + - uid: 4599 + components: + - pos: -50.5,9.5 + parent: 1 + type: Transform + - uid: 4601 + components: + - pos: -49.5,9.5 + parent: 1 + type: Transform + - uid: 4608 + components: + - pos: -57.5,-8.5 + parent: 1 + type: Transform + - uid: 4612 + components: + - pos: -46.5,27.5 + parent: 1 + type: Transform + - uid: 4613 + components: + - pos: -47.5,27.5 + parent: 1 + type: Transform + - uid: 4614 + components: + - pos: -48.5,27.5 + parent: 1 + type: Transform + - uid: 4615 + components: + - pos: -49.5,27.5 + parent: 1 + type: Transform + - uid: 4616 + components: + - pos: -50.5,27.5 + parent: 1 + type: Transform + - uid: 4617 + components: + - pos: -51.5,27.5 + parent: 1 + type: Transform + - uid: 4618 + components: + - pos: -52.5,27.5 + parent: 1 + type: Transform + - uid: 4619 + components: + - pos: -53.5,27.5 + parent: 1 + type: Transform + - uid: 4620 + components: + - pos: -48.5,29.5 + parent: 1 + type: Transform + - uid: 4621 + components: + - pos: -48.5,28.5 + parent: 1 + type: Transform + - uid: 4622 + components: + - pos: -48.5,30.5 + parent: 1 + type: Transform + - uid: 4623 + components: + - pos: -48.5,31.5 + parent: 1 + type: Transform + - uid: 4624 + components: + - pos: -48.5,32.5 + parent: 1 + type: Transform + - uid: 4625 + components: + - pos: -44.5,28.5 + parent: 1 + type: Transform + - uid: 4626 + components: + - pos: -44.5,29.5 + parent: 1 + type: Transform + - uid: 4627 + components: + - pos: -44.5,30.5 + parent: 1 + type: Transform + - uid: 4628 + components: + - pos: -44.5,31.5 + parent: 1 + type: Transform + - uid: 4629 + components: + - pos: -44.5,32.5 + parent: 1 + type: Transform + - uid: 4630 + components: + - pos: -37.5,31.5 + parent: 1 + type: Transform + - uid: 4631 + components: + - pos: -37.5,32.5 + parent: 1 + type: Transform + - uid: 4632 + components: + - pos: -38.5,32.5 + parent: 1 + type: Transform + - uid: 4633 + components: + - pos: -39.5,32.5 + parent: 1 + type: Transform + - uid: 4634 + components: + - pos: -40.5,32.5 + parent: 1 + type: Transform + - uid: 4635 + components: + - pos: -43.5,32.5 + parent: 1 + type: Transform + - uid: 4636 + components: + - pos: -42.5,32.5 + parent: 1 + type: Transform + - uid: 4637 + components: + - pos: -29.5,31.5 + parent: 1 + type: Transform + - uid: 4638 + components: + - pos: -29.5,32.5 + parent: 1 + type: Transform + - uid: 4639 + components: + - pos: -47.5,32.5 + parent: 1 + type: Transform + - uid: 4640 + components: + - pos: -30.5,32.5 + parent: 1 + type: Transform + - uid: 4641 + components: + - pos: -31.5,32.5 + parent: 1 + type: Transform + - uid: 4642 + components: + - pos: -32.5,32.5 + parent: 1 + type: Transform + - uid: 4643 + components: + - pos: -33.5,32.5 + parent: 1 + type: Transform + - uid: 4644 + components: + - pos: -34.5,32.5 + parent: 1 + type: Transform + - uid: 4645 + components: + - pos: -35.5,32.5 + parent: 1 + type: Transform + - uid: 4646 + components: + - pos: -28.5,32.5 + parent: 1 + type: Transform + - uid: 4647 + components: + - pos: -27.5,32.5 + parent: 1 + type: Transform + - uid: 4648 + components: + - pos: -26.5,32.5 + parent: 1 + type: Transform + - uid: 4649 + components: + - pos: -25.5,32.5 + parent: 1 + type: Transform + - uid: 4650 + components: + - pos: -46.5,32.5 + parent: 1 + type: Transform + - uid: 4651 + components: + - pos: -49.5,32.5 + parent: 1 + type: Transform + - uid: 4652 + components: + - pos: -50.5,32.5 + parent: 1 + type: Transform + - uid: 4653 + components: + - pos: -51.5,32.5 + parent: 1 + type: Transform + - uid: 4654 + components: + - pos: -52.5,32.5 + parent: 1 + type: Transform + - uid: 4655 + components: + - pos: -53.5,32.5 + parent: 1 + type: Transform + - uid: 4656 + components: + - pos: -54.5,32.5 + parent: 1 + type: Transform + - uid: 4657 + components: + - pos: -55.5,32.5 + parent: 1 + type: Transform + - uid: 4658 + components: + - pos: -52.5,14.5 + parent: 1 + type: Transform + - uid: 4659 + components: + - pos: -53.5,14.5 + parent: 1 + type: Transform + - uid: 4660 + components: + - pos: -54.5,14.5 + parent: 1 + type: Transform + - uid: 4661 + components: + - pos: -55.5,14.5 + parent: 1 + type: Transform + - uid: 4662 + components: + - pos: -56.5,14.5 + parent: 1 + type: Transform + - uid: 4663 + components: + - pos: -57.5,14.5 + parent: 1 + type: Transform + - uid: 4664 + components: + - pos: -57.5,15.5 + parent: 1 + type: Transform + - uid: 4665 + components: + - pos: -57.5,15.5 + parent: 1 + type: Transform + - uid: 4666 + components: + - pos: -57.5,16.5 + parent: 1 + type: Transform + - uid: 4667 + components: + - pos: -57.5,17.5 + parent: 1 + type: Transform + - uid: 4668 + components: + - pos: -57.5,18.5 + parent: 1 + type: Transform + - uid: 4669 + components: + - pos: -57.5,19.5 + parent: 1 + type: Transform + - uid: 4670 + components: + - pos: -57.5,20.5 + parent: 1 + type: Transform + - uid: 4671 + components: + - pos: -57.5,21.5 + parent: 1 + type: Transform + - uid: 4672 + components: + - pos: -57.5,22.5 + parent: 1 + type: Transform + - uid: 4673 + components: + - pos: -57.5,23.5 + parent: 1 + type: Transform + - uid: 4674 + components: + - pos: -57.5,24.5 + parent: 1 + type: Transform + - uid: 4675 + components: + - pos: -57.5,25.5 + parent: 1 + type: Transform + - uid: 4676 + components: + - pos: -56.5,32.5 + parent: 1 + type: Transform + - uid: 4677 + components: + - pos: -57.5,32.5 + parent: 1 + type: Transform + - uid: 4678 + components: + - pos: -57.5,31.5 + parent: 1 + type: Transform + - uid: 4679 + components: + - pos: -57.5,30.5 + parent: 1 + type: Transform + - uid: 4680 + components: + - pos: -57.5,29.5 + parent: 1 + type: Transform + - uid: 4681 + components: + - pos: -51.5,14.5 + parent: 1 + type: Transform + - uid: 4682 + components: + - pos: -53.5,15.5 + parent: 1 + type: Transform + - uid: 4683 + components: + - pos: -53.5,16.5 + parent: 1 + type: Transform + - uid: 4684 + components: + - pos: -53.5,17.5 + parent: 1 + type: Transform + - uid: 4685 + components: + - pos: -53.5,18.5 + parent: 1 + type: Transform + - uid: 4686 + components: + - pos: -53.5,19.5 + parent: 1 + type: Transform + - uid: 4687 + components: + - pos: -53.5,20.5 + parent: 1 + type: Transform + - uid: 4688 + components: + - pos: -57.5,13.5 + parent: 1 + type: Transform + - uid: 4689 + components: + - pos: -57.5,12.5 + parent: 1 + type: Transform + - uid: 4690 + components: + - pos: -57.5,11.5 + parent: 1 + type: Transform + - uid: 4691 + components: + - pos: -57.5,10.5 + parent: 1 + type: Transform + - uid: 4692 + components: + - pos: -57.5,9.5 + parent: 1 + type: Transform + - uid: 4693 + components: + - pos: -57.5,8.5 + parent: 1 + type: Transform + - uid: 4700 + components: + - pos: -45.5,9.5 + parent: 1 + type: Transform + - uid: 4701 + components: + - pos: -46.5,9.5 + parent: 1 + type: Transform + - uid: 4702 + components: + - pos: -47.5,9.5 + parent: 1 + type: Transform + - uid: 4704 + components: + - pos: -48.5,9.5 + parent: 1 + type: Transform + - uid: 4713 + components: + - pos: 20.5,40.5 + parent: 1 + type: Transform + - uid: 4714 + components: + - pos: 20.5,43.5 + parent: 1 + type: Transform + - uid: 4715 + components: + - pos: 20.5,42.5 + parent: 1 + type: Transform + - uid: 4716 + components: + - pos: -47.5,5.5 + parent: 1 + type: Transform + - uid: 4717 + components: + - pos: -48.5,5.5 + parent: 1 + type: Transform + - uid: 4718 + components: + - pos: -46.5,5.5 + parent: 1 + type: Transform + - uid: 4719 + components: + - pos: -49.5,5.5 + parent: 1 + type: Transform + - uid: 4720 + components: + - pos: -50.5,5.5 + parent: 1 + type: Transform + - uid: 4721 + components: + - pos: -51.5,5.5 + parent: 1 + type: Transform + - uid: 4722 + components: + - pos: -52.5,5.5 + parent: 1 + type: Transform + - uid: 4723 + components: + - pos: -53.5,5.5 + parent: 1 + type: Transform + - uid: 4724 + components: + - pos: -54.5,5.5 + parent: 1 + type: Transform + - uid: 4725 + components: + - pos: -57.5,4.5 + parent: 1 + type: Transform + - uid: 4726 + components: + - pos: -57.5,5.5 + parent: 1 + type: Transform + - uid: 4727 + components: + - pos: -58.5,5.5 + parent: 1 + type: Transform + - uid: 4728 + components: + - pos: 20.5,41.5 + parent: 1 + type: Transform + - uid: 4731 + components: + - pos: 21.5,38.5 + parent: 1 + type: Transform + - uid: 4742 + components: + - pos: -73.5,-14.5 + parent: 1 + type: Transform + - uid: 4759 + components: + - pos: -66.5,-9.5 + parent: 1 + type: Transform + - uid: 4783 + components: + - pos: -65.5,-13.5 + parent: 1 + type: Transform + - uid: 4785 + components: + - pos: -73.5,-11.5 + parent: 1 + type: Transform + - uid: 4786 + components: + - pos: -62.5,-10.5 + parent: 1 + type: Transform + - uid: 4787 + components: + - pos: -63.5,-10.5 + parent: 1 + type: Transform + - uid: 4788 + components: + - pos: -73.5,4.5 + parent: 1 + type: Transform + - uid: 4789 + components: + - pos: -73.5,-12.5 + parent: 1 + type: Transform + - uid: 4790 + components: + - pos: -66.5,4.5 + parent: 1 + type: Transform + - uid: 4791 + components: + - pos: -66.5,-10.5 + parent: 1 + type: Transform + - uid: 4794 + components: + - pos: -65.5,-11.5 + parent: 1 + type: Transform + - uid: 4795 + components: + - pos: -65.5,-12.5 + parent: 1 + type: Transform + - uid: 4796 + components: + - pos: -73.5,-9.5 + parent: 1 + type: Transform + - uid: 4797 + components: + - pos: -67.5,-10.5 + parent: 1 + type: Transform + - uid: 4798 + components: + - pos: -68.5,-10.5 + parent: 1 + type: Transform + - uid: 4806 + components: + - pos: -73.5,-13.5 + parent: 1 + type: Transform + - uid: 4811 + components: + - pos: -75.5,-10.5 + parent: 1 + type: Transform + - uid: 4812 + components: + - pos: -76.5,-10.5 + parent: 1 + type: Transform + - uid: 4813 + components: + - pos: -73.5,-10.5 + parent: 1 + type: Transform + - uid: 4814 + components: + - pos: -74.5,-10.5 + parent: 1 + type: Transform + - uid: 4815 + components: + - pos: -77.5,-10.5 + parent: 1 + type: Transform + - uid: 4842 + components: + - pos: -69.5,-10.5 + parent: 1 + type: Transform + - uid: 4869 + components: + - pos: -71.5,-10.5 + parent: 1 + type: Transform + - uid: 4870 + components: + - pos: -64.5,-10.5 + parent: 1 + type: Transform + - uid: 4872 + components: + - pos: -70.5,-10.5 + parent: 1 + type: Transform + - uid: 4874 + components: + - pos: -65.5,-10.5 + parent: 1 + type: Transform + - uid: 4875 + components: + - pos: -72.5,-10.5 + parent: 1 + type: Transform + - uid: 4879 + components: + - pos: -57.5,-10.5 + parent: 1 + type: Transform + - uid: 4880 + components: + - pos: -58.5,-10.5 + parent: 1 + type: Transform + - uid: 4881 + components: + - pos: -59.5,-10.5 + parent: 1 + type: Transform + - uid: 4904 + components: + - pos: -65.5,-14.5 + parent: 1 + type: Transform + - uid: 4958 + components: + - pos: -60.5,-10.5 + parent: 1 + type: Transform + - uid: 5102 + components: + - pos: -55.5,-7.5 + parent: 1 + type: Transform + - uid: 5106 + components: + - pos: -57.5,-9.5 + parent: 1 + type: Transform + - uid: 5127 + components: + - pos: -57.5,-7.5 + parent: 1 + type: Transform + - uid: 5128 + components: + - pos: -57.5,-6.5 + parent: 1 + type: Transform + - uid: 5129 + components: + - pos: -57.5,-5.5 + parent: 1 + type: Transform + - uid: 5130 + components: + - pos: -57.5,-4.5 + parent: 1 + type: Transform + - uid: 5131 + components: + - pos: -57.5,-3.5 + parent: 1 + type: Transform + - uid: 5132 + components: + - pos: -57.5,-2.5 + parent: 1 + type: Transform + - uid: 5133 + components: + - pos: -57.5,-1.5 + parent: 1 + type: Transform + - uid: 5134 + components: + - pos: -57.5,-0.5 + parent: 1 + type: Transform + - uid: 5135 + components: + - pos: -57.5,0.5 + parent: 1 + type: Transform + - uid: 5136 + components: + - pos: -57.5,1.5 + parent: 1 + type: Transform + - uid: 5137 + components: + - pos: -57.5,2.5 + parent: 1 + type: Transform + - uid: 5138 + components: + - pos: -57.5,3.5 + parent: 1 + type: Transform + - uid: 5139 + components: + - pos: -59.5,5.5 + parent: 1 + type: Transform + - uid: 5140 + components: + - pos: -60.5,5.5 + parent: 1 + type: Transform + - uid: 5141 + components: + - pos: -61.5,5.5 + parent: 1 + type: Transform + - uid: 5142 + components: + - pos: -62.5,5.5 + parent: 1 + type: Transform + - uid: 5143 + components: + - pos: -63.5,5.5 + parent: 1 + type: Transform + - uid: 5144 + components: + - pos: -64.5,5.5 + parent: 1 + type: Transform + - uid: 5145 + components: + - pos: -65.5,5.5 + parent: 1 + type: Transform + - uid: 5146 + components: + - pos: -66.5,5.5 + parent: 1 + type: Transform + - uid: 5147 + components: + - pos: -67.5,5.5 + parent: 1 + type: Transform + - uid: 5148 + components: + - pos: -68.5,5.5 + parent: 1 + type: Transform + - uid: 5149 + components: + - pos: -69.5,5.5 + parent: 1 + type: Transform + - uid: 5150 + components: + - pos: -70.5,5.5 + parent: 1 + type: Transform + - uid: 5151 + components: + - pos: -71.5,5.5 + parent: 1 + type: Transform + - uid: 5152 + components: + - pos: -72.5,5.5 + parent: 1 + type: Transform + - uid: 5153 + components: + - pos: -73.5,5.5 + parent: 1 + type: Transform + - uid: 5154 + components: + - pos: -74.5,5.5 + parent: 1 + type: Transform + - uid: 5155 + components: + - pos: -54.5,-7.5 + parent: 1 + type: Transform + - uid: 5156 + components: + - pos: -53.5,-7.5 + parent: 1 + type: Transform + - uid: 5157 + components: + - pos: -52.5,-7.5 + parent: 1 + type: Transform + - uid: 5158 + components: + - pos: -52.5,-6.5 + parent: 1 + type: Transform + - uid: 5159 + components: + - pos: -52.5,-5.5 + parent: 1 + type: Transform + - uid: 5160 + components: + - pos: -52.5,-4.5 + parent: 1 + type: Transform + - uid: 5161 + components: + - pos: -52.5,-3.5 + parent: 1 + type: Transform + - uid: 5162 + components: + - pos: -52.5,-2.5 + parent: 1 + type: Transform + - uid: 5163 + components: + - pos: -52.5,-1.5 + parent: 1 + type: Transform + - uid: 5195 + components: + - pos: 16.5,38.5 + parent: 1 + type: Transform + - uid: 5205 + components: + - pos: -50.5,26.5 + parent: 1 + type: Transform + - uid: 5206 + components: + - pos: -50.5,25.5 + parent: 1 + type: Transform + - uid: 5207 + components: + - pos: -50.5,24.5 + parent: 1 + type: Transform + - uid: 5311 + components: + - pos: 16.5,40.5 + parent: 1 + type: Transform + - uid: 5312 + components: + - pos: 19.5,39.5 + parent: 1 + type: Transform + - uid: 5313 + components: + - pos: 16.5,39.5 + parent: 1 + type: Transform + - uid: 5314 + components: + - pos: 16.5,41.5 + parent: 1 + type: Transform + - uid: 5322 + components: + - pos: 24.5,36.5 + parent: 1 + type: Transform + - uid: 5378 + components: + - pos: -35.5,-6.5 + parent: 1 + type: Transform + - uid: 5432 + components: + - pos: -21.5,-5.5 + parent: 1 + type: Transform + - uid: 5448 + components: + - pos: -21.5,-4.5 + parent: 1 + type: Transform + - uid: 5449 + components: + - pos: -21.5,-3.5 + parent: 1 + type: Transform + - uid: 5450 + components: + - pos: -21.5,-2.5 + parent: 1 + type: Transform + - uid: 5634 + components: + - pos: -54.5,9.5 + parent: 1 + type: Transform + - uid: 5661 + components: + - pos: -16.5,23.5 + parent: 1 + type: Transform + - uid: 5700 + components: + - pos: -30.5,23.5 + parent: 1 + type: Transform + - uid: 5701 + components: + - pos: -33.5,11.5 + parent: 1 + type: Transform + - uid: 5702 + components: + - pos: -33.5,12.5 + parent: 1 + type: Transform + - uid: 5703 + components: + - pos: -33.5,13.5 + parent: 1 + type: Transform + - uid: 5704 + components: + - pos: -29.5,15.5 + parent: 1 + type: Transform + - uid: 5705 + components: + - pos: -30.5,15.5 + parent: 1 + type: Transform + - uid: 5773 + components: + - pos: -53.5,48.5 + parent: 1 + type: Transform + - uid: 5805 + components: + - pos: 15.5,42.5 + parent: 1 + type: Transform + - uid: 5806 + components: + - pos: 15.5,41.5 + parent: 1 + type: Transform + - uid: 6199 + components: + - pos: 16.5,44.5 + parent: 1 + type: Transform + - uid: 6203 + components: + - pos: 13.5,51.5 + parent: 1 + type: Transform + - uid: 6205 + components: + - pos: 15.5,45.5 + parent: 1 + type: Transform + - uid: 6206 + components: + - pos: 15.5,44.5 + parent: 1 + type: Transform + - uid: 6207 + components: + - pos: 13.5,45.5 + parent: 1 + type: Transform + - uid: 6208 + components: + - pos: 12.5,45.5 + parent: 1 + type: Transform + - uid: 6209 + components: + - pos: 11.5,45.5 + parent: 1 + type: Transform + - uid: 6210 + components: + - pos: 10.5,45.5 + parent: 1 + type: Transform + - uid: 6211 + components: + - pos: 15.5,43.5 + parent: 1 + type: Transform + - uid: 6212 + components: + - pos: 8.5,48.5 + parent: 1 + type: Transform + - uid: 6214 + components: + - pos: 7.5,48.5 + parent: 1 + type: Transform + - uid: 6219 + components: + - pos: 9.5,48.5 + parent: 1 + type: Transform + - uid: 6220 + components: + - pos: 7.5,49.5 + parent: 1 + type: Transform + - uid: 6221 + components: + - pos: 7.5,47.5 + parent: 1 + type: Transform + - uid: 6222 + components: + - pos: 6.5,47.5 + parent: 1 + type: Transform + - uid: 6223 + components: + - pos: 7.5,49.5 + parent: 1 + type: Transform + - uid: 6224 + components: + - pos: 7.5,50.5 + parent: 1 + type: Transform + - uid: 6225 + components: + - pos: 7.5,51.5 + parent: 1 + type: Transform + - uid: 6227 + components: + - pos: 5.5,47.5 + parent: 1 + type: Transform + - uid: 6228 + components: + - pos: 4.5,47.5 + parent: 1 + type: Transform + - uid: 6229 + components: + - pos: 3.5,47.5 + parent: 1 + type: Transform + - uid: 6230 + components: + - pos: 3.5,48.5 + parent: 1 + type: Transform + - uid: 6231 + components: + - pos: 3.5,49.5 + parent: 1 + type: Transform + - uid: 6232 + components: + - pos: 3.5,50.5 + parent: 1 + type: Transform + - uid: 6233 + components: + - pos: 3.5,51.5 + parent: 1 + type: Transform + - uid: 6234 + components: + - pos: 2.5,47.5 + parent: 1 + type: Transform + - uid: 6235 + components: + - pos: 1.5,47.5 + parent: 1 + type: Transform + - uid: 6236 + components: + - pos: 0.5,47.5 + parent: 1 + type: Transform + - uid: 6237 + components: + - pos: -0.5,47.5 + parent: 1 + type: Transform + - uid: 6238 + components: + - pos: -0.5,48.5 + parent: 1 + type: Transform + - uid: 6239 + components: + - pos: -0.5,49.5 + parent: 1 + type: Transform + - uid: 6240 + components: + - pos: -0.5,50.5 + parent: 1 + type: Transform + - uid: 6241 + components: + - pos: -0.5,51.5 + parent: 1 + type: Transform + - uid: 6242 + components: + - pos: 16.5,49.5 + parent: 1 + type: Transform + - uid: 6246 + components: + - pos: 14.5,40.5 + parent: 1 + type: Transform + - uid: 6247 + components: + - pos: 13.5,40.5 + parent: 1 + type: Transform + - uid: 6248 + components: + - pos: 12.5,40.5 + parent: 1 + type: Transform + - uid: 6249 + components: + - pos: 11.5,40.5 + parent: 1 + type: Transform + - uid: 6250 + components: + - pos: 10.5,40.5 + parent: 1 + type: Transform + - uid: 6251 + components: + - pos: 15.5,40.5 + parent: 1 + type: Transform + - uid: 6252 + components: + - pos: 15.5,39.5 + parent: 1 + type: Transform + - uid: 6258 + components: + - pos: -52.5,9.5 + parent: 1 + type: Transform + - uid: 6260 + components: + - pos: -50.5,10.5 + parent: 1 + type: Transform + - uid: 6261 + components: + - pos: -47.5,10.5 + parent: 1 + type: Transform + - uid: 6262 + components: + - pos: -53.5,9.5 + parent: 1 + type: Transform + - uid: 6263 + components: + - pos: -51.5,9.5 + parent: 1 + type: Transform + - uid: 6271 + components: + - pos: 15.5,35.5 + parent: 1 + type: Transform + - uid: 6273 + components: + - pos: 17.5,35.5 + parent: 1 + type: Transform + - uid: 6274 + components: + - pos: 18.5,35.5 + parent: 1 + type: Transform + - uid: 6276 + components: + - pos: 20.5,35.5 + parent: 1 + type: Transform + - uid: 6278 + components: + - pos: 23.5,36.5 + parent: 1 + type: Transform + - uid: 6279 + components: + - pos: 23.5,35.5 + parent: 1 + type: Transform + - uid: 6280 + components: + - pos: 9.5,40.5 + parent: 1 + type: Transform + - uid: 6281 + components: + - pos: 8.5,40.5 + parent: 1 + type: Transform + - uid: 6282 + components: + - pos: -1.5,47.5 + parent: 1 + type: Transform + - uid: 6283 + components: + - pos: -2.5,47.5 + parent: 1 + type: Transform + - uid: 6284 + components: + - pos: -2.5,46.5 + parent: 1 + type: Transform + - uid: 6285 + components: + - pos: -2.5,45.5 + parent: 1 + type: Transform + - uid: 6286 + components: + - pos: -2.5,44.5 + parent: 1 + type: Transform + - uid: 6287 + components: + - pos: -2.5,43.5 + parent: 1 + type: Transform + - uid: 6288 + components: + - pos: -2.5,42.5 + parent: 1 + type: Transform + - uid: 6289 + components: + - pos: -3.5,38.5 + parent: 1 + type: Transform + - uid: 6290 + components: + - pos: -3.5,39.5 + parent: 1 + type: Transform + - uid: 6291 + components: + - pos: -3.5,40.5 + parent: 1 + type: Transform + - uid: 6293 + components: + - pos: -3.5,42.5 + parent: 1 + type: Transform + - uid: 6294 + components: + - pos: -3.5,37.5 + parent: 1 + type: Transform + - uid: 6295 + components: + - pos: -4.5,37.5 + parent: 1 + type: Transform + - uid: 6296 + components: + - pos: -5.5,37.5 + parent: 1 + type: Transform + - uid: 6297 + components: + - pos: -6.5,37.5 + parent: 1 + type: Transform + - uid: 6298 + components: + - pos: -7.5,37.5 + parent: 1 + type: Transform + - uid: 6299 + components: + - pos: -8.5,37.5 + parent: 1 + type: Transform + - uid: 6300 + components: + - pos: -9.5,37.5 + parent: 1 + type: Transform + - uid: 6301 + components: + - pos: -3.5,47.5 + parent: 1 + type: Transform + - uid: 6302 + components: + - pos: -4.5,47.5 + parent: 1 + type: Transform + - uid: 6315 + components: + - pos: 20.5,44.5 + parent: 1 + type: Transform + - uid: 6562 + components: + - pos: -4.5,57.5 + parent: 1 + type: Transform + - uid: 6563 + components: + - pos: -4.5,56.5 + parent: 1 + type: Transform + - uid: 6564 + components: + - pos: -4.5,55.5 + parent: 1 + type: Transform + - uid: 6565 + components: + - pos: -5.5,55.5 + parent: 1 + type: Transform + - uid: 6566 + components: + - pos: -6.5,55.5 + parent: 1 + type: Transform + - uid: 6567 + components: + - pos: -7.5,55.5 + parent: 1 + type: Transform + - uid: 6568 + components: + - pos: -8.5,55.5 + parent: 1 + type: Transform + - uid: 6569 + components: + - pos: -9.5,55.5 + parent: 1 + type: Transform + - uid: 6570 + components: + - pos: -10.5,55.5 + parent: 1 + type: Transform + - uid: 6571 + components: + - pos: -11.5,55.5 + parent: 1 + type: Transform + - uid: 6572 + components: + - pos: -12.5,55.5 + parent: 1 + type: Transform + - uid: 6573 + components: + - pos: -13.5,55.5 + parent: 1 + type: Transform + - uid: 6574 + components: + - pos: -14.5,55.5 + parent: 1 + type: Transform + - uid: 6575 + components: + - pos: -15.5,55.5 + parent: 1 + type: Transform + - uid: 6576 + components: + - pos: -16.5,55.5 + parent: 1 + type: Transform + - uid: 6577 + components: + - pos: -7.5,56.5 + parent: 1 + type: Transform + - uid: 6578 + components: + - pos: -7.5,57.5 + parent: 1 + type: Transform + - uid: 6579 + components: + - pos: -7.5,58.5 + parent: 1 + type: Transform + - uid: 6580 + components: + - pos: -7.5,59.5 + parent: 1 + type: Transform + - uid: 6581 + components: + - pos: -7.5,60.5 + parent: 1 + type: Transform + - uid: 6582 + components: + - pos: -16.5,54.5 + parent: 1 + type: Transform + - uid: 6583 + components: + - pos: -17.5,54.5 + parent: 1 + type: Transform + - uid: 6584 + components: + - pos: -18.5,54.5 + parent: 1 + type: Transform + - uid: 6585 + components: + - pos: -19.5,54.5 + parent: 1 + type: Transform + - uid: 6586 + components: + - pos: -20.5,54.5 + parent: 1 + type: Transform + - uid: 6587 + components: + - pos: -21.5,54.5 + parent: 1 + type: Transform + - uid: 6588 + components: + - pos: -22.5,54.5 + parent: 1 + type: Transform + - uid: 6589 + components: + - pos: -22.5,55.5 + parent: 1 + type: Transform + - uid: 6590 + components: + - pos: -15.5,56.5 + parent: 1 + type: Transform + - uid: 6591 + components: + - pos: -15.5,57.5 + parent: 1 + type: Transform + - uid: 6592 + components: + - pos: -15.5,58.5 + parent: 1 + type: Transform + - uid: 6593 + components: + - pos: -15.5,59.5 + parent: 1 + type: Transform + - uid: 6594 + components: + - pos: -15.5,60.5 + parent: 1 + type: Transform + - uid: 6595 + components: + - pos: -15.5,61.5 + parent: 1 + type: Transform + - uid: 6596 + components: + - pos: -15.5,62.5 + parent: 1 + type: Transform + - uid: 6597 + components: + - pos: -15.5,63.5 + parent: 1 + type: Transform + - uid: 6598 + components: + - pos: -15.5,64.5 + parent: 1 + type: Transform + - uid: 6599 + components: + - pos: -15.5,65.5 + parent: 1 + type: Transform + - uid: 6600 + components: + - pos: -16.5,64.5 + parent: 1 + type: Transform + - uid: 6601 + components: + - pos: -17.5,64.5 + parent: 1 + type: Transform + - uid: 6602 + components: + - pos: -18.5,64.5 + parent: 1 + type: Transform + - uid: 6603 + components: + - pos: -19.5,64.5 + parent: 1 + type: Transform + - uid: 6604 + components: + - pos: -16.5,60.5 + parent: 1 + type: Transform + - uid: 6605 + components: + - pos: -17.5,60.5 + parent: 1 + type: Transform + - uid: 6606 + components: + - pos: -18.5,60.5 + parent: 1 + type: Transform + - uid: 6607 + components: + - pos: -19.5,60.5 + parent: 1 + type: Transform + - uid: 6608 + components: + - pos: -20.5,60.5 + parent: 1 + type: Transform + - uid: 6609 + components: + - pos: -14.5,60.5 + parent: 1 + type: Transform + - uid: 6610 + components: + - pos: -13.5,60.5 + parent: 1 + type: Transform + - uid: 6611 + components: + - pos: -12.5,60.5 + parent: 1 + type: Transform + - uid: 6612 + components: + - pos: -14.5,64.5 + parent: 1 + type: Transform + - uid: 6613 + components: + - pos: -13.5,64.5 + parent: 1 + type: Transform + - uid: 6614 + components: + - pos: -12.5,64.5 + parent: 1 + type: Transform + - uid: 6615 + components: + - pos: -20.5,64.5 + parent: 1 + type: Transform + - uid: 7284 + components: + - pos: -43.5,55.5 + parent: 1 + type: Transform + - uid: 7401 + components: + - pos: 14.5,45.5 + parent: 1 + type: Transform + - uid: 7492 + components: + - pos: -3.5,41.5 + parent: 1 + type: Transform + - uid: 7744 + components: + - pos: -53.5,85.5 + parent: 1 + type: Transform + - uid: 7745 + components: + - pos: -52.5,85.5 + parent: 1 + type: Transform + - uid: 7746 + components: + - pos: -51.5,85.5 + parent: 1 + type: Transform + - uid: 7747 + components: + - pos: -51.5,86.5 + parent: 1 + type: Transform + - uid: 7748 + components: + - pos: -51.5,87.5 + parent: 1 + type: Transform + - uid: 7749 + components: + - pos: -51.5,88.5 + parent: 1 + type: Transform + - uid: 7750 + components: + - pos: -51.5,89.5 + parent: 1 + type: Transform + - uid: 7751 + components: + - pos: -51.5,84.5 + parent: 1 + type: Transform + - uid: 7752 + components: + - pos: -51.5,83.5 + parent: 1 + type: Transform + - uid: 7753 + components: + - pos: -51.5,82.5 + parent: 1 + type: Transform + - uid: 7754 + components: + - pos: -52.5,82.5 + parent: 1 + type: Transform + - uid: 7755 + components: + - pos: -50.5,81.5 + parent: 1 + type: Transform + - uid: 7756 + components: + - pos: -50.5,82.5 + parent: 1 + type: Transform + - uid: 7757 + components: + - pos: -52.5,79.5 + parent: 1 + type: Transform + - uid: 7758 + components: + - pos: -52.5,78.5 + parent: 1 + type: Transform + - uid: 7759 + components: + - pos: -52.5,80.5 + parent: 1 + type: Transform + - uid: 7760 + components: + - pos: -52.5,81.5 + parent: 1 + type: Transform + - uid: 7761 + components: + - pos: -50.5,80.5 + parent: 1 + type: Transform + - uid: 7762 + components: + - pos: -50.5,79.5 + parent: 1 + type: Transform + - uid: 7763 + components: + - pos: -50.5,78.5 + parent: 1 + type: Transform + - uid: 7764 + components: + - pos: -53.5,79.5 + parent: 1 + type: Transform + - uid: 7765 + components: + - pos: -52.5,89.5 + parent: 1 + type: Transform + - uid: 7766 + components: + - pos: -53.5,89.5 + parent: 1 + type: Transform + - uid: 7767 + components: + - pos: -54.5,89.5 + parent: 1 + type: Transform + - uid: 7768 + components: + - pos: -55.5,89.5 + parent: 1 + type: Transform + - uid: 7769 + components: + - pos: -56.5,89.5 + parent: 1 + type: Transform + - uid: 7770 + components: + - pos: -57.5,89.5 + parent: 1 + type: Transform + - uid: 7771 + components: + - pos: -58.5,89.5 + parent: 1 + type: Transform + - uid: 7772 + components: + - pos: -59.5,89.5 + parent: 1 + type: Transform + - uid: 7773 + components: + - pos: -52.5,83.5 + parent: 1 + type: Transform + - uid: 7774 + components: + - pos: -59.5,84.5 + parent: 1 + type: Transform + - uid: 7775 + components: + - pos: -53.5,83.5 + parent: 1 + type: Transform + - uid: 7776 + components: + - pos: -59.5,87.5 + parent: 1 + type: Transform + - uid: 7777 + components: + - pos: -54.5,83.5 + parent: 1 + type: Transform + - uid: 7778 + components: + - pos: -59.5,85.5 + parent: 1 + type: Transform + - uid: 7779 + components: + - pos: -55.5,83.5 + parent: 1 + type: Transform + - uid: 7780 + components: + - pos: -59.5,86.5 + parent: 1 + type: Transform + - uid: 7781 + components: + - pos: -56.5,83.5 + parent: 1 + type: Transform + - uid: 7782 + components: + - pos: -59.5,88.5 + parent: 1 + type: Transform + - uid: 7783 + components: + - pos: -57.5,83.5 + parent: 1 + type: Transform + - uid: 7784 + components: + - pos: -62.5,84.5 + parent: 1 + type: Transform + - uid: 7785 + components: + - pos: -58.5,83.5 + parent: 1 + type: Transform + - uid: 7786 + components: + - pos: -63.5,84.5 + parent: 1 + type: Transform + - uid: 7787 + components: + - pos: -59.5,83.5 + parent: 1 + type: Transform + - uid: 7788 + components: + - pos: -60.5,84.5 + parent: 1 + type: Transform + - uid: 7789 + components: + - pos: -61.5,84.5 + parent: 1 + type: Transform + - uid: 7790 + components: + - pos: -63.5,83.5 + parent: 1 + type: Transform + - uid: 7791 + components: + - pos: -63.5,85.5 + parent: 1 + type: Transform + - uid: 7792 + components: + - pos: -59.5,82.5 + parent: 1 + type: Transform + - uid: 7793 + components: + - pos: -60.5,82.5 + parent: 1 + type: Transform + - uid: 7794 + components: + - pos: -61.5,82.5 + parent: 1 + type: Transform + - uid: 7795 + components: + - pos: -58.5,82.5 + parent: 1 + type: Transform + - uid: 7796 + components: + - pos: -60.5,90.5 + parent: 1 + type: Transform + - uid: 7797 + components: + - pos: -59.5,90.5 + parent: 1 + type: Transform + - uid: 7798 + components: + - pos: -58.5,90.5 + parent: 1 + type: Transform + - uid: 7799 + components: + - pos: -51.5,90.5 + parent: 1 + type: Transform + - uid: 7800 + components: + - pos: -51.5,91.5 + parent: 1 + type: Transform + - uid: 7801 + components: + - pos: -50.5,88.5 + parent: 1 + type: Transform + - uid: 7802 + components: + - pos: -49.5,88.5 + parent: 1 + type: Transform + - uid: 7803 + components: + - pos: -49.5,87.5 + parent: 1 + type: Transform + - uid: 7804 + components: + - pos: -49.5,86.5 + parent: 1 + type: Transform + - uid: 7805 + components: + - pos: -49.5,85.5 + parent: 1 + type: Transform + - uid: 7806 + components: + - pos: -49.5,84.5 + parent: 1 + type: Transform + - uid: 7807 + components: + - pos: -49.5,83.5 + parent: 1 + type: Transform + - uid: 7920 + components: + - pos: -42.5,55.5 + parent: 1 + type: Transform + - uid: 8347 + components: + - pos: -56.5,52.5 + parent: 1 + type: Transform + - uid: 8348 + components: + - pos: -56.5,51.5 + parent: 1 + type: Transform + - uid: 8349 + components: + - pos: -56.5,53.5 + parent: 1 + type: Transform + - uid: 8378 + components: + - pos: -58.5,56.5 + parent: 1 + type: Transform + - uid: 8379 + components: + - pos: -57.5,56.5 + parent: 1 + type: Transform + - uid: 8380 + components: + - pos: -56.5,56.5 + parent: 1 + type: Transform + - uid: 8381 + components: + - pos: -55.5,56.5 + parent: 1 + type: Transform + - uid: 8382 + components: + - pos: -54.5,56.5 + parent: 1 + type: Transform + - uid: 8383 + components: + - pos: -54.5,55.5 + parent: 1 + type: Transform + - uid: 8384 + components: + - pos: -54.5,54.5 + parent: 1 + type: Transform + - uid: 8385 + components: + - pos: -50.5,49.5 + parent: 1 + type: Transform + - uid: 8386 + components: + - pos: -50.5,48.5 + parent: 1 + type: Transform + - uid: 8387 + components: + - pos: -51.5,48.5 + parent: 1 + type: Transform + - uid: 8388 + components: + - pos: -53.5,52.5 + parent: 1 + type: Transform + - uid: 8389 + components: + - pos: -53.5,53.5 + parent: 1 + type: Transform + - uid: 8390 + components: + - pos: -55.5,54.5 + parent: 1 + type: Transform + - uid: 8391 + components: + - pos: -56.5,54.5 + parent: 1 + type: Transform + - uid: 8392 + components: + - pos: -57.5,54.5 + parent: 1 + type: Transform + - uid: 8393 + components: + - pos: -58.5,54.5 + parent: 1 + type: Transform + - uid: 8394 + components: + - pos: -59.5,54.5 + parent: 1 + type: Transform + - uid: 8395 + components: + - pos: -60.5,54.5 + parent: 1 + type: Transform + - uid: 8396 + components: + - pos: -61.5,54.5 + parent: 1 + type: Transform + - uid: 8397 + components: + - pos: -62.5,54.5 + parent: 1 + type: Transform + - uid: 8398 + components: + - pos: -63.5,54.5 + parent: 1 + type: Transform + - uid: 8399 + components: + - pos: -64.5,54.5 + parent: 1 + type: Transform + - uid: 8400 + components: + - pos: -61.5,53.5 + parent: 1 + type: Transform + - uid: 8401 + components: + - pos: -61.5,52.5 + parent: 1 + type: Transform + - uid: 8402 + components: + - pos: -61.5,51.5 + parent: 1 + type: Transform + - uid: 8403 + components: + - pos: -61.5,50.5 + parent: 1 + type: Transform + - uid: 8404 + components: + - pos: -53.5,54.5 + parent: 1 + type: Transform + - uid: 8405 + components: + - pos: -52.5,54.5 + parent: 1 + type: Transform + - uid: 8406 + components: + - pos: -51.5,54.5 + parent: 1 + type: Transform + - uid: 8407 + components: + - pos: -50.5,54.5 + parent: 1 + type: Transform + - uid: 8408 + components: + - pos: -49.5,54.5 + parent: 1 + type: Transform + - uid: 8409 + components: + - pos: -48.5,54.5 + parent: 1 + type: Transform + - uid: 8410 + components: + - pos: -47.5,54.5 + parent: 1 + type: Transform + - uid: 8411 + components: + - pos: -47.5,53.5 + parent: 1 + type: Transform + - uid: 8412 + components: + - pos: -47.5,52.5 + parent: 1 + type: Transform + - uid: 8413 + components: + - pos: -47.5,51.5 + parent: 1 + type: Transform + - uid: 8414 + components: + - pos: -47.5,50.5 + parent: 1 + type: Transform + - uid: 8415 + components: + - pos: -50.5,50.5 + parent: 1 + type: Transform + - uid: 8416 + components: + - pos: -50.5,51.5 + parent: 1 + type: Transform + - uid: 8417 + components: + - pos: -50.5,52.5 + parent: 1 + type: Transform + - uid: 8418 + components: + - pos: -50.5,53.5 + parent: 1 + type: Transform + - uid: 8419 + components: + - pos: -53.5,51.5 + parent: 1 + type: Transform + - uid: 8420 + components: + - pos: -53.5,50.5 + parent: 1 + type: Transform + - uid: 8421 + components: + - pos: -53.5,49.5 + parent: 1 + type: Transform + - uid: 8422 + components: + - pos: -54.5,48.5 + parent: 1 + type: Transform + - uid: 8424 + components: + - pos: -57.5,48.5 + parent: 1 + type: Transform + - uid: 8425 + components: + - pos: -56.5,48.5 + parent: 1 + type: Transform + - uid: 8426 + components: + - pos: -48.5,43.5 + parent: 1 + type: Transform + - uid: 8427 + components: + - pos: -47.5,43.5 + parent: 1 + type: Transform + - uid: 8428 + components: + - pos: -47.5,42.5 + parent: 1 + type: Transform + - uid: 8429 + components: + - pos: -47.5,49.5 + parent: 1 + type: Transform + - uid: 8430 + components: + - pos: -56.5,50.5 + parent: 1 + type: Transform + - uid: 8431 + components: + - pos: -56.5,49.5 + parent: 1 + type: Transform + - uid: 8432 + components: + - pos: -53.5,56.5 + parent: 1 + type: Transform + - uid: 8433 + components: + - pos: -52.5,56.5 + parent: 1 + type: Transform + - uid: 8434 + components: + - pos: -51.5,56.5 + parent: 1 + type: Transform + - uid: 8435 + components: + - pos: -51.5,57.5 + parent: 1 + type: Transform + - uid: 8436 + components: + - pos: -51.5,58.5 + parent: 1 + type: Transform + - uid: 8437 + components: + - pos: -58.5,57.5 + parent: 1 + type: Transform + - uid: 8438 + components: + - pos: -59.5,57.5 + parent: 1 + type: Transform + - uid: 8439 + components: + - pos: -60.5,57.5 + parent: 1 + type: Transform + - uid: 8440 + components: + - pos: -49.5,63.5 + parent: 1 + type: Transform + - uid: 8441 + components: + - pos: -50.5,63.5 + parent: 1 + type: Transform + - uid: 8442 + components: + - pos: -51.5,63.5 + parent: 1 + type: Transform + - uid: 8443 + components: + - pos: -51.5,62.5 + parent: 1 + type: Transform + - uid: 8444 + components: + - pos: -51.5,61.5 + parent: 1 + type: Transform + - uid: 8445 + components: + - pos: -52.5,61.5 + parent: 1 + type: Transform + - uid: 8446 + components: + - pos: -53.5,61.5 + parent: 1 + type: Transform + - uid: 8447 + components: + - pos: -54.5,61.5 + parent: 1 + type: Transform + - uid: 8448 + components: + - pos: -55.5,61.5 + parent: 1 + type: Transform + - uid: 8449 + components: + - pos: -56.5,61.5 + parent: 1 + type: Transform + - uid: 8450 + components: + - pos: -57.5,61.5 + parent: 1 + type: Transform + - uid: 8451 + components: + - pos: -58.5,61.5 + parent: 1 + type: Transform + - uid: 8452 + components: + - pos: -59.5,61.5 + parent: 1 + type: Transform + - uid: 8453 + components: + - pos: -60.5,61.5 + parent: 1 + type: Transform + - uid: 8454 + components: + - pos: -61.5,61.5 + parent: 1 + type: Transform + - uid: 8455 + components: + - pos: -61.5,60.5 + parent: 1 + type: Transform + - uid: 8456 + components: + - pos: -62.5,60.5 + parent: 1 + type: Transform + - uid: 8457 + components: + - pos: -63.5,60.5 + parent: 1 + type: Transform + - uid: 8458 + components: + - pos: -63.5,59.5 + parent: 1 + type: Transform + - uid: 8459 + components: + - pos: -63.5,58.5 + parent: 1 + type: Transform + - uid: 8460 + components: + - pos: -50.5,61.5 + parent: 1 + type: Transform + - uid: 8461 + components: + - pos: -49.5,61.5 + parent: 1 + type: Transform + - uid: 8462 + components: + - pos: -48.5,61.5 + parent: 1 + type: Transform + - uid: 8463 + components: + - pos: -47.5,61.5 + parent: 1 + type: Transform + - uid: 8464 + components: + - pos: -47.5,60.5 + parent: 1 + type: Transform + - uid: 8465 + components: + - pos: -47.5,59.5 + parent: 1 + type: Transform + - uid: 8466 + components: + - pos: -47.5,58.5 + parent: 1 + type: Transform + - uid: 8467 + components: + - pos: -47.5,57.5 + parent: 1 + type: Transform + - uid: 8468 + components: + - pos: -51.5,64.5 + parent: 1 + type: Transform + - uid: 8469 + components: + - pos: -51.5,65.5 + parent: 1 + type: Transform + - uid: 8470 + components: + - pos: -50.5,65.5 + parent: 1 + type: Transform + - uid: 8471 + components: + - pos: -49.5,65.5 + parent: 1 + type: Transform + - uid: 8472 + components: + - pos: -48.5,65.5 + parent: 1 + type: Transform + - uid: 8473 + components: + - pos: -47.5,65.5 + parent: 1 + type: Transform + - uid: 8475 + components: + - pos: -46.5,65.5 + parent: 1 + type: Transform + - uid: 8476 + components: + - pos: -45.5,65.5 + parent: 1 + type: Transform + - uid: 8477 + components: + - pos: -44.5,65.5 + parent: 1 + type: Transform + - uid: 8478 + components: + - pos: -43.5,65.5 + parent: 1 + type: Transform + - uid: 8479 + components: + - pos: -42.5,65.5 + parent: 1 + type: Transform + - uid: 8480 + components: + - pos: -42.5,64.5 + parent: 1 + type: Transform + - uid: 8481 + components: + - pos: -42.5,63.5 + parent: 1 + type: Transform + - uid: 8482 + components: + - pos: -42.5,62.5 + parent: 1 + type: Transform + - uid: 8483 + components: + - pos: -52.5,65.5 + parent: 1 + type: Transform + - uid: 8484 + components: + - pos: -52.5,66.5 + parent: 1 + type: Transform + - uid: 8485 + components: + - pos: -52.5,67.5 + parent: 1 + type: Transform + - uid: 8486 + components: + - pos: -52.5,68.5 + parent: 1 + type: Transform + - uid: 8487 + components: + - pos: -52.5,69.5 + parent: 1 + type: Transform + - uid: 8488 + components: + - pos: -50.5,66.5 + parent: 1 + type: Transform + - uid: 8489 + components: + - pos: -50.5,67.5 + parent: 1 + type: Transform + - uid: 8490 + components: + - pos: -50.5,68.5 + parent: 1 + type: Transform + - uid: 8491 + components: + - pos: -50.5,69.5 + parent: 1 + type: Transform + - uid: 8492 + components: + - pos: -49.5,68.5 + parent: 1 + type: Transform + - uid: 8493 + components: + - pos: -48.5,68.5 + parent: 1 + type: Transform + - uid: 8494 + components: + - pos: -47.5,68.5 + parent: 1 + type: Transform + - uid: 8495 + components: + - pos: -55.5,62.5 + parent: 1 + type: Transform + - uid: 8496 + components: + - pos: -55.5,63.5 + parent: 1 + type: Transform + - uid: 8497 + components: + - pos: -55.5,64.5 + parent: 1 + type: Transform + - uid: 8498 + components: + - pos: -59.5,62.5 + parent: 1 + type: Transform + - uid: 8499 + components: + - pos: -59.5,63.5 + parent: 1 + type: Transform + - uid: 8500 + components: + - pos: -59.5,64.5 + parent: 1 + type: Transform + - uid: 8501 + components: + - pos: -59.5,65.5 + parent: 1 + type: Transform + - uid: 8502 + components: + - pos: -58.5,66.5 + parent: 1 + type: Transform + - uid: 8503 + components: + - pos: -59.5,66.5 + parent: 1 + type: Transform + - uid: 8519 + components: + - pos: -60.5,66.5 + parent: 1 + type: Transform + - uid: 8520 + components: + - pos: -61.5,66.5 + parent: 1 + type: Transform + - uid: 8521 + components: + - pos: -58.5,62.5 + parent: 1 + type: Transform + - uid: 8522 + components: + - pos: -56.5,62.5 + parent: 1 + type: Transform + - uid: 8523 + components: + - pos: -54.5,62.5 + parent: 1 + type: Transform + - uid: 8524 + components: + - pos: -53.5,63.5 + parent: 1 + type: Transform + - uid: 8525 + components: + - pos: -55.5,65.5 + parent: 1 + type: Transform + - uid: 8526 + components: + - pos: -53.5,64.5 + parent: 1 + type: Transform + - uid: 8527 + components: + - pos: -53.5,65.5 + parent: 1 + type: Transform + - uid: 8528 + components: + - pos: -56.5,66.5 + parent: 1 + type: Transform + - uid: 8529 + components: + - pos: -55.5,66.5 + parent: 1 + type: Transform + - uid: 8530 + components: + - pos: -54.5,66.5 + parent: 1 + type: Transform + - uid: 8531 + components: + - pos: -48.5,63.5 + parent: 1 + type: Transform + - uid: 8532 + components: + - pos: -47.5,63.5 + parent: 1 + type: Transform + - uid: 8533 + components: + - pos: -46.5,63.5 + parent: 1 + type: Transform + - uid: 8534 + components: + - pos: -55.5,57.5 + parent: 1 + type: Transform + - uid: 8535 + components: + - pos: -55.5,58.5 + parent: 1 + type: Transform + - uid: 8536 + components: + - pos: -55.5,59.5 + parent: 1 + type: Transform + - uid: 8537 + components: + - pos: -56.5,59.5 + parent: 1 + type: Transform + - uid: 8538 + components: + - pos: -54.5,59.5 + parent: 1 + type: Transform + - uid: 8539 + components: + - pos: -47.5,56.5 + parent: 1 + type: Transform + - uid: 8540 + components: + - pos: -48.5,56.5 + parent: 1 + type: Transform + - uid: 8541 + components: + - pos: -46.5,56.5 + parent: 1 + type: Transform + - uid: 9020 + components: + - pos: 19.5,39.5 + parent: 1 + type: Transform + - uid: 9346 + components: + - pos: -57.5,45.5 + parent: 1 + type: Transform + - uid: 9347 + components: + - pos: -57.5,44.5 + parent: 1 + type: Transform + - uid: 9348 + components: + - pos: -57.5,43.5 + parent: 1 + type: Transform + - uid: 9349 + components: + - pos: -57.5,42.5 + parent: 1 + type: Transform + - uid: 9350 + components: + - pos: -57.5,41.5 + parent: 1 + type: Transform + - uid: 9351 + components: + - pos: -57.5,40.5 + parent: 1 + type: Transform + - uid: 9352 + components: + - pos: -57.5,39.5 + parent: 1 + type: Transform + - uid: 9353 + components: + - pos: -57.5,38.5 + parent: 1 + type: Transform + - uid: 9354 + components: + - pos: -57.5,37.5 + parent: 1 + type: Transform + - uid: 9355 + components: + - pos: -57.5,36.5 + parent: 1 + type: Transform + - uid: 9356 + components: + - pos: -57.5,35.5 + parent: 1 + type: Transform + - uid: 9357 + components: + - pos: -56.5,39.5 + parent: 1 + type: Transform + - uid: 9358 + components: + - pos: -55.5,39.5 + parent: 1 + type: Transform + - uid: 9359 + components: + - pos: -54.5,39.5 + parent: 1 + type: Transform + - uid: 9360 + components: + - pos: -54.5,40.5 + parent: 1 + type: Transform + - uid: 9361 + components: + - pos: -54.5,41.5 + parent: 1 + type: Transform + - uid: 9362 + components: + - pos: -54.5,42.5 + parent: 1 + type: Transform + - uid: 9363 + components: + - pos: -54.5,43.5 + parent: 1 + type: Transform + - uid: 9364 + components: + - pos: -53.5,43.5 + parent: 1 + type: Transform + - uid: 9365 + components: + - pos: -52.5,43.5 + parent: 1 + type: Transform + - uid: 9366 + components: + - pos: -51.5,43.5 + parent: 1 + type: Transform + - uid: 9367 + components: + - pos: -50.5,43.5 + parent: 1 + type: Transform + - uid: 9368 + components: + - pos: -49.5,43.5 + parent: 1 + type: Transform + - uid: 9369 + components: + - pos: -53.5,41.5 + parent: 1 + type: Transform + - uid: 9370 + components: + - pos: -52.5,41.5 + parent: 1 + type: Transform + - uid: 9371 + components: + - pos: -52.5,40.5 + parent: 1 + type: Transform + - uid: 9372 + components: + - pos: -52.5,39.5 + parent: 1 + type: Transform + - uid: 9373 + components: + - pos: -52.5,38.5 + parent: 1 + type: Transform + - uid: 9374 + components: + - pos: -52.5,37.5 + parent: 1 + type: Transform + - uid: 9375 + components: + - pos: -52.5,36.5 + parent: 1 + type: Transform + - uid: 9376 + components: + - pos: -52.5,35.5 + parent: 1 + type: Transform + - uid: 9418 + components: + - pos: -31.5,48.5 + parent: 1 + type: Transform + - uid: 9419 + components: + - pos: -31.5,47.5 + parent: 1 + type: Transform + - uid: 9420 + components: + - pos: -31.5,46.5 + parent: 1 + type: Transform + - uid: 9421 + components: + - pos: -31.5,45.5 + parent: 1 + type: Transform + - uid: 9422 + components: + - pos: -31.5,44.5 + parent: 1 + type: Transform + - uid: 9423 + components: + - pos: -31.5,43.5 + parent: 1 + type: Transform + - uid: 9424 + components: + - pos: -30.5,46.5 + parent: 1 + type: Transform + - uid: 9425 + components: + - pos: -29.5,46.5 + parent: 1 + type: Transform + - uid: 9426 + components: + - pos: -28.5,46.5 + parent: 1 + type: Transform + - uid: 9427 + components: + - pos: -27.5,46.5 + parent: 1 + type: Transform + - uid: 9428 + components: + - pos: -32.5,43.5 + parent: 1 + type: Transform + - uid: 9429 + components: + - pos: -33.5,43.5 + parent: 1 + type: Transform + - uid: 9430 + components: + - pos: -34.5,43.5 + parent: 1 + type: Transform + - uid: 9431 + components: + - pos: -35.5,43.5 + parent: 1 + type: Transform + - uid: 9432 + components: + - pos: -36.5,43.5 + parent: 1 + type: Transform + - uid: 9433 + components: + - pos: -37.5,43.5 + parent: 1 + type: Transform + - uid: 9434 + components: + - pos: -38.5,43.5 + parent: 1 + type: Transform + - uid: 9435 + components: + - pos: -39.5,43.5 + parent: 1 + type: Transform + - uid: 9436 + components: + - pos: -40.5,43.5 + parent: 1 + type: Transform + - uid: 9437 + components: + - pos: -41.5,43.5 + parent: 1 + type: Transform + - uid: 9438 + components: + - pos: -42.5,43.5 + parent: 1 + type: Transform + - uid: 9439 + components: + - pos: -43.5,43.5 + parent: 1 + type: Transform + - uid: 9440 + components: + - pos: -44.5,43.5 + parent: 1 + type: Transform + - uid: 9441 + components: + - pos: -40.5,42.5 + parent: 1 + type: Transform + - uid: 9442 + components: + - pos: -40.5,41.5 + parent: 1 + type: Transform + - uid: 9443 + components: + - pos: -36.5,42.5 + parent: 1 + type: Transform + - uid: 9444 + components: + - pos: -36.5,44.5 + parent: 1 + type: Transform + - uid: 9445 + components: + - pos: -36.5,45.5 + parent: 1 + type: Transform + - uid: 9446 + components: + - pos: -36.5,46.5 + parent: 1 + type: Transform + - uid: 9447 + components: + - pos: -33.5,44.5 + parent: 1 + type: Transform + - uid: 9448 + components: + - pos: -33.5,45.5 + parent: 1 + type: Transform + - uid: 9449 + components: + - pos: -33.5,46.5 + parent: 1 + type: Transform + - uid: 9450 + components: + - pos: -44.5,44.5 + parent: 1 + type: Transform + - uid: 9451 + components: + - pos: -44.5,45.5 + parent: 1 + type: Transform + - uid: 9452 + components: + - pos: -44.5,46.5 + parent: 1 + type: Transform + - uid: 9453 + components: + - pos: -40.5,44.5 + parent: 1 + type: Transform + - uid: 9454 + components: + - pos: -40.5,45.5 + parent: 1 + type: Transform + - uid: 9455 + components: + - pos: -40.5,46.5 + parent: 1 + type: Transform + - uid: 9456 + components: + - pos: -40.5,47.5 + parent: 1 + type: Transform + - uid: 9457 + components: + - pos: -40.5,48.5 + parent: 1 + type: Transform + - uid: 9458 + components: + - pos: -40.5,49.5 + parent: 1 + type: Transform + - uid: 9459 + components: + - pos: -40.5,50.5 + parent: 1 + type: Transform + - uid: 9460 + components: + - pos: -41.5,50.5 + parent: 1 + type: Transform + - uid: 9461 + components: + - pos: -42.5,50.5 + parent: 1 + type: Transform + - uid: 9471 + components: + - pos: -41.5,55.5 + parent: 1 + type: Transform + - uid: 9472 + components: + - pos: -40.5,55.5 + parent: 1 + type: Transform + - uid: 9473 + components: + - pos: -39.5,55.5 + parent: 1 + type: Transform + - uid: 9474 + components: + - pos: -38.5,55.5 + parent: 1 + type: Transform + - uid: 9475 + components: + - pos: -37.5,55.5 + parent: 1 + type: Transform + - uid: 9476 + components: + - pos: -31.5,49.5 + parent: 1 + type: Transform + - uid: 9477 + components: + - pos: -31.5,50.5 + parent: 1 + type: Transform + - uid: 9478 + components: + - pos: -31.5,51.5 + parent: 1 + type: Transform + - uid: 9479 + components: + - pos: -31.5,52.5 + parent: 1 + type: Transform + - uid: 9480 + components: + - pos: -31.5,53.5 + parent: 1 + type: Transform + - uid: 9481 + components: + - pos: -31.5,54.5 + parent: 1 + type: Transform + - uid: 9482 + components: + - pos: -30.5,50.5 + parent: 1 + type: Transform + - uid: 9483 + components: + - pos: -29.5,50.5 + parent: 1 + type: Transform + - uid: 9484 + components: + - pos: -28.5,50.5 + parent: 1 + type: Transform + - uid: 9485 + components: + - pos: -27.5,50.5 + parent: 1 + type: Transform + - uid: 9486 + components: + - pos: -26.5,50.5 + parent: 1 + type: Transform + - uid: 9487 + components: + - pos: -25.5,50.5 + parent: 1 + type: Transform + - uid: 9488 + components: + - pos: -24.5,50.5 + parent: 1 + type: Transform + - uid: 9490 + components: + - pos: -18.5,53.5 + parent: 1 + type: Transform + - uid: 9491 + components: + - pos: -21.5,53.5 + parent: 1 + type: Transform + - uid: 9492 + components: + - pos: -12.5,54.5 + parent: 1 + type: Transform + - uid: 9493 + components: + - pos: -12.5,53.5 + parent: 1 + type: Transform + - uid: 9496 + components: + - pos: -23.5,40.5 + parent: 1 + type: Transform + - uid: 9497 + components: + - pos: -22.5,40.5 + parent: 1 + type: Transform + - uid: 9498 + components: + - pos: -21.5,40.5 + parent: 1 + type: Transform + - uid: 9499 + components: + - pos: -20.5,40.5 + parent: 1 + type: Transform + - uid: 9500 + components: + - pos: -20.5,39.5 + parent: 1 + type: Transform + - uid: 9501 + components: + - pos: -20.5,38.5 + parent: 1 + type: Transform + - uid: 9502 + components: + - pos: -20.5,37.5 + parent: 1 + type: Transform + - uid: 9503 + components: + - pos: -20.5,41.5 + parent: 1 + type: Transform + - uid: 9504 + components: + - pos: -20.5,42.5 + parent: 1 + type: Transform + - uid: 9505 + components: + - pos: -20.5,43.5 + parent: 1 + type: Transform + - uid: 9506 + components: + - pos: -20.5,44.5 + parent: 1 + type: Transform + - uid: 9507 + components: + - pos: -20.5,45.5 + parent: 1 + type: Transform + - uid: 9508 + components: + - pos: -20.5,46.5 + parent: 1 + type: Transform + - uid: 9509 + components: + - pos: -20.5,47.5 + parent: 1 + type: Transform + - uid: 9510 + components: + - pos: -20.5,48.5 + parent: 1 + type: Transform + - uid: 9511 + components: + - pos: -19.5,45.5 + parent: 1 + type: Transform + - uid: 9512 + components: + - pos: -18.5,45.5 + parent: 1 + type: Transform + - uid: 9513 + components: + - pos: -17.5,45.5 + parent: 1 + type: Transform + - uid: 9514 + components: + - pos: -16.5,45.5 + parent: 1 + type: Transform + - uid: 9515 + components: + - pos: -16.5,46.5 + parent: 1 + type: Transform + - uid: 9516 + components: + - pos: -16.5,47.5 + parent: 1 + type: Transform + - uid: 9517 + components: + - pos: -15.5,47.5 + parent: 1 + type: Transform + - uid: 9518 + components: + - pos: -14.5,47.5 + parent: 1 + type: Transform + - uid: 9519 + components: + - pos: -13.5,47.5 + parent: 1 + type: Transform + - uid: 9520 + components: + - pos: -12.5,47.5 + parent: 1 + type: Transform + - uid: 9521 + components: + - pos: -11.5,47.5 + parent: 1 + type: Transform + - uid: 9522 + components: + - pos: -10.5,47.5 + parent: 1 + type: Transform + - uid: 9523 + components: + - pos: -16.5,44.5 + parent: 1 + type: Transform + - uid: 9524 + components: + - pos: -16.5,43.5 + parent: 1 + type: Transform + - uid: 9525 + components: + - pos: -16.5,42.5 + parent: 1 + type: Transform + - uid: 9526 + components: + - pos: -16.5,41.5 + parent: 1 + type: Transform + - uid: 9527 + components: + - pos: -16.5,40.5 + parent: 1 + type: Transform + - uid: 9528 + components: + - pos: -16.5,39.5 + parent: 1 + type: Transform + - uid: 9529 + components: + - pos: -16.5,38.5 + parent: 1 + type: Transform + - uid: 9530 + components: + - pos: -16.5,37.5 + parent: 1 + type: Transform + - uid: 9531 + components: + - pos: -16.5,36.5 + parent: 1 + type: Transform + - uid: 9532 + components: + - pos: -24.5,40.5 + parent: 1 + type: Transform + - uid: 9533 + components: + - pos: -24.5,39.5 + parent: 1 + type: Transform + - uid: 9534 + components: + - pos: -24.5,38.5 + parent: 1 + type: Transform + - uid: 9535 + components: + - pos: -24.5,37.5 + parent: 1 + type: Transform + - uid: 9536 + components: + - pos: -24.5,36.5 + parent: 1 + type: Transform + - uid: 9537 + components: + - pos: -24.5,35.5 + parent: 1 + type: Transform + - uid: 9538 + components: + - pos: -24.5,34.5 + parent: 1 + type: Transform + - uid: 9539 + components: + - pos: -16.5,35.5 + parent: 1 + type: Transform + - uid: 9540 + components: + - pos: -16.5,34.5 + parent: 1 + type: Transform + - uid: 9541 + components: + - pos: -16.5,33.5 + parent: 1 + type: Transform + - uid: 9542 + components: + - pos: -16.5,32.5 + parent: 1 + type: Transform + - uid: 9558 + components: + - pos: -26.5,38.5 + parent: 1 + type: Transform + - uid: 9559 + components: + - pos: -27.5,38.5 + parent: 1 + type: Transform + - uid: 9560 + components: + - pos: -27.5,37.5 + parent: 1 + type: Transform + - uid: 9561 + components: + - pos: -28.5,37.5 + parent: 1 + type: Transform + - uid: 9562 + components: + - pos: -29.5,37.5 + parent: 1 + type: Transform + - uid: 9563 + components: + - pos: -30.5,37.5 + parent: 1 + type: Transform + - uid: 9564 + components: + - pos: -31.5,37.5 + parent: 1 + type: Transform + - uid: 9565 + components: + - pos: -32.5,37.5 + parent: 1 + type: Transform + - uid: 9566 + components: + - pos: -33.5,37.5 + parent: 1 + type: Transform + - uid: 9567 + components: + - pos: -34.5,37.5 + parent: 1 + type: Transform + - uid: 9568 + components: + - pos: -35.5,37.5 + parent: 1 + type: Transform + - uid: 9569 + components: + - pos: -36.5,37.5 + parent: 1 + type: Transform + - uid: 9570 + components: + - pos: -37.5,37.5 + parent: 1 + type: Transform + - uid: 9571 + components: + - pos: -38.5,37.5 + parent: 1 + type: Transform + - uid: 9572 + components: + - pos: -39.5,37.5 + parent: 1 + type: Transform + - uid: 9574 + components: + - pos: -41.5,37.5 + parent: 1 + type: Transform + - uid: 9575 + components: + - pos: -42.5,37.5 + parent: 1 + type: Transform + - uid: 9576 + components: + - pos: -43.5,37.5 + parent: 1 + type: Transform + - uid: 9577 + components: + - pos: -44.5,37.5 + parent: 1 + type: Transform + - uid: 9578 + components: + - pos: -32.5,38.5 + parent: 1 + type: Transform + - uid: 9579 + components: + - pos: -32.5,36.5 + parent: 1 + type: Transform + - uid: 9580 + components: + - pos: -36.5,38.5 + parent: 1 + type: Transform + - uid: 9581 + components: + - pos: -36.5,36.5 + parent: 1 + type: Transform + - uid: 9582 + components: + - pos: -36.5,35.5 + parent: 1 + type: Transform + - uid: 9583 + components: + - pos: -38.5,36.5 + parent: 1 + type: Transform + - uid: 9584 + components: + - pos: -38.5,35.5 + parent: 1 + type: Transform + - uid: 9585 + components: + - pos: -38.5,38.5 + parent: 1 + type: Transform + - uid: 9586 + components: + - pos: -32.5,35.5 + parent: 1 + type: Transform + - uid: 9640 + components: + - pos: -70.5,33.5 + parent: 1 + type: Transform + - uid: 10058 + components: + - pos: -15.5,14.5 + parent: 1 + type: Transform + - uid: 10071 + components: + - pos: 21.5,44.5 + parent: 1 + type: Transform + - uid: 10155 + components: + - pos: -51.5,44.5 + parent: 1 + type: Transform + - uid: 10264 + components: + - pos: -33.5,-8.5 + parent: 1 + type: Transform + - uid: 10269 + components: + - pos: -33.5,-7.5 + parent: 1 + type: Transform + - uid: 10280 + components: + - pos: -33.5,-6.5 + parent: 1 + type: Transform + - uid: 10295 + components: + - pos: -34.5,-11.5 + parent: 1 + type: Transform + - uid: 10397 + components: + - pos: -36.5,-6.5 + parent: 1 + type: Transform + - uid: 10399 + components: + - pos: -31.5,-6.5 + parent: 1 + type: Transform + - uid: 10404 + components: + - pos: -32.5,-6.5 + parent: 1 + type: Transform + - uid: 10410 + components: + - pos: 23.5,44.5 + parent: 1 + type: Transform + - uid: 10413 + components: + - pos: 24.5,41.5 + parent: 1 + type: Transform + - uid: 10414 + components: + - pos: 24.5,40.5 + parent: 1 + type: Transform + - uid: 10415 + components: + - pos: 17.5,44.5 + parent: 1 + type: Transform + - uid: 10424 + components: + - pos: 18.5,44.5 + parent: 1 + type: Transform + - uid: 10425 + components: + - pos: 19.5,44.5 + parent: 1 + type: Transform + - uid: 10429 + components: + - pos: 22.5,44.5 + parent: 1 + type: Transform + - uid: 10431 + components: + - pos: 16.5,37.5 + parent: 1 + type: Transform + - uid: 10432 + components: + - pos: 19.5,36.5 + parent: 1 + type: Transform + - uid: 10433 + components: + - pos: 24.5,43.5 + parent: 1 + type: Transform + - uid: 10434 + components: + - pos: 24.5,44.5 + parent: 1 + type: Transform + - uid: 10435 + components: + - pos: 24.5,42.5 + parent: 1 + type: Transform + - uid: 10999 + components: + - pos: -65.5,44.5 + parent: 1 + type: Transform + - uid: 11000 + components: + - pos: -64.5,44.5 + parent: 1 + type: Transform + - uid: 11001 + components: + - pos: -63.5,44.5 + parent: 1 + type: Transform + - uid: 11002 + components: + - pos: -62.5,44.5 + parent: 1 + type: Transform + - uid: 11003 + components: + - pos: -61.5,44.5 + parent: 1 + type: Transform + - uid: 11004 + components: + - pos: -60.5,44.5 + parent: 1 + type: Transform + - uid: 11005 + components: + - pos: -59.5,44.5 + parent: 1 + type: Transform + - uid: 11006 + components: + - pos: -58.5,44.5 + parent: 1 + type: Transform + - uid: 11007 + components: + - pos: -57.5,46.5 + parent: 1 + type: Transform + - uid: 11008 + components: + - pos: -62.5,43.5 + parent: 1 + type: Transform + - uid: 11009 + components: + - pos: -62.5,42.5 + parent: 1 + type: Transform + - uid: 11010 + components: + - pos: -62.5,41.5 + parent: 1 + type: Transform + - uid: 11011 + components: + - pos: -62.5,40.5 + parent: 1 + type: Transform + - uid: 11012 + components: + - pos: -62.5,39.5 + parent: 1 + type: Transform + - uid: 11015 + components: + - pos: -66.5,44.5 + parent: 1 + type: Transform + - uid: 11016 + components: + - pos: -66.5,45.5 + parent: 1 + type: Transform + - uid: 11017 + components: + - pos: -66.5,46.5 + parent: 1 + type: Transform + - uid: 11018 + components: + - pos: -66.5,47.5 + parent: 1 + type: Transform + - uid: 11019 + components: + - pos: -67.5,47.5 + parent: 1 + type: Transform + - uid: 11020 + components: + - pos: -68.5,47.5 + parent: 1 + type: Transform + - uid: 11021 + components: + - pos: -69.5,47.5 + parent: 1 + type: Transform + - uid: 11022 + components: + - pos: -70.5,47.5 + parent: 1 + type: Transform + - uid: 11023 + components: + - pos: -66.5,43.5 + parent: 1 + type: Transform + - uid: 11024 + components: + - pos: -66.5,42.5 + parent: 1 + type: Transform + - uid: 11025 + components: + - pos: -66.5,41.5 + parent: 1 + type: Transform + - uid: 11026 + components: + - pos: -66.5,40.5 + parent: 1 + type: Transform + - uid: 11027 + components: + - pos: -67.5,40.5 + parent: 1 + type: Transform + - uid: 11028 + components: + - pos: -68.5,40.5 + parent: 1 + type: Transform + - uid: 11029 + components: + - pos: -69.5,40.5 + parent: 1 + type: Transform + - uid: 11030 + components: + - pos: -70.5,40.5 + parent: 1 + type: Transform + - uid: 11031 + components: + - pos: -71.5,40.5 + parent: 1 + type: Transform + - uid: 11032 + components: + - pos: -71.5,41.5 + parent: 1 + type: Transform + - uid: 11033 + components: + - pos: -71.5,42.5 + parent: 1 + type: Transform + - uid: 11034 + components: + - pos: -71.5,43.5 + parent: 1 + type: Transform + - uid: 11035 + components: + - pos: -71.5,44.5 + parent: 1 + type: Transform + - uid: 11036 + components: + - pos: -66.5,48.5 + parent: 1 + type: Transform + - uid: 11037 + components: + - pos: -66.5,49.5 + parent: 1 + type: Transform + - uid: 11038 + components: + - pos: -66.5,50.5 + parent: 1 + type: Transform + - uid: 11039 + components: + - pos: -67.5,50.5 + parent: 1 + type: Transform + - uid: 11040 + components: + - pos: -67.5,51.5 + parent: 1 + type: Transform + - uid: 11041 + components: + - pos: -67.5,52.5 + parent: 1 + type: Transform + - uid: 11042 + components: + - pos: -68.5,52.5 + parent: 1 + type: Transform + - uid: 11043 + components: + - pos: -69.5,52.5 + parent: 1 + type: Transform + - uid: 11044 + components: + - pos: -70.5,52.5 + parent: 1 + type: Transform + - uid: 11045 + components: + - pos: -71.5,52.5 + parent: 1 + type: Transform + - uid: 11046 + components: + - pos: -71.5,53.5 + parent: 1 + type: Transform + - uid: 11047 + components: + - pos: -71.5,54.5 + parent: 1 + type: Transform + - uid: 11048 + components: + - pos: -71.5,55.5 + parent: 1 + type: Transform + - uid: 11160 + components: + - pos: -75.5,21.5 + parent: 1 + type: Transform + - uid: 11161 + components: + - pos: -74.5,21.5 + parent: 1 + type: Transform + - uid: 11162 + components: + - pos: -73.5,21.5 + parent: 1 + type: Transform + - uid: 11163 + components: + - pos: -72.5,21.5 + parent: 1 + type: Transform + - uid: 11164 + components: + - pos: -71.5,21.5 + parent: 1 + type: Transform + - uid: 11165 + components: + - pos: -70.5,21.5 + parent: 1 + type: Transform + - uid: 11166 + components: + - pos: -69.5,21.5 + parent: 1 + type: Transform + - uid: 11173 + components: + - pos: -68.5,21.5 + parent: 1 + type: Transform + - uid: 11174 + components: + - pos: -67.5,21.5 + parent: 1 + type: Transform + - uid: 11322 + components: + - pos: -66.5,21.5 + parent: 1 + type: Transform + - uid: 11323 + components: + - pos: -65.5,21.5 + parent: 1 + type: Transform + - uid: 11324 + components: + - pos: -64.5,21.5 + parent: 1 + type: Transform + - uid: 11325 + components: + - pos: -74.5,22.5 + parent: 1 + type: Transform + - uid: 11326 + components: + - pos: -74.5,23.5 + parent: 1 + type: Transform + - uid: 11327 + components: + - pos: -74.5,24.5 + parent: 1 + type: Transform + - uid: 11328 + components: + - pos: -74.5,25.5 + parent: 1 + type: Transform + - uid: 11329 + components: + - pos: -75.5,25.5 + parent: 1 + type: Transform + - uid: 11330 + components: + - pos: -76.5,25.5 + parent: 1 + type: Transform + - uid: 11331 + components: + - pos: -77.5,25.5 + parent: 1 + type: Transform + - uid: 11332 + components: + - pos: -78.5,25.5 + parent: 1 + type: Transform + - uid: 11333 + components: + - pos: -79.5,25.5 + parent: 1 + type: Transform + - uid: 11334 + components: + - pos: -79.5,24.5 + parent: 1 + type: Transform + - uid: 11335 + components: + - pos: -79.5,23.5 + parent: 1 + type: Transform + - uid: 11336 + components: + - pos: -79.5,22.5 + parent: 1 + type: Transform + - uid: 11337 + components: + - pos: -79.5,21.5 + parent: 1 + type: Transform + - uid: 11338 + components: + - pos: -79.5,20.5 + parent: 1 + type: Transform + - uid: 11339 + components: + - pos: -79.5,19.5 + parent: 1 + type: Transform + - uid: 11340 + components: + - pos: -80.5,19.5 + parent: 1 + type: Transform + - uid: 11341 + components: + - pos: -81.5,19.5 + parent: 1 + type: Transform + - uid: 11342 + components: + - pos: -78.5,19.5 + parent: 1 + type: Transform + - uid: 11343 + components: + - pos: -77.5,19.5 + parent: 1 + type: Transform + - uid: 11344 + components: + - pos: -80.5,23.5 + parent: 1 + type: Transform + - uid: 11345 + components: + - pos: -81.5,23.5 + parent: 1 + type: Transform + - uid: 11346 + components: + - pos: -82.5,23.5 + parent: 1 + type: Transform + - uid: 11347 + components: + - pos: -83.5,23.5 + parent: 1 + type: Transform + - uid: 11348 + components: + - pos: -84.5,23.5 + parent: 1 + type: Transform + - uid: 11349 + components: + - pos: -84.5,22.5 + parent: 1 + type: Transform + - uid: 11350 + components: + - pos: -84.5,21.5 + parent: 1 + type: Transform + - uid: 11351 + components: + - pos: -84.5,20.5 + parent: 1 + type: Transform + - uid: 11352 + components: + - pos: -79.5,26.5 + parent: 1 + type: Transform + - uid: 11353 + components: + - pos: -79.5,27.5 + parent: 1 + type: Transform + - uid: 11354 + components: + - pos: -80.5,27.5 + parent: 1 + type: Transform + - uid: 11355 + components: + - pos: -81.5,27.5 + parent: 1 + type: Transform + - uid: 11356 + components: + - pos: -82.5,27.5 + parent: 1 + type: Transform + - uid: 11357 + components: + - pos: -83.5,27.5 + parent: 1 + type: Transform + - uid: 11358 + components: + - pos: -84.5,27.5 + parent: 1 + type: Transform + - uid: 11359 + components: + - pos: -84.5,28.5 + parent: 1 + type: Transform + - uid: 11360 + components: + - pos: -84.5,29.5 + parent: 1 + type: Transform + - uid: 11361 + components: + - pos: -84.5,30.5 + parent: 1 + type: Transform + - uid: 11362 + components: + - pos: -74.5,26.5 + parent: 1 + type: Transform + - uid: 11363 + components: + - pos: -74.5,27.5 + parent: 1 + type: Transform + - uid: 11364 + components: + - pos: -74.5,28.5 + parent: 1 + type: Transform + - uid: 11365 + components: + - pos: -74.5,29.5 + parent: 1 + type: Transform + - uid: 11366 + components: + - pos: -74.5,20.5 + parent: 1 + type: Transform + - uid: 11367 + components: + - pos: -74.5,19.5 + parent: 1 + type: Transform + - uid: 11368 + components: + - pos: -74.5,18.5 + parent: 1 + type: Transform + - uid: 11369 + components: + - pos: -74.5,17.5 + parent: 1 + type: Transform + - uid: 11370 + components: + - pos: -74.5,16.5 + parent: 1 + type: Transform + - uid: 11371 + components: + - pos: -73.5,16.5 + parent: 1 + type: Transform + - uid: 11372 + components: + - pos: -72.5,16.5 + parent: 1 + type: Transform + - uid: 11373 + components: + - pos: -71.5,16.5 + parent: 1 + type: Transform + - uid: 11374 + components: + - pos: -70.5,16.5 + parent: 1 + type: Transform + - uid: 11375 + components: + - pos: -69.5,16.5 + parent: 1 + type: Transform + - uid: 11376 + components: + - pos: -60.5,6.5 + parent: 1 + type: Transform + - uid: 11377 + components: + - pos: -60.5,7.5 + parent: 1 + type: Transform + - uid: 11378 + components: + - pos: -60.5,8.5 + parent: 1 + type: Transform + - uid: 11379 + components: + - pos: -61.5,8.5 + parent: 1 + type: Transform + - uid: 11380 + components: + - pos: -62.5,8.5 + parent: 1 + type: Transform + - uid: 11381 + components: + - pos: -63.5,8.5 + parent: 1 + type: Transform + - uid: 11382 + components: + - pos: -64.5,8.5 + parent: 1 + type: Transform + - uid: 11383 + components: + - pos: -65.5,8.5 + parent: 1 + type: Transform + - uid: 11384 + components: + - pos: -66.5,8.5 + parent: 1 + type: Transform + - uid: 11385 + components: + - pos: -66.5,9.5 + parent: 1 + type: Transform + - uid: 11386 + components: + - pos: -66.5,10.5 + parent: 1 + type: Transform + - uid: 11387 + components: + - pos: -66.5,11.5 + parent: 1 + type: Transform + - uid: 11388 + components: + - pos: -66.5,12.5 + parent: 1 + type: Transform + - uid: 11389 + components: + - pos: -66.5,13.5 + parent: 1 + type: Transform + - uid: 11390 + components: + - pos: -66.5,14.5 + parent: 1 + type: Transform + - uid: 11391 + components: + - pos: -66.5,15.5 + parent: 1 + type: Transform + - uid: 11392 + components: + - pos: -66.5,16.5 + parent: 1 + type: Transform + - uid: 11393 + components: + - pos: -65.5,16.5 + parent: 1 + type: Transform + - uid: 11394 + components: + - pos: -64.5,16.5 + parent: 1 + type: Transform + - uid: 11395 + components: + - pos: -63.5,16.5 + parent: 1 + type: Transform + - uid: 11396 + components: + - pos: -68.5,35.5 + parent: 1 + type: Transform + - uid: 11397 + components: + - pos: -68.5,34.5 + parent: 1 + type: Transform + - uid: 11398 + components: + - pos: -68.5,33.5 + parent: 1 + type: Transform + - uid: 11399 + components: + - pos: -67.5,33.5 + parent: 1 + type: Transform + - uid: 11400 + components: + - pos: -66.5,33.5 + parent: 1 + type: Transform + - uid: 11401 + components: + - pos: -65.5,33.5 + parent: 1 + type: Transform + - uid: 11402 + components: + - pos: -64.5,33.5 + parent: 1 + type: Transform + - uid: 11403 + components: + - pos: -64.5,31.5 + parent: 1 + type: Transform + - uid: 11404 + components: + - pos: -63.5,32.5 + parent: 1 + type: Transform + - uid: 11405 + components: + - pos: -62.5,32.5 + parent: 1 + type: Transform + - uid: 11406 + components: + - pos: -61.5,32.5 + parent: 1 + type: Transform + - uid: 11407 + components: + - pos: -60.5,32.5 + parent: 1 + type: Transform + - uid: 11408 + components: + - pos: -64.5,32.5 + parent: 1 + type: Transform + - uid: 11409 + components: + - pos: -64.5,30.5 + parent: 1 + type: Transform + - uid: 11410 + components: + - pos: -64.5,29.5 + parent: 1 + type: Transform + - uid: 11411 + components: + - pos: -64.5,28.5 + parent: 1 + type: Transform + - uid: 11412 + components: + - pos: -64.5,27.5 + parent: 1 + type: Transform + - uid: 11413 + components: + - pos: -65.5,27.5 + parent: 1 + type: Transform + - uid: 11414 + components: + - pos: -66.5,27.5 + parent: 1 + type: Transform + - uid: 11415 + components: + - pos: -69.5,34.5 + parent: 1 + type: Transform + - uid: 11416 + components: + - pos: -70.5,34.5 + parent: 1 + type: Transform + - uid: 11417 + components: + - pos: -71.5,34.5 + parent: 1 + type: Transform + - uid: 11418 + components: + - pos: -72.5,34.5 + parent: 1 + type: Transform + - uid: 11419 + components: + - pos: -73.5,34.5 + parent: 1 + type: Transform + - uid: 11420 + components: + - pos: -74.5,34.5 + parent: 1 + type: Transform + - uid: 11421 + components: + - pos: -74.5,33.5 + parent: 1 + type: Transform + - uid: 11422 + components: + - pos: -74.5,32.5 + parent: 1 + type: Transform + - uid: 11423 + components: + - pos: -74.5,31.5 + parent: 1 + type: Transform + - uid: 11424 + components: + - pos: -76.5,36.5 + parent: 1 + type: Transform + - uid: 11425 + components: + - pos: -77.5,36.5 + parent: 1 + type: Transform + - uid: 11426 + components: + - pos: -78.5,36.5 + parent: 1 + type: Transform + - uid: 11432 + components: + - pos: -78.5,37.5 + parent: 1 + type: Transform + - uid: 11433 + components: + - pos: -78.5,38.5 + parent: 1 + type: Transform + - uid: 11434 + components: + - pos: -78.5,39.5 + parent: 1 + type: Transform + - uid: 11435 + components: + - pos: -78.5,40.5 + parent: 1 + type: Transform + - uid: 11436 + components: + - pos: -78.5,41.5 + parent: 1 + type: Transform + - uid: 11437 + components: + - pos: -78.5,42.5 + parent: 1 + type: Transform + - uid: 11438 + components: + - pos: -78.5,43.5 + parent: 1 + type: Transform + - uid: 11439 + components: + - pos: -78.5,44.5 + parent: 1 + type: Transform + - uid: 11440 + components: + - pos: -78.5,45.5 + parent: 1 + type: Transform + - uid: 11441 + components: + - pos: -78.5,46.5 + parent: 1 + type: Transform + - uid: 11442 + components: + - pos: -77.5,46.5 + parent: 1 + type: Transform + - uid: 11443 + components: + - pos: -77.5,47.5 + parent: 1 + type: Transform + - uid: 11445 + components: + - pos: -79.5,47.5 + parent: 1 + type: Transform + - uid: 11446 + components: + - pos: -80.5,47.5 + parent: 1 + type: Transform + - uid: 11447 + components: + - pos: -81.5,47.5 + parent: 1 + type: Transform + - uid: 11448 + components: + - pos: -82.5,47.5 + parent: 1 + type: Transform + - uid: 11449 + components: + - pos: -83.5,47.5 + parent: 1 + type: Transform + - uid: 11450 + components: + - pos: -84.5,47.5 + parent: 1 + type: Transform + - uid: 11451 + components: + - pos: -85.5,47.5 + parent: 1 + type: Transform + - uid: 11452 + components: + - pos: -85.5,46.5 + parent: 1 + type: Transform + - uid: 11453 + components: + - pos: -85.5,45.5 + parent: 1 + type: Transform + - uid: 11454 + components: + - pos: -85.5,44.5 + parent: 1 + type: Transform + - uid: 11455 + components: + - pos: -85.5,43.5 + parent: 1 + type: Transform + - uid: 11456 + components: + - pos: -85.5,42.5 + parent: 1 + type: Transform + - uid: 11457 + components: + - pos: -85.5,41.5 + parent: 1 + type: Transform + - uid: 11458 + components: + - pos: -85.5,40.5 + parent: 1 + type: Transform + - uid: 11459 + components: + - pos: -85.5,39.5 + parent: 1 + type: Transform + - uid: 11460 + components: + - pos: -85.5,38.5 + parent: 1 + type: Transform + - uid: 11461 + components: + - pos: -85.5,37.5 + parent: 1 + type: Transform + - uid: 11462 + components: + - pos: -85.5,36.5 + parent: 1 + type: Transform + - uid: 11463 + components: + - pos: -85.5,35.5 + parent: 1 + type: Transform + - uid: 11464 + components: + - pos: -85.5,34.5 + parent: 1 + type: Transform + - uid: 11465 + components: + - pos: -86.5,46.5 + parent: 1 + type: Transform + - uid: 11466 + components: + - pos: -87.5,46.5 + parent: 1 + type: Transform + - uid: 11467 + components: + - pos: -87.5,45.5 + parent: 1 + type: Transform + - uid: 11471 + components: + - pos: -87.5,44.5 + parent: 1 + type: Transform + - uid: 11472 + components: + - pos: -87.5,43.5 + parent: 1 + type: Transform + - uid: 11473 + components: + - pos: -87.5,42.5 + parent: 1 + type: Transform + - uid: 11474 + components: + - pos: -87.5,41.5 + parent: 1 + type: Transform + - uid: 11476 + components: + - pos: -87.5,40.5 + parent: 1 + type: Transform + - uid: 11477 + components: + - pos: -87.5,39.5 + parent: 1 + type: Transform + - uid: 11478 + components: + - pos: -87.5,38.5 + parent: 1 + type: Transform + - uid: 11479 + components: + - pos: -87.5,37.5 + parent: 1 + type: Transform + - uid: 11480 + components: + - pos: -87.5,36.5 + parent: 1 + type: Transform + - uid: 11481 + components: + - pos: -87.5,35.5 + parent: 1 + type: Transform + - uid: 11482 + components: + - pos: -87.5,34.5 + parent: 1 + type: Transform + - uid: 11483 + components: + - pos: -88.5,46.5 + parent: 1 + type: Transform + - uid: 11484 + components: + - pos: -89.5,46.5 + parent: 1 + type: Transform + - uid: 11485 + components: + - pos: -90.5,46.5 + parent: 1 + type: Transform + - uid: 11486 + components: + - pos: -91.5,46.5 + parent: 1 + type: Transform + - uid: 11487 + components: + - pos: -91.5,45.5 + parent: 1 + type: Transform + - uid: 11488 + components: + - pos: -91.5,44.5 + parent: 1 + type: Transform + - uid: 11490 + components: + - pos: -91.5,43.5 + parent: 1 + type: Transform + - uid: 11491 + components: + - pos: -91.5,42.5 + parent: 1 + type: Transform + - uid: 11492 + components: + - pos: -91.5,41.5 + parent: 1 + type: Transform + - uid: 11493 + components: + - pos: -91.5,40.5 + parent: 1 + type: Transform + - uid: 11494 + components: + - pos: -91.5,39.5 + parent: 1 + type: Transform + - uid: 11495 + components: + - pos: -91.5,38.5 + parent: 1 + type: Transform + - uid: 11496 + components: + - pos: -91.5,37.5 + parent: 1 + type: Transform + - uid: 11497 + components: + - pos: -91.5,36.5 + parent: 1 + type: Transform + - uid: 11498 + components: + - pos: -91.5,35.5 + parent: 1 + type: Transform + - uid: 11499 + components: + - pos: -91.5,34.5 + parent: 1 + type: Transform + - uid: 11500 + components: + - pos: -84.5,48.5 + parent: 1 + type: Transform + - uid: 11501 + components: + - pos: -84.5,49.5 + parent: 1 + type: Transform + - uid: 11502 + components: + - pos: -83.5,49.5 + parent: 1 + type: Transform + - uid: 11504 + components: + - pos: -82.5,49.5 + parent: 1 + type: Transform + - uid: 11505 + components: + - pos: -81.5,49.5 + parent: 1 + type: Transform + - uid: 11506 + components: + - pos: -80.5,49.5 + parent: 1 + type: Transform + - uid: 11507 + components: + - pos: -80.5,50.5 + parent: 1 + type: Transform + - uid: 11510 + components: + - pos: -84.5,50.5 + parent: 1 + type: Transform + - uid: 11512 + components: + - pos: -78.5,35.5 + parent: 1 + type: Transform + - uid: 11514 + components: + - pos: -78.5,34.5 + parent: 1 + type: Transform + - uid: 11575 + components: + - pos: -40.5,37.5 + parent: 1 + type: Transform + - uid: 11903 + components: + - pos: 22.5,36.5 + parent: 1 + type: Transform + - uid: 11917 + components: + - pos: 18.5,36.5 + parent: 1 + type: Transform + - uid: 12039 + components: + - pos: -78.5,33.5 + parent: 1 + type: Transform + - uid: 12221 + components: + - pos: -78.5,32.5 + parent: 1 + type: Transform + - uid: 12432 + components: + - pos: -78.5,31.5 + parent: 1 + type: Transform + - uid: 12501 + components: + - pos: -78.5,30.5 + parent: 1 + type: Transform + - uid: 12502 + components: + - pos: -78.5,29.5 + parent: 1 + type: Transform + - uid: 12505 + components: + - pos: -82.5,33.5 + parent: 1 + type: Transform + - uid: 13035 + components: + - pos: -82.5,32.5 + parent: 1 + type: Transform + - uid: 13036 + components: + - pos: -82.5,31.5 + parent: 1 + type: Transform + - uid: 13037 + components: + - pos: -82.5,30.5 + parent: 1 + type: Transform + - uid: 13038 + components: + - pos: -82.5,29.5 + parent: 1 + type: Transform + - uid: 13331 + components: + - pos: -0.5,6.5 + parent: 1 + type: Transform + - uid: 13332 + components: + - pos: -0.5,7.5 + parent: 1 + type: Transform + - uid: 13333 + components: + - pos: -0.5,8.5 + parent: 1 + type: Transform + - uid: 13334 + components: + - pos: -0.5,9.5 + parent: 1 + type: Transform + - uid: 13658 + components: + - pos: -51.5,36.5 + parent: 1 + type: Transform + - uid: 13659 + components: + - pos: -50.5,36.5 + parent: 1 + type: Transform + - uid: 13660 + components: + - pos: -49.5,36.5 + parent: 1 + type: Transform + - uid: 14005 + components: + - pos: -72.5,54.5 + parent: 1 + type: Transform + - uid: 14006 + components: + - pos: -73.5,54.5 + parent: 1 + type: Transform + - uid: 14039 + components: + - pos: -70.5,32.5 + parent: 1 + type: Transform + - uid: 14041 + components: + - pos: -70.5,31.5 + parent: 1 + type: Transform + - uid: 14042 + components: + - pos: -70.5,30.5 + parent: 1 + type: Transform + - uid: 14043 + components: + - pos: -70.5,29.5 + parent: 1 + type: Transform + - uid: 14044 + components: + - pos: -70.5,28.5 + parent: 1 + type: Transform + - uid: 14231 + components: + - pos: -73.5,55.5 + parent: 1 + type: Transform + - uid: 14232 + components: + - pos: -73.5,56.5 + parent: 1 + type: Transform + - uid: 15005 + components: + - pos: -74.5,54.5 + parent: 1 + type: Transform + - uid: 15006 + components: + - pos: -75.5,54.5 + parent: 1 + type: Transform + - uid: 15007 + components: + - pos: -76.5,54.5 + parent: 1 + type: Transform + - uid: 15050 + components: + - pos: -36.5,55.5 + parent: 1 + type: Transform + - uid: 15051 + components: + - pos: -35.5,55.5 + parent: 1 + type: Transform + - uid: 15052 + components: + - pos: -34.5,55.5 + parent: 1 + type: Transform + - uid: 15053 + components: + - pos: -33.5,55.5 + parent: 1 + type: Transform + - uid: 15054 + components: + - pos: -32.5,55.5 + parent: 1 + type: Transform + - uid: 15055 + components: + - pos: -31.5,55.5 + parent: 1 + type: Transform + - uid: 15056 + components: + - pos: -58.5,86.5 + parent: 1 + type: Transform + - uid: 15062 + components: + - pos: -46.5,-2.5 + parent: 1 + type: Transform + - uid: 15113 + components: + - pos: -31.5,56.5 + parent: 1 + type: Transform + - uid: 15237 + components: + - pos: 17.5,47.5 + parent: 1 + type: Transform + - uid: 15238 + components: + - pos: 17.5,48.5 + parent: 1 + type: Transform + - uid: 15239 + components: + - pos: 17.5,49.5 + parent: 1 + type: Transform + - uid: 15240 + components: + - pos: 17.5,50.5 + parent: 1 + type: Transform + - uid: 15241 + components: + - pos: 17.5,51.5 + parent: 1 + type: Transform + - uid: 15242 + components: + - pos: 16.5,51.5 + parent: 1 + type: Transform + - uid: 15243 + components: + - pos: 15.5,51.5 + parent: 1 + type: Transform + - uid: 15244 + components: + - pos: 14.5,51.5 + parent: 1 + type: Transform + - uid: 15245 + components: + - pos: 16.5,52.5 + parent: 1 + type: Transform + - uid: 15246 + components: + - pos: 13.5,53.5 + parent: 1 + type: Transform + - uid: 15247 + components: + - pos: 14.5,53.5 + parent: 1 + type: Transform + - uid: 15248 + components: + - pos: 15.5,53.5 + parent: 1 + type: Transform + - uid: 15249 + components: + - pos: 16.5,53.5 + parent: 1 + type: Transform + - uid: 15250 + components: + - pos: 17.5,53.5 + parent: 1 + type: Transform + - uid: 15251 + components: + - pos: 18.5,53.5 + parent: 1 + type: Transform + - uid: 15252 + components: + - pos: 19.5,53.5 + parent: 1 + type: Transform + - uid: 15253 + components: + - pos: 18.5,50.5 + parent: 1 + type: Transform + - uid: 15254 + components: + - pos: 19.5,52.5 + parent: 1 + type: Transform + - uid: 15255 + components: + - pos: 19.5,51.5 + parent: 1 + type: Transform + - uid: 15256 + components: + - pos: 19.5,50.5 + parent: 1 + type: Transform + - uid: 15257 + components: + - pos: 19.5,49.5 + parent: 1 + type: Transform + - uid: 15258 + components: + - pos: 19.5,48.5 + parent: 1 + type: Transform + - uid: 15282 + components: + - pos: 7.5,40.5 + parent: 1 + type: Transform + - uid: 15283 + components: + - pos: 7.5,41.5 + parent: 1 + type: Transform + - uid: 15284 + components: + - pos: 7.5,42.5 + parent: 1 + type: Transform + - uid: 15285 + components: + - pos: 7.5,43.5 + parent: 1 + type: Transform + - uid: 15286 + components: + - pos: 7.5,44.5 + parent: 1 + type: Transform + - uid: 15287 + components: + - pos: 7.5,45.5 + parent: 1 + type: Transform + - uid: 15288 + components: + - pos: 7.5,46.5 + parent: 1 + type: Transform + - uid: 15291 + components: + - pos: 10.5,33.5 + parent: 1 + type: Transform + - uid: 15380 + components: + - pos: -16.5,53.5 + parent: 1 + type: Transform + - uid: 15430 + components: + - pos: -41.5,63.5 + parent: 1 + type: Transform + - uid: 15431 + components: + - pos: -40.5,63.5 + parent: 1 + type: Transform + - uid: 15432 + components: + - pos: -42.5,61.5 + parent: 1 + type: Transform + - uid: 15433 + components: + - pos: -42.5,60.5 + parent: 1 + type: Transform + - uid: 15434 + components: + - pos: -42.5,66.5 + parent: 1 + type: Transform + - uid: 15517 + components: + - pos: -5.5,-16.5 + parent: 1 + type: Transform + - uid: 15518 + components: + - pos: -5.5,-17.5 + parent: 1 + type: Transform + - uid: 15519 + components: + - pos: -5.5,-18.5 + parent: 1 + type: Transform + - uid: 15845 + components: + - pos: 19.5,40.5 + parent: 1 + type: Transform + - uid: 15870 + components: + - pos: 12.5,51.5 + parent: 1 + type: Transform + - uid: 15871 + components: + - pos: 11.5,51.5 + parent: 1 + type: Transform + - uid: 15890 + components: + - pos: -24.5,-10.5 + parent: 1 + type: Transform + - uid: 15891 + components: + - pos: -24.5,-11.5 + parent: 1 + type: Transform + - uid: 15951 + components: + - pos: -51.5,31.5 + parent: 1 + type: Transform + - uid: 15952 + components: + - pos: -51.5,30.5 + parent: 1 + type: Transform + - uid: 15953 + components: + - pos: -52.5,30.5 + parent: 1 + type: Transform + - uid: 15954 + components: + - pos: -53.5,30.5 + parent: 1 + type: Transform + - uid: 15955 + components: + - pos: -50.5,28.5 + parent: 1 + type: Transform + - uid: 15956 + components: + - pos: -50.5,29.5 + parent: 1 + type: Transform + - uid: 15957 + components: + - pos: -50.5,30.5 + parent: 1 + type: Transform + - uid: 15987 + components: + - pos: -8.5,8.5 + parent: 1 + type: Transform + - uid: 15988 + components: + - pos: -17.5,9.5 + parent: 1 + type: Transform +- proto: CableApcStack + entities: + - uid: 2887 + components: + - pos: 25.496317,-7.99954 + parent: 1 + type: Transform + - uid: 3422 + components: + - pos: -53.87841,29.69635 + parent: 1 + type: Transform + - uid: 5643 + components: + - pos: -25.946909,26.643772 + parent: 1 + type: Transform + - uid: 15535 + components: + - pos: -4.5217714,-18.557777 + parent: 1 + type: Transform + - uid: 15990 + components: + - pos: -7.4238524,8.228333 + parent: 1 + type: Transform +- proto: CableApcStack1 + entities: + - uid: 13667 + components: + - pos: -17.665174,-14.392005 + parent: 1 + type: Transform + - count: 5 + type: Stack +- proto: Cablecuffs + entities: + - uid: 2258 + components: + - pos: 0.18249932,43.256775 + parent: 1 + type: Transform + - uid: 12773 + components: + - pos: 20.44684,28.601988 + parent: 1 + type: Transform +- proto: CableHV + entities: + - uid: 560 + components: + - pos: 4.5,5.5 + parent: 1 + type: Transform + - uid: 561 + components: + - pos: 4.5,4.5 + parent: 1 + type: Transform + - uid: 562 + components: + - pos: 4.5,3.5 + parent: 1 + type: Transform + - uid: 563 + components: + - pos: 4.5,2.5 + parent: 1 + type: Transform + - uid: 564 + components: + - pos: 4.5,1.5 + parent: 1 + type: Transform + - uid: 565 + components: + - pos: 4.5,0.5 + parent: 1 + type: Transform + - uid: 566 + components: + - pos: 4.5,-0.5 + parent: 1 + type: Transform + - uid: 567 + components: + - pos: 4.5,-1.5 + parent: 1 + type: Transform + - uid: 568 + components: + - pos: 4.5,-2.5 + parent: 1 + type: Transform + - uid: 569 + components: + - pos: 4.5,-3.5 + parent: 1 + type: Transform + - uid: 570 + components: + - pos: 4.5,-4.5 + parent: 1 + type: Transform + - uid: 571 + components: + - pos: 4.5,-5.5 + parent: 1 + type: Transform + - uid: 572 + components: + - pos: 5.5,-5.5 + parent: 1 + type: Transform + - uid: 573 + components: + - pos: 6.5,-5.5 + parent: 1 + type: Transform + - uid: 574 + components: + - pos: 7.5,-5.5 + parent: 1 + type: Transform + - uid: 594 + components: + - pos: 8.5,-5.5 + parent: 1 + type: Transform + - uid: 595 + components: + - pos: 9.5,-5.5 + parent: 1 + type: Transform + - uid: 596 + components: + - pos: 10.5,-5.5 + parent: 1 + type: Transform + - uid: 597 + components: + - pos: 11.5,-5.5 + parent: 1 + type: Transform + - uid: 598 + components: + - pos: 11.5,-6.5 + parent: 1 + type: Transform + - uid: 599 + components: + - pos: 11.5,-7.5 + parent: 1 + type: Transform + - uid: 728 + components: + - pos: 12.5,-5.5 + parent: 1 + type: Transform + - uid: 729 + components: + - pos: 13.5,-5.5 + parent: 1 + type: Transform + - uid: 730 + components: + - pos: 14.5,-5.5 + parent: 1 + type: Transform + - uid: 731 + components: + - pos: 15.5,-5.5 + parent: 1 + type: Transform + - uid: 732 + components: + - pos: 16.5,-5.5 + parent: 1 + type: Transform + - uid: 733 + components: + - pos: 17.5,-5.5 + parent: 1 + type: Transform + - uid: 734 + components: + - pos: 18.5,-5.5 + parent: 1 + type: Transform + - uid: 735 + components: + - pos: 19.5,-5.5 + parent: 1 + type: Transform + - uid: 736 + components: + - pos: 20.5,-5.5 + parent: 1 + type: Transform + - uid: 737 + components: + - pos: 21.5,-5.5 + parent: 1 + type: Transform + - uid: 738 + components: + - pos: 22.5,-5.5 + parent: 1 + type: Transform + - uid: 739 + components: + - pos: 23.5,-5.5 + parent: 1 + type: Transform + - uid: 740 + components: + - pos: 24.5,-5.5 + parent: 1 + type: Transform + - uid: 741 + components: + - pos: 25.5,-5.5 + parent: 1 + type: Transform + - uid: 742 + components: + - pos: 26.5,-5.5 + parent: 1 + type: Transform + - uid: 743 + components: + - pos: 27.5,-5.5 + parent: 1 + type: Transform + - uid: 744 + components: + - pos: 28.5,-10.5 + parent: 1 + type: Transform + - uid: 745 + components: + - pos: 28.5,-9.5 + parent: 1 + type: Transform + - uid: 746 + components: + - pos: 18.5,-14.5 + parent: 1 + type: Transform + - uid: 747 + components: + - pos: 28.5,-8.5 + parent: 1 + type: Transform + - uid: 750 + components: + - pos: 19.5,-14.5 + parent: 1 + type: Transform + - uid: 751 + components: + - pos: 20.5,-14.5 + parent: 1 + type: Transform + - uid: 752 + components: + - pos: 21.5,-14.5 + parent: 1 + type: Transform + - uid: 753 + components: + - pos: 22.5,-14.5 + parent: 1 + type: Transform + - uid: 754 + components: + - pos: 23.5,-14.5 + parent: 1 + type: Transform + - uid: 755 + components: + - pos: 24.5,-14.5 + parent: 1 + type: Transform + - uid: 756 + components: + - pos: 25.5,-14.5 + parent: 1 + type: Transform + - uid: 757 + components: + - pos: 26.5,-14.5 + parent: 1 + type: Transform + - uid: 758 + components: + - pos: 27.5,-14.5 + parent: 1 + type: Transform + - uid: 759 + components: + - pos: 18.5,-16.5 + parent: 1 + type: Transform + - uid: 760 + components: + - pos: 19.5,-16.5 + parent: 1 + type: Transform + - uid: 761 + components: + - pos: 20.5,-16.5 + parent: 1 + type: Transform + - uid: 762 + components: + - pos: 21.5,-16.5 + parent: 1 + type: Transform + - uid: 763 + components: + - pos: 22.5,-16.5 + parent: 1 + type: Transform + - uid: 764 + components: + - pos: 23.5,-16.5 + parent: 1 + type: Transform + - uid: 765 + components: + - pos: 24.5,-16.5 + parent: 1 + type: Transform + - uid: 766 + components: + - pos: 25.5,-16.5 + parent: 1 + type: Transform + - uid: 767 + components: + - pos: 26.5,-16.5 + parent: 1 + type: Transform + - uid: 768 + components: + - pos: 27.5,-16.5 + parent: 1 + type: Transform + - uid: 769 + components: + - pos: 19.5,-18.5 + parent: 1 + type: Transform + - uid: 770 + components: + - pos: 20.5,-18.5 + parent: 1 + type: Transform + - uid: 771 + components: + - pos: 21.5,-18.5 + parent: 1 + type: Transform + - uid: 772 + components: + - pos: 22.5,-18.5 + parent: 1 + type: Transform + - uid: 773 + components: + - pos: 23.5,-18.5 + parent: 1 + type: Transform + - uid: 774 + components: + - pos: 24.5,-18.5 + parent: 1 + type: Transform + - uid: 775 + components: + - pos: 25.5,-18.5 + parent: 1 + type: Transform + - uid: 776 + components: + - pos: 26.5,-18.5 + parent: 1 + type: Transform + - uid: 777 + components: + - pos: 27.5,-18.5 + parent: 1 + type: Transform + - uid: 778 + components: + - pos: 19.5,-20.5 + parent: 1 + type: Transform + - uid: 779 + components: + - pos: 20.5,-20.5 + parent: 1 + type: Transform + - uid: 780 + components: + - pos: 21.5,-20.5 + parent: 1 + type: Transform + - uid: 781 + components: + - pos: 22.5,-20.5 + parent: 1 + type: Transform + - uid: 782 + components: + - pos: 23.5,-20.5 + parent: 1 + type: Transform + - uid: 783 + components: + - pos: 24.5,-20.5 + parent: 1 + type: Transform + - uid: 784 + components: + - pos: 25.5,-20.5 + parent: 1 + type: Transform + - uid: 785 + components: + - pos: 26.5,-20.5 + parent: 1 + type: Transform + - uid: 786 + components: + - pos: 27.5,-20.5 + parent: 1 + type: Transform + - uid: 787 + components: + - pos: 20.5,-22.5 + parent: 1 + type: Transform + - uid: 788 + components: + - pos: 21.5,-22.5 + parent: 1 + type: Transform + - uid: 789 + components: + - pos: 22.5,-22.5 + parent: 1 + type: Transform + - uid: 790 + components: + - pos: 23.5,-22.5 + parent: 1 + type: Transform + - uid: 791 + components: + - pos: 24.5,-22.5 + parent: 1 + type: Transform + - uid: 792 + components: + - pos: 25.5,-22.5 + parent: 1 + type: Transform + - uid: 793 + components: + - pos: 26.5,-22.5 + parent: 1 + type: Transform + - uid: 794 + components: + - pos: 27.5,-22.5 + parent: 1 + type: Transform + - uid: 795 + components: + - pos: 20.5,-24.5 + parent: 1 + type: Transform + - uid: 796 + components: + - pos: 21.5,-24.5 + parent: 1 + type: Transform + - uid: 797 + components: + - pos: 22.5,-24.5 + parent: 1 + type: Transform + - uid: 798 + components: + - pos: 23.5,-24.5 + parent: 1 + type: Transform + - uid: 799 + components: + - pos: 24.5,-24.5 + parent: 1 + type: Transform + - uid: 800 + components: + - pos: 25.5,-24.5 + parent: 1 + type: Transform + - uid: 801 + components: + - pos: 26.5,-24.5 + parent: 1 + type: Transform + - uid: 802 + components: + - pos: 27.5,-24.5 + parent: 1 + type: Transform + - uid: 857 + components: + - pos: 28.5,-27.5 + parent: 1 + type: Transform + - uid: 858 + components: + - pos: 28.5,-26.5 + parent: 1 + type: Transform + - uid: 859 + components: + - pos: 28.5,-25.5 + parent: 1 + type: Transform + - uid: 903 + components: + - pos: 27.5,-6.5 + parent: 1 + type: Transform + - uid: 904 + components: + - pos: 27.5,-7.5 + parent: 1 + type: Transform + - uid: 905 + components: + - pos: 27.5,-8.5 + parent: 1 + type: Transform + - uid: 924 + components: + - pos: 25.5,1.5 + parent: 1 + type: Transform + - uid: 925 + components: + - pos: 25.5,2.5 + parent: 1 + type: Transform + - uid: 926 + components: + - pos: 25.5,3.5 + parent: 1 + type: Transform + - uid: 927 + components: + - pos: 26.5,3.5 + parent: 1 + type: Transform + - uid: 928 + components: + - pos: 26.5,4.5 + parent: 1 + type: Transform + - uid: 929 + components: + - pos: 26.5,5.5 + parent: 1 + type: Transform + - uid: 988 + components: + - pos: 26.5,21.5 + parent: 1 + type: Transform + - uid: 990 + components: + - pos: 26.5,25.5 + parent: 1 + type: Transform + - uid: 991 + components: + - pos: 27.5,25.5 + parent: 1 + type: Transform + - uid: 992 + components: + - pos: 28.5,25.5 + parent: 1 + type: Transform + - uid: 993 + components: + - pos: 28.5,24.5 + parent: 1 + type: Transform + - uid: 1018 + components: + - pos: 26.5,22.5 + parent: 1 + type: Transform + - uid: 1029 + components: + - pos: 26.5,20.5 + parent: 1 + type: Transform + - uid: 1506 + components: + - pos: -18.5,20.5 + parent: 1 + type: Transform + - uid: 1534 + components: + - pos: 25.5,5.5 + parent: 1 + type: Transform + - uid: 1535 + components: + - pos: 24.5,5.5 + parent: 1 + type: Transform + - uid: 1536 + components: + - pos: 23.5,5.5 + parent: 1 + type: Transform + - uid: 1537 + components: + - pos: 22.5,5.5 + parent: 1 + type: Transform + - uid: 1538 + components: + - pos: 21.5,5.5 + parent: 1 + type: Transform + - uid: 1539 + components: + - pos: 20.5,5.5 + parent: 1 + type: Transform + - uid: 1540 + components: + - pos: 19.5,5.5 + parent: 1 + type: Transform + - uid: 1541 + components: + - pos: 18.5,5.5 + parent: 1 + type: Transform + - uid: 1542 + components: + - pos: 17.5,5.5 + parent: 1 + type: Transform + - uid: 1543 + components: + - pos: 16.5,5.5 + parent: 1 + type: Transform + - uid: 1544 + components: + - pos: 15.5,5.5 + parent: 1 + type: Transform + - uid: 1545 + components: + - pos: 14.5,5.5 + parent: 1 + type: Transform + - uid: 1546 + components: + - pos: 13.5,5.5 + parent: 1 + type: Transform + - uid: 1547 + components: + - pos: 12.5,5.5 + parent: 1 + type: Transform + - uid: 1548 + components: + - pos: 11.5,5.5 + parent: 1 + type: Transform + - uid: 1549 + components: + - pos: 10.5,5.5 + parent: 1 + type: Transform + - uid: 1550 + components: + - pos: 9.5,5.5 + parent: 1 + type: Transform + - uid: 1551 + components: + - pos: 8.5,5.5 + parent: 1 + type: Transform + - uid: 1552 + components: + - pos: 7.5,5.5 + parent: 1 + type: Transform + - uid: 1553 + components: + - pos: 6.5,5.5 + parent: 1 + type: Transform + - uid: 1554 + components: + - pos: 5.5,5.5 + parent: 1 + type: Transform + - uid: 1555 + components: + - pos: 22.5,6.5 + parent: 1 + type: Transform + - uid: 1556 + components: + - pos: 22.5,7.5 + parent: 1 + type: Transform + - uid: 1557 + components: + - pos: 22.5,8.5 + parent: 1 + type: Transform + - uid: 1558 + components: + - pos: 22.5,9.5 + parent: 1 + type: Transform + - uid: 1559 + components: + - pos: 23.5,9.5 + parent: 1 + type: Transform + - uid: 1561 + components: + - pos: 3.5,5.5 + parent: 1 + type: Transform + - uid: 1562 + components: + - pos: 2.5,5.5 + parent: 1 + type: Transform + - uid: 1563 + components: + - pos: 1.5,5.5 + parent: 1 + type: Transform + - uid: 1564 + components: + - pos: 0.5,5.5 + parent: 1 + type: Transform + - uid: 1565 + components: + - pos: -0.5,5.5 + parent: 1 + type: Transform + - uid: 1566 + components: + - pos: -1.5,5.5 + parent: 1 + type: Transform + - uid: 1567 + components: + - pos: -2.5,5.5 + parent: 1 + type: Transform + - uid: 1568 + components: + - pos: -3.5,5.5 + parent: 1 + type: Transform + - uid: 1569 + components: + - pos: -4.5,5.5 + parent: 1 + type: Transform + - uid: 1570 + components: + - pos: -5.5,5.5 + parent: 1 + type: Transform + - uid: 1571 + components: + - pos: -5.5,6.5 + parent: 1 + type: Transform + - uid: 1572 + components: + - pos: -5.5,7.5 + parent: 1 + type: Transform + - uid: 1573 + components: + - pos: -5.5,8.5 + parent: 1 + type: Transform + - uid: 1574 + components: + - pos: -5.5,9.5 + parent: 1 + type: Transform + - uid: 1575 + components: + - pos: -5.5,10.5 + parent: 1 + type: Transform + - uid: 1576 + components: + - pos: -5.5,11.5 + parent: 1 + type: Transform + - uid: 1577 + components: + - pos: -5.5,12.5 + parent: 1 + type: Transform + - uid: 1578 + components: + - pos: -5.5,13.5 + parent: 1 + type: Transform + - uid: 1579 + components: + - pos: -5.5,14.5 + parent: 1 + type: Transform + - uid: 1580 + components: + - pos: -5.5,15.5 + parent: 1 + type: Transform + - uid: 1581 + components: + - pos: -5.5,16.5 + parent: 1 + type: Transform + - uid: 1582 + components: + - pos: -5.5,17.5 + parent: 1 + type: Transform + - uid: 1583 + components: + - pos: -6.5,17.5 + parent: 1 + type: Transform + - uid: 1584 + components: + - pos: -7.5,17.5 + parent: 1 + type: Transform + - uid: 1585 + components: + - pos: -8.5,17.5 + parent: 1 + type: Transform + - uid: 1586 + components: + - pos: -9.5,17.5 + parent: 1 + type: Transform + - uid: 1587 + components: + - pos: -9.5,18.5 + parent: 1 + type: Transform + - uid: 2401 + components: + - pos: -22.5,61.5 + parent: 1 + type: Transform + - uid: 2589 + components: + - pos: 28.5,23.5 + parent: 1 + type: Transform + - uid: 2777 + components: + - pos: -19.5,20.5 + parent: 1 + type: Transform + - uid: 2780 + components: + - pos: -20.5,20.5 + parent: 1 + type: Transform + - uid: 2784 + components: + - pos: -18.5,17.5 + parent: 1 + type: Transform + - uid: 2910 + components: + - pos: -13.5,20.5 + parent: 1 + type: Transform + - uid: 2921 + components: + - pos: 22.5,4.5 + parent: 1 + type: Transform + - uid: 2922 + components: + - pos: 22.5,3.5 + parent: 1 + type: Transform + - uid: 2923 + components: + - pos: 22.5,2.5 + parent: 1 + type: Transform + - uid: 2924 + components: + - pos: 22.5,1.5 + parent: 1 + type: Transform + - uid: 2925 + components: + - pos: 23.5,1.5 + parent: 1 + type: Transform + - uid: 2926 + components: + - pos: 23.5,0.5 + parent: 1 + type: Transform + - uid: 2927 + components: + - pos: 23.5,-0.5 + parent: 1 + type: Transform + - uid: 2928 + components: + - pos: 23.5,-1.5 + parent: 1 + type: Transform + - uid: 2929 + components: + - pos: 23.5,-2.5 + parent: 1 + type: Transform + - uid: 2930 + components: + - pos: 23.5,-3.5 + parent: 1 + type: Transform + - uid: 2931 + components: + - pos: 23.5,-4.5 + parent: 1 + type: Transform + - uid: 2972 + components: + - pos: 25.5,24.5 + parent: 1 + type: Transform + - uid: 2973 + components: + - pos: 25.5,23.5 + parent: 1 + type: Transform + - uid: 2974 + components: + - pos: 26.5,23.5 + parent: 1 + type: Transform + - uid: 2978 + components: + - pos: 25.5,25.5 + parent: 1 + type: Transform + - uid: 3040 + components: + - pos: -20.5,18.5 + parent: 1 + type: Transform + - uid: 3331 + components: + - pos: -6.5,18.5 + parent: 1 + type: Transform + - uid: 3332 + components: + - pos: -6.5,19.5 + parent: 1 + type: Transform + - uid: 3333 + components: + - pos: -6.5,20.5 + parent: 1 + type: Transform + - uid: 3334 + components: + - pos: -6.5,21.5 + parent: 1 + type: Transform + - uid: 3335 + components: + - pos: -6.5,22.5 + parent: 1 + type: Transform + - uid: 3336 + components: + - pos: -6.5,23.5 + parent: 1 + type: Transform + - uid: 3337 + components: + - pos: -6.5,24.5 + parent: 1 + type: Transform + - uid: 3338 + components: + - pos: -6.5,25.5 + parent: 1 + type: Transform + - uid: 3339 + components: + - pos: -7.5,25.5 + parent: 1 + type: Transform + - uid: 3340 + components: + - pos: -8.5,25.5 + parent: 1 + type: Transform + - uid: 3341 + components: + - pos: -9.5,25.5 + parent: 1 + type: Transform + - uid: 3342 + components: + - pos: -10.5,25.5 + parent: 1 + type: Transform + - uid: 3343 + components: + - pos: -11.5,25.5 + parent: 1 + type: Transform + - uid: 3344 + components: + - pos: -12.5,25.5 + parent: 1 + type: Transform + - uid: 3345 + components: + - pos: -12.5,24.5 + parent: 1 + type: Transform + - uid: 3346 + components: + - pos: -12.5,23.5 + parent: 1 + type: Transform + - uid: 3347 + components: + - pos: -12.5,22.5 + parent: 1 + type: Transform + - uid: 3348 + components: + - pos: -12.5,21.5 + parent: 1 + type: Transform + - uid: 3362 + components: + - pos: -12.5,20.5 + parent: 1 + type: Transform + - uid: 3363 + components: + - pos: -12.5,19.5 + parent: 1 + type: Transform + - uid: 3364 + components: + - pos: -12.5,18.5 + parent: 1 + type: Transform + - uid: 3365 + components: + - pos: -12.5,17.5 + parent: 1 + type: Transform + - uid: 3366 + components: + - pos: -12.5,16.5 + parent: 1 + type: Transform + - uid: 3367 + components: + - pos: -12.5,15.5 + parent: 1 + type: Transform + - uid: 3368 + components: + - pos: -12.5,14.5 + parent: 1 + type: Transform + - uid: 3369 + components: + - pos: -12.5,13.5 + parent: 1 + type: Transform + - uid: 3370 + components: + - pos: -12.5,12.5 + parent: 1 + type: Transform + - uid: 3371 + components: + - pos: -12.5,11.5 + parent: 1 + type: Transform + - uid: 3372 + components: + - pos: -12.5,10.5 + parent: 1 + type: Transform + - uid: 3373 + components: + - pos: -12.5,9.5 + parent: 1 + type: Transform + - uid: 3374 + components: + - pos: -12.5,8.5 + parent: 1 + type: Transform + - uid: 3375 + components: + - pos: -12.5,7.5 + parent: 1 + type: Transform + - uid: 3376 + components: + - pos: -12.5,6.5 + parent: 1 + type: Transform + - uid: 3377 + components: + - pos: -12.5,5.5 + parent: 1 + type: Transform + - uid: 3378 + components: + - pos: -11.5,5.5 + parent: 1 + type: Transform + - uid: 3379 + components: + - pos: -10.5,5.5 + parent: 1 + type: Transform + - uid: 3380 + components: + - pos: -9.5,5.5 + parent: 1 + type: Transform + - uid: 3381 + components: + - pos: -8.5,5.5 + parent: 1 + type: Transform + - uid: 3382 + components: + - pos: -7.5,5.5 + parent: 1 + type: Transform + - uid: 3383 + components: + - pos: -6.5,5.5 + parent: 1 + type: Transform + - uid: 3384 + components: + - pos: -12.5,26.5 + parent: 1 + type: Transform + - uid: 3385 + components: + - pos: -12.5,27.5 + parent: 1 + type: Transform + - uid: 3386 + components: + - pos: -12.5,28.5 + parent: 1 + type: Transform + - uid: 3387 + components: + - pos: -12.5,29.5 + parent: 1 + type: Transform + - uid: 3388 + components: + - pos: -12.5,30.5 + parent: 1 + type: Transform + - uid: 3389 + components: + - pos: -12.5,31.5 + parent: 1 + type: Transform + - uid: 3390 + components: + - pos: -12.5,32.5 + parent: 1 + type: Transform + - uid: 3477 + components: + - pos: -22.5,62.5 + parent: 1 + type: Transform + - uid: 3478 + components: + - pos: -22.5,60.5 + parent: 1 + type: Transform + - uid: 3907 + components: + - pos: -13.5,5.5 + parent: 1 + type: Transform + - uid: 3908 + components: + - pos: -14.5,5.5 + parent: 1 + type: Transform + - uid: 3909 + components: + - pos: -15.5,5.5 + parent: 1 + type: Transform + - uid: 3910 + components: + - pos: -16.5,5.5 + parent: 1 + type: Transform + - uid: 3911 + components: + - pos: -17.5,5.5 + parent: 1 + type: Transform + - uid: 3912 + components: + - pos: -18.5,5.5 + parent: 1 + type: Transform + - uid: 3913 + components: + - pos: -19.5,5.5 + parent: 1 + type: Transform + - uid: 3914 + components: + - pos: -20.5,5.5 + parent: 1 + type: Transform + - uid: 3915 + components: + - pos: -21.5,5.5 + parent: 1 + type: Transform + - uid: 3916 + components: + - pos: -22.5,5.5 + parent: 1 + type: Transform + - uid: 3917 + components: + - pos: -23.5,5.5 + parent: 1 + type: Transform + - uid: 3918 + components: + - pos: -24.5,5.5 + parent: 1 + type: Transform + - uid: 3919 + components: + - pos: -25.5,5.5 + parent: 1 + type: Transform + - uid: 3920 + components: + - pos: -26.5,5.5 + parent: 1 + type: Transform + - uid: 3921 + components: + - pos: -27.5,5.5 + parent: 1 + type: Transform + - uid: 3922 + components: + - pos: -28.5,5.5 + parent: 1 + type: Transform + - uid: 3923 + components: + - pos: -29.5,5.5 + parent: 1 + type: Transform + - uid: 3924 + components: + - pos: -30.5,5.5 + parent: 1 + type: Transform + - uid: 3925 + components: + - pos: -31.5,5.5 + parent: 1 + type: Transform + - uid: 3926 + components: + - pos: -32.5,5.5 + parent: 1 + type: Transform + - uid: 3927 + components: + - pos: -33.5,5.5 + parent: 1 + type: Transform + - uid: 3928 + components: + - pos: -34.5,5.5 + parent: 1 + type: Transform + - uid: 3929 + components: + - pos: -35.5,5.5 + parent: 1 + type: Transform + - uid: 3930 + components: + - pos: -36.5,5.5 + parent: 1 + type: Transform + - uid: 3931 + components: + - pos: -37.5,5.5 + parent: 1 + type: Transform + - uid: 3976 + components: + - pos: -15.5,4.5 + parent: 1 + type: Transform + - uid: 3977 + components: + - pos: -15.5,3.5 + parent: 1 + type: Transform + - uid: 3978 + components: + - pos: -15.5,2.5 + parent: 1 + type: Transform + - uid: 3979 + components: + - pos: -15.5,1.5 + parent: 1 + type: Transform + - uid: 3980 + components: + - pos: -16.5,1.5 + parent: 1 + type: Transform + - uid: 3981 + components: + - pos: -17.5,1.5 + parent: 1 + type: Transform + - uid: 3982 + components: + - pos: -18.5,1.5 + parent: 1 + type: Transform + - uid: 3983 + components: + - pos: -19.5,1.5 + parent: 1 + type: Transform + - uid: 3984 + components: + - pos: -20.5,1.5 + parent: 1 + type: Transform + - uid: 3985 + components: + - pos: -21.5,1.5 + parent: 1 + type: Transform + - uid: 3986 + components: + - pos: -21.5,0.5 + parent: 1 + type: Transform + - uid: 3987 + components: + - pos: -21.5,-0.5 + parent: 1 + type: Transform + - uid: 3988 + components: + - pos: -21.5,-1.5 + parent: 1 + type: Transform + - uid: 3989 + components: + - pos: -21.5,-2.5 + parent: 1 + type: Transform + - uid: 3990 + components: + - pos: -21.5,-3.5 + parent: 1 + type: Transform + - uid: 3991 + components: + - pos: -21.5,-4.5 + parent: 1 + type: Transform + - uid: 3992 + components: + - pos: -22.5,-4.5 + parent: 1 + type: Transform + - uid: 3993 + components: + - pos: -23.5,-4.5 + parent: 1 + type: Transform + - uid: 3994 + components: + - pos: -24.5,-4.5 + parent: 1 + type: Transform + - uid: 3995 + components: + - pos: -24.5,-3.5 + parent: 1 + type: Transform + - uid: 3996 + components: + - pos: -21.5,-5.5 + parent: 1 + type: Transform + - uid: 3997 + components: + - pos: -21.5,-6.5 + parent: 1 + type: Transform + - uid: 3998 + components: + - pos: -21.5,-7.5 + parent: 1 + type: Transform + - uid: 3999 + components: + - pos: -22.5,-7.5 + parent: 1 + type: Transform + - uid: 4000 + components: + - pos: -23.5,-7.5 + parent: 1 + type: Transform + - uid: 4001 + components: + - pos: -24.5,-7.5 + parent: 1 + type: Transform + - uid: 4002 + components: + - pos: -25.5,-7.5 + parent: 1 + type: Transform + - uid: 4003 + components: + - pos: -26.5,-7.5 + parent: 1 + type: Transform + - uid: 4004 + components: + - pos: -26.5,-6.5 + parent: 1 + type: Transform + - uid: 4005 + components: + - pos: -27.5,-6.5 + parent: 1 + type: Transform + - uid: 4006 + components: + - pos: -28.5,-6.5 + parent: 1 + type: Transform + - uid: 4007 + components: + - pos: -28.5,-5.5 + parent: 1 + type: Transform + - uid: 4008 + components: + - pos: -28.5,-4.5 + parent: 1 + type: Transform + - uid: 4009 + components: + - pos: -28.5,-3.5 + parent: 1 + type: Transform + - uid: 4010 + components: + - pos: -28.5,-2.5 + parent: 1 + type: Transform + - uid: 4011 + components: + - pos: -28.5,-1.5 + parent: 1 + type: Transform + - uid: 4012 + components: + - pos: -28.5,-0.5 + parent: 1 + type: Transform + - uid: 4013 + components: + - pos: -28.5,0.5 + parent: 1 + type: Transform + - uid: 4014 + components: + - pos: -28.5,1.5 + parent: 1 + type: Transform + - uid: 4015 + components: + - pos: -28.5,2.5 + parent: 1 + type: Transform + - uid: 4016 + components: + - pos: -28.5,3.5 + parent: 1 + type: Transform + - uid: 4017 + components: + - pos: -28.5,4.5 + parent: 1 + type: Transform + - uid: 4018 + components: + - pos: -37.5,6.5 + parent: 1 + type: Transform + - uid: 4019 + components: + - pos: -37.5,7.5 + parent: 1 + type: Transform + - uid: 4020 + components: + - pos: -37.5,8.5 + parent: 1 + type: Transform + - uid: 4021 + components: + - pos: -37.5,9.5 + parent: 1 + type: Transform + - uid: 4022 + components: + - pos: -37.5,10.5 + parent: 1 + type: Transform + - uid: 4023 + components: + - pos: -37.5,11.5 + parent: 1 + type: Transform + - uid: 4024 + components: + - pos: -37.5,12.5 + parent: 1 + type: Transform + - uid: 4025 + components: + - pos: -37.5,13.5 + parent: 1 + type: Transform + - uid: 4026 + components: + - pos: -37.5,14.5 + parent: 1 + type: Transform + - uid: 4027 + components: + - pos: -37.5,15.5 + parent: 1 + type: Transform + - uid: 4028 + components: + - pos: -37.5,16.5 + parent: 1 + type: Transform + - uid: 4029 + components: + - pos: -37.5,17.5 + parent: 1 + type: Transform + - uid: 4030 + components: + - pos: -37.5,18.5 + parent: 1 + type: Transform + - uid: 4031 + components: + - pos: -37.5,19.5 + parent: 1 + type: Transform + - uid: 4032 + components: + - pos: -37.5,20.5 + parent: 1 + type: Transform + - uid: 4033 + components: + - pos: -37.5,21.5 + parent: 1 + type: Transform + - uid: 4034 + components: + - pos: -37.5,22.5 + parent: 1 + type: Transform + - uid: 4035 + components: + - pos: -37.5,23.5 + parent: 1 + type: Transform + - uid: 4036 + components: + - pos: -37.5,24.5 + parent: 1 + type: Transform + - uid: 4037 + components: + - pos: -37.5,25.5 + parent: 1 + type: Transform + - uid: 4038 + components: + - pos: -37.5,26.5 + parent: 1 + type: Transform + - uid: 4039 + components: + - pos: -37.5,27.5 + parent: 1 + type: Transform + - uid: 4040 + components: + - pos: -37.5,28.5 + parent: 1 + type: Transform + - uid: 4041 + components: + - pos: -37.5,29.5 + parent: 1 + type: Transform + - uid: 4042 + components: + - pos: -37.5,30.5 + parent: 1 + type: Transform + - uid: 4043 + components: + - pos: -37.5,31.5 + parent: 1 + type: Transform + - uid: 4044 + components: + - pos: -37.5,32.5 + parent: 1 + type: Transform + - uid: 4045 + components: + - pos: -36.5,32.5 + parent: 1 + type: Transform + - uid: 4046 + components: + - pos: -35.5,32.5 + parent: 1 + type: Transform + - uid: 4047 + components: + - pos: -34.5,32.5 + parent: 1 + type: Transform + - uid: 4048 + components: + - pos: -33.5,32.5 + parent: 1 + type: Transform + - uid: 4049 + components: + - pos: -32.5,32.5 + parent: 1 + type: Transform + - uid: 4050 + components: + - pos: -31.5,32.5 + parent: 1 + type: Transform + - uid: 4051 + components: + - pos: -30.5,32.5 + parent: 1 + type: Transform + - uid: 4052 + components: + - pos: -29.5,32.5 + parent: 1 + type: Transform + - uid: 4053 + components: + - pos: -28.5,32.5 + parent: 1 + type: Transform + - uid: 4054 + components: + - pos: -27.5,32.5 + parent: 1 + type: Transform + - uid: 4055 + components: + - pos: -26.5,32.5 + parent: 1 + type: Transform + - uid: 4056 + components: + - pos: -25.5,32.5 + parent: 1 + type: Transform + - uid: 4057 + components: + - pos: -24.5,32.5 + parent: 1 + type: Transform + - uid: 4058 + components: + - pos: -23.5,32.5 + parent: 1 + type: Transform + - uid: 4059 + components: + - pos: -22.5,32.5 + parent: 1 + type: Transform + - uid: 4060 + components: + - pos: -21.5,32.5 + parent: 1 + type: Transform + - uid: 4061 + components: + - pos: -20.5,32.5 + parent: 1 + type: Transform + - uid: 4062 + components: + - pos: -19.5,32.5 + parent: 1 + type: Transform + - uid: 4063 + components: + - pos: -18.5,32.5 + parent: 1 + type: Transform + - uid: 4064 + components: + - pos: -17.5,32.5 + parent: 1 + type: Transform + - uid: 4065 + components: + - pos: -16.5,32.5 + parent: 1 + type: Transform + - uid: 4066 + components: + - pos: -15.5,32.5 + parent: 1 + type: Transform + - uid: 4067 + components: + - pos: -14.5,32.5 + parent: 1 + type: Transform + - uid: 4068 + components: + - pos: -13.5,32.5 + parent: 1 + type: Transform + - uid: 4378 + components: + - pos: -38.5,21.5 + parent: 1 + type: Transform + - uid: 4379 + components: + - pos: -39.5,21.5 + parent: 1 + type: Transform + - uid: 4380 + components: + - pos: -40.5,21.5 + parent: 1 + type: Transform + - uid: 4381 + components: + - pos: -41.5,21.5 + parent: 1 + type: Transform + - uid: 4382 + components: + - pos: -42.5,21.5 + parent: 1 + type: Transform + - uid: 4383 + components: + - pos: -43.5,21.5 + parent: 1 + type: Transform + - uid: 4384 + components: + - pos: -44.5,21.5 + parent: 1 + type: Transform + - uid: 4385 + components: + - pos: -45.5,21.5 + parent: 1 + type: Transform + - uid: 4386 + components: + - pos: -46.5,21.5 + parent: 1 + type: Transform + - uid: 4387 + components: + - pos: -47.5,21.5 + parent: 1 + type: Transform + - uid: 4388 + components: + - pos: -48.5,21.5 + parent: 1 + type: Transform + - uid: 4389 + components: + - pos: -49.5,21.5 + parent: 1 + type: Transform + - uid: 4390 + components: + - pos: -50.5,21.5 + parent: 1 + type: Transform + - uid: 4391 + components: + - pos: -50.5,20.5 + parent: 1 + type: Transform + - uid: 4392 + components: + - pos: -50.5,19.5 + parent: 1 + type: Transform + - uid: 4393 + components: + - pos: -50.5,18.5 + parent: 1 + type: Transform + - uid: 4394 + components: + - pos: -50.5,17.5 + parent: 1 + type: Transform + - uid: 4395 + components: + - pos: -50.5,16.5 + parent: 1 + type: Transform + - uid: 4396 + components: + - pos: -50.5,15.5 + parent: 1 + type: Transform + - uid: 4397 + components: + - pos: -50.5,14.5 + parent: 1 + type: Transform + - uid: 4398 + components: + - pos: -49.5,14.5 + parent: 1 + type: Transform + - uid: 4399 + components: + - pos: -48.5,14.5 + parent: 1 + type: Transform + - uid: 4400 + components: + - pos: -47.5,14.5 + parent: 1 + type: Transform + - uid: 4401 + components: + - pos: -46.5,14.5 + parent: 1 + type: Transform + - uid: 4402 + components: + - pos: -45.5,14.5 + parent: 1 + type: Transform + - uid: 4403 + components: + - pos: -44.5,14.5 + parent: 1 + type: Transform + - uid: 4404 + components: + - pos: -43.5,14.5 + parent: 1 + type: Transform + - uid: 4405 + components: + - pos: -42.5,14.5 + parent: 1 + type: Transform + - uid: 4406 + components: + - pos: -41.5,14.5 + parent: 1 + type: Transform + - uid: 4407 + components: + - pos: -41.5,15.5 + parent: 1 + type: Transform + - uid: 4408 + components: + - pos: -40.5,15.5 + parent: 1 + type: Transform + - uid: 4409 + components: + - pos: -44.5,13.5 + parent: 1 + type: Transform + - uid: 4410 + components: + - pos: -44.5,12.5 + parent: 1 + type: Transform + - uid: 4411 + components: + - pos: -44.5,11.5 + parent: 1 + type: Transform + - uid: 4412 + components: + - pos: -44.5,10.5 + parent: 1 + type: Transform + - uid: 4413 + components: + - pos: -44.5,9.5 + parent: 1 + type: Transform + - uid: 4414 + components: + - pos: -44.5,8.5 + parent: 1 + type: Transform + - uid: 4415 + components: + - pos: -44.5,7.5 + parent: 1 + type: Transform + - uid: 4416 + components: + - pos: -44.5,6.5 + parent: 1 + type: Transform + - uid: 4417 + components: + - pos: -44.5,5.5 + parent: 1 + type: Transform + - uid: 4418 + components: + - pos: -43.5,5.5 + parent: 1 + type: Transform + - uid: 4419 + components: + - pos: -42.5,5.5 + parent: 1 + type: Transform + - uid: 4420 + components: + - pos: -41.5,5.5 + parent: 1 + type: Transform + - uid: 4421 + components: + - pos: -40.5,5.5 + parent: 1 + type: Transform + - uid: 4422 + components: + - pos: -39.5,5.5 + parent: 1 + type: Transform + - uid: 4423 + components: + - pos: -38.5,5.5 + parent: 1 + type: Transform + - uid: 4711 + components: + - pos: 15.5,37.5 + parent: 1 + type: Transform + - uid: 5181 + components: + - pos: -60.5,7.5 + parent: 1 + type: Transform + - uid: 5186 + components: + - pos: -89.5,19.5 + parent: 1 + type: Transform + - uid: 5502 + components: + - pos: -16.5,17.5 + parent: 1 + type: Transform + - uid: 5504 + components: + - pos: -15.5,17.5 + parent: 1 + type: Transform + - uid: 5572 + components: + - pos: -20.5,19.5 + parent: 1 + type: Transform + - uid: 5575 + components: + - pos: -17.5,20.5 + parent: 1 + type: Transform + - uid: 5662 + components: + - pos: -15.5,20.5 + parent: 1 + type: Transform + - uid: 5664 + components: + - pos: -14.5,20.5 + parent: 1 + type: Transform + - uid: 5667 + components: + - pos: -16.5,20.5 + parent: 1 + type: Transform + - uid: 5678 + components: + - pos: -19.5,17.5 + parent: 1 + type: Transform + - uid: 5682 + components: + - pos: -20.5,17.5 + parent: 1 + type: Transform + - uid: 5721 + components: + - pos: -17.5,17.5 + parent: 1 + type: Transform + - uid: 6083 + components: + - pos: -16.5,33.5 + parent: 1 + type: Transform + - uid: 6084 + components: + - pos: -16.5,34.5 + parent: 1 + type: Transform + - uid: 6085 + components: + - pos: -16.5,35.5 + parent: 1 + type: Transform + - uid: 6086 + components: + - pos: -16.5,36.5 + parent: 1 + type: Transform + - uid: 6087 + components: + - pos: -16.5,37.5 + parent: 1 + type: Transform + - uid: 6088 + components: + - pos: -16.5,38.5 + parent: 1 + type: Transform + - uid: 6089 + components: + - pos: -16.5,39.5 + parent: 1 + type: Transform + - uid: 6090 + components: + - pos: -16.5,40.5 + parent: 1 + type: Transform + - uid: 6091 + components: + - pos: -16.5,41.5 + parent: 1 + type: Transform + - uid: 6092 + components: + - pos: -16.5,42.5 + parent: 1 + type: Transform + - uid: 6093 + components: + - pos: -16.5,43.5 + parent: 1 + type: Transform + - uid: 6094 + components: + - pos: -16.5,44.5 + parent: 1 + type: Transform + - uid: 6095 + components: + - pos: -16.5,45.5 + parent: 1 + type: Transform + - uid: 6096 + components: + - pos: -16.5,46.5 + parent: 1 + type: Transform + - uid: 6097 + components: + - pos: -16.5,47.5 + parent: 1 + type: Transform + - uid: 6098 + components: + - pos: -16.5,48.5 + parent: 1 + type: Transform + - uid: 6099 + components: + - pos: -16.5,49.5 + parent: 1 + type: Transform + - uid: 6100 + components: + - pos: -16.5,50.5 + parent: 1 + type: Transform + - uid: 6101 + components: + - pos: -16.5,51.5 + parent: 1 + type: Transform + - uid: 6102 + components: + - pos: -15.5,51.5 + parent: 1 + type: Transform + - uid: 6103 + components: + - pos: -14.5,51.5 + parent: 1 + type: Transform + - uid: 6104 + components: + - pos: -13.5,51.5 + parent: 1 + type: Transform + - uid: 6105 + components: + - pos: -12.5,51.5 + parent: 1 + type: Transform + - uid: 6106 + components: + - pos: -11.5,51.5 + parent: 1 + type: Transform + - uid: 6107 + components: + - pos: -10.5,51.5 + parent: 1 + type: Transform + - uid: 6108 + components: + - pos: -9.5,51.5 + parent: 1 + type: Transform + - uid: 6109 + components: + - pos: -8.5,51.5 + parent: 1 + type: Transform + - uid: 6110 + components: + - pos: -7.5,51.5 + parent: 1 + type: Transform + - uid: 6111 + components: + - pos: -7.5,50.5 + parent: 1 + type: Transform + - uid: 6112 + components: + - pos: -7.5,49.5 + parent: 1 + type: Transform + - uid: 6113 + components: + - pos: -7.5,48.5 + parent: 1 + type: Transform + - uid: 6114 + components: + - pos: -7.5,47.5 + parent: 1 + type: Transform + - uid: 6115 + components: + - pos: -6.5,47.5 + parent: 1 + type: Transform + - uid: 6116 + components: + - pos: -5.5,47.5 + parent: 1 + type: Transform + - uid: 6117 + components: + - pos: -4.5,47.5 + parent: 1 + type: Transform + - uid: 6118 + components: + - pos: -3.5,47.5 + parent: 1 + type: Transform + - uid: 6119 + components: + - pos: -2.5,47.5 + parent: 1 + type: Transform + - uid: 6120 + components: + - pos: -1.5,47.5 + parent: 1 + type: Transform + - uid: 6121 + components: + - pos: -0.5,47.5 + parent: 1 + type: Transform + - uid: 6122 + components: + - pos: 0.5,47.5 + parent: 1 + type: Transform + - uid: 6123 + components: + - pos: 1.5,47.5 + parent: 1 + type: Transform + - uid: 6124 + components: + - pos: 2.5,47.5 + parent: 1 + type: Transform + - uid: 6125 + components: + - pos: 3.5,47.5 + parent: 1 + type: Transform + - uid: 6126 + components: + - pos: 4.5,47.5 + parent: 1 + type: Transform + - uid: 6127 + components: + - pos: 5.5,47.5 + parent: 1 + type: Transform + - uid: 6128 + components: + - pos: 6.5,47.5 + parent: 1 + type: Transform + - uid: 6129 + components: + - pos: 7.5,47.5 + parent: 1 + type: Transform + - uid: 6130 + components: + - pos: 7.5,48.5 + parent: 1 + type: Transform + - uid: 6131 + components: + - pos: 8.5,48.5 + parent: 1 + type: Transform + - uid: 6132 + components: + - pos: 9.5,48.5 + parent: 1 + type: Transform + - uid: 6133 + components: + - pos: 10.5,48.5 + parent: 1 + type: Transform + - uid: 6134 + components: + - pos: 11.5,48.5 + parent: 1 + type: Transform + - uid: 6135 + components: + - pos: 12.5,48.5 + parent: 1 + type: Transform + - uid: 6136 + components: + - pos: 13.5,48.5 + parent: 1 + type: Transform + - uid: 6137 + components: + - pos: 14.5,48.5 + parent: 1 + type: Transform + - uid: 6138 + components: + - pos: 15.5,48.5 + parent: 1 + type: Transform + - uid: 6139 + components: + - pos: 15.5,47.5 + parent: 1 + type: Transform + - uid: 6140 + components: + - pos: 15.5,46.5 + parent: 1 + type: Transform + - uid: 6141 + components: + - pos: 15.5,45.5 + parent: 1 + type: Transform + - uid: 6142 + components: + - pos: 16.5,45.5 + parent: 1 + type: Transform + - uid: 6143 + components: + - pos: 17.5,45.5 + parent: 1 + type: Transform + - uid: 6145 + components: + - pos: 18.5,46.5 + parent: 1 + type: Transform + - uid: 6146 + components: + - pos: 15.5,44.5 + parent: 1 + type: Transform + - uid: 6147 + components: + - pos: 15.5,43.5 + parent: 1 + type: Transform + - uid: 6148 + components: + - pos: 15.5,42.5 + parent: 1 + type: Transform + - uid: 6149 + components: + - pos: 15.5,41.5 + parent: 1 + type: Transform + - uid: 6150 + components: + - pos: 15.5,40.5 + parent: 1 + type: Transform + - uid: 6151 + components: + - pos: 15.5,39.5 + parent: 1 + type: Transform + - uid: 6152 + components: + - pos: 15.5,38.5 + parent: 1 + type: Transform + - uid: 6155 + components: + - pos: 15.5,35.5 + parent: 1 + type: Transform + - uid: 6156 + components: + - pos: 16.5,35.5 + parent: 1 + type: Transform + - uid: 6157 + components: + - pos: 17.5,35.5 + parent: 1 + type: Transform + - uid: 6158 + components: + - pos: 18.5,35.5 + parent: 1 + type: Transform + - uid: 6159 + components: + - pos: 19.5,35.5 + parent: 1 + type: Transform + - uid: 6160 + components: + - pos: 20.5,35.5 + parent: 1 + type: Transform + - uid: 6161 + components: + - pos: 21.5,35.5 + parent: 1 + type: Transform + - uid: 6162 + components: + - pos: 22.5,35.5 + parent: 1 + type: Transform + - uid: 6163 + components: + - pos: 23.5,35.5 + parent: 1 + type: Transform + - uid: 6164 + components: + - pos: 23.5,34.5 + parent: 1 + type: Transform + - uid: 6165 + components: + - pos: 23.5,33.5 + parent: 1 + type: Transform + - uid: 6166 + components: + - pos: 23.5,32.5 + parent: 1 + type: Transform + - uid: 6167 + components: + - pos: 23.5,31.5 + parent: 1 + type: Transform + - uid: 6168 + components: + - pos: 23.5,30.5 + parent: 1 + type: Transform + - uid: 6169 + components: + - pos: 23.5,29.5 + parent: 1 + type: Transform + - uid: 6170 + components: + - pos: 23.5,28.5 + parent: 1 + type: Transform + - uid: 6171 + components: + - pos: 23.5,27.5 + parent: 1 + type: Transform + - uid: 6172 + components: + - pos: 23.5,26.5 + parent: 1 + type: Transform + - uid: 6173 + components: + - pos: 23.5,25.5 + parent: 1 + type: Transform + - uid: 6174 + components: + - pos: 23.5,24.5 + parent: 1 + type: Transform + - uid: 6175 + components: + - pos: 23.5,23.5 + parent: 1 + type: Transform + - uid: 6176 + components: + - pos: 23.5,22.5 + parent: 1 + type: Transform + - uid: 6177 + components: + - pos: 23.5,21.5 + parent: 1 + type: Transform + - uid: 6178 + components: + - pos: 23.5,20.5 + parent: 1 + type: Transform + - uid: 6179 + components: + - pos: 23.5,19.5 + parent: 1 + type: Transform + - uid: 6180 + components: + - pos: 24.5,19.5 + parent: 1 + type: Transform + - uid: 6181 + components: + - pos: 25.5,19.5 + parent: 1 + type: Transform + - uid: 6182 + components: + - pos: 26.5,19.5 + parent: 1 + type: Transform + - uid: 6183 + components: + - pos: 26.5,18.5 + parent: 1 + type: Transform + - uid: 6184 + components: + - pos: 26.5,17.5 + parent: 1 + type: Transform + - uid: 6185 + components: + - pos: 26.5,16.5 + parent: 1 + type: Transform + - uid: 6186 + components: + - pos: 26.5,15.5 + parent: 1 + type: Transform + - uid: 6187 + components: + - pos: 26.5,14.5 + parent: 1 + type: Transform + - uid: 6188 + components: + - pos: 26.5,13.5 + parent: 1 + type: Transform + - uid: 6189 + components: + - pos: 26.5,12.5 + parent: 1 + type: Transform + - uid: 6190 + components: + - pos: 26.5,11.5 + parent: 1 + type: Transform + - uid: 6191 + components: + - pos: 26.5,10.5 + parent: 1 + type: Transform + - uid: 6192 + components: + - pos: 26.5,9.5 + parent: 1 + type: Transform + - uid: 6193 + components: + - pos: 26.5,8.5 + parent: 1 + type: Transform + - uid: 6194 + components: + - pos: 26.5,7.5 + parent: 1 + type: Transform + - uid: 6195 + components: + - pos: 26.5,6.5 + parent: 1 + type: Transform + - uid: 6265 + components: + - pos: 15.5,36.5 + parent: 1 + type: Transform + - uid: 6320 + components: + - pos: -20.5,64.5 + parent: 1 + type: Transform + - uid: 6526 + components: + - pos: -18.5,64.5 + parent: 1 + type: Transform + - uid: 6529 + components: + - pos: -16.5,52.5 + parent: 1 + type: Transform + - uid: 6530 + components: + - pos: -16.5,53.5 + parent: 1 + type: Transform + - uid: 6531 + components: + - pos: -16.5,54.5 + parent: 1 + type: Transform + - uid: 6532 + components: + - pos: -16.5,55.5 + parent: 1 + type: Transform + - uid: 6533 + components: + - pos: -15.5,55.5 + parent: 1 + type: Transform + - uid: 6534 + components: + - pos: -14.5,55.5 + parent: 1 + type: Transform + - uid: 6535 + components: + - pos: -13.5,55.5 + parent: 1 + type: Transform + - uid: 6536 + components: + - pos: -12.5,55.5 + parent: 1 + type: Transform + - uid: 6537 + components: + - pos: -11.5,55.5 + parent: 1 + type: Transform + - uid: 6538 + components: + - pos: -10.5,55.5 + parent: 1 + type: Transform + - uid: 6539 + components: + - pos: -9.5,55.5 + parent: 1 + type: Transform + - uid: 6540 + components: + - pos: -8.5,55.5 + parent: 1 + type: Transform + - uid: 6541 + components: + - pos: -7.5,55.5 + parent: 1 + type: Transform + - uid: 6542 + components: + - pos: -6.5,55.5 + parent: 1 + type: Transform + - uid: 6543 + components: + - pos: -5.5,55.5 + parent: 1 + type: Transform + - uid: 6544 + components: + - pos: -4.5,55.5 + parent: 1 + type: Transform + - uid: 6545 + components: + - pos: -3.5,55.5 + parent: 1 + type: Transform + - uid: 6546 + components: + - pos: -3.5,56.5 + parent: 1 + type: Transform + - uid: 6550 + components: + - pos: -3.5,57.5 + parent: 1 + type: Transform + - uid: 6551 + components: + - pos: -4.5,57.5 + parent: 1 + type: Transform + - uid: 6552 + components: + - pos: -4.5,58.5 + parent: 1 + type: Transform + - uid: 6553 + components: + - pos: -4.5,59.5 + parent: 1 + type: Transform + - uid: 6554 + components: + - pos: -4.5,60.5 + parent: 1 + type: Transform + - uid: 6555 + components: + - pos: -4.5,61.5 + parent: 1 + type: Transform + - uid: 6557 + components: + - pos: -5.5,62.5 + parent: 1 + type: Transform + - uid: 6558 + components: + - pos: -6.5,62.5 + parent: 1 + type: Transform + - uid: 6559 + components: + - pos: -7.5,62.5 + parent: 1 + type: Transform + - uid: 6560 + components: + - pos: -8.5,62.5 + parent: 1 + type: Transform + - uid: 6561 + components: + - pos: -9.5,62.5 + parent: 1 + type: Transform + - uid: 6616 + components: + - pos: -15.5,56.5 + parent: 1 + type: Transform + - uid: 6617 + components: + - pos: -15.5,57.5 + parent: 1 + type: Transform + - uid: 6618 + components: + - pos: -15.5,58.5 + parent: 1 + type: Transform + - uid: 6619 + components: + - pos: -15.5,59.5 + parent: 1 + type: Transform + - uid: 6620 + components: + - pos: -15.5,60.5 + parent: 1 + type: Transform + - uid: 6621 + components: + - pos: -15.5,61.5 + parent: 1 + type: Transform + - uid: 6622 + components: + - pos: -15.5,62.5 + parent: 1 + type: Transform + - uid: 6623 + components: + - pos: -15.5,63.5 + parent: 1 + type: Transform + - uid: 6624 + components: + - pos: -15.5,64.5 + parent: 1 + type: Transform + - uid: 6625 + components: + - pos: -14.5,64.5 + parent: 1 + type: Transform + - uid: 6626 + components: + - pos: -13.5,64.5 + parent: 1 + type: Transform + - uid: 6627 + components: + - pos: -12.5,64.5 + parent: 1 + type: Transform + - uid: 6628 + components: + - pos: -11.5,64.5 + parent: 1 + type: Transform + - uid: 6629 + components: + - pos: -12.5,65.5 + parent: 1 + type: Transform + - uid: 6630 + components: + - pos: -11.5,65.5 + parent: 1 + type: Transform + - uid: 6631 + components: + - pos: -12.5,66.5 + parent: 1 + type: Transform + - uid: 6632 + components: + - pos: -13.5,66.5 + parent: 1 + type: Transform + - uid: 6633 + components: + - pos: -13.5,67.5 + parent: 1 + type: Transform + - uid: 6634 + components: + - pos: -14.5,67.5 + parent: 1 + type: Transform + - uid: 6635 + components: + - pos: -15.5,67.5 + parent: 1 + type: Transform + - uid: 6636 + components: + - pos: -16.5,67.5 + parent: 1 + type: Transform + - uid: 6637 + components: + - pos: -17.5,67.5 + parent: 1 + type: Transform + - uid: 6638 + components: + - pos: -18.5,67.5 + parent: 1 + type: Transform + - uid: 6639 + components: + - pos: -19.5,67.5 + parent: 1 + type: Transform + - uid: 6640 + components: + - pos: -19.5,66.5 + parent: 1 + type: Transform + - uid: 6641 + components: + - pos: -20.5,66.5 + parent: 1 + type: Transform + - uid: 6642 + components: + - pos: -20.5,65.5 + parent: 1 + type: Transform + - uid: 6643 + components: + - pos: -21.5,65.5 + parent: 1 + type: Transform + - uid: 6644 + components: + - pos: -21.5,64.5 + parent: 1 + type: Transform + - uid: 7285 + components: + - pos: -43.5,55.5 + parent: 1 + type: Transform + - uid: 7587 + components: + - pos: -19.5,51.5 + parent: 1 + type: Transform + - uid: 7588 + components: + - pos: -20.5,51.5 + parent: 1 + type: Transform + - uid: 7589 + components: + - pos: -21.5,51.5 + parent: 1 + type: Transform + - uid: 7590 + components: + - pos: -22.5,51.5 + parent: 1 + type: Transform + - uid: 7591 + components: + - pos: -23.5,51.5 + parent: 1 + type: Transform + - uid: 7592 + components: + - pos: -24.5,51.5 + parent: 1 + type: Transform + - uid: 7593 + components: + - pos: -25.5,50.5 + parent: 1 + type: Transform + - uid: 7594 + components: + - pos: -17.5,51.5 + parent: 1 + type: Transform + - uid: 7595 + components: + - pos: -24.5,50.5 + parent: 1 + type: Transform + - uid: 7596 + components: + - pos: -24.5,49.5 + parent: 1 + type: Transform + - uid: 7597 + components: + - pos: -24.5,48.5 + parent: 1 + type: Transform + - uid: 7598 + components: + - pos: -24.5,47.5 + parent: 1 + type: Transform + - uid: 7599 + components: + - pos: -24.5,46.5 + parent: 1 + type: Transform + - uid: 7600 + components: + - pos: -24.5,45.5 + parent: 1 + type: Transform + - uid: 7601 + components: + - pos: -24.5,44.5 + parent: 1 + type: Transform + - uid: 7602 + components: + - pos: -24.5,43.5 + parent: 1 + type: Transform + - uid: 7603 + components: + - pos: -24.5,42.5 + parent: 1 + type: Transform + - uid: 7604 + components: + - pos: -24.5,41.5 + parent: 1 + type: Transform + - uid: 7605 + components: + - pos: -24.5,40.5 + parent: 1 + type: Transform + - uid: 7606 + components: + - pos: -24.5,39.5 + parent: 1 + type: Transform + - uid: 7607 + components: + - pos: -24.5,38.5 + parent: 1 + type: Transform + - uid: 7608 + components: + - pos: -24.5,37.5 + parent: 1 + type: Transform + - uid: 7609 + components: + - pos: -24.5,36.5 + parent: 1 + type: Transform + - uid: 7610 + components: + - pos: -24.5,35.5 + parent: 1 + type: Transform + - uid: 7611 + components: + - pos: -24.5,34.5 + parent: 1 + type: Transform + - uid: 7612 + components: + - pos: -24.5,33.5 + parent: 1 + type: Transform + - uid: 7613 + components: + - pos: -26.5,50.5 + parent: 1 + type: Transform + - uid: 7614 + components: + - pos: -27.5,50.5 + parent: 1 + type: Transform + - uid: 7615 + components: + - pos: -28.5,50.5 + parent: 1 + type: Transform + - uid: 7616 + components: + - pos: -29.5,50.5 + parent: 1 + type: Transform + - uid: 7617 + components: + - pos: -30.5,50.5 + parent: 1 + type: Transform + - uid: 7618 + components: + - pos: -31.5,50.5 + parent: 1 + type: Transform + - uid: 7619 + components: + - pos: -32.5,50.5 + parent: 1 + type: Transform + - uid: 7620 + components: + - pos: -32.5,51.5 + parent: 1 + type: Transform + - uid: 7621 + components: + - pos: -32.5,52.5 + parent: 1 + type: Transform + - uid: 7622 + components: + - pos: -32.5,53.5 + parent: 1 + type: Transform + - uid: 7623 + components: + - pos: -32.5,54.5 + parent: 1 + type: Transform + - uid: 7624 + components: + - pos: -32.5,55.5 + parent: 1 + type: Transform + - uid: 7625 + components: + - pos: -33.5,55.5 + parent: 1 + type: Transform + - uid: 7626 + components: + - pos: -34.5,55.5 + parent: 1 + type: Transform + - uid: 7627 + components: + - pos: -34.5,56.5 + parent: 1 + type: Transform + - uid: 7628 + components: + - pos: -34.5,57.5 + parent: 1 + type: Transform + - uid: 7629 + components: + - pos: -35.5,57.5 + parent: 1 + type: Transform + - uid: 7630 + components: + - pos: -35.5,55.5 + parent: 1 + type: Transform + - uid: 7631 + components: + - pos: -36.5,55.5 + parent: 1 + type: Transform + - uid: 7632 + components: + - pos: -37.5,55.5 + parent: 1 + type: Transform + - uid: 7633 + components: + - pos: -38.5,55.5 + parent: 1 + type: Transform + - uid: 7634 + components: + - pos: -39.5,55.5 + parent: 1 + type: Transform + - uid: 7635 + components: + - pos: -40.5,55.5 + parent: 1 + type: Transform + - uid: 7636 + components: + - pos: -41.5,55.5 + parent: 1 + type: Transform + - uid: 7650 + components: + - pos: -47.5,47.5 + parent: 1 + type: Transform + - uid: 7651 + components: + - pos: -47.5,46.5 + parent: 1 + type: Transform + - uid: 7652 + components: + - pos: -47.5,45.5 + parent: 1 + type: Transform + - uid: 7653 + components: + - pos: -47.5,44.5 + parent: 1 + type: Transform + - uid: 7654 + components: + - pos: -47.5,43.5 + parent: 1 + type: Transform + - uid: 7655 + components: + - pos: -47.5,42.5 + parent: 1 + type: Transform + - uid: 7656 + components: + - pos: -47.5,41.5 + parent: 1 + type: Transform + - uid: 7657 + components: + - pos: -47.5,40.5 + parent: 1 + type: Transform + - uid: 7658 + components: + - pos: -47.5,39.5 + parent: 1 + type: Transform + - uid: 7659 + components: + - pos: -47.5,38.5 + parent: 1 + type: Transform + - uid: 7660 + components: + - pos: -47.5,37.5 + parent: 1 + type: Transform + - uid: 7661 + components: + - pos: -47.5,36.5 + parent: 1 + type: Transform + - uid: 7662 + components: + - pos: -47.5,35.5 + parent: 1 + type: Transform + - uid: 7663 + components: + - pos: -47.5,34.5 + parent: 1 + type: Transform + - uid: 7664 + components: + - pos: -47.5,33.5 + parent: 1 + type: Transform + - uid: 7665 + components: + - pos: -47.5,32.5 + parent: 1 + type: Transform + - uid: 7666 + components: + - pos: -46.5,32.5 + parent: 1 + type: Transform + - uid: 7667 + components: + - pos: -45.5,32.5 + parent: 1 + type: Transform + - uid: 7668 + components: + - pos: -44.5,32.5 + parent: 1 + type: Transform + - uid: 7669 + components: + - pos: -43.5,32.5 + parent: 1 + type: Transform + - uid: 7670 + components: + - pos: -42.5,32.5 + parent: 1 + type: Transform + - uid: 7671 + components: + - pos: -41.5,32.5 + parent: 1 + type: Transform + - uid: 7672 + components: + - pos: -40.5,32.5 + parent: 1 + type: Transform + - uid: 7673 + components: + - pos: -39.5,32.5 + parent: 1 + type: Transform + - uid: 7674 + components: + - pos: -38.5,32.5 + parent: 1 + type: Transform + - uid: 7675 + components: + - pos: -48.5,32.5 + parent: 1 + type: Transform + - uid: 7676 + components: + - pos: -49.5,32.5 + parent: 1 + type: Transform + - uid: 7677 + components: + - pos: -50.5,32.5 + parent: 1 + type: Transform + - uid: 7678 + components: + - pos: -51.5,32.5 + parent: 1 + type: Transform + - uid: 7679 + components: + - pos: -52.5,32.5 + parent: 1 + type: Transform + - uid: 7680 + components: + - pos: -53.5,32.5 + parent: 1 + type: Transform + - uid: 7681 + components: + - pos: -54.5,32.5 + parent: 1 + type: Transform + - uid: 7682 + components: + - pos: -55.5,32.5 + parent: 1 + type: Transform + - uid: 7683 + components: + - pos: -56.5,32.5 + parent: 1 + type: Transform + - uid: 7684 + components: + - pos: -57.5,32.5 + parent: 1 + type: Transform + - uid: 7685 + components: + - pos: -57.5,33.5 + parent: 1 + type: Transform + - uid: 7686 + components: + - pos: -57.5,34.5 + parent: 1 + type: Transform + - uid: 7687 + components: + - pos: -57.5,35.5 + parent: 1 + type: Transform + - uid: 7688 + components: + - pos: -57.5,36.5 + parent: 1 + type: Transform + - uid: 7689 + components: + - pos: -57.5,37.5 + parent: 1 + type: Transform + - uid: 7690 + components: + - pos: -57.5,38.5 + parent: 1 + type: Transform + - uid: 7691 + components: + - pos: -57.5,39.5 + parent: 1 + type: Transform + - uid: 7692 + components: + - pos: -57.5,40.5 + parent: 1 + type: Transform + - uid: 7693 + components: + - pos: -57.5,41.5 + parent: 1 + type: Transform + - uid: 7694 + components: + - pos: -57.5,42.5 + parent: 1 + type: Transform + - uid: 7695 + components: + - pos: -57.5,43.5 + parent: 1 + type: Transform + - uid: 7696 + components: + - pos: -57.5,44.5 + parent: 1 + type: Transform + - uid: 7697 + components: + - pos: -57.5,45.5 + parent: 1 + type: Transform + - uid: 7698 + components: + - pos: -57.5,46.5 + parent: 1 + type: Transform + - uid: 7699 + components: + - pos: -57.5,47.5 + parent: 1 + type: Transform + - uid: 7700 + components: + - pos: -56.5,47.5 + parent: 1 + type: Transform + - uid: 7701 + components: + - pos: -55.5,47.5 + parent: 1 + type: Transform + - uid: 7702 + components: + - pos: -54.5,47.5 + parent: 1 + type: Transform + - uid: 7703 + components: + - pos: -53.5,47.5 + parent: 1 + type: Transform + - uid: 7704 + components: + - pos: -52.5,47.5 + parent: 1 + type: Transform + - uid: 7705 + components: + - pos: -51.5,47.5 + parent: 1 + type: Transform + - uid: 7706 + components: + - pos: -50.5,47.5 + parent: 1 + type: Transform + - uid: 7707 + components: + - pos: -49.5,47.5 + parent: 1 + type: Transform + - uid: 7708 + components: + - pos: -48.5,47.5 + parent: 1 + type: Transform + - uid: 7720 + components: + - pos: -58.5,47.5 + parent: 1 + type: Transform + - uid: 7884 + components: + - pos: -44.5,55.5 + parent: 1 + type: Transform + - uid: 7885 + components: + - pos: -44.5,54.5 + parent: 1 + type: Transform + - uid: 7886 + components: + - pos: -44.5,53.5 + parent: 1 + type: Transform + - uid: 7887 + components: + - pos: -44.5,52.5 + parent: 1 + type: Transform + - uid: 7888 + components: + - pos: -44.5,51.5 + parent: 1 + type: Transform + - uid: 7889 + components: + - pos: -44.5,50.5 + parent: 1 + type: Transform + - uid: 7890 + components: + - pos: -44.5,49.5 + parent: 1 + type: Transform + - uid: 7891 + components: + - pos: -45.5,49.5 + parent: 1 + type: Transform + - uid: 7892 + components: + - pos: -46.5,49.5 + parent: 1 + type: Transform + - uid: 7893 + components: + - pos: -47.5,49.5 + parent: 1 + type: Transform + - uid: 7894 + components: + - pos: -47.5,48.5 + parent: 1 + type: Transform + - uid: 8474 + components: + - pos: -58.5,32.5 + parent: 1 + type: Transform + - uid: 8504 + components: + - pos: -58.5,18.5 + parent: 1 + type: Transform + - uid: 8505 + components: + - pos: -57.5,18.5 + parent: 1 + type: Transform + - uid: 8506 + components: + - pos: -57.5,19.5 + parent: 1 + type: Transform + - uid: 8507 + components: + - pos: -57.5,20.5 + parent: 1 + type: Transform + - uid: 8508 + components: + - pos: -57.5,21.5 + parent: 1 + type: Transform + - uid: 8509 + components: + - pos: -57.5,22.5 + parent: 1 + type: Transform + - uid: 8510 + components: + - pos: -57.5,23.5 + parent: 1 + type: Transform + - uid: 8511 + components: + - pos: -57.5,24.5 + parent: 1 + type: Transform + - uid: 8512 + components: + - pos: -57.5,25.5 + parent: 1 + type: Transform + - uid: 8513 + components: + - pos: -57.5,26.5 + parent: 1 + type: Transform + - uid: 8514 + components: + - pos: -57.5,27.5 + parent: 1 + type: Transform + - uid: 8515 + components: + - pos: -57.5,28.5 + parent: 1 + type: Transform + - uid: 8516 + components: + - pos: -57.5,29.5 + parent: 1 + type: Transform + - uid: 8517 + components: + - pos: -57.5,30.5 + parent: 1 + type: Transform + - uid: 8518 + components: + - pos: -57.5,31.5 + parent: 1 + type: Transform + - uid: 8548 + components: + - pos: -57.5,17.5 + parent: 1 + type: Transform + - uid: 8549 + components: + - pos: -57.5,16.5 + parent: 1 + type: Transform + - uid: 8550 + components: + - pos: -57.5,15.5 + parent: 1 + type: Transform + - uid: 8551 + components: + - pos: -57.5,14.5 + parent: 1 + type: Transform + - uid: 8552 + components: + - pos: -57.5,13.5 + parent: 1 + type: Transform + - uid: 8553 + components: + - pos: -57.5,12.5 + parent: 1 + type: Transform + - uid: 8554 + components: + - pos: -57.5,11.5 + parent: 1 + type: Transform + - uid: 8555 + components: + - pos: -57.5,10.5 + parent: 1 + type: Transform + - uid: 8556 + components: + - pos: -57.5,9.5 + parent: 1 + type: Transform + - uid: 8557 + components: + - pos: -57.5,8.5 + parent: 1 + type: Transform + - uid: 8558 + components: + - pos: -57.5,7.5 + parent: 1 + type: Transform + - uid: 8559 + components: + - pos: -57.5,6.5 + parent: 1 + type: Transform + - uid: 8560 + components: + - pos: -57.5,5.5 + parent: 1 + type: Transform + - uid: 8561 + components: + - pos: -56.5,5.5 + parent: 1 + type: Transform + - uid: 8562 + components: + - pos: -55.5,5.5 + parent: 1 + type: Transform + - uid: 8563 + components: + - pos: -54.5,5.5 + parent: 1 + type: Transform + - uid: 8564 + components: + - pos: -53.5,5.5 + parent: 1 + type: Transform + - uid: 8565 + components: + - pos: -52.5,5.5 + parent: 1 + type: Transform + - uid: 8566 + components: + - pos: -51.5,5.5 + parent: 1 + type: Transform + - uid: 8567 + components: + - pos: -50.5,5.5 + parent: 1 + type: Transform + - uid: 8568 + components: + - pos: -49.5,5.5 + parent: 1 + type: Transform + - uid: 8569 + components: + - pos: -48.5,5.5 + parent: 1 + type: Transform + - uid: 8570 + components: + - pos: -47.5,5.5 + parent: 1 + type: Transform + - uid: 8571 + components: + - pos: -46.5,5.5 + parent: 1 + type: Transform + - uid: 8572 + components: + - pos: -45.5,5.5 + parent: 1 + type: Transform + - uid: 8929 + components: + - pos: -42.5,55.5 + parent: 1 + type: Transform + - uid: 9061 + components: + - pos: -17.5,64.5 + parent: 1 + type: Transform + - uid: 9201 + components: + - pos: -64.5,36.5 + parent: 1 + type: Transform + - uid: 9308 + components: + - pos: -69.5,26.5 + parent: 1 + type: Transform + - uid: 9309 + components: + - pos: -69.5,28.5 + parent: 1 + type: Transform + - uid: 9489 + components: + - pos: -18.5,51.5 + parent: 1 + type: Transform + - uid: 9606 + components: + - pos: -80.5,27.5 + parent: 1 + type: Transform + - uid: 9607 + components: + - pos: -79.5,27.5 + parent: 1 + type: Transform + - uid: 9854 + components: + - pos: -69.5,23.5 + parent: 1 + type: Transform + - uid: 9859 + components: + - pos: -69.5,27.5 + parent: 1 + type: Transform + - uid: 9860 + components: + - pos: -79.5,26.5 + parent: 1 + type: Transform + - uid: 9914 + components: + - pos: -21.5,63.5 + parent: 1 + type: Transform + - uid: 9977 + components: + - pos: -22.5,63.5 + parent: 1 + type: Transform + - uid: 9978 + components: + - pos: -19.5,64.5 + parent: 1 + type: Transform + - uid: 9998 + components: + - pos: -59.5,47.5 + parent: 1 + type: Transform + - uid: 9999 + components: + - pos: -60.5,47.5 + parent: 1 + type: Transform + - uid: 10000 + components: + - pos: -61.5,47.5 + parent: 1 + type: Transform + - uid: 10001 + components: + - pos: -62.5,47.5 + parent: 1 + type: Transform + - uid: 10002 + components: + - pos: -63.5,47.5 + parent: 1 + type: Transform + - uid: 10003 + components: + - pos: -64.5,47.5 + parent: 1 + type: Transform + - uid: 10004 + components: + - pos: -65.5,47.5 + parent: 1 + type: Transform + - uid: 10005 + components: + - pos: -66.5,48.5 + parent: 1 + type: Transform + - uid: 10006 + components: + - pos: -66.5,49.5 + parent: 1 + type: Transform + - uid: 10008 + components: + - pos: -66.5,50.5 + parent: 1 + type: Transform + - uid: 10009 + components: + - pos: -67.5,50.5 + parent: 1 + type: Transform + - uid: 10010 + components: + - pos: -67.5,51.5 + parent: 1 + type: Transform + - uid: 10011 + components: + - pos: -67.5,52.5 + parent: 1 + type: Transform + - uid: 10012 + components: + - pos: -67.5,53.5 + parent: 1 + type: Transform + - uid: 10013 + components: + - pos: -67.5,54.5 + parent: 1 + type: Transform + - uid: 10014 + components: + - pos: -67.5,55.5 + parent: 1 + type: Transform + - uid: 10015 + components: + - pos: -67.5,56.5 + parent: 1 + type: Transform + - uid: 10016 + components: + - pos: -67.5,57.5 + parent: 1 + type: Transform + - uid: 10017 + components: + - pos: -66.5,57.5 + parent: 1 + type: Transform + - uid: 10018 + components: + - pos: -65.5,57.5 + parent: 1 + type: Transform + - uid: 10019 + components: + - pos: -65.5,58.5 + parent: 1 + type: Transform + - uid: 10020 + components: + - pos: -65.5,59.5 + parent: 1 + type: Transform + - uid: 10023 + components: + - pos: -60.5,19.5 + parent: 1 + type: Transform + - uid: 10024 + components: + - pos: -60.5,18.5 + parent: 1 + type: Transform + - uid: 10025 + components: + - pos: -60.5,17.5 + parent: 1 + type: Transform + - uid: 10026 + components: + - pos: -65.5,36.5 + parent: 1 + type: Transform + - uid: 10027 + components: + - pos: -66.5,36.5 + parent: 1 + type: Transform + - uid: 10028 + components: + - pos: -66.5,37.5 + parent: 1 + type: Transform + - uid: 10029 + components: + - pos: -66.5,38.5 + parent: 1 + type: Transform + - uid: 10030 + components: + - pos: -66.5,39.5 + parent: 1 + type: Transform + - uid: 10031 + components: + - pos: -66.5,40.5 + parent: 1 + type: Transform + - uid: 10032 + components: + - pos: -66.5,41.5 + parent: 1 + type: Transform + - uid: 10033 + components: + - pos: -66.5,42.5 + parent: 1 + type: Transform + - uid: 10034 + components: + - pos: -66.5,43.5 + parent: 1 + type: Transform + - uid: 10035 + components: + - pos: -66.5,44.5 + parent: 1 + type: Transform + - uid: 10036 + components: + - pos: -60.5,36.5 + parent: 1 + type: Transform + - uid: 10037 + components: + - pos: -60.5,35.5 + parent: 1 + type: Transform + - uid: 10038 + components: + - pos: -60.5,34.5 + parent: 1 + type: Transform + - uid: 10039 + components: + - pos: -60.5,33.5 + parent: 1 + type: Transform + - uid: 10040 + components: + - pos: -60.5,32.5 + parent: 1 + type: Transform + - uid: 10042 + components: + - pos: -60.5,31.5 + parent: 1 + type: Transform + - uid: 10043 + components: + - pos: -60.5,30.5 + parent: 1 + type: Transform + - uid: 10045 + components: + - pos: -60.5,29.5 + parent: 1 + type: Transform + - uid: 10047 + components: + - pos: -60.5,28.5 + parent: 1 + type: Transform + - uid: 10077 + components: + - pos: -60.5,27.5 + parent: 1 + type: Transform + - uid: 10078 + components: + - pos: -60.5,26.5 + parent: 1 + type: Transform + - uid: 10079 + components: + - pos: -60.5,25.5 + parent: 1 + type: Transform + - uid: 10090 + components: + - pos: -60.5,24.5 + parent: 1 + type: Transform + - uid: 10091 + components: + - pos: -60.5,23.5 + parent: 1 + type: Transform + - uid: 10096 + components: + - pos: -60.5,22.5 + parent: 1 + type: Transform + - uid: 10097 + components: + - pos: -60.5,21.5 + parent: 1 + type: Transform + - uid: 10098 + components: + - pos: -60.5,20.5 + parent: 1 + type: Transform + - uid: 10104 + components: + - pos: -61.5,17.5 + parent: 1 + type: Transform + - uid: 10105 + components: + - pos: -62.5,17.5 + parent: 1 + type: Transform + - uid: 10106 + components: + - pos: -63.5,17.5 + parent: 1 + type: Transform + - uid: 10107 + components: + - pos: -64.5,17.5 + parent: 1 + type: Transform + - uid: 10108 + components: + - pos: -65.5,17.5 + parent: 1 + type: Transform + - uid: 10109 + components: + - pos: -66.5,17.5 + parent: 1 + type: Transform + - uid: 10110 + components: + - pos: -66.5,16.5 + parent: 1 + type: Transform + - uid: 10111 + components: + - pos: -66.5,15.5 + parent: 1 + type: Transform + - uid: 10112 + components: + - pos: -66.5,14.5 + parent: 1 + type: Transform + - uid: 10113 + components: + - pos: -66.5,13.5 + parent: 1 + type: Transform + - uid: 10114 + components: + - pos: -66.5,12.5 + parent: 1 + type: Transform + - uid: 10115 + components: + - pos: -66.5,11.5 + parent: 1 + type: Transform + - uid: 10116 + components: + - pos: -66.5,10.5 + parent: 1 + type: Transform + - uid: 10117 + components: + - pos: -66.5,9.5 + parent: 1 + type: Transform + - uid: 10118 + components: + - pos: -66.5,8.5 + parent: 1 + type: Transform + - uid: 10119 + components: + - pos: -65.5,8.5 + parent: 1 + type: Transform + - uid: 10120 + components: + - pos: -64.5,8.5 + parent: 1 + type: Transform + - uid: 10121 + components: + - pos: -63.5,8.5 + parent: 1 + type: Transform + - uid: 10122 + components: + - pos: -62.5,8.5 + parent: 1 + type: Transform + - uid: 10123 + components: + - pos: -61.5,8.5 + parent: 1 + type: Transform + - uid: 10124 + components: + - pos: -60.5,8.5 + parent: 1 + type: Transform + - uid: 10125 + components: + - pos: -59.5,32.5 + parent: 1 + type: Transform + - uid: 10126 + components: + - pos: -62.5,36.5 + parent: 1 + type: Transform + - uid: 10130 + components: + - pos: -66.5,47.5 + parent: 1 + type: Transform + - uid: 10131 + components: + - pos: -61.5,36.5 + parent: 1 + type: Transform + - uid: 10132 + components: + - pos: -66.5,45.5 + parent: 1 + type: Transform + - uid: 10133 + components: + - pos: -66.5,46.5 + parent: 1 + type: Transform + - uid: 10134 + components: + - pos: -63.5,36.5 + parent: 1 + type: Transform + - uid: 10135 + components: + - pos: -63.5,35.5 + parent: 1 + type: Transform + - uid: 10136 + components: + - pos: -63.5,34.5 + parent: 1 + type: Transform + - uid: 10137 + components: + - pos: -63.5,33.5 + parent: 1 + type: Transform + - uid: 10138 + components: + - pos: -63.5,32.5 + parent: 1 + type: Transform + - uid: 10139 + components: + - pos: -62.5,32.5 + parent: 1 + type: Transform + - uid: 10140 + components: + - pos: -61.5,32.5 + parent: 1 + type: Transform + - uid: 10150 + components: + - pos: -65.5,21.5 + parent: 1 + type: Transform + - uid: 10151 + components: + - pos: -66.5,21.5 + parent: 1 + type: Transform + - uid: 10152 + components: + - pos: -67.5,21.5 + parent: 1 + type: Transform + - uid: 10153 + components: + - pos: -68.5,21.5 + parent: 1 + type: Transform + - uid: 10154 + components: + - pos: -69.5,21.5 + parent: 1 + type: Transform + - uid: 10156 + components: + - pos: -70.5,21.5 + parent: 1 + type: Transform + - uid: 10157 + components: + - pos: -64.5,21.5 + parent: 1 + type: Transform + - uid: 10161 + components: + - pos: -70.5,31.5 + parent: 1 + type: Transform + - uid: 10162 + components: + - pos: -71.5,29.5 + parent: 1 + type: Transform + - uid: 10163 + components: + - pos: -70.5,30.5 + parent: 1 + type: Transform + - uid: 10168 + components: + - pos: -70.5,28.5 + parent: 1 + type: Transform + - uid: 10169 + components: + - pos: -71.5,31.5 + parent: 1 + type: Transform + - uid: 10170 + components: + - pos: -71.5,28.5 + parent: 1 + type: Transform + - uid: 10174 + components: + - pos: -69.5,22.5 + parent: 1 + type: Transform + - uid: 10177 + components: + - pos: -71.5,31.5 + parent: 1 + type: Transform + - uid: 10178 + components: + - pos: -71.5,30.5 + parent: 1 + type: Transform + - uid: 10179 + components: + - pos: -70.5,29.5 + parent: 1 + type: Transform + - uid: 10180 + components: + - pos: -69.5,24.5 + parent: 1 + type: Transform + - uid: 10181 + components: + - pos: -71.5,21.5 + parent: 1 + type: Transform + - uid: 10182 + components: + - pos: -72.5,21.5 + parent: 1 + type: Transform + - uid: 10183 + components: + - pos: -73.5,21.5 + parent: 1 + type: Transform + - uid: 10184 + components: + - pos: -74.5,21.5 + parent: 1 + type: Transform + - uid: 10185 + components: + - pos: -74.5,22.5 + parent: 1 + type: Transform + - uid: 10186 + components: + - pos: -74.5,23.5 + parent: 1 + type: Transform + - uid: 10187 + components: + - pos: -74.5,24.5 + parent: 1 + type: Transform + - uid: 10188 + components: + - pos: -75.5,24.5 + parent: 1 + type: Transform + - uid: 10189 + components: + - pos: -76.5,24.5 + parent: 1 + type: Transform + - uid: 10190 + components: + - pos: -77.5,24.5 + parent: 1 + type: Transform + - uid: 10191 + components: + - pos: -78.5,24.5 + parent: 1 + type: Transform + - uid: 10192 + components: + - pos: -78.5,26.5 + parent: 1 + type: Transform + - uid: 10193 + components: + - pos: -77.5,26.5 + parent: 1 + type: Transform + - uid: 10194 + components: + - pos: -76.5,26.5 + parent: 1 + type: Transform + - uid: 10195 + components: + - pos: -75.5,26.5 + parent: 1 + type: Transform + - uid: 10196 + components: + - pos: -74.5,26.5 + parent: 1 + type: Transform + - uid: 10197 + components: + - pos: -74.5,25.5 + parent: 1 + type: Transform + - uid: 10198 + components: + - pos: -81.5,27.5 + parent: 1 + type: Transform + - uid: 10199 + components: + - pos: -82.5,27.5 + parent: 1 + type: Transform + - uid: 10200 + components: + - pos: -83.5,27.5 + parent: 1 + type: Transform + - uid: 10201 + components: + - pos: -84.5,27.5 + parent: 1 + type: Transform + - uid: 10202 + components: + - pos: -79.5,24.5 + parent: 1 + type: Transform + - uid: 10203 + components: + - pos: -80.5,24.5 + parent: 1 + type: Transform + - uid: 10204 + components: + - pos: -80.5,25.5 + parent: 1 + type: Transform + - uid: 10205 + components: + - pos: -81.5,25.5 + parent: 1 + type: Transform + - uid: 10206 + components: + - pos: -82.5,25.5 + parent: 1 + type: Transform + - uid: 10208 + components: + - pos: -84.5,28.5 + parent: 1 + type: Transform + - uid: 10209 + components: + - pos: -84.5,29.5 + parent: 1 + type: Transform + - uid: 10210 + components: + - pos: -84.5,30.5 + parent: 1 + type: Transform + - uid: 10211 + components: + - pos: -85.5,30.5 + parent: 1 + type: Transform + - uid: 10212 + components: + - pos: -86.5,30.5 + parent: 1 + type: Transform + - uid: 10225 + components: + - pos: -71.5,32.5 + parent: 1 + type: Transform + - uid: 10227 + components: + - pos: -71.5,33.5 + parent: 1 + type: Transform + - uid: 10228 + components: + - pos: -71.5,34.5 + parent: 1 + type: Transform + - uid: 10229 + components: + - pos: -70.5,34.5 + parent: 1 + type: Transform + - uid: 10230 + components: + - pos: -69.5,34.5 + parent: 1 + type: Transform + - uid: 10232 + components: + - pos: -68.5,34.5 + parent: 1 + type: Transform + - uid: 10233 + components: + - pos: -67.5,34.5 + parent: 1 + type: Transform + - uid: 10236 + components: + - pos: -66.5,34.5 + parent: 1 + type: Transform + - uid: 10238 + components: + - pos: -65.5,34.5 + parent: 1 + type: Transform + - uid: 10239 + components: + - pos: -64.5,34.5 + parent: 1 + type: Transform + - uid: 10245 + components: + - pos: -69.5,26.5 + parent: 1 + type: Transform + - uid: 10252 + components: + - pos: -69.5,25.5 + parent: 1 + type: Transform + - uid: 10262 + components: + - pos: -60.5,6.5 + parent: 1 + type: Transform + - uid: 10263 + components: + - pos: -60.5,5.5 + parent: 1 + type: Transform + - uid: 10265 + components: + - pos: -59.5,5.5 + parent: 1 + type: Transform + - uid: 10266 + components: + - pos: -58.5,5.5 + parent: 1 + type: Transform + - uid: 10418 + components: + - pos: -16.5,64.5 + parent: 1 + type: Transform + - uid: 10549 + components: + - pos: -85.5,27.5 + parent: 1 + type: Transform + - uid: 10550 + components: + - pos: -85.5,20.5 + parent: 1 + type: Transform + - uid: 10551 + components: + - pos: -86.5,20.5 + parent: 1 + type: Transform + - uid: 10552 + components: + - pos: -87.5,20.5 + parent: 1 + type: Transform + - uid: 10553 + components: + - pos: -85.5,23.5 + parent: 1 + type: Transform + - uid: 10554 + components: + - pos: -84.5,23.5 + parent: 1 + type: Transform + - uid: 10555 + components: + - pos: -84.5,22.5 + parent: 1 + type: Transform + - uid: 10556 + components: + - pos: -84.5,21.5 + parent: 1 + type: Transform + - uid: 10557 + components: + - pos: -84.5,20.5 + parent: 1 + type: Transform + - uid: 10558 + components: + - pos: -86.5,23.5 + parent: 1 + type: Transform + - uid: 10559 + components: + - pos: -86.5,24.5 + parent: 1 + type: Transform + - uid: 10560 + components: + - pos: -86.5,25.5 + parent: 1 + type: Transform + - uid: 10561 + components: + - pos: -86.5,26.5 + parent: 1 + type: Transform + - uid: 10562 + components: + - pos: -86.5,27.5 + parent: 1 + type: Transform + - uid: 10563 + components: + - pos: -88.5,20.5 + parent: 1 + type: Transform + - uid: 10564 + components: + - pos: -88.5,19.5 + parent: 1 + type: Transform + - uid: 10565 + components: + - pos: -90.5,19.5 + parent: 1 + type: Transform + - uid: 10566 + components: + - pos: -91.5,19.5 + parent: 1 + type: Transform + - uid: 10567 + components: + - pos: -92.5,19.5 + parent: 1 + type: Transform + - uid: 10568 + components: + - pos: -93.5,19.5 + parent: 1 + type: Transform + - uid: 10569 + components: + - pos: -94.5,19.5 + parent: 1 + type: Transform + - uid: 10570 + components: + - pos: -94.5,18.5 + parent: 1 + type: Transform + - uid: 10571 + components: + - pos: -95.5,18.5 + parent: 1 + type: Transform + - uid: 10572 + components: + - pos: -96.5,18.5 + parent: 1 + type: Transform + - uid: 10573 + components: + - pos: -96.5,19.5 + parent: 1 + type: Transform + - uid: 10574 + components: + - pos: -97.5,19.5 + parent: 1 + type: Transform + - uid: 10576 + components: + - pos: -98.5,19.5 + parent: 1 + type: Transform + - uid: 10577 + components: + - pos: -98.5,18.5 + parent: 1 + type: Transform + - uid: 10578 + components: + - pos: -99.5,18.5 + parent: 1 + type: Transform + - uid: 10579 + components: + - pos: -100.5,18.5 + parent: 1 + type: Transform + - uid: 10581 + components: + - pos: -87.5,30.5 + parent: 1 + type: Transform + - uid: 10582 + components: + - pos: -88.5,30.5 + parent: 1 + type: Transform + - uid: 10583 + components: + - pos: -88.5,31.5 + parent: 1 + type: Transform + - uid: 10584 + components: + - pos: -89.5,31.5 + parent: 1 + type: Transform + - uid: 10585 + components: + - pos: -90.5,31.5 + parent: 1 + type: Transform + - uid: 10586 + components: + - pos: -91.5,31.5 + parent: 1 + type: Transform + - uid: 10587 + components: + - pos: -92.5,31.5 + parent: 1 + type: Transform + - uid: 10588 + components: + - pos: -93.5,31.5 + parent: 1 + type: Transform + - uid: 10589 + components: + - pos: -94.5,31.5 + parent: 1 + type: Transform + - uid: 10590 + components: + - pos: -94.5,32.5 + parent: 1 + type: Transform + - uid: 10591 + components: + - pos: -95.5,32.5 + parent: 1 + type: Transform + - uid: 10592 + components: + - pos: -96.5,32.5 + parent: 1 + type: Transform + - uid: 10593 + components: + - pos: -96.5,31.5 + parent: 1 + type: Transform + - uid: 10594 + components: + - pos: -97.5,31.5 + parent: 1 + type: Transform + - uid: 10595 + components: + - pos: -98.5,31.5 + parent: 1 + type: Transform + - uid: 10596 + components: + - pos: -98.5,32.5 + parent: 1 + type: Transform + - uid: 10597 + components: + - pos: -99.5,32.5 + parent: 1 + type: Transform + - uid: 10598 + components: + - pos: -100.5,32.5 + parent: 1 + type: Transform + - uid: 10706 + components: + - pos: -74.5,20.5 + parent: 1 + type: Transform + - uid: 10707 + components: + - pos: -74.5,19.5 + parent: 1 + type: Transform + - uid: 10708 + components: + - pos: -74.5,18.5 + parent: 1 + type: Transform + - uid: 10709 + components: + - pos: -74.5,17.5 + parent: 1 + type: Transform + - uid: 10710 + components: + - pos: -74.5,16.5 + parent: 1 + type: Transform + - uid: 10711 + components: + - pos: -74.5,15.5 + parent: 1 + type: Transform + - uid: 10714 + components: + - pos: -63.5,31.5 + parent: 1 + type: Transform + - uid: 10715 + components: + - pos: -63.5,30.5 + parent: 1 + type: Transform + - uid: 10716 + components: + - pos: -63.5,29.5 + parent: 1 + type: Transform + - uid: 10717 + components: + - pos: -63.5,28.5 + parent: 1 + type: Transform + - uid: 10724 + components: + - pos: -63.5,27.5 + parent: 1 + type: Transform + - uid: 10895 + components: + - pos: -14.5,60.5 + parent: 1 + type: Transform + - uid: 10896 + components: + - pos: -13.5,60.5 + parent: 1 + type: Transform + - uid: 10897 + components: + - pos: -12.5,60.5 + parent: 1 + type: Transform + - uid: 10898 + components: + - pos: -11.5,60.5 + parent: 1 + type: Transform + - uid: 12834 + components: + - pos: 21.5,26.5 + parent: 1 + type: Transform + - uid: 12835 + components: + - pos: 22.5,26.5 + parent: 1 + type: Transform + - uid: 12836 + components: + - pos: 20.5,26.5 + parent: 1 + type: Transform + - uid: 12837 + components: + - pos: 19.5,26.5 + parent: 1 + type: Transform + - uid: 12838 + components: + - pos: 18.5,26.5 + parent: 1 + type: Transform + - uid: 12839 + components: + - pos: 17.5,26.5 + parent: 1 + type: Transform + - uid: 12840 + components: + - pos: 16.5,26.5 + parent: 1 + type: Transform + - uid: 12841 + components: + - pos: 15.5,26.5 + parent: 1 + type: Transform + - uid: 12842 + components: + - pos: 14.5,26.5 + parent: 1 + type: Transform + - uid: 12843 + components: + - pos: 14.5,25.5 + parent: 1 + type: Transform + - uid: 12844 + components: + - pos: 14.5,24.5 + parent: 1 + type: Transform + - uid: 12845 + components: + - pos: 14.5,23.5 + parent: 1 + type: Transform + - uid: 12846 + components: + - pos: 14.5,22.5 + parent: 1 + type: Transform + - uid: 12847 + components: + - pos: 14.5,21.5 + parent: 1 + type: Transform + - uid: 12848 + components: + - pos: 14.5,20.5 + parent: 1 + type: Transform + - uid: 12849 + components: + - pos: 14.5,19.5 + parent: 1 + type: Transform + - uid: 12850 + components: + - pos: 14.5,18.5 + parent: 1 + type: Transform + - uid: 12851 + components: + - pos: 14.5,17.5 + parent: 1 + type: Transform + - uid: 12860 + components: + - pos: 14.5,16.5 + parent: 1 + type: Transform + - uid: 12861 + components: + - pos: 14.5,15.5 + parent: 1 + type: Transform + - uid: 12862 + components: + - pos: 14.5,14.5 + parent: 1 + type: Transform + - uid: 12863 + components: + - pos: 14.5,13.5 + parent: 1 + type: Transform + - uid: 12864 + components: + - pos: 14.5,12.5 + parent: 1 + type: Transform + - uid: 12865 + components: + - pos: 14.5,11.5 + parent: 1 + type: Transform + - uid: 12866 + components: + - pos: 14.5,10.5 + parent: 1 + type: Transform + - uid: 12867 + components: + - pos: 14.5,9.5 + parent: 1 + type: Transform + - uid: 12868 + components: + - pos: 13.5,9.5 + parent: 1 + type: Transform + - uid: 12869 + components: + - pos: 12.5,9.5 + parent: 1 + type: Transform + - uid: 12870 + components: + - pos: 11.5,9.5 + parent: 1 + type: Transform + - uid: 12871 + components: + - pos: 10.5,9.5 + parent: 1 + type: Transform + - uid: 12872 + components: + - pos: 9.5,9.5 + parent: 1 + type: Transform + - uid: 12873 + components: + - pos: 8.5,9.5 + parent: 1 + type: Transform + - uid: 12874 + components: + - pos: 7.5,9.5 + parent: 1 + type: Transform + - uid: 12875 + components: + - pos: 6.5,9.5 + parent: 1 + type: Transform + - uid: 12876 + components: + - pos: 5.5,9.5 + parent: 1 + type: Transform + - uid: 12877 + components: + - pos: 4.5,9.5 + parent: 1 + type: Transform + - uid: 12878 + components: + - pos: 3.5,9.5 + parent: 1 + type: Transform + - uid: 12879 + components: + - pos: 3.5,10.5 + parent: 1 + type: Transform + - uid: 12880 + components: + - pos: 3.5,11.5 + parent: 1 + type: Transform + - uid: 12881 + components: + - pos: 3.5,12.5 + parent: 1 + type: Transform + - uid: 12882 + components: + - pos: 2.5,12.5 + parent: 1 + type: Transform + - uid: 12883 + components: + - pos: 1.5,12.5 + parent: 1 + type: Transform + - uid: 12884 + components: + - pos: 0.5,12.5 + parent: 1 + type: Transform + - uid: 12885 + components: + - pos: -0.5,12.5 + parent: 1 + type: Transform + - uid: 12886 + components: + - pos: -1.5,12.5 + parent: 1 + type: Transform + - uid: 12887 + components: + - pos: -2.5,12.5 + parent: 1 + type: Transform + - uid: 12888 + components: + - pos: -3.5,12.5 + parent: 1 + type: Transform + - uid: 12889 + components: + - pos: -4.5,12.5 + parent: 1 + type: Transform + - uid: 15013 + components: + - pos: -71.5,27.5 + parent: 1 + type: Transform + - uid: 15014 + components: + - pos: -71.5,26.5 + parent: 1 + type: Transform + - uid: 15015 + components: + - pos: -71.5,25.5 + parent: 1 + type: Transform + - uid: 15233 + components: + - pos: 17.5,46.5 + parent: 1 + type: Transform + - uid: 15327 + components: + - pos: -69.5,20.5 + parent: 1 + type: Transform + - uid: 15328 + components: + - pos: -69.5,19.5 + parent: 1 + type: Transform + - uid: 15329 + components: + - pos: -69.5,18.5 + parent: 1 + type: Transform + - uid: 15330 + components: + - pos: -70.5,18.5 + parent: 1 + type: Transform + - uid: 15331 + components: + - pos: -68.5,18.5 + parent: 1 + type: Transform + - uid: 15332 + components: + - pos: -73.5,18.5 + parent: 1 + type: Transform + - uid: 15405 + components: + - pos: -36.5,56.5 + parent: 1 + type: Transform + - uid: 15406 + components: + - pos: -36.5,57.5 + parent: 1 + type: Transform + - uid: 15407 + components: + - pos: -36.5,58.5 + parent: 1 + type: Transform + - uid: 15408 + components: + - pos: -36.5,59.5 + parent: 1 + type: Transform + - uid: 15409 + components: + - pos: -36.5,60.5 + parent: 1 + type: Transform + - uid: 15410 + components: + - pos: -36.5,61.5 + parent: 1 + type: Transform + - uid: 15411 + components: + - pos: -36.5,62.5 + parent: 1 + type: Transform + - uid: 15412 + components: + - pos: -36.5,63.5 + parent: 1 + type: Transform + - uid: 15413 + components: + - pos: -36.5,64.5 + parent: 1 + type: Transform + - uid: 15414 + components: + - pos: -36.5,65.5 + parent: 1 + type: Transform + - uid: 15415 + components: + - pos: -36.5,66.5 + parent: 1 + type: Transform + - uid: 15416 + components: + - pos: -36.5,67.5 + parent: 1 + type: Transform + - uid: 15417 + components: + - pos: -36.5,68.5 + parent: 1 + type: Transform + - uid: 15418 + components: + - pos: -36.5,69.5 + parent: 1 + type: Transform + - uid: 15419 + components: + - pos: -37.5,69.5 + parent: 1 + type: Transform + - uid: 15420 + components: + - pos: -38.5,69.5 + parent: 1 + type: Transform + - uid: 15421 + components: + - pos: -39.5,69.5 + parent: 1 + type: Transform + - uid: 15422 + components: + - pos: -40.5,69.5 + parent: 1 + type: Transform + - uid: 15423 + components: + - pos: -41.5,69.5 + parent: 1 + type: Transform + - uid: 15424 + components: + - pos: -42.5,69.5 + parent: 1 + type: Transform + - uid: 15425 + components: + - pos: -43.5,69.5 + parent: 1 + type: Transform + - uid: 15426 + components: + - pos: -44.5,69.5 + parent: 1 + type: Transform + - uid: 15462 + components: + - pos: -44.5,58.5 + parent: 1 + type: Transform + - uid: 15463 + components: + - pos: -41.5,57.5 + parent: 1 + type: Transform + - uid: 15466 + components: + - pos: -37.5,57.5 + parent: 1 + type: Transform + - uid: 15468 + components: + - pos: -38.5,57.5 + parent: 1 + type: Transform + - uid: 15469 + components: + - pos: -40.5,58.5 + parent: 1 + type: Transform + - uid: 15470 + components: + - pos: -38.5,59.5 + parent: 1 + type: Transform + - uid: 15471 + components: + - pos: -39.5,58.5 + parent: 1 + type: Transform + - uid: 15476 + components: + - pos: -43.5,58.5 + parent: 1 + type: Transform + - uid: 15477 + components: + - pos: -41.5,58.5 + parent: 1 + type: Transform + - uid: 15479 + components: + - pos: -38.5,58.5 + parent: 1 + type: Transform + - uid: 15485 + components: + - pos: -43.5,57.5 + parent: 1 + type: Transform + - uid: 15486 + components: + - pos: -42.5,57.5 + parent: 1 + type: Transform + - uid: 15811 + components: + - pos: -11.5,63.5 + parent: 1 + type: Transform + - uid: 15812 + components: + - pos: -10.5,62.5 + parent: 1 + type: Transform + - uid: 15813 + components: + - pos: -10.5,63.5 + parent: 1 + type: Transform +- proto: CableHVStack + entities: + - uid: 2889 + components: + - pos: 22.480692,-7.43704 + parent: 1 + type: Transform + - uid: 3427 + components: + - pos: -54.44091,29.7276 + parent: 1 + type: Transform + - uid: 8239 + components: + - pos: -7.5488524,8.322083 + parent: 1 + type: Transform +- proto: CableMV + entities: + - uid: 497 + components: + - pos: 7.5,-5.5 + parent: 1 + type: Transform + - uid: 498 + components: + - pos: 6.5,-5.5 + parent: 1 + type: Transform + - uid: 503 + components: + - pos: 5.5,-5.5 + parent: 1 + type: Transform + - uid: 504 + components: + - pos: 4.5,-5.5 + parent: 1 + type: Transform + - uid: 533 + components: + - pos: 3.5,-5.5 + parent: 1 + type: Transform + - uid: 534 + components: + - pos: 2.5,-5.5 + parent: 1 + type: Transform + - uid: 535 + components: + - pos: 1.5,-5.5 + parent: 1 + type: Transform + - uid: 537 + components: + - pos: 0.5,-5.5 + parent: 1 + type: Transform + - uid: 538 + components: + - pos: -0.5,-5.5 + parent: 1 + type: Transform + - uid: 539 + components: + - pos: -1.5,-5.5 + parent: 1 + type: Transform + - uid: 540 + components: + - pos: -2.5,-5.5 + parent: 1 + type: Transform + - uid: 541 + components: + - pos: -3.5,-5.5 + parent: 1 + type: Transform + - uid: 542 + components: + - pos: -4.5,-5.5 + parent: 1 + type: Transform + - uid: 543 + components: + - pos: -4.5,-4.5 + parent: 1 + type: Transform + - uid: 544 + components: + - pos: -4.5,-3.5 + parent: 1 + type: Transform + - uid: 545 + components: + - pos: -4.5,-2.5 + parent: 1 + type: Transform + - uid: 546 + components: + - pos: -4.5,-1.5 + parent: 1 + type: Transform + - uid: 547 + components: + - pos: -4.5,-0.5 + parent: 1 + type: Transform + - uid: 548 + components: + - pos: -1.5,-6.5 + parent: 1 + type: Transform + - uid: 549 + components: + - pos: -1.5,-7.5 + parent: 1 + type: Transform + - uid: 550 + components: + - pos: -1.5,-8.5 + parent: 1 + type: Transform + - uid: 551 + components: + - pos: -1.5,-9.5 + parent: 1 + type: Transform + - uid: 552 + components: + - pos: -1.5,-10.5 + parent: 1 + type: Transform + - uid: 553 + components: + - pos: -0.5,-10.5 + parent: 1 + type: Transform + - uid: 554 + components: + - pos: 0.5,-10.5 + parent: 1 + type: Transform + - uid: 555 + components: + - pos: 1.5,-10.5 + parent: 1 + type: Transform + - uid: 556 + components: + - pos: 2.5,-10.5 + parent: 1 + type: Transform + - uid: 557 + components: + - pos: 2.5,-9.5 + parent: 1 + type: Transform + - uid: 558 + components: + - pos: 2.5,-8.5 + parent: 1 + type: Transform + - uid: 559 + components: + - pos: 2.5,-7.5 + parent: 1 + type: Transform + - uid: 600 + components: + - pos: 8.5,-5.5 + parent: 1 + type: Transform + - uid: 601 + components: + - pos: 9.5,-5.5 + parent: 1 + type: Transform + - uid: 602 + components: + - pos: 10.5,-5.5 + parent: 1 + type: Transform + - uid: 603 + components: + - pos: 11.5,-5.5 + parent: 1 + type: Transform + - uid: 604 + components: + - pos: 11.5,-6.5 + parent: 1 + type: Transform + - uid: 605 + components: + - pos: 11.5,-7.5 + parent: 1 + type: Transform + - uid: 931 + components: + - pos: 25.5,1.5 + parent: 1 + type: Transform + - uid: 938 + components: + - pos: 26.5,1.5 + parent: 1 + type: Transform + - uid: 939 + components: + - pos: 26.5,0.5 + parent: 1 + type: Transform + - uid: 1014 + components: + - pos: 28.5,23.5 + parent: 1 + type: Transform + - uid: 1015 + components: + - pos: 28.5,24.5 + parent: 1 + type: Transform + - uid: 1508 + components: + - pos: -15.5,17.5 + parent: 1 + type: Transform + - uid: 1509 + components: + - pos: -16.5,17.5 + parent: 1 + type: Transform + - uid: 1510 + components: + - pos: -17.5,17.5 + parent: 1 + type: Transform + - uid: 1643 + components: + - pos: 29.5,24.5 + parent: 1 + type: Transform + - uid: 1675 + components: + - pos: 10.5,-4.5 + parent: 1 + type: Transform + - uid: 1676 + components: + - pos: 10.5,-3.5 + parent: 1 + type: Transform + - uid: 1677 + components: + - pos: 10.5,-2.5 + parent: 1 + type: Transform + - uid: 1678 + components: + - pos: 10.5,-1.5 + parent: 1 + type: Transform + - uid: 1679 + components: + - pos: 10.5,-0.5 + parent: 1 + type: Transform + - uid: 1680 + components: + - pos: 10.5,0.5 + parent: 1 + type: Transform + - uid: 1681 + components: + - pos: 11.5,0.5 + parent: 1 + type: Transform + - uid: 1682 + components: + - pos: 12.5,0.5 + parent: 1 + type: Transform + - uid: 2188 + components: + - pos: -4.5,17.5 + parent: 1 + type: Transform + - uid: 2189 + components: + - pos: -3.5,17.5 + parent: 1 + type: Transform + - uid: 2190 + components: + - pos: -3.5,18.5 + parent: 1 + type: Transform + - uid: 2191 + components: + - pos: -3.5,19.5 + parent: 1 + type: Transform + - uid: 2192 + components: + - pos: -3.5,20.5 + parent: 1 + type: Transform + - uid: 2193 + components: + - pos: -3.5,21.5 + parent: 1 + type: Transform + - uid: 2194 + components: + - pos: -3.5,22.5 + parent: 1 + type: Transform + - uid: 2195 + components: + - pos: -3.5,23.5 + parent: 1 + type: Transform + - uid: 2196 + components: + - pos: -2.5,23.5 + parent: 1 + type: Transform + - uid: 2197 + components: + - pos: -1.5,23.5 + parent: 1 + type: Transform + - uid: 2198 + components: + - pos: -0.5,23.5 + parent: 1 + type: Transform + - uid: 2199 + components: + - pos: 0.5,23.5 + parent: 1 + type: Transform + - uid: 2200 + components: + - pos: 1.5,23.5 + parent: 1 + type: Transform + - uid: 2201 + components: + - pos: 2.5,23.5 + parent: 1 + type: Transform + - uid: 2202 + components: + - pos: 3.5,23.5 + parent: 1 + type: Transform + - uid: 2203 + components: + - pos: 3.5,22.5 + parent: 1 + type: Transform + - uid: 2204 + components: + - pos: 3.5,21.5 + parent: 1 + type: Transform + - uid: 2205 + components: + - pos: 2.5,21.5 + parent: 1 + type: Transform + - uid: 2206 + components: + - pos: 1.5,21.5 + parent: 1 + type: Transform + - uid: 2207 + components: + - pos: 4.5,23.5 + parent: 1 + type: Transform + - uid: 2208 + components: + - pos: 4.5,24.5 + parent: 1 + type: Transform + - uid: 2209 + components: + - pos: 4.5,25.5 + parent: 1 + type: Transform + - uid: 2210 + components: + - pos: 4.5,26.5 + parent: 1 + type: Transform + - uid: 2211 + components: + - pos: 4.5,27.5 + parent: 1 + type: Transform + - uid: 2212 + components: + - pos: 4.5,28.5 + parent: 1 + type: Transform + - uid: 2213 + components: + - pos: 4.5,29.5 + parent: 1 + type: Transform + - uid: 2214 + components: + - pos: 4.5,30.5 + parent: 1 + type: Transform + - uid: 2215 + components: + - pos: 4.5,31.5 + parent: 1 + type: Transform + - uid: 2216 + components: + - pos: 4.5,32.5 + parent: 1 + type: Transform + - uid: 2217 + components: + - pos: 4.5,33.5 + parent: 1 + type: Transform + - uid: 2218 + components: + - pos: 4.5,34.5 + parent: 1 + type: Transform + - uid: 2219 + components: + - pos: 4.5,35.5 + parent: 1 + type: Transform + - uid: 2516 + components: + - pos: 23.5,9.5 + parent: 1 + type: Transform + - uid: 2517 + components: + - pos: 22.5,9.5 + parent: 1 + type: Transform + - uid: 2518 + components: + - pos: 22.5,10.5 + parent: 1 + type: Transform + - uid: 2687 + components: + - pos: -5.5,17.5 + parent: 1 + type: Transform + - uid: 2688 + components: + - pos: -6.5,17.5 + parent: 1 + type: Transform + - uid: 2689 + components: + - pos: -7.5,17.5 + parent: 1 + type: Transform + - uid: 2690 + components: + - pos: -8.5,17.5 + parent: 1 + type: Transform + - uid: 2691 + components: + - pos: -9.5,17.5 + parent: 1 + type: Transform + - uid: 2692 + components: + - pos: -9.5,18.5 + parent: 1 + type: Transform + - uid: 2698 + components: + - pos: -10.5,17.5 + parent: 1 + type: Transform + - uid: 2802 + components: + - pos: -18.5,17.5 + parent: 1 + type: Transform + - uid: 2808 + components: + - pos: -19.5,17.5 + parent: 1 + type: Transform + - uid: 2938 + components: + - pos: -20.5,19.5 + parent: 1 + type: Transform + - uid: 3223 + components: + - pos: -20.5,20.5 + parent: 1 + type: Transform + - uid: 3324 + components: + - pos: -20.5,21.5 + parent: 1 + type: Transform + - uid: 3325 + components: + - pos: -21.5,21.5 + parent: 1 + type: Transform + - uid: 3326 + components: + - pos: -22.5,21.5 + parent: 1 + type: Transform + - uid: 3327 + components: + - pos: -23.5,21.5 + parent: 1 + type: Transform + - uid: 3328 + components: + - pos: -24.5,21.5 + parent: 1 + type: Transform + - uid: 3329 + components: + - pos: -24.5,20.5 + parent: 1 + type: Transform + - uid: 3330 + components: + - pos: -24.5,19.5 + parent: 1 + type: Transform + - uid: 3682 + components: + - pos: -31.5,-6.5 + parent: 1 + type: Transform + - uid: 3854 + components: + - pos: -38.5,-6.5 + parent: 1 + type: Transform + - uid: 3934 + components: + - pos: -24.5,-3.5 + parent: 1 + type: Transform + - uid: 3935 + components: + - pos: -24.5,-4.5 + parent: 1 + type: Transform + - uid: 3936 + components: + - pos: -23.5,-4.5 + parent: 1 + type: Transform + - uid: 3937 + components: + - pos: -22.5,-4.5 + parent: 1 + type: Transform + - uid: 3938 + components: + - pos: -21.5,-4.5 + parent: 1 + type: Transform + - uid: 3939 + components: + - pos: -21.5,-5.5 + parent: 1 + type: Transform + - uid: 3940 + components: + - pos: -21.5,-6.5 + parent: 1 + type: Transform + - uid: 3941 + components: + - pos: -21.5,-7.5 + parent: 1 + type: Transform + - uid: 3942 + components: + - pos: -22.5,-7.5 + parent: 1 + type: Transform + - uid: 3943 + components: + - pos: -23.5,-7.5 + parent: 1 + type: Transform + - uid: 3944 + components: + - pos: -24.5,-7.5 + parent: 1 + type: Transform + - uid: 3945 + components: + - pos: -25.5,-7.5 + parent: 1 + type: Transform + - uid: 3946 + components: + - pos: -26.5,-7.5 + parent: 1 + type: Transform + - uid: 3947 + components: + - pos: -26.5,-6.5 + parent: 1 + type: Transform + - uid: 3948 + components: + - pos: -26.5,-5.5 + parent: 1 + type: Transform + - uid: 3949 + components: + - pos: -26.5,-4.5 + parent: 1 + type: Transform + - uid: 3950 + components: + - pos: -26.5,-3.5 + parent: 1 + type: Transform + - uid: 3951 + components: + - pos: -26.5,-2.5 + parent: 1 + type: Transform + - uid: 3952 + components: + - pos: -27.5,-2.5 + parent: 1 + type: Transform + - uid: 3953 + components: + - pos: -27.5,-6.5 + parent: 1 + type: Transform + - uid: 3954 + components: + - pos: -28.5,-6.5 + parent: 1 + type: Transform + - uid: 3955 + components: + - pos: -29.5,-6.5 + parent: 1 + type: Transform + - uid: 3956 + components: + - pos: -30.5,-6.5 + parent: 1 + type: Transform + - uid: 3957 + components: + - pos: -37.5,-6.5 + parent: 1 + type: Transform + - uid: 3973 + components: + - pos: -40.5,-5.5 + parent: 1 + type: Transform + - uid: 3974 + components: + - pos: -41.5,-5.5 + parent: 1 + type: Transform + - uid: 3975 + components: + - pos: -42.5,-5.5 + parent: 1 + type: Transform + - uid: 4284 + components: + - pos: -41.5,14.5 + parent: 1 + type: Transform + - uid: 4328 + components: + - pos: -40.5,15.5 + parent: 1 + type: Transform + - uid: 4329 + components: + - pos: -41.5,15.5 + parent: 1 + type: Transform + - uid: 4349 + components: + - pos: -41.5,13.5 + parent: 1 + type: Transform + - uid: 4350 + components: + - pos: -41.5,12.5 + parent: 1 + type: Transform + - uid: 4351 + components: + - pos: -42.5,14.5 + parent: 1 + type: Transform + - uid: 4352 + components: + - pos: -43.5,14.5 + parent: 1 + type: Transform + - uid: 4353 + components: + - pos: -44.5,14.5 + parent: 1 + type: Transform + - uid: 4354 + components: + - pos: -45.5,14.5 + parent: 1 + type: Transform + - uid: 4355 + components: + - pos: -46.5,14.5 + parent: 1 + type: Transform + - uid: 4356 + components: + - pos: -47.5,14.5 + parent: 1 + type: Transform + - uid: 4357 + components: + - pos: -48.5,14.5 + parent: 1 + type: Transform + - uid: 4358 + components: + - pos: -49.5,14.5 + parent: 1 + type: Transform + - uid: 4359 + components: + - pos: -50.5,14.5 + parent: 1 + type: Transform + - uid: 4360 + components: + - pos: -50.5,15.5 + parent: 1 + type: Transform + - uid: 4361 + components: + - pos: -50.5,16.5 + parent: 1 + type: Transform + - uid: 4362 + components: + - pos: -50.5,17.5 + parent: 1 + type: Transform + - uid: 4363 + components: + - pos: -50.5,18.5 + parent: 1 + type: Transform + - uid: 4364 + components: + - pos: -50.5,19.5 + parent: 1 + type: Transform + - uid: 4365 + components: + - pos: -50.5,20.5 + parent: 1 + type: Transform + - uid: 4366 + components: + - pos: -50.5,21.5 + parent: 1 + type: Transform + - uid: 4367 + components: + - pos: -49.5,21.5 + parent: 1 + type: Transform + - uid: 4368 + components: + - pos: -48.5,21.5 + parent: 1 + type: Transform + - uid: 4369 + components: + - pos: -47.5,21.5 + parent: 1 + type: Transform + - uid: 4370 + components: + - pos: -46.5,21.5 + parent: 1 + type: Transform + - uid: 4371 + components: + - pos: -45.5,21.5 + parent: 1 + type: Transform + - uid: 4372 + components: + - pos: -44.5,21.5 + parent: 1 + type: Transform + - uid: 4373 + components: + - pos: -43.5,21.5 + parent: 1 + type: Transform + - uid: 4374 + components: + - pos: -42.5,21.5 + parent: 1 + type: Transform + - uid: 4375 + components: + - pos: -41.5,21.5 + parent: 1 + type: Transform + - uid: 4376 + components: + - pos: -40.5,21.5 + parent: 1 + type: Transform + - uid: 4377 + components: + - pos: -40.5,20.5 + parent: 1 + type: Transform + - uid: 4432 + components: + - pos: -46.5,25.5 + parent: 1 + type: Transform + - uid: 4570 + components: + - pos: -44.5,27.5 + parent: 1 + type: Transform + - uid: 4602 + components: + - pos: -44.5,26.5 + parent: 1 + type: Transform + - uid: 4603 + components: + - pos: -44.5,25.5 + parent: 1 + type: Transform + - uid: 4604 + components: + - pos: -44.5,24.5 + parent: 1 + type: Transform + - uid: 4605 + components: + - pos: -44.5,23.5 + parent: 1 + type: Transform + - uid: 4606 + components: + - pos: -45.5,27.5 + parent: 1 + type: Transform + - uid: 4607 + components: + - pos: -46.5,27.5 + parent: 1 + type: Transform + - uid: 4609 + components: + - pos: -51.5,14.5 + parent: 1 + type: Transform + - uid: 4694 + components: + - pos: -45.5,9.5 + parent: 1 + type: Transform + - uid: 4695 + components: + - pos: -44.5,13.5 + parent: 1 + type: Transform + - uid: 4696 + components: + - pos: -44.5,12.5 + parent: 1 + type: Transform + - uid: 4697 + components: + - pos: -44.5,11.5 + parent: 1 + type: Transform + - uid: 4698 + components: + - pos: -44.5,10.5 + parent: 1 + type: Transform + - uid: 4699 + components: + - pos: -44.5,9.5 + parent: 1 + type: Transform + - uid: 4739 + components: + - pos: -46.5,24.5 + parent: 1 + type: Transform + - uid: 4740 + components: + - pos: -46.5,23.5 + parent: 1 + type: Transform + - uid: 5047 + components: + - pos: -88.5,20.5 + parent: 1 + type: Transform + - uid: 5079 + components: + - pos: -40.5,-6.5 + parent: 1 + type: Transform + - uid: 5080 + components: + - pos: -40.5,-7.5 + parent: 1 + type: Transform + - uid: 5081 + components: + - pos: -40.5,-8.5 + parent: 1 + type: Transform + - uid: 5082 + components: + - pos: -40.5,-9.5 + parent: 1 + type: Transform + - uid: 5083 + components: + - pos: -41.5,-9.5 + parent: 1 + type: Transform + - uid: 5084 + components: + - pos: -42.5,-9.5 + parent: 1 + type: Transform + - uid: 5085 + components: + - pos: -43.5,-9.5 + parent: 1 + type: Transform + - uid: 5086 + components: + - pos: -44.5,-9.5 + parent: 1 + type: Transform + - uid: 5087 + components: + - pos: -45.5,-9.5 + parent: 1 + type: Transform + - uid: 5088 + components: + - pos: -46.5,-9.5 + parent: 1 + type: Transform + - uid: 5089 + components: + - pos: -47.5,-9.5 + parent: 1 + type: Transform + - uid: 5090 + components: + - pos: -48.5,-9.5 + parent: 1 + type: Transform + - uid: 5091 + components: + - pos: -49.5,-9.5 + parent: 1 + type: Transform + - uid: 5092 + components: + - pos: -50.5,-9.5 + parent: 1 + type: Transform + - uid: 5093 + components: + - pos: -51.5,-9.5 + parent: 1 + type: Transform + - uid: 5094 + components: + - pos: -52.5,-9.5 + parent: 1 + type: Transform + - uid: 5095 + components: + - pos: -53.5,-9.5 + parent: 1 + type: Transform + - uid: 5096 + components: + - pos: -54.5,-9.5 + parent: 1 + type: Transform + - uid: 5097 + components: + - pos: -55.5,-9.5 + parent: 1 + type: Transform + - uid: 5098 + components: + - pos: -56.5,-9.5 + parent: 1 + type: Transform + - uid: 5099 + components: + - pos: -56.5,-8.5 + parent: 1 + type: Transform + - uid: 5100 + components: + - pos: -56.5,-7.5 + parent: 1 + type: Transform + - uid: 5101 + components: + - pos: -55.5,-7.5 + parent: 1 + type: Transform + - uid: 5588 + components: + - pos: -44.5,22.5 + parent: 1 + type: Transform + - uid: 5589 + components: + - pos: -46.5,22.5 + parent: 1 + type: Transform + - uid: 5807 + components: + - pos: 17.5,47.5 + parent: 1 + type: Transform + - uid: 6200 + components: + - pos: 18.5,46.5 + parent: 1 + type: Transform + - uid: 6201 + components: + - pos: 17.5,46.5 + parent: 1 + type: Transform + - uid: 6202 + components: + - pos: 16.5,45.5 + parent: 1 + type: Transform + - uid: 6213 + components: + - pos: 17.5,48.5 + parent: 1 + type: Transform + - uid: 6215 + components: + - pos: 16.5,49.5 + parent: 1 + type: Transform + - uid: 6216 + components: + - pos: 17.5,49.5 + parent: 1 + type: Transform + - uid: 6217 + components: + - pos: 16.5,49.5 + parent: 1 + type: Transform + - uid: 6547 + components: + - pos: -3.5,56.5 + parent: 1 + type: Transform + - uid: 6548 + components: + - pos: -4.5,56.5 + parent: 1 + type: Transform + - uid: 6549 + components: + - pos: -4.5,57.5 + parent: 1 + type: Transform + - uid: 7096 + components: + - pos: -20.5,22.5 + parent: 1 + type: Transform + - uid: 7808 + components: + - pos: -53.5,85.5 + parent: 1 + type: Transform + - uid: 7809 + components: + - pos: -52.5,85.5 + parent: 1 + type: Transform + - uid: 7810 + components: + - pos: -51.5,85.5 + parent: 1 + type: Transform + - uid: 7811 + components: + - pos: -50.5,85.5 + parent: 1 + type: Transform + - uid: 7812 + components: + - pos: -50.5,84.5 + parent: 1 + type: Transform + - uid: 7813 + components: + - pos: -50.5,83.5 + parent: 1 + type: Transform + - uid: 7814 + components: + - pos: -50.5,82.5 + parent: 1 + type: Transform + - uid: 7815 + components: + - pos: -50.5,81.5 + parent: 1 + type: Transform + - uid: 7816 + components: + - pos: -50.5,80.5 + parent: 1 + type: Transform + - uid: 7817 + components: + - pos: -50.5,79.5 + parent: 1 + type: Transform + - uid: 7818 + components: + - pos: -50.5,78.5 + parent: 1 + type: Transform + - uid: 7819 + components: + - pos: -50.5,77.5 + parent: 1 + type: Transform + - uid: 7820 + components: + - pos: -50.5,76.5 + parent: 1 + type: Transform + - uid: 7821 + components: + - pos: -50.5,75.5 + parent: 1 + type: Transform + - uid: 7822 + components: + - pos: -50.5,74.5 + parent: 1 + type: Transform + - uid: 7823 + components: + - pos: -50.5,73.5 + parent: 1 + type: Transform + - uid: 7824 + components: + - pos: -50.5,72.5 + parent: 1 + type: Transform + - uid: 7825 + components: + - pos: -50.5,71.5 + parent: 1 + type: Transform + - uid: 7826 + components: + - pos: -50.5,70.5 + parent: 1 + type: Transform + - uid: 7827 + components: + - pos: -50.5,69.5 + parent: 1 + type: Transform + - uid: 7828 + components: + - pos: -50.5,68.5 + parent: 1 + type: Transform + - uid: 7829 + components: + - pos: -50.5,67.5 + parent: 1 + type: Transform + - uid: 7830 + components: + - pos: -50.5,66.5 + parent: 1 + type: Transform + - uid: 7831 + components: + - pos: -50.5,65.5 + parent: 1 + type: Transform + - uid: 7832 + components: + - pos: -50.5,64.5 + parent: 1 + type: Transform + - uid: 7836 + components: + - pos: -50.5,63.5 + parent: 1 + type: Transform + - uid: 7841 + components: + - pos: -50.5,62.5 + parent: 1 + type: Transform + - uid: 7844 + components: + - pos: -49.5,63.5 + parent: 1 + type: Transform + - uid: 7845 + components: + - pos: -50.5,61.5 + parent: 1 + type: Transform + - uid: 7847 + components: + - pos: -50.5,59.5 + parent: 1 + type: Transform + - uid: 7848 + components: + - pos: -50.5,58.5 + parent: 1 + type: Transform + - uid: 7850 + components: + - pos: -50.5,57.5 + parent: 1 + type: Transform + - uid: 7851 + components: + - pos: -50.5,56.5 + parent: 1 + type: Transform + - uid: 7852 + components: + - pos: -51.5,56.5 + parent: 1 + type: Transform + - uid: 7853 + components: + - pos: -52.5,56.5 + parent: 1 + type: Transform + - uid: 7854 + components: + - pos: -53.5,56.5 + parent: 1 + type: Transform + - uid: 7855 + components: + - pos: -54.5,56.5 + parent: 1 + type: Transform + - uid: 7856 + components: + - pos: -55.5,56.5 + parent: 1 + type: Transform + - uid: 7857 + components: + - pos: -56.5,56.5 + parent: 1 + type: Transform + - uid: 7858 + components: + - pos: -57.5,56.5 + parent: 1 + type: Transform + - uid: 7859 + components: + - pos: -58.5,56.5 + parent: 1 + type: Transform + - uid: 8780 + components: + - pos: -50.5,60.5 + parent: 1 + type: Transform + - uid: 8942 + components: + - pos: -51.5,60.5 + parent: 1 + type: Transform + - uid: 8943 + components: + - pos: -52.5,60.5 + parent: 1 + type: Transform + - uid: 8944 + components: + - pos: -53.5,60.5 + parent: 1 + type: Transform + - uid: 8945 + components: + - pos: -54.5,60.5 + parent: 1 + type: Transform + - uid: 8946 + components: + - pos: -55.5,60.5 + parent: 1 + type: Transform + - uid: 8947 + components: + - pos: -56.5,60.5 + parent: 1 + type: Transform + - uid: 8948 + components: + - pos: -57.5,60.5 + parent: 1 + type: Transform + - uid: 8949 + components: + - pos: -58.5,60.5 + parent: 1 + type: Transform + - uid: 8950 + components: + - pos: -59.5,60.5 + parent: 1 + type: Transform + - uid: 8951 + components: + - pos: -60.5,60.5 + parent: 1 + type: Transform + - uid: 8952 + components: + - pos: -61.5,60.5 + parent: 1 + type: Transform + - uid: 8953 + components: + - pos: -62.5,60.5 + parent: 1 + type: Transform + - uid: 8954 + components: + - pos: -63.5,60.5 + parent: 1 + type: Transform + - uid: 8955 + components: + - pos: -63.5,59.5 + parent: 1 + type: Transform + - uid: 8956 + components: + - pos: -63.5,58.5 + parent: 1 + type: Transform + - uid: 8957 + components: + - pos: -63.5,57.5 + parent: 1 + type: Transform + - uid: 8958 + components: + - pos: -64.5,57.5 + parent: 1 + type: Transform + - uid: 8959 + components: + - pos: -65.5,57.5 + parent: 1 + type: Transform + - uid: 9381 + components: + - pos: -35.5,57.5 + parent: 1 + type: Transform + - uid: 9382 + components: + - pos: -34.5,57.5 + parent: 1 + type: Transform + - uid: 9383 + components: + - pos: -34.5,56.5 + parent: 1 + type: Transform + - uid: 9384 + components: + - pos: -34.5,55.5 + parent: 1 + type: Transform + - uid: 9385 + components: + - pos: -33.5,55.5 + parent: 1 + type: Transform + - uid: 9386 + components: + - pos: -32.5,55.5 + parent: 1 + type: Transform + - uid: 9387 + components: + - pos: -32.5,54.5 + parent: 1 + type: Transform + - uid: 9388 + components: + - pos: -32.5,53.5 + parent: 1 + type: Transform + - uid: 9389 + components: + - pos: -32.5,52.5 + parent: 1 + type: Transform + - uid: 9390 + components: + - pos: -32.5,51.5 + parent: 1 + type: Transform + - uid: 9391 + components: + - pos: -32.5,50.5 + parent: 1 + type: Transform + - uid: 9392 + components: + - pos: -31.5,50.5 + parent: 1 + type: Transform + - uid: 9393 + components: + - pos: -31.5,49.5 + parent: 1 + type: Transform + - uid: 9394 + components: + - pos: -31.5,48.5 + parent: 1 + type: Transform + - uid: 9396 + components: + - pos: -30.5,50.5 + parent: 1 + type: Transform + - uid: 9397 + components: + - pos: -29.5,50.5 + parent: 1 + type: Transform + - uid: 9398 + components: + - pos: -28.5,50.5 + parent: 1 + type: Transform + - uid: 9399 + components: + - pos: -27.5,50.5 + parent: 1 + type: Transform + - uid: 9400 + components: + - pos: -26.5,50.5 + parent: 1 + type: Transform + - uid: 9401 + components: + - pos: -25.5,50.5 + parent: 1 + type: Transform + - uid: 9402 + components: + - pos: -24.5,50.5 + parent: 1 + type: Transform + - uid: 9403 + components: + - pos: -24.5,49.5 + parent: 1 + type: Transform + - uid: 9404 + components: + - pos: -24.5,48.5 + parent: 1 + type: Transform + - uid: 9405 + components: + - pos: -24.5,47.5 + parent: 1 + type: Transform + - uid: 9406 + components: + - pos: -24.5,46.5 + parent: 1 + type: Transform + - uid: 9407 + components: + - pos: -24.5,45.5 + parent: 1 + type: Transform + - uid: 9408 + components: + - pos: -24.5,44.5 + parent: 1 + type: Transform + - uid: 9409 + components: + - pos: -24.5,43.5 + parent: 1 + type: Transform + - uid: 9410 + components: + - pos: -24.5,42.5 + parent: 1 + type: Transform + - uid: 9411 + components: + - pos: -24.5,41.5 + parent: 1 + type: Transform + - uid: 9412 + components: + - pos: -24.5,40.5 + parent: 1 + type: Transform + - uid: 9413 + components: + - pos: -24.5,39.5 + parent: 1 + type: Transform + - uid: 9414 + components: + - pos: -24.5,38.5 + parent: 1 + type: Transform + - uid: 9415 + components: + - pos: -25.5,38.5 + parent: 1 + type: Transform + - uid: 9416 + components: + - pos: -26.5,38.5 + parent: 1 + type: Transform + - uid: 9495 + components: + - pos: -23.5,40.5 + parent: 1 + type: Transform + - uid: 9642 + components: + - pos: -20.5,23.5 + parent: 1 + type: Transform + - uid: 9643 + components: + - pos: -21.5,23.5 + parent: 1 + type: Transform + - uid: 9644 + components: + - pos: -21.5,23.5 + parent: 1 + type: Transform + - uid: 9645 + components: + - pos: -22.5,23.5 + parent: 1 + type: Transform + - uid: 9646 + components: + - pos: -23.5,23.5 + parent: 1 + type: Transform + - uid: 9647 + components: + - pos: -24.5,23.5 + parent: 1 + type: Transform + - uid: 9648 + components: + - pos: -25.5,23.5 + parent: 1 + type: Transform + - uid: 9649 + components: + - pos: -26.5,23.5 + parent: 1 + type: Transform + - uid: 9650 + components: + - pos: -27.5,23.5 + parent: 1 + type: Transform + - uid: 9651 + components: + - pos: -28.5,23.5 + parent: 1 + type: Transform + - uid: 9652 + components: + - pos: -29.5,23.5 + parent: 1 + type: Transform + - uid: 9653 + components: + - pos: -29.5,24.5 + parent: 1 + type: Transform + - uid: 9654 + components: + - pos: -29.5,25.5 + parent: 1 + type: Transform + - uid: 9655 + components: + - pos: -29.5,26.5 + parent: 1 + type: Transform + - uid: 9656 + components: + - pos: -29.5,27.5 + parent: 1 + type: Transform + - uid: 9657 + components: + - pos: -29.5,28.5 + parent: 1 + type: Transform + - uid: 9658 + components: + - pos: -29.5,29.5 + parent: 1 + type: Transform + - uid: 9659 + components: + - pos: -29.5,30.5 + parent: 1 + type: Transform + - uid: 10021 + components: + - pos: -65.5,58.5 + parent: 1 + type: Transform + - uid: 10022 + components: + - pos: -65.5,59.5 + parent: 1 + type: Transform + - uid: 10213 + components: + - pos: -79.5,27.5 + parent: 1 + type: Transform + - uid: 10214 + components: + - pos: -80.5,27.5 + parent: 1 + type: Transform + - uid: 10215 + components: + - pos: -81.5,27.5 + parent: 1 + type: Transform + - uid: 10217 + components: + - pos: -82.5,27.5 + parent: 1 + type: Transform + - uid: 10218 + components: + - pos: -83.5,27.5 + parent: 1 + type: Transform + - uid: 10219 + components: + - pos: -84.5,27.5 + parent: 1 + type: Transform + - uid: 10220 + components: + - pos: -84.5,28.5 + parent: 1 + type: Transform + - uid: 10221 + components: + - pos: -84.5,29.5 + parent: 1 + type: Transform + - uid: 10222 + components: + - pos: -84.5,30.5 + parent: 1 + type: Transform + - uid: 10223 + components: + - pos: -85.5,30.5 + parent: 1 + type: Transform + - uid: 10224 + components: + - pos: -86.5,30.5 + parent: 1 + type: Transform + - uid: 10237 + components: + - pos: -39.5,-6.5 + parent: 1 + type: Transform + - uid: 10271 + components: + - pos: -35.5,-6.5 + parent: 1 + type: Transform + - uid: 10277 + components: + - pos: -34.5,-6.5 + parent: 1 + type: Transform + - uid: 10285 + components: + - pos: -33.5,-6.5 + parent: 1 + type: Transform + - uid: 10288 + components: + - pos: -32.5,-6.5 + parent: 1 + type: Transform + - uid: 10298 + components: + - pos: -36.5,-6.5 + parent: 1 + type: Transform + - uid: 10318 + components: + - pos: -20.5,18.5 + parent: 1 + type: Transform + - uid: 10320 + components: + - pos: -20.5,17.5 + parent: 1 + type: Transform + - uid: 10430 + components: + - pos: -42.5,-8.5 + parent: 1 + type: Transform + - uid: 10522 + components: + - pos: -87.5,30.5 + parent: 1 + type: Transform + - uid: 10523 + components: + - pos: -88.5,30.5 + parent: 1 + type: Transform + - uid: 10524 + components: + - pos: -79.5,26.5 + parent: 1 + type: Transform + - uid: 10525 + components: + - pos: -79.5,25.5 + parent: 1 + type: Transform + - uid: 10526 + components: + - pos: -79.5,24.5 + parent: 1 + type: Transform + - uid: 10527 + components: + - pos: -79.5,23.5 + parent: 1 + type: Transform + - uid: 10528 + components: + - pos: -80.5,23.5 + parent: 1 + type: Transform + - uid: 10529 + components: + - pos: -81.5,23.5 + parent: 1 + type: Transform + - uid: 10530 + components: + - pos: -82.5,23.5 + parent: 1 + type: Transform + - uid: 10531 + components: + - pos: -83.5,23.5 + parent: 1 + type: Transform + - uid: 10532 + components: + - pos: -84.5,23.5 + parent: 1 + type: Transform + - uid: 10533 + components: + - pos: -84.5,22.5 + parent: 1 + type: Transform + - uid: 10534 + components: + - pos: -84.5,21.5 + parent: 1 + type: Transform + - uid: 10537 + components: + - pos: -84.5,20.5 + parent: 1 + type: Transform + - uid: 10546 + components: + - pos: -85.5,20.5 + parent: 1 + type: Transform + - uid: 10547 + components: + - pos: -86.5,20.5 + parent: 1 + type: Transform + - uid: 10548 + components: + - pos: -87.5,20.5 + parent: 1 + type: Transform + - uid: 10617 + components: + - pos: -101.5,18.5 + parent: 1 + type: Transform + - uid: 10618 + components: + - pos: -93.5,32.5 + parent: 1 + type: Transform + - uid: 10619 + components: + - pos: -93.5,33.5 + parent: 1 + type: Transform + - uid: 10620 + components: + - pos: -101.5,32.5 + parent: 1 + type: Transform + - uid: 10621 + components: + - pos: -101.5,33.5 + parent: 1 + type: Transform + - uid: 10622 + components: + - pos: -104.5,29.5 + parent: 1 + type: Transform + - uid: 10623 + components: + - pos: -105.5,29.5 + parent: 1 + type: Transform + - uid: 10624 + components: + - pos: -105.5,30.5 + parent: 1 + type: Transform + - uid: 10625 + components: + - pos: -105.5,31.5 + parent: 1 + type: Transform + - uid: 10626 + components: + - pos: -105.5,28.5 + parent: 1 + type: Transform + - uid: 10627 + components: + - pos: -105.5,27.5 + parent: 1 + type: Transform + - uid: 10628 + components: + - pos: -105.5,26.5 + parent: 1 + type: Transform + - uid: 10629 + components: + - pos: -105.5,25.5 + parent: 1 + type: Transform + - uid: 10630 + components: + - pos: -105.5,24.5 + parent: 1 + type: Transform + - uid: 10631 + components: + - pos: -105.5,23.5 + parent: 1 + type: Transform + - uid: 10632 + components: + - pos: -105.5,22.5 + parent: 1 + type: Transform + - uid: 10633 + components: + - pos: -105.5,21.5 + parent: 1 + type: Transform + - uid: 10634 + components: + - pos: -105.5,20.5 + parent: 1 + type: Transform + - uid: 10635 + components: + - pos: -105.5,19.5 + parent: 1 + type: Transform + - uid: 10636 + components: + - pos: -104.5,21.5 + parent: 1 + type: Transform + - uid: 10637 + components: + - pos: -101.5,17.5 + parent: 1 + type: Transform + - uid: 10638 + components: + - pos: -93.5,18.5 + parent: 1 + type: Transform + - uid: 10639 + components: + - pos: -93.5,17.5 + parent: 1 + type: Transform + - uid: 10640 + components: + - pos: -90.5,21.5 + parent: 1 + type: Transform + - uid: 10641 + components: + - pos: -90.5,29.5 + parent: 1 + type: Transform + - uid: 10642 + components: + - pos: -89.5,29.5 + parent: 1 + type: Transform + - uid: 10643 + components: + - pos: -89.5,21.5 + parent: 1 + type: Transform + - uid: 10981 + components: + - pos: -66.5,57.5 + parent: 1 + type: Transform + - uid: 10982 + components: + - pos: -67.5,57.5 + parent: 1 + type: Transform + - uid: 10983 + components: + - pos: -67.5,56.5 + parent: 1 + type: Transform + - uid: 10984 + components: + - pos: -67.5,55.5 + parent: 1 + type: Transform + - uid: 10985 + components: + - pos: -67.5,54.5 + parent: 1 + type: Transform + - uid: 10986 + components: + - pos: -67.5,53.5 + parent: 1 + type: Transform + - uid: 10987 + components: + - pos: -67.5,52.5 + parent: 1 + type: Transform + - uid: 10988 + components: + - pos: -67.5,51.5 + parent: 1 + type: Transform + - uid: 10989 + components: + - pos: -67.5,50.5 + parent: 1 + type: Transform + - uid: 10990 + components: + - pos: -66.5,50.5 + parent: 1 + type: Transform + - uid: 10991 + components: + - pos: -66.5,49.5 + parent: 1 + type: Transform + - uid: 10992 + components: + - pos: -66.5,48.5 + parent: 1 + type: Transform + - uid: 10993 + components: + - pos: -66.5,47.5 + parent: 1 + type: Transform + - uid: 10994 + components: + - pos: -66.5,46.5 + parent: 1 + type: Transform + - uid: 10995 + components: + - pos: -66.5,45.5 + parent: 1 + type: Transform + - uid: 10996 + components: + - pos: -66.5,44.5 + parent: 1 + type: Transform + - uid: 10997 + components: + - pos: -65.5,44.5 + parent: 1 + type: Transform + - uid: 11064 + components: + - pos: -71.5,34.5 + parent: 1 + type: Transform + - uid: 11065 + components: + - pos: -70.5,34.5 + parent: 1 + type: Transform + - uid: 11066 + components: + - pos: -69.5,34.5 + parent: 1 + type: Transform + - uid: 11067 + components: + - pos: -68.5,34.5 + parent: 1 + type: Transform + - uid: 11068 + components: + - pos: -68.5,35.5 + parent: 1 + type: Transform + - uid: 11069 + components: + - pos: -72.5,34.5 + parent: 1 + type: Transform + - uid: 11070 + components: + - pos: -73.5,34.5 + parent: 1 + type: Transform + - uid: 11071 + components: + - pos: -74.5,34.5 + parent: 1 + type: Transform + - uid: 11072 + components: + - pos: -75.5,34.5 + parent: 1 + type: Transform + - uid: 11073 + components: + - pos: -76.5,34.5 + parent: 1 + type: Transform + - uid: 11074 + components: + - pos: -76.5,35.5 + parent: 1 + type: Transform + - uid: 11075 + components: + - pos: -76.5,36.5 + parent: 1 + type: Transform + - uid: 11076 + components: + - pos: -73.5,33.5 + parent: 1 + type: Transform + - uid: 11077 + components: + - pos: -73.5,33.5 + parent: 1 + type: Transform + - uid: 11078 + components: + - pos: -73.5,32.5 + parent: 1 + type: Transform + - uid: 11079 + components: + - pos: -73.5,31.5 + parent: 1 + type: Transform + - uid: 11080 + components: + - pos: -73.5,30.5 + parent: 1 + type: Transform + - uid: 11081 + components: + - pos: -73.5,29.5 + parent: 1 + type: Transform + - uid: 11082 + components: + - pos: -73.5,28.5 + parent: 1 + type: Transform + - uid: 11085 + components: + - pos: -73.5,27.5 + parent: 1 + type: Transform + - uid: 11091 + components: + - pos: -73.5,26.5 + parent: 1 + type: Transform + - uid: 11114 + components: + - pos: -73.5,25.5 + parent: 1 + type: Transform + - uid: 11116 + components: + - pos: -73.5,24.5 + parent: 1 + type: Transform + - uid: 11120 + components: + - pos: -73.5,23.5 + parent: 1 + type: Transform + - uid: 11121 + components: + - pos: -73.5,22.5 + parent: 1 + type: Transform + - uid: 11157 + components: + - pos: -73.5,21.5 + parent: 1 + type: Transform + - uid: 11158 + components: + - pos: -74.5,21.5 + parent: 1 + type: Transform + - uid: 11159 + components: + - pos: -75.5,21.5 + parent: 1 + type: Transform + - uid: 14947 + components: + - pos: -72.5,26.5 + parent: 1 + type: Transform + - uid: 14948 + components: + - pos: -71.5,26.5 + parent: 1 + type: Transform + - uid: 14949 + components: + - pos: -71.5,25.5 + parent: 1 + type: Transform + - uid: 15235 + components: + - pos: 17.5,45.5 + parent: 1 + type: Transform + - uid: 15236 + components: + - pos: 16.5,44.5 + parent: 1 + type: Transform +- proto: CableMVStack + entities: + - uid: 2888 + components: + - pos: 25.496317,-8.37454 + parent: 1 + type: Transform + - uid: 3424 + components: + - pos: -54.175285,29.57135 + parent: 1 + type: Transform + - uid: 15989 + components: + - pos: -7.5488524,8.259583 + parent: 1 + type: Transform +- proto: CableTerminal + entities: + - uid: 906 + components: + - rot: 3.141592653589793 rad + pos: 27.5,-8.5 + parent: 1 + type: Transform + - uid: 930 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,3.5 + parent: 1 + type: Transform + - uid: 1028 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,23.5 + parent: 1 + type: Transform + - uid: 10167 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,29.5 + parent: 1 + type: Transform + - uid: 10171 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,31.5 + parent: 1 + type: Transform + - uid: 10173 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,30.5 + parent: 1 + type: Transform + - uid: 10175 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,28.5 + parent: 1 + type: Transform +- proto: CannabisSeeds + entities: + - uid: 29 + components: + - pos: -37.356266,49.664383 + parent: 1 + type: Transform + - uid: 65 + components: + - pos: -37.481266,49.508133 + parent: 1 + type: Transform +- proto: Carpet + entities: + - uid: 1799 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,-0.5 + parent: 1 + type: Transform + - uid: 1800 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,0.5 + parent: 1 + type: Transform + - uid: 1801 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,1.5 + parent: 1 + type: Transform + - uid: 1802 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,2.5 + parent: 1 + type: Transform + - uid: 1803 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,3.5 + parent: 1 + type: Transform + - uid: 1804 + components: + - rot: -1.5707963267948966 rad + pos: 14.5,3.5 + parent: 1 + type: Transform + - uid: 1805 + components: + - rot: -1.5707963267948966 rad + pos: 13.5,3.5 + parent: 1 + type: Transform + - uid: 1806 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,3.5 + parent: 1 + type: Transform + - uid: 1807 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,3.5 + parent: 1 + type: Transform + - uid: 5916 + components: + - pos: -7.5,44.5 + parent: 1 + type: Transform + - uid: 5917 + components: + - pos: -7.5,43.5 + parent: 1 + type: Transform + - uid: 5918 + components: + - pos: -7.5,42.5 + parent: 1 + type: Transform + - uid: 5919 + components: + - pos: -7.5,41.5 + parent: 1 + type: Transform + - uid: 5920 + components: + - pos: -7.5,40.5 + parent: 1 + type: Transform + - uid: 5921 + components: + - pos: -7.5,39.5 + parent: 1 + type: Transform + - uid: 5922 + components: + - pos: -8.5,40.5 + parent: 1 + type: Transform + - uid: 5923 + components: + - pos: -9.5,40.5 + parent: 1 + type: Transform + - uid: 5924 + components: + - pos: -6.5,40.5 + parent: 1 + type: Transform + - uid: 5925 + components: + - pos: -5.5,40.5 + parent: 1 + type: Transform + - uid: 8933 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,63.5 + parent: 1 + type: Transform + - uid: 8934 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,64.5 + parent: 1 + type: Transform + - uid: 8935 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,65.5 + parent: 1 + type: Transform + - uid: 8936 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,63.5 + parent: 1 + type: Transform + - uid: 8937 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,64.5 + parent: 1 + type: Transform + - uid: 8938 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,65.5 + parent: 1 + type: Transform + - uid: 8939 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,63.5 + parent: 1 + type: Transform + - uid: 8940 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,64.5 + parent: 1 + type: Transform + - uid: 8941 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,65.5 + parent: 1 + type: Transform + - uid: 12611 + components: + - pos: 15.5,-1.5 + parent: 1 + type: Transform + - uid: 12612 + components: + - pos: 15.5,-2.5 + parent: 1 + type: Transform +- proto: CarpetBlack + entities: + - uid: 3499 + components: + - rot: 1.5707963267948966 rad + pos: -50.5,9.5 + parent: 1 + type: Transform + - uid: 4703 + components: + - rot: 1.5707963267948966 rad + pos: -49.5,9.5 + parent: 1 + type: Transform + - uid: 4706 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,9.5 + parent: 1 + type: Transform +- proto: CarpetBlue + entities: + - uid: 7530 + components: + - pos: -22.5,47.5 + parent: 1 + type: Transform + - uid: 7531 + components: + - pos: -22.5,45.5 + parent: 1 + type: Transform + - uid: 7532 + components: + - pos: -21.5,45.5 + parent: 1 + type: Transform + - uid: 7533 + components: + - pos: -22.5,46.5 + parent: 1 + type: Transform + - uid: 7534 + components: + - pos: -21.5,47.5 + parent: 1 + type: Transform + - uid: 7535 + components: + - pos: -21.5,46.5 + parent: 1 + type: Transform + - uid: 12785 + components: + - pos: 14.5,30.5 + parent: 1 + type: Transform + - uid: 12786 + components: + - pos: 14.5,31.5 + parent: 1 + type: Transform + - uid: 12787 + components: + - pos: 14.5,32.5 + parent: 1 + type: Transform + - uid: 12788 + components: + - pos: 15.5,30.5 + parent: 1 + type: Transform + - uid: 12789 + components: + - pos: 15.5,31.5 + parent: 1 + type: Transform + - uid: 12790 + components: + - pos: 15.5,32.5 + parent: 1 + type: Transform + - uid: 12791 + components: + - pos: 16.5,30.5 + parent: 1 + type: Transform + - uid: 12792 + components: + - pos: 16.5,31.5 + parent: 1 + type: Transform + - uid: 12793 + components: + - pos: 16.5,32.5 + parent: 1 + type: Transform +- proto: CarpetChapel + entities: + - uid: 1774 + components: + - pos: 13.5,-0.5 + parent: 1 + type: Transform + - uid: 1775 + components: + - pos: 13.5,1.5 + parent: 1 + type: Transform + - uid: 1776 + components: + - rot: -1.5707963267948966 rad + pos: 13.5,2.5 + parent: 1 + type: Transform + - uid: 1777 + components: + - rot: -1.5707963267948966 rad + pos: 13.5,0.5 + parent: 1 + type: Transform + - uid: 1780 + components: + - rot: 3.141592653589793 rad + pos: 14.5,0.5 + parent: 1 + type: Transform + - uid: 1781 + components: + - rot: 3.141592653589793 rad + pos: 14.5,2.5 + parent: 1 + type: Transform + - uid: 1782 + components: + - rot: 3.141592653589793 rad + pos: 17.5,2.5 + parent: 1 + type: Transform + - uid: 1783 + components: + - rot: 3.141592653589793 rad + pos: 17.5,0.5 + parent: 1 + type: Transform + - uid: 1784 + components: + - rot: 3.141592653589793 rad + pos: 17.5,-1.5 + parent: 1 + type: Transform + - uid: 1785 + components: + - rot: 1.5707963267948966 rad + pos: 17.5,-2.5 + parent: 1 + type: Transform + - uid: 1786 + components: + - rot: 1.5707963267948966 rad + pos: 17.5,-0.5 + parent: 1 + type: Transform + - uid: 1787 + components: + - rot: 1.5707963267948966 rad + pos: 17.5,1.5 + parent: 1 + type: Transform + - uid: 1788 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,1.5 + parent: 1 + type: Transform + - uid: 1789 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,-0.5 + parent: 1 + type: Transform + - uid: 1791 + components: + - pos: 16.5,-2.5 + parent: 1 + type: Transform + - uid: 1792 + components: + - pos: 16.5,-0.5 + parent: 1 + type: Transform + - uid: 1793 + components: + - pos: 16.5,1.5 + parent: 1 + type: Transform + - uid: 1794 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,2.5 + parent: 1 + type: Transform + - uid: 1795 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,0.5 + parent: 1 + type: Transform + - uid: 1796 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-1.5 + parent: 1 + type: Transform + - uid: 12607 + components: + - rot: -1.5707963267948966 rad + pos: 13.5,-1.5 + parent: 1 + type: Transform + - uid: 12608 + components: + - rot: 3.141592653589793 rad + pos: 14.5,-1.5 + parent: 1 + type: Transform + - uid: 12609 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,-2.5 + parent: 1 + type: Transform + - uid: 12610 + components: + - pos: 13.5,-2.5 + parent: 1 + type: Transform +- proto: CarpetGreen + entities: + - uid: 14438 + components: + - pos: -71.5,8.5 + parent: 1 + type: Transform + - uid: 14439 + components: + - pos: -71.5,9.5 + parent: 1 + type: Transform + - uid: 14440 + components: + - pos: -71.5,10.5 + parent: 1 + type: Transform + - uid: 14441 + components: + - pos: -71.5,11.5 + parent: 1 + type: Transform + - uid: 14442 + components: + - pos: -71.5,12.5 + parent: 1 + type: Transform + - uid: 14443 + components: + - pos: -71.5,13.5 + parent: 1 + type: Transform + - uid: 14444 + components: + - pos: -70.5,8.5 + parent: 1 + type: Transform + - uid: 14445 + components: + - pos: -70.5,9.5 + parent: 1 + type: Transform + - uid: 14446 + components: + - pos: -70.5,10.5 + parent: 1 + type: Transform + - uid: 14447 + components: + - pos: -70.5,11.5 + parent: 1 + type: Transform + - uid: 14448 + components: + - pos: -70.5,12.5 + parent: 1 + type: Transform + - uid: 14449 + components: + - pos: -70.5,13.5 + parent: 1 + type: Transform + - uid: 14450 + components: + - pos: -72.5,9.5 + parent: 1 + type: Transform + - uid: 14451 + components: + - pos: -69.5,9.5 + parent: 1 + type: Transform +- proto: CarpetOrange + entities: + - uid: 4082 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,-4.5 + parent: 1 + type: Transform + - uid: 4083 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,-3.5 + parent: 1 + type: Transform + - uid: 4085 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,-4.5 + parent: 1 + type: Transform + - uid: 4086 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,-3.5 + parent: 1 + type: Transform + - uid: 4087 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,-2.5 + parent: 1 + type: Transform + - uid: 4088 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,-4.5 + parent: 1 + type: Transform + - uid: 4089 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,-3.5 + parent: 1 + type: Transform + - uid: 4090 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,-2.5 + parent: 1 + type: Transform + - uid: 14216 + components: + - pos: -69.5,15.5 + parent: 1 + type: Transform + - uid: 14217 + components: + - pos: -69.5,16.5 + parent: 1 + type: Transform + - uid: 14219 + components: + - pos: -68.5,15.5 + parent: 1 + type: Transform + - uid: 14220 + components: + - pos: -68.5,16.5 + parent: 1 + type: Transform +- proto: CarpetPurple + entities: + - uid: 2471 + components: + - pos: -1.5,1.5 + parent: 1 + type: Transform + - uid: 2472 + components: + - pos: -1.5,2.5 + parent: 1 + type: Transform + - uid: 2473 + components: + - pos: -2.5,1.5 + parent: 1 + type: Transform + - uid: 2474 + components: + - pos: -2.5,2.5 + parent: 1 + type: Transform + - uid: 2475 + components: + - pos: -16.5,-5.5 + parent: 1 + type: Transform + - uid: 2476 + components: + - pos: -16.5,-4.5 + parent: 1 + type: Transform + - uid: 2477 + components: + - pos: -16.5,-3.5 + parent: 1 + type: Transform + - uid: 2478 + components: + - pos: -17.5,-5.5 + parent: 1 + type: Transform + - uid: 2479 + components: + - pos: -17.5,-4.5 + parent: 1 + type: Transform + - uid: 2480 + components: + - pos: -17.5,-3.5 + parent: 1 + type: Transform + - uid: 2481 + components: + - pos: -18.5,-5.5 + parent: 1 + type: Transform + - uid: 2482 + components: + - pos: -18.5,-4.5 + parent: 1 + type: Transform + - uid: 2483 + components: + - pos: -18.5,-3.5 + parent: 1 + type: Transform + - uid: 9749 + components: + - pos: -38.5,38.5 + parent: 1 + type: Transform + - uid: 9759 + components: + - pos: -38.5,37.5 + parent: 1 + type: Transform + - uid: 9760 + components: + - pos: -38.5,36.5 + parent: 1 + type: Transform + - uid: 9761 + components: + - pos: -37.5,38.5 + parent: 1 + type: Transform + - uid: 9762 + components: + - pos: -37.5,37.5 + parent: 1 + type: Transform + - uid: 9763 + components: + - pos: -37.5,36.5 + parent: 1 + type: Transform + - uid: 9764 + components: + - pos: -36.5,38.5 + parent: 1 + type: Transform + - uid: 9765 + components: + - pos: -36.5,37.5 + parent: 1 + type: Transform + - uid: 9766 + components: + - pos: -36.5,36.5 + parent: 1 + type: Transform +- proto: Catwalk + entities: + - uid: 5 + components: + - pos: -86.5,46.5 + parent: 1 + type: Transform + - uid: 118 + components: + - pos: -86.5,33.5 + parent: 1 + type: Transform + - uid: 120 + components: + - pos: -86.5,35.5 + parent: 1 + type: Transform + - uid: 126 + components: + - pos: -86.5,37.5 + parent: 1 + type: Transform + - uid: 519 + components: + - pos: -86.5,38.5 + parent: 1 + type: Transform + - uid: 520 + components: + - pos: -86.5,36.5 + parent: 1 + type: Transform + - uid: 521 + components: + - pos: -86.5,34.5 + parent: 1 + type: Transform + - uid: 721 + components: + - pos: 19.5,-19.5 + parent: 1 + type: Transform + - uid: 861 + components: + - pos: 18.5,-15.5 + parent: 1 + type: Transform + - uid: 862 + components: + - pos: 19.5,-15.5 + parent: 1 + type: Transform + - uid: 863 + components: + - pos: 20.5,-15.5 + parent: 1 + type: Transform + - uid: 864 + components: + - pos: 21.5,-15.5 + parent: 1 + type: Transform + - uid: 865 + components: + - pos: 22.5,-15.5 + parent: 1 + type: Transform + - uid: 866 + components: + - pos: 23.5,-15.5 + parent: 1 + type: Transform + - uid: 867 + components: + - pos: 24.5,-15.5 + parent: 1 + type: Transform + - uid: 868 + components: + - pos: 25.5,-15.5 + parent: 1 + type: Transform + - uid: 869 + components: + - pos: 26.5,-15.5 + parent: 1 + type: Transform + - uid: 870 + components: + - pos: 27.5,-15.5 + parent: 1 + type: Transform + - uid: 871 + components: + - pos: 28.5,-15.5 + parent: 1 + type: Transform + - uid: 872 + components: + - pos: 20.5,-19.5 + parent: 1 + type: Transform + - uid: 873 + components: + - pos: 21.5,-19.5 + parent: 1 + type: Transform + - uid: 874 + components: + - pos: 22.5,-19.5 + parent: 1 + type: Transform + - uid: 875 + components: + - pos: 23.5,-19.5 + parent: 1 + type: Transform + - uid: 876 + components: + - pos: 24.5,-19.5 + parent: 1 + type: Transform + - uid: 877 + components: + - pos: 25.5,-19.5 + parent: 1 + type: Transform + - uid: 878 + components: + - pos: 26.5,-19.5 + parent: 1 + type: Transform + - uid: 879 + components: + - pos: 27.5,-19.5 + parent: 1 + type: Transform + - uid: 880 + components: + - pos: 28.5,-19.5 + parent: 1 + type: Transform + - uid: 882 + components: + - pos: 20.5,-23.5 + parent: 1 + type: Transform + - uid: 883 + components: + - pos: 21.5,-23.5 + parent: 1 + type: Transform + - uid: 884 + components: + - pos: 22.5,-23.5 + parent: 1 + type: Transform + - uid: 885 + components: + - pos: 23.5,-23.5 + parent: 1 + type: Transform + - uid: 886 + components: + - pos: 24.5,-23.5 + parent: 1 + type: Transform + - uid: 887 + components: + - pos: 25.5,-23.5 + parent: 1 + type: Transform + - uid: 888 + components: + - pos: 26.5,-23.5 + parent: 1 + type: Transform + - uid: 889 + components: + - pos: 27.5,-23.5 + parent: 1 + type: Transform + - uid: 890 + components: + - pos: 28.5,-23.5 + parent: 1 + type: Transform + - uid: 891 + components: + - pos: 28.5,-24.5 + parent: 1 + type: Transform + - uid: 892 + components: + - pos: 28.5,-22.5 + parent: 1 + type: Transform + - uid: 893 + components: + - pos: 28.5,-21.5 + parent: 1 + type: Transform + - uid: 894 + components: + - pos: 28.5,-20.5 + parent: 1 + type: Transform + - uid: 895 + components: + - pos: 28.5,-18.5 + parent: 1 + type: Transform + - uid: 896 + components: + - pos: 28.5,-17.5 + parent: 1 + type: Transform + - uid: 897 + components: + - pos: 28.5,-16.5 + parent: 1 + type: Transform + - uid: 898 + components: + - pos: 28.5,-14.5 + parent: 1 + type: Transform + - uid: 899 + components: + - pos: 28.5,-13.5 + parent: 1 + type: Transform + - uid: 900 + components: + - pos: 28.5,-12.5 + parent: 1 + type: Transform + - uid: 901 + components: + - pos: 28.5,-11.5 + parent: 1 + type: Transform + - uid: 902 + components: + - pos: 28.5,-10.5 + parent: 1 + type: Transform + - uid: 2010 + components: + - pos: -5.5,16.5 + parent: 1 + type: Transform + - uid: 2011 + components: + - pos: -5.5,15.5 + parent: 1 + type: Transform + - uid: 2890 + components: + - pos: 28.5,-5.5 + parent: 1 + type: Transform + - uid: 2892 + components: + - pos: 26.5,-5.5 + parent: 1 + type: Transform + - uid: 2894 + components: + - pos: 24.5,-5.5 + parent: 1 + type: Transform + - uid: 2896 + components: + - pos: 22.5,-5.5 + parent: 1 + type: Transform + - uid: 2897 + components: + - pos: 21.5,-5.5 + parent: 1 + type: Transform + - uid: 2898 + components: + - pos: 20.5,-5.5 + parent: 1 + type: Transform + - uid: 2899 + components: + - pos: 19.5,-5.5 + parent: 1 + type: Transform + - uid: 2901 + components: + - pos: 17.5,-5.5 + parent: 1 + type: Transform + - uid: 2903 + components: + - pos: 15.5,-5.5 + parent: 1 + type: Transform + - uid: 2904 + components: + - pos: 14.5,-5.5 + parent: 1 + type: Transform + - uid: 2906 + components: + - pos: 12.5,-5.5 + parent: 1 + type: Transform + - uid: 2908 + components: + - pos: 10.5,-5.5 + parent: 1 + type: Transform + - uid: 2909 + components: + - pos: 5.5,-5.5 + parent: 1 + type: Transform + - uid: 2911 + components: + - pos: 4.5,-4.5 + parent: 1 + type: Transform + - uid: 2913 + components: + - pos: 4.5,-2.5 + parent: 1 + type: Transform + - uid: 2915 + components: + - pos: 4.5,-0.5 + parent: 1 + type: Transform + - uid: 2916 + components: + - pos: 4.5,0.5 + parent: 1 + type: Transform + - uid: 2918 + components: + - pos: 3.5,-5.5 + parent: 1 + type: Transform + - uid: 2920 + components: + - pos: 1.5,-5.5 + parent: 1 + type: Transform + - uid: 2932 + components: + - pos: 23.5,-4.5 + parent: 1 + type: Transform + - uid: 2933 + components: + - pos: 23.5,-3.5 + parent: 1 + type: Transform + - uid: 2935 + components: + - pos: 23.5,-1.5 + parent: 1 + type: Transform + - uid: 2937 + components: + - pos: 23.5,0.5 + parent: 1 + type: Transform + - uid: 2939 + components: + - pos: 22.5,1.5 + parent: 1 + type: Transform + - uid: 2940 + components: + - pos: 22.5,2.5 + parent: 1 + type: Transform + - uid: 3889 + components: + - pos: -28.5,2.5 + parent: 1 + type: Transform + - uid: 4762 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,-4.5 + parent: 1 + type: Transform + - uid: 4763 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,-4.5 + parent: 1 + type: Transform + - uid: 4764 + components: + - rot: 3.141592653589793 rad + pos: -29.5,-6.5 + parent: 1 + type: Transform + - uid: 4765 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,-4.5 + parent: 1 + type: Transform + - uid: 4766 + components: + - rot: 1.5707963267948966 rad + pos: 17.5,-4.5 + parent: 1 + type: Transform + - uid: 4767 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,-4.5 + parent: 1 + type: Transform + - uid: 4768 + components: + - rot: 1.5707963267948966 rad + pos: 24.5,-2.5 + parent: 1 + type: Transform + - uid: 4771 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,-8.5 + parent: 1 + type: Transform + - uid: 4772 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,-7.5 + parent: 1 + type: Transform + - uid: 4773 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,-8.5 + parent: 1 + type: Transform + - uid: 4774 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,-8.5 + parent: 1 + type: Transform + - uid: 5026 + components: + - pos: -66.5,11.5 + parent: 1 + type: Transform + - uid: 5033 + components: + - pos: -60.5,8.5 + parent: 1 + type: Transform + - uid: 5039 + components: + - pos: -67.5,9.5 + parent: 1 + type: Transform + - uid: 5040 + components: + - pos: -62.5,8.5 + parent: 1 + type: Transform + - uid: 5053 + components: + - pos: -65.5,8.5 + parent: 1 + type: Transform + - uid: 5189 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,-2.5 + parent: 1 + type: Transform + - uid: 5246 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,-8.5 + parent: 1 + type: Transform + - uid: 5247 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,0.5 + parent: 1 + type: Transform + - uid: 5370 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,0.5 + parent: 1 + type: Transform + - uid: 5371 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,-6.5 + parent: 1 + type: Transform + - uid: 5372 + components: + - pos: -28.5,-0.5 + parent: 1 + type: Transform + - uid: 5373 + components: + - pos: -28.5,-1.5 + parent: 1 + type: Transform + - uid: 5375 + components: + - pos: -28.5,-3.5 + parent: 1 + type: Transform + - uid: 5376 + components: + - pos: -28.5,-4.5 + parent: 1 + type: Transform + - uid: 5377 + components: + - pos: -28.5,-5.5 + parent: 1 + type: Transform + - uid: 5381 + components: + - pos: -26.5,-6.5 + parent: 1 + type: Transform + - uid: 5383 + components: + - pos: -25.5,-7.5 + parent: 1 + type: Transform + - uid: 5384 + components: + - pos: -24.5,-7.5 + parent: 1 + type: Transform + - uid: 5386 + components: + - pos: -22.5,-7.5 + parent: 1 + type: Transform + - uid: 5388 + components: + - pos: -21.5,-6.5 + parent: 1 + type: Transform + - uid: 5390 + components: + - pos: -21.5,-4.5 + parent: 1 + type: Transform + - uid: 5391 + components: + - pos: -21.5,-3.5 + parent: 1 + type: Transform + - uid: 5394 + components: + - pos: -21.5,-0.5 + parent: 1 + type: Transform + - uid: 5396 + components: + - pos: -21.5,1.5 + parent: 1 + type: Transform + - uid: 5398 + components: + - pos: -19.5,1.5 + parent: 1 + type: Transform + - uid: 5399 + components: + - pos: -18.5,1.5 + parent: 1 + type: Transform + - uid: 5400 + components: + - pos: -17.5,1.5 + parent: 1 + type: Transform + - uid: 5402 + components: + - pos: -15.5,1.5 + parent: 1 + type: Transform + - uid: 5466 + components: + - pos: -48.5,1.5 + parent: 1 + type: Transform + - uid: 5468 + components: + - pos: -48.5,-0.5 + parent: 1 + type: Transform + - uid: 5469 + components: + - pos: -48.5,-1.5 + parent: 1 + type: Transform + - uid: 5471 + components: + - pos: -48.5,-3.5 + parent: 1 + type: Transform + - uid: 5474 + components: + - pos: -48.5,-6.5 + parent: 1 + type: Transform + - uid: 5475 + components: + - pos: -48.5,-7.5 + parent: 1 + type: Transform + - uid: 5479 + components: + - pos: -52.5,-9.5 + parent: 1 + type: Transform + - uid: 5480 + components: + - pos: -51.5,-9.5 + parent: 1 + type: Transform + - uid: 5482 + components: + - pos: -49.5,-9.5 + parent: 1 + type: Transform + - uid: 5483 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,2.5 + parent: 1 + type: Transform + - uid: 5484 + components: + - pos: -47.5,-9.5 + parent: 1 + type: Transform + - uid: 5485 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,1.5 + parent: 1 + type: Transform + - uid: 5486 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,19.5 + parent: 1 + type: Transform + - uid: 5487 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,17.5 + parent: 1 + type: Transform + - uid: 5488 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,17.5 + parent: 1 + type: Transform + - uid: 5489 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,18.5 + parent: 1 + type: Transform + - uid: 5491 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,20.5 + parent: 1 + type: Transform + - uid: 5492 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,20.5 + parent: 1 + type: Transform + - uid: 5562 + components: + - pos: -41.5,15.5 + parent: 1 + type: Transform + - uid: 5563 + components: + - pos: -41.5,14.5 + parent: 1 + type: Transform + - uid: 5564 + components: + - pos: -43.5,14.5 + parent: 1 + type: Transform + - uid: 5566 + components: + - pos: -45.5,14.5 + parent: 1 + type: Transform + - uid: 5567 + components: + - pos: -46.5,14.5 + parent: 1 + type: Transform + - uid: 5568 + components: + - pos: -47.5,14.5 + parent: 1 + type: Transform + - uid: 5571 + components: + - pos: -50.5,14.5 + parent: 1 + type: Transform + - uid: 5573 + components: + - pos: -50.5,16.5 + parent: 1 + type: Transform + - uid: 5574 + components: + - pos: -50.5,17.5 + parent: 1 + type: Transform + - uid: 5576 + components: + - pos: -50.5,19.5 + parent: 1 + type: Transform + - uid: 5578 + components: + - pos: -50.5,21.5 + parent: 1 + type: Transform + - uid: 5580 + components: + - pos: -48.5,21.5 + parent: 1 + type: Transform + - uid: 5581 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,12.5 + parent: 1 + type: Transform + - uid: 5582 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,14.5 + parent: 1 + type: Transform + - uid: 5583 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,11.5 + parent: 1 + type: Transform + - uid: 5584 + components: + - pos: -44.5,21.5 + parent: 1 + type: Transform + - uid: 5585 + components: + - pos: -43.5,21.5 + parent: 1 + type: Transform + - uid: 5587 + components: + - pos: -41.5,21.5 + parent: 1 + type: Transform + - uid: 5590 + components: + - pos: -44.5,22.5 + parent: 1 + type: Transform + - uid: 5592 + components: + - pos: -44.5,24.5 + parent: 1 + type: Transform + - uid: 5593 + components: + - pos: -44.5,25.5 + parent: 1 + type: Transform + - uid: 5595 + components: + - pos: -44.5,27.5 + parent: 1 + type: Transform + - uid: 5627 + components: + - pos: -44.5,13.5 + parent: 1 + type: Transform + - uid: 5628 + components: + - pos: -44.5,12.5 + parent: 1 + type: Transform + - uid: 5630 + components: + - pos: -44.5,10.5 + parent: 1 + type: Transform + - uid: 5631 + components: + - pos: -44.5,9.5 + parent: 1 + type: Transform + - uid: 5654 + components: + - pos: -33.5,9.5 + parent: 1 + type: Transform + - uid: 5657 + components: + - pos: -33.5,12.5 + parent: 1 + type: Transform + - uid: 5658 + components: + - pos: -33.5,13.5 + parent: 1 + type: Transform + - uid: 5660 + components: + - pos: -31.5,13.5 + parent: 1 + type: Transform + - uid: 5663 + components: + - pos: -30.5,15.5 + parent: 1 + type: Transform + - uid: 5665 + components: + - pos: -30.5,17.5 + parent: 1 + type: Transform + - uid: 5666 + components: + - pos: -30.5,20.5 + parent: 1 + type: Transform + - uid: 5669 + components: + - pos: -28.5,21.5 + parent: 1 + type: Transform + - uid: 5671 + components: + - pos: -26.5,21.5 + parent: 1 + type: Transform + - uid: 5672 + components: + - pos: -25.5,21.5 + parent: 1 + type: Transform + - uid: 5674 + components: + - pos: -23.5,21.5 + parent: 1 + type: Transform + - uid: 5676 + components: + - pos: -21.5,21.5 + parent: 1 + type: Transform + - uid: 5677 + components: + - pos: -20.5,21.5 + parent: 1 + type: Transform + - uid: 5683 + components: + - pos: -20.5,22.5 + parent: 1 + type: Transform + - uid: 5685 + components: + - pos: -20.5,24.5 + parent: 1 + type: Transform + - uid: 5687 + components: + - pos: -20.5,26.5 + parent: 1 + type: Transform + - uid: 5689 + components: + - pos: -19.5,19.5 + parent: 1 + type: Transform + - uid: 5691 + components: + - pos: -19.5,17.5 + parent: 1 + type: Transform + - uid: 5693 + components: + - pos: -19.5,15.5 + parent: 1 + type: Transform + - uid: 5694 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,21.5 + parent: 1 + type: Transform + - uid: 5695 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,20.5 + parent: 1 + type: Transform + - uid: 5696 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,23.5 + parent: 1 + type: Transform + - uid: 5697 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,10.5 + parent: 1 + type: Transform + - uid: 5698 + components: + - rot: 1.5707963267948966 rad + pos: -3.5,15.5 + parent: 1 + type: Transform + - uid: 5699 + components: + - pos: -19.5,9.5 + parent: 1 + type: Transform + - uid: 5714 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,17.5 + parent: 1 + type: Transform + - uid: 5715 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,16.5 + parent: 1 + type: Transform + - uid: 5758 + components: + - pos: -5.5,9.5 + parent: 1 + type: Transform + - uid: 5761 + components: + - pos: -5.5,12.5 + parent: 1 + type: Transform + - uid: 5762 + components: + - pos: -5.5,13.5 + parent: 1 + type: Transform + - uid: 5767 + components: + - pos: -6.5,17.5 + parent: 1 + type: Transform + - uid: 5769 + components: + - pos: -6.5,19.5 + parent: 1 + type: Transform + - uid: 5771 + components: + - pos: -6.5,21.5 + parent: 1 + type: Transform + - uid: 5772 + components: + - pos: -6.5,22.5 + parent: 1 + type: Transform + - uid: 5774 + components: + - pos: -6.5,24.5 + parent: 1 + type: Transform + - uid: 5775 + components: + - pos: -6.5,25.5 + parent: 1 + type: Transform + - uid: 5778 + components: + - pos: -9.5,25.5 + parent: 1 + type: Transform + - uid: 6292 + components: + - rot: -1.5707963267948966 rad + pos: -2.5,38.5 + parent: 1 + type: Transform + - uid: 7122 + components: + - pos: -48.5,68.5 + parent: 1 + type: Transform + - uid: 7225 + components: + - pos: -55.5,80.5 + parent: 1 + type: Transform + - uid: 7227 + components: + - pos: -54.5,79.5 + parent: 1 + type: Transform + - uid: 7240 + components: + - pos: -53.5,80.5 + parent: 1 + type: Transform + - uid: 7346 + components: + - pos: -52.5,69.5 + parent: 1 + type: Transform + - uid: 7348 + components: + - pos: -52.5,67.5 + parent: 1 + type: Transform + - uid: 7349 + components: + - pos: -50.5,68.5 + parent: 1 + type: Transform + - uid: 7351 + components: + - pos: -50.5,69.5 + parent: 1 + type: Transform + - uid: 7353 + components: + - pos: -51.5,68.5 + parent: 1 + type: Transform + - uid: 7354 + components: + - pos: -50.5,67.5 + parent: 1 + type: Transform + - uid: 7355 + components: + - pos: -49.5,68.5 + parent: 1 + type: Transform + - uid: 7358 + components: + - pos: -48.5,67.5 + parent: 1 + type: Transform + - uid: 7360 + components: + - pos: -47.5,67.5 + parent: 1 + type: Transform + - uid: 7361 + components: + - pos: -46.5,68.5 + parent: 1 + type: Transform + - uid: 7363 + components: + - pos: -50.5,70.5 + parent: 1 + type: Transform + - uid: 7366 + components: + - pos: -50.5,71.5 + parent: 1 + type: Transform + - uid: 7367 + components: + - pos: -52.5,76.5 + parent: 1 + type: Transform + - uid: 7402 + components: + - pos: 15.5,48.5 + parent: 1 + type: Transform + - uid: 7403 + components: + - pos: 15.5,47.5 + parent: 1 + type: Transform + - uid: 7404 + components: + - pos: -50.5,73.5 + parent: 1 + type: Transform + - uid: 7405 + components: + - pos: 15.5,45.5 + parent: 1 + type: Transform + - uid: 7406 + components: + - pos: 15.5,44.5 + parent: 1 + type: Transform + - uid: 7407 + components: + - pos: 15.5,43.5 + parent: 1 + type: Transform + - uid: 7409 + components: + - pos: 15.5,41.5 + parent: 1 + type: Transform + - uid: 7411 + components: + - pos: 15.5,39.5 + parent: 1 + type: Transform + - uid: 7412 + components: + - pos: -50.5,75.5 + parent: 1 + type: Transform + - uid: 7415 + components: + - pos: 15.5,35.5 + parent: 1 + type: Transform + - uid: 7416 + components: + - pos: -50.5,76.5 + parent: 1 + type: Transform + - uid: 7417 + components: + - pos: 17.5,35.5 + parent: 1 + type: Transform + - uid: 7418 + components: + - pos: 18.5,35.5 + parent: 1 + type: Transform + - uid: 7419 + components: + - pos: -50.5,77.5 + parent: 1 + type: Transform + - uid: 7420 + components: + - pos: 20.5,35.5 + parent: 1 + type: Transform + - uid: 7421 + components: + - pos: -52.5,70.5 + parent: 1 + type: Transform + - uid: 7422 + components: + - pos: -52.5,71.5 + parent: 1 + type: Transform + - uid: 7423 + components: + - pos: 23.5,35.5 + parent: 1 + type: Transform + - uid: 7424 + components: + - pos: 23.5,34.5 + parent: 1 + type: Transform + - uid: 7426 + components: + - pos: 23.5,32.5 + parent: 1 + type: Transform + - uid: 7427 + components: + - pos: 23.5,31.5 + parent: 1 + type: Transform + - uid: 7428 + components: + - pos: -52.5,73.5 + parent: 1 + type: Transform + - uid: 7429 + components: + - pos: -52.5,74.5 + parent: 1 + type: Transform + - uid: 7430 + components: + - pos: 23.5,28.5 + parent: 1 + type: Transform + - uid: 7432 + components: + - pos: 23.5,26.5 + parent: 1 + type: Transform + - uid: 7434 + components: + - pos: 23.5,24.5 + parent: 1 + type: Transform + - uid: 7435 + components: + - pos: 23.5,23.5 + parent: 1 + type: Transform + - uid: 7436 + components: + - pos: -52.5,77.5 + parent: 1 + type: Transform + - uid: 7437 + components: + - pos: 14.5,40.5 + parent: 1 + type: Transform + - uid: 7439 + components: + - pos: 12.5,40.5 + parent: 1 + type: Transform + - uid: 7445 + components: + - pos: 7.5,41.5 + parent: 1 + type: Transform + - uid: 7446 + components: + - pos: 7.5,42.5 + parent: 1 + type: Transform + - uid: 7449 + components: + - pos: 7.5,45.5 + parent: 1 + type: Transform + - uid: 7450 + components: + - pos: 7.5,46.5 + parent: 1 + type: Transform + - uid: 7452 + components: + - pos: -53.5,79.5 + parent: 1 + type: Transform + - uid: 7453 + components: + - pos: 13.5,48.5 + parent: 1 + type: Transform + - uid: 7454 + components: + - pos: 12.5,48.5 + parent: 1 + type: Transform + - uid: 7455 + components: + - pos: 11.5,48.5 + parent: 1 + type: Transform + - uid: 7456 + components: + - pos: -52.5,78.5 + parent: 1 + type: Transform + - uid: 7457 + components: + - pos: 9.5,48.5 + parent: 1 + type: Transform + - uid: 7459 + components: + - pos: 7.5,48.5 + parent: 1 + type: Transform + - uid: 7460 + components: + - pos: 6.5,47.5 + parent: 1 + type: Transform + - uid: 7462 + components: + - pos: 4.5,47.5 + parent: 1 + type: Transform + - uid: 7463 + components: + - pos: 3.5,47.5 + parent: 1 + type: Transform + - uid: 7464 + components: + - pos: 2.5,47.5 + parent: 1 + type: Transform + - uid: 7466 + components: + - pos: 0.5,47.5 + parent: 1 + type: Transform + - uid: 7467 + components: + - pos: -51.5,79.5 + parent: 1 + type: Transform + - uid: 7469 + components: + - pos: -2.5,47.5 + parent: 1 + type: Transform + - uid: 7470 + components: + - pos: -3.5,47.5 + parent: 1 + type: Transform + - uid: 7471 + components: + - pos: -50.5,79.5 + parent: 1 + type: Transform + - uid: 7472 + components: + - pos: -5.5,47.5 + parent: 1 + type: Transform + - uid: 7473 + components: + - pos: -50.5,80.5 + parent: 1 + type: Transform + - uid: 7474 + components: + - pos: -7.5,47.5 + parent: 1 + type: Transform + - uid: 7475 + components: + - pos: -7.5,48.5 + parent: 1 + type: Transform + - uid: 7477 + components: + - pos: -7.5,50.5 + parent: 1 + type: Transform + - uid: 7478 + components: + - pos: -52.5,80.5 + parent: 1 + type: Transform + - uid: 7479 + components: + - pos: -10.5,51.5 + parent: 1 + type: Transform + - uid: 7480 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,36.5 + parent: 1 + type: Transform + - uid: 7481 + components: + - pos: -12.5,51.5 + parent: 1 + type: Transform + - uid: 7482 + components: + - pos: -13.5,51.5 + parent: 1 + type: Transform + - uid: 7483 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,49.5 + parent: 1 + type: Transform + - uid: 7484 + components: + - pos: -9.5,51.5 + parent: 1 + type: Transform + - uid: 7485 + components: + - pos: -2.5,46.5 + parent: 1 + type: Transform + - uid: 7486 + components: + - rot: 1.5707963267948966 rad + pos: -22.5,50.5 + parent: 1 + type: Transform + - uid: 7487 + components: + - pos: -2.5,44.5 + parent: 1 + type: Transform + - uid: 7488 + components: + - pos: -2.5,43.5 + parent: 1 + type: Transform + - uid: 7489 + components: + - pos: -2.5,42.5 + parent: 1 + type: Transform + - uid: 7490 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,46.5 + parent: 1 + type: Transform + - uid: 7491 + components: + - pos: -2.5,40.5 + parent: 1 + type: Transform + - uid: 7493 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,54.5 + parent: 1 + type: Transform + - uid: 7494 + components: + - rot: -1.5707963267948966 rad + pos: -3.5,39.5 + parent: 1 + type: Transform + - uid: 7495 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,47.5 + parent: 1 + type: Transform + - uid: 7496 + components: + - pos: -4.5,37.5 + parent: 1 + type: Transform + - uid: 7497 + components: + - pos: -5.5,37.5 + parent: 1 + type: Transform + - uid: 7498 + components: + - pos: -6.5,37.5 + parent: 1 + type: Transform + - uid: 7499 + components: + - pos: -7.5,37.5 + parent: 1 + type: Transform + - uid: 7500 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,46.5 + parent: 1 + type: Transform + - uid: 7501 + components: + - pos: -9.5,37.5 + parent: 1 + type: Transform + - uid: 7502 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,36.5 + parent: 1 + type: Transform + - uid: 7503 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,43.5 + parent: 1 + type: Transform + - uid: 7504 + components: + - rot: 1.5707963267948966 rad + pos: 21.5,34.5 + parent: 1 + type: Transform + - uid: 7505 + components: + - rot: 1.5707963267948966 rad + pos: 23.5,20.5 + parent: 1 + type: Transform + - uid: 7506 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,19.5 + parent: 1 + type: Transform + - uid: 7507 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,34.5 + parent: 1 + type: Transform + - uid: 7508 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,25.5 + parent: 1 + type: Transform + - uid: 7637 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,32.5 + parent: 1 + type: Transform + - uid: 7638 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,36.5 + parent: 1 + type: Transform + - uid: 7639 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,39.5 + parent: 1 + type: Transform + - uid: 7833 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,40.5 + parent: 1 + type: Transform + - uid: 7834 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,39.5 + parent: 1 + type: Transform + - uid: 7835 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,40.5 + parent: 1 + type: Transform + - uid: 7837 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,45.5 + parent: 1 + type: Transform + - uid: 7838 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,46.5 + parent: 1 + type: Transform + - uid: 7839 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,46.5 + parent: 1 + type: Transform + - uid: 7840 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,42.5 + parent: 1 + type: Transform + - uid: 7849 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,48.5 + parent: 1 + type: Transform + - uid: 7918 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,55.5 + parent: 1 + type: Transform + - uid: 8325 + components: + - pos: -86.5,41.5 + parent: 1 + type: Transform + - uid: 8326 + components: + - pos: -86.5,42.5 + parent: 1 + type: Transform + - uid: 8546 + components: + - pos: -86.5,43.5 + parent: 1 + type: Transform + - uid: 8547 + components: + - pos: -86.5,44.5 + parent: 1 + type: Transform + - uid: 8577 + components: + - pos: -86.5,45.5 + parent: 1 + type: Transform + - uid: 8616 + components: + - pos: -86.5,40.5 + parent: 1 + type: Transform + - uid: 8617 + components: + - pos: -86.5,39.5 + parent: 1 + type: Transform + - uid: 9911 + components: + - rot: 3.141592653589793 rad + pos: 7.5,-17.5 + parent: 1 + type: Transform + - uid: 10146 + components: + - pos: -70.5,31.5 + parent: 1 + type: Transform + - uid: 10176 + components: + - pos: -71.5,31.5 + parent: 1 + type: Transform + - uid: 10226 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,53.5 + parent: 1 + type: Transform + - uid: 10247 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,28.5 + parent: 1 + type: Transform + - uid: 10248 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,29.5 + parent: 1 + type: Transform + - uid: 10250 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,30.5 + parent: 1 + type: Transform + - uid: 10255 + components: + - rot: -1.5707963267948966 rad + pos: -71.5,28.5 + parent: 1 + type: Transform + - uid: 10257 + components: + - rot: -1.5707963267948966 rad + pos: -71.5,29.5 + parent: 1 + type: Transform + - uid: 10259 + components: + - rot: -1.5707963267948966 rad + pos: -71.5,30.5 + parent: 1 + type: Transform + - uid: 10267 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,20.5 + parent: 1 + type: Transform + - uid: 10268 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,21.5 + parent: 1 + type: Transform + - uid: 10270 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,22.5 + parent: 1 + type: Transform + - uid: 10272 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,23.5 + parent: 1 + type: Transform + - uid: 10273 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,24.5 + parent: 1 + type: Transform + - uid: 10274 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,25.5 + parent: 1 + type: Transform + - uid: 10275 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,26.5 + parent: 1 + type: Transform + - uid: 10276 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,27.5 + parent: 1 + type: Transform + - uid: 10279 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,28.5 + parent: 1 + type: Transform + - uid: 10281 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,29.5 + parent: 1 + type: Transform + - uid: 10282 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,30.5 + parent: 1 + type: Transform + - uid: 10283 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,20.5 + parent: 1 + type: Transform + - uid: 10284 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,21.5 + parent: 1 + type: Transform + - uid: 10286 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,22.5 + parent: 1 + type: Transform + - uid: 10287 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,23.5 + parent: 1 + type: Transform + - uid: 10289 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,24.5 + parent: 1 + type: Transform + - uid: 10290 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,25.5 + parent: 1 + type: Transform + - uid: 10291 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,26.5 + parent: 1 + type: Transform + - uid: 10293 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,27.5 + parent: 1 + type: Transform + - uid: 10294 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,28.5 + parent: 1 + type: Transform + - uid: 10296 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,29.5 + parent: 1 + type: Transform + - uid: 10297 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,30.5 + parent: 1 + type: Transform + - uid: 10299 + components: + - rot: -1.5707963267948966 rad + pos: -100.5,32.5 + parent: 1 + type: Transform + - uid: 10300 + components: + - rot: -1.5707963267948966 rad + pos: -100.5,31.5 + parent: 1 + type: Transform + - uid: 10301 + components: + - rot: -1.5707963267948966 rad + pos: -99.5,32.5 + parent: 1 + type: Transform + - uid: 10303 + components: + - rot: -1.5707963267948966 rad + pos: -99.5,31.5 + parent: 1 + type: Transform + - uid: 10304 + components: + - rot: -1.5707963267948966 rad + pos: -98.5,32.5 + parent: 1 + type: Transform + - uid: 10305 + components: + - rot: -1.5707963267948966 rad + pos: -98.5,31.5 + parent: 1 + type: Transform + - uid: 10307 + components: + - rot: -1.5707963267948966 rad + pos: -96.5,32.5 + parent: 1 + type: Transform + - uid: 10309 + components: + - rot: -1.5707963267948966 rad + pos: -96.5,31.5 + parent: 1 + type: Transform + - uid: 10310 + components: + - rot: -1.5707963267948966 rad + pos: -95.5,32.5 + parent: 1 + type: Transform + - uid: 10311 + components: + - rot: -1.5707963267948966 rad + pos: -95.5,31.5 + parent: 1 + type: Transform + - uid: 10313 + components: + - rot: -1.5707963267948966 rad + pos: -94.5,32.5 + parent: 1 + type: Transform + - uid: 10314 + components: + - rot: -1.5707963267948966 rad + pos: -94.5,31.5 + parent: 1 + type: Transform + - uid: 10319 + components: + - pos: -41.5,55.5 + parent: 1 + type: Transform + - uid: 10321 + components: + - pos: -39.5,55.5 + parent: 1 + type: Transform + - uid: 10322 + components: + - pos: -38.5,55.5 + parent: 1 + type: Transform + - uid: 10323 + components: + - pos: -37.5,55.5 + parent: 1 + type: Transform + - uid: 10324 + components: + - rot: -1.5707963267948966 rad + pos: -93.5,22.5 + parent: 1 + type: Transform + - uid: 10325 + components: + - pos: -35.5,55.5 + parent: 1 + type: Transform + - uid: 10326 + components: + - rot: -1.5707963267948966 rad + pos: -93.5,23.5 + parent: 1 + type: Transform + - uid: 10327 + components: + - pos: -33.5,55.5 + parent: 1 + type: Transform + - uid: 10328 + components: + - pos: -32.5,55.5 + parent: 1 + type: Transform + - uid: 10329 + components: + - pos: -32.5,54.5 + parent: 1 + type: Transform + - uid: 10330 + components: + - rot: -1.5707963267948966 rad + pos: -93.5,24.5 + parent: 1 + type: Transform + - uid: 10331 + components: + - pos: -32.5,52.5 + parent: 1 + type: Transform + - uid: 10332 + components: + - pos: -32.5,51.5 + parent: 1 + type: Transform + - uid: 10333 + components: + - pos: -32.5,50.5 + parent: 1 + type: Transform + - uid: 10334 + components: + - pos: -31.5,50.5 + parent: 1 + type: Transform + - uid: 10335 + components: + - rot: -1.5707963267948966 rad + pos: -93.5,25.5 + parent: 1 + type: Transform + - uid: 10336 + components: + - pos: -29.5,50.5 + parent: 1 + type: Transform + - uid: 10338 + components: + - pos: -27.5,50.5 + parent: 1 + type: Transform + - uid: 10339 + components: + - pos: -26.5,50.5 + parent: 1 + type: Transform + - uid: 10340 + components: + - pos: -25.5,50.5 + parent: 1 + type: Transform + - uid: 10341 + components: + - rot: -1.5707963267948966 rad + pos: -93.5,26.5 + parent: 1 + type: Transform + - uid: 10342 + components: + - pos: -24.5,51.5 + parent: 1 + type: Transform + - uid: 10345 + components: + - pos: -21.5,51.5 + parent: 1 + type: Transform + - uid: 10346 + components: + - pos: -20.5,51.5 + parent: 1 + type: Transform + - uid: 10348 + components: + - pos: -24.5,49.5 + parent: 1 + type: Transform + - uid: 10350 + components: + - pos: -24.5,47.5 + parent: 1 + type: Transform + - uid: 10351 + components: + - pos: -24.5,46.5 + parent: 1 + type: Transform + - uid: 10353 + components: + - pos: -24.5,44.5 + parent: 1 + type: Transform + - uid: 10355 + components: + - pos: -24.5,42.5 + parent: 1 + type: Transform + - uid: 10356 + components: + - pos: -24.5,41.5 + parent: 1 + type: Transform + - uid: 10359 + components: + - pos: -24.5,38.5 + parent: 1 + type: Transform + - uid: 10360 + components: + - pos: -24.5,37.5 + parent: 1 + type: Transform + - uid: 10464 + components: + - rot: -1.5707963267948966 rad + pos: -93.5,27.5 + parent: 1 + type: Transform + - uid: 10465 + components: + - rot: -1.5707963267948966 rad + pos: -93.5,28.5 + parent: 1 + type: Transform + - uid: 10477 + components: + - rot: -1.5707963267948966 rad + pos: -94.5,29.5 + parent: 1 + type: Transform + - uid: 10478 + components: + - rot: -1.5707963267948966 rad + pos: -95.5,29.5 + parent: 1 + type: Transform + - uid: 10479 + components: + - rot: -1.5707963267948966 rad + pos: -96.5,29.5 + parent: 1 + type: Transform + - uid: 10480 + components: + - rot: -1.5707963267948966 rad + pos: -97.5,29.5 + parent: 1 + type: Transform + - uid: 10481 + components: + - rot: -1.5707963267948966 rad + pos: -98.5,29.5 + parent: 1 + type: Transform + - uid: 10482 + components: + - rot: -1.5707963267948966 rad + pos: -99.5,29.5 + parent: 1 + type: Transform + - uid: 10483 + components: + - rot: -1.5707963267948966 rad + pos: -100.5,29.5 + parent: 1 + type: Transform + - uid: 10484 + components: + - rot: -1.5707963267948966 rad + pos: -101.5,28.5 + parent: 1 + type: Transform + - uid: 10485 + components: + - rot: -1.5707963267948966 rad + pos: -101.5,27.5 + parent: 1 + type: Transform + - uid: 10486 + components: + - rot: -1.5707963267948966 rad + pos: -101.5,26.5 + parent: 1 + type: Transform + - uid: 10487 + components: + - rot: -1.5707963267948966 rad + pos: -101.5,25.5 + parent: 1 + type: Transform + - uid: 10488 + components: + - rot: -1.5707963267948966 rad + pos: -101.5,24.5 + parent: 1 + type: Transform + - uid: 10489 + components: + - rot: -1.5707963267948966 rad + pos: -101.5,23.5 + parent: 1 + type: Transform + - uid: 10490 + components: + - rot: -1.5707963267948966 rad + pos: -101.5,22.5 + parent: 1 + type: Transform + - uid: 10491 + components: + - rot: -1.5707963267948966 rad + pos: -100.5,21.5 + parent: 1 + type: Transform + - uid: 10492 + components: + - rot: -1.5707963267948966 rad + pos: -99.5,21.5 + parent: 1 + type: Transform + - uid: 10493 + components: + - rot: -1.5707963267948966 rad + pos: -98.5,21.5 + parent: 1 + type: Transform + - uid: 10494 + components: + - rot: -1.5707963267948966 rad + pos: -97.5,21.5 + parent: 1 + type: Transform + - uid: 10495 + components: + - rot: -1.5707963267948966 rad + pos: -96.5,21.5 + parent: 1 + type: Transform + - uid: 10496 + components: + - rot: -1.5707963267948966 rad + pos: -95.5,21.5 + parent: 1 + type: Transform + - uid: 10497 + components: + - rot: -1.5707963267948966 rad + pos: -94.5,21.5 + parent: 1 + type: Transform + - uid: 10499 + components: + - rot: -1.5707963267948966 rad + pos: -100.5,18.5 + parent: 1 + type: Transform + - uid: 10500 + components: + - rot: -1.5707963267948966 rad + pos: -99.5,19.5 + parent: 1 + type: Transform + - uid: 10501 + components: + - rot: -1.5707963267948966 rad + pos: -99.5,18.5 + parent: 1 + type: Transform + - uid: 10502 + components: + - rot: -1.5707963267948966 rad + pos: -98.5,19.5 + parent: 1 + type: Transform + - uid: 10503 + components: + - rot: -1.5707963267948966 rad + pos: -98.5,18.5 + parent: 1 + type: Transform + - uid: 10504 + components: + - rot: -1.5707963267948966 rad + pos: -96.5,19.5 + parent: 1 + type: Transform + - uid: 10505 + components: + - rot: -1.5707963267948966 rad + pos: -96.5,18.5 + parent: 1 + type: Transform + - uid: 10506 + components: + - rot: -1.5707963267948966 rad + pos: -95.5,19.5 + parent: 1 + type: Transform + - uid: 10507 + components: + - rot: -1.5707963267948966 rad + pos: -95.5,18.5 + parent: 1 + type: Transform + - uid: 10508 + components: + - rot: -1.5707963267948966 rad + pos: -94.5,19.5 + parent: 1 + type: Transform + - uid: 10509 + components: + - rot: -1.5707963267948966 rad + pos: -94.5,18.5 + parent: 1 + type: Transform + - uid: 10510 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,30.5 + parent: 1 + type: Transform + - uid: 10511 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,30.5 + parent: 1 + type: Transform + - uid: 10512 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,29.5 + parent: 1 + type: Transform + - uid: 10513 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,28.5 + parent: 1 + type: Transform + - uid: 10514 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,27.5 + parent: 1 + type: Transform + - uid: 10515 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,26.5 + parent: 1 + type: Transform + - uid: 10516 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,25.5 + parent: 1 + type: Transform + - uid: 10517 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,24.5 + parent: 1 + type: Transform + - uid: 10518 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,23.5 + parent: 1 + type: Transform + - uid: 10519 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,22.5 + parent: 1 + type: Transform + - uid: 10520 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,21.5 + parent: 1 + type: Transform + - uid: 10521 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,20.5 + parent: 1 + type: Transform + - uid: 10580 + components: + - rot: -1.5707963267948966 rad + pos: -100.5,19.5 + parent: 1 + type: Transform + - uid: 12804 + components: + - pos: -2.5,12.5 + parent: 1 + type: Transform + - uid: 12805 + components: + - pos: -3.5,13.5 + parent: 1 + type: Transform + - uid: 12806 + components: + - pos: -0.5,12.5 + parent: 1 + type: Transform + - uid: 12807 + components: + - pos: 3.5,12.5 + parent: 1 + type: Transform + - uid: 12808 + components: + - pos: 4.5,11.5 + parent: 1 + type: Transform + - uid: 12809 + components: + - pos: 4.5,10.5 + parent: 1 + type: Transform + - uid: 12810 + components: + - pos: 3.5,9.5 + parent: 1 + type: Transform + - uid: 12811 + components: + - pos: 6.5,8.5 + parent: 1 + type: Transform + - uid: 12812 + components: + - pos: 10.5,9.5 + parent: 1 + type: Transform + - uid: 12813 + components: + - pos: 12.5,9.5 + parent: 1 + type: Transform + - uid: 12814 + components: + - pos: 12.5,8.5 + parent: 1 + type: Transform + - uid: 12815 + components: + - pos: 8.5,9.5 + parent: 1 + type: Transform + - uid: 12816 + components: + - pos: 7.5,8.5 + parent: 1 + type: Transform + - uid: 12817 + components: + - pos: 14.5,9.5 + parent: 1 + type: Transform + - uid: 12818 + components: + - pos: 13.5,12.5 + parent: 1 + type: Transform + - uid: 12819 + components: + - pos: 13.5,13.5 + parent: 1 + type: Transform + - uid: 12820 + components: + - pos: 13.5,15.5 + parent: 1 + type: Transform + - uid: 12821 + components: + - pos: 14.5,17.5 + parent: 1 + type: Transform + - uid: 12822 + components: + - pos: 14.5,18.5 + parent: 1 + type: Transform + - uid: 12823 + components: + - pos: 13.5,21.5 + parent: 1 + type: Transform + - uid: 12824 + components: + - pos: 12.5,22.5 + parent: 1 + type: Transform + - uid: 12825 + components: + - pos: 15.5,23.5 + parent: 1 + type: Transform + - uid: 12826 + components: + - pos: 14.5,25.5 + parent: 1 + type: Transform + - uid: 12827 + components: + - pos: 15.5,26.5 + parent: 1 + type: Transform + - uid: 12828 + components: + - pos: 17.5,25.5 + parent: 1 + type: Transform + - uid: 12829 + components: + - pos: 14.5,24.5 + parent: 1 + type: Transform + - uid: 12830 + components: + - pos: 15.5,24.5 + parent: 1 + type: Transform + - uid: 12831 + components: + - pos: 18.5,26.5 + parent: 1 + type: Transform + - uid: 12832 + components: + - pos: 20.5,25.5 + parent: 1 + type: Transform + - uid: 12833 + components: + - pos: 21.5,26.5 + parent: 1 + type: Transform + - uid: 13917 + components: + - pos: -3.5,-20.5 + parent: 1 + type: Transform + - uid: 14250 + components: + - pos: -67.5,50.5 + parent: 1 + type: Transform + - uid: 14251 + components: + - pos: -67.5,54.5 + parent: 1 + type: Transform + - uid: 14252 + components: + - pos: -67.5,56.5 + parent: 1 + type: Transform + - uid: 14253 + components: + - pos: -66.5,57.5 + parent: 1 + type: Transform + - uid: 14254 + components: + - pos: -75.5,52.5 + parent: 1 + type: Transform + - uid: 14255 + components: + - pos: -75.5,50.5 + parent: 1 + type: Transform + - uid: 14256 + components: + - pos: -74.5,47.5 + parent: 1 + type: Transform + - uid: 14257 + components: + - pos: -74.5,46.5 + parent: 1 + type: Transform + - uid: 14258 + components: + - pos: -75.5,45.5 + parent: 1 + type: Transform + - uid: 14259 + components: + - pos: -75.5,42.5 + parent: 1 + type: Transform + - uid: 14260 + components: + - pos: -74.5,41.5 + parent: 1 + type: Transform + - uid: 14261 + components: + - pos: -75.5,43.5 + parent: 1 + type: Transform + - uid: 14262 + components: + - pos: -74.5,44.5 + parent: 1 + type: Transform + - uid: 14263 + components: + - pos: -75.5,40.5 + parent: 1 + type: Transform + - uid: 14264 + components: + - pos: -75.5,38.5 + parent: 1 + type: Transform + - uid: 14265 + components: + - pos: -74.5,38.5 + parent: 1 + type: Transform + - uid: 14266 + components: + - pos: -71.5,37.5 + parent: 1 + type: Transform + - uid: 14267 + components: + - pos: -67.5,37.5 + parent: 1 + type: Transform + - uid: 14268 + components: + - pos: -67.5,36.5 + parent: 1 + type: Transform + - uid: 14269 + components: + - pos: -65.5,36.5 + parent: 1 + type: Transform + - uid: 14270 + components: + - pos: -61.5,35.5 + parent: 1 + type: Transform + - uid: 14271 + components: + - pos: -66.5,40.5 + parent: 1 + type: Transform + - uid: 14272 + components: + - pos: -67.5,41.5 + parent: 1 + type: Transform + - uid: 14273 + components: + - pos: -66.5,42.5 + parent: 1 + type: Transform + - uid: 14274 + components: + - pos: -67.5,43.5 + parent: 1 + type: Transform + - uid: 14275 + components: + - pos: -67.5,44.5 + parent: 1 + type: Transform + - uid: 14276 + components: + - pos: -63.5,47.5 + parent: 1 + type: Transform + - uid: 14277 + components: + - pos: -62.5,47.5 + parent: 1 + type: Transform + - uid: 14278 + components: + - pos: -61.5,48.5 + parent: 1 + type: Transform + - uid: 14559 + components: + - pos: -67.5,13.5 + parent: 1 + type: Transform + - uid: 14560 + components: + - pos: -66.5,12.5 + parent: 1 + type: Transform + - uid: 14562 + components: + - pos: -65.5,17.5 + parent: 1 + type: Transform + - uid: 14563 + components: + - pos: -62.5,16.5 + parent: 1 + type: Transform + - uid: 14564 + components: + - pos: -61.5,17.5 + parent: 1 + type: Transform + - uid: 14565 + components: + - pos: -60.5,21.5 + parent: 1 + type: Transform + - uid: 14566 + components: + - pos: -60.5,19.5 + parent: 1 + type: Transform + - uid: 14567 + components: + - pos: -61.5,23.5 + parent: 1 + type: Transform + - uid: 14568 + components: + - pos: -60.5,25.5 + parent: 1 + type: Transform + - uid: 14569 + components: + - pos: -60.5,27.5 + parent: 1 + type: Transform + - uid: 14570 + components: + - pos: -60.5,26.5 + parent: 1 + type: Transform + - uid: 14571 + components: + - pos: -61.5,29.5 + parent: 1 + type: Transform + - uid: 14572 + components: + - pos: -61.5,21.5 + parent: 1 + type: Transform + - uid: 14573 + components: + - pos: -64.5,17.5 + parent: 1 + type: Transform + - uid: 14574 + components: + - pos: -44.5,53.5 + parent: 1 + type: Transform + - uid: 14575 + components: + - pos: -44.5,51.5 + parent: 1 + type: Transform + - uid: 14576 + components: + - pos: -44.5,50.5 + parent: 1 + type: Transform + - uid: 15146 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,45.5 + parent: 1 + type: Transform + - uid: 15225 + components: + - rot: -1.5707963267948966 rad + pos: -2.5,37.5 + parent: 1 + type: Transform + - uid: 15227 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,43.5 + parent: 1 + type: Transform + - uid: 15228 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,42.5 + parent: 1 + type: Transform + - uid: 15229 + components: + - rot: -1.5707963267948966 rad + pos: 0.5,42.5 + parent: 1 + type: Transform + - uid: 15230 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,44.5 + parent: 1 + type: Transform + - uid: 15454 + components: + - pos: -37.5,61.5 + parent: 1 + type: Transform + - uid: 15455 + components: + - pos: -42.5,68.5 + parent: 1 + type: Transform + - uid: 15458 + components: + - pos: -38.5,64.5 + parent: 1 + type: Transform + - uid: 15459 + components: + - pos: -37.5,67.5 + parent: 1 + type: Transform + - uid: 15460 + components: + - pos: -38.5,58.5 + parent: 1 + type: Transform + - uid: 15461 + components: + - pos: -44.5,57.5 + parent: 1 + type: Transform + - uid: 15472 + components: + - pos: -42.5,58.5 + parent: 1 + type: Transform + - uid: 15473 + components: + - pos: -40.5,57.5 + parent: 1 + type: Transform + - uid: 15474 + components: + - pos: -39.5,58.5 + parent: 1 + type: Transform + - uid: 15478 + components: + - pos: -43.5,58.5 + parent: 1 + type: Transform + - uid: 15480 + components: + - pos: -41.5,57.5 + parent: 1 + type: Transform + - uid: 15481 + components: + - pos: -39.5,57.5 + parent: 1 + type: Transform + - uid: 15482 + components: + - pos: -41.5,58.5 + parent: 1 + type: Transform + - uid: 15483 + components: + - pos: -43.5,57.5 + parent: 1 + type: Transform + - uid: 15487 + components: + - pos: -39.5,68.5 + parent: 1 + type: Transform + - uid: 15491 + components: + - pos: -38.5,57.5 + parent: 1 + type: Transform + - uid: 15492 + components: + - pos: -37.5,58.5 + parent: 1 + type: Transform + - uid: 15493 + components: + - pos: -37.5,59.5 + parent: 1 + type: Transform + - uid: 15495 + components: + - rot: 3.141592653589793 rad + pos: -5.5,-18.5 + parent: 1 + type: Transform + - uid: 15501 + components: + - pos: -5.5,-19.5 + parent: 1 + type: Transform + - uid: 15505 + components: + - pos: -1.5,-20.5 + parent: 1 + type: Transform + - uid: 15506 + components: + - pos: -0.5,-20.5 + parent: 1 + type: Transform + - uid: 15507 + components: + - pos: 1.5,-20.5 + parent: 1 + type: Transform + - uid: 15508 + components: + - pos: 3.5,-20.5 + parent: 1 + type: Transform + - uid: 15509 + components: + - pos: 5.5,-20.5 + parent: 1 + type: Transform + - uid: 15520 + components: + - pos: -5.5,-20.5 + parent: 1 + type: Transform + - uid: 15521 + components: + - pos: -4.5,-20.5 + parent: 1 + type: Transform + - uid: 15522 + components: + - pos: -2.5,-20.5 + parent: 1 + type: Transform + - uid: 15523 + components: + - pos: 0.5,-20.5 + parent: 1 + type: Transform + - uid: 15524 + components: + - pos: 2.5,-20.5 + parent: 1 + type: Transform + - uid: 15525 + components: + - pos: 4.5,-20.5 + parent: 1 + type: Transform + - uid: 15526 + components: + - pos: 6.5,-20.5 + parent: 1 + type: Transform + - uid: 15551 + components: + - pos: 8.5,-18.5 + parent: 1 + type: Transform + - uid: 15552 + components: + - pos: 8.5,-19.5 + parent: 1 + type: Transform + - uid: 15553 + components: + - pos: 9.5,-18.5 + parent: 1 + type: Transform + - uid: 15554 + components: + - pos: 9.5,-19.5 + parent: 1 + type: Transform + - uid: 15555 + components: + - pos: 10.5,-18.5 + parent: 1 + type: Transform + - uid: 15556 + components: + - pos: 10.5,-19.5 + parent: 1 + type: Transform + - uid: 15816 + components: + - rot: 3.141592653589793 rad + pos: 8.5,-20.5 + parent: 1 + type: Transform + - uid: 15879 + components: + - rot: 3.141592653589793 rad + pos: 10.5,-20.5 + parent: 1 + type: Transform + - uid: 15880 + components: + - rot: 3.141592653589793 rad + pos: 7.5,-18.5 + parent: 1 + type: Transform + - uid: 15881 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-17.5 + parent: 1 + type: Transform + - uid: 15882 + components: + - rot: 3.141592653589793 rad + pos: 12.5,-18.5 + parent: 1 + type: Transform + - uid: 15883 + components: + - rot: 3.141592653589793 rad + pos: 12.5,-19.5 + parent: 1 + type: Transform + - uid: 15884 + components: + - rot: 3.141592653589793 rad + pos: 12.5,-17.5 + parent: 1 + type: Transform + - uid: 15885 + components: + - rot: 3.141592653589793 rad + pos: 8.5,-17.5 + parent: 1 + type: Transform + - uid: 15886 + components: + - rot: 3.141592653589793 rad + pos: 9.5,-17.5 + parent: 1 + type: Transform + - uid: 15887 + components: + - rot: 3.141592653589793 rad + pos: 9.5,-20.5 + parent: 1 + type: Transform + - uid: 15889 + components: + - rot: 3.141592653589793 rad + pos: 10.5,-17.5 + parent: 1 + type: Transform + - uid: 15893 + components: + - rot: 3.141592653589793 rad + pos: 7.5,-20.5 + parent: 1 + type: Transform + - uid: 15897 + components: + - rot: 3.141592653589793 rad + pos: 7.5,-19.5 + parent: 1 + type: Transform + - uid: 15902 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-17.5 + parent: 1 + type: Transform + - uid: 15903 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-18.5 + parent: 1 + type: Transform + - uid: 15904 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-19.5 + parent: 1 + type: Transform + - uid: 15905 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-20.5 + parent: 1 + type: Transform + - uid: 15907 + components: + - rot: 3.141592653589793 rad + pos: 12.5,-20.5 + parent: 1 + type: Transform +- proto: Chair + entities: + - uid: 169 + components: + - pos: -51.5,49.5 + parent: 1 + type: Transform + - uid: 913 + components: + - pos: 28.5,-0.5 + parent: 1 + type: Transform + - uid: 1529 + components: + - pos: -17.5,-3.5 + parent: 1 + type: Transform + - uid: 1530 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,-4.5 + parent: 1 + type: Transform + - uid: 1902 + components: + - rot: 3.141592653589793 rad + pos: -51.5,47.5 + parent: 1 + type: Transform + - uid: 2070 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,42.5 + parent: 1 + type: Transform + - uid: 2639 + components: + - pos: -9.5,29.5 + parent: 1 + type: Transform + - uid: 2979 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,21.5 + parent: 1 + type: Transform + - uid: 2980 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,20.5 + parent: 1 + type: Transform + - uid: 2981 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,19.5 + parent: 1 + type: Transform + - uid: 2982 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,17.5 + parent: 1 + type: Transform + - uid: 2983 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,15.5 + parent: 1 + type: Transform + - uid: 2984 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,14.5 + parent: 1 + type: Transform + - uid: 2985 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,13.5 + parent: 1 + type: Transform + - uid: 2986 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,12.5 + parent: 1 + type: Transform + - uid: 2987 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,11.5 + parent: 1 + type: Transform + - uid: 2988 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,9.5 + parent: 1 + type: Transform + - uid: 3649 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,3.5 + parent: 1 + type: Transform + - uid: 3650 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,2.5 + parent: 1 + type: Transform + - uid: 3651 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,1.5 + parent: 1 + type: Transform + - uid: 3652 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,0.5 + parent: 1 + type: Transform + - uid: 3729 + components: + - rot: 3.141592653589793 rad + pos: -45.5,-4.5 + parent: 1 + type: Transform + - uid: 4141 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,28.5 + parent: 1 + type: Transform + - uid: 4142 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,28.5 + parent: 1 + type: Transform + - uid: 4143 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,28.5 + parent: 1 + type: Transform + - uid: 4144 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,28.5 + parent: 1 + type: Transform + - uid: 4145 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,27.5 + parent: 1 + type: Transform + - uid: 4146 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,27.5 + parent: 1 + type: Transform + - uid: 4147 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,27.5 + parent: 1 + type: Transform + - uid: 4148 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,25.5 + parent: 1 + type: Transform + - uid: 4149 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,25.5 + parent: 1 + type: Transform + - uid: 4150 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,25.5 + parent: 1 + type: Transform + - uid: 4151 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,24.5 + parent: 1 + type: Transform + - uid: 4152 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,24.5 + parent: 1 + type: Transform + - uid: 4153 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,24.5 + parent: 1 + type: Transform + - uid: 4154 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,24.5 + parent: 1 + type: Transform + - uid: 4155 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,26.5 + parent: 1 + type: Transform + - uid: 4156 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,26.5 + parent: 1 + type: Transform + - uid: 4157 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,26.5 + parent: 1 + type: Transform + - uid: 4158 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,26.5 + parent: 1 + type: Transform + - uid: 5266 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,13.5 + parent: 1 + type: Transform + - uid: 5267 + components: + - pos: -53.5,14.5 + parent: 1 + type: Transform + - uid: 5409 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,-8.5 + parent: 1 + type: Transform + - uid: 5680 + components: + - rot: 3.141592653589793 rad + pos: -31.5,12.5 + parent: 1 + type: Transform + - uid: 5719 + components: + - rot: -1.5707963267948966 rad + pos: -3.5,14.5 + parent: 1 + type: Transform + - uid: 7303 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,88.5 + parent: 1 + type: Transform + - uid: 7313 + components: + - rot: 3.141592653589793 rad + pos: -59.5,88.5 + parent: 1 + type: Transform + - uid: 7538 + components: + - rot: 3.141592653589793 rad + pos: -22.5,45.5 + parent: 1 + type: Transform + - uid: 7540 + components: + - rot: 3.141592653589793 rad + pos: -21.5,45.5 + parent: 1 + type: Transform + - uid: 7642 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,82.5 + parent: 1 + type: Transform + - uid: 7643 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,88.5 + parent: 1 + type: Transform + - uid: 7909 + components: + - pos: -47.5,60.5 + parent: 1 + type: Transform + - uid: 7911 + components: + - pos: -48.5,60.5 + parent: 1 + type: Transform + - uid: 7982 + components: + - rot: -1.5707963267948966 rad + pos: -59.5,58.5 + parent: 1 + type: Transform + - uid: 7983 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,58.5 + parent: 1 + type: Transform + - uid: 9223 + components: + - pos: -63.5,42.5 + parent: 1 + type: Transform + - uid: 9776 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,35.5 + parent: 1 + type: Transform + - uid: 10100 + components: + - rot: 1.5707963267948966 rad + pos: -3.5,41.5 + parent: 1 + type: Transform + - uid: 10883 + components: + - rot: 3.141592653589793 rad + pos: -9.5,54.5 + parent: 1 + type: Transform + - uid: 12795 + components: + - rot: 3.141592653589793 rad + pos: 15.5,30.5 + parent: 1 + type: Transform + - uid: 12906 + components: + - rot: 3.141592653589793 rad + pos: 12.5,8.5 + parent: 1 + type: Transform + - uid: 13837 + components: + - rot: 3.141592653589793 rad + pos: -43.5,54.5 + parent: 1 + type: Transform + - uid: 14242 + components: + - rot: 3.141592653589793 rad + pos: -69.5,51.5 + parent: 1 + type: Transform + - uid: 14247 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,43.5 + parent: 1 + type: Transform + - uid: 14248 + components: + - pos: -63.5,48.5 + parent: 1 + type: Transform + - uid: 14289 + components: + - rot: 3.141592653589793 rad + pos: -70.5,48.5 + parent: 1 + type: Transform + - uid: 14587 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,24.5 + parent: 1 + type: Transform + - uid: 14592 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,11.5 + parent: 1 + type: Transform + - uid: 15057 + components: + - pos: -3.5,34.5 + parent: 1 + type: Transform + - uid: 15058 + components: + - pos: -2.5,34.5 + parent: 1 + type: Transform + - uid: 15059 + components: + - rot: 3.141592653589793 rad + pos: -2.5,29.5 + parent: 1 + type: Transform + - uid: 15060 + components: + - rot: 3.141592653589793 rad + pos: -1.5,29.5 + parent: 1 + type: Transform +- proto: ChairCursed + entities: + - uid: 9773 + components: + - rot: 3.141592653589793 rad + pos: -44.5,35.5 + parent: 1 + type: Transform + - uid: 9778 + components: + - rot: 3.141592653589793 rad + pos: -36.5,36.5 + parent: 1 + type: Transform +- proto: ChairFolding + entities: + - uid: 281 + components: + - pos: -14.5,-13.5 + parent: 1 + type: Transform + - uid: 286 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,-13.5 + parent: 1 + type: Transform + - uid: 343 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,-11.5 + parent: 1 + type: Transform + - uid: 344 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,-11.5 + parent: 1 + type: Transform + - uid: 593 + components: + - rot: 3.141592653589793 rad + pos: -54.5,47.5 + parent: 1 + type: Transform + - uid: 1532 + components: + - rot: 3.141592653589793 rad + pos: -17.5,-5.5 + parent: 1 + type: Transform + - uid: 1817 + components: + - rot: 3.141592653589793 rad + pos: 14.5,-0.5 + parent: 1 + type: Transform + - uid: 1818 + components: + - rot: 3.141592653589793 rad + pos: 14.5,0.5 + parent: 1 + type: Transform + - uid: 1819 + components: + - rot: 3.141592653589793 rad + pos: 14.5,1.5 + parent: 1 + type: Transform + - uid: 1820 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,-2.5 + parent: 1 + type: Transform + - uid: 1821 + components: + - rot: 3.141592653589793 rad + pos: 16.5,-0.5 + parent: 1 + type: Transform + - uid: 1822 + components: + - rot: 3.141592653589793 rad + pos: 16.5,0.5 + parent: 1 + type: Transform + - uid: 1823 + components: + - rot: 3.141592653589793 rad + pos: 16.5,1.5 + parent: 1 + type: Transform + - uid: 1824 + components: + - rot: 3.141592653589793 rad + pos: 13.5,0.5 + parent: 1 + type: Transform + - uid: 1825 + components: + - rot: 3.141592653589793 rad + pos: 13.5,1.5 + parent: 1 + type: Transform + - uid: 1826 + components: + - rot: 3.141592653589793 rad + pos: 17.5,0.5 + parent: 1 + type: Transform + - uid: 1827 + components: + - rot: 3.141592653589793 rad + pos: 17.5,1.5 + parent: 1 + type: Transform + - uid: 2268 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,19.5 + parent: 1 + type: Transform + - uid: 2285 + components: + - pos: 17.5,20.5 + parent: 1 + type: Transform + - uid: 2286 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,19.5 + parent: 1 + type: Transform + - uid: 2287 + components: + - rot: 3.141592653589793 rad + pos: 17.5,18.5 + parent: 1 + type: Transform + - uid: 2502 + components: + - pos: 16.5,13.5 + parent: 1 + type: Transform + - uid: 2503 + components: + - pos: 17.5,13.5 + parent: 1 + type: Transform + - uid: 2504 + components: + - pos: 18.5,13.5 + parent: 1 + type: Transform + - uid: 2505 + components: + - rot: 3.141592653589793 rad + pos: 16.5,10.5 + parent: 1 + type: Transform + - uid: 2506 + components: + - pos: 17.5,9.5 + parent: 1 + type: Transform + - uid: 2507 + components: + - rot: 3.141592653589793 rad + pos: 18.5,10.5 + parent: 1 + type: Transform + - uid: 2641 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,28.5 + parent: 1 + type: Transform + - uid: 2804 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,14.5 + parent: 1 + type: Transform + - uid: 2805 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,9.5 + parent: 1 + type: Transform + - uid: 2891 + components: + - pos: 6.5,-4.5 + parent: 1 + type: Transform + - uid: 3187 + components: + - pos: -26.5,18.5 + parent: 1 + type: Transform + - uid: 3188 + components: + - pos: -27.5,18.5 + parent: 1 + type: Transform + - uid: 3189 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,17.5 + parent: 1 + type: Transform + - uid: 3190 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,16.5 + parent: 1 + type: Transform + - uid: 3191 + components: + - rot: 3.141592653589793 rad + pos: -27.5,15.5 + parent: 1 + type: Transform + - uid: 3192 + components: + - rot: 3.141592653589793 rad + pos: -26.5,15.5 + parent: 1 + type: Transform + - uid: 3193 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,17.5 + parent: 1 + type: Transform + - uid: 3194 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,16.5 + parent: 1 + type: Transform + - uid: 3728 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,-3.5 + parent: 1 + type: Transform + - uid: 5268 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,13.5 + parent: 1 + type: Transform + - uid: 5408 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,-8.5 + parent: 1 + type: Transform + - uid: 5618 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,14.5 + parent: 1 + type: Transform + - uid: 5716 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,23.5 + parent: 1 + type: Transform + - uid: 5910 + components: + - pos: -9.5,42.5 + parent: 1 + type: Transform + - uid: 5912 + components: + - pos: -8.5,43.5 + parent: 1 + type: Transform + - uid: 5913 + components: + - pos: -9.5,43.5 + parent: 1 + type: Transform + - uid: 5914 + components: + - pos: -6.5,43.5 + parent: 1 + type: Transform + - uid: 5915 + components: + - pos: -5.5,43.5 + parent: 1 + type: Transform + - uid: 5927 + components: + - pos: -8.5,42.5 + parent: 1 + type: Transform + - uid: 5928 + components: + - pos: -8.5,41.5 + parent: 1 + type: Transform + - uid: 5929 + components: + - pos: -9.5,41.5 + parent: 1 + type: Transform + - uid: 5930 + components: + - pos: -6.5,42.5 + parent: 1 + type: Transform + - uid: 5931 + components: + - pos: -6.5,41.5 + parent: 1 + type: Transform + - uid: 5932 + components: + - pos: -5.5,41.5 + parent: 1 + type: Transform + - uid: 5933 + components: + - pos: -5.5,42.5 + parent: 1 + type: Transform + - uid: 6218 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,45.5 + parent: 1 + type: Transform + - uid: 7941 + components: + - pos: -54.5,65.5 + parent: 1 + type: Transform + - uid: 7942 + components: + - rot: 3.141592653589793 rad + pos: -54.5,63.5 + parent: 1 + type: Transform + - uid: 9779 + components: + - pos: -37.5,38.5 + parent: 1 + type: Transform + - uid: 9923 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,12.5 + parent: 1 + type: Transform + - uid: 9938 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,13.5 + parent: 1 + type: Transform + - uid: 9940 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,26.5 + parent: 1 + type: Transform + - uid: 9942 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,11.5 + parent: 1 + type: Transform + - uid: 10101 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,28.5 + parent: 1 + type: Transform + - uid: 10844 + components: + - pos: -60.5,42.5 + parent: 1 + type: Transform + - uid: 10881 + components: + - pos: -10.5,56.5 + parent: 1 + type: Transform + - uid: 12905 + components: + - rot: 3.141592653589793 rad + pos: 6.5,8.5 + parent: 1 + type: Transform + - uid: 13838 + components: + - rot: 3.141592653589793 rad + pos: -42.5,54.5 + parent: 1 + type: Transform + - uid: 14241 + components: + - rot: 3.141592653589793 rad + pos: -71.5,51.5 + parent: 1 + type: Transform + - uid: 14317 + components: + - rot: 3.141592653589793 rad + pos: -67.5,36.5 + parent: 1 + type: Transform + - uid: 14318 + components: + - rot: 1.5707963267948966 rad + pos: -75.5,37.5 + parent: 1 + type: Transform + - uid: 14458 + components: + - pos: -72.5,10.5 + parent: 1 + type: Transform + - uid: 14459 + components: + - pos: -72.5,11.5 + parent: 1 + type: Transform + - uid: 14460 + components: + - pos: -72.5,12.5 + parent: 1 + type: Transform + - uid: 14461 + components: + - pos: -72.5,13.5 + parent: 1 + type: Transform + - uid: 14462 + components: + - pos: -69.5,13.5 + parent: 1 + type: Transform + - uid: 14463 + components: + - pos: -69.5,11.5 + parent: 1 + type: Transform + - uid: 14464 + components: + - pos: -69.5,10.5 + parent: 1 + type: Transform + - uid: 14581 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,20.5 + parent: 1 + type: Transform + - uid: 15072 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,17.5 + parent: 1 + type: Transform +- proto: ChairFoldingSpawnFolded + entities: + - uid: 2508 + components: + - rot: 3.141592653589793 rad + pos: 19.527164,13.664964 + parent: 1 + type: Transform + - uid: 2509 + components: + - rot: 3.141592653589793 rad + pos: 19.527164,13.664964 + parent: 1 + type: Transform + - uid: 2510 + components: + - rot: 3.141592653589793 rad + pos: 19.527164,13.711839 + parent: 1 + type: Transform + - uid: 2511 + components: + - rot: 3.141592653589793 rad + pos: 19.527164,13.758714 + parent: 1 + type: Transform + - uid: 2643 + components: + - rot: -1.5707963267948966 rad + pos: -9.868263,27.709732 + parent: 1 + type: Transform +- proto: ChairOfficeDark + entities: + - uid: 271 + components: + - rot: 3.141592653589793 rad + pos: -7.5,2.5 + parent: 1 + type: Transform + - uid: 272 + components: + - rot: 1.5707963267948966 rad + pos: -2.5,2.5 + parent: 1 + type: Transform + - uid: 338 + components: + - pos: -10.5,-4.5 + parent: 1 + type: Transform + - uid: 339 + components: + - rot: 3.141592653589793 rad + pos: -12.5,-2.5 + parent: 1 + type: Transform + - uid: 914 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,-1.5 + parent: 1 + type: Transform + - uid: 1531 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,-4.5 + parent: 1 + type: Transform + - uid: 1904 + components: + - pos: -54.5,49.5 + parent: 1 + type: Transform + - uid: 2642 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,28.5 + parent: 1 + type: Transform + - uid: 2803 + components: + - rot: 1.5707963267948966 rad + pos: -15.5,13.5 + parent: 1 + type: Transform + - uid: 2846 + components: + - rot: 3.141592653589793 rad + pos: -16.5,28.5 + parent: 1 + type: Transform + - uid: 3316 + components: + - pos: -15.5,26.5 + parent: 1 + type: Transform + - uid: 3688 + components: + - rot: 1.5707963267948966 rad + pos: -43.5,1.5 + parent: 1 + type: Transform + - uid: 3730 + components: + - rot: -1.5707963267948966 rad + pos: -44.5,-3.5 + parent: 1 + type: Transform + - uid: 3744 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,1.5 + parent: 1 + type: Transform + - uid: 3765 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,1.5 + parent: 1 + type: Transform + - uid: 4558 + components: + - pos: 22.5,39.5 + parent: 1 + type: Transform + - uid: 4577 + components: + - pos: 22.5,41.5 + parent: 1 + type: Transform + - uid: 5358 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,-1.5 + parent: 1 + type: Transform + - uid: 5359 + components: + - pos: -53.5,-4.5 + parent: 1 + type: Transform + - uid: 5616 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,28.5 + parent: 1 + type: Transform + - uid: 5808 + components: + - rot: 3.141592653589793 rad + pos: -26.5,8.5 + parent: 1 + type: Transform + - uid: 7539 + components: + - pos: -21.5,47.5 + parent: 1 + type: Transform + - uid: 7563 + components: + - pos: -19.5,37.5 + parent: 1 + type: Transform + - uid: 7907 + components: + - pos: -47.5,57.5 + parent: 1 + type: Transform + - uid: 7908 + components: + - rot: 3.141592653589793 rad + pos: -47.5,62.5 + parent: 1 + type: Transform + - uid: 7910 + components: + - rot: 3.141592653589793 rad + pos: -47.5,58.5 + parent: 1 + type: Transform + - uid: 7932 + components: + - rot: -1.5707963267948966 rad + pos: -59.5,64.5 + parent: 1 + type: Transform + - uid: 7980 + components: + - rot: 3.141592653589793 rad + pos: -54.5,57.5 + parent: 1 + type: Transform + - uid: 7981 + components: + - rot: 3.141592653589793 rad + pos: -56.5,57.5 + parent: 1 + type: Transform + - uid: 10460 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,16.5 + parent: 1 + type: Transform + - uid: 10879 + components: + - rot: 3.141592653589793 rad + pos: -8.5,54.5 + parent: 1 + type: Transform + - uid: 10889 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,60.5 + parent: 1 + type: Transform + - uid: 10890 + components: + - rot: 1.5707963267948966 rad + pos: -12.5,61.5 + parent: 1 + type: Transform + - uid: 12024 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,16.5 + parent: 1 + type: Transform + - uid: 13320 + components: + - pos: -0.5,8.5 + parent: 1 + type: Transform + - uid: 14204 + components: + - pos: -65.5,26.5 + parent: 1 + type: Transform +- proto: ChairOfficeLight + entities: + - uid: 499 + components: + - rot: 3.141592653589793 rad + pos: -57.5,47.5 + parent: 1 + type: Transform + - uid: 1968 + components: + - rot: 3.141592653589793 rad + pos: -0.5,27.5 + parent: 1 + type: Transform + - uid: 1969 + components: + - rot: 3.141592653589793 rad + pos: -2.5,26.5 + parent: 1 + type: Transform + - uid: 1970 + components: + - rot: -1.5707963267948966 rad + pos: -3.5,25.5 + parent: 1 + type: Transform + - uid: 1972 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,25.5 + parent: 1 + type: Transform + - uid: 1979 + components: + - rot: -1.5707963267948966 rad + pos: -0.5,33.5 + parent: 1 + type: Transform + - uid: 2066 + components: + - pos: 7.5,23.5 + parent: 1 + type: Transform + - uid: 2067 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,25.5 + parent: 1 + type: Transform + - uid: 2359 + components: + - rot: 3.141592653589793 rad + pos: 7.5,16.5 + parent: 1 + type: Transform + - uid: 2360 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,18.5 + parent: 1 + type: Transform + - uid: 2806 + components: + - rot: 1.5707963267948966 rad + pos: -15.5,9.5 + parent: 1 + type: Transform + - uid: 4567 + components: + - pos: 18.5,43.5 + parent: 1 + type: Transform + - uid: 4568 + components: + - pos: 22.5,43.5 + parent: 1 + type: Transform + - uid: 5326 + components: + - pos: 17.5,41.5 + parent: 1 + type: Transform + - uid: 5617 + components: + - pos: -41.5,24.5 + parent: 1 + type: Transform + - uid: 10880 + components: + - rot: 3.141592653589793 rad + pos: -10.5,54.5 + parent: 1 + type: Transform + - uid: 10882 + components: + - pos: -9.5,56.5 + parent: 1 + type: Transform + - uid: 12794 + components: + - pos: 15.5,32.5 + parent: 1 + type: Transform +- proto: ChairPilotSeat + entities: + - uid: 10878 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,55.5 + parent: 1 + type: Transform + - uid: 10891 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,64.5 + parent: 1 + type: Transform + - uid: 10892 + components: + - rot: 3.141592653589793 rad + pos: -16.5,65.5 + parent: 1 + type: Transform + - uid: 10893 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,64.5 + parent: 1 + type: Transform +- proto: ChairRitual + entities: + - uid: 9774 + components: + - pos: -38.5,38.5 + parent: 1 + type: Transform +- proto: ChairWood + entities: + - uid: 1905 + components: + - pos: -57.5,49.5 + parent: 1 + type: Transform + - uid: 2995 + components: + - pos: 24.5,15.5 + parent: 1 + type: Transform + - uid: 2996 + components: + - rot: 1.5707963267948966 rad + pos: 23.5,14.5 + parent: 1 + type: Transform + - uid: 2997 + components: + - rot: -1.5707963267948966 rad + pos: 25.5,14.5 + parent: 1 + type: Transform + - uid: 2998 + components: + - rot: 3.141592653589793 rad + pos: 24.5,13.5 + parent: 1 + type: Transform + - uid: 3731 + components: + - pos: -45.5,-2.5 + parent: 1 + type: Transform + - uid: 5269 + components: + - rot: 3.141592653589793 rad + pos: -53.5,12.5 + parent: 1 + type: Transform + - uid: 9772 + components: + - pos: -44.5,37.5 + parent: 1 + type: Transform + - uid: 9775 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,35.5 + parent: 1 + type: Transform + - uid: 9777 + components: + - rot: 3.141592653589793 rad + pos: -38.5,36.5 + parent: 1 + type: Transform + - uid: 9780 + components: + - rot: 3.141592653589793 rad + pos: -37.5,36.5 + parent: 1 + type: Transform + - uid: 9781 + components: + - pos: -36.5,38.5 + parent: 1 + type: Transform + - uid: 10459 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,42.5 + parent: 1 + type: Transform + - uid: 10461 + components: + - pos: -27.5,42.5 + parent: 1 + type: Transform + - uid: 10934 + components: + - pos: -61.5,45.5 + parent: 1 + type: Transform + - uid: 10966 + components: + - pos: -72.5,42.5 + parent: 1 + type: Transform + - uid: 10967 + components: + - rot: 3.141592653589793 rad + pos: -72.5,40.5 + parent: 1 + type: Transform + - uid: 10968 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,39.5 + parent: 1 + type: Transform + - uid: 10969 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,39.5 + parent: 1 + type: Transform +- proto: chem_master + entities: + - uid: 13 + components: + - pos: -2.5,27.5 + parent: 1 + type: Transform + - uid: 14 + components: + - pos: -4.5,25.5 + parent: 1 + type: Transform +- proto: ChemDispenserMachineCircuitboard + entities: + - uid: 8631 + components: + - pos: -0.44726107,21.388016 + parent: 1 + type: Transform +- proto: ChemistryHotplate + entities: + - uid: 1967 + components: + - pos: 0.5,27.5 + parent: 1 + type: Transform +- proto: ChessBoard + entities: + - uid: 345 + components: + - rot: -1.5707963267948966 rad + pos: -8.494302,-11.401604 + parent: 1 + type: Transform + - uid: 6343 + components: + - rot: 3.141592653589793 rad + pos: -0.51219857,51.59928 + parent: 1 + type: Transform +- proto: ChurchOrganInstrument + entities: + - uid: 1816 + components: + - rot: 1.5707963267948966 rad + pos: 17.5,-2.5 + parent: 1 + type: Transform +- proto: Cigarette + entities: + - uid: 10971 + components: + - pos: -72.28104,41.642494 + parent: 1 + type: Transform + - uid: 10972 + components: + - pos: -72.67166,41.923744 + parent: 1 + type: Transform + - uid: 10973 + components: + - pos: -70.29666,39.954994 + parent: 1 + type: Transform + - uid: 10974 + components: + - pos: -70.68729,39.56437 + parent: 1 + type: Transform +- proto: CigarGoldCase + entities: + - uid: 10914 + components: + - pos: -7.7008357,61.63202 + parent: 1 + type: Transform +- proto: CircuitImprinterMachineCircuitboard + entities: + - uid: 258 + components: + - pos: -11.474969,-1.4294147 + parent: 1 + type: Transform +- proto: ClosetBase + entities: + - uid: 630 + components: + - pos: 8.5,-1.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 631 + components: + - pos: 7.5,0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 6325 + components: + - pos: 8.5,52.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: ClosetChefFilled + entities: + - uid: 6935 + components: + - pos: -31.5,47.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: ClosetEmergencyFilledRandom + entities: + - uid: 294 + components: + - pos: -13.5,2.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 908 + components: + - pos: 29.5,-7.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1142 + components: + - pos: 1.5,19.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1151 + components: + - pos: 1.5,20.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2942 + components: + - pos: 5.5,0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2943 + components: + - pos: 1.5,-4.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2945 + components: + - pos: 23.5,2.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2949 + components: + - pos: 15.5,-4.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2964 + components: + - pos: 21.5,11.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 3321 + components: + - pos: -16.5,19.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5274 + components: + - pos: -55.5,35.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5277 + components: + - pos: -55.5,36.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5385 + components: + - pos: -54.5,-10.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5403 + components: + - pos: -29.5,2.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5404 + components: + - pos: -15.5,-7.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5414 + components: + - pos: -15.5,0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5498 + components: + - pos: -53.5,2.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5605 + components: + - pos: -44.5,15.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5608 + components: + - pos: -45.5,27.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5710 + components: + - pos: -34.5,10.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5729 + components: + - pos: -20.5,10.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5779 + components: + - pos: -4.5,10.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5782 + components: + - pos: -9.5,24.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10369 + components: + - pos: -30.5,49.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10376 + components: + - pos: -20.5,50.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10379 + components: + - pos: -25.5,37.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10381 + components: + - pos: -9.5,36.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10384 + components: + - pos: -8.5,48.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10385 + components: + - pos: 6.5,39.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 12891 + components: + - pos: 15.5,23.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14235 + components: + - pos: -70.5,56.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14236 + components: + - pos: -60.5,48.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14244 + components: + - pos: -66.5,40.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14582 + components: + - pos: -61.5,29.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 15967 + components: + - pos: -72.5,-9.5 + parent: 1 + type: Transform + - uid: 15971 + components: + - pos: -65.5,-9.5 + parent: 1 + type: Transform +- proto: ClosetFireFilled + entities: + - uid: 295 + components: + - pos: -13.5,1.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 296 + components: + - pos: -13.5,0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2917 + components: + - pos: -15.5,19.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2941 + components: + - pos: 5.5,1.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2944 + components: + - pos: 2.5,-4.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2948 + components: + - pos: 14.5,-4.5 + parent: 1 + type: Transform + - open: True + removedMasks: 20 + type: EntityStorage + - uid: 2965 + components: + - pos: 21.5,12.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5389 + components: + - pos: -53.5,-10.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5405 + components: + - pos: -29.5,1.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5406 + components: + - pos: -15.5,-8.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5415 + components: + - pos: -16.5,0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5497 + components: + - pos: -54.5,2.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5604 + components: + - pos: -43.5,15.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5607 + components: + - pos: -45.5,28.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5708 + components: + - pos: -34.5,9.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5731 + components: + - pos: -20.5,9.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5780 + components: + - pos: -4.5,9.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5783 + components: + - pos: -8.5,24.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10368 + components: + - pos: -31.5,49.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10377 + components: + - pos: -19.5,50.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10380 + components: + - pos: -25.5,38.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10382 + components: + - pos: -8.5,36.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10386 + components: + - pos: 7.5,39.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10800 + components: + - pos: -8.5,49.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 12890 + components: + - pos: 15.5,22.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14237 + components: + - pos: -61.5,48.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14243 + components: + - pos: -66.5,39.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14583 + components: + - pos: -61.5,28.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 15963 + components: + - pos: -74.5,-9.5 + parent: 1 + type: Transform + - uid: 15977 + components: + - pos: -67.5,-9.5 + parent: 1 + type: Transform +- proto: ClosetJanitorFilled + entities: + - uid: 7071 + components: + - pos: -50.5,38.5 + parent: 1 + type: Transform + - contents: + - maxAmount: 1 + amount: 1 + orGroup: null + prob: 0.01 + id: WeaponPistolMk58 + - maxAmount: 1 + amount: 2 + orGroup: null + prob: 1 + id: MopItem + - maxAmount: 1 + amount: 2 + orGroup: null + prob: 1 + id: BoxMousetrap + - maxAmount: 1 + amount: 3 + orGroup: null + prob: 1 + id: WetFloorSign + - maxAmount: 1 + amount: 2 + orGroup: null + prob: 1 + id: TrashBag + - maxAmount: 1 + amount: 1 + orGroup: null + prob: 1 + id: LightReplacer + - maxAmount: 1 + amount: 1 + orGroup: null + prob: 1 + id: BoxLightMixed + - maxAmount: 1 + amount: 1 + orGroup: null + prob: 1 + id: Holoprojector + - maxAmount: 1 + amount: 2 + orGroup: null + prob: 1 + id: SoapNT + - maxAmount: 1 + amount: 2 + orGroup: null + prob: 1 + id: FlashlightLantern + type: StorageFill + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 15049 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer +- proto: ClosetL3VirologyFilled + entities: + - uid: 1150 + components: + - pos: 6.5,20.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1181 + components: + - pos: 7.5,20.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: ClosetMaintenanceFilledRandom + entities: + - uid: 1114 + components: + - pos: -23.5,-6.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2807 + components: + - pos: -9.5,12.5 + parent: 1 + type: Transform + - uid: 2914 + components: + - pos: -17.5,19.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2946 + components: + - pos: 24.5,-0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2947 + components: + - pos: 13.5,-4.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2953 + components: + - pos: 26.5,-4.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2954 + components: + - pos: 3.5,-4.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2966 + components: + - pos: 21.5,13.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5364 + components: + - pos: -54.5,-0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5392 + components: + - pos: -52.5,-10.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5413 + components: + - pos: -29.5,0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5422 + components: + - pos: -17.5,0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5499 + components: + - pos: -52.5,2.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 1.7459902 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5606 + components: + - pos: -45.5,15.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5609 + components: + - pos: -45.5,26.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5709 + components: + - pos: -34.5,11.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5733 + components: + - pos: -20.5,11.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5735 + components: + - pos: -20.5,28.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5781 + components: + - pos: -4.5,11.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10363 + components: + - pos: -38.5,54.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10367 + components: + - pos: -37.5,54.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10378 + components: + - pos: -21.5,50.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10393 + components: + - pos: 6.5,43.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10394 + components: + - pos: 6.5,42.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10408 + components: + - pos: 22.5,30.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10474 + components: + - pos: -54.5,44.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10802 + components: + - pos: -8.5,50.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 12892 + components: + - pos: 15.5,24.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 12900 + components: + - pos: 14.5,8.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 12901 + components: + - pos: 3.5,8.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14234 + components: + - pos: -69.5,56.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14238 + components: + - pos: -62.5,48.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14314 + components: + - pos: -74.5,47.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14584 + components: + - pos: -61.5,27.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 15068 + components: + - pos: -28.5,20.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 15915 + components: + - pos: 14.5,34.5 + parent: 1 + type: Transform + - uid: 15931 + components: + - pos: 20.5,43.5 + parent: 1 + type: Transform +- proto: ClosetToolFilled + entities: + - uid: 1118 + components: + - pos: -24.5,-6.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: ClothingBackpackClown + entities: + - uid: 4232 + components: + - pos: -40.570293,28.017475 + parent: 1 + type: Transform +- proto: ClothingBeltUtility + entities: + - uid: 5650 + components: + - pos: -23.493784,26.550022 + parent: 1 + type: Transform +- proto: ClothingEyesGlassesSunglasses + entities: + - uid: 9736 + components: + - pos: -27.635717,35.723694 + parent: 1 + type: Transform +- proto: ClothingHandsGlovesBoxingBlue + entities: + - uid: 14361 + components: + - pos: -60.445595,14.632732 + parent: 1 + type: Transform +- proto: ClothingHandsGlovesBoxingGreen + entities: + - uid: 14362 + components: + - pos: -60.42997,10.429607 + parent: 1 + type: Transform +- proto: ClothingHandsGlovesBoxingRed + entities: + - uid: 14363 + components: + - pos: -62.33622,10.476482 + parent: 1 + type: Transform +- proto: ClothingHandsGlovesBoxingYellow + entities: + - uid: 14364 + components: + - pos: -62.30497,14.523357 + parent: 1 + type: Transform +- proto: ClothingHandsGlovesColorBlack + entities: + - uid: 14935 + components: + - pos: -59.51448,91.46834 + parent: 1 + type: Transform +- proto: ClothingHandsGlovesColorGray + entities: + - uid: 5938 + components: + - desc: These specially insulated grey gloves belong to the king of tiders. A small tag is inscribed with the initials, "H.M." + name: grey gloves of the tider king + type: MetaData + - pos: -7.521523,39.691025 + parent: 1 + type: Transform + - type: Insulated +- proto: ClothingHandsGlovesColorYellow + entities: + - uid: 611 + components: + - pos: -26.510632,26.559929 + parent: 1 + type: Transform +- proto: ClothingHandsGlovesNitrile + entities: + - uid: 12776 + components: + - pos: 15.627547,28.610893 + parent: 1 + type: Transform +- proto: ClothingHandsGlovesPowerglove + entities: + - uid: 14936 + components: + - pos: -76.52277,13.482821 + parent: 1 + type: Transform +- proto: ClothingHeadHatAnimalMonkey + entities: + - uid: 917 + components: + - pos: 27.553495,-1.4451299 + parent: 1 + type: Transform +- proto: ClothingHeadHatCone + entities: + - uid: 717 + components: + - pos: 24.462656,-1.4106827 + parent: 1 + type: Transform + - uid: 718 + components: + - pos: 24.447031,-2.4575577 + parent: 1 + type: Transform + - uid: 719 + components: + - pos: 24.462656,-3.4575577 + parent: 1 + type: Transform +- proto: ClothingHeadHatFedoraBrown + entities: + - uid: 12916 + components: + - pos: 3.488522,44.563385 + parent: 1 + type: Transform +- proto: ClothingHeadHatHairflower + entities: + - uid: 10873 + components: + - pos: -22.049007,53.739006 + parent: 1 + type: Transform +- proto: ClothingHeadHatHoodCulthood + entities: + - uid: 1836 + components: + - pos: 20.792824,-2.5214906 + parent: 1 + type: Transform +- proto: ClothingHeadHelmetEVA + entities: + - uid: 5443 + components: + - pos: -6.6627684,-13.319158 + parent: 1 + type: Transform +- proto: ClothingHeadHelmetSyndicate + entities: + - uid: 15279 + components: + - pos: -57.70341,92.69456 + parent: 1 + type: Transform +- proto: ClothingMaskBreathMedical + entities: + - uid: 12777 + components: + - pos: 16.513798,28.576006 + parent: 1 + type: Transform +- proto: ClothingMaskClown + entities: + - uid: 2306 + components: + - pos: 19.76093,15.739809 + parent: 1 + type: Transform + - uid: 2788 + components: + - pos: -25.506933,57.41912 + parent: 1 + type: Transform +- proto: ClothingMaskGas + entities: + - uid: 323 + components: + - pos: -4.562405,-5.3679457 + parent: 1 + type: Transform + - uid: 332 + components: + - pos: -4.156155,-5.3366957 + parent: 1 + type: Transform + - uid: 7378 + components: + - desc: A face-covering mask that resembles the icon of greytide worldwide. + name: face of the tider + type: MetaData + - pos: -5.3370404,44.58554 + parent: 1 + type: Transform + - uid: 7379 + components: + - desc: A face-covering mask that resembles the icon of greytide worldwide. + name: face of the tider + type: MetaData + - pos: -6.630641,44.601288 + parent: 1 + type: Transform + - uid: 7380 + components: + - desc: A face-covering mask that resembles the icon of greytide worldwide. + name: face of the tider + type: MetaData + - pos: -6.224393,44.64804 + parent: 1 + type: Transform + - uid: 7381 + components: + - desc: A face-covering mask that resembles the icon of greytide worldwide. + name: face of the tider + type: MetaData + - pos: -5.8370404,44.632416 + parent: 1 + type: Transform +- proto: ClothingNeckAromanticPin + entities: + - uid: 10536 + components: + - pos: -25.61458,26.466957 + parent: 1 + type: Transform +- proto: ClothingNeckBling + entities: + - uid: 10875 + components: + - pos: -22.564632,53.645256 + parent: 1 + type: Transform +- proto: ClothingNeckHeadphones + entities: + - uid: 10545 + components: + - pos: -53.41692,13.576396 + parent: 1 + type: Transform +- proto: ClothingNeckIntersexPin + entities: + - uid: 10539 + components: + - pos: 28.525753,9.397884 + parent: 1 + type: Transform +- proto: ClothingNeckLesbianPin + entities: + - uid: 10540 + components: + - pos: 6.5544667,-2.4496374 + parent: 1 + type: Transform +- proto: ClothingNeckLGBTPin + entities: + - uid: 10535 + components: + - pos: -34.543724,28.416185 + parent: 1 + type: Transform +- proto: ClothingNeckMantleCap + entities: + - uid: 5004 + components: + - pos: -5.5015035,61.615753 + parent: 1 + type: Transform +- proto: ClothingNeckMantleCE + entities: + - uid: 3543 + components: + - pos: -68.46455,16.578547 + parent: 1 + type: Transform +- proto: ClothingNeckMantleHOP + entities: + - uid: 5395 + components: + - pos: -21.824865,46.548195 + parent: 1 + type: Transform +- proto: ClothingNeckMantleHOS + entities: + - uid: 7085 + components: + - pos: -60.468678,63.752388 + parent: 1 + type: Transform +- proto: ClothingNeckMantleRD + entities: + - uid: 3698 + components: + - flags: InContainer + type: MetaData + - parent: 245 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: ClothingNeckNonBinaryPin + entities: + - uid: 10541 + components: + - pos: -27.46916,-8.556879 + parent: 1 + type: Transform +- proto: ClothingNeckStethoscope + entities: + - uid: 2329 + components: + - pos: 10.447677,31.662287 + parent: 1 + type: Transform +- proto: ClothingNeckTransPin + entities: + - uid: 10543 + components: + - pos: -54.52713,17.537136 + parent: 1 + type: Transform +- proto: ClothingOuterHardsuitEVA + entities: + - uid: 5444 + components: + - pos: -6.5221434,-13.381658 + parent: 1 + type: Transform +- proto: ClothingOuterHardsuitSyndicate + entities: + - uid: 15280 + components: + - pos: -57.469036,92.47581 + parent: 1 + type: Transform +- proto: ClothingOuterRobesCult + entities: + - uid: 1837 + components: + - pos: 20.402199,-2.4433656 + parent: 1 + type: Transform +- proto: ClothingOuterSuitMonkey + entities: + - uid: 916 + components: + - pos: 27.147245,-2.3826299 + parent: 1 + type: Transform +- proto: ClothingShoesBootsCombatFilled + entities: + - uid: 15494 + components: + - pos: -35.545906,68.57638 + parent: 1 + type: Transform +- proto: ClothingShoesBootsMag + entities: + - uid: 7382 + components: + - pos: -12.423142,46.687256 + parent: 1 + type: Transform + - uid: 7383 + components: + - pos: -12.595017,46.437256 + parent: 1 + type: Transform + - uid: 7384 + components: + - pos: -13.391892,46.687256 + parent: 1 + type: Transform + - uid: 7385 + components: + - pos: -13.579392,46.45288 + parent: 1 + type: Transform + - uid: 14163 + components: + - pos: -77.410675,42.617188 + parent: 1 + type: Transform +- proto: ClothingShoesBootsPerformer + entities: + - uid: 10959 + components: + - pos: -72.29666,45.642494 + parent: 1 + type: Transform +- proto: ClothingShoesWizard + entities: + - uid: 6833 + components: + - pos: -36.71934,52.678024 + parent: 1 + type: Transform + - uid: 6834 + components: + - pos: -36.359966,52.553024 + parent: 1 + type: Transform +- proto: ClothingUniformJumpskirtJanimaid + entities: + - uid: 6979 + components: + - flags: InContainer + type: MetaData + - parent: 7028 + type: Transform + - canCollide: False + type: Physics +- proto: ClothingUniformJumpskirtPerformer + entities: + - uid: 10960 + components: + - pos: -72.56229,45.579994 + parent: 1 + type: Transform +- proto: ClothingUniformJumpsuitAncient + entities: + - uid: 5559 + components: + - pos: -45.64481,17.603561 + parent: 1 + type: Transform + - uid: 15103 + components: + - pos: -45.285435,17.619186 + parent: 1 + type: Transform +- proto: ComfyChair + entities: + - uid: 6341 + components: + - pos: -0.5,52.5 + parent: 1 + type: Transform + - uid: 6342 + components: + - rot: 3.141592653589793 rad + pos: -0.5,50.5 + parent: 1 + type: Transform + - uid: 7537 + components: + - pos: -22.5,47.5 + parent: 1 + type: Transform + - uid: 7931 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,64.5 + parent: 1 + type: Transform + - uid: 7933 + components: + - rot: -1.5707963267948966 rad + pos: -58.5,65.5 + parent: 1 + type: Transform + - uid: 10877 + components: + - pos: -8.5,56.5 + parent: 1 + type: Transform + - uid: 10905 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,61.5 + parent: 1 + type: Transform + - uid: 15162 + components: + - rot: 3.141592653589793 rad + pos: 16.5,52.5 + parent: 1 + type: Transform + - uid: 15163 + components: + - rot: 3.141592653589793 rad + pos: 18.5,52.5 + parent: 1 + type: Transform +- proto: CommsComputerCircuitboard + entities: + - uid: 15958 + components: + - pos: -49.44898,25.317516 + parent: 1 + type: Transform +- proto: ComputerAnalysisConsole + entities: + - uid: 341 + components: + - rot: 3.141592653589793 rad + pos: 0.5,-11.5 + parent: 1 + type: Transform + - linkedPorts: + 347: + - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + type: DeviceLinkSource +- proto: ComputerBroken + entities: + - uid: 591 + components: + - pos: 13.5,-7.5 + parent: 1 + type: Transform + - uid: 5324 + components: + - rot: 3.141592653589793 rad + pos: 22.5,38.5 + parent: 1 + type: Transform + - uid: 9069 + components: + - rot: 3.141592653589793 rad + pos: 18.5,42.5 + parent: 1 + type: Transform + - uid: 9080 + components: + - rot: 3.141592653589793 rad + pos: 17.5,40.5 + parent: 1 + type: Transform +- proto: ComputerCargoBounty + entities: + - uid: 8995 + components: + - pos: -33.5,-5.5 + parent: 1 + type: Transform +- proto: ComputerCargoOrders + entities: + - uid: 3619 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,1.5 + parent: 1 + type: Transform + - uid: 3746 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,-7.5 + parent: 1 + type: Transform +- proto: ComputerCargoShuttle + entities: + - uid: 3618 + components: + - pos: -39.5,-1.5 + parent: 1 + type: Transform +- proto: ComputerComms + entities: + - uid: 10884 + components: + - pos: -16.5,66.5 + parent: 1 + type: Transform + - uid: 13767 + components: + - rot: 3.141592653589793 rad + pos: -8.5,59.5 + parent: 1 + type: Transform +- proto: ComputerCrewMonitoring + entities: + - uid: 1973 + components: + - pos: -0.5,34.5 + parent: 1 + type: Transform + - uid: 10886 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,64.5 + parent: 1 + type: Transform +- proto: ComputerCriminalRecords + entities: + - uid: 2992 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,58.5 + parent: 1 + type: Transform +- proto: ComputerFrame + entities: + - uid: 1324 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,38.5 + parent: 1 + type: Transform + - uid: 9067 + components: + - rot: 3.141592653589793 rad + pos: 22.5,40.5 + parent: 1 + type: Transform + - uid: 9974 + components: + - rot: 1.5707963267948966 rad + pos: -82.5,26.5 + parent: 1 + type: Transform +- proto: ComputerId + entities: + - uid: 7562 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,37.5 + parent: 1 + type: Transform + - uid: 10885 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,64.5 + parent: 1 + type: Transform +- proto: ComputerMedicalRecords + entities: + - uid: 1980 + components: + - pos: 0.5,34.5 + parent: 1 + type: Transform +- proto: ComputerPowerMonitoring + entities: + - uid: 10712 + components: + - rot: 3.141592653589793 rad + pos: -74.5,15.5 + parent: 1 + type: Transform + - uid: 10713 + components: + - rot: -1.5707963267948966 rad + pos: -63.5,27.5 + parent: 1 + type: Transform + - uid: 10894 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,60.5 + parent: 1 + type: Transform +- proto: ComputerRadar + entities: + - uid: 10705 + components: + - rot: 1.5707963267948966 rad + pos: -49.5,-13.5 + parent: 1 + type: Transform + - uid: 10887 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,61.5 + parent: 1 + type: Transform +- proto: ComputerResearchAndDevelopment + entities: + - uid: 248 + components: + - rot: -1.5707963267948966 rad + pos: -1.5,2.5 + parent: 1 + type: Transform + - uid: 251 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,2.5 + parent: 1 + type: Transform +- proto: ComputerSalvageExpedition + entities: + - uid: 10739 + components: + - rot: 3.141592653589793 rad + pos: -34.5,-3.5 + parent: 1 + type: Transform +- proto: ComputerShuttleCargo + entities: + - uid: 3673 + components: + - rot: 3.141592653589793 rad + pos: -33.5,-10.5 + parent: 1 + type: Transform +- proto: ComputerSolarControl + entities: + - uid: 907 + components: + - rot: 1.5707963267948966 rad + pos: 27.5,-8.5 + parent: 1 + type: Transform +- proto: ComputerStationRecords + entities: + - uid: 10899 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,61.5 + parent: 1 + type: Transform +- proto: ComputerSurveillanceCameraMonitor + entities: + - uid: 7956 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,57.5 + parent: 1 + type: Transform + - uid: 7979 + components: + - pos: -54.5,58.5 + parent: 1 + type: Transform + - uid: 10888 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,60.5 + parent: 1 + type: Transform + - uid: 13086 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,8.5 + parent: 1 + type: Transform +- proto: ComputerTechnologyDiskTerminal + entities: + - uid: 234 + components: + - pos: -9.5,-5.5 + parent: 1 + type: Transform +- proto: ContainmentFieldGenerator + entities: + - uid: 9985 + components: + - rot: -1.5707963267948966 rad + pos: -82.5,18.5 + parent: 1 + type: Transform + - uid: 9986 + components: + - rot: -1.5707963267948966 rad + pos: -81.5,18.5 + parent: 1 + type: Transform + - uid: 9987 + components: + - rot: -1.5707963267948966 rad + pos: -80.5,18.5 + parent: 1 + type: Transform + - uid: 9988 + components: + - rot: -1.5707963267948966 rad + pos: -79.5,18.5 + parent: 1 + type: Transform + - uid: 10644 + components: + - pos: -93.5,21.5 + parent: 1 + type: Transform + - uid: 10645 + components: + - pos: -93.5,29.5 + parent: 1 + type: Transform + - uid: 10646 + components: + - pos: -101.5,29.5 + parent: 1 + type: Transform + - uid: 10647 + components: + - pos: -101.5,21.5 + parent: 1 + type: Transform +- proto: ConveyorBelt + entities: + - uid: 6789 + components: + - pos: -39.5,-8.5 + parent: 1 + type: Transform + - links: + - 13842 + - 13843 + type: DeviceLinkSink + - uid: 6793 + components: + - pos: -39.5,-9.5 + parent: 1 + type: Transform + - links: + - 13842 + - 13843 + type: DeviceLinkSink + - uid: 7282 + components: + - pos: -39.5,-7.5 + parent: 1 + type: Transform + - links: + - 13842 + - 13843 + type: DeviceLinkSink + - uid: 13825 + components: + - pos: -35.5,-14.5 + parent: 1 + type: Transform + - links: + - 13823 + type: DeviceLinkSink + - uid: 13826 + components: + - pos: -35.5,-13.5 + parent: 1 + type: Transform + - links: + - 13823 + type: DeviceLinkSink + - uid: 13827 + components: + - pos: -35.5,-12.5 + parent: 1 + type: Transform + - links: + - 13823 + type: DeviceLinkSink + - uid: 13828 + components: + - pos: -35.5,-11.5 + parent: 1 + type: Transform + - links: + - 13823 + type: DeviceLinkSink + - uid: 13829 + components: + - pos: -35.5,-10.5 + parent: 1 + type: Transform + - links: + - 13823 + type: DeviceLinkSink + - uid: 13830 + components: + - pos: -31.5,-14.5 + parent: 1 + type: Transform + - links: + - 13824 + type: DeviceLinkSink + - uid: 13831 + components: + - pos: -31.5,-13.5 + parent: 1 + type: Transform + - links: + - 13824 + type: DeviceLinkSink + - uid: 13832 + components: + - pos: -31.5,-12.5 + parent: 1 + type: Transform + - links: + - 13824 + type: DeviceLinkSink + - uid: 13833 + components: + - pos: -31.5,-11.5 + parent: 1 + type: Transform + - links: + - 13824 + type: DeviceLinkSink + - uid: 13834 + components: + - pos: -31.5,-10.5 + parent: 1 + type: Transform + - links: + - 13824 + type: DeviceLinkSink + - uid: 14225 + components: + - rot: 3.141592653589793 rad + pos: -73.5,53.5 + parent: 1 + type: Transform + - links: + - 14233 + type: DeviceLinkSink + - uid: 14226 + components: + - rot: 3.141592653589793 rad + pos: -73.5,54.5 + parent: 1 + type: Transform + - links: + - 14233 + type: DeviceLinkSink + - uid: 14227 + components: + - rot: 3.141592653589793 rad + pos: -73.5,55.5 + parent: 1 + type: Transform + - links: + - 14233 + type: DeviceLinkSink + - uid: 14228 + components: + - rot: 3.141592653589793 rad + pos: -73.5,56.5 + parent: 1 + type: Transform + - links: + - 14233 + type: DeviceLinkSink + - uid: 14229 + components: + - rot: 3.141592653589793 rad + pos: -73.5,57.5 + parent: 1 + type: Transform + - links: + - 14233 + type: DeviceLinkSink + - uid: 14230 + components: + - rot: 3.141592653589793 rad + pos: -73.5,58.5 + parent: 1 + type: Transform + - links: + - 14233 + type: DeviceLinkSink +- proto: CowToolboxFilled + entities: + - uid: 14933 + components: + - pos: -92.450035,40.48285 + parent: 1 + type: Transform +- proto: CrateAirlockKit + entities: + - uid: 9079 + components: + - pos: 5.5,-19.5 + parent: 1 + type: Transform +- proto: CrateArtifactContainer + entities: + - uid: 349 + components: + - pos: 5.5,-8.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: CrateEmptySpawner + entities: + - uid: 15654 + components: + - pos: -39.5,-3.5 + parent: 1 + type: Transform + - uid: 15655 + components: + - pos: -37.5,-5.5 + parent: 1 + type: Transform + - uid: 15656 + components: + - pos: -41.5,-11.5 + parent: 1 + type: Transform + - uid: 15658 + components: + - pos: -21.5,-0.5 + parent: 1 + type: Transform + - uid: 15659 + components: + - pos: 22.5,-4.5 + parent: 1 + type: Transform + - uid: 15663 + components: + - pos: 2.5,46.5 + parent: 1 + type: Transform + - uid: 15664 + components: + - pos: -5.5,36.5 + parent: 1 + type: Transform + - uid: 15733 + components: + - pos: -26.5,49.5 + parent: 1 + type: Transform + - uid: 15781 + components: + - pos: -75.5,39.5 + parent: 1 + type: Transform +- proto: CrateEngineeringAMEJar + entities: + - uid: 9074 + components: + - pos: -76.5,22.5 + parent: 1 + type: Transform + - uid: 10659 + components: + - pos: -69.5,23.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: CrateEngineeringAMEShielding + entities: + - uid: 10657 + components: + - pos: -71.5,23.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10658 + components: + - pos: -70.5,23.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: CrateEngineeringCableBulk + entities: + - uid: 10145 + components: + - pos: -69.5,25.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 10723 + components: + - pos: -63.5,26.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: CrateFilledSpawner + entities: + - uid: 1469 + components: + - pos: -44.5,17.5 + parent: 1 + type: Transform + - uid: 3222 + components: + - pos: -7.5,12.5 + parent: 1 + type: Transform + - uid: 3629 + components: + - pos: -28.5,40.5 + parent: 1 + type: Transform + - uid: 5556 + components: + - pos: -42.5,17.5 + parent: 1 + type: Transform + - uid: 15652 + components: + - pos: -43.5,-10.5 + parent: 1 + type: Transform + - uid: 15653 + components: + - pos: -34.5,-5.5 + parent: 1 + type: Transform + - uid: 15657 + components: + - pos: -26.5,-8.5 + parent: 1 + type: Transform + - uid: 15660 + components: + - pos: 22.5,32.5 + parent: 1 + type: Transform +- proto: CrateFreezer + entities: + - uid: 2303 + components: + - pos: -28.5,44.5 + parent: 1 + type: Transform + - uid: 4236 + components: + - pos: -27.5,44.5 + parent: 1 + type: Transform +- proto: CrateFunATV + entities: + - uid: 1421 + components: + - pos: -24.5,-12.5 + parent: 1 + type: Transform +- proto: CrateMaterialGlass + entities: + - uid: 4734 + components: + - pos: 12.5,-19.5 + parent: 1 + type: Transform + - uid: 9981 + components: + - pos: -82.5,19.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 15895 + components: + - pos: 12.5,-18.5 + parent: 1 + type: Transform +- proto: CrateMaterialSteel + entities: + - uid: 9980 + components: + - pos: -82.5,20.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 15557 + components: + - pos: 10.5,-20.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 220.53748 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 15558 + components: + - pos: 9.5,-20.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 220.53748 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: CrateMindShieldImplants + entities: + - uid: 8648 + components: + - pos: -43.5,63.5 + parent: 1 + type: Transform +- proto: CrateNPCCow + entities: + - uid: 6919 + components: + - pos: -34.5,42.5 + parent: 1 + type: Transform + - air: + volume: 800 + immutable: False + temperature: 293.1499 + moles: + - 11.733055 + - 44.138634 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: CrateScience + entities: + - uid: 7398 + components: + - pos: 11.5,50.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: CrateServiceJanitorialSupplies + entities: + - uid: 7074 + components: + - pos: -53.5,35.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 7565 + - 7136 + - 7134 + - 7133 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer +- proto: CrateTrashCart + entities: + - uid: 1405 + components: + - pos: 0.5,31.5 + parent: 1 + type: Transform + - uid: 2302 + components: + - pos: -39.5,35.5 + parent: 1 + type: Transform + - uid: 2637 + components: + - pos: -20.5,53.5 + parent: 1 + type: Transform + - uid: 4072 + components: + - pos: -34.5,7.5 + parent: 1 + type: Transform + - uid: 4073 + components: + - pos: -61.5,31.5 + parent: 1 + type: Transform +- proto: CrateTrashCartJani + entities: + - uid: 5642 + components: + - pos: -50.5,35.5 + parent: 1 + type: Transform +- proto: CrayonMime + entities: + - uid: 4216 + components: + - pos: -40.465607,23.673563 + parent: 1 + type: Transform +- proto: Crematorium + entities: + - uid: 1828 + components: + - pos: 20.5,2.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: CrewMonitoringServer + entities: + - uid: 1065 + components: + - pos: -1.5,17.5 + parent: 1 + type: Transform +- proto: CrewMonitoringServerMachineCircuitboard + entities: + - uid: 14167 + components: + - pos: -49.521305,24.4048 + parent: 1 + type: Transform +- proto: Crowbar + entities: + - uid: 375 + components: + - pos: 2.5126948,-11.447319 + parent: 1 + type: Transform + - uid: 2376 + components: + - pos: 4.494688,39.490654 + parent: 1 + type: Transform + - uid: 5649 + components: + - pos: -24.42766,29.496252 + parent: 1 + type: Transform +- proto: CryoPod + entities: + - uid: 1333 + components: + - pos: 9.5,36.5 + parent: 1 + type: Transform +- proto: Defibrillator + entities: + - uid: 15776 + components: + - pos: 4.440308,37.660927 + parent: 1 + type: Transform +- proto: DefibrillatorCabinetFilled + entities: + - uid: 1962 + components: + - rot: 3.141592653589793 rad + pos: 7.5,27.5 + parent: 1 + type: Transform + - uid: 2373 + components: + - rot: 3.141592653589793 rad + pos: 10.5,21.5 + parent: 1 + type: Transform + - uid: 2374 + components: + - pos: -4.5,35.5 + parent: 1 + type: Transform + - uid: 2375 + components: + - rot: 3.141592653589793 rad + pos: 7.5,32.5 + parent: 1 + type: Transform + - uid: 5011 + components: + - pos: 4.5,7.5 + parent: 1 + type: Transform + - uid: 5013 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,19.5 + parent: 1 + type: Transform + - uid: 5014 + components: + - rot: 3.141592653589793 rad + pos: -49.5,30.5 + parent: 1 + type: Transform + - uid: 5054 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,16.5 + parent: 1 + type: Transform + - uid: 15779 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,-8.5 + parent: 1 + type: Transform +- proto: DeployableBarrier + entities: + - uid: 7962 + components: + - pos: -65.5,52.5 + parent: 1 + type: Transform + - uid: 7972 + components: + - pos: -65.5,53.5 + parent: 1 + type: Transform + - uid: 8019 + components: + - pos: -64.5,53.5 + parent: 1 + type: Transform + - uid: 8020 + components: + - pos: -64.5,52.5 + parent: 1 + type: Transform +- proto: DeskBell + entities: + - uid: 4988 + components: + - pos: -47.244946,56.398804 + parent: 1 + type: Transform + - uid: 4989 + components: + - pos: -45.550537,43.981125 + parent: 1 + type: Transform + - uid: 4990 + components: + - pos: -39.378662,43.49675 + parent: 1 + type: Transform + - uid: 4991 + components: + - pos: -36.738037,41.679382 + parent: 1 + type: Transform + - uid: 4992 + components: + - pos: -33.70732,38.156784 + parent: 1 + type: Transform + - uid: 4993 + components: + - pos: -24.25037,9.298397 + parent: 1 + type: Transform + - uid: 4994 + components: + - pos: -36.891582,2.4105499 + parent: 1 + type: Transform + - uid: 4995 + components: + - pos: -7.7214417,3.4652395 + parent: 1 + type: Transform + - uid: 4997 + components: + - pos: -10.2346735,11.798739 + parent: 1 + type: Transform + - uid: 4998 + components: + - pos: -0.23595914,28.693384 + parent: 1 + type: Transform + - uid: 4999 + components: + - pos: -1.0953342,32.52913 + parent: 1 + type: Transform + - uid: 5000 + components: + - pos: -19.786932,36.45546 + parent: 1 + type: Transform + - uid: 5001 + components: + - pos: -54.116062,17.501276 + parent: 1 + type: Transform + - uid: 5003 + components: + - pos: -0.74886024,7.6462955 + parent: 1 + type: Transform +- proto: DiseaseDiagnoser + entities: + - uid: 2362 + components: + - pos: 11.5,16.5 + parent: 1 + type: Transform +- proto: DisposalBend + entities: + - uid: 8668 + components: + - rot: 3.141592653589793 rad + pos: -50.5,55.5 + parent: 1 + type: Transform + - uid: 8669 + components: + - pos: -48.5,55.5 + parent: 1 + type: Transform + - uid: 8670 + components: + - pos: -50.5,65.5 + parent: 1 + type: Transform + - uid: 12920 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,23.5 + parent: 1 + type: Transform + - uid: 12921 + components: + - rot: 3.141592653589793 rad + pos: 3.5,14.5 + parent: 1 + type: Transform + - uid: 12946 + components: + - pos: 11.5,19.5 + parent: 1 + type: Transform + - uid: 12947 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,29.5 + parent: 1 + type: Transform + - uid: 13154 + components: + - rot: 3.141592653589793 rad + pos: -18.5,-2.5 + parent: 1 + type: Transform + - uid: 13155 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,-2.5 + parent: 1 + type: Transform + - uid: 13244 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-10.5 + parent: 1 + type: Transform + - uid: 13271 + components: + - rot: 3.141592653589793 rad + pos: -56.5,32.5 + parent: 1 + type: Transform + - uid: 13284 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,15.5 + parent: 1 + type: Transform + - uid: 13324 + components: + - rot: 3.141592653589793 rad + pos: -2.5,29.5 + parent: 1 + type: Transform + - uid: 13325 + components: + - pos: -2.5,30.5 + parent: 1 + type: Transform + - uid: 13388 + components: + - pos: -3.5,31.5 + parent: 1 + type: Transform + - uid: 13389 + components: + - rot: 3.141592653589793 rad + pos: -6.5,31.5 + parent: 1 + type: Transform + - uid: 13390 + components: + - pos: -6.5,32.5 + parent: 1 + type: Transform + - uid: 13397 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,30.5 + parent: 1 + type: Transform + - uid: 13446 + components: + - rot: 3.141592653589793 rad + pos: -26.5,28.5 + parent: 1 + type: Transform + - uid: 13447 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,28.5 + parent: 1 + type: Transform + - uid: 13473 + components: + - rot: 3.141592653589793 rad + pos: -20.5,42.5 + parent: 1 + type: Transform + - uid: 13474 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,45.5 + parent: 1 + type: Transform + - uid: 13495 + components: + - pos: -17.5,59.5 + parent: 1 + type: Transform + - uid: 13496 + components: + - rot: 3.141592653589793 rad + pos: -17.5,55.5 + parent: 1 + type: Transform + - uid: 13497 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,55.5 + parent: 1 + type: Transform + - uid: 13516 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,20.5 + parent: 1 + type: Transform + - uid: 13531 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,40.5 + parent: 1 + type: Transform + - uid: 13532 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,40.5 + parent: 1 + type: Transform + - uid: 13535 + components: + - pos: -37.5,42.5 + parent: 1 + type: Transform + - uid: 13538 + components: + - pos: -56.5,33.5 + parent: 1 + type: Transform + - uid: 13542 + components: + - rot: -1.5707963267948966 rad + pos: -44.5,46.5 + parent: 1 + type: Transform + - uid: 13555 + components: + - pos: -57.5,47.5 + parent: 1 + type: Transform + - uid: 13557 + components: + - rot: 3.141592653589793 rad + pos: -66.5,47.5 + parent: 1 + type: Transform + - uid: 13558 + components: + - pos: -66.5,50.5 + parent: 1 + type: Transform + - uid: 13559 + components: + - rot: 3.141592653589793 rad + pos: -67.5,50.5 + parent: 1 + type: Transform + - uid: 13561 + components: + - pos: -67.5,52.5 + parent: 1 + type: Transform + - uid: 13562 + components: + - pos: -70.5,54.5 + parent: 1 + type: Transform + - uid: 13563 + components: + - rot: 3.141592653589793 rad + pos: -70.5,52.5 + parent: 1 + type: Transform + - uid: 13592 + components: + - pos: -64.5,33.5 + parent: 1 + type: Transform + - uid: 13593 + components: + - rot: 3.141592653589793 rad + pos: -64.5,28.5 + parent: 1 + type: Transform + - uid: 13594 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,33.5 + parent: 1 + type: Transform +- proto: DisposalJunction + entities: + - uid: 8673 + components: + - pos: -50.5,58.5 + parent: 1 + type: Transform + - uid: 12951 + components: + - rot: 3.141592653589793 rad + pos: 3.5,19.5 + parent: 1 + type: Transform + - uid: 13156 + components: + - rot: 3.141592653589793 rad + pos: -7.5,2.5 + parent: 1 + type: Transform + - uid: 13187 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,5.5 + parent: 1 + type: Transform + - uid: 13204 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,5.5 + parent: 1 + type: Transform + - uid: 13245 + components: + - rot: 3.141592653589793 rad + pos: -57.5,5.5 + parent: 1 + type: Transform + - uid: 13283 + components: + - rot: 3.141592653589793 rad + pos: -57.5,46.5 + parent: 1 + type: Transform + - uid: 13287 + components: + - rot: 3.141592653589793 rad + pos: -57.5,15.5 + parent: 1 + type: Transform + - uid: 13296 + components: + - rot: 3.141592653589793 rad + pos: -57.5,37.5 + parent: 1 + type: Transform + - uid: 13326 + components: + - rot: 3.141592653589793 rad + pos: -3.5,30.5 + parent: 1 + type: Transform + - uid: 13425 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,32.5 + parent: 1 + type: Transform + - uid: 13455 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,32.5 + parent: 1 + type: Transform + - uid: 13476 + components: + - pos: -16.5,45.5 + parent: 1 + type: Transform + - uid: 13530 + components: + - pos: -38.5,39.5 + parent: 1 + type: Transform + - uid: 13539 + components: + - rot: 3.141592653589793 rad + pos: -57.5,33.5 + parent: 1 + type: Transform + - uid: 13545 + components: + - rot: -1.5707963267948966 rad + pos: -48.5,46.5 + parent: 1 + type: Transform +- proto: DisposalJunctionFlipped + entities: + - uid: 12953 + components: + - rot: 3.141592653589793 rad + pos: 3.5,23.5 + parent: 1 + type: Transform + - uid: 12954 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,29.5 + parent: 1 + type: Transform + - uid: 13108 + components: + - rot: -1.5707963267948966 rad + pos: 23.5,5.5 + parent: 1 + type: Transform + - uid: 13132 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,5.5 + parent: 1 + type: Transform + - uid: 13157 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,5.5 + parent: 1 + type: Transform + - uid: 13288 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,5.5 + parent: 1 + type: Transform + - uid: 13396 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,32.5 + parent: 1 + type: Transform + - uid: 13443 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,32.5 + parent: 1 + type: Transform + - uid: 13454 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,32.5 + parent: 1 + type: Transform + - uid: 13517 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,32.5 + parent: 1 + type: Transform + - uid: 13540 + components: + - rot: 3.141592653589793 rad + pos: -57.5,32.5 + parent: 1 + type: Transform + - uid: 13547 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,46.5 + parent: 1 + type: Transform +- proto: DisposalPipe + entities: + - uid: 582 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,-11.5 + parent: 1 + type: Transform + - uid: 1591 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-11.5 + parent: 1 + type: Transform + - uid: 1592 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-11.5 + parent: 1 + type: Transform + - uid: 1593 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,-11.5 + parent: 1 + type: Transform + - uid: 5318 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,5.5 + parent: 1 + type: Transform + - uid: 8653 + components: + - pos: -50.5,57.5 + parent: 1 + type: Transform + - uid: 8654 + components: + - pos: -50.5,56.5 + parent: 1 + type: Transform + - uid: 8655 + components: + - pos: -50.5,60.5 + parent: 1 + type: Transform + - uid: 8656 + components: + - pos: -50.5,61.5 + parent: 1 + type: Transform + - uid: 8657 + components: + - pos: -50.5,62.5 + parent: 1 + type: Transform + - uid: 8658 + components: + - pos: -50.5,63.5 + parent: 1 + type: Transform + - uid: 8659 + components: + - pos: -50.5,64.5 + parent: 1 + type: Transform + - uid: 8660 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,55.5 + parent: 1 + type: Transform + - uid: 8661 + components: + - rot: 3.141592653589793 rad + pos: -48.5,54.5 + parent: 1 + type: Transform + - uid: 8662 + components: + - rot: 3.141592653589793 rad + pos: -48.5,53.5 + parent: 1 + type: Transform + - uid: 8663 + components: + - rot: 3.141592653589793 rad + pos: -48.5,52.5 + parent: 1 + type: Transform + - uid: 8664 + components: + - rot: 3.141592653589793 rad + pos: -48.5,51.5 + parent: 1 + type: Transform + - uid: 8665 + components: + - rot: 3.141592653589793 rad + pos: -48.5,50.5 + parent: 1 + type: Transform + - uid: 8666 + components: + - rot: 3.141592653589793 rad + pos: -48.5,49.5 + parent: 1 + type: Transform + - uid: 8667 + components: + - rot: 3.141592653589793 rad + pos: -48.5,48.5 + parent: 1 + type: Transform + - uid: 11148 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,46.5 + parent: 1 + type: Transform + - uid: 12922 + components: + - rot: 3.141592653589793 rad + pos: 3.5,15.5 + parent: 1 + type: Transform + - uid: 12923 + components: + - rot: 3.141592653589793 rad + pos: 3.5,16.5 + parent: 1 + type: Transform + - uid: 12924 + components: + - rot: 3.141592653589793 rad + pos: 3.5,17.5 + parent: 1 + type: Transform + - uid: 12925 + components: + - rot: 3.141592653589793 rad + pos: 3.5,18.5 + parent: 1 + type: Transform + - uid: 12926 + components: + - rot: 3.141592653589793 rad + pos: 3.5,20.5 + parent: 1 + type: Transform + - uid: 12927 + components: + - rot: 3.141592653589793 rad + pos: 3.5,21.5 + parent: 1 + type: Transform + - uid: 12928 + components: + - rot: 3.141592653589793 rad + pos: 3.5,22.5 + parent: 1 + type: Transform + - uid: 12929 + components: + - rot: 3.141592653589793 rad + pos: 3.5,24.5 + parent: 1 + type: Transform + - uid: 12930 + components: + - rot: 3.141592653589793 rad + pos: 3.5,25.5 + parent: 1 + type: Transform + - uid: 12931 + components: + - rot: 3.141592653589793 rad + pos: 3.5,26.5 + parent: 1 + type: Transform + - uid: 12932 + components: + - rot: 3.141592653589793 rad + pos: 3.5,27.5 + parent: 1 + type: Transform + - uid: 12933 + components: + - rot: 3.141592653589793 rad + pos: 3.5,28.5 + parent: 1 + type: Transform + - uid: 12934 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,29.5 + parent: 1 + type: Transform + - uid: 12935 + components: + - pos: 11.5,15.5 + parent: 1 + type: Transform + - uid: 12936 + components: + - pos: 11.5,16.5 + parent: 1 + type: Transform + - uid: 12937 + components: + - pos: 11.5,17.5 + parent: 1 + type: Transform + - uid: 12938 + components: + - pos: 11.5,18.5 + parent: 1 + type: Transform + - uid: 12939 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,19.5 + parent: 1 + type: Transform + - uid: 12940 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,19.5 + parent: 1 + type: Transform + - uid: 12941 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,19.5 + parent: 1 + type: Transform + - uid: 12942 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,19.5 + parent: 1 + type: Transform + - uid: 12943 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,19.5 + parent: 1 + type: Transform + - uid: 12944 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,19.5 + parent: 1 + type: Transform + - uid: 12945 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,19.5 + parent: 1 + type: Transform + - uid: 12948 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,29.5 + parent: 1 + type: Transform + - uid: 12949 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,23.5 + parent: 1 + type: Transform + - uid: 12950 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,23.5 + parent: 1 + type: Transform + - uid: 13109 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,5.5 + parent: 1 + type: Transform + - uid: 13110 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,5.5 + parent: 1 + type: Transform + - uid: 13111 + components: + - rot: -1.5707963267948966 rad + pos: 25.5,5.5 + parent: 1 + type: Transform + - uid: 13112 + components: + - rot: -1.5707963267948966 rad + pos: 24.5,5.5 + parent: 1 + type: Transform + - uid: 13113 + components: + - rot: -1.5707963267948966 rad + pos: 22.5,5.5 + parent: 1 + type: Transform + - uid: 13114 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,5.5 + parent: 1 + type: Transform + - uid: 13115 + components: + - rot: -1.5707963267948966 rad + pos: 20.5,5.5 + parent: 1 + type: Transform + - uid: 13116 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,5.5 + parent: 1 + type: Transform + - uid: 13117 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,5.5 + parent: 1 + type: Transform + - uid: 13118 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,5.5 + parent: 1 + type: Transform + - uid: 13119 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,5.5 + parent: 1 + type: Transform + - uid: 13120 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,5.5 + parent: 1 + type: Transform + - uid: 13121 + components: + - rot: -1.5707963267948966 rad + pos: 14.5,5.5 + parent: 1 + type: Transform + - uid: 13122 + components: + - rot: -1.5707963267948966 rad + pos: 13.5,5.5 + parent: 1 + type: Transform + - uid: 13123 + components: + - rot: -1.5707963267948966 rad + pos: 12.5,5.5 + parent: 1 + type: Transform + - uid: 13124 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-2.5 + parent: 1 + type: Transform + - uid: 13125 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-1.5 + parent: 1 + type: Transform + - uid: 13126 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-0.5 + parent: 1 + type: Transform + - uid: 13127 + components: + - rot: 3.141592653589793 rad + pos: 11.5,0.5 + parent: 1 + type: Transform + - uid: 13128 + components: + - rot: 3.141592653589793 rad + pos: 11.5,1.5 + parent: 1 + type: Transform + - uid: 13129 + components: + - rot: 3.141592653589793 rad + pos: 11.5,2.5 + parent: 1 + type: Transform + - uid: 13130 + components: + - rot: 3.141592653589793 rad + pos: 11.5,3.5 + parent: 1 + type: Transform + - uid: 13131 + components: + - rot: 3.141592653589793 rad + pos: 11.5,4.5 + parent: 1 + type: Transform + - uid: 13134 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,5.5 + parent: 1 + type: Transform + - uid: 13135 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,5.5 + parent: 1 + type: Transform + - uid: 13136 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,5.5 + parent: 1 + type: Transform + - uid: 13137 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,5.5 + parent: 1 + type: Transform + - uid: 13138 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,5.5 + parent: 1 + type: Transform + - uid: 13139 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,5.5 + parent: 1 + type: Transform + - uid: 13140 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,5.5 + parent: 1 + type: Transform + - uid: 13141 + components: + - rot: 1.5707963267948966 rad + pos: 3.5,5.5 + parent: 1 + type: Transform + - uid: 13142 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,5.5 + parent: 1 + type: Transform + - uid: 13143 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,5.5 + parent: 1 + type: Transform + - uid: 13144 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,5.5 + parent: 1 + type: Transform + - uid: 13145 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,5.5 + parent: 1 + type: Transform + - uid: 13146 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,5.5 + parent: 1 + type: Transform + - uid: 13147 + components: + - rot: 1.5707963267948966 rad + pos: -2.5,5.5 + parent: 1 + type: Transform + - uid: 13148 + components: + - rot: 1.5707963267948966 rad + pos: -3.5,5.5 + parent: 1 + type: Transform + - uid: 13149 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,5.5 + parent: 1 + type: Transform + - uid: 13150 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,5.5 + parent: 1 + type: Transform + - uid: 13151 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,5.5 + parent: 1 + type: Transform + - uid: 13158 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,-2.5 + parent: 1 + type: Transform + - uid: 13159 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,-2.5 + parent: 1 + type: Transform + - uid: 13160 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,-2.5 + parent: 1 + type: Transform + - uid: 13161 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-2.5 + parent: 1 + type: Transform + - uid: 13162 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,-2.5 + parent: 1 + type: Transform + - uid: 13163 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,-2.5 + parent: 1 + type: Transform + - uid: 13164 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,-2.5 + parent: 1 + type: Transform + - uid: 13165 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,-2.5 + parent: 1 + type: Transform + - uid: 13166 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,-2.5 + parent: 1 + type: Transform + - uid: 13167 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,-2.5 + parent: 1 + type: Transform + - uid: 13168 + components: + - rot: 3.141592653589793 rad + pos: -7.5,-1.5 + parent: 1 + type: Transform + - uid: 13169 + components: + - rot: 3.141592653589793 rad + pos: -7.5,-0.5 + parent: 1 + type: Transform + - uid: 13170 + components: + - rot: 3.141592653589793 rad + pos: -7.5,0.5 + parent: 1 + type: Transform + - uid: 13171 + components: + - rot: 3.141592653589793 rad + pos: -7.5,1.5 + parent: 1 + type: Transform + - uid: 13172 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,2.5 + parent: 1 + type: Transform + - uid: 13173 + components: + - pos: -7.5,3.5 + parent: 1 + type: Transform + - uid: 13174 + components: + - pos: -7.5,4.5 + parent: 1 + type: Transform + - uid: 13175 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,5.5 + parent: 1 + type: Transform + - uid: 13176 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,5.5 + parent: 1 + type: Transform + - uid: 13177 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,5.5 + parent: 1 + type: Transform + - uid: 13178 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,5.5 + parent: 1 + type: Transform + - uid: 13179 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,5.5 + parent: 1 + type: Transform + - uid: 13180 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,5.5 + parent: 1 + type: Transform + - uid: 13181 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,5.5 + parent: 1 + type: Transform + - uid: 13182 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,5.5 + parent: 1 + type: Transform + - uid: 13183 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,5.5 + parent: 1 + type: Transform + - uid: 13184 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,5.5 + parent: 1 + type: Transform + - uid: 13185 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,5.5 + parent: 1 + type: Transform + - uid: 13186 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,5.5 + parent: 1 + type: Transform + - uid: 13189 + components: + - pos: -20.5,6.5 + parent: 1 + type: Transform + - uid: 13190 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,5.5 + parent: 1 + type: Transform + - uid: 13191 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,5.5 + parent: 1 + type: Transform + - uid: 13192 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,5.5 + parent: 1 + type: Transform + - uid: 13193 + components: + - rot: -1.5707963267948966 rad + pos: -24.5,5.5 + parent: 1 + type: Transform + - uid: 13194 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,5.5 + parent: 1 + type: Transform + - uid: 13195 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,5.5 + parent: 1 + type: Transform + - uid: 13196 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,5.5 + parent: 1 + type: Transform + - uid: 13197 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,5.5 + parent: 1 + type: Transform + - uid: 13198 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,5.5 + parent: 1 + type: Transform + - uid: 13199 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,5.5 + parent: 1 + type: Transform + - uid: 13200 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,5.5 + parent: 1 + type: Transform + - uid: 13201 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,5.5 + parent: 1 + type: Transform + - uid: 13202 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,5.5 + parent: 1 + type: Transform + - uid: 13203 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,5.5 + parent: 1 + type: Transform + - uid: 13205 + components: + - rot: 3.141592653589793 rad + pos: -35.5,6.5 + parent: 1 + type: Transform + - uid: 13207 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,5.5 + parent: 1 + type: Transform + - uid: 13208 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,5.5 + parent: 1 + type: Transform + - uid: 13209 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,5.5 + parent: 1 + type: Transform + - uid: 13210 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,5.5 + parent: 1 + type: Transform + - uid: 13211 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,5.5 + parent: 1 + type: Transform + - uid: 13212 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,5.5 + parent: 1 + type: Transform + - uid: 13213 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,5.5 + parent: 1 + type: Transform + - uid: 13214 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,5.5 + parent: 1 + type: Transform + - uid: 13215 + components: + - rot: -1.5707963267948966 rad + pos: -44.5,5.5 + parent: 1 + type: Transform + - uid: 13216 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,5.5 + parent: 1 + type: Transform + - uid: 13217 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,5.5 + parent: 1 + type: Transform + - uid: 13219 + components: + - rot: -1.5707963267948966 rad + pos: -48.5,5.5 + parent: 1 + type: Transform + - uid: 13220 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,5.5 + parent: 1 + type: Transform + - uid: 13222 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,5.5 + parent: 1 + type: Transform + - uid: 13223 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,5.5 + parent: 1 + type: Transform + - uid: 13224 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,5.5 + parent: 1 + type: Transform + - uid: 13225 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,5.5 + parent: 1 + type: Transform + - uid: 13226 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,5.5 + parent: 1 + type: Transform + - uid: 13227 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,5.5 + parent: 1 + type: Transform + - uid: 13228 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-9.5 + parent: 1 + type: Transform + - uid: 13229 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-8.5 + parent: 1 + type: Transform + - uid: 13230 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-7.5 + parent: 1 + type: Transform + - uid: 13231 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-6.5 + parent: 1 + type: Transform + - uid: 13232 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-5.5 + parent: 1 + type: Transform + - uid: 13233 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-4.5 + parent: 1 + type: Transform + - uid: 13234 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-3.5 + parent: 1 + type: Transform + - uid: 13235 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-2.5 + parent: 1 + type: Transform + - uid: 13236 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-1.5 + parent: 1 + type: Transform + - uid: 13237 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-0.5 + parent: 1 + type: Transform + - uid: 13238 + components: + - rot: 3.141592653589793 rad + pos: -57.5,0.5 + parent: 1 + type: Transform + - uid: 13239 + components: + - rot: 3.141592653589793 rad + pos: -57.5,1.5 + parent: 1 + type: Transform + - uid: 13240 + components: + - rot: 3.141592653589793 rad + pos: -57.5,2.5 + parent: 1 + type: Transform + - uid: 13241 + components: + - rot: 3.141592653589793 rad + pos: -57.5,3.5 + parent: 1 + type: Transform + - uid: 13242 + components: + - rot: 3.141592653589793 rad + pos: -57.5,4.5 + parent: 1 + type: Transform + - uid: 13246 + components: + - rot: 3.141592653589793 rad + pos: -57.5,6.5 + parent: 1 + type: Transform + - uid: 13247 + components: + - rot: 3.141592653589793 rad + pos: -57.5,7.5 + parent: 1 + type: Transform + - uid: 13248 + components: + - rot: 3.141592653589793 rad + pos: -57.5,8.5 + parent: 1 + type: Transform + - uid: 13249 + components: + - rot: 3.141592653589793 rad + pos: -57.5,9.5 + parent: 1 + type: Transform + - uid: 13250 + components: + - rot: 3.141592653589793 rad + pos: -57.5,10.5 + parent: 1 + type: Transform + - uid: 13251 + components: + - rot: 3.141592653589793 rad + pos: -57.5,11.5 + parent: 1 + type: Transform + - uid: 13252 + components: + - rot: 3.141592653589793 rad + pos: -57.5,12.5 + parent: 1 + type: Transform + - uid: 13253 + components: + - rot: 3.141592653589793 rad + pos: -57.5,13.5 + parent: 1 + type: Transform + - uid: 13254 + components: + - rot: 3.141592653589793 rad + pos: -57.5,14.5 + parent: 1 + type: Transform + - uid: 13255 + components: + - rot: 3.141592653589793 rad + pos: -57.5,16.5 + parent: 1 + type: Transform + - uid: 13256 + components: + - rot: 3.141592653589793 rad + pos: -57.5,17.5 + parent: 1 + type: Transform + - uid: 13257 + components: + - rot: 3.141592653589793 rad + pos: -57.5,18.5 + parent: 1 + type: Transform + - uid: 13258 + components: + - rot: 3.141592653589793 rad + pos: -57.5,19.5 + parent: 1 + type: Transform + - uid: 13259 + components: + - rot: 3.141592653589793 rad + pos: -57.5,20.5 + parent: 1 + type: Transform + - uid: 13260 + components: + - rot: 3.141592653589793 rad + pos: -57.5,21.5 + parent: 1 + type: Transform + - uid: 13261 + components: + - rot: 3.141592653589793 rad + pos: -57.5,22.5 + parent: 1 + type: Transform + - uid: 13262 + components: + - rot: 3.141592653589793 rad + pos: -57.5,23.5 + parent: 1 + type: Transform + - uid: 13263 + components: + - rot: 3.141592653589793 rad + pos: -57.5,24.5 + parent: 1 + type: Transform + - uid: 13264 + components: + - rot: 3.141592653589793 rad + pos: -57.5,25.5 + parent: 1 + type: Transform + - uid: 13265 + components: + - rot: 3.141592653589793 rad + pos: -57.5,26.5 + parent: 1 + type: Transform + - uid: 13266 + components: + - rot: 3.141592653589793 rad + pos: -57.5,27.5 + parent: 1 + type: Transform + - uid: 13267 + components: + - rot: 3.141592653589793 rad + pos: -57.5,28.5 + parent: 1 + type: Transform + - uid: 13268 + components: + - rot: 3.141592653589793 rad + pos: -57.5,29.5 + parent: 1 + type: Transform + - uid: 13269 + components: + - rot: 3.141592653589793 rad + pos: -57.5,30.5 + parent: 1 + type: Transform + - uid: 13270 + components: + - rot: 3.141592653589793 rad + pos: -57.5,31.5 + parent: 1 + type: Transform + - uid: 13272 + components: + - rot: 3.141592653589793 rad + pos: -57.5,34.5 + parent: 1 + type: Transform + - uid: 13273 + components: + - rot: 3.141592653589793 rad + pos: -57.5,35.5 + parent: 1 + type: Transform + - uid: 13274 + components: + - rot: 3.141592653589793 rad + pos: -57.5,36.5 + parent: 1 + type: Transform + - uid: 13275 + components: + - rot: 3.141592653589793 rad + pos: -57.5,38.5 + parent: 1 + type: Transform + - uid: 13276 + components: + - rot: 3.141592653589793 rad + pos: -57.5,39.5 + parent: 1 + type: Transform + - uid: 13277 + components: + - rot: 3.141592653589793 rad + pos: -57.5,40.5 + parent: 1 + type: Transform + - uid: 13278 + components: + - rot: 3.141592653589793 rad + pos: -57.5,41.5 + parent: 1 + type: Transform + - uid: 13279 + components: + - rot: 3.141592653589793 rad + pos: -57.5,42.5 + parent: 1 + type: Transform + - uid: 13280 + components: + - rot: 3.141592653589793 rad + pos: -57.5,43.5 + parent: 1 + type: Transform + - uid: 13281 + components: + - rot: 3.141592653589793 rad + pos: -57.5,44.5 + parent: 1 + type: Transform + - uid: 13282 + components: + - rot: 3.141592653589793 rad + pos: -57.5,45.5 + parent: 1 + type: Transform + - uid: 13286 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,15.5 + parent: 1 + type: Transform + - uid: 13290 + components: + - rot: 3.141592653589793 rad + pos: -49.5,4.5 + parent: 1 + type: Transform + - uid: 13295 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,37.5 + parent: 1 + type: Transform + - uid: 13328 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,29.5 + parent: 1 + type: Transform + - uid: 13329 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,29.5 + parent: 1 + type: Transform + - uid: 13330 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,29.5 + parent: 1 + type: Transform + - uid: 13374 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,47.5 + parent: 1 + type: Transform + - uid: 13375 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,47.5 + parent: 1 + type: Transform + - uid: 13376 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,47.5 + parent: 1 + type: Transform + - uid: 13377 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,47.5 + parent: 1 + type: Transform + - uid: 13378 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,47.5 + parent: 1 + type: Transform + - uid: 13379 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,47.5 + parent: 1 + type: Transform + - uid: 13380 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,47.5 + parent: 1 + type: Transform + - uid: 13381 + components: + - pos: -66.5,48.5 + parent: 1 + type: Transform + - uid: 13382 + components: + - pos: -66.5,49.5 + parent: 1 + type: Transform + - uid: 13383 + components: + - rot: 3.141592653589793 rad + pos: -67.5,51.5 + parent: 1 + type: Transform + - uid: 13384 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,52.5 + parent: 1 + type: Transform + - uid: 13385 + components: + - rot: 1.5707963267948966 rad + pos: -69.5,52.5 + parent: 1 + type: Transform + - uid: 13386 + components: + - pos: -70.5,53.5 + parent: 1 + type: Transform + - uid: 13387 + components: + - rot: -1.5707963267948966 rad + pos: -71.5,54.5 + parent: 1 + type: Transform + - uid: 13391 + components: + - rot: -1.5707963267948966 rad + pos: -5.5,31.5 + parent: 1 + type: Transform + - uid: 13392 + components: + - rot: -1.5707963267948966 rad + pos: -4.5,31.5 + parent: 1 + type: Transform + - uid: 13393 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,32.5 + parent: 1 + type: Transform + - uid: 13394 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,30.5 + parent: 1 + type: Transform + - uid: 13395 + components: + - rot: 3.141592653589793 rad + pos: -8.5,31.5 + parent: 1 + type: Transform + - uid: 13399 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,32.5 + parent: 1 + type: Transform + - uid: 13400 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,32.5 + parent: 1 + type: Transform + - uid: 13401 + components: + - rot: 1.5707963267948966 rad + pos: -11.5,32.5 + parent: 1 + type: Transform + - uid: 13402 + components: + - rot: 1.5707963267948966 rad + pos: -12.5,32.5 + parent: 1 + type: Transform + - uid: 13403 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,32.5 + parent: 1 + type: Transform + - uid: 13404 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,32.5 + parent: 1 + type: Transform + - uid: 13405 + components: + - rot: 1.5707963267948966 rad + pos: -15.5,32.5 + parent: 1 + type: Transform + - uid: 13406 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,32.5 + parent: 1 + type: Transform + - uid: 13407 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,32.5 + parent: 1 + type: Transform + - uid: 13408 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,32.5 + parent: 1 + type: Transform + - uid: 13409 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,32.5 + parent: 1 + type: Transform + - uid: 13410 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,32.5 + parent: 1 + type: Transform + - uid: 13411 + components: + - rot: 1.5707963267948966 rad + pos: -23.5,32.5 + parent: 1 + type: Transform + - uid: 13412 + components: + - rot: 1.5707963267948966 rad + pos: -24.5,32.5 + parent: 1 + type: Transform + - uid: 13413 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,32.5 + parent: 1 + type: Transform + - uid: 13414 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,32.5 + parent: 1 + type: Transform + - uid: 13415 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,32.5 + parent: 1 + type: Transform + - uid: 13416 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,32.5 + parent: 1 + type: Transform + - uid: 13417 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,32.5 + parent: 1 + type: Transform + - uid: 13418 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,32.5 + parent: 1 + type: Transform + - uid: 13419 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,32.5 + parent: 1 + type: Transform + - uid: 13420 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,32.5 + parent: 1 + type: Transform + - uid: 13421 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,32.5 + parent: 1 + type: Transform + - uid: 13422 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,32.5 + parent: 1 + type: Transform + - uid: 13423 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,32.5 + parent: 1 + type: Transform + - uid: 13424 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,32.5 + parent: 1 + type: Transform + - uid: 13426 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,32.5 + parent: 1 + type: Transform + - uid: 13427 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,32.5 + parent: 1 + type: Transform + - uid: 13428 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,32.5 + parent: 1 + type: Transform + - uid: 13429 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,32.5 + parent: 1 + type: Transform + - uid: 13430 + components: + - rot: 1.5707963267948966 rad + pos: -43.5,32.5 + parent: 1 + type: Transform + - uid: 13431 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,32.5 + parent: 1 + type: Transform + - uid: 13432 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,32.5 + parent: 1 + type: Transform + - uid: 13433 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,32.5 + parent: 1 + type: Transform + - uid: 13434 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,32.5 + parent: 1 + type: Transform + - uid: 13435 + components: + - rot: 1.5707963267948966 rad + pos: -49.5,32.5 + parent: 1 + type: Transform + - uid: 13436 + components: + - rot: 1.5707963267948966 rad + pos: -50.5,32.5 + parent: 1 + type: Transform + - uid: 13437 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,32.5 + parent: 1 + type: Transform + - uid: 13438 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,32.5 + parent: 1 + type: Transform + - uid: 13439 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,32.5 + parent: 1 + type: Transform + - uid: 13440 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,32.5 + parent: 1 + type: Transform + - uid: 13441 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,32.5 + parent: 1 + type: Transform + - uid: 13442 + components: + - pos: -45.5,31.5 + parent: 1 + type: Transform + - uid: 13448 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,28.5 + parent: 1 + type: Transform + - uid: 13449 + components: + - rot: -1.5707963267948966 rad + pos: -24.5,28.5 + parent: 1 + type: Transform + - uid: 13450 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,28.5 + parent: 1 + type: Transform + - uid: 13451 + components: + - rot: 3.141592653589793 rad + pos: -22.5,29.5 + parent: 1 + type: Transform + - uid: 13452 + components: + - rot: 3.141592653589793 rad + pos: -22.5,31.5 + parent: 1 + type: Transform + - uid: 13453 + components: + - rot: 3.141592653589793 rad + pos: -22.5,30.5 + parent: 1 + type: Transform + - uid: 13456 + components: + - rot: 3.141592653589793 rad + pos: -16.5,33.5 + parent: 1 + type: Transform + - uid: 13457 + components: + - rot: 3.141592653589793 rad + pos: -16.5,34.5 + parent: 1 + type: Transform + - uid: 13458 + components: + - rot: 3.141592653589793 rad + pos: -16.5,35.5 + parent: 1 + type: Transform + - uid: 13459 + components: + - rot: 3.141592653589793 rad + pos: -16.5,36.5 + parent: 1 + type: Transform + - uid: 13460 + components: + - rot: 3.141592653589793 rad + pos: -16.5,37.5 + parent: 1 + type: Transform + - uid: 13461 + components: + - rot: 3.141592653589793 rad + pos: -16.5,38.5 + parent: 1 + type: Transform + - uid: 13462 + components: + - rot: 3.141592653589793 rad + pos: -16.5,39.5 + parent: 1 + type: Transform + - uid: 13463 + components: + - rot: 3.141592653589793 rad + pos: -16.5,40.5 + parent: 1 + type: Transform + - uid: 13464 + components: + - rot: 3.141592653589793 rad + pos: -16.5,41.5 + parent: 1 + type: Transform + - uid: 13465 + components: + - rot: 3.141592653589793 rad + pos: -16.5,42.5 + parent: 1 + type: Transform + - uid: 13466 + components: + - rot: 3.141592653589793 rad + pos: -16.5,43.5 + parent: 1 + type: Transform + - uid: 13467 + components: + - rot: 3.141592653589793 rad + pos: -16.5,44.5 + parent: 1 + type: Transform + - uid: 13468 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,45.5 + parent: 1 + type: Transform + - uid: 13469 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,45.5 + parent: 1 + type: Transform + - uid: 13470 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,45.5 + parent: 1 + type: Transform + - uid: 13471 + components: + - pos: -20.5,44.5 + parent: 1 + type: Transform + - uid: 13472 + components: + - pos: -20.5,43.5 + parent: 1 + type: Transform + - uid: 13477 + components: + - pos: -16.5,46.5 + parent: 1 + type: Transform + - uid: 13478 + components: + - pos: -16.5,47.5 + parent: 1 + type: Transform + - uid: 13479 + components: + - pos: -16.5,48.5 + parent: 1 + type: Transform + - uid: 13480 + components: + - pos: -16.5,49.5 + parent: 1 + type: Transform + - uid: 13481 + components: + - pos: -16.5,50.5 + parent: 1 + type: Transform + - uid: 13482 + components: + - pos: -16.5,51.5 + parent: 1 + type: Transform + - uid: 13483 + components: + - pos: -16.5,52.5 + parent: 1 + type: Transform + - uid: 13484 + components: + - pos: -16.5,53.5 + parent: 1 + type: Transform + - uid: 13485 + components: + - pos: -16.5,54.5 + parent: 1 + type: Transform + - uid: 13486 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,55.5 + parent: 1 + type: Transform + - uid: 13487 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,55.5 + parent: 1 + type: Transform + - uid: 13488 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,55.5 + parent: 1 + type: Transform + - uid: 13489 + components: + - rot: 3.141592653589793 rad + pos: -12.5,56.5 + parent: 1 + type: Transform + - uid: 13490 + components: + - rot: 3.141592653589793 rad + pos: -17.5,56.5 + parent: 1 + type: Transform + - uid: 13491 + components: + - rot: 3.141592653589793 rad + pos: -17.5,57.5 + parent: 1 + type: Transform + - uid: 13492 + components: + - rot: 3.141592653589793 rad + pos: -17.5,58.5 + parent: 1 + type: Transform + - uid: 13493 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,59.5 + parent: 1 + type: Transform + - uid: 13494 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,59.5 + parent: 1 + type: Transform + - uid: 13504 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,20.5 + parent: 1 + type: Transform + - uid: 13505 + components: + - pos: -37.5,21.5 + parent: 1 + type: Transform + - uid: 13506 + components: + - pos: -37.5,22.5 + parent: 1 + type: Transform + - uid: 13507 + components: + - pos: -37.5,23.5 + parent: 1 + type: Transform + - uid: 13508 + components: + - pos: -37.5,24.5 + parent: 1 + type: Transform + - uid: 13509 + components: + - pos: -37.5,25.5 + parent: 1 + type: Transform + - uid: 13510 + components: + - pos: -37.5,26.5 + parent: 1 + type: Transform + - uid: 13511 + components: + - pos: -37.5,27.5 + parent: 1 + type: Transform + - uid: 13512 + components: + - pos: -37.5,28.5 + parent: 1 + type: Transform + - uid: 13513 + components: + - pos: -37.5,29.5 + parent: 1 + type: Transform + - uid: 13514 + components: + - pos: -37.5,30.5 + parent: 1 + type: Transform + - uid: 13515 + components: + - pos: -37.5,31.5 + parent: 1 + type: Transform + - uid: 13519 + components: + - rot: 1.5707963267948966 rad + pos: -43.5,39.5 + parent: 1 + type: Transform + - uid: 13520 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,39.5 + parent: 1 + type: Transform + - uid: 13521 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,39.5 + parent: 1 + type: Transform + - uid: 13522 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,39.5 + parent: 1 + type: Transform + - uid: 13523 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,39.5 + parent: 1 + type: Transform + - uid: 13524 + components: + - pos: -38.5,38.5 + parent: 1 + type: Transform + - uid: 13525 + components: + - pos: -38.5,37.5 + parent: 1 + type: Transform + - uid: 13526 + components: + - pos: -38.5,36.5 + parent: 1 + type: Transform + - uid: 13527 + components: + - pos: -38.5,35.5 + parent: 1 + type: Transform + - uid: 13528 + components: + - pos: -38.5,34.5 + parent: 1 + type: Transform + - uid: 13529 + components: + - pos: -38.5,33.5 + parent: 1 + type: Transform + - uid: 13537 + components: + - pos: -37.5,41.5 + parent: 1 + type: Transform + - uid: 13541 + components: + - rot: 3.141592653589793 rad + pos: -49.5,45.5 + parent: 1 + type: Transform + - uid: 13543 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,46.5 + parent: 1 + type: Transform + - uid: 13544 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,46.5 + parent: 1 + type: Transform + - uid: 13548 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,46.5 + parent: 1 + type: Transform + - uid: 13549 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,46.5 + parent: 1 + type: Transform + - uid: 13550 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,46.5 + parent: 1 + type: Transform + - uid: 13551 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,46.5 + parent: 1 + type: Transform + - uid: 13552 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,46.5 + parent: 1 + type: Transform + - uid: 13553 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,46.5 + parent: 1 + type: Transform + - uid: 13554 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,46.5 + parent: 1 + type: Transform + - uid: 13556 + components: + - rot: -1.5707963267948966 rad + pos: -72.5,54.5 + parent: 1 + type: Transform + - uid: 13560 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,47.5 + parent: 1 + type: Transform + - uid: 13564 + components: + - rot: 3.141592653589793 rad + pos: -73.5,20.5 + parent: 1 + type: Transform + - uid: 13565 + components: + - rot: 3.141592653589793 rad + pos: -73.5,21.5 + parent: 1 + type: Transform + - uid: 13566 + components: + - rot: 3.141592653589793 rad + pos: -73.5,22.5 + parent: 1 + type: Transform + - uid: 13567 + components: + - rot: 3.141592653589793 rad + pos: -73.5,23.5 + parent: 1 + type: Transform + - uid: 13568 + components: + - rot: 3.141592653589793 rad + pos: -73.5,24.5 + parent: 1 + type: Transform + - uid: 13569 + components: + - rot: 3.141592653589793 rad + pos: -73.5,25.5 + parent: 1 + type: Transform + - uid: 13570 + components: + - rot: 3.141592653589793 rad + pos: -73.5,26.5 + parent: 1 + type: Transform + - uid: 13571 + components: + - rot: 3.141592653589793 rad + pos: -73.5,27.5 + parent: 1 + type: Transform + - uid: 13572 + components: + - rot: 3.141592653589793 rad + pos: -73.5,28.5 + parent: 1 + type: Transform + - uid: 13573 + components: + - rot: 3.141592653589793 rad + pos: -73.5,29.5 + parent: 1 + type: Transform + - uid: 13574 + components: + - rot: 3.141592653589793 rad + pos: -73.5,30.5 + parent: 1 + type: Transform + - uid: 13575 + components: + - rot: 3.141592653589793 rad + pos: -73.5,31.5 + parent: 1 + type: Transform + - uid: 13576 + components: + - rot: 3.141592653589793 rad + pos: -73.5,32.5 + parent: 1 + type: Transform + - uid: 13577 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,33.5 + parent: 1 + type: Transform + - uid: 13578 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,33.5 + parent: 1 + type: Transform + - uid: 13579 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,33.5 + parent: 1 + type: Transform + - uid: 13580 + components: + - rot: 1.5707963267948966 rad + pos: -69.5,33.5 + parent: 1 + type: Transform + - uid: 13581 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,33.5 + parent: 1 + type: Transform + - uid: 13582 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,32.5 + parent: 1 + type: Transform + - uid: 13583 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,33.5 + parent: 1 + type: Transform + - uid: 13584 + components: + - rot: 1.5707963267948966 rad + pos: -66.5,33.5 + parent: 1 + type: Transform + - uid: 13585 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,33.5 + parent: 1 + type: Transform + - uid: 13586 + components: + - rot: -1.5707963267948966 rad + pos: -63.5,32.5 + parent: 1 + type: Transform + - uid: 13587 + components: + - rot: -1.5707963267948966 rad + pos: -62.5,32.5 + parent: 1 + type: Transform + - uid: 13588 + components: + - rot: -1.5707963267948966 rad + pos: -61.5,32.5 + parent: 1 + type: Transform + - uid: 13589 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,32.5 + parent: 1 + type: Transform + - uid: 13590 + components: + - rot: -1.5707963267948966 rad + pos: -59.5,32.5 + parent: 1 + type: Transform + - uid: 13595 + components: + - pos: -64.5,29.5 + parent: 1 + type: Transform + - uid: 13596 + components: + - pos: -64.5,30.5 + parent: 1 + type: Transform + - uid: 13597 + components: + - pos: -64.5,31.5 + parent: 1 + type: Transform + - uid: 13612 + components: + - rot: 3.141592653589793 rad + pos: -48.5,47.5 + parent: 1 + type: Transform + - uid: 15061 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,29.5 + parent: 1 + type: Transform + - uid: 15167 + components: + - rot: -1.5707963267948966 rad + pos: 12.5,50.5 + parent: 1 + type: Transform + - uid: 15168 + components: + - rot: -1.5707963267948966 rad + pos: 14.5,50.5 + parent: 1 + type: Transform + - uid: 15169 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,50.5 + parent: 1 + type: Transform + - uid: 15171 + components: + - rot: -1.5707963267948966 rad + pos: 13.5,50.5 + parent: 1 + type: Transform +- proto: DisposalTrunk + entities: + - uid: 589 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,-11.5 + parent: 1 + type: Transform + - uid: 8671 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,65.5 + parent: 1 + type: Transform + - uid: 8672 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,58.5 + parent: 1 + type: Transform + - uid: 12917 + components: + - pos: 5.5,30.5 + parent: 1 + type: Transform + - uid: 12918 + components: + - rot: 3.141592653589793 rad + pos: 11.5,14.5 + parent: 1 + type: Transform + - uid: 12919 + components: + - rot: 3.141592653589793 rad + pos: 0.5,22.5 + parent: 1 + type: Transform + - uid: 12952 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,14.5 + parent: 1 + type: Transform + - uid: 13106 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,5.5 + parent: 1 + type: Transform + - uid: 13107 + components: + - rot: 3.141592653589793 rad + pos: 23.5,4.5 + parent: 1 + type: Transform + - uid: 13133 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-3.5 + parent: 1 + type: Transform + - uid: 13152 + components: + - rot: -1.5707963267948966 rad + pos: -5.5,2.5 + parent: 1 + type: Transform + - uid: 13153 + components: + - pos: -18.5,-1.5 + parent: 1 + type: Transform + - uid: 13188 + components: + - pos: -20.5,7.5 + parent: 1 + type: Transform + - uid: 13206 + components: + - pos: -35.5,7.5 + parent: 1 + type: Transform + - uid: 13243 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,-10.5 + parent: 1 + type: Transform + - uid: 13285 + components: + - pos: -55.5,16.5 + parent: 1 + type: Transform + - uid: 13289 + components: + - rot: 3.141592653589793 rad + pos: -49.5,3.5 + parent: 1 + type: Transform + - uid: 13294 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,37.5 + parent: 1 + type: Transform + - uid: 13327 + components: + - rot: 3.141592653589793 rad + pos: -3.5,29.5 + parent: 1 + type: Transform + - uid: 13398 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,30.5 + parent: 1 + type: Transform + - uid: 13444 + components: + - rot: 3.141592653589793 rad + pos: -45.5,30.5 + parent: 1 + type: Transform + - uid: 13445 + components: + - pos: -26.5,29.5 + parent: 1 + type: Transform + - uid: 13475 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,42.5 + parent: 1 + type: Transform + - uid: 13498 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,59.5 + parent: 1 + type: Transform + - uid: 13499 + components: + - pos: -12.5,57.5 + parent: 1 + type: Transform + - uid: 13503 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,20.5 + parent: 1 + type: Transform + - uid: 13518 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,39.5 + parent: 1 + type: Transform + - uid: 13533 + components: + - pos: -44.5,47.5 + parent: 1 + type: Transform + - uid: 13534 + components: + - rot: 3.141592653589793 rad + pos: -49.5,44.5 + parent: 1 + type: Transform + - uid: 13536 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,42.5 + parent: 1 + type: Transform + - uid: 13598 + components: + - rot: -1.5707963267948966 rad + pos: -63.5,28.5 + parent: 1 + type: Transform + - uid: 13599 + components: + - rot: 3.141592653589793 rad + pos: -73.5,19.5 + parent: 1 + type: Transform + - uid: 15039 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,-11.5 + parent: 1 + type: Transform + - uid: 15170 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,50.5 + parent: 1 + type: Transform +- proto: DisposalUnit + entities: + - uid: 249 + components: + - pos: -5.5,2.5 + parent: 1 + type: Transform + - uid: 337 + components: + - pos: -18.5,-1.5 + parent: 1 + type: Transform + - uid: 1090 + components: + - pos: 11.5,-3.5 + parent: 1 + type: Transform + - uid: 1091 + components: + - pos: 5.5,3.5 + parent: 1 + type: Transform + - uid: 1155 + components: + - pos: 4.5,14.5 + parent: 1 + type: Transform + - uid: 1944 + components: + - pos: 0.5,22.5 + parent: 1 + type: Transform + - uid: 2033 + components: + - pos: 5.5,30.5 + parent: 1 + type: Transform + - uid: 2118 + components: + - pos: -3.5,29.5 + parent: 1 + type: Transform + - uid: 2136 + components: + - pos: 28.5,5.5 + parent: 1 + type: Transform + - uid: 2137 + components: + - pos: 23.5,4.5 + parent: 1 + type: Transform + - uid: 2351 + components: + - pos: 11.5,14.5 + parent: 1 + type: Transform + - uid: 3653 + components: + - pos: -41.5,-6.5 + parent: 1 + type: Transform + - uid: 3654 + components: + - pos: -46.5,-1.5 + parent: 1 + type: Transform + - uid: 4166 + components: + - pos: -20.5,7.5 + parent: 1 + type: Transform + - uid: 4168 + components: + - pos: -35.5,7.5 + parent: 1 + type: Transform + - uid: 5264 + components: + - pos: -55.5,16.5 + parent: 1 + type: Transform + - uid: 5525 + components: + - pos: -56.5,-10.5 + parent: 1 + type: Transform + - uid: 5526 + components: + - pos: -49.5,3.5 + parent: 1 + type: Transform + - uid: 5527 + components: + - pos: -39.5,20.5 + parent: 1 + type: Transform + - uid: 5528 + components: + - pos: -45.5,30.5 + parent: 1 + type: Transform + - uid: 5529 + components: + - pos: -10.5,30.5 + parent: 1 + type: Transform + - uid: 5531 + components: + - pos: -26.5,29.5 + parent: 1 + type: Transform + - uid: 6936 + components: + - pos: -38.5,42.5 + parent: 1 + type: Transform + - uid: 6937 + components: + - pos: -44.5,39.5 + parent: 1 + type: Transform + - uid: 6938 + components: + - pos: -44.5,47.5 + parent: 1 + type: Transform + - uid: 7091 + components: + - pos: -49.5,44.5 + parent: 1 + type: Transform + - uid: 7092 + components: + - pos: -55.5,37.5 + parent: 1 + type: Transform + - uid: 7559 + components: + - pos: -19.5,42.5 + parent: 1 + type: Transform + - uid: 7977 + components: + - pos: -51.5,58.5 + parent: 1 + type: Transform + - uid: 8652 + components: + - pos: -51.5,65.5 + parent: 1 + type: Transform + - uid: 11053 + components: + - pos: -73.5,19.5 + parent: 1 + type: Transform + - uid: 11054 + components: + - pos: -63.5,28.5 + parent: 1 + type: Transform + - uid: 13501 + components: + - pos: -20.5,59.5 + parent: 1 + type: Transform + - uid: 13502 + components: + - pos: -12.5,57.5 + parent: 1 + type: Transform + - uid: 15019 + components: + - pos: 14.5,-11.5 + parent: 1 + type: Transform + - uid: 15172 + components: + - pos: 16.5,50.5 + parent: 1 + type: Transform +- proto: DisposalYJunction + entities: + - uid: 13500 + components: + - pos: -16.5,55.5 + parent: 1 + type: Transform + - uid: 13591 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,32.5 + parent: 1 + type: Transform +- proto: DogBed + entities: + - uid: 7574 + components: + - pos: -22.5,37.5 + parent: 1 + type: Transform + - uid: 10906 + components: + - pos: -9.5,59.5 + parent: 1 + type: Transform +- proto: DonkpocketBoxSpawner + entities: + - uid: 4730 + components: + - pos: -27.5,52.5 + parent: 1 + type: Transform +- proto: DoorElectronics + entities: + - uid: 5536 + components: + - pos: -47.419823,29.691675 + parent: 1 + type: Transform + - uid: 5537 + components: + - pos: -47.560448,29.48855 + parent: 1 + type: Transform + - uid: 5538 + components: + - pos: -47.451073,29.30105 + parent: 1 + type: Transform +- proto: Dresser + entities: + - uid: 10902 + components: + - pos: -5.5,61.5 + parent: 1 + type: Transform +- proto: DrinkBottleBeer + entities: + - uid: 9735 + components: + - pos: -27.588842,35.58307 + parent: 1 + type: Transform + - uid: 9737 + components: + - pos: -27.416967,35.64557 + parent: 1 + type: Transform + - uid: 9738 + components: + - pos: -27.229467,35.567444 + parent: 1 + type: Transform +- proto: DrinkBottleWhiskey + entities: + - uid: 14287 + components: + - pos: -72.49934,47.622665 + parent: 1 + type: Transform +- proto: DrinkChangelingStingCan + entities: + - uid: 5804 + components: + - pos: -9.689642,21.037588 + parent: 1 + type: Transform +- proto: DrinkCreamCarton + entities: + - uid: 5275 + components: + - pos: -53.020008,21.71115 + parent: 1 + type: Transform +- proto: DrinkGlass + entities: + - uid: 5271 + components: + - pos: -53.816883,21.552088 + parent: 1 + type: Transform + - uid: 5272 + components: + - pos: -53.645008,21.708338 + parent: 1 + type: Transform + - uid: 5273 + components: + - pos: -53.488758,21.552088 + parent: 1 + type: Transform + - uid: 15222 + components: + - pos: 17.303202,52.65593 + parent: 1 + type: Transform + - uid: 15223 + components: + - pos: 17.678202,52.59343 + parent: 1 + type: Transform +- proto: DrinkGoldenCup + entities: + - uid: 2307 + components: + - pos: -23.533527,57.548485 + parent: 1 + type: Transform +- proto: DrinkGoldschlagerBottleFull + entities: + - uid: 2311 + components: + - pos: -23.517902,54.40786 + parent: 1 + type: Transform +- proto: DrinkGreenTea + entities: + - uid: 4546 + components: + - pos: -49.110718,9.835719 + parent: 1 + type: Transform + - uid: 4549 + components: + - pos: -49.160065,9.422353 + parent: 1 + type: Transform + - uid: 5344 + components: + - pos: -49.821003,9.391103 + parent: 1 + type: Transform + - uid: 6153 + components: + - pos: -49.876343,9.820094 + parent: 1 + type: Transform +- proto: DrinkHotCoffee + entities: + - uid: 4562 + components: + - pos: 23.475533,38.452827 + parent: 1 + type: Transform + - uid: 15084 + components: + - pos: -15.376344,24.974894 + parent: 1 + type: Transform + - uid: 15101 + components: + - pos: -15.688844,24.678019 + parent: 1 + type: Transform +- proto: DrinkMilkCarton + entities: + - uid: 6957 + components: + - pos: -35.398277,47.715622 + parent: 1 + type: Transform + - uid: 6958 + components: + - pos: -32.460777,42.668747 + parent: 1 + type: Transform +- proto: DrinkMugBlack + entities: + - uid: 269 + components: + - pos: -17.654377,-4.445471 + parent: 1 + type: Transform + - uid: 7964 + components: + - pos: -54.71723,64.74812 + parent: 1 + type: Transform +- proto: DrinkMugBlue + entities: + - uid: 7948 + components: + - pos: -54.232857,64.76375 + parent: 1 + type: Transform +- proto: DrinkMugHeart + entities: + - uid: 1489 + components: + - pos: 23.29282,42.502815 + parent: 1 + type: Transform +- proto: DrinkMugMetal + entities: + - uid: 7949 + components: + - pos: -47.25018,59.484123 + parent: 1 + type: Transform +- proto: DrinkMugOne + entities: + - uid: 270 + components: + - pos: -17.310627,-4.257971 + parent: 1 + type: Transform + - uid: 14941 + components: + - pos: -54.474243,-12.528257 + parent: 1 + type: Transform +- proto: DrinkMugRed + entities: + - uid: 9936 + components: + - pos: -54.27973,64.43562 + parent: 1 + type: Transform + - uid: 15102 + components: + - pos: -15.313844,24.521769 + parent: 1 + type: Transform +- proto: DrinkTeacup + entities: + - uid: 2999 + components: + - pos: 24.668903,14.540461 + parent: 1 + type: Transform + - uid: 3000 + components: + - pos: 24.262653,14.759211 + parent: 1 + type: Transform +- proto: DrinkWaterJug + entities: + - uid: 577 + components: + - pos: 19.083464,-11.315445 + parent: 1 + type: Transform +- proto: DrinkWhiskeyBottleFull + entities: + - uid: 7935 + components: + - pos: -58.33147,64.88806 + parent: 1 + type: Transform + - uid: 10977 + components: + - pos: -70.71854,40.09562 + parent: 1 + type: Transform + - uid: 14211 + components: + - pos: -72.32807,15.938257 + parent: 1 + type: Transform + - uid: 14284 + components: + - pos: -72.70246,47.903915 + parent: 1 + type: Transform +- proto: DrinkWhiskeyColaGlass + entities: + - uid: 7936 + components: + - pos: -58.70647,64.85681 + parent: 1 + type: Transform +- proto: DrinkWhiskeyGlass + entities: + - uid: 10975 + components: + - pos: -72.39041,41.78312 + parent: 1 + type: Transform + - uid: 10976 + components: + - pos: -70.37479,39.56437 + parent: 1 + type: Transform + - uid: 14212 + components: + - pos: -72.81245,15.797632 + parent: 1 + type: Transform + - uid: 14285 + components: + - pos: -72.34309,47.685165 + parent: 1 + type: Transform +- proto: DrinkWineBottleFull + entities: + - uid: 1815 + components: + - pos: 16.737038,3.7859516 + parent: 1 + type: Transform +- proto: DrinkWineGlass + entities: + - uid: 1814 + components: + - pos: 16.440163,3.6297016 + parent: 1 + type: Transform + - uid: 6338 + components: + - pos: 2.5328588,49.783806 + parent: 1 + type: Transform +- proto: Dropper + entities: + - uid: 1953 + components: + - pos: -4.4894724,20.885618 + parent: 1 + type: Transform + - uid: 1954 + components: + - pos: -4.4894724,20.666868 + parent: 1 + type: Transform + - uid: 1955 + components: + - pos: -4.4894724,20.463743 + parent: 1 + type: Transform +- proto: ElectricGuitarInstrument + entities: + - uid: 4138 + components: + - pos: -22.497261,24.539072 + parent: 1 + type: Transform +- proto: EmergencyLight + entities: + - uid: 2592 + components: + - rot: 1.5707963267948966 rad + pos: 25.5,26.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 3665 + components: + - rot: 3.141592653589793 rad + pos: -44.5,-13.5 + parent: 1 + type: Transform + - uid: 4600 + components: + - pos: -48.5,6.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 4890 + components: + - rot: 3.141592653589793 rad + pos: -71.5,-11.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 11062 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,-3.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14864 + components: + - rot: -1.5707963267948966 rad + pos: -77.5,42.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14865 + components: + - rot: 3.141592653589793 rad + pos: -80.5,29.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14866 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,29.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14867 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,29.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14868 + components: + - rot: 3.141592653589793 rad + pos: -59.5,31.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14869 + components: + - rot: -1.5707963267948966 rad + pos: -79.5,23.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14870 + components: + - pos: -68.5,23.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14871 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,42.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14872 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,40.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14873 + components: + - rot: 3.141592653589793 rad + pos: -50.5,31.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14874 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,22.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14875 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,8.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14876 + components: + - pos: -68.5,6.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14879 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,3.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14880 + components: + - pos: -35.5,-5.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14882 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,15.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14883 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,26.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14884 + components: + - pos: -33.5,33.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14885 + components: + - rot: 3.141592653589793 rad + pos: -39.5,35.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14886 + components: + - pos: -35.5,47.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14887 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,45.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14888 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,52.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14889 + components: + - rot: 1.5707963267948966 rad + pos: -22.5,40.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14890 + components: + - pos: -20.5,48.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14891 + components: + - rot: 3.141592653589793 rad + pos: -20.5,31.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14892 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,27.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14893 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,40.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14894 + components: + - pos: -11.5,49.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14895 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,56.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14896 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,55.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14897 + components: + - rot: 3.141592653589793 rad + pos: -18.5,62.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14898 + components: + - pos: -9.5,57.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14899 + components: + - rot: 3.141592653589793 rad + pos: -9.5,27.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14900 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,21.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14901 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,10.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14902 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,12.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14903 + components: + - pos: -25.5,18.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14904 + components: + - rot: 3.141592653589793 rad + pos: -19.5,4.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14905 + components: + - rot: 3.141592653589793 rad + pos: -2.5,4.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14906 + components: + - pos: 7.5,6.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14907 + components: + - rot: 3.141592653589793 rad + pos: 20.5,4.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14908 + components: + - rot: 1.5707963267948966 rad + pos: 25.5,9.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14909 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,19.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14910 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,13.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14911 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,1.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14912 + components: + - pos: -1.5,-1.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14913 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,0.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14914 + components: + - pos: -16.5,-1.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14915 + components: + - pos: -12.5,-10.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14916 + components: + - pos: 2.5,-8.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14917 + components: + - rot: -1.5707963267948966 rad + pos: -1.5,-11.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14954 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,55.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14955 + components: + - pos: -46.5,65.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14956 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,63.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14957 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,64.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14958 + components: + - rot: 3.141592653589793 rad + pos: -59.5,60.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14959 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,56.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14960 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,53.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14961 + components: + - pos: -52.5,47.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 14962 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,41.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 15309 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,23.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 15310 + components: + - pos: -1.5,34.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 15311 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,38.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 15312 + components: + - pos: 8.5,37.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 15313 + components: + - rot: 3.141592653589793 rad + pos: 9.5,28.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 15314 + components: + - rot: 3.141592653589793 rad + pos: 8.5,22.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 15315 + components: + - pos: 7.5,17.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight + - uid: 15316 + components: + - rot: 3.141592653589793 rad + pos: 1.5,14.5 + parent: 1 + type: Transform + - enabled: True + type: PointLight + - type: ActiveEmergencyLight +- proto: Emitter + entities: + - uid: 9982 + components: + - rot: 3.141592653589793 rad + pos: -78.5,18.5 + parent: 1 + type: Transform + - uid: 9983 + components: + - rot: 3.141592653589793 rad + pos: -77.5,18.5 + parent: 1 + type: Transform + - uid: 9984 + components: + - rot: 3.141592653589793 rad + pos: -76.5,18.5 + parent: 1 + type: Transform + - uid: 10609 + components: + - rot: -1.5707963267948966 rad + pos: -90.5,21.5 + parent: 1 + type: Transform + - uid: 10610 + components: + - rot: -1.5707963267948966 rad + pos: -90.5,29.5 + parent: 1 + type: Transform + - uid: 10611 + components: + - rot: 1.5707963267948966 rad + pos: -104.5,21.5 + parent: 1 + type: Transform + - uid: 10612 + components: + - rot: 3.141592653589793 rad + pos: -93.5,18.5 + parent: 1 + type: Transform + - uid: 10613 + components: + - rot: 3.141592653589793 rad + pos: -101.5,18.5 + parent: 1 + type: Transform + - uid: 10614 + components: + - rot: 1.5707963267948966 rad + pos: -104.5,29.5 + parent: 1 + type: Transform + - uid: 10615 + components: + - pos: -101.5,32.5 + parent: 1 + type: Transform + - uid: 10616 + components: + - pos: -93.5,32.5 + parent: 1 + type: Transform +- proto: EncryptionKeyCargo + entities: + - uid: 15348 + components: + - flags: InContainer + type: MetaData + - parent: 15347 + type: Transform + - canCollide: False + type: Physics + - uid: 15374 + components: + - flags: InContainer + type: MetaData + - parent: 15368 + type: Transform + - canCollide: False + type: Physics +- proto: EncryptionKeyCommand + entities: + - uid: 15337 + components: + - flags: InContainer + type: MetaData + - parent: 15336 + type: Transform + - canCollide: False + type: Physics + - uid: 15369 + components: + - flags: InContainer + type: MetaData + - parent: 15368 + type: Transform + - canCollide: False + type: Physics +- proto: EncryptionKeyCommon + entities: + - uid: 2591 + components: + - flags: InContainer + type: MetaData + - parent: 2590 + type: Transform + - canCollide: False + type: Physics + - uid: 15366 + components: + - pos: 27.658451,23.492924 + parent: 1 + type: Transform +- proto: EncryptionKeyEngineering + entities: + - uid: 15339 + components: + - flags: InContainer + type: MetaData + - parent: 15338 + type: Transform + - canCollide: False + type: Physics + - uid: 15371 + components: + - flags: InContainer + type: MetaData + - parent: 15368 + type: Transform + - canCollide: False + type: Physics +- proto: EncryptionKeyMedical + entities: + - uid: 15341 + components: + - flags: InContainer + type: MetaData + - parent: 15340 + type: Transform + - canCollide: False + type: Physics + - uid: 15372 + components: + - flags: InContainer + type: MetaData + - parent: 15368 + type: Transform + - canCollide: False + type: Physics +- proto: EncryptionKeyMedicalScience + entities: + - uid: 15342 + components: + - flags: InContainer + type: MetaData + - parent: 15340 + type: Transform + - canCollide: False + type: Physics + - uid: 15345 + components: + - flags: InContainer + type: MetaData + - parent: 15343 + type: Transform + - canCollide: False + type: Physics +- proto: EncryptionKeyRobo + entities: + - uid: 15346 + components: + - flags: InContainer + type: MetaData + - parent: 15343 + type: Transform + - canCollide: False + type: Physics +- proto: EncryptionKeyScience + entities: + - uid: 15344 + components: + - flags: InContainer + type: MetaData + - parent: 15343 + type: Transform + - canCollide: False + type: Physics + - uid: 15373 + components: + - flags: InContainer + type: MetaData + - parent: 15368 + type: Transform + - canCollide: False + type: Physics +- proto: EncryptionKeySecurity + entities: + - uid: 983 + components: + - flags: InContainer + type: MetaData + - parent: 982 + type: Transform + - canCollide: False + type: Physics + - uid: 15370 + components: + - flags: InContainer + type: MetaData + - parent: 15368 + type: Transform + - canCollide: False + type: Physics +- proto: EncryptionKeyService + entities: + - uid: 1027 + components: + - flags: InContainer + type: MetaData + - parent: 1026 + type: Transform + - canCollide: False + type: Physics + - uid: 15367 + components: + - pos: 27.345951,23.492924 + parent: 1 + type: Transform +- proto: Error + entities: + - uid: 3615 + components: + - pos: -28.521805,-11.50697 + parent: 1 + type: Transform +- proto: EuphoniumInstrument + entities: + - uid: 6336 + components: + - pos: 14.586781,52.45568 + parent: 1 + type: Transform +- proto: ExosuitFabricator + entities: + - uid: 240 + components: + - pos: 2.5,-0.5 + parent: 1 + type: Transform +- proto: ExtinguisherCabinet + entities: + - uid: 2843 + components: + - pos: -18.5,30.5 + parent: 1 + type: Transform + - uid: 3971 + components: + - rot: 3.141592653589793 rad + pos: -69.5,7.5 + parent: 1 + type: Transform + - uid: 4746 + components: + - rot: 3.141592653589793 rad + pos: -67.5,-12.5 + parent: 1 + type: Transform + - uid: 12036 + components: + - pos: -46.5,-10.5 + parent: 1 + type: Transform + - uid: 12037 + components: + - pos: -35.5,-4.5 + parent: 1 + type: Transform + - uid: 12038 + components: + - pos: -55.5,9.5 + parent: 1 + type: Transform + - uid: 12220 + components: + - pos: -55.5,29.5 + parent: 1 + type: Transform + - uid: 13655 + components: + - pos: -39.5,47.5 + parent: 1 + type: Transform + - uid: 13682 + components: + - pos: -35.5,34.5 + parent: 1 + type: Transform + - uid: 13683 + components: + - pos: -26.5,44.5 + parent: 1 + type: Transform + - uid: 13684 + components: + - pos: -27.5,29.5 + parent: 1 + type: Transform + - uid: 13764 + components: + - pos: -39.5,22.5 + parent: 1 + type: Transform + - uid: 13792 + components: + - pos: -35.5,9.5 + parent: 1 + type: Transform + - uid: 13793 + components: + - pos: -55.5,-1.5 + parent: 1 + type: Transform + - uid: 13796 + components: + - pos: -26.5,-9.5 + parent: 1 + type: Transform + - uid: 13797 + components: + - pos: -19.5,-2.5 + parent: 1 + type: Transform + - uid: 13798 + components: + - pos: 6.5,-9.5 + parent: 1 + type: Transform + - uid: 13799 + components: + - pos: -18.5,-12.5 + parent: 1 + type: Transform + - uid: 13800 + components: + - pos: -7.5,-3.5 + parent: 1 + type: Transform + - uid: 13801 + components: + - pos: -14.5,11.5 + parent: 1 + type: Transform + - uid: 13802 + components: + - pos: -10.5,23.5 + parent: 1 + type: Transform + - uid: 13804 + components: + - pos: -25.5,14.5 + parent: 1 + type: Transform + - uid: 13805 + components: + - pos: -2.5,35.5 + parent: 1 + type: Transform + - uid: 13810 + components: + - pos: 29.5,17.5 + parent: 1 + type: Transform + - uid: 13811 + components: + - pos: 18.5,0.5 + parent: 1 + type: Transform + - uid: 13812 + components: + - pos: 3.5,3.5 + parent: 1 + type: Transform +- proto: ExtinguisherCabinetFilled + entities: + - uid: 15292 + components: + - pos: -2.5,18.5 + parent: 1 + type: Transform + - uid: 15293 + components: + - pos: 1.5,18.5 + parent: 1 + type: Transform + - uid: 15294 + components: + - pos: 5.5,15.5 + parent: 1 + type: Transform + - uid: 15295 + components: + - pos: 8.5,27.5 + parent: 1 + type: Transform + - uid: 15296 + components: + - pos: 5.5,36.5 + parent: 1 + type: Transform + - uid: 15297 + components: + - pos: -19.5,56.5 + parent: 1 + type: Transform + - uid: 15298 + components: + - pos: -18.5,61.5 + parent: 1 + type: Transform + - uid: 15299 + components: + - pos: -9.5,58.5 + parent: 1 + type: Transform + - uid: 15300 + components: + - pos: -60.5,56.5 + parent: 1 + type: Transform + - uid: 15301 + components: + - pos: -53.5,59.5 + parent: 1 + type: Transform + - uid: 15302 + components: + - pos: -45.5,55.5 + parent: 1 + type: Transform + - uid: 15304 + components: + - pos: -53.5,67.5 + parent: 1 + type: Transform + - uid: 15305 + components: + - pos: -57.5,63.5 + parent: 1 + type: Transform + - uid: 15306 + components: + - pos: -56.5,88.5 + parent: 1 + type: Transform + - uid: 15307 + components: + - pos: -62.5,82.5 + parent: 1 + type: Transform + - uid: 15308 + components: + - pos: -49.5,82.5 + parent: 1 + type: Transform + - uid: 15317 + components: + - rot: 1.5707963267948966 rad + pos: -75.5,19.5 + parent: 1 + type: Transform + - uid: 15318 + components: + - rot: 1.5707963267948966 rad + pos: -83.5,22.5 + parent: 1 + type: Transform + - uid: 15319 + components: + - rot: 1.5707963267948966 rad + pos: -75.5,31.5 + parent: 1 + type: Transform + - uid: 15320 + components: + - rot: 1.5707963267948966 rad + pos: -76.5,42.5 + parent: 1 + type: Transform + - uid: 15321 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,29.5 + parent: 1 + type: Transform + - uid: 15322 + components: + - rot: 1.5707963267948966 rad + pos: -66.5,18.5 + parent: 1 + type: Transform + - uid: 15323 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,46.5 + parent: 1 + type: Transform + - uid: 15324 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,38.5 + parent: 1 + type: Transform + - uid: 15325 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,48.5 + parent: 1 + type: Transform + - uid: 15326 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,38.5 + parent: 1 + type: Transform +- proto: FaxMachineBase + entities: + - uid: 303 + components: + - pos: -0.5,-3.5 + parent: 1 + type: Transform + - name: Science + type: FaxMachine + - uid: 586 + components: + - pos: -1.5,1.5 + parent: 1 + type: Transform + - name: RD Office + type: FaxMachine + - uid: 2320 + components: + - pos: 10.5,25.5 + parent: 1 + type: Transform + - name: Medical + type: FaxMachine + - uid: 3745 + components: + - pos: -46.5,2.5 + parent: 1 + type: Transform + - name: Cargo + type: FaxMachine + - uid: 5809 + components: + - pos: -28.5,13.5 + parent: 1 + type: Transform + - name: Library + type: FaxMachine + - uid: 7545 + components: + - pos: -19.5,48.5 + parent: 1 + type: Transform + - name: HoP Office + type: FaxMachine + - uid: 7989 + components: + - pos: -55.5,58.5 + parent: 1 + type: Transform + - name: Security + type: FaxMachine + - uid: 10803 + components: + - pos: -36.5,37.5 + parent: 1 + type: Transform + - name: Bar + type: FaxMachine + - uid: 10901 + components: + - pos: -10.5,55.5 + parent: 1 + type: Transform + - name: Bridge + type: FaxMachine + - uid: 13602 + components: + - pos: -64.5,25.5 + parent: 1 + type: Transform + - name: Engineering + type: FaxMachine +- proto: FaxMachineCaptain + entities: + - uid: 10900 + components: + - pos: -6.5,61.5 + parent: 1 + type: Transform +- proto: FigureSpawner + entities: + - uid: 3516 + components: + - pos: -19.5,-10.5 + parent: 1 + type: Transform + - uid: 5546 + components: + - pos: -52.5,27.5 + parent: 1 + type: Transform +- proto: filingCabinetDrawer + entities: + - uid: 5509 + components: + - pos: -43.5,0.5 + parent: 1 + type: Transform + - uid: 7397 + components: + - pos: 11.5,52.5 + parent: 1 + type: Transform +- proto: filingCabinetTall + entities: + - uid: 5507 + components: + - pos: -52.5,-0.5 + parent: 1 + type: Transform + - uid: 7541 + components: + - pos: -22.5,44.5 + parent: 1 + type: Transform +- proto: FireAlarm + entities: + - uid: 318 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,0.5 + parent: 1 + type: Transform + - devices: + - 1749 + - 1741 + - 1747 + - 1750 + - 14970 + type: DeviceList + - uid: 4747 + components: + - rot: 3.141592653589793 rad + pos: -63.5,-12.5 + parent: 1 + type: Transform + - devices: + - 4912 + - 4913 + - 4126 + type: DeviceList + - uid: 8961 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,58.5 + parent: 1 + type: Transform + - devices: + - 8573 + - 8574 + - 8578 + - 8576 + - 8575 + type: DeviceList + - uid: 8963 + components: + - pos: -48.5,66.5 + parent: 1 + type: Transform + - devices: + - 8579 + - 8580 + - 8581 + - 5726 + - 5723 + - 8543 + - 8542 + - 8544 + - 8545 + - 8849 + - 8844 + - 8848 + - 8843 + - 8758 + - 8845 + - 8842 + - 8846 + - 8760 + - 8847 + - 8759 + type: DeviceList + - uid: 8964 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,87.5 + parent: 1 + type: Transform + - devices: + - 5742 + - 5579 + - 5501 + - 5496 + type: DeviceList + - uid: 8966 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,87.5 + parent: 1 + type: Transform + - devices: + - 5742 + - 5579 + - 5501 + - 5496 + type: DeviceList + - uid: 10691 + components: + - rot: 1.5707963267948966 rad + pos: -75.5,22.5 + parent: 1 + type: Transform + - devices: + - 14304 + - 14302 + - 10686 + - 10687 + - 14303 + - 10684 + - 10685 + - 10682 + - 10683 + type: DeviceList + - uid: 13041 + components: + - rot: 1.5707963267948966 rad + pos: -50.5,44.5 + parent: 1 + type: Transform + - devices: + - 7995 + - 7996 + - 7997 + - 8003 + - 8002 + - 8001 + - 8573 + - 8574 + type: DeviceList + - uid: 13046 + components: + - rot: 3.141592653589793 rad + pos: -46.5,30.5 + parent: 1 + type: Transform + - devices: + - 5240 + - 5241 + - 5242 + - 7995 + - 7996 + - 7997 + - 5233 + - 5232 + - 5231 + type: DeviceList + - uid: 13050 + components: + - pos: -67.5,7.5 + parent: 1 + type: Transform + - devices: + - 5213 + - 5214 + - 5215 + - 11812 + - 11813 + - 11811 + - 11814 + type: DeviceList + - uid: 13052 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,-4.5 + parent: 1 + type: Transform + - devices: + - 5216 + - 5217 + - 5218 + type: DeviceList + - uid: 13056 + components: + - pos: -39.5,7.5 + parent: 1 + type: Transform + - devices: + - 4112 + - 4111 + - 4110 + - 4114 + - 4115 + - 4116 + - 4109 + - 4108 + - 4107 + type: DeviceList + - uid: 13059 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,-1.5 + parent: 1 + type: Transform + - devices: + - 3718 + - 3719 + - 3720 + - 3721 + - 3722 + - 3723 + - 3724 + - 3717 + - 3716 + - 3726 + type: DeviceList + - uid: 13060 + components: + - pos: -22.5,7.5 + parent: 1 + type: Transform + - devices: + - 1766 + - 1765 + - 1764 + - 4107 + - 4108 + - 4109 + type: DeviceList + - uid: 13062 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,17.5 + parent: 1 + type: Transform + - devices: + - 4114 + - 4115 + - 4116 + - 4117 + - 4118 + - 4119 + - 4120 + - 4121 + - 4122 + - 4123 + - 5227 + - 5226 + - 5225 + type: DeviceList + - uid: 13064 + components: + - pos: -39.5,40.5 + parent: 1 + type: Transform + - devices: + - 5233 + - 5232 + - 5231 + - 5225 + - 5226 + - 5227 + - 5228 + - 5229 + - 5230 + - 9786 + - 9787 + - 9788 + - 9789 + - 9784 + - 9785 + type: DeviceList + - uid: 13066 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,44.5 + parent: 1 + type: Transform + - devices: + - 9784 + - 9785 + - 9790 + - 9791 + - 9792 + - 9793 + type: DeviceList + - uid: 13068 + components: + - pos: -28.5,34.5 + parent: 1 + type: Transform + - devices: + - 5228 + - 5229 + - 5230 + - 5234 + - 5235 + - 5236 + type: DeviceList + - uid: 13070 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,41.5 + parent: 1 + type: Transform + - devices: + - 9790 + - 9791 + - 9793 + - 9792 + type: DeviceList + - uid: 13072 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,41.5 + parent: 1 + type: Transform + - devices: + - 5237 + - 5238 + - 5239 + type: DeviceList + - uid: 13075 + components: + - pos: -21.5,43.5 + parent: 1 + type: Transform + - devices: + - 9819 + type: DeviceList + - uid: 13078 + components: + - pos: -11.5,34.5 + parent: 1 + type: Transform + - devices: + - 5237 + - 5238 + - 5239 + - 12259 + - 12255 + - 12256 + - 12260 + - 12273 + - 12272 + - 3064 + - 3122 + - 2814 + - 2881 + - 3175 + - 3176 + - 3177 + - 2866 + - 2865 + type: DeviceList + - uid: 13080 + components: + - pos: -14.5,58.5 + parent: 1 + type: Transform + - devices: + - 6496 + - 6497 + - 9808 + - 6498 + - 6499 + - 6500 + - 6501 + - 6502 + - 6503 + - 6504 + type: DeviceList + - uid: 13097 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,18.5 + parent: 1 + type: Transform + - devices: + - 1763 + - 1762 + - 1761 + - 3177 + - 3176 + - 3175 + type: DeviceList + - uid: 13098 + components: + - pos: -2.5,7.5 + parent: 1 + type: Transform + - devices: + - 1758 + - 1759 + - 1760 + - 1768 + - 1767 + - 1753 + - 1752 + type: DeviceList + - uid: 13101 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,-1.5 + parent: 1 + type: Transform + - devices: + - 1752 + - 1753 + type: DeviceList + - uid: 13102 + components: + - pos: 20.5,7.5 + parent: 1 + type: Transform + - devices: + - 1767 + - 1768 + - 1755 + - 1754 + type: DeviceList + - uid: 13104 + components: + - rot: 3.141592653589793 rad + pos: 27.5,4.5 + parent: 1 + type: Transform + - devices: + - 1755 + - 1754 + type: DeviceList + - uid: 13300 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,34.5 + parent: 1 + type: Transform + - devices: + - 2055 + - 2868 + - 2867 + - 2869 + - 13306 + - 13305 + - 2052 + - 2051 + - 13309 + - 13308 + - 13307 + - 2053 + - 2054 + - 15082 + - 15083 + type: DeviceList + - uid: 13303 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,21.5 + parent: 1 + type: Transform + - devices: + - 13301 + - 13302 + - 2051 + - 2052 + - 2880 + - 2878 + - 2879 + - 2869 + - 2870 + - 13307 + - 13308 + - 13309 + - 15079 + - 15080 + - 15081 + type: DeviceList + - uid: 14298 + components: + - rot: -1.5707963267948966 rad + pos: -76.5,37.5 + parent: 1 + type: Transform + - devices: + - 10676 + - 10675 + - 10674 + - 10673 + - 10672 + - 10671 + - 10670 + - 10669 + - 10668 + - 10667 + - 10666 + type: DeviceList + - uid: 14299 + components: + - rot: -1.5707963267948966 rad + pos: -72.5,31.5 + parent: 1 + type: Transform + - devices: + - 10685 + - 10684 + - 10688 + - 10689 + type: DeviceList + - uid: 14305 + components: + - rot: -1.5707963267948966 rad + pos: -72.5,25.5 + parent: 1 + type: Transform + - devices: + - 14303 + - 10686 + - 10687 + - 10684 + - 10685 + type: DeviceList + - uid: 14306 + components: + - pos: -80.5,28.5 + parent: 1 + type: Transform + - devices: + - 14303 + - 10683 + - 10682 + type: DeviceList +- proto: FireAxeCabinet + entities: + - uid: 1667 + components: + - pos: 14.5,-6.5 + parent: 1 + type: Transform +- proto: FireAxeCabinetFilled + entities: + - uid: 13766 + components: + - pos: -10.5,58.5 + parent: 1 + type: Transform + - uid: 15145 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,33.5 + parent: 1 + type: Transform +- proto: Firelock + entities: + - uid: 1742 + components: + - pos: 22.5,1.5 + parent: 1 + type: Transform + - uid: 1743 + components: + - pos: 23.5,1.5 + parent: 1 + type: Transform + - uid: 1744 + components: + - pos: 20.5,-5.5 + parent: 1 + type: Transform + - uid: 1745 + components: + - pos: 20.5,-4.5 + parent: 1 + type: Transform + - uid: 1746 + components: + - pos: 4.5,-3.5 + parent: 1 + type: Transform + - uid: 3491 + components: + - pos: -21.5,-5.5 + parent: 1 + type: Transform + - uid: 5423 + components: + - pos: -29.5,-3.5 + parent: 1 + type: Transform + - uid: 5433 + components: + - pos: -28.5,-3.5 + parent: 1 + type: Transform + - uid: 5460 + components: + - pos: -20.5,-5.5 + parent: 1 + type: Transform + - uid: 5464 + components: + - pos: -49.5,-10.5 + parent: 1 + type: Transform + - uid: 5465 + components: + - pos: -49.5,-9.5 + parent: 1 + type: Transform + - uid: 5596 + components: + - pos: -20.5,15.5 + parent: 1 + type: Transform + - uid: 5736 + components: + - pos: -21.5,20.5 + parent: 1 + type: Transform + - uid: 5751 + components: + - pos: -19.5,15.5 + parent: 1 + type: Transform + - uid: 7511 + components: + - pos: -32.5,51.5 + parent: 1 + type: Transform + - uid: 7570 + components: + - pos: 11.5,8.5 + parent: 1 + type: Transform + - uid: 8278 + components: + - pos: -30.5,14.5 + parent: 1 + type: Transform + - uid: 8992 + components: + - rot: 3.141592653589793 rad + pos: 20.5,35.5 + parent: 1 + type: Transform + - uid: 9002 + components: + - rot: 3.141592653589793 rad + pos: 20.5,34.5 + parent: 1 + type: Transform + - uid: 9802 + components: + - pos: -31.5,51.5 + parent: 1 + type: Transform + - uid: 9803 + components: + - pos: -25.5,42.5 + parent: 1 + type: Transform + - uid: 9804 + components: + - pos: -24.5,42.5 + parent: 1 + type: Transform + - uid: 9809 + components: + - pos: -5.5,46.5 + parent: 1 + type: Transform + - uid: 9810 + components: + - pos: -5.5,47.5 + parent: 1 + type: Transform + - uid: 9811 + components: + - pos: 12.5,40.5 + parent: 1 + type: Transform + - uid: 9812 + components: + - pos: 12.5,39.5 + parent: 1 + type: Transform + - uid: 9813 + components: + - pos: 14.5,44.5 + parent: 1 + type: Transform + - uid: 9814 + components: + - pos: 15.5,44.5 + parent: 1 + type: Transform + - uid: 9815 + components: + - pos: -3.5,38.5 + parent: 1 + type: Transform + - uid: 9816 + components: + - pos: -2.5,38.5 + parent: 1 + type: Transform + - uid: 9912 + components: + - pos: 16.5,37.5 + parent: 1 + type: Transform + - uid: 14189 + components: + - pos: -73.5,37.5 + parent: 1 + type: Transform + - uid: 14190 + components: + - pos: -64.5,47.5 + parent: 1 + type: Transform + - uid: 14191 + components: + - pos: -64.5,47.5 + parent: 1 + type: Transform + - uid: 14192 + components: + - pos: -64.5,48.5 + parent: 1 + type: Transform + - uid: 14193 + components: + - pos: -67.5,38.5 + parent: 1 + type: Transform + - uid: 14194 + components: + - pos: -66.5,38.5 + parent: 1 + type: Transform + - uid: 14195 + components: + - pos: -62.5,17.5 + parent: 1 + type: Transform + - uid: 14196 + components: + - pos: -62.5,16.5 + parent: 1 + type: Transform + - uid: 14965 + components: + - pos: 16.5,25.5 + parent: 1 + type: Transform + - uid: 14966 + components: + - pos: 16.5,26.5 + parent: 1 + type: Transform + - uid: 14968 + components: + - pos: 11.5,9.5 + parent: 1 + type: Transform + - uid: 14969 + components: + - pos: -1.5,12.5 + parent: 1 + type: Transform + - uid: 14975 + components: + - pos: -6.5,18.5 + parent: 1 + type: Transform + - uid: 15040 + components: + - rot: 3.141592653589793 rad + pos: 9.5,-5.5 + parent: 1 + type: Transform + - uid: 15063 + components: + - pos: -44.5,12.5 + parent: 1 + type: Transform + - uid: 15064 + components: + - pos: -50.5,16.5 + parent: 1 + type: Transform + - uid: 15065 + components: + - pos: -45.5,22.5 + parent: 1 + type: Transform + - uid: 15066 + components: + - pos: -44.5,22.5 + parent: 1 + type: Transform + - uid: 15069 + components: + - pos: -21.5,21.5 + parent: 1 + type: Transform + - uid: 15070 + components: + - pos: -20.5,22.5 + parent: 1 + type: Transform + - uid: 15071 + components: + - pos: -19.5,22.5 + parent: 1 + type: Transform + - uid: 15104 + components: + - pos: -23.5,50.5 + parent: 1 + type: Transform + - uid: 15105 + components: + - pos: -23.5,51.5 + parent: 1 + type: Transform + - uid: 15289 + components: + - pos: 22.5,20.5 + parent: 1 + type: Transform + - uid: 15290 + components: + - pos: 23.5,20.5 + parent: 1 + type: Transform + - uid: 15849 + components: + - pos: 16.5,38.5 + parent: 1 + type: Transform +- proto: FirelockEdge + entities: + - uid: 219 + components: + - pos: -5.5,-13.5 + parent: 1 + type: Transform + - uid: 285 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,-12.5 + parent: 1 + type: Transform + - uid: 1747 + components: + - pos: -1.5,-5.5 + parent: 1 + type: Transform + - uid: 1748 + components: + - pos: 28.5,-5.5 + parent: 1 + type: Transform + - uid: 1750 + components: + - pos: -16.5,-5.5 + parent: 1 + type: Transform + - uid: 2051 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,24.5 + parent: 1 + type: Transform + - uid: 2052 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,25.5 + parent: 1 + type: Transform + - uid: 2053 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,33.5 + parent: 1 + type: Transform + - uid: 2054 + components: + - rot: 3.141592653589793 rad + pos: 3.5,34.5 + parent: 1 + type: Transform + - uid: 2055 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,33.5 + parent: 1 + type: Transform + - uid: 2865 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,33.5 + parent: 1 + type: Transform + - uid: 2866 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,31.5 + parent: 1 + type: Transform + - uid: 2870 + components: + - pos: -3.5,19.5 + parent: 1 + type: Transform + - uid: 2881 + components: + - rot: 1.5707963267948966 rad + pos: -15.5,27.5 + parent: 1 + type: Transform + - uid: 3544 + components: + - rot: 3.141592653589793 rad + pos: -40.5,-9.5 + parent: 1 + type: Transform + - uid: 3554 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,-9.5 + parent: 1 + type: Transform + - uid: 3672 + components: + - rot: 3.141592653589793 rad + pos: -35.5,-8.5 + parent: 1 + type: Transform + - uid: 3674 + components: + - rot: 3.141592653589793 rad + pos: -34.5,-8.5 + parent: 1 + type: Transform + - uid: 3677 + components: + - rot: 3.141592653589793 rad + pos: -33.5,-8.5 + parent: 1 + type: Transform + - uid: 3740 + components: + - rot: 3.141592653589793 rad + pos: -32.5,-8.5 + parent: 1 + type: Transform + - uid: 3770 + components: + - rot: 3.141592653589793 rad + pos: -31.5,-8.5 + parent: 1 + type: Transform + - uid: 3970 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,-10.5 + parent: 1 + type: Transform + - uid: 4117 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,23.5 + parent: 1 + type: Transform + - uid: 4118 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,24.5 + parent: 1 + type: Transform + - uid: 4119 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,25.5 + parent: 1 + type: Transform + - uid: 4120 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,26.5 + parent: 1 + type: Transform + - uid: 4121 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,27.5 + parent: 1 + type: Transform + - uid: 4122 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,28.5 + parent: 1 + type: Transform + - uid: 4123 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,29.5 + parent: 1 + type: Transform + - uid: 5461 + components: + - rot: 3.141592653589793 rad + pos: -17.5,-10.5 + parent: 1 + type: Transform + - uid: 5496 + components: + - pos: -50.5,82.5 + parent: 1 + type: Transform + - uid: 5501 + components: + - pos: -52.5,82.5 + parent: 1 + type: Transform + - uid: 5579 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,83.5 + parent: 1 + type: Transform + - uid: 5723 + components: + - rot: 3.141592653589793 rad + pos: -52.5,65.5 + parent: 1 + type: Transform + - uid: 5726 + components: + - rot: 3.141592653589793 rad + pos: -50.5,65.5 + parent: 1 + type: Transform + - uid: 5742 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,89.5 + parent: 1 + type: Transform + - uid: 6496 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,54.5 + parent: 1 + type: Transform + - uid: 6497 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,55.5 + parent: 1 + type: Transform + - uid: 6498 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,59.5 + parent: 1 + type: Transform + - uid: 6499 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,60.5 + parent: 1 + type: Transform + - uid: 6500 + components: + - rot: 3.141592653589793 rad + pos: -15.5,61.5 + parent: 1 + type: Transform + - uid: 6501 + components: + - rot: 3.141592653589793 rad + pos: -16.5,61.5 + parent: 1 + type: Transform + - uid: 6502 + components: + - rot: 3.141592653589793 rad + pos: -17.5,61.5 + parent: 1 + type: Transform + - uid: 6503 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,60.5 + parent: 1 + type: Transform + - uid: 6504 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,59.5 + parent: 1 + type: Transform + - uid: 6505 + components: + - rot: 3.141592653589793 rad + pos: -17.5,57.5 + parent: 1 + type: Transform + - uid: 6506 + components: + - rot: 3.141592653589793 rad + pos: -15.5,57.5 + parent: 1 + type: Transform + - uid: 8544 + components: + - rot: 3.141592653589793 rad + pos: -52.5,58.5 + parent: 1 + type: Transform + - uid: 8545 + components: + - rot: 3.141592653589793 rad + pos: -50.5,58.5 + parent: 1 + type: Transform + - uid: 8573 + components: + - rot: 3.141592653589793 rad + pos: -48.5,51.5 + parent: 1 + type: Transform + - uid: 8574 + components: + - rot: 3.141592653589793 rad + pos: -46.5,51.5 + parent: 1 + type: Transform + - uid: 8575 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,53.5 + parent: 1 + type: Transform + - uid: 8576 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,55.5 + parent: 1 + type: Transform + - uid: 9784 + components: + - pos: -36.5,41.5 + parent: 1 + type: Transform + - uid: 9785 + components: + - pos: -35.5,41.5 + parent: 1 + type: Transform + - uid: 9786 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,38.5 + parent: 1 + type: Transform + - uid: 9787 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,37.5 + parent: 1 + type: Transform + - uid: 9788 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,36.5 + parent: 1 + type: Transform + - uid: 9789 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,35.5 + parent: 1 + type: Transform + - uid: 9790 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,43.5 + parent: 1 + type: Transform + - uid: 9791 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,44.5 + parent: 1 + type: Transform + - uid: 9792 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,45.5 + parent: 1 + type: Transform + - uid: 9793 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,46.5 + parent: 1 + type: Transform + - uid: 9808 + components: + - rot: 3.141592653589793 rad + pos: -7.5,57.5 + parent: 1 + type: Transform + - uid: 9850 + components: + - rot: 1.5707963267948966 rad + pos: -50.5,36.5 + parent: 1 + type: Transform + - uid: 9851 + components: + - rot: 3.141592653589793 rad + pos: -31.5,55.5 + parent: 1 + type: Transform + - uid: 10666 + components: + - rot: 1.5707963267948966 rad + pos: -76.5,35.5 + parent: 1 + type: Transform + - uid: 10667 + components: + - rot: 1.5707963267948966 rad + pos: -76.5,34.5 + parent: 1 + type: Transform + - uid: 10668 + components: + - rot: 3.141592653589793 rad + pos: -76.5,33.5 + parent: 1 + type: Transform + - uid: 10669 + components: + - rot: 3.141592653589793 rad + pos: -77.5,33.5 + parent: 1 + type: Transform + - uid: 10670 + components: + - rot: 3.141592653589793 rad + pos: -78.5,33.5 + parent: 1 + type: Transform + - uid: 10671 + components: + - rot: 3.141592653589793 rad + pos: -79.5,33.5 + parent: 1 + type: Transform + - uid: 10672 + components: + - rot: 3.141592653589793 rad + pos: -80.5,33.5 + parent: 1 + type: Transform + - uid: 10673 + components: + - rot: 3.141592653589793 rad + pos: -81.5,33.5 + parent: 1 + type: Transform + - uid: 10674 + components: + - rot: 3.141592653589793 rad + pos: -82.5,33.5 + parent: 1 + type: Transform + - uid: 10675 + components: + - rot: 3.141592653589793 rad + pos: -83.5,33.5 + parent: 1 + type: Transform + - uid: 10676 + components: + - rot: 3.141592653589793 rad + pos: -84.5,33.5 + parent: 1 + type: Transform + - uid: 10682 + components: + - rot: 3.141592653589793 rad + pos: -84.5,27.5 + parent: 1 + type: Transform + - uid: 10683 + components: + - pos: -84.5,23.5 + parent: 1 + type: Transform + - uid: 10860 + components: + - rot: 1.5707963267948966 rad + pos: -15.5,51.5 + parent: 1 + type: Transform + - uid: 13301 + components: + - pos: 3.5,19.5 + parent: 1 + type: Transform + - uid: 13302 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,19.5 + parent: 1 + type: Transform + - uid: 13305 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,28.5 + parent: 1 + type: Transform + - uid: 13306 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,29.5 + parent: 1 + type: Transform + - uid: 14816 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,51.5 + parent: 1 + type: Transform + - uid: 14970 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,-5.5 + parent: 1 + type: Transform + - uid: 14974 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,-10.5 + parent: 1 + type: Transform + - uid: 15079 + components: + - rot: -1.5707963267948966 rad + pos: -1.5,16.5 + parent: 1 + type: Transform + - uid: 15080 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,15.5 + parent: 1 + type: Transform + - uid: 15081 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,22.5 + parent: 1 + type: Transform + - uid: 15082 + components: + - rot: 1.5707963267948966 rad + pos: 12.5,35.5 + parent: 1 + type: Transform + - uid: 15083 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,40.5 + parent: 1 + type: Transform +- proto: FirelockElectronics + entities: + - uid: 5541 + components: + - pos: -47.513573,27.566675 + parent: 1 + type: Transform + - uid: 5542 + components: + - pos: -47.372948,27.847925 + parent: 1 + type: Transform +- proto: FirelockGlass + entities: + - uid: 1741 + components: + - pos: -7.5,3.5 + parent: 1 + type: Transform + - uid: 1749 + components: + - pos: -10.5,1.5 + parent: 1 + type: Transform + - uid: 1752 + components: + - pos: 10.5,3.5 + parent: 1 + type: Transform + - uid: 1753 + components: + - pos: 11.5,3.5 + parent: 1 + type: Transform + - uid: 1754 + components: + - pos: 24.5,6.5 + parent: 1 + type: Transform + - uid: 1755 + components: + - pos: 24.5,5.5 + parent: 1 + type: Transform + - uid: 1758 + components: + - pos: -10.5,6.5 + parent: 1 + type: Transform + - uid: 1759 + components: + - pos: -10.5,5.5 + parent: 1 + type: Transform + - uid: 1760 + components: + - pos: -10.5,4.5 + parent: 1 + type: Transform + - uid: 1761 + components: + - pos: -11.5,7.5 + parent: 1 + type: Transform + - uid: 1762 + components: + - pos: -12.5,7.5 + parent: 1 + type: Transform + - uid: 1763 + components: + - pos: -13.5,7.5 + parent: 1 + type: Transform + - uid: 1764 + components: + - pos: -14.5,6.5 + parent: 1 + type: Transform + - uid: 1765 + components: + - pos: -14.5,5.5 + parent: 1 + type: Transform + - uid: 1766 + components: + - pos: -14.5,4.5 + parent: 1 + type: Transform + - uid: 1767 + components: + - pos: 12.5,6.5 + parent: 1 + type: Transform + - uid: 1768 + components: + - pos: 12.5,5.5 + parent: 1 + type: Transform + - uid: 2814 + components: + - pos: -14.5,33.5 + parent: 1 + type: Transform + - uid: 2867 + components: + - pos: 1.5,29.5 + parent: 1 + type: Transform + - uid: 2868 + components: + - pos: 1.5,30.5 + parent: 1 + type: Transform + - uid: 2869 + components: + - pos: -0.5,28.5 + parent: 1 + type: Transform + - uid: 2878 + components: + - pos: 1.5,25.5 + parent: 1 + type: Transform + - uid: 2879 + components: + - pos: 1.5,26.5 + parent: 1 + type: Transform + - uid: 2880 + components: + - pos: 1.5,23.5 + parent: 1 + type: Transform + - uid: 3064 + components: + - pos: -14.5,31.5 + parent: 1 + type: Transform + - uid: 3122 + components: + - pos: -14.5,32.5 + parent: 1 + type: Transform + - uid: 3175 + components: + - pos: -13.5,26.5 + parent: 1 + type: Transform + - uid: 3176 + components: + - pos: -12.5,26.5 + parent: 1 + type: Transform + - uid: 3177 + components: + - pos: -11.5,26.5 + parent: 1 + type: Transform + - uid: 3716 + components: + - pos: -41.5,-0.5 + parent: 1 + type: Transform + - uid: 3717 + components: + - pos: -40.5,-0.5 + parent: 1 + type: Transform + - uid: 3718 + components: + - pos: -39.5,0.5 + parent: 1 + type: Transform + - uid: 3719 + components: + - pos: -39.5,1.5 + parent: 1 + type: Transform + - uid: 3720 + components: + - pos: -38.5,2.5 + parent: 1 + type: Transform + - uid: 3721 + components: + - pos: -37.5,2.5 + parent: 1 + type: Transform + - uid: 3722 + components: + - pos: -36.5,2.5 + parent: 1 + type: Transform + - uid: 3723 + components: + - pos: -35.5,1.5 + parent: 1 + type: Transform + - uid: 3724 + components: + - pos: -35.5,0.5 + parent: 1 + type: Transform + - uid: 3725 + components: + - pos: -32.5,-0.5 + parent: 1 + type: Transform + - uid: 3726 + components: + - pos: -35.5,-2.5 + parent: 1 + type: Transform + - uid: 4107 + components: + - pos: -30.5,4.5 + parent: 1 + type: Transform + - uid: 4108 + components: + - pos: -30.5,5.5 + parent: 1 + type: Transform + - uid: 4109 + components: + - pos: -30.5,6.5 + parent: 1 + type: Transform + - uid: 4110 + components: + - pos: -42.5,4.5 + parent: 1 + type: Transform + - uid: 4111 + components: + - pos: -42.5,5.5 + parent: 1 + type: Transform + - uid: 4112 + components: + - pos: -42.5,6.5 + parent: 1 + type: Transform + - uid: 4114 + components: + - pos: -38.5,8.5 + parent: 1 + type: Transform + - uid: 4115 + components: + - pos: -37.5,8.5 + parent: 1 + type: Transform + - uid: 4116 + components: + - pos: -36.5,8.5 + parent: 1 + type: Transform + - uid: 4126 + components: + - pos: -59.5,-11.5 + parent: 1 + type: Transform + - uid: 4912 + components: + - pos: -59.5,-9.5 + parent: 1 + type: Transform + - uid: 4913 + components: + - pos: -59.5,-10.5 + parent: 1 + type: Transform + - uid: 5210 + components: + - pos: -55.5,4.5 + parent: 1 + type: Transform + - uid: 5211 + components: + - pos: -55.5,5.5 + parent: 1 + type: Transform + - uid: 5212 + components: + - pos: -55.5,6.5 + parent: 1 + type: Transform + - uid: 5213 + components: + - pos: -59.5,6.5 + parent: 1 + type: Transform + - uid: 5214 + components: + - pos: -59.5,5.5 + parent: 1 + type: Transform + - uid: 5215 + components: + - pos: -59.5,4.5 + parent: 1 + type: Transform + - uid: 5216 + components: + - pos: -58.5,3.5 + parent: 1 + type: Transform + - uid: 5217 + components: + - pos: -57.5,3.5 + parent: 1 + type: Transform + - uid: 5218 + components: + - pos: -56.5,3.5 + parent: 1 + type: Transform + - uid: 5219 + components: + - pos: -58.5,7.5 + parent: 1 + type: Transform + - uid: 5220 + components: + - pos: -57.5,7.5 + parent: 1 + type: Transform + - uid: 5221 + components: + - pos: -56.5,7.5 + parent: 1 + type: Transform + - uid: 5225 + components: + - pos: -38.5,30.5 + parent: 1 + type: Transform + - uid: 5226 + components: + - pos: -37.5,30.5 + parent: 1 + type: Transform + - uid: 5227 + components: + - pos: -36.5,30.5 + parent: 1 + type: Transform + - uid: 5228 + components: + - pos: -35.5,31.5 + parent: 1 + type: Transform + - uid: 5229 + components: + - pos: -35.5,32.5 + parent: 1 + type: Transform + - uid: 5230 + components: + - pos: -35.5,33.5 + parent: 1 + type: Transform + - uid: 5231 + components: + - pos: -39.5,31.5 + parent: 1 + type: Transform + - uid: 5232 + components: + - pos: -39.5,32.5 + parent: 1 + type: Transform + - uid: 5233 + components: + - pos: -39.5,33.5 + parent: 1 + type: Transform + - uid: 5234 + components: + - pos: -18.5,31.5 + parent: 1 + type: Transform + - uid: 5235 + components: + - pos: -18.5,32.5 + parent: 1 + type: Transform + - uid: 5236 + components: + - pos: -18.5,33.5 + parent: 1 + type: Transform + - uid: 5237 + components: + - pos: -17.5,34.5 + parent: 1 + type: Transform + - uid: 5238 + components: + - pos: -16.5,34.5 + parent: 1 + type: Transform + - uid: 5239 + components: + - pos: -15.5,34.5 + parent: 1 + type: Transform + - uid: 5240 + components: + - pos: -55.5,31.5 + parent: 1 + type: Transform + - uid: 5241 + components: + - pos: -55.5,32.5 + parent: 1 + type: Transform + - uid: 5242 + components: + - pos: -55.5,33.5 + parent: 1 + type: Transform + - uid: 5243 + components: + - pos: -56.5,30.5 + parent: 1 + type: Transform + - uid: 5244 + components: + - pos: -57.5,30.5 + parent: 1 + type: Transform + - uid: 5245 + components: + - pos: -58.5,30.5 + parent: 1 + type: Transform + - uid: 7995 + components: + - pos: -48.5,34.5 + parent: 1 + type: Transform + - uid: 7996 + components: + - pos: -47.5,34.5 + parent: 1 + type: Transform + - uid: 7997 + components: + - pos: -46.5,34.5 + parent: 1 + type: Transform + - uid: 8001 + components: + - pos: -58.5,34.5 + parent: 1 + type: Transform + - uid: 8002 + components: + - pos: -57.5,34.5 + parent: 1 + type: Transform + - uid: 8003 + components: + - pos: -56.5,34.5 + parent: 1 + type: Transform + - uid: 8542 + components: + - pos: -53.5,61.5 + parent: 1 + type: Transform + - uid: 8543 + components: + - pos: -53.5,60.5 + parent: 1 + type: Transform + - uid: 8578 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,56.5 + parent: 1 + type: Transform + - uid: 8579 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,63.5 + parent: 1 + type: Transform + - uid: 8580 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,64.5 + parent: 1 + type: Transform + - uid: 8581 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,65.5 + parent: 1 + type: Transform + - uid: 9819 + components: + - pos: -19.5,36.5 + parent: 1 + type: Transform + - uid: 10684 + components: + - pos: -74.5,27.5 + parent: 1 + type: Transform + - uid: 10685 + components: + - pos: -73.5,27.5 + parent: 1 + type: Transform + - uid: 10686 + components: + - pos: -74.5,23.5 + parent: 1 + type: Transform + - uid: 10687 + components: + - pos: -73.5,23.5 + parent: 1 + type: Transform + - uid: 10688 + components: + - pos: -65.5,33.5 + parent: 1 + type: Transform + - uid: 10689 + components: + - pos: -65.5,34.5 + parent: 1 + type: Transform + - uid: 13307 + components: + - pos: 2.5,27.5 + parent: 1 + type: Transform + - uid: 13308 + components: + - pos: 3.5,27.5 + parent: 1 + type: Transform + - uid: 13309 + components: + - pos: 4.5,27.5 + parent: 1 + type: Transform + - uid: 14302 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,21.5 + parent: 1 + type: Transform + - uid: 14303 + components: + - rot: 1.5707963267948966 rad + pos: -77.5,25.5 + parent: 1 + type: Transform + - uid: 14304 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,18.5 + parent: 1 + type: Transform + - uid: 14817 + components: + - rot: 3.141592653589793 rad + pos: -16.5,52.5 + parent: 1 + type: Transform + - uid: 15376 + components: + - rot: 3.141592653589793 rad + pos: 19.5,7.5 + parent: 1 + type: Transform + - uid: 15378 + components: + - rot: 3.141592653589793 rad + pos: 26.5,22.5 + parent: 1 + type: Transform + - uid: 15379 + components: + - rot: 3.141592653589793 rad + pos: 26.5,4.5 + parent: 1 + type: Transform + - uid: 15649 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,1.5 + parent: 1 + type: Transform +- proto: Fireplace + entities: + - uid: 3032 + components: + - pos: -23.5,18.5 + parent: 1 + type: Transform + - uid: 5356 + components: + - pos: -51.5,-0.5 + parent: 1 + type: Transform +- proto: Flash + entities: + - uid: 2851 + components: + - pos: -16.489683,29.613209 + parent: 1 + type: Transform + - uid: 10916 + components: + - pos: -12.483002,63.566193 + parent: 1 + type: Transform +- proto: FlashlightLantern + entities: + - uid: 4103 + components: + - pos: -33.652264,-1.2000351 + parent: 1 + type: Transform + - uid: 4104 + components: + - pos: -33.44914,-1.4031601 + parent: 1 + type: Transform +- proto: FlashlightSeclite + entities: + - uid: 2842 + components: + - pos: -17.543365,26.708624 + parent: 1 + type: Transform + - uid: 3315 + components: + - pos: -17.49649,26.396124 + parent: 1 + type: Transform + - uid: 13335 + components: + - pos: -0.51456356,10.706236 + parent: 1 + type: Transform + - uid: 13336 + components: + - pos: -0.48331353,10.346861 + parent: 1 + type: Transform +- proto: Floodlight + entities: + - uid: 15527 + components: + - pos: 7.5332904,-17.502348 + parent: 1 + type: Transform +- proto: FloorDrain + entities: + - uid: 1981 + components: + - pos: -2.5,25.5 + parent: 1 + type: Transform + - fixtures: {} + type: Fixtures + - uid: 6928 + components: + - pos: -28.5,46.5 + parent: 1 + type: Transform + - fixtures: {} + type: Fixtures + - uid: 10144 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,36.5 + parent: 1 + type: Transform + - fixtures: {} + type: Fixtures +- proto: FloraTree01 + entities: + - uid: 5652 + components: + - pos: -31.673817,19.688118 + parent: 1 + type: Transform + - uid: 7525 + components: + - pos: -11.963879,39.845062 + parent: 1 + type: Transform +- proto: FloraTree02 + entities: + - uid: 7523 + components: + - pos: -12.854504,35.595062 + parent: 1 + type: Transform +- proto: FloraTree03 + entities: + - uid: 5651 + components: + - pos: -34.080067,20.500618 + parent: 1 + type: Transform +- proto: FloraTree04 + entities: + - uid: 5653 + components: + - pos: -33.986317,15.672493 + parent: 1 + type: Transform +- proto: FloraTree05 + entities: + - uid: 7526 + components: + - pos: -13.010754,43.235687 + parent: 1 + type: Transform +- proto: FloraTreeStump + entities: + - uid: 15850 + components: + - pos: 20.438618,40.115738 + parent: 1 + type: Transform +- proto: FluteInstrument + entities: + - uid: 14705 + components: + - pos: -4.5521817,51.503952 + parent: 1 + type: Transform +- proto: FoamBlade + entities: + - uid: 5803 + components: + - desc: A highly detailed replica of a real armblade. + type: MetaData + - pos: -9.533392,20.561493 + parent: 1 + type: Transform +- proto: FoodBowlBigTrash + entities: + - uid: 1873 + components: + - pos: -35.01638,3.9468641 + parent: 1 + type: Transform +- proto: FoodBoxDonkpocketBerry + entities: + - uid: 7947 + components: + - pos: -54.482857,64.65437 + parent: 1 + type: Transform +- proto: FoodBoxDonut + entities: + - uid: 15100 + components: + - pos: -15.485719,25.584269 + parent: 1 + type: Transform +- proto: FoodCakeSpaceman + entities: + - uid: 13835 + components: + - pos: -4.5029564,53.587227 + parent: 1 + type: Transform +- proto: FoodCheese + entities: + - uid: 5801 + components: + - pos: -9.517767,22.3806 + parent: 1 + type: Transform +- proto: FoodDonutJellySpaceman + entities: + - uid: 14938 + components: + - pos: -111.48177,18.535988 + parent: 1 + type: Transform +- proto: FoodMealSashimi + entities: + - uid: 6056 + components: + - pos: -48.5126,9.614483 + parent: 1 + type: Transform +- proto: FoodPieBananaCream + entities: + - uid: 4240 + components: + - pos: -41.421516,28.723614 + parent: 1 + type: Transform +- proto: FoodPlateSmallTrash + entities: + - uid: 2640 + components: + - pos: -35.54763,4.040614 + parent: 1 + type: Transform + - uid: 2886 + components: + - pos: -36.188255,4.056239 + parent: 1 + type: Transform + - uid: 4237 + components: + - pos: -35.29763,3.4937391 + parent: 1 + type: Transform +- proto: FoodPlateTrash + entities: + - uid: 1527 + components: + - pos: -35.73513,3.8687391 + parent: 1 + type: Transform +- proto: FoodSoupEyeball + entities: + - uid: 15186 + components: + - pos: 4.4872284,54.545197 + parent: 1 + type: Transform +- proto: FoodSoupStew + entities: + - uid: 5598 + components: + - pos: -49.501343,9.695094 + parent: 1 + type: Transform +- proto: FoodTinBeans + entities: + - uid: 1528 + components: + - pos: 10.541792,-13.39496 + parent: 1 + type: Transform +- proto: ForensicPad + entities: + - uid: 12914 + components: + - pos: 1.5309631,43.363426 + parent: 1 + type: Transform + - uid: 12915 + components: + - pos: 2.583364,43.44034 + parent: 1 + type: Transform +- proto: GasAnalyzer + entities: + - uid: 15550 + components: + - pos: 11.778922,-20.456448 + parent: 1 + type: Transform +- proto: GasCanisterBrokenBase + entities: + - uid: 370 + components: + - pos: 0.5,-15.5 + parent: 1 + type: Transform +- proto: GasFilterFlipped + entities: + - uid: 2397 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,35.5 + parent: 1 + type: Transform +- proto: GasMinerCarbonDioxide + entities: + - uid: 10841 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,39.5 + parent: 1 + type: Transform +- proto: GasMinerNitrogen + entities: + - uid: 10840 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,37.5 + parent: 1 + type: Transform + - maxExternalPressure: 4000 + type: GasMiner +- proto: GasMinerOxygen + entities: + - uid: 10839 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,35.5 + parent: 1 + type: Transform + - maxExternalPressure: 4000 + type: GasMiner +- proto: GasMinerPlasma + entities: + - uid: 10842 + components: + - pos: -89.5,43.5 + parent: 1 + type: Transform +- proto: GasOutletInjector + entities: + - uid: 13633 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,35.5 + parent: 1 + type: Transform + - uid: 13634 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,37.5 + parent: 1 + type: Transform + - uid: 13635 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,39.5 + parent: 1 + type: Transform + - uid: 13636 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,41.5 + parent: 1 + type: Transform + - uid: 13637 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,43.5 + parent: 1 + type: Transform + - uid: 13638 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,45.5 + parent: 1 + type: Transform +- proto: GasPassiveVent + entities: + - uid: 364 + components: + - rot: 3.141592653589793 rad + pos: 0.5,-14.5 + parent: 1 + type: Transform + - uid: 365 + components: + - rot: 3.141592653589793 rad + pos: 2.5,-14.5 + parent: 1 + type: Transform + - uid: 13627 + components: + - pos: -90.5,45.5 + parent: 1 + type: Transform + - uid: 13628 + components: + - pos: -90.5,43.5 + parent: 1 + type: Transform + - uid: 13629 + components: + - pos: -90.5,41.5 + parent: 1 + type: Transform + - uid: 13630 + components: + - pos: -90.5,39.5 + parent: 1 + type: Transform + - uid: 13631 + components: + - pos: -90.5,37.5 + parent: 1 + type: Transform + - uid: 13632 + components: + - pos: -90.5,35.5 + parent: 1 + type: Transform + - uid: 13858 + components: + - pos: -84.5,48.5 + parent: 1 + type: Transform + - uid: 13859 + components: + - pos: -83.5,50.5 + parent: 1 + type: Transform + - uid: 13860 + components: + - pos: -81.5,50.5 + parent: 1 + type: Transform + - uid: 13916 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,33.5 + parent: 1 + type: Transform +- proto: GasPipeBend + entities: + - uid: 2385 + components: + - rot: 3.141592653589793 rad + pos: 6.5,35.5 + parent: 1 + type: Transform + - uid: 2387 + components: + - pos: 11.5,35.5 + parent: 1 + type: Transform + - uid: 2388 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,34.5 + parent: 1 + type: Transform + - uid: 2389 + components: + - rot: 3.141592653589793 rad + pos: 9.5,34.5 + parent: 1 + type: Transform + - uid: 2390 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,36.5 + parent: 1 + type: Transform + - uid: 2391 + components: + - rot: -1.5707963267948966 rad + pos: 12.5,36.5 + parent: 1 + type: Transform + - uid: 2419 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2420 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2457 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2458 + components: + - rot: -1.5707963267948966 rad + pos: 14.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2460 + components: + - rot: 1.5707963267948966 rad + pos: 15.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2463 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3016 + components: + - rot: 3.141592653589793 rad + pos: 2.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3017 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3018 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3687 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5387 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8693 + components: + - pos: -46.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8746 + components: + - pos: -56.5,57.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8752 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8753 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8767 + components: + - pos: -55.5,58.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8926 + components: + - pos: -52.5,88.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8927 + components: + - pos: -50.5,89.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8931 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,88.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8932 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,89.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10796 + components: + - pos: 10.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 10797 + components: + - pos: 9.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11126 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11221 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11222 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11227 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11228 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,46.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11279 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11287 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11288 + components: + - rot: -1.5707963267948966 rad + pos: -48.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11312 + components: + - rot: 3.141592653589793 rad + pos: -52.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11534 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11649 + components: + - rot: 3.141592653589793 rad + pos: -33.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11679 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11680 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11788 + components: + - pos: -57.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11820 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12186 + components: + - rot: 3.141592653589793 rad + pos: -19.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12189 + components: + - pos: -19.5,38.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12217 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12319 + components: + - rot: 3.141592653589793 rad + pos: -13.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12370 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,-5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12371 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,-5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12372 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,-8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12373 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,-8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12399 + components: + - rot: 1.5707963267948966 rad + pos: -3.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12400 + components: + - rot: -1.5707963267948966 rad + pos: -3.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12401 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12402 + components: + - rot: -1.5707963267948966 rad + pos: -4.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12554 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12726 + components: + - pos: -1.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12727 + components: + - pos: -2.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12728 + components: + - rot: 3.141592653589793 rad + pos: -2.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12729 + components: + - rot: 3.141592653589793 rad + pos: -1.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12743 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,14.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12751 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12752 + components: + - pos: 11.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13014 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13015 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13719 + components: + - rot: 3.141592653589793 rad + pos: -90.5,34.5 + parent: 1 + type: Transform + - uid: 13720 + components: + - rot: 3.141592653589793 rad + pos: -90.5,36.5 + parent: 1 + type: Transform + - uid: 13721 + components: + - rot: 3.141592653589793 rad + pos: -90.5,38.5 + parent: 1 + type: Transform + - uid: 13722 + components: + - rot: 3.141592653589793 rad + pos: -90.5,40.5 + parent: 1 + type: Transform + - uid: 13725 + components: + - rot: 3.141592653589793 rad + pos: -90.5,42.5 + parent: 1 + type: Transform + - uid: 13730 + components: + - rot: 3.141592653589793 rad + pos: -90.5,44.5 + parent: 1 + type: Transform + - uid: 13862 + components: + - pos: -82.5,47.5 + parent: 1 + type: Transform + - uid: 13863 + components: + - rot: 3.141592653589793 rad + pos: -83.5,47.5 + parent: 1 + type: Transform + - uid: 13983 + components: + - pos: -66.5,50.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13984 + components: + - pos: -67.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13985 + components: + - rot: 3.141592653589793 rad + pos: -67.5,50.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13997 + components: + - pos: -61.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14021 + components: + - pos: -72.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14022 + components: + - pos: -71.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14023 + components: + - rot: 3.141592653589793 rad + pos: -72.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14024 + components: + - rot: 3.141592653589793 rad + pos: -71.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14054 + components: + - rot: 3.141592653589793 rad + pos: -74.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14055 + components: + - rot: 3.141592653589793 rad + pos: -73.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14106 + components: + - rot: 3.141592653589793 rad + pos: -71.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14107 + components: + - rot: 3.141592653589793 rad + pos: -70.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14108 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14133 + components: + - pos: -64.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14134 + components: + - pos: -63.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14135 + components: + - rot: -1.5707963267948966 rad + pos: -63.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14136 + components: + - rot: -1.5707963267948966 rad + pos: -64.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor +- proto: GasPipeFourway + entities: + - uid: 2386 + components: + - pos: 9.5,35.5 + parent: 1 + type: Transform + - uid: 2685 + components: + - pos: 2.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8692 + components: + - pos: -47.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8781 + components: + - pos: -52.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 10234 + components: + - pos: -40.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11083 + components: + - pos: -56.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11084 + components: + - pos: -57.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11189 + components: + - pos: -41.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11278 + components: + - pos: -48.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11532 + components: + - pos: -38.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11533 + components: + - pos: -36.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11559 + components: + - pos: -36.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11560 + components: + - pos: -38.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11759 + components: + - pos: -58.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11761 + components: + - pos: -56.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11940 + components: + - pos: -41.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11941 + components: + - pos: -40.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11974 + components: + - pos: -44.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11975 + components: + - pos: -43.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12052 + components: + - pos: -38.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12053 + components: + - pos: -36.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12094 + components: + - pos: -23.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12191 + components: + - pos: -17.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12192 + components: + - pos: -15.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12298 + components: + - pos: -13.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12299 + components: + - pos: -11.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12349 + components: + - pos: -9.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12423 + components: + - pos: -11.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12427 + components: + - pos: -11.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12647 + components: + - pos: 26.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12970 + components: + - pos: -17.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12971 + components: + - pos: -15.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor +- proto: GasPipeStraight + entities: + - uid: 354 + components: + - rot: 3.141592653589793 rad + pos: 0.5,-10.5 + parent: 1 + type: Transform + - uid: 355 + components: + - rot: 3.141592653589793 rad + pos: 0.5,-11.5 + parent: 1 + type: Transform + - uid: 356 + components: + - rot: 3.141592653589793 rad + pos: 0.5,-12.5 + parent: 1 + type: Transform + - uid: 357 + components: + - rot: 3.141592653589793 rad + pos: 0.5,-13.5 + parent: 1 + type: Transform + - uid: 358 + components: + - rot: 3.141592653589793 rad + pos: 2.5,-13.5 + parent: 1 + type: Transform + - uid: 359 + components: + - rot: 3.141592653589793 rad + pos: 2.5,-12.5 + parent: 1 + type: Transform + - uid: 360 + components: + - rot: 3.141592653589793 rad + pos: 2.5,-11.5 + parent: 1 + type: Transform + - uid: 361 + components: + - rot: 3.141592653589793 rad + pos: 2.5,-10.5 + parent: 1 + type: Transform + - uid: 1213 + components: + - rot: 3.141592653589793 rad + pos: -0.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 1228 + components: + - rot: 3.141592653589793 rad + pos: -0.5,8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 1242 + components: + - rot: 3.141592653589793 rad + pos: 0.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 1248 + components: + - rot: 3.141592653589793 rad + pos: 0.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 1329 + components: + - rot: 3.141592653589793 rad + pos: -0.5,7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 1369 + components: + - rot: 3.141592653589793 rad + pos: -0.5,6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 1513 + components: + - rot: 3.141592653589793 rad + pos: -17.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 1771 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 1772 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 1773 + components: + - rot: 3.141592653589793 rad + pos: 14.5,-0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 1779 + components: + - rot: 3.141592653589793 rad + pos: 15.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 1790 + components: + - rot: 3.141592653589793 rad + pos: 14.5,1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 1797 + components: + - rot: 3.141592653589793 rad + pos: 14.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 1798 + components: + - rot: 3.141592653589793 rad + pos: 15.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2392 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,36.5 + parent: 1 + type: Transform + - uid: 2393 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,34.5 + parent: 1 + type: Transform + - uid: 2395 + components: + - rot: 3.141592653589793 rad + pos: 6.5,36.5 + parent: 1 + type: Transform + - uid: 2403 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2404 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2405 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2406 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2407 + components: + - rot: 3.141592653589793 rad + pos: 4.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2412 + components: + - rot: 3.141592653589793 rad + pos: 4.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2413 + components: + - rot: 3.141592653589793 rad + pos: 4.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2414 + components: + - rot: 3.141592653589793 rad + pos: 4.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2415 + components: + - rot: 3.141592653589793 rad + pos: 2.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2417 + components: + - rot: 3.141592653589793 rad + pos: 2.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2426 + components: + - rot: 1.5707963267948966 rad + pos: 3.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2427 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2428 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2429 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2430 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2431 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2434 + components: + - pos: 3.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2435 + components: + - pos: 3.5,36.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2436 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2437 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2438 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2439 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2440 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2441 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2442 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2443 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2444 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2445 + components: + - rot: 3.141592653589793 rad + pos: 8.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2446 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2447 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2448 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2449 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2450 + components: + - rot: 1.5707963267948966 rad + pos: 12.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2451 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2452 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2453 + components: + - rot: 1.5707963267948966 rad + pos: 12.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2454 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2455 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2456 + components: + - rot: 3.141592653589793 rad + pos: 15.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2462 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2464 + components: + - pos: 15.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2465 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2466 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2467 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2468 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2469 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2470 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2484 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2675 + components: + - pos: 2.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2676 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2677 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2678 + components: + - rot: 3.141592653589793 rad + pos: 2.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2679 + components: + - rot: 3.141592653589793 rad + pos: 4.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2680 + components: + - rot: 3.141592653589793 rad + pos: 4.5,27.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2681 + components: + - rot: 3.141592653589793 rad + pos: 4.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2682 + components: + - rot: 3.141592653589793 rad + pos: 2.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2775 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2864 + components: + - rot: 1.5707963267948966 rad + pos: 3.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2871 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2872 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2873 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2874 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2875 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2876 + components: + - pos: 2.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2877 + components: + - pos: 4.5,22.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2895 + components: + - pos: -15.5,27.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2902 + components: + - rot: 3.141592653589793 rad + pos: -15.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2919 + components: + - pos: -15.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3003 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3004 + components: + - pos: 4.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3005 + components: + - pos: 3.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3006 + components: + - pos: 4.5,18.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3007 + components: + - pos: 3.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3008 + components: + - pos: 4.5,17.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3009 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3010 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3011 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3012 + components: + - rot: 3.141592653589793 rad + pos: 4.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3013 + components: + - rot: 3.141592653589793 rad + pos: 2.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3014 + components: + - rot: 3.141592653589793 rad + pos: 2.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3015 + components: + - rot: 3.141592653589793 rad + pos: 4.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3025 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3179 + components: + - pos: -17.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3319 + components: + - pos: -17.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3320 + components: + - pos: -15.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3349 + components: + - rot: 3.141592653589793 rad + pos: -40.5,-8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3350 + components: + - rot: 3.141592653589793 rad + pos: -40.5,-4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3351 + components: + - rot: 3.141592653589793 rad + pos: -39.5,-7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3356 + components: + - rot: 3.141592653589793 rad + pos: -39.5,-8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3357 + components: + - rot: 3.141592653589793 rad + pos: -39.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3360 + components: + - rot: 3.141592653589793 rad + pos: -40.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3551 + components: + - pos: -40.5,-6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3559 + components: + - rot: 3.141592653589793 rad + pos: -40.5,-5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3563 + components: + - rot: 3.141592653589793 rad + pos: -39.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3571 + components: + - rot: 3.141592653589793 rad + pos: -40.5,-10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3574 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3617 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3631 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3657 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3683 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3704 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3715 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3840 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3844 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3846 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3851 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3960 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3961 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4106 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4265 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4752 + components: + - pos: -64.5,-10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4753 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4755 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4775 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4776 + components: + - rot: 1.5707963267948966 rad + pos: -66.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4777 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4778 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4779 + components: + - rot: 1.5707963267948966 rad + pos: -69.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4780 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4781 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4803 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4804 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4808 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4877 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4878 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4914 + components: + - rot: 1.5707963267948966 rad + pos: -69.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4915 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4916 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4917 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4918 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4919 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4920 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4921 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4931 + components: + - rot: 3.141592653589793 rad + pos: -58.5,-8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4957 + components: + - rot: 1.5707963267948966 rad + pos: -66.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4974 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4975 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 5317 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,6.5 + parent: 1 + type: Transform + - uid: 5350 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,6.5 + parent: 1 + type: Transform + - uid: 5393 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5397 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5401 + components: + - pos: -42.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5462 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5690 + components: + - pos: -17.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5764 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5765 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 5789 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5790 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 6253 + components: + - rot: 1.5707963267948966 rad + pos: -50.5,4.5 + parent: 1 + type: Transform + - uid: 7441 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 7442 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8674 + components: + - pos: -46.5,48.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8675 + components: + - pos: -46.5,49.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8676 + components: + - pos: -46.5,50.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8677 + components: + - pos: -46.5,51.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8678 + components: + - pos: -46.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8679 + components: + - pos: -46.5,53.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8680 + components: + - pos: -46.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8681 + components: + - pos: -48.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8682 + components: + - pos: -48.5,49.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8683 + components: + - pos: -48.5,50.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8684 + components: + - pos: -48.5,51.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8685 + components: + - pos: -48.5,52.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8687 + components: + - rot: -1.5707963267948966 rad + pos: -48.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8688 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8689 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8694 + components: + - pos: -47.5,56.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8695 + components: + - pos: -47.5,57.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8696 + components: + - pos: -47.5,58.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8701 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8703 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8705 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8706 + components: + - rot: -1.5707963267948966 rad + pos: -58.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8707 + components: + - rot: 3.141592653589793 rad + pos: -51.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8708 + components: + - rot: 3.141592653589793 rad + pos: -51.5,53.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8709 + components: + - rot: 3.141592653589793 rad + pos: -51.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8710 + components: + - rot: 3.141592653589793 rad + pos: -51.5,51.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8711 + components: + - rot: 3.141592653589793 rad + pos: -50.5,52.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8712 + components: + - rot: 3.141592653589793 rad + pos: -50.5,51.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8713 + components: + - rot: 3.141592653589793 rad + pos: -53.5,52.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8714 + components: + - rot: 3.141592653589793 rad + pos: -53.5,51.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8715 + components: + - rot: 3.141592653589793 rad + pos: -54.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8716 + components: + - rot: 3.141592653589793 rad + pos: -54.5,51.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8717 + components: + - rot: 3.141592653589793 rad + pos: -56.5,52.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8718 + components: + - rot: 3.141592653589793 rad + pos: -56.5,51.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8719 + components: + - rot: 3.141592653589793 rad + pos: -57.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8720 + components: + - rot: 3.141592653589793 rad + pos: -57.5,51.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8721 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8723 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8725 + components: + - pos: -55.5,54.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8726 + components: + - pos: -55.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8728 + components: + - pos: -55.5,57.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8729 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,58.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8730 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,58.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8731 + components: + - rot: -1.5707963267948966 rad + pos: -58.5,58.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8732 + components: + - rot: -1.5707963267948966 rad + pos: -59.5,58.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8737 + components: + - rot: 3.141592653589793 rad + pos: -54.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8738 + components: + - rot: 3.141592653589793 rad + pos: -54.5,53.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8739 + components: + - rot: 3.141592653589793 rad + pos: -57.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8740 + components: + - rot: 3.141592653589793 rad + pos: -57.5,53.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8741 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8742 + components: + - rot: 3.141592653589793 rad + pos: -56.5,56.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8743 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,57.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8744 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,57.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8745 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,57.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8747 + components: + - rot: -1.5707963267948966 rad + pos: -59.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8748 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8749 + components: + - rot: 3.141592653589793 rad + pos: -61.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8750 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8751 + components: + - pos: -61.5,53.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8768 + components: + - rot: 3.141592653589793 rad + pos: -52.5,54.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8769 + components: + - rot: 3.141592653589793 rad + pos: -52.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8770 + components: + - rot: 3.141592653589793 rad + pos: -52.5,56.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8771 + components: + - rot: 3.141592653589793 rad + pos: -52.5,57.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8772 + components: + - rot: 3.141592653589793 rad + pos: -52.5,58.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8773 + components: + - rot: 3.141592653589793 rad + pos: -52.5,59.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8774 + components: + - rot: 3.141592653589793 rad + pos: -50.5,56.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8775 + components: + - rot: 3.141592653589793 rad + pos: -50.5,57.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8776 + components: + - rot: 3.141592653589793 rad + pos: -50.5,58.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8777 + components: + - rot: 3.141592653589793 rad + pos: -50.5,59.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8786 + components: + - pos: -52.5,60.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8789 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8790 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8791 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8792 + components: + - rot: -1.5707963267948966 rad + pos: -48.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8794 + components: + - rot: 3.141592653589793 rad + pos: -52.5,63.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8795 + components: + - rot: 3.141592653589793 rad + pos: -52.5,64.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8796 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8797 + components: + - rot: 1.5707963267948966 rad + pos: -50.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8798 + components: + - rot: 1.5707963267948966 rad + pos: -49.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8799 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8800 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8801 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8802 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8803 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8804 + components: + - rot: 1.5707963267948966 rad + pos: -43.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8805 + components: + - rot: 1.5707963267948966 rad + pos: -49.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8806 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8807 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8808 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8809 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8810 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8811 + components: + - rot: 1.5707963267948966 rad + pos: -43.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8812 + components: + - pos: -50.5,65.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8813 + components: + - pos: -50.5,66.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8815 + components: + - pos: -52.5,66.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8816 + components: + - pos: -52.5,67.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8818 + components: + - pos: -50.5,61.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8819 + components: + - pos: -50.5,62.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8820 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8821 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8822 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8823 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8824 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8825 + components: + - rot: 3.141592653589793 rad + pos: -54.5,62.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8826 + components: + - rot: 3.141592653589793 rad + pos: -54.5,63.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8827 + components: + - rot: 3.141592653589793 rad + pos: -55.5,61.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8828 + components: + - rot: 3.141592653589793 rad + pos: -55.5,62.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8829 + components: + - rot: 3.141592653589793 rad + pos: -55.5,63.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8830 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8831 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8832 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8833 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8834 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8835 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8836 + components: + - pos: -58.5,62.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8837 + components: + - pos: -58.5,63.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8838 + components: + - pos: -59.5,61.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8839 + components: + - pos: -59.5,62.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8840 + components: + - pos: -59.5,63.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8841 + components: + - rot: -1.5707963267948966 rad + pos: -59.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8851 + components: + - rot: 3.141592653589793 rad + pos: -52.5,68.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8852 + components: + - rot: 3.141592653589793 rad + pos: -52.5,69.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8853 + components: + - rot: 3.141592653589793 rad + pos: -52.5,70.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8854 + components: + - rot: 3.141592653589793 rad + pos: -52.5,71.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8855 + components: + - rot: 3.141592653589793 rad + pos: -52.5,72.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8856 + components: + - rot: 3.141592653589793 rad + pos: -52.5,73.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8857 + components: + - rot: 3.141592653589793 rad + pos: -52.5,74.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8858 + components: + - rot: 3.141592653589793 rad + pos: -52.5,75.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8859 + components: + - rot: 3.141592653589793 rad + pos: -52.5,76.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8860 + components: + - rot: 3.141592653589793 rad + pos: -52.5,77.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8861 + components: + - rot: 3.141592653589793 rad + pos: -52.5,78.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8862 + components: + - rot: 3.141592653589793 rad + pos: -52.5,79.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8863 + components: + - rot: 3.141592653589793 rad + pos: -52.5,80.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8864 + components: + - rot: 3.141592653589793 rad + pos: -50.5,68.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8865 + components: + - rot: 3.141592653589793 rad + pos: -50.5,68.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8866 + components: + - rot: 3.141592653589793 rad + pos: -50.5,69.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8867 + components: + - rot: 3.141592653589793 rad + pos: -50.5,70.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8868 + components: + - rot: 3.141592653589793 rad + pos: -50.5,71.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8869 + components: + - rot: 3.141592653589793 rad + pos: -50.5,72.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8870 + components: + - rot: 3.141592653589793 rad + pos: -50.5,73.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8871 + components: + - rot: 3.141592653589793 rad + pos: -50.5,74.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8872 + components: + - rot: 3.141592653589793 rad + pos: -50.5,75.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8873 + components: + - rot: 3.141592653589793 rad + pos: -50.5,76.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8874 + components: + - rot: 3.141592653589793 rad + pos: -50.5,77.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8875 + components: + - rot: 3.141592653589793 rad + pos: -50.5,78.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8876 + components: + - rot: 3.141592653589793 rad + pos: -50.5,79.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8877 + components: + - rot: 3.141592653589793 rad + pos: -52.5,81.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8878 + components: + - rot: 3.141592653589793 rad + pos: -52.5,82.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8879 + components: + - rot: 3.141592653589793 rad + pos: -50.5,81.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8880 + components: + - rot: 3.141592653589793 rad + pos: -50.5,82.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8889 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,84.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8890 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,84.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8891 + components: + - pos: -52.5,83.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8892 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,84.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8893 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,84.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8894 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,83.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8895 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,83.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8896 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,83.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8897 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,83.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8898 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,83.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8899 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,83.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8900 + components: + - rot: 3.141592653589793 rad + pos: -50.5,85.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8901 + components: + - rot: 3.141592653589793 rad + pos: -50.5,86.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8902 + components: + - rot: 3.141592653589793 rad + pos: -50.5,87.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8903 + components: + - rot: 3.141592653589793 rad + pos: -50.5,88.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8904 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,89.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8905 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,89.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8906 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,89.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8907 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,89.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8908 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,89.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8909 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,89.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8910 + components: + - pos: -58.5,88.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8919 + components: + - rot: 3.141592653589793 rad + pos: -52.5,86.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8920 + components: + - rot: 3.141592653589793 rad + pos: -52.5,87.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8921 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,88.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8922 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,88.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8923 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,88.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 9573 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10054 + components: + - rot: 3.141592653589793 rad + pos: 10.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 10072 + components: + - pos: 10.5,18.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 10235 + components: + - rot: 3.141592653589793 rad + pos: -39.5,-3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10240 + components: + - rot: 3.141592653589793 rad + pos: -39.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10241 + components: + - rot: 3.141592653589793 rad + pos: -39.5,-4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10312 + components: + - pos: -11.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10347 + components: + - rot: -1.5707963267948966 rad + pos: -44.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10704 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11087 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11088 + components: + - pos: -57.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11089 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11090 + components: + - rot: 3.141592653589793 rad + pos: -56.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11092 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11097 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,37.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11098 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11099 + components: + - rot: 3.141592653589793 rad + pos: -57.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11100 + components: + - rot: 3.141592653589793 rad + pos: -57.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11101 + components: + - rot: 3.141592653589793 rad + pos: -56.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11102 + components: + - rot: 3.141592653589793 rad + pos: -56.5,38.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11104 + components: + - rot: 3.141592653589793 rad + pos: -57.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11105 + components: + - rot: 3.141592653589793 rad + pos: -57.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11106 + components: + - rot: 3.141592653589793 rad + pos: -57.5,36.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11107 + components: + - rot: 3.141592653589793 rad + pos: -56.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11108 + components: + - rot: 3.141592653589793 rad + pos: -56.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11109 + components: + - rot: 3.141592653589793 rad + pos: -56.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11110 + components: + - rot: 3.141592653589793 rad + pos: -56.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11111 + components: + - rot: 3.141592653589793 rad + pos: -57.5,39.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11112 + components: + - rot: 3.141592653589793 rad + pos: -57.5,40.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11113 + components: + - rot: 3.141592653589793 rad + pos: -57.5,41.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11115 + components: + - rot: 3.141592653589793 rad + pos: -56.5,40.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11117 + components: + - rot: 3.141592653589793 rad + pos: -56.5,42.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11118 + components: + - rot: 3.141592653589793 rad + pos: -56.5,39.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11127 + components: + - pos: -56.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11128 + components: + - pos: -57.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11129 + components: + - pos: -57.5,46.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11130 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11131 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11132 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11133 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11135 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11136 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11138 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11139 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11140 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11141 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11142 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11143 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11144 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11149 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11150 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11151 + components: + - pos: -48.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11152 + components: + - rot: 3.141592653589793 rad + pos: -46.5,46.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11153 + components: + - rot: 3.141592653589793 rad + pos: -46.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11154 + components: + - rot: 3.141592653589793 rad + pos: -46.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11155 + components: + - rot: 3.141592653589793 rad + pos: -48.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11170 + components: + - pos: -48.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11171 + components: + - pos: -48.5,42.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11176 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11177 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11178 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11179 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11180 + components: + - rot: -1.5707963267948966 rad + pos: -44.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11181 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11182 + components: + - rot: -1.5707963267948966 rad + pos: -44.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11183 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11186 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11187 + components: + - rot: 3.141592653589793 rad + pos: -41.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11188 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11190 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11191 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11193 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11194 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11195 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11197 + components: + - rot: 3.141592653589793 rad + pos: -40.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11198 + components: + - rot: 3.141592653589793 rad + pos: -40.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11199 + components: + - rot: 3.141592653589793 rad + pos: -40.5,46.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11200 + components: + - rot: 3.141592653589793 rad + pos: -40.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11201 + components: + - rot: 3.141592653589793 rad + pos: -40.5,48.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11202 + components: + - rot: 3.141592653589793 rad + pos: -41.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11203 + components: + - rot: 3.141592653589793 rad + pos: -41.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11204 + components: + - rot: 3.141592653589793 rad + pos: -41.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11205 + components: + - rot: 3.141592653589793 rad + pos: -41.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11206 + components: + - rot: 3.141592653589793 rad + pos: -41.5,49.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11207 + components: + - rot: 3.141592653589793 rad + pos: -40.5,49.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11210 + components: + - pos: -46.5,41.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11213 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11214 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11215 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11216 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11217 + components: + - rot: 3.141592653589793 rad + pos: -36.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11218 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11219 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11220 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11225 + components: + - pos: -32.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11226 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11229 + components: + - pos: -33.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11230 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11231 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11232 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11233 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,46.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11234 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,46.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11241 + components: + - rot: 3.141592653589793 rad + pos: -46.5,40.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11242 + components: + - rot: 3.141592653589793 rad + pos: -46.5,39.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11243 + components: + - rot: 3.141592653589793 rad + pos: -46.5,38.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11244 + components: + - rot: 3.141592653589793 rad + pos: -46.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11245 + components: + - rot: 3.141592653589793 rad + pos: -48.5,40.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11246 + components: + - rot: 3.141592653589793 rad + pos: -48.5,39.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11247 + components: + - rot: 3.141592653589793 rad + pos: -48.5,38.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11248 + components: + - rot: 3.141592653589793 rad + pos: -48.5,37.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11249 + components: + - rot: 3.141592653589793 rad + pos: -48.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11250 + components: + - rot: 3.141592653589793 rad + pos: -46.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11251 + components: + - rot: 3.141592653589793 rad + pos: -48.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11252 + components: + - rot: 3.141592653589793 rad + pos: -46.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11253 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11254 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11255 + components: + - rot: 3.141592653589793 rad + pos: -54.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11256 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11257 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11259 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11260 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11261 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11262 + components: + - pos: -50.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11263 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11264 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11265 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11273 + components: + - rot: 3.141592653589793 rad + pos: -51.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11275 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11276 + components: + - pos: -48.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11277 + components: + - pos: -48.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11281 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11282 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11283 + components: + - rot: 3.141592653589793 rad + pos: -47.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11284 + components: + - rot: 3.141592653589793 rad + pos: -47.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11285 + components: + - rot: 3.141592653589793 rad + pos: -48.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11286 + components: + - rot: 3.141592653589793 rad + pos: -47.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11289 + components: + - rot: -1.5707963267948966 rad + pos: -48.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11290 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11291 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11292 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11295 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11296 + components: + - rot: 3.141592653589793 rad + pos: -51.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11297 + components: + - rot: 3.141592653589793 rad + pos: -51.5,27.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11298 + components: + - rot: 3.141592653589793 rad + pos: -50.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11299 + components: + - rot: 3.141592653589793 rad + pos: -51.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11300 + components: + - rot: 3.141592653589793 rad + pos: -50.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11301 + components: + - rot: 3.141592653589793 rad + pos: -51.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11302 + components: + - rot: 3.141592653589793 rad + pos: -50.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11307 + components: + - rot: 3.141592653589793 rad + pos: -51.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11309 + components: + - rot: 3.141592653589793 rad + pos: -50.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11310 + components: + - rot: 3.141592653589793 rad + pos: -50.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11311 + components: + - rot: 3.141592653589793 rad + pos: -50.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11313 + components: + - rot: 3.141592653589793 rad + pos: -52.5,36.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11314 + components: + - rot: 3.141592653589793 rad + pos: -52.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11315 + components: + - rot: 3.141592653589793 rad + pos: -52.5,38.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11316 + components: + - rot: 3.141592653589793 rad + pos: -52.5,39.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11489 + components: + - rot: -1.5707963267948966 rad + pos: -58.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11520 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11521 + components: + - rot: -1.5707963267948966 rad + pos: -44.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11522 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11523 + components: + - rot: -1.5707963267948966 rad + pos: -44.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11524 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11525 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11526 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11527 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11528 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11529 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11530 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11531 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11535 + components: + - pos: -36.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11537 + components: + - rot: 3.141592653589793 rad + pos: -38.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11538 + components: + - rot: 3.141592653589793 rad + pos: -38.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11539 + components: + - rot: 3.141592653589793 rad + pos: -38.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11540 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11541 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11542 + components: + - pos: -36.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11544 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11545 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11546 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11547 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11548 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11549 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11550 + components: + - rot: 3.141592653589793 rad + pos: -36.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11551 + components: + - rot: 3.141592653589793 rad + pos: -36.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11552 + components: + - rot: 3.141592653589793 rad + pos: -36.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11553 + components: + - rot: 3.141592653589793 rad + pos: -38.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11554 + components: + - rot: 3.141592653589793 rad + pos: -38.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11561 + components: + - rot: 3.141592653589793 rad + pos: -36.5,36.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11562 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11563 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11564 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11565 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11566 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11567 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11568 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11569 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11570 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11571 + components: + - pos: -38.5,39.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11572 + components: + - pos: -36.5,39.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11573 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11574 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11576 + components: + - pos: -38.5,38.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11577 + components: + - pos: -36.5,38.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11578 + components: + - pos: -38.5,37.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11581 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11582 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11583 + components: + - pos: -31.5,37.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11584 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11585 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11586 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11587 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11588 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11589 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11590 + components: + - rot: 3.141592653589793 rad + pos: -31.5,38.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11591 + components: + - rot: 3.141592653589793 rad + pos: -32.5,38.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11609 + components: + - rot: 3.141592653589793 rad + pos: -38.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11610 + components: + - rot: 3.141592653589793 rad + pos: -36.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11611 + components: + - rot: 3.141592653589793 rad + pos: -36.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11612 + components: + - rot: 3.141592653589793 rad + pos: -36.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11613 + components: + - rot: 3.141592653589793 rad + pos: -38.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11615 + components: + - rot: 3.141592653589793 rad + pos: -38.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11617 + components: + - rot: 3.141592653589793 rad + pos: -36.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11618 + components: + - rot: 3.141592653589793 rad + pos: -36.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11619 + components: + - rot: 3.141592653589793 rad + pos: -38.5,22.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11620 + components: + - rot: 3.141592653589793 rad + pos: -38.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11621 + components: + - rot: 3.141592653589793 rad + pos: -38.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11622 + components: + - rot: 3.141592653589793 rad + pos: -38.5,18.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11623 + components: + - rot: 3.141592653589793 rad + pos: -38.5,17.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11624 + components: + - rot: 3.141592653589793 rad + pos: -38.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11625 + components: + - rot: 3.141592653589793 rad + pos: -38.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11626 + components: + - rot: 3.141592653589793 rad + pos: -38.5,14.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11627 + components: + - rot: 3.141592653589793 rad + pos: -36.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11628 + components: + - rot: 3.141592653589793 rad + pos: -36.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11629 + components: + - rot: 3.141592653589793 rad + pos: -36.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11630 + components: + - rot: 3.141592653589793 rad + pos: -36.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11631 + components: + - rot: 3.141592653589793 rad + pos: -36.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11632 + components: + - rot: 3.141592653589793 rad + pos: -36.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11633 + components: + - rot: 3.141592653589793 rad + pos: -36.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11634 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11635 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11636 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11637 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11638 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11639 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11648 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11650 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11651 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11652 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11653 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11654 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11655 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11656 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11657 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11658 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11659 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11660 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11661 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11663 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11664 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11665 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11666 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11667 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11668 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11669 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11671 + components: + - pos: -34.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11672 + components: + - pos: -34.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11673 + components: + - pos: -34.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11674 + components: + - pos: -33.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11683 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11684 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11685 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11686 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11687 + components: + - rot: 3.141592653589793 rad + pos: -58.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11688 + components: + - rot: 3.141592653589793 rad + pos: -58.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11690 + components: + - rot: 3.141592653589793 rad + pos: -58.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11691 + components: + - rot: 3.141592653589793 rad + pos: -58.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11693 + components: + - rot: 3.141592653589793 rad + pos: -56.5,27.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11694 + components: + - rot: 3.141592653589793 rad + pos: -56.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11695 + components: + - rot: 3.141592653589793 rad + pos: -56.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11696 + components: + - rot: 3.141592653589793 rad + pos: -56.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11699 + components: + - rot: 3.141592653589793 rad + pos: -56.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11708 + components: + - rot: 3.141592653589793 rad + pos: -53.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11709 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11710 + components: + - pos: -56.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11711 + components: + - pos: -56.5,22.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11712 + components: + - pos: -56.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11713 + components: + - pos: -56.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11714 + components: + - pos: -56.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11715 + components: + - pos: -58.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11716 + components: + - pos: -58.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11717 + components: + - pos: -58.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11718 + components: + - pos: -58.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11719 + components: + - pos: -58.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11720 + components: + - pos: -58.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11721 + components: + - pos: -56.5,17.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11722 + components: + - pos: -56.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11723 + components: + - pos: -58.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11724 + components: + - pos: -58.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11725 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11726 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11727 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11728 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11729 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11730 + components: + - rot: 3.141592653589793 rad + pos: -58.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11731 + components: + - rot: 3.141592653589793 rad + pos: -58.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11732 + components: + - rot: 3.141592653589793 rad + pos: -56.5,14.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11733 + components: + - rot: 3.141592653589793 rad + pos: -56.5,13.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11734 + components: + - rot: 3.141592653589793 rad + pos: -56.5,12.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11735 + components: + - rot: 3.141592653589793 rad + pos: -56.5,11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11736 + components: + - rot: 3.141592653589793 rad + pos: -58.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11737 + components: + - rot: 3.141592653589793 rad + pos: -58.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11738 + components: + - rot: 3.141592653589793 rad + pos: -58.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11739 + components: + - rot: 3.141592653589793 rad + pos: -56.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11740 + components: + - rot: 3.141592653589793 rad + pos: -56.5,8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11741 + components: + - rot: 3.141592653589793 rad + pos: -54.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11742 + components: + - rot: 3.141592653589793 rad + pos: -54.5,17.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11743 + components: + - rot: 3.141592653589793 rad + pos: -54.5,18.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11744 + components: + - rot: 3.141592653589793 rad + pos: -53.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11745 + components: + - rot: 3.141592653589793 rad + pos: -53.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11746 + components: + - rot: 3.141592653589793 rad + pos: -53.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11762 + components: + - rot: 3.141592653589793 rad + pos: -56.5,7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11763 + components: + - rot: 3.141592653589793 rad + pos: -56.5,6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11765 + components: + - rot: 3.141592653589793 rad + pos: -58.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11766 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11767 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11768 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11769 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11770 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11771 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11772 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11773 + components: + - pos: -56.5,3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11774 + components: + - pos: -56.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11775 + components: + - pos: -56.5,1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11776 + components: + - pos: -58.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11777 + components: + - pos: -58.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11778 + components: + - pos: -58.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11779 + components: + - pos: -58.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11780 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11781 + components: + - rot: -1.5707963267948966 rad + pos: -58.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11782 + components: + - rot: -1.5707963267948966 rad + pos: -59.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11783 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11784 + components: + - rot: -1.5707963267948966 rad + pos: -61.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11785 + components: + - rot: -1.5707963267948966 rad + pos: -59.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11786 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11787 + components: + - rot: -1.5707963267948966 rad + pos: -61.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11791 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11792 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11793 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11794 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11795 + components: + - rot: 1.5707963267948966 rad + pos: -66.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11796 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11797 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11798 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11799 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11800 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11801 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11802 + components: + - rot: 1.5707963267948966 rad + pos: -69.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11803 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11804 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11805 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11806 + components: + - rot: 1.5707963267948966 rad + pos: -69.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11807 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11808 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11809 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11810 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11822 + components: + - pos: -58.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11823 + components: + - pos: -58.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11824 + components: + - pos: -56.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11825 + components: + - pos: -56.5,-0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11826 + components: + - pos: -56.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11827 + components: + - pos: -58.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11828 + components: + - pos: -58.5,-3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11829 + components: + - pos: -58.5,-4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11830 + components: + - pos: -58.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11831 + components: + - pos: -56.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11832 + components: + - pos: -56.5,-4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11833 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11834 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11835 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11836 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11837 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,-5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11838 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,-5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11839 + components: + - rot: 3.141592653589793 rad + pos: -56.5,-6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11844 + components: + - rot: -1.5707963267948966 rad + pos: -58.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11845 + components: + - rot: 3.141592653589793 rad + pos: -58.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11846 + components: + - rot: 3.141592653589793 rad + pos: -56.5,-8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11847 + components: + - rot: 3.141592653589793 rad + pos: -56.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11848 + components: + - rot: 3.141592653589793 rad + pos: -58.5,-7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11890 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11891 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11892 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11893 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11922 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11923 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11924 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11927 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11928 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11929 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11930 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11931 + components: + - rot: 1.5707963267948966 rad + pos: -43.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11932 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11933 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11935 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11936 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11937 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11938 + components: + - rot: 1.5707963267948966 rad + pos: -43.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11939 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11942 + components: + - rot: 3.141592653589793 rad + pos: -40.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11943 + components: + - rot: 3.141592653589793 rad + pos: -40.5,6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11944 + components: + - rot: 3.141592653589793 rad + pos: -40.5,7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11945 + components: + - rot: 3.141592653589793 rad + pos: -40.5,8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11946 + components: + - rot: 3.141592653589793 rad + pos: -41.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11947 + components: + - rot: 3.141592653589793 rad + pos: -41.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11950 + components: + - pos: -41.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11951 + components: + - pos: -41.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11953 + components: + - pos: -40.5,1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11956 + components: + - pos: -41.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11957 + components: + - pos: -41.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11958 + components: + - pos: -40.5,3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11959 + components: + - pos: -41.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11960 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11962 + components: + - pos: -40.5,-0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11963 + components: + - pos: -40.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11964 + components: + - rot: 3.141592653589793 rad + pos: -41.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11965 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11966 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11967 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11976 + components: + - rot: 3.141592653589793 rad + pos: -44.5,-3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11977 + components: + - rot: 3.141592653589793 rad + pos: -44.5,-4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11978 + components: + - rot: 3.141592653589793 rad + pos: -44.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11979 + components: + - rot: 3.141592653589793 rad + pos: -43.5,-4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11980 + components: + - rot: 3.141592653589793 rad + pos: -43.5,-5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11981 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11982 + components: + - pos: -43.5,-2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11983 + components: + - pos: -43.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11984 + components: + - pos: -43.5,-0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11985 + components: + - pos: -44.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11986 + components: + - pos: -44.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11987 + components: + - pos: -44.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11988 + components: + - pos: -43.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11989 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11990 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11991 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11992 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11993 + components: + - rot: 3.141592653589793 rad + pos: -40.5,-2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12004 + components: + - pos: -37.5,-3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12005 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12006 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12007 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12008 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12010 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12011 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12012 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12013 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12014 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12019 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12021 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12040 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12041 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12042 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12043 + components: + - pos: -38.5,12.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12044 + components: + - pos: -38.5,11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12045 + components: + - pos: -38.5,10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12046 + components: + - pos: -38.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12047 + components: + - pos: -38.5,8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12048 + components: + - pos: -38.5,7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12049 + components: + - pos: -38.5,6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12050 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12051 + components: + - rot: 3.141592653589793 rad + pos: -38.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12054 + components: + - rot: 3.141592653589793 rad + pos: -36.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12055 + components: + - rot: 3.141592653589793 rad + pos: -36.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12056 + components: + - rot: 3.141592653589793 rad + pos: -36.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12057 + components: + - rot: 3.141592653589793 rad + pos: -36.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12058 + components: + - rot: 3.141592653589793 rad + pos: -36.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12059 + components: + - rot: 3.141592653589793 rad + pos: -36.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12060 + components: + - rot: 3.141592653589793 rad + pos: -36.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12061 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12062 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12065 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12066 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12067 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12068 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12069 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12070 + components: + - pos: -32.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12071 + components: + - pos: -32.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12072 + components: + - pos: -32.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12073 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12074 + components: + - rot: 3.141592653589793 rad + pos: -33.5,3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12075 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12076 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12081 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12082 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12083 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12084 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12085 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12086 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12087 + components: + - rot: 1.5707963267948966 rad + pos: -24.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12088 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12089 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12090 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12091 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12092 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12095 + components: + - rot: 3.141592653589793 rad + pos: -25.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12096 + components: + - rot: 3.141592653589793 rad + pos: -25.5,6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12097 + components: + - rot: 3.141592653589793 rad + pos: -25.5,7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12098 + components: + - rot: 3.141592653589793 rad + pos: -25.5,8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12099 + components: + - rot: 3.141592653589793 rad + pos: -23.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12102 + components: + - rot: 3.141592653589793 rad + pos: -23.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12103 + components: + - rot: 3.141592653589793 rad + pos: -23.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12104 + components: + - rot: 3.141592653589793 rad + pos: -25.5,10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12105 + components: + - rot: 3.141592653589793 rad + pos: -23.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12108 + components: + - rot: 3.141592653589793 rad + pos: -25.5,12.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12109 + components: + - rot: 1.5707963267948966 rad + pos: -24.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12110 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12111 + components: + - pos: -25.5,13.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12112 + components: + - pos: -25.5,14.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12113 + components: + - pos: -25.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12114 + components: + - pos: -23.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12115 + components: + - pos: -23.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12116 + components: + - pos: -23.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12117 + components: + - rot: -1.5707963267948966 rad + pos: -24.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12118 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12119 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12120 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12121 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12122 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12123 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12124 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12125 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12126 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12134 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12135 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12136 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12137 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12138 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12141 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12142 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12143 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12144 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12145 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12146 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12147 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12148 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12149 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12150 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12151 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12152 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12153 + components: + - rot: -1.5707963267948966 rad + pos: -24.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12154 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12155 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12156 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12157 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12158 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12159 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12160 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12161 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12162 + components: + - rot: 3.141592653589793 rad + pos: -22.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12163 + components: + - rot: 3.141592653589793 rad + pos: -22.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12164 + components: + - rot: 3.141592653589793 rad + pos: -22.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12165 + components: + - rot: 3.141592653589793 rad + pos: -22.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12166 + components: + - rot: 3.141592653589793 rad + pos: -24.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12167 + components: + - rot: 3.141592653589793 rad + pos: -24.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12176 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12177 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12178 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12179 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12180 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12181 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12182 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12183 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12184 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12185 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12187 + components: + - rot: 3.141592653589793 rad + pos: -19.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12188 + components: + - rot: 3.141592653589793 rad + pos: -19.5,37.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12193 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12194 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12195 + components: + - pos: -17.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12196 + components: + - pos: -17.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12197 + components: + - pos: -17.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12198 + components: + - pos: -17.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12199 + components: + - pos: -15.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12200 + components: + - pos: -15.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12203 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12204 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12205 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12206 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12207 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12210 + components: + - rot: 3.141592653589793 rad + pos: -15.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12211 + components: + - rot: 3.141592653589793 rad + pos: -15.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12213 + components: + - rot: 3.141592653589793 rad + pos: -15.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12214 + components: + - rot: 3.141592653589793 rad + pos: -17.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12215 + components: + - rot: 3.141592653589793 rad + pos: -17.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12216 + components: + - rot: 3.141592653589793 rad + pos: -17.5,36.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12226 + components: + - rot: 3.141592653589793 rad + pos: -17.5,38.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12227 + components: + - rot: 3.141592653589793 rad + pos: -17.5,39.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12228 + components: + - rot: 3.141592653589793 rad + pos: -17.5,40.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12229 + components: + - rot: 3.141592653589793 rad + pos: -17.5,41.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12230 + components: + - rot: 3.141592653589793 rad + pos: -17.5,42.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12231 + components: + - rot: 3.141592653589793 rad + pos: -17.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12232 + components: + - rot: 3.141592653589793 rad + pos: -15.5,37.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12233 + components: + - rot: 3.141592653589793 rad + pos: -15.5,39.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12234 + components: + - rot: 3.141592653589793 rad + pos: -15.5,40.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12235 + components: + - rot: 3.141592653589793 rad + pos: -15.5,41.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12236 + components: + - rot: 3.141592653589793 rad + pos: -15.5,42.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12237 + components: + - rot: 3.141592653589793 rad + pos: -15.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12238 + components: + - rot: 3.141592653589793 rad + pos: -15.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12241 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12242 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12243 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12244 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12245 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12246 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12248 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12249 + components: + - rot: 3.141592653589793 rad + pos: -20.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12250 + components: + - rot: 3.141592653589793 rad + pos: -20.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12251 + components: + - rot: 3.141592653589793 rad + pos: -20.5,42.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12252 + components: + - rot: 3.141592653589793 rad + pos: -20.5,41.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12253 + components: + - rot: 3.141592653589793 rad + pos: -20.5,40.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12254 + components: + - rot: 3.141592653589793 rad + pos: -17.5,46.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12264 + components: + - pos: -15.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12265 + components: + - pos: -17.5,48.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12266 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12267 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12268 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12269 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12270 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12271 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12274 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12275 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12276 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12277 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12278 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12279 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12280 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12281 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12282 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12283 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12284 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12285 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12286 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12287 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12288 + components: + - rot: 3.141592653589793 rad + pos: -13.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12289 + components: + - rot: 3.141592653589793 rad + pos: -13.5,6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12290 + components: + - rot: 1.5707963267948966 rad + pos: -12.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12291 + components: + - rot: 1.5707963267948966 rad + pos: -11.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12292 + components: + - pos: -11.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12293 + components: + - pos: -11.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12300 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12301 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12302 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12303 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12304 + components: + - rot: 3.141592653589793 rad + pos: -11.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12305 + components: + - rot: 3.141592653589793 rad + pos: -11.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12306 + components: + - rot: 3.141592653589793 rad + pos: -13.5,7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12307 + components: + - rot: 3.141592653589793 rad + pos: -13.5,8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12308 + components: + - rot: 3.141592653589793 rad + pos: -11.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12309 + components: + - rot: 3.141592653589793 rad + pos: -13.5,3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12312 + components: + - pos: -11.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12313 + components: + - pos: -11.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12314 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12315 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12316 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12317 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12318 + components: + - rot: 3.141592653589793 rad + pos: -13.5,1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12322 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12325 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12326 + components: + - rot: 3.141592653589793 rad + pos: -8.5,1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12327 + components: + - rot: 3.141592653589793 rad + pos: -9.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12328 + components: + - rot: 3.141592653589793 rad + pos: -9.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12329 + components: + - rot: 3.141592653589793 rad + pos: -8.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12330 + components: + - rot: 3.141592653589793 rad + pos: -8.5,-0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12335 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12336 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12337 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12338 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12339 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12340 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12342 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12343 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12344 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12345 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12346 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12347 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12348 + components: + - rot: 3.141592653589793 rad + pos: -9.5,-3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12350 + components: + - rot: 3.141592653589793 rad + pos: -8.5,-2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12351 + components: + - rot: 3.141592653589793 rad + pos: -9.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12356 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12357 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12358 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12359 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12360 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12361 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12362 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12363 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12364 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12365 + components: + - rot: 1.5707963267948966 rad + pos: -3.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12369 + components: + - pos: -15.5,-4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12374 + components: + - pos: -16.5,-6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12375 + components: + - pos: -16.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12376 + components: + - pos: -17.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12377 + components: + - pos: -17.5,-10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12378 + components: + - pos: -2.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12380 + components: + - rot: 3.141592653589793 rad + pos: -3.5,-0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12382 + components: + - rot: 3.141592653589793 rad + pos: -2.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12385 + components: + - rot: 1.5707963267948966 rad + pos: -2.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12386 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12387 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12388 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12389 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12390 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12391 + components: + - pos: -1.5,-3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12392 + components: + - pos: -1.5,-4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12393 + components: + - pos: -1.5,-5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12394 + components: + - pos: -1.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12395 + components: + - pos: -1.5,-7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12396 + components: + - pos: -1.5,-8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12397 + components: + - pos: -1.5,-9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12403 + components: + - rot: -1.5707963267948966 rad + pos: -5.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12404 + components: + - rot: -1.5707963267948966 rad + pos: -6.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12405 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12406 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12407 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12408 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12409 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12410 + components: + - rot: -1.5707963267948966 rad + pos: -2.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12411 + components: + - rot: -1.5707963267948966 rad + pos: -0.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12412 + components: + - rot: -1.5707963267948966 rad + pos: 0.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12424 + components: + - pos: -13.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12425 + components: + - pos: -13.5,10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12426 + components: + - pos: -11.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12428 + components: + - pos: -11.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12430 + components: + - pos: -11.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12431 + components: + - pos: -11.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12433 + components: + - pos: -13.5,12.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12434 + components: + - pos: -13.5,13.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12435 + components: + - pos: -13.5,14.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12436 + components: + - pos: -13.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12437 + components: + - pos: -13.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12438 + components: + - pos: -13.5,17.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12439 + components: + - pos: -13.5,18.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12440 + components: + - pos: -11.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12441 + components: + - pos: -11.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12442 + components: + - pos: -11.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12443 + components: + - pos: -11.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12444 + components: + - pos: -11.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12445 + components: + - pos: -11.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12446 + components: + - pos: -11.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12447 + components: + - pos: -11.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12448 + components: + - pos: -13.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12449 + components: + - pos: -13.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12450 + components: + - pos: -13.5,22.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12451 + components: + - pos: -13.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12452 + components: + - pos: -13.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12453 + components: + - pos: -13.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12454 + components: + - pos: -13.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12455 + components: + - pos: -13.5,27.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12456 + components: + - pos: -11.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12457 + components: + - pos: -11.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12458 + components: + - pos: -11.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12459 + components: + - pos: -11.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12460 + components: + - pos: -11.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12461 + components: + - pos: -13.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12462 + components: + - pos: -13.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12463 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12464 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12465 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12466 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12467 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12468 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12469 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12470 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12471 + components: + - rot: 3.141592653589793 rad + pos: -7.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12472 + components: + - rot: 3.141592653589793 rad + pos: -7.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12473 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12474 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12477 + components: + - rot: 3.141592653589793 rad + pos: -8.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12478 + components: + - rot: 3.141592653589793 rad + pos: -7.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12479 + components: + - rot: 3.141592653589793 rad + pos: -7.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12480 + components: + - rot: 3.141592653589793 rad + pos: -8.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12489 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12490 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12491 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12492 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12493 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12494 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12495 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12496 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12497 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12498 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12499 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12500 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12511 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12519 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12520 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12521 + components: + - rot: -1.5707963267948966 rad + pos: -6.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12522 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12523 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12524 + components: + - rot: -1.5707963267948966 rad + pos: -5.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12525 + components: + - rot: -1.5707963267948966 rad + pos: -4.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12526 + components: + - rot: -1.5707963267948966 rad + pos: -3.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12527 + components: + - rot: -1.5707963267948966 rad + pos: -2.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12528 + components: + - rot: -1.5707963267948966 rad + pos: -1.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12529 + components: + - rot: -1.5707963267948966 rad + pos: -0.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12531 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12532 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12533 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12534 + components: + - rot: -1.5707963267948966 rad + pos: -4.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12535 + components: + - rot: -1.5707963267948966 rad + pos: -3.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12536 + components: + - rot: -1.5707963267948966 rad + pos: -2.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12537 + components: + - rot: -1.5707963267948966 rad + pos: -1.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12539 + components: + - rot: -1.5707963267948966 rad + pos: 0.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12540 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12541 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12542 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12543 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12544 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12545 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12546 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12547 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12548 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12549 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12550 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12551 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12552 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12553 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12555 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12556 + components: + - rot: 1.5707963267948966 rad + pos: 12.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12557 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12558 + components: + - rot: 1.5707963267948966 rad + pos: 12.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12559 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12560 + components: + - pos: 10.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12561 + components: + - pos: 10.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12562 + components: + - pos: 10.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12563 + components: + - pos: 10.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12564 + components: + - pos: 11.5,3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12565 + components: + - pos: 11.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12568 + components: + - pos: 10.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12571 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12572 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12573 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12574 + components: + - rot: 3.141592653589793 rad + pos: 10.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12575 + components: + - rot: 3.141592653589793 rad + pos: 10.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12576 + components: + - rot: 3.141592653589793 rad + pos: 11.5,1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12577 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12578 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12579 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12580 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12581 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12590 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12591 + components: + - rot: 3.141592653589793 rad + pos: 15.5,-0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12592 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12594 + components: + - rot: 3.141592653589793 rad + pos: 15.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12597 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12598 + components: + - rot: -1.5707963267948966 rad + pos: 14.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12599 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12600 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12601 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12602 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12603 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12604 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12613 + components: + - rot: -1.5707963267948966 rad + pos: 12.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12614 + components: + - rot: -1.5707963267948966 rad + pos: 12.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12617 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12618 + components: + - rot: 1.5707963267948966 rad + pos: 15.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12619 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12620 + components: + - rot: 1.5707963267948966 rad + pos: 17.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12621 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12622 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12623 + components: + - rot: 1.5707963267948966 rad + pos: 15.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12624 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12625 + components: + - pos: 17.5,6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12626 + components: + - pos: 17.5,7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12627 + components: + - pos: 17.5,8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12628 + components: + - pos: 17.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12629 + components: + - pos: 19.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12630 + components: + - pos: 19.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12631 + components: + - pos: 19.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12632 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12633 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12634 + components: + - rot: -1.5707963267948966 rad + pos: 20.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12637 + components: + - rot: 1.5707963267948966 rad + pos: 21.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12638 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12639 + components: + - rot: 1.5707963267948966 rad + pos: 23.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12640 + components: + - rot: 1.5707963267948966 rad + pos: 24.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12641 + components: + - rot: 1.5707963267948966 rad + pos: 25.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12642 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12643 + components: + - rot: 1.5707963267948966 rad + pos: 23.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12644 + components: + - rot: 1.5707963267948966 rad + pos: 24.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12646 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12648 + components: + - pos: 26.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12649 + components: + - pos: 26.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12650 + components: + - pos: 25.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12660 + components: + - rot: 3.141592653589793 rad + pos: 27.5,6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12661 + components: + - rot: 1.5707963267948966 rad + pos: 27.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12664 + components: + - pos: 26.5,7.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12671 + components: + - pos: 26.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12672 + components: + - pos: 26.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12673 + components: + - pos: 26.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12674 + components: + - pos: 26.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12675 + components: + - pos: 26.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12676 + components: + - pos: 26.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12677 + components: + - pos: 26.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12678 + components: + - pos: 26.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12679 + components: + - pos: 26.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12680 + components: + - pos: 26.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12681 + components: + - pos: 27.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12682 + components: + - pos: 27.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12683 + components: + - pos: 27.5,22.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12684 + components: + - pos: 27.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12685 + components: + - pos: 27.5,18.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12686 + components: + - pos: 27.5,17.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12687 + components: + - pos: 27.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12688 + components: + - pos: 27.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12689 + components: + - pos: 27.5,14.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12690 + components: + - pos: 27.5,13.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12691 + components: + - pos: 27.5,12.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12692 + components: + - pos: 27.5,10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12693 + components: + - pos: 27.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12694 + components: + - pos: 27.5,8.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12695 + components: + - pos: 27.5,7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12696 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12697 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12698 + components: + - rot: -1.5707963267948966 rad + pos: 29.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12699 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12700 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12701 + components: + - rot: -1.5707963267948966 rad + pos: 29.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12702 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12703 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12704 + components: + - rot: -1.5707963267948966 rad + pos: 29.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12705 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12706 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12707 + components: + - rot: -1.5707963267948966 rad + pos: 29.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12718 + components: + - rot: -1.5707963267948966 rad + pos: -5.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12719 + components: + - rot: -1.5707963267948966 rad + pos: -5.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12722 + components: + - rot: 3.141592653589793 rad + pos: -3.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12723 + components: + - rot: 3.141592653589793 rad + pos: -3.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12724 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12725 + components: + - rot: 1.5707963267948966 rad + pos: -3.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12730 + components: + - rot: 3.141592653589793 rad + pos: -1.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12731 + components: + - rot: 3.141592653589793 rad + pos: -1.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12732 + components: + - rot: 3.141592653589793 rad + pos: -1.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12733 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12734 + components: + - rot: 1.5707963267948966 rad + pos: -2.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12738 + components: + - rot: 3.141592653589793 rad + pos: 10.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12739 + components: + - rot: 3.141592653589793 rad + pos: 9.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12740 + components: + - rot: 3.141592653589793 rad + pos: 10.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12741 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12742 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12744 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12745 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12746 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,14.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12749 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12750 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12753 + components: + - pos: 8.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12754 + components: + - pos: 8.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12755 + components: + - pos: 6.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12756 + components: + - pos: 6.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12757 + components: + - pos: 11.5,15.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12758 + components: + - pos: 11.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12852 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12853 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12854 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12855 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12856 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12857 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12960 + components: + - pos: -17.5,49.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12961 + components: + - pos: -17.5,50.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12962 + components: + - pos: -17.5,51.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12963 + components: + - pos: -17.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12964 + components: + - pos: -17.5,53.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12965 + components: + - pos: -15.5,49.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12966 + components: + - pos: -15.5,50.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12967 + components: + - pos: -15.5,51.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12968 + components: + - pos: -15.5,52.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12969 + components: + - pos: -15.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12972 + components: + - pos: -15.5,54.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12973 + components: + - pos: -17.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12975 + components: + - pos: -15.5,56.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12977 + components: + - rot: 3.141592653589793 rad + pos: -17.5,57.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12978 + components: + - rot: 3.141592653589793 rad + pos: -17.5,58.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12979 + components: + - rot: 3.141592653589793 rad + pos: -15.5,58.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12982 + components: + - rot: 3.141592653589793 rad + pos: -15.5,59.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12983 + components: + - rot: 3.141592653589793 rad + pos: -17.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12984 + components: + - rot: 3.141592653589793 rad + pos: -17.5,61.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12985 + components: + - rot: 3.141592653589793 rad + pos: -17.5,62.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12986 + components: + - rot: 3.141592653589793 rad + pos: -15.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12987 + components: + - rot: 3.141592653589793 rad + pos: -15.5,62.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12988 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12989 + components: + - rot: 1.5707963267948966 rad + pos: -15.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12990 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12991 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12992 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12993 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12994 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12995 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12996 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12997 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12998 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12999 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13000 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13001 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13002 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13003 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13009 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13017 + components: + - pos: -12.5,54.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13018 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13019 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13020 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13021 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13022 + components: + - rot: 3.141592653589793 rad + pos: -7.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13023 + components: + - rot: 3.141592653589793 rad + pos: -7.5,56.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13024 + components: + - rot: 3.141592653589793 rad + pos: -7.5,57.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13025 + components: + - rot: 3.141592653589793 rad + pos: -7.5,58.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13026 + components: + - rot: 3.141592653589793 rad + pos: -7.5,59.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13027 + components: + - rot: 3.141592653589793 rad + pos: -8.5,56.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13028 + components: + - rot: 3.141592653589793 rad + pos: -8.5,57.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13029 + components: + - rot: 3.141592653589793 rad + pos: -8.5,58.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13030 + components: + - rot: 3.141592653589793 rad + pos: -8.5,59.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13639 + components: + - rot: 1.5707963267948966 rad + pos: -89.5,44.5 + parent: 1 + type: Transform + - uid: 13640 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,44.5 + parent: 1 + type: Transform + - uid: 13641 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,44.5 + parent: 1 + type: Transform + - uid: 13642 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,44.5 + parent: 1 + type: Transform + - uid: 13643 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,44.5 + parent: 1 + type: Transform + - uid: 13644 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,45.5 + parent: 1 + type: Transform + - uid: 13645 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,45.5 + parent: 1 + type: Transform + - uid: 13646 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,45.5 + parent: 1 + type: Transform + - uid: 13647 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,43.5 + parent: 1 + type: Transform + - uid: 13648 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,43.5 + parent: 1 + type: Transform + - uid: 13649 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,43.5 + parent: 1 + type: Transform + - uid: 13650 + components: + - rot: 1.5707963267948966 rad + pos: -89.5,42.5 + parent: 1 + type: Transform + - uid: 13651 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,42.5 + parent: 1 + type: Transform + - uid: 13652 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,42.5 + parent: 1 + type: Transform + - uid: 13653 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,42.5 + parent: 1 + type: Transform + - uid: 13654 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,42.5 + parent: 1 + type: Transform + - uid: 13656 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,41.5 + parent: 1 + type: Transform + - uid: 13668 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,41.5 + parent: 1 + type: Transform + - uid: 13670 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,41.5 + parent: 1 + type: Transform + - uid: 13677 + components: + - rot: 1.5707963267948966 rad + pos: -89.5,40.5 + parent: 1 + type: Transform + - uid: 13678 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,40.5 + parent: 1 + type: Transform + - uid: 13679 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,40.5 + parent: 1 + type: Transform + - uid: 13680 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,40.5 + parent: 1 + type: Transform + - uid: 13681 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,40.5 + parent: 1 + type: Transform + - uid: 13685 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,39.5 + parent: 1 + type: Transform + - uid: 13686 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,39.5 + parent: 1 + type: Transform + - uid: 13687 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,39.5 + parent: 1 + type: Transform + - uid: 13688 + components: + - rot: 1.5707963267948966 rad + pos: -89.5,38.5 + parent: 1 + type: Transform + - uid: 13689 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,38.5 + parent: 1 + type: Transform + - uid: 13690 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,38.5 + parent: 1 + type: Transform + - uid: 13691 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,38.5 + parent: 1 + type: Transform + - uid: 13692 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,38.5 + parent: 1 + type: Transform + - uid: 13693 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,37.5 + parent: 1 + type: Transform + - uid: 13694 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,37.5 + parent: 1 + type: Transform + - uid: 13695 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,37.5 + parent: 1 + type: Transform + - uid: 13696 + components: + - rot: 1.5707963267948966 rad + pos: -89.5,36.5 + parent: 1 + type: Transform + - uid: 13697 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,36.5 + parent: 1 + type: Transform + - uid: 13698 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,36.5 + parent: 1 + type: Transform + - uid: 13702 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,36.5 + parent: 1 + type: Transform + - uid: 13703 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,36.5 + parent: 1 + type: Transform + - uid: 13711 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,35.5 + parent: 1 + type: Transform + - uid: 13712 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,35.5 + parent: 1 + type: Transform + - uid: 13713 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,35.5 + parent: 1 + type: Transform + - uid: 13714 + components: + - rot: 1.5707963267948966 rad + pos: -89.5,34.5 + parent: 1 + type: Transform + - uid: 13715 + components: + - rot: 1.5707963267948966 rad + pos: -88.5,34.5 + parent: 1 + type: Transform + - uid: 13716 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,34.5 + parent: 1 + type: Transform + - uid: 13717 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,34.5 + parent: 1 + type: Transform + - uid: 13718 + components: + - rot: 1.5707963267948966 rad + pos: -85.5,34.5 + parent: 1 + type: Transform + - uid: 13779 + components: + - pos: -84.5,47.5 + parent: 1 + type: Transform + - uid: 13857 + components: + - rot: 3.141592653589793 rad + pos: -84.5,47.5 + parent: 1 + type: Transform + - uid: 13864 + components: + - rot: 3.141592653589793 rad + pos: -83.5,48.5 + parent: 1 + type: Transform + - uid: 13865 + components: + - rot: 3.141592653589793 rad + pos: -83.5,49.5 + parent: 1 + type: Transform + - uid: 13866 + components: + - rot: 3.141592653589793 rad + pos: -81.5,49.5 + parent: 1 + type: Transform + - uid: 13867 + components: + - rot: 3.141592653589793 rad + pos: -81.5,48.5 + parent: 1 + type: Transform + - uid: 13868 + components: + - rot: 3.141592653589793 rad + pos: -81.5,47.5 + parent: 1 + type: Transform + - uid: 13915 + components: + - rot: -1.5707963267948966 rad + pos: -85.5,33.5 + parent: 1 + type: Transform + - uid: 13936 + components: + - rot: -1.5707963267948966 rad + pos: -76.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13937 + components: + - rot: -1.5707963267948966 rad + pos: -77.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13938 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13939 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13940 + components: + - rot: -1.5707963267948966 rad + pos: -74.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13942 + components: + - rot: 3.141592653589793 rad + pos: -77.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13943 + components: + - rot: 3.141592653589793 rad + pos: -76.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13944 + components: + - rot: 3.141592653589793 rad + pos: -77.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13945 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,41.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13946 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13947 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13948 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13949 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13952 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13953 + components: + - pos: -61.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13954 + components: + - rot: -1.5707963267948966 rad + pos: -61.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13955 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13956 + components: + - rot: 3.141592653589793 rad + pos: -62.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13957 + components: + - rot: 3.141592653589793 rad + pos: -62.5,42.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13958 + components: + - rot: 3.141592653589793 rad + pos: -61.5,42.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13959 + components: + - rot: 3.141592653589793 rad + pos: -62.5,41.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13960 + components: + - rot: 3.141592653589793 rad + pos: -61.5,41.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13965 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13966 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13967 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13968 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13969 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13970 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13971 + components: + - pos: -66.5,48.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13973 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13974 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13975 + components: + - rot: 1.5707963267948966 rad + pos: -69.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13976 + components: + - pos: -66.5,49.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13977 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13978 + components: + - pos: -67.5,51.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13979 + components: + - rot: -1.5707963267948966 rad + pos: -68.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13980 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13986 + components: + - pos: -61.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13987 + components: + - pos: -61.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13988 + components: + - rot: -1.5707963267948966 rad + pos: -62.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13989 + components: + - rot: -1.5707963267948966 rad + pos: -63.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13990 + components: + - rot: -1.5707963267948966 rad + pos: -64.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13991 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13992 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13993 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13994 + components: + - rot: -1.5707963267948966 rad + pos: -68.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13995 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14013 + components: + - pos: -73.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14014 + components: + - pos: -73.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14015 + components: + - pos: -73.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14016 + components: + - pos: -73.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14017 + components: + - pos: -74.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14018 + components: + - pos: -74.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14019 + components: + - pos: -74.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14020 + components: + - rot: -1.5707963267948966 rad + pos: -73.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14025 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14026 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14027 + components: + - pos: -70.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14028 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14032 + components: + - rot: 3.141592653589793 rad + pos: -70.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14033 + components: + - rot: 3.141592653589793 rad + pos: -70.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14034 + components: + - rot: 3.141592653589793 rad + pos: -70.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14035 + components: + - rot: 1.5707963267948966 rad + pos: -69.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14036 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14056 + components: + - pos: -74.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14057 + components: + - pos: -74.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14058 + components: + - pos: -74.5,27.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14059 + components: + - pos: -74.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14060 + components: + - pos: -73.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14061 + components: + - pos: -73.5,26.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14062 + components: + - pos: -73.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14063 + components: + - pos: -73.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14064 + components: + - pos: -73.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14065 + components: + - pos: -74.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14066 + components: + - pos: -74.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14067 + components: + - pos: -74.5,22.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14068 + components: + - pos: -73.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14069 + components: + - pos: -73.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14070 + components: + - rot: -1.5707963267948966 rad + pos: -73.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14071 + components: + - pos: -73.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14072 + components: + - pos: -73.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14073 + components: + - pos: -73.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14074 + components: + - rot: -1.5707963267948966 rad + pos: -72.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14075 + components: + - rot: -1.5707963267948966 rad + pos: -72.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14076 + components: + - rot: -1.5707963267948966 rad + pos: -74.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14077 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14078 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14079 + components: + - rot: 3.141592653589793 rad + pos: -74.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14080 + components: + - rot: 3.141592653589793 rad + pos: -74.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14081 + components: + - rot: 3.141592653589793 rad + pos: -74.5,18.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14082 + components: + - rot: 3.141592653589793 rad + pos: -74.5,17.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14083 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14084 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14085 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14088 + components: + - rot: 3.141592653589793 rad + pos: -70.5,21.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14089 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14090 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14091 + components: + - rot: -1.5707963267948966 rad + pos: -68.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14092 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14093 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14094 + components: + - rot: -1.5707963267948966 rad + pos: -68.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14095 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14096 + components: + - rot: -1.5707963267948966 rad + pos: -71.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14097 + components: + - rot: 3.141592653589793 rad + pos: -71.5,22.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14098 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14099 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14100 + components: + - rot: -1.5707963267948966 rad + pos: -68.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14101 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14102 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14103 + components: + - rot: -1.5707963267948966 rad + pos: -68.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14104 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14105 + components: + - rot: 3.141592653589793 rad + pos: -71.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14117 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14118 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14119 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14120 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14121 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14122 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14123 + components: + - rot: -1.5707963267948966 rad + pos: -64.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14124 + components: + - rot: 3.141592653589793 rad + pos: -63.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14125 + components: + - rot: 3.141592653589793 rad + pos: -64.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14126 + components: + - rot: 3.141592653589793 rad + pos: -64.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14127 + components: + - rot: 3.141592653589793 rad + pos: -63.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14128 + components: + - rot: 3.141592653589793 rad + pos: -63.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14129 + components: + - rot: 3.141592653589793 rad + pos: -64.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14130 + components: + - rot: 3.141592653589793 rad + pos: -63.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14131 + components: + - rot: 3.141592653589793 rad + pos: -63.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14132 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14139 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14140 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14142 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14143 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14144 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14145 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14147 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14150 + components: + - rot: 1.5707963267948966 rad + pos: -76.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14151 + components: + - rot: 1.5707963267948966 rad + pos: -77.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14152 + components: + - rot: 1.5707963267948966 rad + pos: -78.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14153 + components: + - rot: 1.5707963267948966 rad + pos: -79.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14154 + components: + - rot: 1.5707963267948966 rad + pos: -76.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14155 + components: + - rot: 1.5707963267948966 rad + pos: -77.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14156 + components: + - rot: 1.5707963267948966 rad + pos: -78.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14157 + components: + - rot: 1.5707963267948966 rad + pos: -79.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14162 + components: + - rot: 3.141592653589793 rad + pos: -61.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14205 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 15864 + components: + - pos: 7.5,49.5 + parent: 1 + type: Transform +- proto: GasPipeTJunction + entities: + - uid: 1778 + components: + - rot: 3.141592653589793 rad + pos: 14.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2256 + components: + - rot: 3.141592653589793 rad + pos: -0.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2257 + components: + - rot: 3.141592653589793 rad + pos: 0.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2394 + components: + - rot: 3.141592653589793 rad + pos: 7.5,35.5 + parent: 1 + type: Transform + - uid: 2411 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2416 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2418 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2421 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2422 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2423 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2424 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2425 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2459 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2461 + components: + - rot: 1.5707963267948966 rad + pos: 15.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2485 + components: + - rot: 3.141592653589793 rad + pos: 8.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2486 + components: + - rot: 3.141592653589793 rad + pos: 9.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2683 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2684 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2686 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2863 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3001 + components: + - pos: 3.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3002 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3558 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3706 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3708 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4782 + components: + - pos: -64.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4784 + components: + - rot: -1.5707963267948966 rad + pos: -58.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4805 + components: + - pos: -65.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 7846 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8691 + components: + - pos: -48.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8698 + components: + - pos: -50.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8699 + components: + - pos: -53.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8700 + components: + - pos: -56.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8702 + components: + - rot: 3.141592653589793 rad + pos: -52.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8704 + components: + - rot: 3.141592653589793 rad + pos: -55.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8722 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,56.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8724 + components: + - rot: 3.141592653589793 rad + pos: -56.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8727 + components: + - rot: 3.141592653589793 rad + pos: -53.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8733 + components: + - pos: -54.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8734 + components: + - pos: -51.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8735 + components: + - pos: -57.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8736 + components: + - rot: 3.141592653589793 rad + pos: -50.5,55.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8782 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8783 + components: + - rot: 1.5707963267948966 rad + pos: -50.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8784 + components: + - rot: 3.141592653589793 rad + pos: -55.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8785 + components: + - rot: 3.141592653589793 rad + pos: -54.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8787 + components: + - rot: 3.141592653589793 rad + pos: -58.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8788 + components: + - rot: 3.141592653589793 rad + pos: -59.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8793 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,63.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8814 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,67.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8817 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,62.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8850 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,80.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8911 + components: + - rot: 3.141592653589793 rad + pos: -54.5,83.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8912 + components: + - pos: -55.5,84.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8913 + components: + - pos: -55.5,89.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8914 + components: + - rot: 3.141592653589793 rad + pos: -54.5,88.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8915 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,83.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8916 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,84.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8917 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,85.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8918 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,84.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 10050 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10083 + components: + - rot: 3.141592653589793 rad + pos: 6.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10084 + components: + - pos: 7.5,20.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 10231 + components: + - rot: 3.141592653589793 rad + pos: -41.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10244 + components: + - pos: -39.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10306 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 10308 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10953 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,42.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10954 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,41.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11086 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11093 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,37.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11094 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11095 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11096 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,38.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11103 + components: + - rot: 3.141592653589793 rad + pos: -58.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11125 + components: + - pos: -57.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11134 + components: + - pos: -52.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11137 + components: + - rot: 3.141592653589793 rad + pos: -53.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11147 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11156 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11167 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,41.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11168 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,42.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11169 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11184 + components: + - pos: -42.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11185 + components: + - rot: 3.141592653589793 rad + pos: -40.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11211 + components: + - pos: -36.5,44.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11212 + components: + - pos: -35.5,43.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11223 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11224 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11258 + components: + - rot: 3.141592653589793 rad + pos: -54.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11266 + components: + - rot: 3.141592653589793 rad + pos: -51.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11267 + components: + - rot: 3.141592653589793 rad + pos: -50.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11268 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11269 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,36.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11271 + components: + - rot: 3.141592653589793 rad + pos: -53.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11274 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11280 + components: + - rot: 3.141592653589793 rad + pos: -46.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11293 + components: + - pos: -50.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11294 + components: + - pos: -51.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11308 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11518 + components: + - rot: 3.141592653589793 rad + pos: -43.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11519 + components: + - pos: -42.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11536 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11543 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11579 + components: + - rot: 3.141592653589793 rad + pos: -32.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11580 + components: + - rot: 3.141592653589793 rad + pos: -31.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11601 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11602 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,27.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11603 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11604 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11605 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11606 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11607 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,13.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11608 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11614 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11616 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11662 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11670 + components: + - rot: 3.141592653589793 rad + pos: -34.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11681 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11682 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11689 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11692 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11700 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11701 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,18.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11702 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11703 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11704 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11705 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11706 + components: + - rot: 3.141592653589793 rad + pos: -53.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11707 + components: + - rot: 3.141592653589793 rad + pos: -54.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11757 + components: + - rot: 3.141592653589793 rad + pos: -67.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11758 + components: + - pos: -66.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11760 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11764 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11815 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11816 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,-2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11817 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,-5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11818 + components: + - pos: -57.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11819 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11888 + components: + - rot: 3.141592653589793 rad + pos: -49.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11889 + components: + - pos: -48.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11952 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11954 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11955 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11961 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12002 + components: + - pos: -37.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12003 + components: + - pos: -36.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12077 + components: + - pos: -33.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12078 + components: + - pos: -32.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12093 + components: + - rot: 3.141592653589793 rad + pos: -25.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12100 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12101 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12106 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12107 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12133 + components: + - rot: 3.141592653589793 rad + pos: -24.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12168 + components: + - pos: -24.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12169 + components: + - pos: -22.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12170 + components: + - rot: 3.141592653589793 rad + pos: -31.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12171 + components: + - pos: -30.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12201 + components: + - pos: -13.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12202 + components: + - pos: -11.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12208 + components: + - pos: -16.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12209 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12212 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12222 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12223 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,38.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12224 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12225 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12239 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12240 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12247 + components: + - pos: -20.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12262 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12263 + components: + - rot: 1.5707963267948966 rad + pos: -15.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12294 + components: + - rot: 3.141592653589793 rad + pos: -17.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12295 + components: + - pos: -16.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12310 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12311 + components: + - rot: 1.5707963267948966 rad + pos: -11.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12323 + components: + - pos: -9.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12324 + components: + - pos: -8.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12333 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12334 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12341 + components: + - pos: -15.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12366 + components: + - rot: 3.141592653589793 rad + pos: -3.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12367 + components: + - rot: 3.141592653589793 rad + pos: -2.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12368 + components: + - pos: -1.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12398 + components: + - rot: 3.141592653589793 rad + pos: -1.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12417 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12418 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12419 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12420 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12421 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12422 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12429 + components: + - rot: 1.5707963267948966 rad + pos: -11.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12475 + components: + - pos: -8.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12476 + components: + - pos: -7.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12513 + components: + - pos: -6.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12514 + components: + - rot: 3.141592653589793 rad + pos: -5.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12515 + components: + - pos: 4.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12516 + components: + - rot: 3.141592653589793 rad + pos: 5.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12517 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12518 + components: + - pos: 10.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12530 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,17.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12538 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,14.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12566 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12567 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12569 + components: + - rot: 3.141592653589793 rad + pos: 10.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12570 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12593 + components: + - rot: 3.141592653589793 rad + pos: 15.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12615 + components: + - rot: 3.141592653589793 rad + pos: 19.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12616 + components: + - rot: 3.141592653589793 rad + pos: 17.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12635 + components: + - pos: 20.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12636 + components: + - rot: 3.141592653589793 rad + pos: 21.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12645 + components: + - pos: 25.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12659 + components: + - rot: 3.141592653589793 rad + pos: 27.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12662 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12663 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12665 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12666 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12667 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12668 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12669 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12670 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12720 + components: + - rot: 3.141592653589793 rad + pos: -4.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12721 + components: + - rot: 3.141592653589793 rad + pos: -3.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12737 + components: + - pos: 9.5,14.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12747 + components: + - rot: 3.141592653589793 rad + pos: 9.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12748 + components: + - pos: 8.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12974 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,56.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12976 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,57.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12980 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,59.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12981 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,60.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13008 + components: + - pos: -12.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13016 + components: + - pos: -11.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13546 + components: + - rot: -1.5707963267948966 rad + pos: -48.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13905 + components: + - pos: -77.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13909 + components: + - pos: -76.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13941 + components: + - pos: -74.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13950 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13951 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,43.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13963 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13972 + components: + - rot: 3.141592653589793 rad + pos: -66.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14012 + components: + - pos: -73.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14029 + components: + - pos: -70.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14030 + components: + - pos: -69.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14031 + components: + - rot: 3.141592653589793 rad + pos: -68.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14048 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14049 + components: + - rot: -1.5707963267948966 rad + pos: -73.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14050 + components: + - rot: -1.5707963267948966 rad + pos: -74.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14051 + components: + - rot: -1.5707963267948966 rad + pos: -73.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14052 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14053 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14086 + components: + - rot: -1.5707963267948966 rad + pos: -71.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14087 + components: + - pos: -70.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14137 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14138 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14141 + components: + - rot: 3.141592653589793 rad + pos: -61.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14146 + components: + - rot: 3.141592653589793 rad + pos: -60.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- proto: GasPort + entities: + - uid: 366 + components: + - pos: 0.5,-8.5 + parent: 1 + type: Transform + - uid: 367 + components: + - pos: 2.5,-8.5 + parent: 1 + type: Transform + - uid: 1417 + components: + - pos: 12.5,37.5 + parent: 1 + type: Transform + - uid: 2398 + components: + - pos: 6.5,37.5 + parent: 1 + type: Transform + - uid: 15136 + components: + - rot: -1.5707963267948966 rad + pos: -77.5,38.5 + parent: 1 + type: Transform + - uid: 15137 + components: + - rot: -1.5707963267948966 rad + pos: -77.5,37.5 + parent: 1 + type: Transform + - uid: 15138 + components: + - rot: -1.5707963267948966 rad + pos: -77.5,36.5 + parent: 1 + type: Transform +- proto: GasPressurePump + entities: + - uid: 362 + components: + - rot: 3.141592653589793 rad + pos: 0.5,-9.5 + parent: 1 + type: Transform + - uid: 363 + components: + - pos: 2.5,-9.5 + parent: 1 + type: Transform + - uid: 2396 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,35.5 + parent: 1 + type: Transform + - uid: 13904 + components: + - rot: -1.5707963267948966 rad + pos: -78.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13908 + components: + - rot: 1.5707963267948966 rad + pos: -78.5,35.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 15139 + components: + - rot: -1.5707963267948966 rad + pos: -78.5,36.5 + parent: 1 + type: Transform + - uid: 15140 + components: + - rot: -1.5707963267948966 rad + pos: -78.5,37.5 + parent: 1 + type: Transform + - uid: 15141 + components: + - rot: -1.5707963267948966 rad + pos: -78.5,38.5 + parent: 1 + type: Transform +- proto: GasRecyclerMachineCircuitboard + entities: + - uid: 15375 + components: + - pos: -52.478607,23.323547 + parent: 1 + type: Transform +- proto: GasThermoMachineFreezer + entities: + - uid: 2384 + components: + - pos: 7.5,36.5 + parent: 1 + type: Transform + - uid: 13921 + components: + - pos: -77.5,39.5 + parent: 1 + type: Transform + - uid: 13922 + components: + - pos: -77.5,40.5 + parent: 1 + type: Transform +- proto: GasThermoMachineHeater + entities: + - uid: 13923 + components: + - pos: -77.5,41.5 + parent: 1 + type: Transform +- proto: GasValve + entities: + - uid: 13756 + components: + - rot: -1.5707963267948966 rad + pos: -84.5,33.5 + parent: 1 + type: Transform + - open: False + type: GasValve +- proto: GasVentPump + entities: + - uid: 1331 + components: + - pos: 0.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2102 + components: + - pos: -4.5,34.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2666 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,31.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2670 + components: + - pos: 3.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2671 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2672 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2673 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 2674 + components: + - pos: 8.5,30.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3019 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3020 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3021 + components: + - rot: -1.5707963267948966 rad + pos: 3.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 3573 + components: + - rot: 3.141592653589793 rad + pos: -39.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4749 + components: + - rot: 3.141592653589793 rad + pos: -58.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4800 + components: + - rot: 3.141592653589793 rad + pos: -65.5,-11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 4802 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5688 + components: + - rot: 3.141592653589793 rad + pos: -17.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 5692 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8686 + components: + - rot: 3.141592653589793 rad + pos: -47.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8697 + components: + - pos: -47.5,59.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8761 + components: + - rot: 3.141592653589793 rad + pos: -51.5,50.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8762 + components: + - rot: 3.141592653589793 rad + pos: -54.5,50.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8763 + components: + - rot: 3.141592653589793 rad + pos: -57.5,50.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8764 + components: + - rot: 3.141592653589793 rad + pos: -61.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8765 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,57.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8779 + components: + - pos: -53.5,56.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8845 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8846 + components: + - pos: -59.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8847 + components: + - pos: -55.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8848 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,63.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8849 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,64.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8881 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,67.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8882 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,80.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8883 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,84.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8885 + components: + - pos: -54.5,84.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8887 + components: + - rot: 3.141592653589793 rad + pos: -55.5,88.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8928 + components: + - rot: 3.141592653589793 rad + pos: -58.5,87.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 8967 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,83.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10258 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10337 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10703 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10805 + components: + - pos: 6.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 10955 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,42.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11119 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,38.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11124 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11145 + components: + - rot: 3.141592653589793 rad + pos: -52.5,46.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11172 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,42.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11192 + components: + - rot: 3.141592653589793 rad + pos: -42.5,42.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11208 + components: + - pos: -40.5,50.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11238 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,46.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11239 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11240 + components: + - rot: 3.141592653589793 rad + pos: -35.5,42.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11272 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,36.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11304 + components: + - rot: 3.141592653589793 rad + pos: -50.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11306 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11317 + components: + - pos: -52.5,40.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11318 + components: + - pos: -51.5,36.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11321 + components: + - pos: -53.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11557 + components: + - rot: 3.141592653589793 rad + pos: -42.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11558 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11592 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11593 + components: + - pos: -36.5,40.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11594 + components: + - pos: -32.5,39.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11595 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11640 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11641 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11642 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11647 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11676 + components: + - pos: -34.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11677 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,23.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11698 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11752 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11753 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11754 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,11.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11755 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11756 + components: + - pos: -53.5,19.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11790 + components: + - rot: 3.141592653589793 rad + pos: -57.5,4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11813 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11814 + components: + - rot: 3.141592653589793 rad + pos: -66.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11840 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11841 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,-1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11926 + components: + - rot: 3.141592653589793 rad + pos: -48.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11948 + components: + - pos: -41.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11968 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11969 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11996 + components: + - pos: -44.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11997 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 11998 + components: + - rot: 3.141592653589793 rad + pos: -44.5,-6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12016 + components: + - rot: 3.141592653589793 rad + pos: -37.5,-4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12063 + components: + - rot: 3.141592653589793 rad + pos: -36.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12079 + components: + - rot: 3.141592653589793 rad + pos: -32.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12130 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12131 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12132 + components: + - pos: -23.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12139 + components: + - rot: 3.141592653589793 rad + pos: -23.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12172 + components: + - rot: 3.141592653589793 rad + pos: -30.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12174 + components: + - rot: 3.141592653589793 rad + pos: -22.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12218 + components: + - rot: 3.141592653589793 rad + pos: -16.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12255 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,37.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12256 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,44.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12257 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12258 + components: + - rot: 3.141592653589793 rad + pos: -20.5,39.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12273 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12296 + components: + - rot: 3.141592653589793 rad + pos: -16.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12321 + components: + - rot: 3.141592653589793 rad + pos: -11.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12332 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12353 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12354 + components: + - rot: 3.141592653589793 rad + pos: -9.5,-4.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12383 + components: + - pos: -2.5,0.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12413 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12414 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12415 + components: + - rot: 1.5707963267948966 rad + pos: -12.5,-12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12485 + components: + - rot: 3.141592653589793 rad + pos: -7.5,28.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12486 + components: + - rot: 1.5707963267948966 rad + pos: -12.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12487 + components: + - rot: 1.5707963267948966 rad + pos: -12.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12488 + components: + - rot: 1.5707963267948966 rad + pos: -12.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12506 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12507 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12508 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,9.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12509 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12510 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,14.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12582 + components: + - rot: 3.141592653589793 rad + pos: -6.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12583 + components: + - rot: 3.141592653589793 rad + pos: 4.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12584 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,1.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12585 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12596 + components: + - pos: 15.5,2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12605 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,-2.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12655 + components: + - pos: 19.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12656 + components: + - rot: 3.141592653589793 rad + pos: 20.5,5.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12657 + components: + - rot: 3.141592653589793 rad + pos: 26.5,3.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12658 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,6.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12708 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,8.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12709 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,10.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12710 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,12.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12711 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,16.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12712 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12713 + components: + - rot: -1.5707963267948966 rad + pos: 27.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12714 + components: + - pos: 26.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12762 + components: + - rot: 3.141592653589793 rad + pos: 6.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12763 + components: + - rot: 3.141592653589793 rad + pos: 8.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12764 + components: + - rot: 3.141592653589793 rad + pos: 11.5,13.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12765 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,18.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 12859 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,25.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13010 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,54.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13011 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,56.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13012 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,59.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13013 + components: + - pos: -17.5,63.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13031 + components: + - rot: 3.141592653589793 rad + pos: -11.5,53.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13032 + components: + - pos: -7.5,60.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13961 + components: + - rot: 3.141592653589793 rad + pos: -62.5,40.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13962 + components: + - pos: -62.5,45.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13981 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,47.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 13982 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,52.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14038 + components: + - rot: 3.141592653589793 rad + pos: -69.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14040 + components: + - rot: 3.141592653589793 rad + pos: -70.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14046 + components: + - rot: 3.141592653589793 rad + pos: -77.5,32.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14109 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,20.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14111 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,22.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14112 + components: + - rot: -1.5707963267948966 rad + pos: -71.5,17.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14116 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,29.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14149 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,27.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14158 + components: + - rot: 1.5707963267948966 rad + pos: -80.5,24.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor + - uid: 14161 + components: + - pos: -60.5,33.5 + parent: 1 + type: Transform + - color: '#0055CCFF' + type: AtmosPipeColor +- proto: GasVentScrubber + entities: + - uid: 1064 + components: + - pos: -0.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2487 + components: + - rot: 1.5707963267948966 rad + pos: 3.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2488 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2489 + components: + - pos: 4.5,37.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2490 + components: + - pos: 9.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2491 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2492 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2900 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 2912 + components: + - rot: 3.141592653589793 rad + pos: -15.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3022 + components: + - rot: 1.5707963267948966 rad + pos: 3.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3023 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3024 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3739 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3837 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-7.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3959 + components: + - rot: 3.141592653589793 rad + pos: -40.5,-11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 3967 + components: + - rot: 3.141592653589793 rad + pos: -64.5,-11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4750 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,-9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 4807 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8690 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8754 + components: + - rot: 3.141592653589793 rad + pos: -50.5,50.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8755 + components: + - rot: 3.141592653589793 rad + pos: -53.5,50.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8756 + components: + - rot: 3.141592653589793 rad + pos: -56.5,50.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8757 + components: + - rot: 3.141592653589793 rad + pos: -60.5,52.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8758 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8759 + components: + - pos: -54.5,64.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8760 + components: + - pos: -58.5,64.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8766 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,58.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8778 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,56.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8842 + components: + - rot: 1.5707963267948966 rad + pos: -60.5,61.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8843 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,62.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8844 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,65.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8884 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,85.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8886 + components: + - rot: 3.141592653589793 rad + pos: -55.5,83.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8888 + components: + - pos: -54.5,89.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8924 + components: + - rot: 3.141592653589793 rad + pos: -57.5,87.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 8925 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,84.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 10798 + components: + - rot: 3.141592653589793 rad + pos: 7.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 10956 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,41.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11122 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,37.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11123 + components: + - pos: -58.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11146 + components: + - pos: -53.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11175 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,41.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11196 + components: + - rot: 3.141592653589793 rad + pos: -41.5,42.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11209 + components: + - pos: -41.5,50.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11235 + components: + - rot: 3.141592653589793 rad + pos: -36.5,42.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11236 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11237 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,47.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11270 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,35.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11303 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,29.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11305 + components: + - rot: 3.141592653589793 rad + pos: -51.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11319 + components: + - pos: -50.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11320 + components: + - pos: -54.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11555 + components: + - pos: -43.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11556 + components: + - pos: -37.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11596 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11597 + components: + - pos: -38.5,40.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11598 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,36.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11599 + components: + - pos: -31.5,39.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11643 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,27.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11644 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,21.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11645 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,13.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11646 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11675 + components: + - pos: -33.5,27.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11678 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11697 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11747 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11748 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,18.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11749 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11750 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,15.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11751 + components: + - pos: -54.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11789 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11811 + components: + - pos: -67.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11812 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11842 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,-2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11843 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,-5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11925 + components: + - pos: -49.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11949 + components: + - pos: -40.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11970 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11971 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 11999 + components: + - pos: -43.5,1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12000 + components: + - rot: 3.141592653589793 rad + pos: -43.5,-6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12001 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12018 + components: + - rot: 3.141592653589793 rad + pos: -36.5,-4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12064 + components: + - rot: 3.141592653589793 rad + pos: -38.5,3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12080 + components: + - rot: 3.141592653589793 rad + pos: -33.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12127 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,9.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12128 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12129 + components: + - pos: -25.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12140 + components: + - pos: -24.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12173 + components: + - pos: -31.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12175 + components: + - rot: 3.141592653589793 rad + pos: -24.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12190 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,38.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12219 + components: + - rot: 3.141592653589793 rad + pos: -16.5,31.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12259 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,38.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12260 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12261 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,46.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12272 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12297 + components: + - pos: -17.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12320 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12331 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12352 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,-3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12355 + components: + - rot: 3.141592653589793 rad + pos: -8.5,-4.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12381 + components: + - pos: -3.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12384 + components: + - rot: 3.141592653589793 rad + pos: -17.5,-11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12416 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12481 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12482 + components: + - rot: 3.141592653589793 rad + pos: -8.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12483 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12484 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12586 + components: + - pos: -5.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12587 + components: + - pos: 5.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12588 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12589 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,0.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12595 + components: + - pos: 14.5,2.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12606 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,-1.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12651 + components: + - pos: 17.5,10.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12652 + components: + - pos: 21.5,6.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12653 + components: + - rot: 3.141592653589793 rad + pos: 25.5,3.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12654 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,5.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12715 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,11.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12716 + components: + - rot: 1.5707963267948966 rad + pos: 26.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12717 + components: + - pos: 27.5,24.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12736 + components: + - pos: -3.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12759 + components: + - rot: 3.141592653589793 rad + pos: 7.5,13.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12760 + components: + - rot: 3.141592653589793 rad + pos: 9.5,13.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12761 + components: + - rot: 3.141592653589793 rad + pos: 10.5,13.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12766 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,17.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 12858 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,26.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13004 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,55.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13005 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,57.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13006 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,60.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13007 + components: + - pos: -15.5,63.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13033 + components: + - pos: -8.5,60.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13034 + components: + - rot: 3.141592653589793 rad + pos: -12.5,53.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13964 + components: + - rot: 3.141592653589793 rad + pos: -61.5,40.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13996 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,45.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 13998 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,48.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14045 + components: + - pos: -68.5,34.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14047 + components: + - rot: 3.141592653589793 rad + pos: -76.5,32.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14110 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,23.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14113 + components: + - rot: -1.5707963267948966 rad + pos: -71.5,16.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14114 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,19.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14115 + components: + - rot: -1.5707963267948966 rad + pos: -73.5,30.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14148 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,28.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14159 + components: + - rot: 1.5707963267948966 rad + pos: -80.5,25.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor + - uid: 14160 + components: + - pos: -61.5,33.5 + parent: 1 + type: Transform + - color: '#990000FF' + type: AtmosPipeColor +- proto: GeneratorBasic + entities: + - uid: 6144 + components: + - pos: 17.5,46.5 + parent: 1 + type: Transform +- proto: Girder + entities: + - uid: 54 + components: + - pos: 3.5,-3.5 + parent: 1 + type: Transform + - uid: 110 + components: + - pos: -21.5,-12.5 + parent: 1 + type: Transform + - uid: 179 + components: + - pos: 3.5,-6.5 + parent: 1 + type: Transform + - uid: 182 + components: + - pos: 8.5,-6.5 + parent: 1 + type: Transform + - uid: 191 + components: + - pos: 1.5,-7.5 + parent: 1 + type: Transform + - uid: 488 + components: + - pos: 9.5,-3.5 + parent: 1 + type: Transform + - uid: 514 + components: + - pos: 14.5,-3.5 + parent: 1 + type: Transform + - uid: 515 + components: + - pos: 22.5,-6.5 + parent: 1 + type: Transform + - uid: 585 + components: + - pos: 6.5,0.5 + parent: 1 + type: Transform + - uid: 648 + components: + - pos: 18.5,-3.5 + parent: 1 + type: Transform + - uid: 655 + components: + - pos: 22.5,0.5 + parent: 1 + type: Transform + - uid: 1044 + components: + - pos: 15.5,11.5 + parent: 1 + type: Transform + - uid: 1048 + components: + - pos: 15.5,7.5 + parent: 1 + type: Transform + - uid: 1049 + components: + - pos: 21.5,14.5 + parent: 1 + type: Transform + - uid: 1086 + components: + - pos: -22.5,-2.5 + parent: 1 + type: Transform + - uid: 1105 + components: + - pos: -22.5,1.5 + parent: 1 + type: Transform + - uid: 1128 + components: + - pos: -20.5,3.5 + parent: 1 + type: Transform + - uid: 1130 + components: + - pos: -30.5,-0.5 + parent: 1 + type: Transform + - uid: 1134 + components: + - pos: 8.5,7.5 + parent: 1 + type: Transform + - uid: 1139 + components: + - pos: 9.5,7.5 + parent: 1 + type: Transform + - uid: 1174 + components: + - pos: 13.5,23.5 + parent: 1 + type: Transform + - uid: 1175 + components: + - pos: 21.5,22.5 + parent: 1 + type: Transform + - uid: 1200 + components: + - pos: 16.5,21.5 + parent: 1 + type: Transform + - uid: 1305 + components: + - pos: 21.5,33.5 + parent: 1 + type: Transform + - uid: 1381 + components: + - pos: -1.5,44.5 + parent: 1 + type: Transform + - uid: 1416 + components: + - pos: 13.5,38.5 + parent: 1 + type: Transform + - uid: 1470 + components: + - pos: -7.5,19.5 + parent: 1 + type: Transform + - uid: 1476 + components: + - pos: -10.5,24.5 + parent: 1 + type: Transform + - uid: 2059 + components: + - pos: 17.5,24.5 + parent: 1 + type: Transform + - uid: 2305 + components: + - pos: -23.5,4.5 + parent: 1 + type: Transform + - uid: 3034 + components: + - pos: -21.5,14.5 + parent: 1 + type: Transform + - uid: 3049 + components: + - pos: -27.5,25.5 + parent: 1 + type: Transform + - uid: 3070 + components: + - pos: -29.5,19.5 + parent: 1 + type: Transform + - uid: 3109 + components: + - pos: -32.5,11.5 + parent: 1 + type: Transform + - uid: 3151 + components: + - pos: -32.5,22.5 + parent: 1 + type: Transform + - uid: 3160 + components: + - pos: -31.5,17.5 + parent: 1 + type: Transform + - uid: 3461 + components: + - pos: -29.5,3.5 + parent: 1 + type: Transform + - uid: 3464 + components: + - pos: -24.5,3.5 + parent: 1 + type: Transform + - uid: 3517 + components: + - pos: -62.5,6.5 + parent: 1 + type: Transform + - uid: 3518 + components: + - pos: -64.5,6.5 + parent: 1 + type: Transform + - uid: 3522 + components: + - pos: -58.5,17.5 + parent: 1 + type: Transform + - uid: 3596 + components: + - pos: -47.5,-5.5 + parent: 1 + type: Transform + - uid: 3614 + components: + - pos: -53.5,-8.5 + parent: 1 + type: Transform + - uid: 3732 + components: + - pos: -32.5,6.5 + parent: 1 + type: Transform + - uid: 3733 + components: + - pos: -58.5,23.5 + parent: 1 + type: Transform + - uid: 3734 + components: + - pos: -58.5,46.5 + parent: 1 + type: Transform + - uid: 3865 + components: + - pos: -51.5,3.5 + parent: 1 + type: Transform + - uid: 4165 + components: + - pos: -38.5,16.5 + parent: 1 + type: Transform + - uid: 4172 + components: + - pos: -40.5,19.5 + parent: 1 + type: Transform + - uid: 4193 + components: + - pos: -43.5,22.5 + parent: 1 + type: Transform + - uid: 4197 + components: + - pos: -45.5,29.5 + parent: 1 + type: Transform + - uid: 4292 + components: + - pos: -46.5,16.5 + parent: 1 + type: Transform + - uid: 4294 + components: + - pos: -43.5,16.5 + parent: 1 + type: Transform + - uid: 4297 + components: + - pos: -43.5,18.5 + parent: 1 + type: Transform + - uid: 4303 + components: + - pos: -49.5,19.5 + parent: 1 + type: Transform + - uid: 4501 + components: + - pos: -49.5,-6.5 + parent: 1 + type: Transform + - uid: 4502 + components: + - pos: -49.5,-3.5 + parent: 1 + type: Transform + - uid: 4512 + components: + - pos: -50.5,-8.5 + parent: 1 + type: Transform + - uid: 4518 + components: + - pos: -55.5,-0.5 + parent: 1 + type: Transform + - uid: 5490 + components: + - pos: -55.5,-10.5 + parent: 1 + type: Transform + - uid: 5875 + components: + - pos: -4.5,45.5 + parent: 1 + type: Transform + - uid: 6731 + components: + - pos: -29.5,41.5 + parent: 1 + type: Transform + - uid: 6959 + components: + - pos: -33.5,53.5 + parent: 1 + type: Transform + - uid: 7030 + components: + - pos: -54.5,45.5 + parent: 1 + type: Transform + - uid: 7031 + components: + - pos: -51.5,45.5 + parent: 1 + type: Transform + - uid: 7037 + components: + - pos: -55.5,41.5 + parent: 1 + type: Transform + - uid: 7058 + components: + - pos: -53.5,40.5 + parent: 1 + type: Transform + - uid: 7062 + components: + - pos: -50.5,42.5 + parent: 1 + type: Transform + - uid: 9185 + components: + - pos: -74.5,50.5 + parent: 1 + type: Transform + - uid: 9219 + components: + - pos: -59.5,39.5 + parent: 1 + type: Transform + - uid: 9245 + components: + - pos: -70.5,38.5 + parent: 1 + type: Transform + - uid: 9901 + components: + - pos: -59.5,22.5 + parent: 1 + type: Transform + - uid: 9926 + components: + - pos: -65.5,9.5 + parent: 1 + type: Transform + - uid: 10845 + components: + - pos: -63.5,38.5 + parent: 1 + type: Transform + - uid: 13344 + components: + - pos: -2.5,13.5 + parent: 1 + type: Transform + - uid: 15187 + components: + - pos: -68.5,48.5 + parent: 1 + type: Transform +- proto: GravityGenerator + entities: + - uid: 920 + components: + - pos: 28.5,2.5 + parent: 1 + type: Transform + - charge: 100 + type: GravityGenerator + - radius: 175.75 + type: PointLight +- proto: GrenadeFlashBang + entities: + - uid: 8009 + components: + - pos: -61.810192,50.638466 + parent: 1 + type: Transform + - uid: 8010 + components: + - pos: -61.950817,50.700966 + parent: 1 + type: Transform + - uid: 8011 + components: + - pos: -61.997692,50.59159 + parent: 1 + type: Transform +- proto: Grille + entities: + - uid: 28 + components: + - pos: -3.5,-0.5 + parent: 1 + type: Transform + - uid: 37 + components: + - pos: -8.5,3.5 + parent: 1 + type: Transform + - uid: 41 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-5.5 + parent: 1 + type: Transform + - uid: 67 + components: + - pos: -7.5,-5.5 + parent: 1 + type: Transform + - uid: 68 + components: + - pos: -7.5,-4.5 + parent: 1 + type: Transform + - uid: 69 + components: + - pos: -6.5,3.5 + parent: 1 + type: Transform + - uid: 212 + components: + - pos: 2.5,-12.5 + parent: 1 + type: Transform + - uid: 213 + components: + - pos: 0.5,-12.5 + parent: 1 + type: Transform + - uid: 609 + components: + - rot: 3.141592653589793 rad + pos: -25.5,30.5 + parent: 1 + type: Transform + - uid: 711 + components: + - pos: 30.5,1.5 + parent: 1 + type: Transform + - uid: 712 + components: + - pos: 30.5,2.5 + parent: 1 + type: Transform + - uid: 713 + components: + - pos: 30.5,3.5 + parent: 1 + type: Transform + - uid: 946 + components: + - rot: 3.141592653589793 rad + pos: 29.5,6.5 + parent: 1 + type: Transform + - uid: 947 + components: + - rot: 3.141592653589793 rad + pos: 29.5,5.5 + parent: 1 + type: Transform + - uid: 953 + components: + - rot: -1.5707963267948966 rad + pos: 31.5,17.5 + parent: 1 + type: Transform + - uid: 954 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,17.5 + parent: 1 + type: Transform + - uid: 975 + components: + - rot: 3.141592653589793 rad + pos: 29.5,14.5 + parent: 1 + type: Transform + - uid: 976 + components: + - rot: 3.141592653589793 rad + pos: 29.5,13.5 + parent: 1 + type: Transform + - uid: 977 + components: + - rot: 3.141592653589793 rad + pos: 29.5,12.5 + parent: 1 + type: Transform + - uid: 978 + components: + - rot: 3.141592653589793 rad + pos: 29.5,20.5 + parent: 1 + type: Transform + - uid: 979 + components: + - rot: 3.141592653589793 rad + pos: 29.5,21.5 + parent: 1 + type: Transform + - uid: 1052 + components: + - pos: 18.5,7.5 + parent: 1 + type: Transform + - uid: 1054 + components: + - pos: 16.5,7.5 + parent: 1 + type: Transform + - uid: 1066 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-4.5 + parent: 1 + type: Transform + - uid: 1067 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-3.5 + parent: 1 + type: Transform + - uid: 1068 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-1.5 + parent: 1 + type: Transform + - uid: 1264 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,24.5 + parent: 1 + type: Transform + - uid: 1269 + components: + - rot: 1.5707963267948966 rad + pos: -2.5,28.5 + parent: 1 + type: Transform + - uid: 1290 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,28.5 + parent: 1 + type: Transform + - uid: 1303 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,28.5 + parent: 1 + type: Transform + - uid: 1316 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,31.5 + parent: 1 + type: Transform + - uid: 1317 + components: + - pos: 5.5,23.5 + parent: 1 + type: Transform + - uid: 1318 + components: + - pos: 11.5,27.5 + parent: 1 + type: Transform + - uid: 1342 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,29.5 + parent: 1 + type: Transform + - uid: 1343 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,30.5 + parent: 1 + type: Transform + - uid: 1345 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,32.5 + parent: 1 + type: Transform + - uid: 1347 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,34.5 + parent: 1 + type: Transform + - uid: 1360 + components: + - pos: 5.5,22.5 + parent: 1 + type: Transform + - uid: 1403 + components: + - pos: -44.5,65.5 + parent: 1 + type: Transform + - uid: 1424 + components: + - pos: 16.5,43.5 + parent: 1 + type: Transform + - uid: 1631 + components: + - pos: 12.5,27.5 + parent: 1 + type: Transform + - uid: 1869 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,-15.5 + parent: 1 + type: Transform + - uid: 1870 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-15.5 + parent: 1 + type: Transform + - uid: 1871 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,-15.5 + parent: 1 + type: Transform + - uid: 1887 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,30.5 + parent: 1 + type: Transform + - uid: 1890 + components: + - pos: 13.5,29.5 + parent: 1 + type: Transform + - uid: 1894 + components: + - pos: 5.5,26.5 + parent: 1 + type: Transform + - uid: 2820 + components: + - rot: 3.141592653589793 rad + pos: -14.5,24.5 + parent: 1 + type: Transform + - uid: 2822 + components: + - rot: 3.141592653589793 rad + pos: -14.5,28.5 + parent: 1 + type: Transform + - uid: 2831 + components: + - rot: 3.141592653589793 rad + pos: -17.5,30.5 + parent: 1 + type: Transform + - uid: 2832 + components: + - rot: 3.141592653589793 rad + pos: -16.5,30.5 + parent: 1 + type: Transform + - uid: 2833 + components: + - pos: -15.5,30.5 + parent: 1 + type: Transform + - uid: 2834 + components: + - rot: 3.141592653589793 rad + pos: -14.5,29.5 + parent: 1 + type: Transform + - uid: 2839 + components: + - rot: 3.141592653589793 rad + pos: -14.5,23.5 + parent: 1 + type: Transform + - uid: 3085 + components: + - pos: -25.5,7.5 + parent: 1 + type: Transform + - uid: 3086 + components: + - pos: -26.5,7.5 + parent: 1 + type: Transform + - uid: 3087 + components: + - pos: -27.5,7.5 + parent: 1 + type: Transform + - uid: 3132 + components: + - pos: -26.5,30.5 + parent: 1 + type: Transform + - uid: 3135 + components: + - pos: -23.5,30.5 + parent: 1 + type: Transform + - uid: 3150 + components: + - pos: -34.5,22.5 + parent: 1 + type: Transform + - uid: 3322 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,-14.5 + parent: 1 + type: Transform + - uid: 3429 + components: + - pos: -35.5,21.5 + parent: 1 + type: Transform + - uid: 3431 + components: + - pos: -35.5,19.5 + parent: 1 + type: Transform + - uid: 3432 + components: + - pos: -35.5,18.5 + parent: 1 + type: Transform + - uid: 3433 + components: + - pos: -35.5,20.5 + parent: 1 + type: Transform + - uid: 3434 + components: + - pos: -35.5,16.5 + parent: 1 + type: Transform + - uid: 3435 + components: + - pos: -35.5,15.5 + parent: 1 + type: Transform + - uid: 3444 + components: + - pos: -20.5,36.5 + parent: 1 + type: Transform + - uid: 3452 + components: + - pos: -14.5,46.5 + parent: 1 + type: Transform + - uid: 3456 + components: + - pos: -22.5,36.5 + parent: 1 + type: Transform + - uid: 3457 + components: + - pos: -21.5,36.5 + parent: 1 + type: Transform + - uid: 3555 + components: + - pos: -37.5,-8.5 + parent: 1 + type: Transform + - uid: 3588 + components: + - pos: -42.5,-7.5 + parent: 1 + type: Transform + - uid: 3589 + components: + - pos: -42.5,-6.5 + parent: 1 + type: Transform + - uid: 3593 + components: + - pos: -42.5,-4.5 + parent: 1 + type: Transform + - uid: 3594 + components: + - pos: -42.5,-3.5 + parent: 1 + type: Transform + - uid: 3595 + components: + - pos: -42.5,-1.5 + parent: 1 + type: Transform + - uid: 3613 + components: + - rot: 3.141592653589793 rad + pos: -53.5,3.5 + parent: 1 + type: Transform + - uid: 3630 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,-14.5 + parent: 1 + type: Transform + - uid: 3642 + components: + - pos: -38.5,-0.5 + parent: 1 + type: Transform + - uid: 3643 + components: + - pos: -36.5,-0.5 + parent: 1 + type: Transform + - uid: 3644 + components: + - pos: -44.5,3.5 + parent: 1 + type: Transform + - uid: 3685 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,-0.5 + parent: 1 + type: Transform + - uid: 3686 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,-14.5 + parent: 1 + type: Transform + - uid: 3775 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-13.5 + parent: 1 + type: Transform + - uid: 3841 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,-4.5 + parent: 1 + type: Transform + - uid: 3842 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,-4.5 + parent: 1 + type: Transform + - uid: 3843 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,-4.5 + parent: 1 + type: Transform + - uid: 3905 + components: + - pos: -59.5,10.5 + parent: 1 + type: Transform + - uid: 3962 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,-14.5 + parent: 1 + type: Transform + - uid: 3972 + components: + - rot: 3.141592653589793 rad + pos: -61.5,-12.5 + parent: 1 + type: Transform + - uid: 4099 + components: + - rot: 3.141592653589793 rad + pos: -62.5,-12.5 + parent: 1 + type: Transform + - uid: 4306 + components: + - pos: -48.5,25.5 + parent: 1 + type: Transform + - uid: 4312 + components: + - pos: -46.5,25.5 + parent: 1 + type: Transform + - uid: 4314 + components: + - pos: -48.5,23.5 + parent: 1 + type: Transform + - uid: 4315 + components: + - pos: -48.5,24.5 + parent: 1 + type: Transform + - uid: 4316 + components: + - pos: -46.5,23.5 + parent: 1 + type: Transform + - uid: 4317 + components: + - pos: -46.5,24.5 + parent: 1 + type: Transform + - uid: 4735 + components: + - pos: -25.5,64.5 + parent: 1 + type: Transform + - uid: 4748 + components: + - pos: -74.5,7.5 + parent: 1 + type: Transform + - uid: 4757 + components: + - pos: -38.5,-8.5 + parent: 1 + type: Transform + - uid: 4760 + components: + - rot: 3.141592653589793 rad + pos: -60.5,-12.5 + parent: 1 + type: Transform + - uid: 4816 + components: + - pos: -65.5,-13.5 + parent: 1 + type: Transform + - uid: 4827 + components: + - pos: -59.5,2.5 + parent: 1 + type: Transform + - uid: 4828 + components: + - pos: -59.5,1.5 + parent: 1 + type: Transform + - uid: 4829 + components: + - pos: -59.5,0.5 + parent: 1 + type: Transform + - uid: 4830 + components: + - pos: -59.5,-0.5 + parent: 1 + type: Transform + - uid: 4831 + components: + - pos: -59.5,-1.5 + parent: 1 + type: Transform + - uid: 4832 + components: + - pos: -59.5,-2.5 + parent: 1 + type: Transform + - uid: 4833 + components: + - pos: -59.5,-3.5 + parent: 1 + type: Transform + - uid: 4834 + components: + - pos: -59.5,-4.5 + parent: 1 + type: Transform + - uid: 4835 + components: + - pos: -59.5,-5.5 + parent: 1 + type: Transform + - uid: 4836 + components: + - pos: -59.5,-6.5 + parent: 1 + type: Transform + - uid: 4853 + components: + - pos: -75.5,3.5 + parent: 1 + type: Transform + - uid: 4857 + components: + - pos: -71.5,3.5 + parent: 1 + type: Transform + - uid: 4858 + components: + - pos: -70.5,3.5 + parent: 1 + type: Transform + - uid: 4859 + components: + - pos: -69.5,3.5 + parent: 1 + type: Transform + - uid: 4860 + components: + - pos: -68.5,3.5 + parent: 1 + type: Transform + - uid: 4864 + components: + - pos: -64.5,3.5 + parent: 1 + type: Transform + - uid: 4865 + components: + - pos: -63.5,3.5 + parent: 1 + type: Transform + - uid: 4866 + components: + - pos: -62.5,3.5 + parent: 1 + type: Transform + - uid: 4867 + components: + - pos: -61.5,3.5 + parent: 1 + type: Transform + - uid: 4868 + components: + - pos: -60.5,3.5 + parent: 1 + type: Transform + - uid: 4884 + components: + - pos: -73.5,-13.5 + parent: 1 + type: Transform + - uid: 4889 + components: + - pos: -59.5,-7.5 + parent: 1 + type: Transform + - uid: 4894 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-12.5 + parent: 1 + type: Transform + - uid: 4895 + components: + - pos: -64.5,-8.5 + parent: 1 + type: Transform + - uid: 4898 + components: + - pos: -73.5,-14.5 + parent: 1 + type: Transform + - uid: 4899 + components: + - rot: 3.141592653589793 rad + pos: -69.5,-12.5 + parent: 1 + type: Transform + - uid: 4900 + components: + - rot: 3.141592653589793 rad + pos: -68.5,-12.5 + parent: 1 + type: Transform + - uid: 4902 + components: + - pos: -61.5,-8.5 + parent: 1 + type: Transform + - uid: 4908 + components: + - pos: -69.5,-8.5 + parent: 1 + type: Transform + - uid: 4909 + components: + - pos: -68.5,-8.5 + parent: 1 + type: Transform + - uid: 4910 + components: + - pos: -63.5,-8.5 + parent: 1 + type: Transform + - uid: 4925 + components: + - pos: -62.5,-8.5 + parent: 1 + type: Transform + - uid: 4926 + components: + - rot: 3.141592653589793 rad + pos: -70.5,-12.5 + parent: 1 + type: Transform + - uid: 4932 + components: + - pos: -65.5,-14.5 + parent: 1 + type: Transform + - uid: 4934 + components: + - pos: -75.5,-8.5 + parent: 1 + type: Transform + - uid: 4944 + components: + - rot: 3.141592653589793 rad + pos: -58.5,-12.5 + parent: 1 + type: Transform + - uid: 4971 + components: + - pos: -70.5,-8.5 + parent: 1 + type: Transform + - uid: 4976 + components: + - pos: -71.5,-8.5 + parent: 1 + type: Transform + - uid: 4977 + components: + - pos: -60.5,-8.5 + parent: 1 + type: Transform + - uid: 5074 + components: + - pos: -76.5,4.5 + parent: 1 + type: Transform + - uid: 5075 + components: + - pos: -76.5,5.5 + parent: 1 + type: Transform + - uid: 5076 + components: + - pos: -76.5,6.5 + parent: 1 + type: Transform + - uid: 5175 + components: + - pos: -75.5,7.5 + parent: 1 + type: Transform + - uid: 5248 + components: + - pos: -47.5,-11.5 + parent: 1 + type: Transform + - uid: 5249 + components: + - pos: -49.5,-11.5 + parent: 1 + type: Transform + - uid: 5252 + components: + - pos: -55.5,18.5 + parent: 1 + type: Transform + - uid: 5280 + components: + - pos: -55.5,19.5 + parent: 1 + type: Transform + - uid: 5316 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,14.5 + parent: 1 + type: Transform + - uid: 5340 + components: + - pos: -25.5,65.5 + parent: 1 + type: Transform + - uid: 5341 + components: + - pos: -17.5,70.5 + parent: 1 + type: Transform + - uid: 5823 + components: + - pos: -18.5,46.5 + parent: 1 + type: Transform + - uid: 5836 + components: + - pos: -18.5,47.5 + parent: 1 + type: Transform + - uid: 5861 + components: + - pos: -14.5,44.5 + parent: 1 + type: Transform + - uid: 5862 + components: + - pos: -14.5,43.5 + parent: 1 + type: Transform + - uid: 5864 + components: + - pos: -14.5,41.5 + parent: 1 + type: Transform + - uid: 5866 + components: + - pos: -14.5,39.5 + parent: 1 + type: Transform + - uid: 5867 + components: + - pos: -14.5,38.5 + parent: 1 + type: Transform + - uid: 5869 + components: + - pos: -14.5,36.5 + parent: 1 + type: Transform + - uid: 5870 + components: + - pos: -14.5,35.5 + parent: 1 + type: Transform + - uid: 5901 + components: + - pos: -14.5,49.5 + parent: 1 + type: Transform + - uid: 5963 + components: + - pos: -1.5,54.5 + parent: 1 + type: Transform + - uid: 5964 + components: + - pos: -0.5,54.5 + parent: 1 + type: Transform + - uid: 5965 + components: + - pos: 0.5,54.5 + parent: 1 + type: Transform + - uid: 5966 + components: + - pos: -2.5,53.5 + parent: 1 + type: Transform + - uid: 5967 + components: + - pos: -2.5,52.5 + parent: 1 + type: Transform + - uid: 5968 + components: + - pos: -2.5,51.5 + parent: 1 + type: Transform + - uid: 5969 + components: + - pos: -2.5,50.5 + parent: 1 + type: Transform + - uid: 5970 + components: + - pos: -2.5,49.5 + parent: 1 + type: Transform + - uid: 6012 + components: + - pos: -24.5,67.5 + parent: 1 + type: Transform + - uid: 6013 + components: + - pos: -16.5,70.5 + parent: 1 + type: Transform + - uid: 6043 + components: + - pos: 16.5,53.5 + parent: 1 + type: Transform + - uid: 6044 + components: + - pos: 15.5,53.5 + parent: 1 + type: Transform + - uid: 6045 + components: + - pos: 14.5,53.5 + parent: 1 + type: Transform + - uid: 6046 + components: + - pos: 13.5,53.5 + parent: 1 + type: Transform + - uid: 6257 + components: + - pos: -14.5,70.5 + parent: 1 + type: Transform + - uid: 6275 + components: + - pos: -25.5,62.5 + parent: 1 + type: Transform + - uid: 6319 + components: + - pos: 24.5,38.5 + parent: 1 + type: Transform + - uid: 6321 + components: + - pos: 24.5,40.5 + parent: 1 + type: Transform + - uid: 6322 + components: + - pos: 24.5,41.5 + parent: 1 + type: Transform + - uid: 6323 + components: + - pos: -11.5,70.5 + parent: 1 + type: Transform + - uid: 6352 + components: + - rot: 3.141592653589793 rad + pos: -13.5,54.5 + parent: 1 + type: Transform + - uid: 6355 + components: + - rot: 3.141592653589793 rad + pos: -13.5,56.5 + parent: 1 + type: Transform + - uid: 6356 + components: + - rot: 3.141592653589793 rad + pos: -13.5,53.5 + parent: 1 + type: Transform + - uid: 6358 + components: + - rot: 3.141592653589793 rad + pos: -13.5,57.5 + parent: 1 + type: Transform + - uid: 6389 + components: + - rot: 3.141592653589793 rad + pos: -16.5,58.5 + parent: 1 + type: Transform + - uid: 6408 + components: + - pos: -9.5,62.5 + parent: 1 + type: Transform + - uid: 6409 + components: + - pos: -8.5,62.5 + parent: 1 + type: Transform + - uid: 6410 + components: + - pos: -7.5,62.5 + parent: 1 + type: Transform + - uid: 6411 + components: + - pos: -6.5,62.5 + parent: 1 + type: Transform + - uid: 6412 + components: + - pos: -5.5,62.5 + parent: 1 + type: Transform + - uid: 6414 + components: + - pos: -4.5,61.5 + parent: 1 + type: Transform + - uid: 6415 + components: + - pos: -4.5,60.5 + parent: 1 + type: Transform + - uid: 6458 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,64.5 + parent: 1 + type: Transform + - uid: 6459 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,65.5 + parent: 1 + type: Transform + - uid: 6460 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,65.5 + parent: 1 + type: Transform + - uid: 6461 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,66.5 + parent: 1 + type: Transform + - uid: 6462 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,66.5 + parent: 1 + type: Transform + - uid: 6463 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,67.5 + parent: 1 + type: Transform + - uid: 6464 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,67.5 + parent: 1 + type: Transform + - uid: 6465 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,67.5 + parent: 1 + type: Transform + - uid: 6466 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,67.5 + parent: 1 + type: Transform + - uid: 6467 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,67.5 + parent: 1 + type: Transform + - uid: 6468 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,67.5 + parent: 1 + type: Transform + - uid: 6469 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,67.5 + parent: 1 + type: Transform + - uid: 6470 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,66.5 + parent: 1 + type: Transform + - uid: 6471 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,66.5 + parent: 1 + type: Transform + - uid: 6472 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,65.5 + parent: 1 + type: Transform + - uid: 6473 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,65.5 + parent: 1 + type: Transform + - uid: 6474 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,64.5 + parent: 1 + type: Transform + - uid: 6653 + components: + - pos: -18.5,48.5 + parent: 1 + type: Transform + - uid: 6669 + components: + - pos: -13.5,70.5 + parent: 1 + type: Transform + - uid: 6670 + components: + - pos: -10.5,69.5 + parent: 1 + type: Transform + - uid: 6671 + components: + - pos: -1.5,62.5 + parent: 1 + type: Transform + - uid: 6673 + components: + - pos: -1.5,60.5 + parent: 1 + type: Transform + - uid: 6674 + components: + - pos: -1.5,59.5 + parent: 1 + type: Transform + - uid: 6675 + components: + - pos: -3.5,65.5 + parent: 1 + type: Transform + - uid: 6678 + components: + - pos: -22.5,69.5 + parent: 1 + type: Transform + - uid: 6685 + components: + - pos: -22.5,60.5 + parent: 1 + type: Transform + - uid: 6686 + components: + - pos: -22.5,61.5 + parent: 1 + type: Transform + - uid: 6687 + components: + - pos: -22.5,62.5 + parent: 1 + type: Transform + - uid: 6757 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,34.5 + parent: 1 + type: Transform + - uid: 6758 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,34.5 + parent: 1 + type: Transform + - uid: 6760 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,34.5 + parent: 1 + type: Transform + - uid: 6783 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,48.5 + parent: 1 + type: Transform + - uid: 6791 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,41.5 + parent: 1 + type: Transform + - uid: 6811 + components: + - pos: -41.5,53.5 + parent: 1 + type: Transform + - uid: 6816 + components: + - pos: -40.5,53.5 + parent: 1 + type: Transform + - uid: 6821 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,48.5 + parent: 1 + type: Transform + - uid: 6984 + components: + - pos: -48.5,56.5 + parent: 1 + type: Transform + - uid: 6985 + components: + - pos: -46.5,56.5 + parent: 1 + type: Transform + - uid: 6989 + components: + - pos: -57.5,48.5 + parent: 1 + type: Transform + - uid: 6990 + components: + - pos: -56.5,48.5 + parent: 1 + type: Transform + - uid: 6991 + components: + - pos: -54.5,48.5 + parent: 1 + type: Transform + - uid: 6992 + components: + - pos: -53.5,48.5 + parent: 1 + type: Transform + - uid: 6993 + components: + - pos: -51.5,48.5 + parent: 1 + type: Transform + - uid: 6994 + components: + - pos: -50.5,48.5 + parent: 1 + type: Transform + - uid: 6995 + components: + - pos: -50.5,52.5 + parent: 1 + type: Transform + - uid: 6996 + components: + - pos: -53.5,52.5 + parent: 1 + type: Transform + - uid: 6997 + components: + - pos: -56.5,52.5 + parent: 1 + type: Transform + - uid: 7004 + components: + - pos: -54.5,59.5 + parent: 1 + type: Transform + - uid: 7005 + components: + - pos: -55.5,59.5 + parent: 1 + type: Transform + - uid: 7006 + components: + - pos: -56.5,59.5 + parent: 1 + type: Transform + - uid: 7014 + components: + - pos: -48.5,63.5 + parent: 1 + type: Transform + - uid: 7029 + components: + - rot: 3.141592653589793 rad + pos: -52.5,45.5 + parent: 1 + type: Transform + - uid: 7095 + components: + - pos: -23.5,68.5 + parent: 1 + type: Transform + - uid: 7113 + components: + - pos: -46.5,63.5 + parent: 1 + type: Transform + - uid: 7151 + components: + - pos: -53.5,63.5 + parent: 1 + type: Transform + - uid: 7152 + components: + - pos: -53.5,64.5 + parent: 1 + type: Transform + - uid: 7153 + components: + - pos: -53.5,65.5 + parent: 1 + type: Transform + - uid: 7162 + components: + - pos: -58.5,62.5 + parent: 1 + type: Transform + - uid: 7165 + components: + - pos: -61.5,66.5 + parent: 1 + type: Transform + - uid: 7166 + components: + - pos: -60.5,66.5 + parent: 1 + type: Transform + - uid: 7167 + components: + - pos: -59.5,66.5 + parent: 1 + type: Transform + - uid: 7168 + components: + - pos: -58.5,66.5 + parent: 1 + type: Transform + - uid: 7173 + components: + - pos: -56.5,66.5 + parent: 1 + type: Transform + - uid: 7174 + components: + - pos: -55.5,66.5 + parent: 1 + type: Transform + - uid: 7175 + components: + - pos: -54.5,66.5 + parent: 1 + type: Transform + - uid: 7179 + components: + - pos: -56.5,62.5 + parent: 1 + type: Transform + - uid: 7180 + components: + - pos: -54.5,62.5 + parent: 1 + type: Transform + - uid: 7238 + components: + - pos: -58.5,54.5 + parent: 1 + type: Transform + - uid: 7242 + components: + - pos: -49.5,54.5 + parent: 1 + type: Transform + - uid: 7255 + components: + - pos: -49.5,83.5 + parent: 1 + type: Transform + - uid: 7256 + components: + - pos: -49.5,84.5 + parent: 1 + type: Transform + - uid: 7257 + components: + - pos: -49.5,85.5 + parent: 1 + type: Transform + - uid: 7258 + components: + - pos: -49.5,86.5 + parent: 1 + type: Transform + - uid: 7259 + components: + - pos: -49.5,87.5 + parent: 1 + type: Transform + - uid: 7260 + components: + - pos: -49.5,88.5 + parent: 1 + type: Transform + - uid: 7271 + components: + - pos: -51.5,91.5 + parent: 1 + type: Transform + - uid: 7301 + components: + - pos: -58.5,82.5 + parent: 1 + type: Transform + - uid: 7307 + components: + - pos: -59.5,90.5 + parent: 1 + type: Transform + - uid: 7308 + components: + - pos: -60.5,90.5 + parent: 1 + type: Transform + - uid: 7312 + components: + - pos: -61.5,82.5 + parent: 1 + type: Transform + - uid: 7318 + components: + - pos: -63.5,83.5 + parent: 1 + type: Transform + - uid: 7319 + components: + - pos: -62.5,88.5 + parent: 1 + type: Transform + - uid: 7374 + components: + - pos: -10.5,70.5 + parent: 1 + type: Transform + - uid: 7375 + components: + - pos: -5.5,65.5 + parent: 1 + type: Transform + - uid: 7376 + components: + - pos: -1.5,63.5 + parent: 1 + type: Transform + - uid: 7377 + components: + - pos: -6.5,65.5 + parent: 1 + type: Transform + - uid: 7413 + components: + - pos: -1.5,64.5 + parent: 1 + type: Transform + - uid: 7512 + components: + - pos: -9.5,69.5 + parent: 1 + type: Transform + - uid: 7513 + components: + - pos: -9.5,68.5 + parent: 1 + type: Transform + - uid: 7516 + components: + - pos: -7.5,65.5 + parent: 1 + type: Transform + - uid: 7712 + components: + - pos: -63.5,84.5 + parent: 1 + type: Transform + - uid: 7715 + components: + - pos: -58.5,90.5 + parent: 1 + type: Transform + - uid: 7728 + components: + - pos: -59.5,82.5 + parent: 1 + type: Transform + - uid: 7729 + components: + - pos: -60.5,82.5 + parent: 1 + type: Transform + - uid: 7740 + components: + - pos: -63.5,85.5 + parent: 1 + type: Transform + - uid: 7862 + components: + - pos: -47.5,52.5 + parent: 1 + type: Transform + - uid: 8084 + components: + - pos: -8.5,68.5 + parent: 1 + type: Transform + - uid: 8115 + components: + - pos: -24.5,68.5 + parent: 1 + type: Transform + - uid: 8289 + components: + - pos: -22.5,70.5 + parent: 1 + type: Transform + - uid: 8290 + components: + - pos: -19.5,70.5 + parent: 1 + type: Transform + - uid: 8970 + components: + - pos: -55.5,74.5 + parent: 1 + type: Transform + - uid: 8972 + components: + - pos: -55.5,69.5 + parent: 1 + type: Transform + - uid: 8973 + components: + - pos: -55.5,70.5 + parent: 1 + type: Transform + - uid: 8975 + components: + - pos: -55.5,72.5 + parent: 1 + type: Transform + - uid: 8976 + components: + - pos: -23.5,69.5 + parent: 1 + type: Transform + - uid: 8977 + components: + - pos: -55.5,75.5 + parent: 1 + type: Transform + - uid: 8981 + components: + - pos: -107.5,22.5 + parent: 1 + type: Transform + - uid: 8986 + components: + - pos: -65.5,82.5 + parent: 1 + type: Transform + - uid: 8988 + components: + - pos: -65.5,84.5 + parent: 1 + type: Transform + - uid: 8989 + components: + - pos: -65.5,85.5 + parent: 1 + type: Transform + - uid: 8991 + components: + - pos: -65.5,87.5 + parent: 1 + type: Transform + - uid: 8993 + components: + - pos: -64.5,88.5 + parent: 1 + type: Transform + - uid: 8994 + components: + - pos: -64.5,89.5 + parent: 1 + type: Transform + - uid: 9023 + components: + - pos: -47.5,77.5 + parent: 1 + type: Transform + - uid: 9024 + components: + - pos: -47.5,76.5 + parent: 1 + type: Transform + - uid: 9026 + components: + - pos: -47.5,74.5 + parent: 1 + type: Transform + - uid: 9028 + components: + - pos: -46.5,71.5 + parent: 1 + type: Transform + - uid: 9029 + components: + - pos: -45.5,71.5 + parent: 1 + type: Transform + - uid: 9030 + components: + - pos: -44.5,71.5 + parent: 1 + type: Transform + - uid: 9032 + components: + - pos: -42.5,71.5 + parent: 1 + type: Transform + - uid: 9048 + components: + - pos: -32.5,62.5 + parent: 1 + type: Transform + - uid: 9050 + components: + - pos: -30.5,62.5 + parent: 1 + type: Transform + - uid: 9051 + components: + - pos: -29.5,62.5 + parent: 1 + type: Transform + - uid: 9091 + components: + - pos: 0.5,56.5 + parent: 1 + type: Transform + - uid: 9092 + components: + - pos: 1.5,56.5 + parent: 1 + type: Transform + - uid: 9094 + components: + - pos: 3.5,56.5 + parent: 1 + type: Transform + - uid: 9095 + components: + - pos: 10.5,55.5 + parent: 1 + type: Transform + - uid: 9096 + components: + - pos: 5.5,56.5 + parent: 1 + type: Transform + - uid: 9097 + components: + - pos: 7.5,55.5 + parent: 1 + type: Transform + - uid: 9099 + components: + - pos: 9.5,55.5 + parent: 1 + type: Transform + - uid: 9102 + components: + - pos: 12.5,55.5 + parent: 1 + type: Transform + - uid: 9103 + components: + - pos: 13.5,55.5 + parent: 1 + type: Transform + - uid: 9188 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,57.5 + parent: 1 + type: Transform + - uid: 9296 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,29.5 + parent: 1 + type: Transform + - uid: 9323 + components: + - pos: -67.5,32.5 + parent: 1 + type: Transform + - uid: 9626 + components: + - pos: -72.5,22.5 + parent: 1 + type: Transform + - uid: 9627 + components: + - pos: -71.5,32.5 + parent: 1 + type: Transform + - uid: 9628 + components: + - pos: -64.5,24.5 + parent: 1 + type: Transform + - uid: 9629 + components: + - pos: -65.5,24.5 + parent: 1 + type: Transform + - uid: 9630 + components: + - pos: -66.5,24.5 + parent: 1 + type: Transform + - uid: 9663 + components: + - pos: -72.5,20.5 + parent: 1 + type: Transform + - uid: 9681 + components: + - pos: -77.5,26.5 + parent: 1 + type: Transform + - uid: 9683 + components: + - pos: -77.5,24.5 + parent: 1 + type: Transform + - uid: 9684 + components: + - pos: -80.5,47.5 + parent: 1 + type: Transform + - uid: 9701 + components: + - pos: -86.5,23.5 + parent: 1 + type: Transform + - uid: 9702 + components: + - pos: -86.5,24.5 + parent: 1 + type: Transform + - uid: 9703 + components: + - pos: -86.5,25.5 + parent: 1 + type: Transform + - uid: 9704 + components: + - pos: -86.5,26.5 + parent: 1 + type: Transform + - uid: 9705 + components: + - pos: -86.5,27.5 + parent: 1 + type: Transform + - uid: 9821 + components: + - pos: -79.5,47.5 + parent: 1 + type: Transform + - uid: 9855 + components: + - pos: -69.5,18.5 + parent: 1 + type: Transform + - uid: 9856 + components: + - pos: -68.5,18.5 + parent: 1 + type: Transform + - uid: 9875 + components: + - pos: -81.5,47.5 + parent: 1 + type: Transform + - uid: 9876 + components: + - pos: -82.5,47.5 + parent: 1 + type: Transform + - uid: 9877 + components: + - pos: -83.5,47.5 + parent: 1 + type: Transform + - uid: 9878 + components: + - pos: -84.5,47.5 + parent: 1 + type: Transform + - uid: 9879 + components: + - pos: -85.5,47.5 + parent: 1 + type: Transform + - uid: 9880 + components: + - pos: -85.5,46.5 + parent: 1 + type: Transform + - uid: 9881 + components: + - pos: -85.5,45.5 + parent: 1 + type: Transform + - uid: 9882 + components: + - pos: -85.5,44.5 + parent: 1 + type: Transform + - uid: 9883 + components: + - pos: -85.5,43.5 + parent: 1 + type: Transform + - uid: 9884 + components: + - pos: -85.5,42.5 + parent: 1 + type: Transform + - uid: 9885 + components: + - pos: -85.5,41.5 + parent: 1 + type: Transform + - uid: 9886 + components: + - pos: -85.5,40.5 + parent: 1 + type: Transform + - uid: 9887 + components: + - pos: -85.5,39.5 + parent: 1 + type: Transform + - uid: 9888 + components: + - pos: -85.5,38.5 + parent: 1 + type: Transform + - uid: 9889 + components: + - pos: -85.5,37.5 + parent: 1 + type: Transform + - uid: 9890 + components: + - pos: -85.5,36.5 + parent: 1 + type: Transform + - uid: 9891 + components: + - pos: -85.5,35.5 + parent: 1 + type: Transform + - uid: 9892 + components: + - pos: -85.5,34.5 + parent: 1 + type: Transform + - uid: 9903 + components: + - rot: 3.141592653589793 rad + pos: -59.5,25.5 + parent: 1 + type: Transform + - uid: 10143 + components: + - pos: -73.5,18.5 + parent: 1 + type: Transform + - uid: 10158 + components: + - pos: -70.5,18.5 + parent: 1 + type: Transform + - uid: 10160 + components: + - pos: -69.5,27.5 + parent: 1 + type: Transform + - uid: 10164 + components: + - pos: -69.5,24.5 + parent: 1 + type: Transform + - uid: 10246 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-4.5 + parent: 1 + type: Transform + - uid: 10349 + components: + - pos: -49.5,-14.5 + parent: 1 + type: Transform + - uid: 10361 + components: + - pos: -42.5,-14.5 + parent: 1 + type: Transform + - uid: 10412 + components: + - pos: 23.5,36.5 + parent: 1 + type: Transform + - uid: 10758 + components: + - rot: -1.5707963267948966 rad + pos: -81.5,49.5 + parent: 1 + type: Transform + - uid: 10759 + components: + - rot: -1.5707963267948966 rad + pos: -83.5,49.5 + parent: 1 + type: Transform + - uid: 10761 + components: + - rot: -1.5707963267948966 rad + pos: -82.5,49.5 + parent: 1 + type: Transform + - uid: 10762 + components: + - rot: -1.5707963267948966 rad + pos: -80.5,50.5 + parent: 1 + type: Transform + - uid: 10833 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,45.5 + parent: 1 + type: Transform + - uid: 10834 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,43.5 + parent: 1 + type: Transform + - uid: 10835 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,41.5 + parent: 1 + type: Transform + - uid: 10836 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,39.5 + parent: 1 + type: Transform + - uid: 10837 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,37.5 + parent: 1 + type: Transform + - uid: 10838 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,35.5 + parent: 1 + type: Transform + - uid: 10926 + components: + - pos: -63.5,43.5 + parent: 1 + type: Transform + - uid: 10927 + components: + - pos: -64.5,43.5 + parent: 1 + type: Transform + - uid: 10928 + components: + - pos: -60.5,43.5 + parent: 1 + type: Transform + - uid: 10930 + components: + - pos: -61.5,43.5 + parent: 1 + type: Transform + - uid: 10957 + components: + - pos: -57.5,68.5 + parent: 1 + type: Transform + - uid: 11509 + components: + - rot: 1.5707963267948966 rad + pos: -84.5,50.5 + parent: 1 + type: Transform + - uid: 13752 + components: + - pos: -85.5,33.5 + parent: 1 + type: Transform + - uid: 13845 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-12.5 + parent: 1 + type: Transform + - uid: 13848 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,9.5 + parent: 1 + type: Transform + - uid: 13849 + components: + - rot: -1.5707963267948966 rad + pos: 31.5,9.5 + parent: 1 + type: Transform + - uid: 14209 + components: + - pos: -43.5,-14.5 + parent: 1 + type: Transform + - uid: 14467 + components: + - pos: -59.5,68.5 + parent: 1 + type: Transform + - uid: 14469 + components: + - pos: -61.5,68.5 + parent: 1 + type: Transform + - uid: 14470 + components: + - pos: -62.5,68.5 + parent: 1 + type: Transform + - uid: 14602 + components: + - pos: -107.5,24.5 + parent: 1 + type: Transform + - uid: 14603 + components: + - pos: -107.5,25.5 + parent: 1 + type: Transform + - uid: 14606 + components: + - pos: -107.5,28.5 + parent: 1 + type: Transform + - uid: 14610 + components: + - pos: -109.5,34.5 + parent: 1 + type: Transform + - uid: 14612 + components: + - pos: -107.5,34.5 + parent: 1 + type: Transform + - uid: 14613 + components: + - pos: -107.5,35.5 + parent: 1 + type: Transform + - uid: 14614 + components: + - pos: -106.5,35.5 + parent: 1 + type: Transform + - uid: 14616 + components: + - pos: -101.5,35.5 + parent: 1 + type: Transform + - uid: 14617 + components: + - pos: -100.5,35.5 + parent: 1 + type: Transform + - uid: 14619 + components: + - pos: -98.5,35.5 + parent: 1 + type: Transform + - uid: 14620 + components: + - pos: -97.5,35.5 + parent: 1 + type: Transform + - uid: 14622 + components: + - pos: -94.5,35.5 + parent: 1 + type: Transform + - uid: 14624 + components: + - pos: -94.5,37.5 + parent: 1 + type: Transform + - uid: 14625 + components: + - pos: -94.5,38.5 + parent: 1 + type: Transform + - uid: 14626 + components: + - pos: -94.5,39.5 + parent: 1 + type: Transform + - uid: 14630 + components: + - pos: -94.5,43.5 + parent: 1 + type: Transform + - uid: 14632 + components: + - pos: -94.5,45.5 + parent: 1 + type: Transform + - uid: 14633 + components: + - pos: -94.5,46.5 + parent: 1 + type: Transform + - uid: 14636 + components: + - pos: -92.5,49.5 + parent: 1 + type: Transform + - uid: 14638 + components: + - pos: -90.5,49.5 + parent: 1 + type: Transform + - uid: 14639 + components: + - pos: -89.5,49.5 + parent: 1 + type: Transform + - uid: 14640 + components: + - pos: -88.5,49.5 + parent: 1 + type: Transform + - uid: 14642 + components: + - pos: -87.5,51.5 + parent: 1 + type: Transform + - uid: 14643 + components: + - pos: -87.5,52.5 + parent: 1 + type: Transform + - uid: 14645 + components: + - pos: -85.5,54.5 + parent: 1 + type: Transform + - uid: 14647 + components: + - pos: -83.5,54.5 + parent: 1 + type: Transform + - uid: 14648 + components: + - pos: -82.5,54.5 + parent: 1 + type: Transform + - uid: 14649 + components: + - pos: -81.5,57.5 + parent: 1 + type: Transform + - uid: 14650 + components: + - pos: -80.5,57.5 + parent: 1 + type: Transform + - uid: 14651 + components: + - pos: -68.5,62.5 + parent: 1 + type: Transform + - uid: 14653 + components: + - pos: -78.5,60.5 + parent: 1 + type: Transform + - uid: 14654 + components: + - pos: -77.5,60.5 + parent: 1 + type: Transform + - uid: 14656 + components: + - pos: -75.5,60.5 + parent: 1 + type: Transform + - uid: 14658 + components: + - pos: -73.5,60.5 + parent: 1 + type: Transform + - uid: 14660 + components: + - pos: -70.5,60.5 + parent: 1 + type: Transform + - uid: 14662 + components: + - pos: -67.5,62.5 + parent: 1 + type: Transform + - uid: 14664 + components: + - pos: -64.5,63.5 + parent: 1 + type: Transform + - uid: 14666 + components: + - pos: -64.5,65.5 + parent: 1 + type: Transform + - uid: 14667 + components: + - pos: -64.5,66.5 + parent: 1 + type: Transform + - uid: 14672 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,-13.5 + parent: 1 + type: Transform + - uid: 14673 + components: + - pos: -104.5,15.5 + parent: 1 + type: Transform + - uid: 14674 + components: + - pos: -103.5,15.5 + parent: 1 + type: Transform + - uid: 14676 + components: + - pos: -101.5,15.5 + parent: 1 + type: Transform + - uid: 14680 + components: + - pos: -94.5,15.5 + parent: 1 + type: Transform + - uid: 14681 + components: + - pos: -93.5,15.5 + parent: 1 + type: Transform + - uid: 14683 + components: + - pos: -91.5,15.5 + parent: 1 + type: Transform + - uid: 14684 + components: + - pos: -90.5,15.5 + parent: 1 + type: Transform + - uid: 14687 + components: + - pos: -85.5,14.5 + parent: 1 + type: Transform + - uid: 14688 + components: + - pos: -84.5,14.5 + parent: 1 + type: Transform + - uid: 14689 + components: + - pos: -83.5,14.5 + parent: 1 + type: Transform + - uid: 14691 + components: + - pos: -81.5,14.5 + parent: 1 + type: Transform + - uid: 14693 + components: + - pos: -78.5,13.5 + parent: 1 + type: Transform + - uid: 14695 + components: + - pos: -78.5,11.5 + parent: 1 + type: Transform + - uid: 14696 + components: + - pos: -78.5,10.5 + parent: 1 + type: Transform + - uid: 14698 + components: + - pos: -79.5,3.5 + parent: 1 + type: Transform + - uid: 14700 + components: + - pos: -79.5,4.5 + parent: 1 + type: Transform + - uid: 14702 + components: + - pos: -79.5,6.5 + parent: 1 + type: Transform + - uid: 14706 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,-13.5 + parent: 1 + type: Transform + - uid: 14707 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,-13.5 + parent: 1 + type: Transform + - uid: 14714 + components: + - rot: 3.141592653589793 rad + pos: -22.5,-17.5 + parent: 1 + type: Transform + - uid: 14716 + components: + - rot: 3.141592653589793 rad + pos: -20.5,-17.5 + parent: 1 + type: Transform + - uid: 14717 + components: + - rot: 3.141592653589793 rad + pos: -19.5,-17.5 + parent: 1 + type: Transform + - uid: 14718 + components: + - rot: 3.141592653589793 rad + pos: -18.5,-17.5 + parent: 1 + type: Transform + - uid: 14720 + components: + - rot: 3.141592653589793 rad + pos: -16.5,-17.5 + parent: 1 + type: Transform + - uid: 14722 + components: + - rot: 3.141592653589793 rad + pos: -15.5,-18.5 + parent: 1 + type: Transform + - uid: 14723 + components: + - rot: 3.141592653589793 rad + pos: -14.5,-18.5 + parent: 1 + type: Transform + - uid: 14724 + components: + - rot: 3.141592653589793 rad + pos: -13.5,-18.5 + parent: 1 + type: Transform + - uid: 14726 + components: + - rot: 3.141592653589793 rad + pos: -11.5,-18.5 + parent: 1 + type: Transform + - uid: 14727 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-14.5 + parent: 1 + type: Transform + - uid: 14729 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-16.5 + parent: 1 + type: Transform + - uid: 14731 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-18.5 + parent: 1 + type: Transform + - uid: 14732 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-18.5 + parent: 1 + type: Transform + - uid: 14734 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-20.5 + parent: 1 + type: Transform + - uid: 14735 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,-21.5 + parent: 1 + type: Transform + - uid: 14737 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,-22.5 + parent: 1 + type: Transform + - uid: 14738 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,-24.5 + parent: 1 + type: Transform + - uid: 14741 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,-26.5 + parent: 1 + type: Transform + - uid: 14742 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-28.5 + parent: 1 + type: Transform + - uid: 14743 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,-26.5 + parent: 1 + type: Transform + - uid: 14745 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,-26.5 + parent: 1 + type: Transform + - uid: 14747 + components: + - rot: -1.5707963267948966 rad + pos: 23.5,-26.5 + parent: 1 + type: Transform + - uid: 14750 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,-26.5 + parent: 1 + type: Transform + - uid: 14752 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,-28.5 + parent: 1 + type: Transform + - uid: 14753 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,-29.5 + parent: 1 + type: Transform + - uid: 14755 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,-29.5 + parent: 1 + type: Transform + - uid: 14757 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-29.5 + parent: 1 + type: Transform + - uid: 14758 + components: + - rot: 3.141592653589793 rad + pos: 22.5,-11.5 + parent: 1 + type: Transform + - uid: 14759 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-26.5 + parent: 1 + type: Transform + - uid: 14760 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-25.5 + parent: 1 + type: Transform + - uid: 14763 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-22.5 + parent: 1 + type: Transform + - uid: 14765 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-20.5 + parent: 1 + type: Transform + - uid: 14766 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-19.5 + parent: 1 + type: Transform + - uid: 14768 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-17.5 + parent: 1 + type: Transform + - uid: 14769 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-16.5 + parent: 1 + type: Transform + - uid: 14771 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-14.5 + parent: 1 + type: Transform + - uid: 14774 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-11.5 + parent: 1 + type: Transform + - uid: 14776 + components: + - rot: 3.141592653589793 rad + pos: 24.5,-11.5 + parent: 1 + type: Transform + - uid: 14777 + components: + - rot: 3.141592653589793 rad + pos: 25.5,-11.5 + parent: 1 + type: Transform + - uid: 14780 + components: + - rot: -1.5707963267948966 rad + pos: 32.5,-0.5 + parent: 1 + type: Transform + - uid: 14783 + components: + - rot: -1.5707963267948966 rad + pos: 32.5,-3.5 + parent: 1 + type: Transform + - uid: 14784 + components: + - rot: -1.5707963267948966 rad + pos: 32.5,-4.5 + parent: 1 + type: Transform + - uid: 14787 + components: + - rot: -1.5707963267948966 rad + pos: 32.5,-7.5 + parent: 1 + type: Transform + - uid: 14788 + components: + - rot: -1.5707963267948966 rad + pos: 32.5,-8.5 + parent: 1 + type: Transform + - uid: 14789 + components: + - rot: -1.5707963267948966 rad + pos: 32.5,-9.5 + parent: 1 + type: Transform + - uid: 14791 + components: + - rot: 3.141592653589793 rad + pos: 14.5,55.5 + parent: 1 + type: Transform + - uid: 14792 + components: + - rot: 3.141592653589793 rad + pos: 15.5,55.5 + parent: 1 + type: Transform + - uid: 14794 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,54.5 + parent: 1 + type: Transform + - uid: 14796 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,53.5 + parent: 1 + type: Transform + - uid: 14797 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,55.5 + parent: 1 + type: Transform + - uid: 14799 + components: + - rot: 3.141592653589793 rad + pos: 21.5,46.5 + parent: 1 + type: Transform + - uid: 14800 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,55.5 + parent: 1 + type: Transform + - uid: 14801 + components: + - rot: 3.141592653589793 rad + pos: 23.5,46.5 + parent: 1 + type: Transform + - uid: 14802 + components: + - rot: 3.141592653589793 rad + pos: 24.5,46.5 + parent: 1 + type: Transform + - uid: 14804 + components: + - rot: 3.141592653589793 rad + pos: 26.5,44.5 + parent: 1 + type: Transform + - uid: 14805 + components: + - rot: 3.141592653589793 rad + pos: 26.5,43.5 + parent: 1 + type: Transform + - uid: 14806 + components: + - rot: 3.141592653589793 rad + pos: 26.5,42.5 + parent: 1 + type: Transform + - uid: 14808 + components: + - rot: 3.141592653589793 rad + pos: 26.5,40.5 + parent: 1 + type: Transform + - uid: 14809 + components: + - rot: 3.141592653589793 rad + pos: 26.5,37.5 + parent: 1 + type: Transform + - uid: 14810 + components: + - rot: 3.141592653589793 rad + pos: 26.5,36.5 + parent: 1 + type: Transform + - uid: 14812 + components: + - rot: 3.141592653589793 rad + pos: 26.5,34.5 + parent: 1 + type: Transform + - uid: 14813 + components: + - rot: 3.141592653589793 rad + pos: 26.5,33.5 + parent: 1 + type: Transform + - uid: 14815 + components: + - rot: 3.141592653589793 rad + pos: 26.5,31.5 + parent: 1 + type: Transform + - uid: 14831 + components: + - pos: 10.5,-15.5 + parent: 1 + type: Transform + - uid: 14833 + components: + - pos: 9.5,-15.5 + parent: 1 + type: Transform + - uid: 15011 + components: + - pos: 12.5,-13.5 + parent: 1 + type: Transform + - uid: 15147 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,51.5 + parent: 1 + type: Transform + - uid: 15148 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,50.5 + parent: 1 + type: Transform + - uid: 15149 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,49.5 + parent: 1 + type: Transform + - uid: 15154 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,53.5 + parent: 1 + type: Transform + - uid: 15155 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,53.5 + parent: 1 + type: Transform + - uid: 15156 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,53.5 + parent: 1 + type: Transform + - uid: 15157 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,52.5 + parent: 1 + type: Transform + - uid: 15158 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,51.5 + parent: 1 + type: Transform + - uid: 15159 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,50.5 + parent: 1 + type: Transform + - uid: 15160 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,49.5 + parent: 1 + type: Transform + - uid: 15161 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,48.5 + parent: 1 + type: Transform + - uid: 15350 + components: + - pos: 28.5,32.5 + parent: 1 + type: Transform + - uid: 15352 + components: + - pos: 30.5,32.5 + parent: 1 + type: Transform + - uid: 15353 + components: + - pos: 31.5,32.5 + parent: 1 + type: Transform + - uid: 15354 + components: + - pos: 32.5,32.5 + parent: 1 + type: Transform + - uid: 15355 + components: + - pos: 32.5,31.5 + parent: 1 + type: Transform + - uid: 15357 + components: + - pos: 32.5,29.5 + parent: 1 + type: Transform + - uid: 15358 + components: + - pos: 32.5,27.5 + parent: 1 + type: Transform + - uid: 15360 + components: + - pos: 32.5,25.5 + parent: 1 + type: Transform + - uid: 15362 + components: + - pos: 32.5,23.5 + parent: 1 + type: Transform + - uid: 15363 + components: + - pos: 32.5,22.5 + parent: 1 + type: Transform + - uid: 15386 + components: + - pos: -44.5,69.5 + parent: 1 + type: Transform + - uid: 15387 + components: + - pos: -43.5,69.5 + parent: 1 + type: Transform + - uid: 15388 + components: + - pos: -42.5,69.5 + parent: 1 + type: Transform + - uid: 15389 + components: + - pos: -41.5,69.5 + parent: 1 + type: Transform + - uid: 15390 + components: + - pos: -40.5,69.5 + parent: 1 + type: Transform + - uid: 15391 + components: + - pos: -39.5,69.5 + parent: 1 + type: Transform + - uid: 15392 + components: + - pos: -38.5,69.5 + parent: 1 + type: Transform + - uid: 15393 + components: + - pos: -37.5,69.5 + parent: 1 + type: Transform + - uid: 15394 + components: + - pos: -36.5,69.5 + parent: 1 + type: Transform + - uid: 15395 + components: + - pos: -36.5,68.5 + parent: 1 + type: Transform + - uid: 15396 + components: + - pos: -36.5,67.5 + parent: 1 + type: Transform + - uid: 15397 + components: + - pos: -36.5,66.5 + parent: 1 + type: Transform + - uid: 15398 + components: + - pos: -36.5,65.5 + parent: 1 + type: Transform + - uid: 15399 + components: + - pos: -36.5,64.5 + parent: 1 + type: Transform + - uid: 15400 + components: + - pos: -36.5,63.5 + parent: 1 + type: Transform + - uid: 15401 + components: + - pos: -36.5,62.5 + parent: 1 + type: Transform + - uid: 15402 + components: + - pos: -36.5,61.5 + parent: 1 + type: Transform + - uid: 15403 + components: + - pos: -36.5,60.5 + parent: 1 + type: Transform + - uid: 15404 + components: + - pos: -36.5,59.5 + parent: 1 + type: Transform + - uid: 15436 + components: + - rot: 3.141592653589793 rad + pos: -34.5,62.5 + parent: 1 + type: Transform + - uid: 15437 + components: + - rot: 3.141592653589793 rad + pos: -34.5,63.5 + parent: 1 + type: Transform + - uid: 15438 + components: + - rot: 3.141592653589793 rad + pos: -34.5,64.5 + parent: 1 + type: Transform + - uid: 15441 + components: + - rot: 3.141592653589793 rad + pos: -34.5,67.5 + parent: 1 + type: Transform + - uid: 15442 + components: + - rot: 3.141592653589793 rad + pos: -34.5,68.5 + parent: 1 + type: Transform + - uid: 15444 + components: + - rot: 3.141592653589793 rad + pos: -34.5,70.5 + parent: 1 + type: Transform + - uid: 15445 + components: + - rot: 3.141592653589793 rad + pos: -34.5,71.5 + parent: 1 + type: Transform + - uid: 15446 + components: + - rot: 3.141592653589793 rad + pos: -35.5,71.5 + parent: 1 + type: Transform + - uid: 15448 + components: + - rot: 3.141592653589793 rad + pos: -37.5,71.5 + parent: 1 + type: Transform + - uid: 15449 + components: + - rot: 3.141592653589793 rad + pos: -38.5,71.5 + parent: 1 + type: Transform + - uid: 15451 + components: + - rot: 3.141592653589793 rad + pos: -40.5,71.5 + parent: 1 + type: Transform + - uid: 15452 + components: + - rot: 3.141592653589793 rad + pos: -41.5,71.5 + parent: 1 + type: Transform + - uid: 15453 + components: + - rot: 3.141592653589793 rad + pos: -34.5,60.5 + parent: 1 + type: Transform + - uid: 15464 + components: + - pos: -42.5,57.5 + parent: 1 + type: Transform + - uid: 15465 + components: + - pos: -40.5,58.5 + parent: 1 + type: Transform + - uid: 15467 + components: + - pos: -37.5,57.5 + parent: 1 + type: Transform + - uid: 15475 + components: + - pos: -44.5,58.5 + parent: 1 + type: Transform + - uid: 15484 + components: + - pos: -38.5,59.5 + parent: 1 + type: Transform + - uid: 15510 + components: + - pos: -1.5,-22.5 + parent: 1 + type: Transform + - uid: 15513 + components: + - pos: -6.5,-22.5 + parent: 1 + type: Transform + - uid: 15514 + components: + - pos: -7.5,-21.5 + parent: 1 + type: Transform + - uid: 15515 + components: + - pos: -7.5,-19.5 + parent: 1 + type: Transform + - uid: 15528 + components: + - pos: -0.5,-22.5 + parent: 1 + type: Transform + - uid: 15529 + components: + - pos: -3.5,-22.5 + parent: 1 + type: Transform + - uid: 15530 + components: + - pos: -5.5,-22.5 + parent: 1 + type: Transform + - uid: 15531 + components: + - pos: -7.5,-22.5 + parent: 1 + type: Transform + - uid: 15533 + components: + - pos: 2.5,-22.5 + parent: 1 + type: Transform + - uid: 15534 + components: + - pos: 3.5,-22.5 + parent: 1 + type: Transform + - uid: 15536 + components: + - pos: 5.5,-22.5 + parent: 1 + type: Transform + - uid: 15537 + components: + - pos: 6.5,-22.5 + parent: 1 + type: Transform + - uid: 15538 + components: + - pos: 7.5,-22.5 + parent: 1 + type: Transform + - uid: 15540 + components: + - pos: 10.5,-22.5 + parent: 1 + type: Transform + - uid: 15541 + components: + - pos: 11.5,-22.5 + parent: 1 + type: Transform + - uid: 15543 + components: + - pos: 13.5,-22.5 + parent: 1 + type: Transform + - uid: 15544 + components: + - pos: 14.5,-22.5 + parent: 1 + type: Transform + - uid: 15545 + components: + - pos: 14.5,-21.5 + parent: 1 + type: Transform + - uid: 15938 + components: + - pos: 17.5,-11.5 + parent: 1 + type: Transform + - uid: 15948 + components: + - pos: -52.5,30.5 + parent: 1 + type: Transform + - uid: 15949 + components: + - pos: -53.5,30.5 + parent: 1 + type: Transform + - uid: 15950 + components: + - pos: -51.5,30.5 + parent: 1 + type: Transform + - uid: 15976 + components: + - rot: 3.141592653589793 rad + pos: -24.5,30.5 + parent: 1 + type: Transform +- proto: GrilleBroken + entities: + - uid: 1053 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,7.5 + parent: 1 + type: Transform + - uid: 1138 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,7.5 + parent: 1 + type: Transform + - uid: 3154 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,22.5 + parent: 1 + type: Transform + - uid: 3430 + components: + - pos: -35.5,17.5 + parent: 1 + type: Transform + - uid: 4127 + components: + - pos: -59.5,11.5 + parent: 1 + type: Transform + - uid: 4508 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,3.5 + parent: 1 + type: Transform + - uid: 4565 + components: + - rot: 3.141592653589793 rad + pos: 16.5,42.5 + parent: 1 + type: Transform + - uid: 4566 + components: + - pos: 16.5,42.5 + parent: 1 + type: Transform + - uid: 4705 + components: + - rot: 3.141592653589793 rad + pos: -59.5,13.5 + parent: 1 + type: Transform + - uid: 5319 + components: + - rot: -1.5707963267948966 rad + pos: -59.5,13.5 + parent: 1 + type: Transform + - uid: 5327 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,42.5 + parent: 1 + type: Transform + - uid: 5332 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,42.5 + parent: 1 + type: Transform + - uid: 6011 + components: + - rot: 3.141592653589793 rad + pos: -25.5,63.5 + parent: 1 + type: Transform + - uid: 6277 + components: + - pos: -18.5,70.5 + parent: 1 + type: Transform + - uid: 6672 + components: + - pos: -1.5,61.5 + parent: 1 + type: Transform + - uid: 6676 + components: + - rot: -1.5707963267948966 rad + pos: -4.5,65.5 + parent: 1 + type: Transform + - uid: 7032 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,45.5 + parent: 1 + type: Transform + - uid: 7414 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,70.5 + parent: 1 + type: Transform + - uid: 7521 + components: + - pos: -14.5,37.5 + parent: 1 + type: Transform + - uid: 7522 + components: + - rot: 3.141592653589793 rad + pos: -14.5,40.5 + parent: 1 + type: Transform + - uid: 7524 + components: + - rot: 3.141592653589793 rad + pos: -14.5,42.5 + parent: 1 + type: Transform + - uid: 8068 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,65.5 + parent: 1 + type: Transform + - uid: 8287 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,70.5 + parent: 1 + type: Transform + - uid: 8288 + components: + - rot: 3.141592653589793 rad + pos: -8.5,67.5 + parent: 1 + type: Transform + - uid: 8974 + components: + - pos: 11.5,55.5 + parent: 1 + type: Transform + - uid: 8979 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,56.5 + parent: 1 + type: Transform + - uid: 8984 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,55.5 + parent: 1 + type: Transform + - uid: 8985 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,62.5 + parent: 1 + type: Transform + - uid: 8987 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,56.5 + parent: 1 + type: Transform + - uid: 8990 + components: + - pos: 2.5,56.5 + parent: 1 + type: Transform + - uid: 9031 + components: + - pos: -31.5,62.5 + parent: 1 + type: Transform + - uid: 9049 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,71.5 + parent: 1 + type: Transform + - uid: 9052 + components: + - rot: 3.141592653589793 rad + pos: -47.5,73.5 + parent: 1 + type: Transform + - uid: 9053 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,75.5 + parent: 1 + type: Transform + - uid: 9054 + components: + - pos: -47.5,78.5 + parent: 1 + type: Transform + - uid: 9056 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,86.5 + parent: 1 + type: Transform + - uid: 9064 + components: + - pos: -65.5,88.5 + parent: 1 + type: Transform + - uid: 9078 + components: + - rot: -1.5707963267948966 rad + pos: -64.5,90.5 + parent: 1 + type: Transform + - uid: 9081 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,71.5 + parent: 1 + type: Transform + - uid: 9083 + components: + - pos: -43.5,71.5 + parent: 1 + type: Transform + - uid: 9084 + components: + - pos: -65.5,83.5 + parent: 1 + type: Transform + - uid: 9085 + components: + - pos: -55.5,76.5 + parent: 1 + type: Transform + - uid: 9093 + components: + - rot: 3.141592653589793 rad + pos: -58.5,68.5 + parent: 1 + type: Transform + - uid: 9098 + components: + - pos: -60.5,68.5 + parent: 1 + type: Transform + - uid: 9100 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,68.5 + parent: 1 + type: Transform + - uid: 9902 + components: + - rot: 3.141592653589793 rad + pos: -59.5,24.5 + parent: 1 + type: Transform + - uid: 9979 + components: + - rot: 3.141592653589793 rad + pos: -59.5,11.5 + parent: 1 + type: Transform + - uid: 10411 + components: + - pos: 22.5,36.5 + parent: 1 + type: Transform + - uid: 10416 + components: + - rot: -1.5707963267948966 rad + pos: 22.5,36.5 + parent: 1 + type: Transform + - uid: 10427 + components: + - rot: 3.141592653589793 rad + pos: 22.5,36.5 + parent: 1 + type: Transform + - uid: 10428 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,36.5 + parent: 1 + type: Transform + - uid: 14601 + components: + - pos: -107.5,23.5 + parent: 1 + type: Transform + - uid: 14604 + components: + - pos: -107.5,29.5 + parent: 1 + type: Transform + - uid: 14605 + components: + - pos: -107.5,26.5 + parent: 1 + type: Transform + - uid: 14607 + components: + - rot: 1.5707963267948966 rad + pos: -107.5,27.5 + parent: 1 + type: Transform + - uid: 14608 + components: + - pos: -99.5,35.5 + parent: 1 + type: Transform + - uid: 14609 + components: + - rot: -1.5707963267948966 rad + pos: -105.5,35.5 + parent: 1 + type: Transform + - uid: 14611 + components: + - rot: 1.5707963267948966 rad + pos: -110.5,34.5 + parent: 1 + type: Transform + - uid: 14615 + components: + - rot: 1.5707963267948966 rad + pos: -102.5,35.5 + parent: 1 + type: Transform + - uid: 14618 + components: + - rot: 3.141592653589793 rad + pos: -94.5,36.5 + parent: 1 + type: Transform + - uid: 14621 + components: + - rot: -1.5707963267948966 rad + pos: -96.5,35.5 + parent: 1 + type: Transform + - uid: 14623 + components: + - pos: -94.5,40.5 + parent: 1 + type: Transform + - uid: 14627 + components: + - rot: 3.141592653589793 rad + pos: -94.5,42.5 + parent: 1 + type: Transform + - uid: 14628 + components: + - rot: 1.5707963267948966 rad + pos: -82.5,57.5 + parent: 1 + type: Transform + - uid: 14629 + components: + - pos: -94.5,44.5 + parent: 1 + type: Transform + - uid: 14631 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,14.5 + parent: 1 + type: Transform + - uid: 14634 + components: + - pos: -94.5,47.5 + parent: 1 + type: Transform + - uid: 14635 + components: + - rot: 1.5707963267948966 rad + pos: -93.5,49.5 + parent: 1 + type: Transform + - uid: 14637 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,49.5 + parent: 1 + type: Transform + - uid: 14641 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,49.5 + parent: 1 + type: Transform + - uid: 14644 + components: + - rot: -1.5707963267948966 rad + pos: -84.5,54.5 + parent: 1 + type: Transform + - uid: 14646 + components: + - pos: -86.5,54.5 + parent: 1 + type: Transform + - uid: 14652 + components: + - rot: -1.5707963267948966 rad + pos: -74.5,60.5 + parent: 1 + type: Transform + - uid: 14655 + components: + - pos: -76.5,60.5 + parent: 1 + type: Transform + - uid: 14657 + components: + - rot: 1.5707963267948966 rad + pos: -79.5,60.5 + parent: 1 + type: Transform + - uid: 14659 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,60.5 + parent: 1 + type: Transform + - uid: 14661 + components: + - pos: -71.5,60.5 + parent: 1 + type: Transform + - uid: 14663 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,62.5 + parent: 1 + type: Transform + - uid: 14665 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,64.5 + parent: 1 + type: Transform + - uid: 14668 + components: + - rot: -1.5707963267948966 rad + pos: -79.5,57.5 + parent: 1 + type: Transform + - uid: 14669 + components: + - rot: -1.5707963267948966 rad + pos: -81.5,54.5 + parent: 1 + type: Transform + - uid: 14670 + components: + - pos: -108.5,34.5 + parent: 1 + type: Transform + - uid: 14671 + components: + - rot: 3.141592653589793 rad + pos: -87.5,50.5 + parent: 1 + type: Transform + - uid: 14677 + components: + - rot: 1.5707963267948966 rad + pos: -102.5,15.5 + parent: 1 + type: Transform + - uid: 14678 + components: + - rot: 1.5707963267948966 rad + pos: -105.5,15.5 + parent: 1 + type: Transform + - uid: 14679 + components: + - rot: -1.5707963267948966 rad + pos: -100.5,15.5 + parent: 1 + type: Transform + - uid: 14682 + components: + - rot: -1.5707963267948966 rad + pos: 23.5,-11.5 + parent: 1 + type: Transform + - uid: 14685 + components: + - rot: 1.5707963267948966 rad + pos: -95.5,15.5 + parent: 1 + type: Transform + - uid: 14686 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,15.5 + parent: 1 + type: Transform + - uid: 14690 + components: + - rot: 1.5707963267948966 rad + pos: -92.5,15.5 + parent: 1 + type: Transform + - uid: 14692 + components: + - rot: 3.141592653589793 rad + pos: -82.5,14.5 + parent: 1 + type: Transform + - uid: 14694 + components: + - rot: 1.5707963267948966 rad + pos: -78.5,12.5 + parent: 1 + type: Transform + - uid: 14697 + components: + - rot: 3.141592653589793 rad + pos: -78.5,9.5 + parent: 1 + type: Transform + - uid: 14699 + components: + - rot: -1.5707963267948966 rad + pos: -80.5,14.5 + parent: 1 + type: Transform + - uid: 14701 + components: + - pos: -79.5,5.5 + parent: 1 + type: Transform + - uid: 14703 + components: + - rot: 1.5707963267948966 rad + pos: -79.5,7.5 + parent: 1 + type: Transform + - uid: 14709 + components: + - anchored: False + rot: 1.5707963267948966 rad + pos: -55.060143,-12.660082 + parent: 5005 + type: Transform + - bodyType: Dynamic + type: Physics + - uid: 14715 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,-18.5 + parent: 1 + type: Transform + - uid: 14719 + components: + - rot: 1.5707963267948966 rad + pos: -16.5,-18.5 + parent: 1 + type: Transform + - uid: 14721 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,-17.5 + parent: 1 + type: Transform + - uid: 14725 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,-17.5 + parent: 1 + type: Transform + - uid: 14728 + components: + - rot: 3.141592653589793 rad + pos: 29.5,-29.5 + parent: 1 + type: Transform + - uid: 14730 + components: + - pos: 26.5,-27.5 + parent: 1 + type: Transform + - uid: 14733 + components: + - rot: 3.141592653589793 rad + pos: 16.5,-15.5 + parent: 1 + type: Transform + - uid: 14736 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-27.5 + parent: 1 + type: Transform + - uid: 14739 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-12.5 + parent: 1 + type: Transform + - uid: 14740 + components: + - pos: 30.5,-24.5 + parent: 1 + type: Transform + - uid: 14744 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-23.5 + parent: 1 + type: Transform + - uid: 14746 + components: + - rot: 3.141592653589793 rad + pos: 30.5,-21.5 + parent: 1 + type: Transform + - uid: 14748 + components: + - pos: 17.5,-19.5 + parent: 1 + type: Transform + - uid: 14749 + components: + - rot: 1.5707963267948966 rad + pos: 17.5,-22.5 + parent: 1 + type: Transform + - uid: 14751 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,-18.5 + parent: 1 + type: Transform + - uid: 14754 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,-23.5 + parent: 1 + type: Transform + - uid: 14756 + components: + - pos: 30.5,-15.5 + parent: 1 + type: Transform + - uid: 14761 + components: + - rot: 1.5707963267948966 rad + pos: 27.5,-29.5 + parent: 1 + type: Transform + - uid: 14762 + components: + - rot: -1.5707963267948966 rad + pos: 20.5,-26.5 + parent: 1 + type: Transform + - uid: 14764 + components: + - pos: 30.5,-13.5 + parent: 1 + type: Transform + - uid: 14767 + components: + - rot: 3.141592653589793 rad + pos: 18.5,-25.5 + parent: 1 + type: Transform + - uid: 14770 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,-26.5 + parent: 1 + type: Transform + - uid: 14772 + components: + - rot: 3.141592653589793 rad + pos: 24.5,-26.5 + parent: 1 + type: Transform + - uid: 14773 + components: + - rot: 1.5707963267948966 rad + pos: 25.5,-26.5 + parent: 1 + type: Transform + - uid: 14775 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,-17.5 + parent: 1 + type: Transform + - uid: 14778 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,-11.5 + parent: 1 + type: Transform + - uid: 14781 + components: + - pos: 32.5,-6.5 + parent: 1 + type: Transform + - uid: 14782 + components: + - rot: 3.141592653589793 rad + pos: 32.5,-10.5 + parent: 1 + type: Transform + - uid: 14785 + components: + - rot: -1.5707963267948966 rad + pos: 32.5,-5.5 + parent: 1 + type: Transform + - uid: 14786 + components: + - rot: -1.5707963267948966 rad + pos: 32.5,-2.5 + parent: 1 + type: Transform + - uid: 14790 + components: + - rot: 3.141592653589793 rad + pos: 32.5,-1.5 + parent: 1 + type: Transform + - uid: 14795 + components: + - rot: -1.5707963267948966 rad + pos: 22.5,46.5 + parent: 1 + type: Transform + - uid: 14798 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,55.5 + parent: 1 + type: Transform + - uid: 14803 + components: + - pos: 26.5,45.5 + parent: 1 + type: Transform + - uid: 14807 + components: + - rot: 3.141592653589793 rad + pos: 26.5,41.5 + parent: 1 + type: Transform + - uid: 14811 + components: + - rot: -1.5707963267948966 rad + pos: 26.5,35.5 + parent: 1 + type: Transform + - uid: 14814 + components: + - pos: 26.5,32.5 + parent: 1 + type: Transform + - uid: 15150 + components: + - rot: 3.141592653589793 rad + pos: 21.5,48.5 + parent: 1 + type: Transform + - uid: 15151 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,52.5 + parent: 1 + type: Transform + - uid: 15152 + components: + - pos: 21.5,55.5 + parent: 1 + type: Transform + - uid: 15153 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,55.5 + parent: 1 + type: Transform + - uid: 15351 + components: + - rot: -1.5707963267948966 rad + pos: 29.5,32.5 + parent: 1 + type: Transform + - uid: 15356 + components: + - rot: 3.141592653589793 rad + pos: 32.5,30.5 + parent: 1 + type: Transform + - uid: 15359 + components: + - rot: -1.5707963267948966 rad + pos: 32.5,26.5 + parent: 1 + type: Transform + - uid: 15361 + components: + - pos: 32.5,24.5 + parent: 1 + type: Transform + - uid: 15364 + components: + - rot: 3.141592653589793 rad + pos: 32.5,21.5 + parent: 1 + type: Transform + - uid: 15435 + components: + - pos: -34.5,61.5 + parent: 1 + type: Transform + - uid: 15439 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,65.5 + parent: 1 + type: Transform + - uid: 15440 + components: + - rot: 3.141592653589793 rad + pos: -34.5,66.5 + parent: 1 + type: Transform + - uid: 15443 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,69.5 + parent: 1 + type: Transform + - uid: 15447 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,71.5 + parent: 1 + type: Transform + - uid: 15450 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,71.5 + parent: 1 + type: Transform + - uid: 15504 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,-22.5 + parent: 1 + type: Transform + - uid: 15511 + components: + - rot: -1.5707963267948966 rad + pos: 0.5,-22.5 + parent: 1 + type: Transform + - uid: 15512 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,-22.5 + parent: 1 + type: Transform + - uid: 15532 + components: + - rot: 3.141592653589793 rad + pos: -7.5,-20.5 + parent: 1 + type: Transform + - uid: 15539 + components: + - rot: 3.141592653589793 rad + pos: 8.5,-22.5 + parent: 1 + type: Transform + - uid: 15542 + components: + - rot: -1.5707963267948966 rad + pos: 12.5,-22.5 + parent: 1 + type: Transform + - uid: 15546 + components: + - rot: 1.5707963267948966 rad + pos: 14.5,-20.5 + parent: 1 + type: Transform + - uid: 15851 + components: + - pos: 24.5,39.5 + parent: 1 + type: Transform +- proto: Handcuffs + entities: + - uid: 10917 + components: + - pos: -13.576752,65.56619 + parent: 1 + type: Transform +- proto: HandheldGPSBasic + entities: + - uid: 15784 + components: + - pos: -37.37278,-10.030424 + parent: 1 + type: Transform + - uid: 15785 + components: + - pos: -37.607155,-10.327299 + parent: 1 + type: Transform +- proto: HandheldHealthAnalyzer + entities: + - uid: 373 + components: + - pos: 5.543945,-11.373774 + parent: 1 + type: Transform +- proto: HarpInstrument + entities: + - uid: 6335 + components: + - pos: 15.5,52.5 + parent: 1 + type: Transform +- proto: HeadSkeleton + entities: + - uid: 6645 + components: + - flags: SessionSpecific + name: captain's skull + type: MetaData + - pos: -14.534092,66.507454 + parent: 1 + type: Transform + - baseSprintSpeed: 2.5 + type: MovementSpeedModifier + - type: GhostTakeoverAvailable + - type: MindContainer + - type: InputMover + - type: MobMover + - type: MovementAlwaysTouching + - type: CanEscapeInventory +- proto: HighSecArmoryLocked + entities: + - uid: 6682 + components: + - pos: -44.5,62.5 + parent: 1 + type: Transform + - uid: 7869 + components: + - pos: -44.5,64.5 + parent: 1 + type: Transform +- proto: HighSecCommandLocked + entities: + - uid: 2752 + components: + - pos: 26.5,4.5 + parent: 1 + type: Transform + - uid: 2970 + components: + - pos: 26.5,22.5 + parent: 1 + type: Transform + - uid: 6196 + components: + - pos: 10.5,41.5 + parent: 1 + type: Transform + - uid: 6396 + components: + - pos: -19.5,54.5 + parent: 1 + type: Transform +- proto: HospitalCurtainsOpen + entities: + - uid: 1404 + components: + - pos: 10.5,30.5 + parent: 1 + type: Transform + - uid: 1406 + components: + - pos: 11.5,30.5 + parent: 1 + type: Transform + - uid: 1407 + components: + - pos: 12.5,30.5 + parent: 1 + type: Transform + - uid: 1896 + components: + - pos: 7.5,30.5 + parent: 1 + type: Transform + - uid: 1897 + components: + - pos: 8.5,30.5 + parent: 1 + type: Transform + - uid: 1908 + components: + - pos: 9.5,30.5 + parent: 1 + type: Transform + - uid: 15349 + components: + - pos: -5.5,58.5 + parent: 1 + type: Transform +- proto: hydroponicsSoil + entities: + - uid: 7306 + components: + - pos: -62.5,83.5 + parent: 1 + type: Transform + - uid: 7311 + components: + - pos: -62.5,85.5 + parent: 1 + type: Transform + - uid: 7326 + components: + - pos: -62.5,84.5 + parent: 1 + type: Transform +- proto: HydroponicsToolClippers + entities: + - uid: 6951 + components: + - pos: -42.941048,47.547256 + parent: 1 + type: Transform +- proto: HydroponicsToolMiniHoe + entities: + - uid: 6939 + components: + - pos: -42.847298,47.547256 + parent: 1 + type: Transform + - uid: 7724 + components: + - pos: -60.46126,83.48959 + parent: 1 + type: Transform +- proto: HydroponicsToolSpade + entities: + - uid: 7725 + components: + - pos: -61.46126,88.67473 + parent: 1 + type: Transform +- proto: hydroponicsTray + entities: + - uid: 185 + components: + - pos: -41.5,52.5 + parent: 1 + type: Transform + - uid: 186 + components: + - pos: -42.5,52.5 + parent: 1 + type: Transform + - uid: 6860 + components: + - pos: -43.5,45.5 + parent: 1 + type: Transform + - uid: 6861 + components: + - pos: -43.5,44.5 + parent: 1 + type: Transform + - uid: 6862 + components: + - pos: -43.5,43.5 + parent: 1 + type: Transform + - uid: 6863 + components: + - pos: -42.5,45.5 + parent: 1 + type: Transform + - uid: 6864 + components: + - pos: -42.5,44.5 + parent: 1 + type: Transform + - uid: 6865 + components: + - pos: -42.5,43.5 + parent: 1 + type: Transform + - uid: 6866 + components: + - pos: -41.5,45.5 + parent: 1 + type: Transform + - uid: 6867 + components: + - pos: -41.5,44.5 + parent: 1 + type: Transform + - uid: 6868 + components: + - pos: -41.5,43.5 + parent: 1 + type: Transform + - uid: 6869 + components: + - pos: -44.5,41.5 + parent: 1 + type: Transform + - uid: 6870 + components: + - pos: -43.5,41.5 + parent: 1 + type: Transform + - uid: 6871 + components: + - pos: -42.5,41.5 + parent: 1 + type: Transform + - uid: 6872 + components: + - pos: -41.5,41.5 + parent: 1 + type: Transform +- proto: InflatableDoor + entities: + - uid: 290 + components: + - pos: -1.5,-6.5 + parent: 1 + type: Transform + - uid: 2252 + components: + - pos: -63.5,7.5 + parent: 1 + type: Transform + - uid: 2828 + components: + - pos: -27.5,28.5 + parent: 1 + type: Transform + - uid: 2967 + components: + - pos: 23.5,21.5 + parent: 1 + type: Transform + - uid: 2968 + components: + - pos: 22.5,21.5 + parent: 1 + type: Transform + - uid: 7945 + components: + - pos: -35.5,12.5 + parent: 1 + type: Transform +- proto: InflatableWall + entities: + - uid: 477 + components: + - pos: 5.5,-1.5 + parent: 1 + type: Transform + - uid: 681 + components: + - pos: 25.5,-2.5 + parent: 1 + type: Transform + - uid: 691 + components: + - pos: 21.5,-4.5 + parent: 1 + type: Transform + - uid: 692 + components: + - pos: 21.5,-5.5 + parent: 1 + type: Transform + - uid: 693 + components: + - pos: 23.5,0.5 + parent: 1 + type: Transform + - uid: 1000 + components: + - pos: 20.5,12.5 + parent: 1 + type: Transform + - uid: 1191 + components: + - pos: 15.5,16.5 + parent: 1 + type: Transform + - uid: 3044 + components: + - pos: -21.5,28.5 + parent: 1 + type: Transform + - uid: 3045 + components: + - pos: -21.5,29.5 + parent: 1 + type: Transform + - uid: 3117 + components: + - pos: -27.5,27.5 + parent: 1 + type: Transform + - uid: 3118 + components: + - pos: -32.5,30.5 + parent: 1 + type: Transform + - uid: 3144 + components: + - pos: -33.5,30.5 + parent: 1 + type: Transform + - uid: 3146 + components: + - pos: -34.5,14.5 + parent: 1 + type: Transform + - uid: 3164 + components: + - pos: -28.5,22.5 + parent: 1 + type: Transform + - uid: 4523 + components: + - pos: -55.5,-5.5 + parent: 1 + type: Transform + - uid: 4527 + components: + - pos: -50.5,0.5 + parent: 1 + type: Transform + - uid: 5177 + components: + - pos: -62.5,7.5 + parent: 1 + type: Transform + - uid: 5184 + components: + - pos: -65.5,7.5 + parent: 1 + type: Transform + - uid: 5185 + components: + - pos: -64.5,7.5 + parent: 1 + type: Transform + - uid: 7569 + components: + - pos: -35.5,11.5 + parent: 1 + type: Transform +- proto: InflatableWallStack1 + entities: + - uid: 335 + components: + - pos: -82.4705,30.370302 + parent: 1 + type: Transform + - uid: 7229 + components: + - pos: -82.4705,30.370302 + parent: 1 + type: Transform + - uid: 10734 + components: + - pos: -82.4705,30.370302 + parent: 1 + type: Transform +- proto: IngotGold + entities: + - uid: 10870 + components: + - pos: -20.428497,57.597878 + parent: 1 + type: Transform +- proto: IntercomAll + entities: + - uid: 8604 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,37.5 + parent: 1 + type: Transform + - uid: 8605 + components: + - rot: 3.141592653589793 rad + pos: -6.5,58.5 + parent: 1 + type: Transform +- proto: IntercomCommand + entities: + - uid: 8606 + components: + - rot: 3.141592653589793 rad + pos: -14.5,61.5 + parent: 1 + type: Transform + - uid: 8607 + components: + - rot: -1.5707963267948966 rad + pos: -6.5,53.5 + parent: 1 + type: Transform + - uid: 8608 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,55.5 + parent: 1 + type: Transform +- proto: IntercomCommon + entities: + - uid: 4801 + components: + - rot: 3.141592653589793 rad + pos: -73.5,-12.5 + parent: 1 + type: Transform + - uid: 8609 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,48.5 + parent: 1 + type: Transform + - uid: 8610 + components: + - rot: 3.141592653589793 rad + pos: -8.5,26.5 + parent: 1 + type: Transform + - uid: 8611 + components: + - pos: -27.5,34.5 + parent: 1 + type: Transform + - uid: 8612 + components: + - rot: 3.141592653589793 rad + pos: -35.5,22.5 + parent: 1 + type: Transform + - uid: 8613 + components: + - rot: 1.5707963267948966 rad + pos: -49.5,39.5 + parent: 1 + type: Transform + - uid: 8614 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,28.5 + parent: 1 + type: Transform + - uid: 8615 + components: + - rot: 3.141592653589793 rad + pos: -53.5,11.5 + parent: 1 + type: Transform + - uid: 8618 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,12.5 + parent: 1 + type: Transform + - uid: 8619 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,10.5 + parent: 1 + type: Transform + - uid: 8620 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,16.5 + parent: 1 + type: Transform + - uid: 8621 + components: + - pos: 3.5,7.5 + parent: 1 + type: Transform + - uid: 8622 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,1.5 + parent: 1 + type: Transform + - uid: 8623 + components: + - rot: -1.5707963267948966 rad + pos: 29.5,15.5 + parent: 1 + type: Transform +- proto: IntercomEngineering + entities: + - uid: 14171 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,34.5 + parent: 1 + type: Transform + - uid: 14172 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,26.5 + parent: 1 + type: Transform + - uid: 14173 + components: + - pos: -81.5,28.5 + parent: 1 + type: Transform + - uid: 14174 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,32.5 + parent: 1 + type: Transform + - uid: 14175 + components: + - rot: 3.141592653589793 rad + pos: -65.5,18.5 + parent: 1 + type: Transform + - uid: 14176 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,16.5 + parent: 1 + type: Transform + - uid: 14177 + components: + - rot: -1.5707963267948966 rad + pos: -72.5,29.5 + parent: 1 + type: Transform +- proto: IntercomMedical + entities: + - uid: 8629 + components: + - pos: -3.5,35.5 + parent: 1 + type: Transform + - uid: 8630 + components: + - rot: 3.141592653589793 rad + pos: 1.5,35.5 + parent: 1 + type: Transform + - uid: 8632 + components: + - rot: 3.141592653589793 rad + pos: 9.5,27.5 + parent: 1 + type: Transform + - uid: 8633 + components: + - rot: 3.141592653589793 rad + pos: 9.5,21.5 + parent: 1 + type: Transform + - uid: 8634 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,18.5 + parent: 1 + type: Transform + - uid: 8635 + components: + - rot: -1.5707963267948966 rad + pos: 0.5,21.5 + parent: 1 + type: Transform + - uid: 15134 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,35.5 + parent: 1 + type: Transform +- proto: IntercomScience + entities: + - uid: 8624 + components: + - rot: 3.141592653589793 rad + pos: -5.5,3.5 + parent: 1 + type: Transform + - uid: 8625 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,-3.5 + parent: 1 + type: Transform + - uid: 8626 + components: + - pos: -1.5,-0.5 + parent: 1 + type: Transform + - uid: 8627 + components: + - pos: 0.5,-7.5 + parent: 1 + type: Transform + - uid: 8628 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,-11.5 + parent: 1 + type: Transform +- proto: IntercomSecurity + entities: + - uid: 8643 + components: + - rot: 1.5707963267948966 rad + pos: -49.5,51.5 + parent: 1 + type: Transform + - uid: 8644 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,58.5 + parent: 1 + type: Transform + - uid: 8645 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,64.5 + parent: 1 + type: Transform + - uid: 8646 + components: + - rot: 1.5707963267948966 rad + pos: -62.5,64.5 + parent: 1 + type: Transform + - uid: 8647 + components: + - rot: -1.5707963267948966 rad + pos: -58.5,51.5 + parent: 1 + type: Transform + - uid: 8649 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,85.5 + parent: 1 + type: Transform + - uid: 8650 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,57.5 + parent: 1 + type: Transform +- proto: IntercomService + entities: + - uid: 8639 + components: + - pos: -34.5,41.5 + parent: 1 + type: Transform + - uid: 8640 + components: + - pos: -28.5,48.5 + parent: 1 + type: Transform + - uid: 8641 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,45.5 + parent: 1 + type: Transform + - uid: 8642 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,51.5 + parent: 1 + type: Transform +- proto: IntercomSupply + entities: + - uid: 8636 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,2.5 + parent: 1 + type: Transform + - uid: 8637 + components: + - pos: -41.5,-8.5 + parent: 1 + type: Transform + - uid: 8638 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,-8.5 + parent: 1 + type: Transform +- proto: JanitorialTrolley + entities: + - uid: 7100 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,37.5 + parent: 1 + type: Transform +- proto: KitchenKnife + entities: + - uid: 6953 + components: + - pos: -36.41309,45.528122 + parent: 1 + type: Transform +- proto: KitchenMicrowave + entities: + - uid: 6906 + components: + - pos: -33.5,42.5 + parent: 1 + type: Transform + - uid: 6907 + components: + - pos: -36.5,47.5 + parent: 1 + type: Transform + - uid: 7320 + components: + - pos: -61.5,89.5 + parent: 1 + type: Transform + - uid: 7944 + components: + - pos: -56.5,63.5 + parent: 1 + type: Transform +- proto: KitchenReagentGrinder + entities: + - uid: 1951 + components: + - pos: -4.5,24.5 + parent: 1 + type: Transform + - uid: 6908 + components: + - pos: -34.5,45.5 + parent: 1 + type: Transform + - uid: 7722 + components: + - pos: -58.5,89.5 + parent: 1 + type: Transform +- proto: KitchenSpike + entities: + - uid: 2304 + components: + - pos: -76.5,55.5 + parent: 1 + type: Transform + - uid: 6924 + components: + - pos: -27.5,46.5 + parent: 1 + type: Transform + - uid: 6925 + components: + - pos: -27.5,47.5 + parent: 1 + type: Transform +- proto: Lamp + entities: + - uid: 3199 + components: + - pos: -27.497456,17.876417 + parent: 1 + type: Transform + - uid: 3748 + components: + - pos: -45.525093,-7.0754695 + parent: 1 + type: Transform + - uid: 3750 + components: + - pos: -46.478218,0.9660685 + parent: 1 + type: Transform + - uid: 4559 + components: + - rot: 3.141592653589793 rad + pos: 18.546034,40.734077 + parent: 1 + type: Transform + - uid: 4560 + components: + - rot: 3.141592653589793 rad + pos: 23.577284,40.655952 + parent: 1 + type: Transform + - uid: 4569 + components: + - rot: 3.141592653589793 rad + pos: 17.514784,42.687202 + parent: 1 + type: Transform + - uid: 4708 + components: + - pos: -32.32265,-5.1474953 + parent: 1 + type: Transform + - uid: 7556 + components: + - pos: -22.548872,46.863678 + parent: 1 + type: Transform + - uid: 7940 + components: + - pos: -58.53795,64.84835 + parent: 1 + type: Transform + - toggleActionEntity: 7458 + type: HandheldLight + - containers: + cell_slot: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + actions: !type:Container + showEnts: False + occludes: True + ents: + - 7458 + type: ContainerContainer + - canCollide: True + type: Physics + - type: ActionsContainer + - uid: 10944 + components: + - pos: -60.49684,41.882523 + parent: 1 + type: Transform + - uid: 10945 + components: + - pos: -63.449966,40.007523 + parent: 1 + type: Transform + - uid: 12032 + components: + - pos: -31.488277,-3.1049178 + parent: 1 + type: Transform + - uid: 12783 + components: + - pos: 14.50122,31.915655 + parent: 1 + type: Transform + - uid: 14290 + components: + - pos: -71.492615,49.83911 + parent: 1 + type: Transform + - uid: 15788 + components: + - pos: -38.52308,-9.139799 + parent: 1 + type: Transform + - uid: 15797 + components: + - pos: -70.46455,15.962357 + parent: 1 + type: Transform +- proto: LampBanana + entities: + - uid: 4231 + components: + - pos: -40.489174,28.7831 + parent: 1 + type: Transform +- proto: LampGold + entities: + - uid: 2751 + components: + - pos: 21.502605,-1.9941196 + parent: 1 + type: Transform + - uid: 3197 + components: + - pos: -31.497456,9.898998 + parent: 1 + type: Transform + - uid: 3198 + components: + - pos: -24.497456,9.867748 + parent: 1 + type: Transform + - uid: 5510 + components: + - pos: -53.465157,-0.32265806 + parent: 1 + type: Transform + - uid: 5511 + components: + - pos: -54.496407,-5.055279 + parent: 1 + type: Transform + - uid: 7399 + components: + - pos: 9.4932995,46.83763 + parent: 1 + type: Transform +- proto: LandMineExplosive + entities: + - uid: 15456 + components: + - pos: -42.49931,68.53585 + parent: 1 + type: Transform + - uid: 15457 + components: + - pos: -37.49931,61.461067 + parent: 1 + type: Transform + - uid: 15488 + components: + - pos: -38.49931,64.50794 + parent: 1 + type: Transform + - uid: 15489 + components: + - pos: -37.483685,67.49232 + parent: 1 + type: Transform + - uid: 15490 + components: + - pos: -39.483685,68.52357 + parent: 1 + type: Transform +- proto: Lantern + entities: + - uid: 621 + components: + - pos: 19.562792,-8.525764 + parent: 1 + type: Transform + - containers: + cell_slot: !type:ContainerSlot + showEnts: False + occludes: True + ent: 15037 + type: ContainerContainer +- proto: LargeBeaker + entities: + - uid: 1988 + components: + - pos: -0.2943699,22.171614 + parent: 1 + type: Transform +- proto: LauncherCreamPie + entities: + - uid: 4241 + components: + - pos: -42.484016,28.536114 + parent: 1 + type: Transform +- proto: LockerAtmosphericsFilledHardsuit + entities: + - uid: 137 + components: + - pos: -79.5,29.5 + parent: 1 + type: Transform + - uid: 143 + components: + - pos: -80.5,29.5 + parent: 1 + type: Transform + - uid: 580 + components: + - pos: -81.5,29.5 + parent: 1 + type: Transform +- proto: LockerBoozeFilled + entities: + - uid: 9732 + components: + - pos: -28.5,35.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 9733 + components: + - pos: -28.5,38.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerBotanistFilled + entities: + - uid: 5788 + components: + - pos: -39.5,52.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5794 + components: + - pos: -40.5,52.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerCaptainFilledHardsuit + entities: + - uid: 187 + components: + - pos: -9.5,61.5 + parent: 1 + type: Transform +- proto: LockerChemistryFilled + entities: + - uid: 1946 + components: + - pos: -2.5,19.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1947 + components: + - pos: -1.5,19.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerChiefEngineerFilled + entities: + - uid: 10725 + components: + - pos: -68.5,15.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerChiefMedicalOfficerFilledHardsuit + entities: + - uid: 62 + components: + - pos: 14.5,32.5 + parent: 1 + type: Transform +- proto: LockerDetectiveFilled + entities: + - uid: 14281 + components: + - pos: -69.5,49.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerEngineerFilledHardsuit + entities: + - uid: 188 + components: + - pos: -67.5,31.5 + parent: 1 + type: Transform + - uid: 189 + components: + - pos: -67.5,30.5 + parent: 1 + type: Transform + - uid: 218 + components: + - pos: -67.5,29.5 + parent: 1 + type: Transform + - uid: 247 + components: + - pos: -67.5,28.5 + parent: 1 + type: Transform + - uid: 298 + components: + - pos: -67.5,27.5 + parent: 1 + type: Transform +- proto: LockerEvidence + entities: + - uid: 7425 + components: + - pos: -50.5,84.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 7433 + components: + - pos: -50.5,83.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 8013 + components: + - pos: -55.5,53.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 8651 + components: + - pos: -52.5,53.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerFreezer + entities: + - uid: 6929 + components: + - pos: -29.5,44.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerHeadOfPersonnelFilled + entities: + - uid: 7536 + components: + - pos: -22.5,48.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerHeadOfSecurityFilled + entities: + - uid: 7934 + components: + - pos: -61.5,63.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerMedicalFilled + entities: + - uid: 2024 + components: + - pos: 6.5,26.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2028 + components: + - pos: 7.5,26.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2029 + components: + - pos: 8.5,26.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 2030 + components: + - pos: 9.5,26.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerQuarterMasterFilled + entities: + - uid: 3668 + components: + - pos: -43.5,-6.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerResearchDirectorFilled + entities: + - uid: 245 + components: + - pos: -1.5,0.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 1.7459902 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 3698 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + type: ContainerContainer +- proto: LockerSalvageSpecialistFilledHardsuit + entities: + - uid: 299 + components: + - pos: -43.5,-13.5 + parent: 1 + type: Transform + - uid: 300 + components: + - pos: -42.5,-13.5 + parent: 1 + type: Transform + - uid: 301 + components: + - pos: -41.5,-13.5 + parent: 1 + type: Transform +- proto: LockerScienceFilled + entities: + - uid: 231 + components: + - pos: -6.5,-4.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 232 + components: + - pos: -6.5,-3.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 243 + components: + - pos: -8.5,-4.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 244 + components: + - pos: -8.5,-3.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerSecurityFilled + entities: + - uid: 1923 + components: + - pos: -63.5,55.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1924 + components: + - pos: -65.5,55.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1925 + components: + - pos: -62.5,55.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 7904 + components: + - pos: -64.5,55.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 7975 + components: + - pos: -57.5,58.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: LockerWardenFilledHardsuit + entities: + - uid: 4163 + components: + - pos: -46.5,57.5 + parent: 1 + type: Transform +- proto: MachineAnomalyGenerator + entities: + - uid: 1859 + components: + - pos: -14.5,-11.5 + parent: 1 + type: Transform +- proto: MachineAnomalyVessel + entities: + - uid: 587 + components: + - pos: -11.5,-10.5 + parent: 1 + type: Transform +- proto: MachineAPE + entities: + - uid: 312 + components: + - pos: -11.5,-13.5 + parent: 1 + type: Transform + - uid: 321 + components: + - pos: -11.5,-14.5 + parent: 1 + type: Transform +- proto: MachineArtifactAnalyzer + entities: + - uid: 347 + components: + - pos: 1.5,-14.5 + parent: 1 + type: Transform + - links: + - 341 + type: DeviceLinkSink +- proto: MachineFrame + entities: + - uid: 253 + components: + - pos: -5.5,0.5 + parent: 1 + type: Transform + - uid: 1356 + components: + - pos: 0.5,37.5 + parent: 1 + type: Transform + - uid: 1401 + components: + - pos: 0.5,39.5 + parent: 1 + type: Transform + - uid: 1940 + components: + - pos: -4.5,22.5 + parent: 1 + type: Transform + - uid: 1952 + components: + - pos: -4.5,23.5 + parent: 1 + type: Transform + - uid: 2041 + components: + - pos: 4.5,36.5 + parent: 1 + type: Transform + - uid: 9968 + components: + - pos: -84.5,26.5 + parent: 1 + type: Transform + - uid: 9969 + components: + - pos: -84.5,25.5 + parent: 1 + type: Transform + - uid: 9970 + components: + - pos: -84.5,24.5 + parent: 1 + type: Transform + - uid: 9971 + components: + - pos: -83.5,25.5 + parent: 1 + type: Transform + - uid: 9972 + components: + - pos: -82.5,25.5 + parent: 1 + type: Transform + - uid: 9973 + components: + - pos: -81.5,25.5 + parent: 1 + type: Transform + - uid: 13661 + components: + - pos: -12.5,-14.5 + parent: 1 + type: Transform +- proto: MachineParticleAcceleratorEmitterForeCircuitboard + entities: + - uid: 9961 + components: + - pos: -81.52008,22.452606 + parent: 1 + type: Transform +- proto: MachineParticleAcceleratorEmitterPortCircuitboard + entities: + - uid: 9964 + components: + - pos: -81.02008,22.515106 + parent: 1 + type: Transform +- proto: MachineParticleAcceleratorEmitterStarboardCircuitboard + entities: + - uid: 9962 + components: + - pos: -80.98883,22.780731 + parent: 1 + type: Transform +- proto: MachineParticleAcceleratorEndCapCircuitboard + entities: + - uid: 9965 + components: + - pos: -80.45758,22.765106 + parent: 1 + type: Transform +- proto: MachineParticleAcceleratorFuelChamberCircuitboard + entities: + - uid: 9966 + components: + - pos: -80.473206,22.483856 + parent: 1 + type: Transform +- proto: MachineParticleAcceleratorPowerBoxCircuitboard + entities: + - uid: 9967 + components: + - pos: -81.004456,22.608856 + parent: 1 + type: Transform +- proto: MagazinePistol + entities: + - uid: 8359 + components: + - pos: -42.709877,61.49391 + parent: 1 + type: Transform + - uid: 8364 + components: + - pos: -42.491127,61.49391 + parent: 1 + type: Transform + - uid: 8365 + components: + - pos: -42.631752,61.49391 + parent: 1 + type: Transform + - uid: 8372 + components: + - pos: -42.381752,61.49391 + parent: 1 + type: Transform + - uid: 8375 + components: + - pos: -42.288002,61.49391 + parent: 1 + type: Transform +- proto: MagazinePistolSubMachineGunTopMounted + entities: + - uid: 7938 + components: + - pos: -60.513123,64.48181 + parent: 1 + type: Transform + - uid: 7939 + components: + - pos: -60.513123,64.48181 + parent: 1 + type: Transform +- proto: MagazineRifle + entities: + - uid: 8360 + components: + - pos: -41.301014,62.60871 + parent: 1 + type: Transform + - uid: 8361 + components: + - pos: -41.363514,62.60871 + parent: 1 + type: Transform + - uid: 8362 + components: + - pos: -41.44164,62.60871 + parent: 1 + type: Transform + - uid: 8363 + components: + - pos: -41.56664,62.60871 + parent: 1 + type: Transform +- proto: MagazineRifleRubber + entities: + - uid: 8366 + components: + - pos: -41.301014,62.13996 + parent: 1 + type: Transform + - uid: 8367 + components: + - pos: -41.363514,62.13996 + parent: 1 + type: Transform + - uid: 8368 + components: + - pos: -41.47289,62.13996 + parent: 1 + type: Transform + - uid: 8369 + components: + - pos: -41.582264,62.13996 + parent: 1 + type: Transform +- proto: MailingUnitElectronics + entities: + - uid: 5543 + components: + - pos: -54.399563,27.347925 + parent: 1 + type: Transform + - uid: 5544 + components: + - pos: -54.524563,27.55105 + parent: 1 + type: Transform +- proto: MaintenanceFluffSpawner + entities: + - uid: 257 + components: + - pos: -13.5,-7.5 + parent: 1 + type: Transform + - uid: 2956 + components: + - pos: 28.5,-4.5 + parent: 1 + type: Transform + - uid: 2957 + components: + - pos: 29.5,-4.5 + parent: 1 + type: Transform + - uid: 2963 + components: + - pos: 7.5,-4.5 + parent: 1 + type: Transform + - uid: 5435 + components: + - pos: -18.5,0.5 + parent: 1 + type: Transform + - uid: 5447 + components: + - pos: -17.5,-7.5 + parent: 1 + type: Transform + - uid: 5594 + components: + - pos: -31.5,12.5 + parent: 1 + type: Transform + - uid: 5612 + components: + - pos: -45.5,25.5 + parent: 1 + type: Transform + - uid: 5622 + components: + - pos: -46.5,15.5 + parent: 1 + type: Transform + - uid: 5623 + components: + - pos: -47.5,15.5 + parent: 1 + type: Transform + - uid: 5624 + components: + - pos: -41.5,13.5 + parent: 1 + type: Transform + - uid: 5745 + components: + - pos: -34.5,13.5 + parent: 1 + type: Transform + - uid: 5747 + components: + - pos: -20.5,14.5 + parent: 1 + type: Transform + - uid: 5791 + components: + - pos: -7.5,22.5 + parent: 1 + type: Transform + - uid: 5792 + components: + - pos: -3.5,14.5 + parent: 1 + type: Transform + - uid: 5797 + components: + - pos: -14.5,10.5 + parent: 1 + type: Transform + - uid: 5798 + components: + - pos: -14.5,13.5 + parent: 1 + type: Transform + - uid: 5799 + components: + - pos: -10.5,14.5 + parent: 1 + type: Transform + - uid: 10375 + components: + - pos: -28.5,49.5 + parent: 1 + type: Transform + - uid: 10401 + components: + - pos: -3.5,42.5 + parent: 1 + type: Transform + - uid: 10402 + components: + - pos: -3.5,43.5 + parent: 1 + type: Transform + - uid: 10406 + components: + - pos: 22.5,28.5 + parent: 1 + type: Transform + - uid: 10463 + components: + - pos: -27.5,40.5 + parent: 1 + type: Transform + - uid: 12910 + components: + - pos: 6.5,8.5 + parent: 1 + type: Transform + - uid: 12911 + components: + - pos: 12.5,8.5 + parent: 1 + type: Transform + - uid: 13840 + components: + - pos: -42.5,54.5 + parent: 1 + type: Transform + - uid: 14321 + components: + - pos: -66.5,41.5 + parent: 1 + type: Transform + - uid: 14322 + components: + - pos: -66.5,43.5 + parent: 1 + type: Transform + - uid: 14326 + components: + - pos: -73.5,51.5 + parent: 1 + type: Transform + - uid: 14327 + components: + - pos: -71.5,51.5 + parent: 1 + type: Transform + - uid: 14328 + components: + - pos: -75.5,37.5 + parent: 1 + type: Transform + - uid: 14409 + components: + - pos: -69.5,26.5 + parent: 1 + type: Transform + - uid: 14593 + components: + - pos: -67.5,10.5 + parent: 1 + type: Transform + - uid: 14599 + components: + - pos: -61.5,24.5 + parent: 1 + type: Transform + - uid: 14600 + components: + - pos: -61.5,26.5 + parent: 1 + type: Transform +- proto: MaintenancePlantSpawner + entities: + - uid: 9010 + components: + - pos: -21.5,0.5 + parent: 1 + type: Transform + - uid: 9013 + components: + - pos: -66.5,50.5 + parent: 1 + type: Transform + - uid: 9014 + components: + - pos: 8.5,39.5 + parent: 1 + type: Transform + - uid: 9016 + components: + - pos: 29.5,-5.5 + parent: 1 + type: Transform +- proto: MaintenanceToolSpawner + entities: + - uid: 2072 + components: + - pos: -3.5,15.5 + parent: 1 + type: Transform + - uid: 2955 + components: + - pos: 27.5,-4.5 + parent: 1 + type: Transform + - uid: 2962 + components: + - pos: 6.5,-4.5 + parent: 1 + type: Transform + - uid: 3318 + components: + - rot: 3.141592653589793 rad + pos: -18.5,16.5 + parent: 1 + type: Transform + - uid: 4199 + components: + - pos: -8.5,12.5 + parent: 1 + type: Transform + - uid: 5431 + components: + - pos: -29.5,-2.5 + parent: 1 + type: Transform + - uid: 5434 + components: + - pos: -18.5,-7.5 + parent: 1 + type: Transform + - uid: 5436 + components: + - pos: -19.5,0.5 + parent: 1 + type: Transform + - uid: 5441 + components: + - pos: -23.5,-3.5 + parent: 1 + type: Transform + - uid: 5503 + components: + - pos: -51.5,2.5 + parent: 1 + type: Transform + - uid: 5506 + components: + - pos: -52.5,-5.5 + parent: 1 + type: Transform + - uid: 5522 + components: + - pos: -47.5,-8.5 + parent: 1 + type: Transform + - uid: 5560 + components: + - pos: -40.5,18.5 + parent: 1 + type: Transform + - uid: 5561 + components: + - pos: -40.5,17.5 + parent: 1 + type: Transform + - uid: 5619 + components: + - pos: -40.5,13.5 + parent: 1 + type: Transform + - uid: 5620 + components: + - pos: -43.5,13.5 + parent: 1 + type: Transform + - uid: 5626 + components: + - pos: -45.5,23.5 + parent: 1 + type: Transform + - uid: 5737 + components: + - pos: -20.5,29.5 + parent: 1 + type: Transform + - uid: 5748 + components: + - pos: -20.5,13.5 + parent: 1 + type: Transform + - uid: 5795 + components: + - pos: -10.5,12.5 + parent: 1 + type: Transform + - uid: 5796 + components: + - pos: -14.5,8.5 + parent: 1 + type: Transform + - uid: 6226 + components: + - pos: 18.5,45.5 + parent: 1 + type: Transform + - uid: 7520 + components: + - pos: -29.5,55.5 + parent: 1 + type: Transform + - uid: 10374 + components: + - pos: -29.5,49.5 + parent: 1 + type: Transform + - uid: 10390 + components: + - pos: -1.5,45.5 + parent: 1 + type: Transform + - uid: 10392 + components: + - pos: 6.5,48.5 + parent: 1 + type: Transform + - uid: 10409 + components: + - pos: 22.5,27.5 + parent: 1 + type: Transform + - uid: 10801 + components: + - pos: -8.5,46.5 + parent: 1 + type: Transform + - uid: 12907 + components: + - pos: 4.5,8.5 + parent: 1 + type: Transform + - uid: 12908 + components: + - pos: 13.5,8.5 + parent: 1 + type: Transform + - uid: 13839 + components: + - pos: -43.5,54.5 + parent: 1 + type: Transform + - uid: 14320 + components: + - pos: -66.5,42.5 + parent: 1 + type: Transform + - uid: 14323 + components: + - pos: -63.5,48.5 + parent: 1 + type: Transform + - uid: 14324 + components: + - pos: -72.5,51.5 + parent: 1 + type: Transform + - uid: 14329 + components: + - pos: -61.5,35.5 + parent: 1 + type: Transform + - uid: 14594 + components: + - pos: -67.5,11.5 + parent: 1 + type: Transform + - uid: 14595 + components: + - pos: -67.5,13.5 + parent: 1 + type: Transform + - uid: 14597 + components: + - pos: -60.5,20.5 + parent: 1 + type: Transform + - uid: 14598 + components: + - pos: -61.5,25.5 + parent: 1 + type: Transform + - uid: 15928 + components: + - pos: 18.5,40.5 + parent: 1 + type: Transform + - uid: 15929 + components: + - pos: 23.5,40.5 + parent: 1 + type: Transform + - uid: 15930 + components: + - pos: 23.5,38.5 + parent: 1 + type: Transform +- proto: MaintenanceWeaponSpawner + entities: + - uid: 919 + components: + - pos: 29.5,-0.5 + parent: 1 + type: Transform + - uid: 2060 + components: + - pos: -0.5,42.5 + parent: 1 + type: Transform + - uid: 2789 + components: + - pos: -25.5,55.5 + parent: 1 + type: Transform + - uid: 2882 + components: + - pos: -8.5,11.5 + parent: 1 + type: Transform + - uid: 5430 + components: + - pos: -27.5,-4.5 + parent: 1 + type: Transform + - uid: 5558 + components: + - pos: -47.5,17.5 + parent: 1 + type: Transform + - uid: 5746 + components: + - pos: -30.5,12.5 + parent: 1 + type: Transform + - uid: 5752 + components: + - pos: -22.5,20.5 + parent: 1 + type: Transform + - uid: 5793 + components: + - pos: -7.5,23.5 + parent: 1 + type: Transform + - uid: 10373 + components: + - pos: -27.5,49.5 + parent: 1 + type: Transform + - uid: 10400 + components: + - pos: -3.5,41.5 + parent: 1 + type: Transform + - uid: 10407 + components: + - pos: 22.5,29.5 + parent: 1 + type: Transform + - uid: 12909 + components: + - pos: 5.5,8.5 + parent: 1 + type: Transform + - uid: 14319 + components: + - pos: -74.5,46.5 + parent: 1 + type: Transform + - uid: 14325 + components: + - pos: -69.5,51.5 + parent: 1 + type: Transform + - uid: 14596 + components: + - pos: -60.5,19.5 + parent: 1 + type: Transform + - uid: 15073 + components: + - pos: -20.5,17.5 + parent: 1 + type: Transform + - uid: 15561 + components: + - pos: 6.5,-16.5 + parent: 1 + type: Transform + - uid: 15562 + components: + - pos: 9.5,-16.5 + parent: 1 + type: Transform + - uid: 15842 + components: + - pos: -25.5,53.5 + parent: 1 + type: Transform + - uid: 15843 + components: + - pos: -29.5,54.5 + parent: 1 + type: Transform + - uid: 15911 + components: + - pos: -47.5,17.5 + parent: 1 + type: Transform + - uid: 15926 + components: + - pos: 17.5,42.5 + parent: 1 + type: Transform + - uid: 15927 + components: + - pos: 23.5,42.5 + parent: 1 + type: Transform +- proto: MaterialCloth + entities: + - uid: 7577 + components: + - pos: -19.514711,41.515976 + parent: 1 + type: Transform +- proto: MaterialHideBear + entities: + - uid: 14939 + components: + - pos: 4.5405226,-14.581865 + parent: 1 + type: Transform +- proto: MaterialReclaimer + entities: + - uid: 15799 + components: + - pos: -37.5,-12.5 + parent: 1 + type: Transform +- proto: MaterialWoodPlank + entities: + - uid: 15937 + components: + - pos: 19.58975,42.76493 + parent: 1 + type: Transform +- proto: MedkitAdvancedFilled + entities: + - uid: 2319 + components: + - pos: 10.517079,26.601435 + parent: 1 + type: Transform +- proto: MedkitBruteFilled + entities: + - uid: 14852 + components: + - pos: 6.488601,22.996218 + parent: 1 + type: Transform +- proto: MedkitBurnFilled + entities: + - uid: 2317 + components: + - pos: 8.532704,22.570185 + parent: 1 + type: Transform +- proto: MedkitCombatFilled + entities: + - uid: 7518 + components: + - pos: -25.498947,54.62378 + parent: 1 + type: Transform +- proto: MedkitFilled + entities: + - uid: 1989 + components: + - pos: -1.4897182,32.72799 + parent: 1 + type: Transform + - uid: 2313 + components: + - pos: 6.532705,22.632685 + parent: 1 + type: Transform + - uid: 10915 + components: + - pos: -20.50132,63.5821 + parent: 1 + type: Transform +- proto: MedkitOxygenFilled + entities: + - uid: 2315 + components: + - pos: 7.876455,22.58581 + parent: 1 + type: Transform + - uid: 10921 + components: + - pos: -11.50255,62.54268 + parent: 1 + type: Transform +- proto: MedkitRadiationFilled + entities: + - uid: 2314 + components: + - pos: 7.20458,22.58581 + parent: 1 + type: Transform +- proto: MedkitToxinFilled + entities: + - uid: 2316 + components: + - pos: 6.48583,23.46081 + parent: 1 + type: Transform +- proto: MetalDoor + entities: + - uid: 1663 + components: + - pos: 17.5,-10.5 + parent: 1 + type: Transform +- proto: MicroManipulatorStockPart + entities: + - uid: 260 + components: + - pos: -10.438767,-5.4789715 + parent: 1 + type: Transform +- proto: Mirror + entities: + - uid: 4076 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,0.5 + parent: 1 + type: Transform + - uid: 4077 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,1.5 + parent: 1 + type: Transform + - uid: 4078 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,-0.5 + parent: 1 + type: Transform + - uid: 7089 + components: + - pos: -51.5,42.5 + parent: 1 + type: Transform +- proto: MonkeyCubeBox + entities: + - uid: 371 + components: + - pos: 4.52832,-11.326899 + parent: 1 + type: Transform +- proto: MopBucket + entities: + - uid: 5302 + components: + - pos: -54.5,23.5 + parent: 1 + type: Transform + - uid: 7098 + components: + - pos: -51.5,38.5 + parent: 1 + type: Transform +- proto: MopItem + entities: + - uid: 5303 + components: + - pos: -54.5,23.5 + parent: 1 + type: Transform + - uid: 7099 + components: + - pos: -51.5,38.5 + parent: 1 + type: Transform +- proto: Morgue + entities: + - uid: 1063 + components: + - rot: 3.141592653589793 rad + pos: 1.5,14.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1143 + components: + - pos: -0.5,17.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1156 + components: + - rot: 3.141592653589793 rad + pos: 0.5,14.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1157 + components: + - rot: 3.141592653589793 rad + pos: -0.5,14.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1246 + components: + - pos: 0.5,17.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1413 + components: + - pos: 2.5,17.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1614 + components: + - pos: 1.5,17.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1616 + components: + - rot: 3.141592653589793 rad + pos: -1.5,14.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1622 + components: + - rot: 3.141592653589793 rad + pos: 2.5,14.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1829 + components: + - pos: 19.5,2.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: MouseTimedSpawner + entities: + - uid: 14186 + components: + - pos: 9.5,9.5 + parent: 1 + type: Transform + - uid: 14187 + components: + - pos: 7.5,46.5 + parent: 1 + type: Transform + - uid: 14188 + components: + - pos: -44.5,14.5 + parent: 1 + type: Transform + - uid: 14937 + components: + - pos: -74.5,45.5 + parent: 1 + type: Transform + - uid: 15048 + components: + - pos: -66.5,8.5 + parent: 1 + type: Transform +- proto: Multitool + entities: + - uid: 374 + components: + - pos: 2.4814448,-11.369194 + parent: 1 + type: Transform + - uid: 5647 + components: + - pos: -24.502523,29.558752 + parent: 1 + type: Transform +- proto: NitrogenCanister + entities: + - uid: 333 + components: + - pos: -76.5,29.5 + parent: 1 + type: Transform + - uid: 5470 + components: + - pos: -48.5,17.5 + parent: 1 + type: Transform + - uid: 5591 + components: + - pos: -3.5,36.5 + parent: 1 + type: Transform + - uid: 5675 + components: + - pos: -25.5,20.5 + parent: 1 + type: Transform + - uid: 7202 + components: + - pos: -77.5,29.5 + parent: 1 + type: Transform + - uid: 8930 + components: + - pos: 5.5,-4.5 + parent: 1 + type: Transform + - uid: 9468 + components: + - pos: 22.5,24.5 + parent: 1 + type: Transform + - uid: 10094 + components: + - pos: 14.5,42.5 + parent: 1 + type: Transform + - uid: 10099 + components: + - pos: -41.5,54.5 + parent: 1 + type: Transform + - uid: 12894 + components: + - pos: 14.5,14.5 + parent: 1 + type: Transform + - uid: 14334 + components: + - pos: -75.5,41.5 + parent: 1 + type: Transform + - uid: 14578 + components: + - pos: -60.5,17.5 + parent: 1 + type: Transform +- proto: NitrogenTank + entities: + - uid: 14199 + components: + - pos: -77.535675,42.554688 + parent: 1 + type: Transform +- proto: NuclearBomb + entities: + - uid: 10854 + components: + - pos: -23.5,56.5 + parent: 1 + type: Transform +- proto: NuclearBombKeg + entities: + - uid: 6316 + components: + - pos: 10.5,43.5 + parent: 1 + type: Transform +- proto: NukeDiskFake + entities: + - uid: 6318 + components: + - desc: A crude replication of a real nuclear authentication disk. You could tell this thing was fake from a mile away. + name: flimsy nuclear authentication disk + type: MetaData + - pos: 12.55704,43.506477 + parent: 1 + type: Transform +- proto: Ointment + entities: + - uid: 1992 + components: + - pos: 0.44623998,32.749245 + parent: 1 + type: Transform + - uid: 1993 + components: + - pos: -0.053760022,32.561745 + parent: 1 + type: Transform + - uid: 1994 + components: + - pos: -0.67876005,32.63987 + parent: 1 + type: Transform + - uid: 2379 + components: + - pos: 9.117954,33.567314 + parent: 1 + type: Transform + - uid: 2380 + components: + - pos: 9.508579,33.64544 + parent: 1 + type: Transform + - uid: 2381 + components: + - pos: 9.930454,33.52044 + parent: 1 + type: Transform +- proto: OperatingTable + entities: + - uid: 12771 + components: + - pos: 19.5,30.5 + parent: 1 + type: Transform +- proto: OreProcessor + entities: + - uid: 3530 + components: + - pos: -34.5,-1.5 + parent: 1 + type: Transform +- proto: OreProcessorMachineCircuitboard + entities: + - uid: 5553 + components: + - pos: -49.433533,23.561655 + parent: 1 + type: Transform +- proto: OrganHumanBrain + entities: + - uid: 9284 + components: + - pos: 20.599104,32.811195 + parent: 1 + type: Transform +- proto: OrganHumanEyes + entities: + - uid: 9285 + components: + - pos: 19.520979,30.326818 + parent: 1 + type: Transform +- proto: OrganHumanHeart + entities: + - uid: 5800 + components: + - pos: -9.314642,21.506338 + parent: 1 + type: Transform + - uid: 9241 + components: + - pos: 18.986782,28.61476 + parent: 1 + type: Transform +- proto: OrganHumanKidneys + entities: + - uid: 9286 + components: + - pos: 20.630354,32.467445 + parent: 1 + type: Transform +- proto: OrganHumanLiver + entities: + - uid: 9287 + components: + - pos: 20.286604,32.561195 + parent: 1 + type: Transform +- proto: OrganHumanTongue + entities: + - uid: 9283 + components: + - pos: 18.880354,28.451818 + parent: 1 + type: Transform +- proto: OxygenCanister + entities: + - uid: 5656 + components: + - pos: -4.5,36.5 + parent: 1 + type: Transform + - uid: 5670 + components: + - pos: -26.5,20.5 + parent: 1 + type: Transform + - uid: 6069 + components: + - pos: -76.5,30.5 + parent: 1 + type: Transform + - uid: 6071 + components: + - pos: -11.5,46.5 + parent: 1 + type: Transform + - uid: 6968 + components: + - pos: -32.5,57.5 + parent: 1 + type: Transform + - uid: 7193 + components: + - pos: -77.5,30.5 + parent: 1 + type: Transform + - uid: 9266 + components: + - pos: 18.5,-4.5 + parent: 1 + type: Transform + - uid: 9378 + components: + - pos: 22.5,23.5 + parent: 1 + type: Transform + - uid: 10092 + components: + - pos: 14.5,41.5 + parent: 1 + type: Transform + - uid: 10093 + components: + - pos: -48.5,18.5 + parent: 1 + type: Transform + - uid: 10129 + components: + - pos: -40.5,54.5 + parent: 1 + type: Transform + - uid: 12893 + components: + - pos: 14.5,13.5 + parent: 1 + type: Transform + - uid: 14170 + components: + - pos: -77.5,49.5 + parent: 1 + type: Transform + - uid: 14333 + components: + - pos: -75.5,40.5 + parent: 1 + type: Transform + - uid: 14577 + components: + - pos: -60.5,16.5 + parent: 1 + type: Transform + - uid: 15800 + components: + - pos: -49.5,-12.5 + parent: 1 + type: Transform +- proto: PaintingAmogusTriptych + entities: + - uid: 6326 + components: + - pos: 3.5,53.5 + parent: 1 + type: Transform +- proto: PaintingEmpty + entities: + - uid: 6327 + components: + - pos: 2.5,53.5 + parent: 1 + type: Transform +- proto: PaintingSkeletonBoof + entities: + - uid: 6328 + components: + - pos: 4.5,53.5 + parent: 1 + type: Transform +- proto: Paper + entities: + - uid: 304 + components: + - pos: -0.48525378,-4.0916176 + parent: 1 + type: Transform + - uid: 305 + components: + - pos: -0.39150378,-4.0916176 + parent: 1 + type: Transform + - uid: 306 + components: + - pos: -0.32900378,-4.0916176 + parent: 1 + type: Transform + - uid: 307 + components: + - pos: -0.5790038,-4.0916176 + parent: 1 + type: Transform + - uid: 308 + components: + - pos: -0.6571288,-4.0916176 + parent: 1 + type: Transform + - uid: 2402 + components: + - name: hastily scribbled note + type: MetaData + - pos: 10.220547,33.42669 + parent: 1 + type: Transform + - content: > + <100K + + 101.3kPa + + filter co2/n20 + type: Paper + - uid: 4221 + components: + - pos: -42.30462,24.611063 + parent: 1 + type: Transform + - uid: 4222 + components: + - pos: -42.46087,24.611063 + parent: 1 + type: Transform + - uid: 4223 + components: + - pos: -42.58587,24.564188 + parent: 1 + type: Transform + - uid: 4224 + components: + - pos: -42.632744,24.548563 + parent: 1 + type: Transform + - uid: 4225 + components: + - pos: -42.64837,24.517313 + parent: 1 + type: Transform + - uid: 4226 + components: + - pos: -42.476494,24.564188 + parent: 1 + type: Transform + - uid: 4227 + components: + - pos: -42.382744,24.579813 + parent: 1 + type: Transform + - uid: 4228 + components: + - pos: -42.49212,24.579813 + parent: 1 + type: Transform + - uid: 4229 + components: + - pos: -42.67962,24.501688 + parent: 1 + type: Transform + - uid: 7221 + components: + - pos: -3.6578722,0.5394765 + parent: 1 + type: Transform + - uid: 7222 + components: + - pos: -3.5953722,0.5394765 + parent: 1 + type: Transform + - uid: 7223 + components: + - pos: -3.5328722,0.5394765 + parent: 1 + type: Transform + - uid: 7292 + components: + - pos: -60.664387,89.61223 + parent: 1 + type: Transform + - uid: 7297 + components: + - pos: -60.27376,89.67473 + parent: 1 + type: Transform + - uid: 7309 + components: + - pos: -60.601887,89.58098 + parent: 1 + type: Transform + - uid: 7710 + components: + - pos: -60.74251,89.67473 + parent: 1 + type: Transform + - uid: 7726 + components: + - pos: -60.414387,89.61223 + parent: 1 + type: Transform + - uid: 7919 + components: + - pos: -3.4703722,0.5238515 + parent: 1 + type: Transform +- proto: PaperCaptainsThoughts + entities: + - uid: 10908 + components: + - pos: -7.0289607,61.72577 + parent: 1 + type: Transform + - uid: 10909 + components: + - pos: -7.2008357,61.74714 + parent: 1 + type: Transform + - uid: 10910 + components: + - pos: -7.2320857,61.62214 + parent: 1 + type: Transform + - uid: 10911 + components: + - pos: -7.2164607,61.59089 + parent: 1 + type: Transform + - uid: 10912 + components: + - pos: -7.0602107,61.575264 + parent: 1 + type: Transform + - uid: 10913 + components: + - pos: -7.0602107,61.575264 + parent: 1 + type: Transform +- proto: PaperDoor + entities: + - uid: 4710 + components: + - rot: 3.141592653589793 rad + pos: -50.5,11.5 + parent: 1 + type: Transform + - uid: 5459 + components: + - rot: 3.141592653589793 rad + pos: -53.5,10.5 + parent: 1 + type: Transform + - uid: 6255 + components: + - rot: 3.141592653589793 rad + pos: -53.5,8.5 + parent: 1 + type: Transform + - uid: 6668 + components: + - rot: 3.141592653589793 rad + pos: -50.5,7.5 + parent: 1 + type: Transform + - uid: 10445 + components: + - rot: 3.141592653589793 rad + pos: -47.5,11.5 + parent: 1 + type: Transform +- proto: PaperOffice + entities: + - uid: 2321 + components: + - pos: 10.666427,26.233912 + parent: 1 + type: Transform + - uid: 2322 + components: + - pos: 10.338302,26.233912 + parent: 1 + type: Transform + - uid: 2323 + components: + - pos: 10.275802,26.218287 + parent: 1 + type: Transform + - uid: 2324 + components: + - pos: 10.463302,26.218287 + parent: 1 + type: Transform + - uid: 2325 + components: + - pos: 10.494552,26.218287 + parent: 1 + type: Transform + - uid: 2326 + components: + - pos: 8.353927,31.631037 + parent: 1 + type: Transform + - uid: 2327 + components: + - pos: 8.447677,31.584162 + parent: 1 + type: Transform + - uid: 2328 + components: + - pos: 8.494552,31.584162 + parent: 1 + type: Transform + - uid: 2367 + components: + - rot: -1.5707963267948966 rad + pos: 11.600925,18.432741 + parent: 1 + type: Transform + - uid: 2368 + components: + - rot: -1.5707963267948966 rad + pos: 11.42905,18.682741 + parent: 1 + type: Transform + - uid: 2369 + components: + - rot: -1.5707963267948966 rad + pos: 11.382175,18.698366 + parent: 1 + type: Transform + - uid: 2370 + components: + - rot: -1.5707963267948966 rad + pos: 11.67905,18.729616 + parent: 1 + type: Transform + - uid: 2371 + components: + - rot: -1.5707963267948966 rad + pos: 11.507175,18.479616 + parent: 1 + type: Transform + - uid: 3204 + components: + - pos: -26.966206,17.360792 + parent: 1 + type: Transform + - uid: 3205 + components: + - pos: -27.028706,17.329542 + parent: 1 + type: Transform + - uid: 3206 + components: + - pos: -27.091206,17.220167 + parent: 1 + type: Transform + - uid: 3207 + components: + - pos: -26.76308,17.157667 + parent: 1 + type: Transform + - uid: 3208 + components: + - pos: -27.028706,17.188917 + parent: 1 + type: Transform + - uid: 3209 + components: + - pos: -27.16933,17.173292 + parent: 1 + type: Transform + - uid: 3578 + components: + - pos: -70.33955,16.634232 + parent: 1 + type: Transform + - uid: 3751 + components: + - pos: -46.321968,1.8882136 + parent: 1 + type: Transform + - uid: 3752 + components: + - pos: -46.446968,1.7632136 + parent: 1 + type: Transform + - uid: 3753 + components: + - pos: -46.478218,1.6850886 + parent: 1 + type: Transform + - uid: 3754 + components: + - pos: -46.368843,1.5913386 + parent: 1 + type: Transform + - uid: 3755 + components: + - pos: -46.337593,1.5757136 + parent: 1 + type: Transform + - uid: 4259 + components: + - pos: -45.35543,-6.2845764 + parent: 1 + type: Transform + - uid: 4260 + components: + - pos: -45.38668,-6.3470764 + parent: 1 + type: Transform + - uid: 4261 + components: + - pos: -45.38668,-6.3939514 + parent: 1 + type: Transform + - uid: 4262 + components: + - pos: -45.23043,-6.5502014 + parent: 1 + type: Transform + - uid: 4263 + components: + - pos: -45.48043,-6.6127014 + parent: 1 + type: Transform + - uid: 5512 + components: + - pos: -53.91828,-5.305279 + parent: 1 + type: Transform + - uid: 5513 + components: + - pos: -53.808907,-5.305279 + parent: 1 + type: Transform + - uid: 5514 + components: + - pos: -53.715157,-5.320904 + parent: 1 + type: Transform + - uid: 5515 + components: + - pos: -53.621407,-5.320904 + parent: 1 + type: Transform + - uid: 5810 + components: + - pos: -27.736298,13.6788025 + parent: 1 + type: Transform + - uid: 5811 + components: + - pos: -27.689423,13.6631775 + parent: 1 + type: Transform + - uid: 5812 + components: + - pos: -27.564423,13.6006775 + parent: 1 + type: Transform + - uid: 5813 + components: + - pos: -27.376923,13.5069275 + parent: 1 + type: Transform + - uid: 5814 + components: + - pos: -27.267548,13.4913025 + parent: 1 + type: Transform + - uid: 5815 + components: + - pos: -27.455048,13.5850525 + parent: 1 + type: Transform + - uid: 7546 + components: + - pos: -19.594261,47.957428 + parent: 1 + type: Transform + - uid: 7547 + components: + - pos: -19.578636,47.926178 + parent: 1 + type: Transform + - uid: 7548 + components: + - pos: -19.531761,47.894928 + parent: 1 + type: Transform + - uid: 7549 + components: + - pos: -19.500511,47.848053 + parent: 1 + type: Transform + - uid: 7550 + components: + - pos: -19.359886,48.051178 + parent: 1 + type: Transform + - uid: 7551 + components: + - pos: -19.500511,47.785553 + parent: 1 + type: Transform + - uid: 7552 + components: + - pos: -19.516136,47.676178 + parent: 1 + type: Transform + - uid: 7553 + components: + - pos: -19.469261,47.582428 + parent: 1 + type: Transform + - uid: 7578 + components: + - pos: -19.295961,40.5316 + parent: 1 + type: Transform + - uid: 7579 + components: + - pos: -19.639711,40.484726 + parent: 1 + type: Transform + - uid: 7580 + components: + - pos: -19.545961,40.4691 + parent: 1 + type: Transform + - uid: 7581 + components: + - pos: -19.436586,40.37535 + parent: 1 + type: Transform + - uid: 7582 + components: + - pos: -19.420961,40.31285 + parent: 1 + type: Transform + - uid: 7950 + components: + - pos: -47.78143,59.577873 + parent: 1 + type: Transform + - uid: 7951 + components: + - pos: -47.734554,59.577873 + parent: 1 + type: Transform + - uid: 7952 + components: + - pos: -47.71893,59.577873 + parent: 1 + type: Transform + - uid: 7953 + components: + - pos: -47.672054,59.577873 + parent: 1 + type: Transform + - uid: 7985 + components: + - pos: -60.29884,58.597794 + parent: 1 + type: Transform + - uid: 7986 + components: + - pos: -60.314465,58.597794 + parent: 1 + type: Transform + - uid: 7987 + components: + - pos: -60.33009,58.597794 + parent: 1 + type: Transform + - uid: 7990 + components: + - pos: -56.078358,58.626472 + parent: 1 + type: Transform + - uid: 7991 + components: + - pos: -56.172108,58.532722 + parent: 1 + type: Transform + - uid: 7992 + components: + - pos: -56.234608,58.595222 + parent: 1 + type: Transform + - uid: 10936 + components: + - pos: -63.356304,41.570023 + parent: 1 + type: Transform + - uid: 10937 + components: + - pos: -63.40318,41.570023 + parent: 1 + type: Transform + - uid: 10938 + components: + - pos: -63.450054,41.570023 + parent: 1 + type: Transform + - uid: 10939 + components: + - pos: -61.55943,41.601273 + parent: 1 + type: Transform + - uid: 10940 + components: + - pos: -61.512554,41.601273 + parent: 1 + type: Transform + - uid: 10941 + components: + - pos: -61.46568,41.585648 + parent: 1 + type: Transform + - uid: 10946 + components: + - pos: -62.24684,39.585648 + parent: 1 + type: Transform + - uid: 10947 + components: + - pos: -62.30934,39.585648 + parent: 1 + type: Transform + - uid: 10948 + components: + - pos: -62.356216,39.585648 + parent: 1 + type: Transform + - uid: 10949 + components: + - pos: -62.37184,39.585648 + parent: 1 + type: Transform + - uid: 12026 + components: + - pos: -31.597652,-1.4642928 + parent: 1 + type: Transform + - uid: 12027 + components: + - pos: -31.503902,-1.4955428 + parent: 1 + type: Transform + - uid: 12028 + components: + - pos: -31.378902,-1.5892928 + parent: 1 + type: Transform + - uid: 12029 + components: + - pos: -31.5229,-1.5424862 + parent: 1 + type: Transform + - uid: 12030 + components: + - pos: -31.4604,-1.5424862 + parent: 1 + type: Transform + - uid: 12778 + components: + - pos: 15.279422,31.607256 + parent: 1 + type: Transform + - uid: 12779 + components: + - pos: 15.404422,31.59163 + parent: 1 + type: Transform + - uid: 12780 + components: + - pos: 15.576297,31.59163 + parent: 1 + type: Transform + - uid: 12781 + components: + - pos: 15.670047,31.59163 + parent: 1 + type: Transform + - uid: 12796 + components: + - rot: -1.5707963267948966 rad + pos: 4.4957075,16.929403 + parent: 1 + type: Transform + - uid: 12797 + components: + - rot: -1.5707963267948966 rad + pos: 4.4957075,16.710653 + parent: 1 + type: Transform + - uid: 12798 + components: + - rot: -1.5707963267948966 rad + pos: 4.4957075,16.679403 + parent: 1 + type: Transform + - uid: 12799 + components: + - rot: -1.5707963267948966 rad + pos: 4.4800825,16.445028 + parent: 1 + type: Transform + - uid: 12800 + components: + - rot: -1.5707963267948966 rad + pos: 4.4800825,16.320028 + parent: 1 + type: Transform + - uid: 14202 + components: + - pos: -70.4958,16.634232 + parent: 1 + type: Transform + - uid: 14291 + components: + - pos: -70.305115,49.635986 + parent: 1 + type: Transform + - uid: 14292 + components: + - pos: -70.430115,49.635986 + parent: 1 + type: Transform + - uid: 14293 + components: + - pos: -70.492615,49.635986 + parent: 1 + type: Transform + - uid: 14294 + components: + - pos: -70.492615,49.635986 + parent: 1 + type: Transform + - uid: 15793 + components: + - pos: -70.58955,16.634232 + parent: 1 + type: Transform + - uid: 15794 + components: + - pos: -70.69892,16.649857 + parent: 1 + type: Transform +- proto: ParticleAcceleratorComputerCircuitboard + entities: + - uid: 9960 + components: + - pos: -81.535706,22.686981 + parent: 1 + type: Transform +- proto: PartRodMetal + entities: + - uid: 7340 + components: + - pos: -82.48612,29.602036 + parent: 1 + type: Transform + - uid: 7392 + components: + - pos: -82.48612,29.602036 + parent: 1 + type: Transform + - uid: 13607 + components: + - pos: -65.40672,25.564983 + parent: 1 + type: Transform + - uid: 13620 + components: + - pos: -65.40672,25.564983 + parent: 1 + type: Transform + - uid: 15783 + components: + - pos: -43.49778,-9.467924 + parent: 1 + type: Transform + - uid: 15892 + components: + - pos: 8.487601,-20.49545 + parent: 1 + type: Transform + - uid: 15894 + components: + - pos: 8.690726,-20.636074 + parent: 1 + type: Transform +- proto: Pen + entities: + - uid: 7386 + components: + - pos: -3.2828722,0.5082265 + parent: 1 + type: Transform + - uid: 7649 + components: + - rot: -1.5707963267948966 rad + pos: -59.14876,89.51848 + parent: 1 + type: Transform + - uid: 7709 + components: + - rot: -1.5707963267948966 rad + pos: -59.789387,89.70598 + parent: 1 + type: Transform + - uid: 15232 + components: + - pos: 18.717243,48.360695 + parent: 1 + type: Transform +- proto: PenHop + entities: + - uid: 7557 + components: + - pos: -21.314497,46.738678 + parent: 1 + type: Transform +- proto: PersonalAI + entities: + - uid: 8602 + components: + - flags: SessionSpecific + type: MetaData + - pos: -27.47025,16.628725 + parent: 1 + type: Transform + - uid: 8603 + components: + - flags: SessionSpecific + type: MetaData + - pos: -53.50901,17.553663 + parent: 1 + type: Transform + - uid: 15099 + components: + - flags: SessionSpecific + type: MetaData + - pos: -18.48621,65.98919 + parent: 1 + type: Transform +- proto: PhoneInstrument + entities: + - uid: 10544 + components: + - pos: -9.507111,55.584892 + parent: 1 + type: Transform +- proto: PianoInstrument + entities: + - uid: 4137 + components: + - rot: 3.141592653589793 rad + pos: -29.5,27.5 + parent: 1 + type: Transform +- proto: Pickaxe + entities: + - uid: 15278 + components: + - pos: -55.437958,92.56956 + parent: 1 + type: Transform + - uid: 15786 + components: + - pos: -42.607155,-9.499174 + parent: 1 + type: Transform + - uid: 15787 + components: + - pos: -42.37278,-9.467924 + parent: 1 + type: Transform +- proto: PillCanister + entities: + - uid: 1985 + components: + - pos: -3.7625957,27.657993 + parent: 1 + type: Transform + - uid: 1986 + components: + - pos: -3.3094707,27.611118 + parent: 1 + type: Transform + - uid: 1987 + components: + - pos: -3.5125957,27.501743 + parent: 1 + type: Transform +- proto: PinpointerNuclear + entities: + - uid: 10874 + components: + - pos: -21.536793,53.579475 + parent: 1 + type: Transform +- proto: PlantBag + entities: + - uid: 6950 + components: + - pos: -43.550423,47.547256 + parent: 1 + type: Transform +- proto: PlasmaDoor + entities: + - uid: 500 + components: + - pos: 8.5,-15.5 + parent: 1 + type: Transform +- proto: PlasmaReinforcedWindowDirectional + entities: + - uid: 493 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-14.5 + parent: 1 + type: Transform + - uid: 1911 + components: + - pos: 10.5,-14.5 + parent: 1 + type: Transform + - uid: 1914 + components: + - pos: 9.5,-14.5 + parent: 1 + type: Transform + - uid: 1915 + components: + - rot: 3.141592653589793 rad + pos: 10.5,-12.5 + parent: 1 + type: Transform + - uid: 2730 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,57.5 + parent: 1 + type: Transform + - uid: 2787 + components: + - pos: -25.5,57.5 + parent: 1 + type: Transform + - uid: 14821 + components: + - rot: 3.141592653589793 rad + pos: 11.5,-12.5 + parent: 1 + type: Transform + - uid: 14823 + components: + - rot: 3.141592653589793 rad + pos: 9.5,-12.5 + parent: 1 + type: Transform + - uid: 14824 + components: + - pos: 10.5,-13.5 + parent: 1 + type: Transform + - uid: 14825 + components: + - pos: 11.5,-14.5 + parent: 1 + type: Transform + - uid: 14830 + components: + - rot: 3.141592653589793 rad + pos: 8.5,-12.5 + parent: 1 + type: Transform + - uid: 14838 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,-14.5 + parent: 1 + type: Transform + - uid: 14842 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,-13.5 + parent: 1 + type: Transform + - uid: 14844 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,-13.5 + parent: 1 + type: Transform + - uid: 14846 + components: + - pos: 7.5,-14.5 + parent: 1 + type: Transform + - uid: 14847 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,-13.5 + parent: 1 + type: Transform + - uid: 14848 + components: + - rot: 3.141592653589793 rad + pos: 7.5,-13.5 + parent: 1 + type: Transform + - uid: 14849 + components: + - rot: 3.141592653589793 rad + pos: 10.5,-13.5 + parent: 1 + type: Transform + - uid: 14850 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,-12.5 + parent: 1 + type: Transform + - uid: 14851 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-12.5 + parent: 1 + type: Transform + - uid: 14921 + components: + - rot: 3.141592653589793 rad + pos: -25.5,57.5 + parent: 1 + type: Transform + - uid: 14922 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,57.5 + parent: 1 + type: Transform + - uid: 15018 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,-13.5 + parent: 1 + type: Transform +- proto: PlasmaTank + entities: + - uid: 14197 + components: + - pos: -77.7388,42.76258 + parent: 1 + type: Transform +- proto: PlasmaTankFilled + entities: + - uid: 9975 + components: + - pos: -82.50182,22.490105 + parent: 1 + type: Transform +- proto: PlasticFlapsAirtightClear + entities: + - uid: 15 + components: + - pos: -73.5,57.5 + parent: 1 + type: Transform + - uid: 3570 + components: + - pos: -35.5,-14.5 + parent: 1 + type: Transform + - uid: 3670 + components: + - pos: -39.5,-8.5 + parent: 1 + type: Transform + - uid: 4758 + components: + - pos: -35.5,-11.5 + parent: 1 + type: Transform + - uid: 10357 + components: + - pos: -31.5,-14.5 + parent: 1 + type: Transform + - uid: 10358 + components: + - pos: -31.5,-11.5 + parent: 1 + type: Transform +- proto: PlushieLizard + entities: + - uid: 14454 + components: + - pos: -71.541916,8.668143 + parent: 1 + type: Transform +- proto: PlushieNuke + entities: + - uid: 1414 + components: + - pos: 25.470646,41.49849 + parent: 1 + type: Transform +- proto: PlushieSpaceLizard + entities: + - uid: 4709 + components: + - pos: -92.400795,47.3703 + parent: 1 + type: Transform +- proto: PortableGeneratorSuperPacman + entities: + - uid: 6264 + components: + - pos: -3.5,55.5 + parent: 1 + type: Transform +- proto: PortableGeneratorSuperPacmanMachineCircuitboard + entities: + - uid: 1491 + components: + - pos: -49.48023,25.725746 + parent: 1 + type: Transform + - uid: 15959 + components: + - pos: -49.464603,25.631996 + parent: 1 + type: Transform +- proto: PortableScrubber + entities: + - uid: 12379 + components: + - pos: 5.5,-10.5 + parent: 1 + type: Transform + - uid: 15142 + components: + - pos: -77.5,38.5 + parent: 1 + type: Transform + - uid: 15143 + components: + - pos: -77.5,37.5 + parent: 1 + type: Transform + - uid: 15144 + components: + - pos: -77.5,36.5 + parent: 1 + type: Transform +- proto: PortableScrubberMachineCircuitBoard + entities: + - uid: 5554 + components: + - pos: -52.480408,23.530405 + parent: 1 + type: Transform +- proto: PosterContrabandClown + entities: + - uid: 4235 + components: + - pos: -39.5,27.5 + parent: 1 + type: Transform +- proto: PosterContrabandGreyTide + entities: + - uid: 5911 + components: + - pos: -7.5,38.5 + parent: 1 + type: Transform +- proto: PosterContrabandLamarr + entities: + - uid: 319 + components: + - pos: -4.5,1.5 + parent: 1 + type: Transform +- proto: PosterContrabandMissingGloves + entities: + - uid: 10085 + components: + - pos: -24.5,25.5 + parent: 1 + type: Transform +- proto: PosterContrabandWehWatches + entities: + - uid: 10419 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,9.5 + parent: 1 + type: Transform +- proto: PosterLegit50thAnniversaryVintageReprint + entities: + - uid: 10080 + components: + - pos: -12.5,-0.5 + parent: 1 + type: Transform +- proto: PosterLegitHereForYourSafety + entities: + - uid: 10060 + components: + - pos: -18.5,28.5 + parent: 1 + type: Transform +- proto: PosterLegitJustAWeekAway + entities: + - uid: 10089 + components: + - pos: -49.5,16.5 + parent: 1 + type: Transform +- proto: PosterLegitLoveIan + entities: + - uid: 10086 + components: + - pos: -23.5,39.5 + parent: 1 + type: Transform + - uid: 10087 + components: + - pos: -18.5,40.5 + parent: 1 + type: Transform +- proto: PosterLegitPDAAd + entities: + - uid: 4550 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,36.5 + parent: 1 + type: Transform +- proto: PosterLegitScience + entities: + - uid: 10081 + components: + - pos: -12.5,-9.5 + parent: 1 + type: Transform +- proto: PosterMapPacked + entities: + - uid: 6314 + components: + - pos: 7.5,53.5 + parent: 1 + type: Transform +- proto: PottedPlant1 + entities: + - uid: 4556 + components: + - pos: 23.5,37.5 + parent: 1 + type: Transform +- proto: PottedPlant27 + entities: + - uid: 71 + components: + - pos: 12.5,25.5 + parent: 1 + type: Transform + - uid: 80 + components: + - pos: 12.5,26.5 + parent: 1 + type: Transform +- proto: PottedPlantRandom + entities: + - uid: 277 + components: + - pos: -13.5,-5.5 + parent: 1 + type: Transform + - uid: 278 + components: + - pos: -0.5,-2.5 + parent: 1 + type: Transform + - uid: 297 + components: + - pos: -7.5,-2.5 + parent: 1 + type: Transform + - uid: 918 + components: + - pos: 26.5,-0.5 + parent: 1 + type: Transform + - uid: 1520 + components: + - pos: -15.5,-1.5 + parent: 1 + type: Transform + - uid: 1522 + components: + - pos: -15.5,-5.5 + parent: 1 + type: Transform + - uid: 1594 + components: + - pos: 13.5,-10.5 + parent: 1 + type: Transform + - uid: 2103 + components: + - pos: -4.5,29.5 + parent: 1 + type: Transform + - uid: 2664 + components: + - pos: -6.5,34.5 + parent: 1 + type: Transform + - uid: 3735 + components: + - pos: -43.5,-4.5 + parent: 1 + type: Transform + - uid: 3736 + components: + - pos: -36.5,-1.5 + parent: 1 + type: Transform + - uid: 3737 + components: + - pos: -34.5,2.5 + parent: 1 + type: Transform + - uid: 5265 + components: + - pos: -55.5,12.5 + parent: 1 + type: Transform + - uid: 5362 + components: + - pos: -50.5,-7.5 + parent: 1 + type: Transform + - uid: 5363 + components: + - pos: -50.5,-2.5 + parent: 1 + type: Transform + - uid: 7461 + components: + - pos: -52.5,90.5 + parent: 1 + type: Transform + - uid: 7465 + components: + - pos: -50.5,90.5 + parent: 1 + type: Transform + - uid: 7558 + components: + - pos: -19.5,44.5 + parent: 1 + type: Transform + - uid: 9771 + components: + - pos: -37.5,33.5 + parent: 1 + type: Transform + - uid: 10063 + components: + - pos: -39.5,39.5 + parent: 1 + type: Transform + - uid: 11056 + components: + - pos: -71.5,15.5 + parent: 1 + type: Transform + - uid: 11057 + components: + - pos: -69.5,31.5 + parent: 1 + type: Transform + - uid: 12735 + components: + - pos: -4.5,34.5 + parent: 1 + type: Transform + - uid: 12955 + components: + - pos: 4.5,21.5 + parent: 1 + type: Transform + - uid: 12956 + components: + - pos: 2.5,34.5 + parent: 1 + type: Transform + - uid: 12957 + components: + - pos: 4.5,34.5 + parent: 1 + type: Transform + - uid: 12958 + components: + - pos: 12.5,33.5 + parent: 1 + type: Transform + - uid: 12959 + components: + - pos: -0.5,40.5 + parent: 1 + type: Transform + - uid: 13081 + components: + - pos: -0.5,36.5 + parent: 1 + type: Transform + - uid: 13087 + components: + - pos: -2.5,8.5 + parent: 1 + type: Transform + - uid: 13088 + components: + - pos: 1.5,10.5 + parent: 1 + type: Transform + - uid: 14881 + components: + - pos: -9.5,30.5 + parent: 1 + type: Transform +- proto: PottedPlantRandomPlastic + entities: + - uid: 6835 + components: + - pos: -37.5,51.5 + parent: 1 + type: Transform + - uid: 6836 + components: + - pos: -36.5,51.5 + parent: 1 + type: Transform + - uid: 6837 + components: + - pos: -35.5,51.5 + parent: 1 + type: Transform + - uid: 6838 + components: + - pos: -34.5,51.5 + parent: 1 + type: Transform + - uid: 6839 + components: + - pos: -34.5,50.5 + parent: 1 + type: Transform + - uid: 6840 + components: + - pos: -35.5,50.5 + parent: 1 + type: Transform + - uid: 6841 + components: + - pos: -36.5,50.5 + parent: 1 + type: Transform + - uid: 6842 + components: + - pos: -37.5,50.5 + parent: 1 + type: Transform + - uid: 6843 + components: + - pos: -36.5,49.5 + parent: 1 + type: Transform + - uid: 6844 + components: + - pos: -35.5,49.5 + parent: 1 + type: Transform + - uid: 13082 + components: + - pos: 6.5,15.5 + parent: 1 + type: Transform +- proto: PottedPlantRD + entities: + - uid: 276 + components: + - pos: -10.5,-1.5 + parent: 1 + type: Transform +- proto: PowerCellMedium + entities: + - uid: 15789 + components: + - pos: -37.797993,-9.327299 + parent: 1 + type: Transform + - uid: 15790 + components: + - pos: -37.454243,-9.483549 + parent: 1 + type: Transform +- proto: PowerCellMicroreactor + entities: + - uid: 15037 + components: + - flags: InContainer + type: MetaData + - parent: 621 + type: Transform + - canCollide: False + type: Physics +- proto: PowerCellRecharger + entities: + - uid: 314 + components: + - pos: 2.5,-2.5 + parent: 1 + type: Transform + - uid: 2253 + components: + - pos: -1.5,34.5 + parent: 1 + type: Transform + - uid: 2254 + components: + - pos: -21.5,59.5 + parent: 1 + type: Transform + - uid: 2255 + components: + - pos: -33.5,38.5 + parent: 1 + type: Transform + - uid: 3958 + components: + - pos: 10.5,24.5 + parent: 1 + type: Transform + - uid: 7189 + components: + - pos: -37.5,-13.5 + parent: 1 + type: Transform + - uid: 7946 + components: + - pos: -56.5,64.5 + parent: 1 + type: Transform + - uid: 13337 + components: + - pos: -2.5,10.5 + parent: 1 + type: Transform + - uid: 13339 + components: + - pos: -39.5,0.5 + parent: 1 + type: Transform + - uid: 13340 + components: + - pos: -31.5,-2.5 + parent: 1 + type: Transform + - uid: 13341 + components: + - pos: -24.5,8.5 + parent: 1 + type: Transform + - uid: 13343 + components: + - pos: -52.5,17.5 + parent: 1 + type: Transform + - uid: 15972 + components: + - pos: -10.5,8.5 + parent: 1 + type: Transform +- proto: Poweredlight + entities: + - uid: 381 + components: + - rot: 3.141592653589793 rad + pos: -12.5,-8.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 382 + components: + - rot: 3.141592653589793 rad + pos: -10.5,-5.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 383 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,0.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 384 + components: + - rot: 1.5707963267948966 rad + pos: -13.5,1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 385 + components: + - rot: 3.141592653589793 rad + pos: -3.5,-5.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 386 + components: + - rot: 1.5707963267948966 rad + pos: -3.5,1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 387 + components: + - rot: -1.5707963267948966 rad + pos: 2.5,0.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 1020 + components: + - pos: 26.5,28.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 1533 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,-3.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 1838 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,0.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 1839 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,0.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 1840 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,0.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 1841 + components: + - rot: -1.5707963267948966 rad + pos: 20.5,0.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 1842 + components: + - pos: 7.5,-1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 1843 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2009 + components: + - rot: 1.5707963267948966 rad + pos: -0.5,38.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2012 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,22.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2015 + components: + - rot: 3.141592653589793 rad + pos: 11.5,33.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2018 + components: + - pos: 7.5,37.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2073 + components: + - pos: 6.5,20.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2074 + components: + - pos: 8.5,26.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2075 + components: + - rot: 3.141592653589793 rad + pos: -0.5,14.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2076 + components: + - pos: 2.5,17.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2077 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,17.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2078 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,14.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2079 + components: + - rot: 3.141592653589793 rad + pos: 11.5,11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2408 + components: + - rot: 3.141592653589793 rad + pos: -2.5,19.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2409 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2410 + components: + - rot: -1.5707963267948966 rad + pos: 0.5,27.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2432 + components: + - rot: 3.141592653589793 rad + pos: -3.5,29.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2433 + components: + - pos: -0.5,34.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2754 + components: + - rot: 3.141592653589793 rad + pos: -9.5,4.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2756 + components: + - rot: 3.141592653589793 rad + pos: 3.5,4.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2757 + components: + - pos: 13.5,6.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2758 + components: + - rot: 3.141592653589793 rad + pos: 21.5,4.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2759 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,9.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2760 + components: + - rot: -1.5707963267948966 rad + pos: 28.5,17.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2809 + components: + - rot: 3.141592653589793 rad + pos: -18.5,3.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2811 + components: + - pos: -12.5,33.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2812 + components: + - rot: 3.141592653589793 rad + pos: -8.5,27.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2971 + components: + - rot: 3.141592653589793 rad + pos: 27.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3210 + components: + - rot: 3.141592653589793 rad + pos: -27.5,4.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3407 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,10.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3409 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,9.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3410 + components: + - rot: 3.141592653589793 rad + pos: -27.5,15.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3411 + components: + - pos: -24.5,18.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3486 + components: + - rot: 3.141592653589793 rad + pos: -24.5,-13.5 + parent: 1 + type: Transform + - uid: 3696 + components: + - rot: 3.141592653589793 rad + pos: -41.5,-7.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3767 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3768 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,2.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3769 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,-3.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3771 + components: + - pos: -43.5,-1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3772 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3773 + components: + - rot: 3.141592653589793 rad + pos: -44.5,-7.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3833 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,-12.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3871 + components: + - rot: 3.141592653589793 rad + pos: -45.5,4.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4242 + components: + - rot: 3.141592653589793 rad + pos: -24.5,26.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4243 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,26.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4244 + components: + - pos: -34.5,29.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4245 + components: + - rot: 3.141592653589793 rad + pos: -31.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4246 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,25.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4247 + components: + - rot: 3.141592653589793 rad + pos: -33.5,15.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4248 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,21.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4249 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,19.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4250 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,13.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4252 + components: + - rot: 3.141592653589793 rad + pos: -29.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4743 + components: + - rot: -1.5707963267948966 rad + pos: -79.5,-11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4769 + components: + - rot: 3.141592653589793 rad + pos: -63.5,-11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4770 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,-11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4905 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,-14.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4906 + components: + - rot: -1.5707963267948966 rad + pos: -64.5,-14.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4980 + components: + - rot: -1.5707963267948966 rad + pos: -79.5,-9.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4983 + components: + - pos: -74.5,-9.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5191 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,-2.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5192 + components: + - rot: 3.141592653589793 rad + pos: -74.5,4.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5193 + components: + - pos: -67.5,6.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5194 + components: + - rot: 3.141592653589793 rad + pos: -59.5,4.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5196 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5197 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,14.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5198 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,19.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5200 + components: + - rot: 3.141592653589793 rad + pos: -54.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5201 + components: + - rot: 3.141592653589793 rad + pos: -43.5,30.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5202 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,28.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5203 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,28.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5204 + components: + - pos: -51.5,25.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5337 + components: + - rot: 3.141592653589793 rad + pos: -54.5,4.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8582 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,63.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8584 + components: + - pos: -47.5,65.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8585 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,62.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8586 + components: + - rot: 3.141592653589793 rad + pos: -60.5,60.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8587 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,64.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8588 + components: + - rot: -1.5707963267948966 rad + pos: -58.5,64.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8589 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,59.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8590 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,53.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8591 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,57.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8592 + components: + - rot: 3.141592653589793 rad + pos: -55.5,53.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8593 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,58.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8594 + components: + - rot: 3.141592653589793 rad + pos: -60.5,63.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8595 + components: + - pos: -62.5,55.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8596 + components: + - rot: 3.141592653589793 rad + pos: -61.5,50.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9260 + components: + - rot: 3.141592653589793 rad + pos: -50.5,46.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9377 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,38.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9543 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,38.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9544 + components: + - pos: -11.5,44.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9545 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,38.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9546 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,49.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9547 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,48.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9548 + components: + - rot: 1.5707963267948966 rad + pos: -22.5,46.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9549 + components: + - rot: 1.5707963267948966 rad + pos: -22.5,39.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9555 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,42.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9556 + components: + - pos: -33.5,47.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9557 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,46.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9587 + components: + - rot: 1.5707963267948966 rad + pos: -23.5,54.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9588 + components: + - pos: -12.5,57.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9589 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,55.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9590 + components: + - rot: 3.141592653589793 rad + pos: -6.5,54.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9591 + components: + - rot: 3.141592653589793 rad + pos: -8.5,59.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9593 + components: + - rot: 3.141592653589793 rad + pos: -12.5,59.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9594 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,63.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9595 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,63.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9596 + components: + - rot: 3.141592653589793 rad + pos: -20.5,59.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 11013 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,40.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 11014 + components: + - pos: -61.5,45.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 12774 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,30.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 13323 + components: + - pos: -0.5,10.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 13699 + components: + - rot: 3.141592653589793 rad + pos: -42.5,41.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 13700 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,47.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 13701 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,51.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 13765 + components: + - rot: 3.141592653589793 rad + pos: -24.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 13844 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,-8.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 13850 + components: + - pos: 30.5,10.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 13851 + components: + - rot: 3.141592653589793 rad + pos: 30.5,16.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 13853 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,-2.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14210 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,-11.5 + parent: 1 + type: Transform + - uid: 14466 + components: + - rot: 3.141592653589793 rad + pos: -83.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14471 + components: + - pos: -79.5,27.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14473 + components: + - rot: -1.5707963267948966 rad + pos: -73.5,25.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14474 + components: + - rot: 3.141592653589793 rad + pos: -71.5,19.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14475 + components: + - rot: 3.141592653589793 rad + pos: -63.5,19.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14476 + components: + - pos: -67.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14477 + components: + - rot: 3.141592653589793 rad + pos: -71.5,15.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14478 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14479 + components: + - pos: -69.5,35.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14480 + components: + - rot: -1.5707963267948966 rad + pos: -63.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14481 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,27.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14482 + components: + - rot: 1.5707963267948966 rad + pos: -61.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14483 + components: + - rot: -1.5707963267948966 rad + pos: -76.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14484 + components: + - rot: 1.5707963267948966 rad + pos: -82.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14485 + components: + - rot: -1.5707963267948966 rad + pos: -77.5,38.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14486 + components: + - rot: -1.5707963267948966 rad + pos: -77.5,44.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14487 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,46.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14488 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,42.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14489 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,38.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14490 + components: + - rot: 1.5707963267948966 rad + pos: -86.5,34.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14491 + components: + - rot: 1.5707963267948966 rad + pos: -90.5,35.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14492 + components: + - rot: 1.5707963267948966 rad + pos: -90.5,37.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14493 + components: + - rot: 1.5707963267948966 rad + pos: -90.5,39.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14494 + components: + - rot: 1.5707963267948966 rad + pos: -90.5,41.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14495 + components: + - rot: 1.5707963267948966 rad + pos: -90.5,43.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14496 + components: + - rot: 1.5707963267948966 rad + pos: -90.5,45.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14497 + components: + - pos: -83.5,50.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14498 + components: + - pos: -81.5,50.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14855 + components: + - pos: 7.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14856 + components: + - pos: 11.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14857 + components: + - pos: 9.5,31.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- proto: PoweredlightEmpty + entities: + - uid: 302 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,34.5 + parent: 1 + type: Transform + - uid: 340 + components: + - rot: 3.141592653589793 rad + pos: 5.5,28.5 + parent: 1 + type: Transform + - uid: 516 + components: + - pos: -35.5,7.5 + parent: 1 + type: Transform + - uid: 517 + components: + - rot: 1.5707963267948966 rad + pos: -58.5,40.5 + parent: 1 + type: Transform +- proto: PoweredLightPostSmall + entities: + - uid: 15563 + components: + - pos: -1.5,-19.5 + parent: 1 + type: Transform + - uid: 15564 + components: + - pos: 7.5,-21.5 + parent: 1 + type: Transform + - uid: 15565 + components: + - pos: 13.5,-18.5 + parent: 1 + type: Transform +- proto: PoweredlightSodium + entities: + - uid: 3469 + components: + - pos: -50.5,-15.5 + parent: 1 + type: Transform + - uid: 4596 + components: + - pos: 20.5,43.5 + parent: 1 + type: Transform + - uid: 15427 + components: + - pos: -41.5,58.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 15428 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,63.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 15429 + components: + - rot: 3.141592653589793 rad + pos: -42.5,68.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- proto: PoweredSmallLight + entities: + - uid: 10 + components: + - pos: -48.5,10.5 + parent: 1 + type: Transform + - uid: 282 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,-12.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 377 + components: + - pos: 3.5,-8.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 378 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,-14.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 379 + components: + - rot: -1.5707963267948966 rad + pos: -1.5,-9.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 380 + components: + - rot: 3.141592653589793 rad + pos: -8.5,-12.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 473 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,37.5 + parent: 1 + type: Transform + - uid: 509 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,38.5 + parent: 1 + type: Transform + - uid: 526 + components: + - pos: -41.5,39.5 + parent: 1 + type: Transform + - uid: 1656 + components: + - rot: 3.141592653589793 rad + pos: 18.5,-8.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 1657 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,-9.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2237 + components: + - rot: -1.5707963267948966 rad + pos: 20.5,18.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2238 + components: + - pos: 20.5,23.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2249 + components: + - rot: -1.5707963267948966 rad + pos: 4.5,10.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2512 + components: + - rot: 1.5707963267948966 rad + pos: 16.5,11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2513 + components: + - pos: 22.5,9.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2753 + components: + - rot: 1.5707963267948966 rad + pos: 25.5,2.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2762 + components: + - rot: 1.5707963267948966 rad + pos: 22.5,15.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2781 + components: + - pos: -8.5,9.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2782 + components: + - pos: -8.5,15.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2792 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,14.5 + parent: 1 + type: Transform + - uid: 2852 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,28.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 2883 + components: + - pos: -16.5,10.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 3317 + components: + - rot: 3.141592653589793 rad + pos: -16.5,22.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 4075 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,0.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5328 + components: + - pos: -41.5,11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5329 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,14.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5335 + components: + - pos: -52.5,-4.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 5336 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,-1.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 6307 + components: + - rot: -1.5707963267948966 rad + pos: 0.5,51.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 6308 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,51.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7101 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,36.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7102 + components: + - rot: 3.141592653589793 rad + pos: -51.5,40.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7713 + components: + - rot: 3.141592653589793 rad + pos: -55.5,88.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7714 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,86.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7730 + components: + - pos: -55.5,84.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7731 + components: + - pos: -61.5,89.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7732 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,84.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7733 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,89.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7741 + components: + - rot: 3.141592653589793 rad + pos: -62.5,83.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 7742 + components: + - rot: -1.5707963267948966 rad + pos: -57.5,85.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8353 + components: + - pos: -51.5,68.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8583 + components: + - rot: 3.141592653589793 rad + pos: -51.5,79.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8597 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,50.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8598 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,50.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8599 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,50.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8600 + components: + - rot: 3.141592653589793 rad + pos: -60.5,57.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 8971 + components: + - rot: 3.141592653589793 rad + pos: -79.5,18.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9257 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,42.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9592 + components: + - pos: -4.5,56.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9600 + components: + - rot: -1.5707963267948966 rad + pos: -24.5,43.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9601 + components: + - rot: 3.141592653589793 rad + pos: -28.5,40.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 9602 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,50.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 10253 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,26.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 10254 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,12.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 10978 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,40.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 10979 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,44.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 10980 + components: + - rot: 3.141592653589793 rad + pos: -70.5,47.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 12775 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,30.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14003 + components: + - rot: -1.5707963267948966 rad + pos: -75.5,55.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14007 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,54.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14009 + components: + - rot: -1.5707963267948966 rad + pos: -69.5,11.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14468 + components: + - rot: -1.5707963267948966 rad + pos: -84.5,30.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 14472 + components: + - rot: -1.5707963267948966 rad + pos: -84.5,20.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 15038 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,-14.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 15224 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,22.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver + - uid: 15226 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,28.5 + parent: 1 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- proto: PoweredSmallLightEmpty + entities: + - uid: 4595 + components: + - rot: 3.141592653589793 rad + pos: 21.5,37.5 + parent: 1 + type: Transform +- proto: Protolathe + entities: + - uid: 254 + components: + - pos: -5.5,1.5 + parent: 1 + type: Transform +- proto: PuddleVomit + entities: + - uid: 79 + components: + - pos: -17.5,44.5 + parent: 1 + type: Transform + - uid: 7010 + components: + - pos: 2.5,6.5 + parent: 1 + type: Transform + - uid: 7126 + components: + - pos: 2.5,5.5 + parent: 1 + type: Transform + - uid: 7127 + components: + - pos: 1.5,5.5 + parent: 1 + type: Transform + - uid: 7128 + components: + - pos: 1.5,6.5 + parent: 1 + type: Transform + - uid: 7129 + components: + - pos: 0.5,6.5 + parent: 1 + type: Transform + - uid: 7130 + components: + - pos: -8.5,-0.5 + parent: 1 + type: Transform + - uid: 7131 + components: + - pos: -8.5,0.5 + parent: 1 + type: Transform + - uid: 7187 + components: + - pos: -9.5,0.5 + parent: 1 + type: Transform + - uid: 7228 + components: + - pos: -9.5,1.5 + parent: 1 + type: Transform + - uid: 7241 + components: + - pos: -8.5,1.5 + parent: 1 + type: Transform + - uid: 7341 + components: + - pos: -27.5,5.5 + parent: 1 + type: Transform + - uid: 7342 + components: + - pos: -28.5,5.5 + parent: 1 + type: Transform + - uid: 7395 + components: + - pos: -28.5,6.5 + parent: 1 + type: Transform + - uid: 7396 + components: + - pos: -29.5,6.5 + parent: 1 + type: Transform + - uid: 7400 + components: + - pos: -29.5,5.5 + parent: 1 + type: Transform +- proto: Rack + entities: + - uid: 7 + components: + - pos: -46.5,8.5 + parent: 1 + type: Transform + - uid: 8 + components: + - pos: -46.5,10.5 + parent: 1 + type: Transform + - uid: 11 + components: + - pos: -46.5,9.5 + parent: 1 + type: Transform + - uid: 1447 + components: + - pos: -17.5,10.5 + parent: 1 + type: Transform + - uid: 1466 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,9.5 + parent: 1 + type: Transform + - uid: 1832 + components: + - pos: 20.5,-2.5 + parent: 1 + type: Transform + - uid: 1876 + components: + - pos: -2.5,-9.5 + parent: 1 + type: Transform + - uid: 2071 + components: + - pos: -3.5,15.5 + parent: 1 + type: Transform + - uid: 2796 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,8.5 + parent: 1 + type: Transform + - uid: 2934 + components: + - rot: 3.141592653589793 rad + pos: -18.5,16.5 + parent: 1 + type: Transform + - uid: 2950 + components: + - pos: 27.5,-4.5 + parent: 1 + type: Transform + - uid: 3168 + components: + - pos: -23.5,55.5 + parent: 1 + type: Transform + - uid: 3511 + components: + - pos: -19.5,-13.5 + parent: 1 + type: Transform + - uid: 3512 + components: + - pos: -19.5,-14.5 + parent: 1 + type: Transform + - uid: 3656 + components: + - pos: -33.5,-1.5 + parent: 1 + type: Transform + - uid: 4334 + components: + - pos: -40.5,18.5 + parent: 1 + type: Transform + - uid: 4335 + components: + - pos: -40.5,17.5 + parent: 1 + type: Transform + - uid: 4336 + components: + - pos: -45.5,17.5 + parent: 1 + type: Transform + - uid: 4337 + components: + - pos: -47.5,17.5 + parent: 1 + type: Transform + - uid: 5290 + components: + - pos: -54.5,27.5 + parent: 1 + type: Transform + - uid: 5291 + components: + - pos: -53.5,27.5 + parent: 1 + type: Transform + - uid: 5292 + components: + - pos: -52.5,27.5 + parent: 1 + type: Transform + - uid: 5293 + components: + - pos: -52.5,25.5 + parent: 1 + type: Transform + - uid: 5294 + components: + - pos: -52.5,24.5 + parent: 1 + type: Transform + - uid: 5295 + components: + - pos: -52.5,23.5 + parent: 1 + type: Transform + - uid: 5296 + components: + - pos: -49.5,25.5 + parent: 1 + type: Transform + - uid: 5297 + components: + - pos: -49.5,24.5 + parent: 1 + type: Transform + - uid: 5298 + components: + - pos: -49.5,23.5 + parent: 1 + type: Transform + - uid: 5304 + components: + - pos: -54.5,25.5 + parent: 1 + type: Transform + - uid: 5426 + components: + - pos: -19.5,0.5 + parent: 1 + type: Transform + - uid: 5427 + components: + - pos: -18.5,-7.5 + parent: 1 + type: Transform + - uid: 5429 + components: + - pos: -27.5,-4.5 + parent: 1 + type: Transform + - uid: 5442 + components: + - pos: -6.5,-13.5 + parent: 1 + type: Transform + - uid: 5446 + components: + - pos: -17.5,-7.5 + parent: 1 + type: Transform + - uid: 5500 + components: + - pos: -51.5,2.5 + parent: 1 + type: Transform + - uid: 5519 + components: + - pos: -47.5,-8.5 + parent: 1 + type: Transform + - uid: 5599 + components: + - pos: -43.5,13.5 + parent: 1 + type: Transform + - uid: 5600 + components: + - pos: -40.5,13.5 + parent: 1 + type: Transform + - uid: 5625 + components: + - pos: -45.5,23.5 + parent: 1 + type: Transform + - uid: 5638 + components: + - pos: -23.5,26.5 + parent: 1 + type: Transform + - uid: 5727 + components: + - pos: -20.5,29.5 + parent: 1 + type: Transform + - uid: 5728 + components: + - pos: -20.5,13.5 + parent: 1 + type: Transform + - uid: 6068 + components: + - pos: -13.5,46.5 + parent: 1 + type: Transform + - uid: 6082 + components: + - pos: -12.5,46.5 + parent: 1 + type: Transform + - uid: 6317 + components: + - pos: 12.5,43.5 + parent: 1 + type: Transform + - uid: 7519 + components: + - pos: -29.5,55.5 + parent: 1 + type: Transform + - uid: 7573 + components: + - pos: -19.5,41.5 + parent: 1 + type: Transform + - uid: 7717 + components: + - pos: -60.5,83.5 + parent: 1 + type: Transform + - uid: 9104 + components: + - rot: 3.141592653589793 rad + pos: -72.5,45.5 + parent: 1 + type: Transform + - uid: 9295 + components: + - rot: 1.5707963267948966 rad + pos: -82.5,22.5 + parent: 1 + type: Transform + - uid: 9734 + components: + - pos: -27.5,35.5 + parent: 1 + type: Transform + - uid: 10372 + components: + - pos: -27.5,49.5 + parent: 1 + type: Transform + - uid: 10383 + components: + - pos: -8.5,46.5 + parent: 1 + type: Transform + - uid: 10389 + components: + - pos: -1.5,45.5 + parent: 1 + type: Transform + - uid: 10391 + components: + - pos: 6.5,48.5 + parent: 1 + type: Transform + - uid: 10405 + components: + - pos: 22.5,27.5 + parent: 1 + type: Transform + - uid: 10462 + components: + - pos: -27.5,40.5 + parent: 1 + type: Transform + - uid: 10862 + components: + - pos: -22.5,57.5 + parent: 1 + type: Transform + - uid: 10863 + components: + - pos: -21.5,57.5 + parent: 1 + type: Transform + - uid: 10864 + components: + - pos: -20.5,57.5 + parent: 1 + type: Transform + - uid: 10952 + components: + - rot: 3.141592653589793 rad + pos: -71.5,45.5 + parent: 1 + type: Transform + - uid: 12904 + components: + - pos: 13.5,8.5 + parent: 1 + type: Transform + - uid: 13085 + components: + - pos: -0.5,10.5 + parent: 1 + type: Transform + - uid: 13671 + components: + - pos: -53.5,44.5 + parent: 1 + type: Transform + - uid: 13673 + components: + - pos: -50.5,41.5 + parent: 1 + type: Transform + - uid: 13803 + components: + - pos: -17.5,26.5 + parent: 1 + type: Transform + - uid: 13929 + components: + - rot: 1.5707963267948966 rad + pos: -77.5,42.5 + parent: 1 + type: Transform + - uid: 14316 + components: + - rot: 3.141592653589793 rad + pos: -61.5,35.5 + parent: 1 + type: Transform + - uid: 14585 + components: + - rot: -1.5707963267948966 rad + pos: -61.5,26.5 + parent: 1 + type: Transform + - uid: 14591 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,13.5 + parent: 1 + type: Transform + - uid: 14919 + components: + - pos: -17.5,14.5 + parent: 1 + type: Transform + - uid: 15650 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,-9.5 + parent: 1 + type: Transform + - uid: 15651 + components: + - rot: 1.5707963267948966 rad + pos: -43.5,-9.5 + parent: 1 + type: Transform + - uid: 15981 + components: + - pos: -17.5,8.5 + parent: 1 + type: Transform +- proto: RadiationCollector + entities: + - uid: 10498 + components: + - pos: -100.5,32.5 + parent: 1 + type: Transform + - uid: 10575 + components: + - pos: -99.5,32.5 + parent: 1 + type: Transform + - uid: 10599 + components: + - pos: -96.5,18.5 + parent: 1 + type: Transform + - uid: 10600 + components: + - pos: -98.5,32.5 + parent: 1 + type: Transform + - uid: 10601 + components: + - pos: -96.5,32.5 + parent: 1 + type: Transform + - uid: 10602 + components: + - pos: -95.5,32.5 + parent: 1 + type: Transform + - uid: 10603 + components: + - pos: -94.5,32.5 + parent: 1 + type: Transform + - uid: 10604 + components: + - pos: -95.5,18.5 + parent: 1 + type: Transform + - uid: 10605 + components: + - pos: -94.5,18.5 + parent: 1 + type: Transform + - uid: 10606 + components: + - pos: -98.5,18.5 + parent: 1 + type: Transform + - uid: 10607 + components: + - pos: -99.5,18.5 + parent: 1 + type: Transform + - uid: 10608 + components: + - pos: -100.5,18.5 + parent: 1 + type: Transform +- proto: RadioHandheld + entities: + - uid: 15945 + components: + - pos: 20.868422,-8.021761 + parent: 1 + type: Transform + - uid: 15946 + components: + - pos: 20.649672,-8.146761 + parent: 1 + type: Transform +- proto: Railing + entities: + - uid: 1056 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,25.5 + parent: 1 + type: Transform + - uid: 1172 + components: + - pos: 22.5,31.5 + parent: 1 + type: Transform + - uid: 1265 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,27.5 + parent: 1 + type: Transform + - uid: 1266 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,28.5 + parent: 1 + type: Transform + - uid: 1615 + components: + - rot: 3.141592653589793 rad + pos: 22.5,22.5 + parent: 1 + type: Transform + - uid: 2632 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,29.5 + parent: 1 + type: Transform + - uid: 2634 + components: + - rot: 3.141592653589793 rad + pos: -9.5,30.5 + parent: 1 + type: Transform + - uid: 2635 + components: + - rot: 3.141592653589793 rad + pos: -6.5,30.5 + parent: 1 + type: Transform + - uid: 3129 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,28.5 + parent: 1 + type: Transform + - uid: 3130 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,26.5 + parent: 1 + type: Transform + - uid: 3413 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,27.5 + parent: 1 + type: Transform + - uid: 3414 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,25.5 + parent: 1 + type: Transform + - uid: 3415 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,24.5 + parent: 1 + type: Transform + - uid: 3416 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,23.5 + parent: 1 + type: Transform + - uid: 5260 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,16.5 + parent: 1 + type: Transform + - uid: 5261 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,12.5 + parent: 1 + type: Transform + - uid: 7045 + components: + - rot: 3.141592653589793 rad + pos: -50.5,37.5 + parent: 1 + type: Transform + - uid: 10128 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,54.5 + parent: 1 + type: Transform + - uid: 10395 + components: + - pos: 6.5,44.5 + parent: 1 + type: Transform + - uid: 10396 + components: + - rot: 3.141592653589793 rad + pos: 6.5,41.5 + parent: 1 + type: Transform + - uid: 10398 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,54.5 + parent: 1 + type: Transform + - uid: 10961 + components: + - pos: -72.5,43.5 + parent: 1 + type: Transform + - uid: 10962 + components: + - pos: -71.5,43.5 + parent: 1 + type: Transform + - uid: 10963 + components: + - pos: -70.5,43.5 + parent: 1 + type: Transform + - uid: 12896 + components: + - pos: 14.5,16.5 + parent: 1 + type: Transform + - uid: 12897 + components: + - rot: 3.141592653589793 rad + pos: 14.5,12.5 + parent: 1 + type: Transform + - uid: 14331 + components: + - pos: -75.5,43.5 + parent: 1 + type: Transform + - uid: 14332 + components: + - rot: 3.141592653589793 rad + pos: -75.5,39.5 + parent: 1 + type: Transform + - uid: 14356 + components: + - rot: -1.5707963267948966 rad + pos: -62.5,13.5 + parent: 1 + type: Transform + - uid: 14357 + components: + - rot: -1.5707963267948966 rad + pos: -62.5,12.5 + parent: 1 + type: Transform + - uid: 14358 + components: + - rot: -1.5707963267948966 rad + pos: -62.5,11.5 + parent: 1 + type: Transform + - uid: 14359 + components: + - rot: -1.5707963267948966 rad + pos: -62.5,10.5 + parent: 1 + type: Transform +- proto: RailingCorner + entities: + - uid: 2633 + components: + - rot: 3.141592653589793 rad + pos: -10.5,30.5 + parent: 1 + type: Transform + - uid: 7066 + components: + - rot: 3.141592653589793 rad + pos: -51.5,37.5 + parent: 1 + type: Transform +- proto: RandomArcade + entities: + - uid: 2493 + components: + - rot: 3.141592653589793 rad + pos: 17.5,12.5 + parent: 1 + type: Transform + - uid: 2494 + components: + - pos: 17.5,11.5 + parent: 1 + type: Transform + - uid: 2495 + components: + - pos: 18.5,11.5 + parent: 1 + type: Transform + - uid: 2496 + components: + - rot: 3.141592653589793 rad + pos: 18.5,12.5 + parent: 1 + type: Transform + - uid: 2497 + components: + - rot: 3.141592653589793 rad + pos: 16.5,12.5 + parent: 1 + type: Transform + - uid: 2498 + components: + - pos: 16.5,11.5 + parent: 1 + type: Transform + - uid: 2499 + components: + - rot: 3.141592653589793 rad + pos: 16.5,8.5 + parent: 1 + type: Transform + - uid: 2500 + components: + - rot: 3.141592653589793 rad + pos: 17.5,8.5 + parent: 1 + type: Transform + - uid: 2501 + components: + - rot: 3.141592653589793 rad + pos: 18.5,8.5 + parent: 1 + type: Transform + - uid: 3509 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,-13.5 + parent: 1 + type: Transform + - uid: 3510 + components: + - rot: 1.5707963267948966 rad + pos: -21.5,-14.5 + parent: 1 + type: Transform + - uid: 9767 + components: + - pos: -41.5,39.5 + parent: 1 + type: Transform +- proto: RandomArtifactSpawner + entities: + - uid: 96 + components: + - pos: -4.5,-8.5 + parent: 1 + type: Transform + - uid: 346 + components: + - pos: 1.5,-14.5 + parent: 1 + type: Transform +- proto: RandomDrinkGlass + entities: + - uid: 915 + components: + - pos: 28.5,-1.5 + parent: 1 + type: Transform +- proto: RandomFoodSingle + entities: + - uid: 10809 + components: + - pos: -33.5,37.5 + parent: 1 + type: Transform +- proto: RandomInstruments + entities: + - uid: 4133 + components: + - pos: -26.5,24.5 + parent: 1 + type: Transform + - uid: 4134 + components: + - pos: -25.5,24.5 + parent: 1 + type: Transform + - uid: 4135 + components: + - pos: -24.5,24.5 + parent: 1 + type: Transform + - uid: 7324 + components: + - pos: -54.5,82.5 + parent: 1 + type: Transform + - uid: 7325 + components: + - pos: -54.5,88.5 + parent: 1 + type: Transform +- proto: RandomPainting + entities: + - uid: 14344 + components: + - pos: -78.5,55.5 + parent: 1 + type: Transform + - uid: 14843 + components: + - rot: 3.141592653589793 rad + pos: 10.5,-11.5 + parent: 1 + type: Transform +- proto: RandomPosterAny + entities: + - uid: 1165 + components: + - pos: 20.5,27.5 + parent: 1 + type: Transform + - uid: 10068 + components: + - pos: -4.5,41.5 + parent: 1 + type: Transform + - uid: 10069 + components: + - pos: 5.5,48.5 + parent: 1 + type: Transform + - uid: 10070 + components: + - pos: 13.5,42.5 + parent: 1 + type: Transform + - uid: 10073 + components: + - pos: 25.5,-3.5 + parent: 1 + type: Transform + - uid: 10074 + components: + - pos: 12.5,-8.5 + parent: 1 + type: Transform + - uid: 10075 + components: + - pos: -22.5,-6.5 + parent: 1 + type: Transform + - uid: 10076 + components: + - pos: -49.5,-5.5 + parent: 1 + type: Transform + - uid: 10088 + components: + - pos: -46.5,22.5 + parent: 1 + type: Transform + - uid: 14348 + components: + - pos: -68.5,55.5 + parent: 1 + type: Transform + - uid: 14349 + components: + - pos: -68.5,43.5 + parent: 1 + type: Transform + - uid: 14350 + components: + - pos: -73.5,41.5 + parent: 1 + type: Transform + - uid: 14354 + components: + - pos: -65.5,13.5 + parent: 1 + type: Transform +- proto: RandomPosterContraband + entities: + - uid: 14347 + components: + - pos: -74.5,54.5 + parent: 1 + type: Transform +- proto: RandomPosterLegit + entities: + - uid: 1061 + components: + - pos: 2.5,7.5 + parent: 1 + type: Transform + - uid: 7323 + components: + - pos: -53.5,86.5 + parent: 1 + type: Transform + - uid: 8352 + components: + - rot: 3.141592653589793 rad + pos: -45.5,37.5 + parent: 1 + type: Transform + - uid: 10044 + components: + - pos: -54.5,34.5 + parent: 1 + type: Transform + - uid: 10046 + components: + - pos: -55.5,17.5 + parent: 1 + type: Transform + - uid: 10048 + components: + - pos: -68.5,7.5 + parent: 1 + type: Transform + - uid: 10049 + components: + - pos: -55.5,-2.5 + parent: 1 + type: Transform + - uid: 10051 + components: + - pos: -43.5,7.5 + parent: 1 + type: Transform + - uid: 10052 + components: + - pos: -27.5,3.5 + parent: 1 + type: Transform + - uid: 10053 + components: + - pos: -11.5,3.5 + parent: 1 + type: Transform + - uid: 10055 + components: + - pos: 14.5,4.5 + parent: 1 + type: Transform + - uid: 10056 + components: + - pos: 24.5,8.5 + parent: 1 + type: Transform + - uid: 10057 + components: + - pos: 29.5,19.5 + parent: 1 + type: Transform + - uid: 10059 + components: + - pos: -10.5,26.5 + parent: 1 + type: Transform + - uid: 10061 + components: + - pos: -49.5,41.5 + parent: 1 + type: Transform + - uid: 10062 + components: + - pos: -12.5,45.5 + parent: 1 + type: Transform + - uid: 10064 + components: + - pos: -39.5,25.5 + parent: 1 + type: Transform + - uid: 10065 + components: + - pos: -35.5,14.5 + parent: 1 + type: Transform + - uid: 10066 + components: + - pos: -30.5,30.5 + parent: 1 + type: Transform + - uid: 10067 + components: + - pos: -8.5,35.5 + parent: 1 + type: Transform + - uid: 14351 + components: + - pos: -62.5,37.5 + parent: 1 + type: Transform + - uid: 14352 + components: + - pos: -59.5,45.5 + parent: 1 + type: Transform + - uid: 14353 + components: + - pos: -59.5,28.5 + parent: 1 + type: Transform + - uid: 14355 + components: + - pos: -59.5,8.5 + parent: 1 + type: Transform +- proto: RandomSoap + entities: + - uid: 5305 + components: + - pos: -54.5,25.5 + parent: 1 + type: Transform + - uid: 5437 + components: + - pos: -23.5,-1.5 + parent: 1 + type: Transform + - uid: 5438 + components: + - pos: -23.5,0.5 + parent: 1 + type: Transform + - uid: 5439 + components: + - pos: -23.5,2.5 + parent: 1 + type: Transform + - uid: 7097 + components: + - pos: -50.5,40.5 + parent: 1 + type: Transform + - uid: 7739 + components: + - pos: -54.5,86.5 + parent: 1 + type: Transform +- proto: RandomSpawner + entities: + - uid: 259 + components: + - pos: -70.5,54.5 + parent: 1 + type: Transform + - uid: 287 + components: + - pos: -36.5,18.5 + parent: 1 + type: Transform + - uid: 1402 + components: + - pos: -72.5,56.5 + parent: 1 + type: Transform + - uid: 2308 + components: + - pos: -70.5,54.5 + parent: 1 + type: Transform + - uid: 2990 + components: + - pos: -71.5,52.5 + parent: 1 + type: Transform + - uid: 3481 + components: + - pos: -33.5,32.5 + parent: 1 + type: Transform + - uid: 3738 + components: + - pos: -34.5,33.5 + parent: 1 + type: Transform + - uid: 4074 + components: + - pos: -71.5,54.5 + parent: 1 + type: Transform + - uid: 4220 + components: + - pos: -36.5,17.5 + parent: 1 + type: Transform + - uid: 4732 + components: + - pos: 20.5,38.5 + parent: 1 + type: Transform + - uid: 4733 + components: + - pos: 17.5,43.5 + parent: 1 + type: Transform + - uid: 5547 + components: + - pos: -70.5,53.5 + parent: 1 + type: Transform + - uid: 5756 + components: + - pos: -57.5,60.5 + parent: 1 + type: Transform + - uid: 7393 + components: + - pos: -44.5,-13.5 + parent: 1 + type: Transform + - uid: 8025 + components: + - rot: 3.141592653589793 rad + pos: -40.5,51.5 + parent: 1 + type: Transform + - uid: 8026 + components: + - pos: -44.5,46.5 + parent: 1 + type: Transform + - uid: 8027 + components: + - pos: -40.5,43.5 + parent: 1 + type: Transform + - uid: 8028 + components: + - pos: -43.5,42.5 + parent: 1 + type: Transform + - uid: 8029 + components: + - pos: -37.5,43.5 + parent: 1 + type: Transform + - uid: 8030 + components: + - pos: -33.5,46.5 + parent: 1 + type: Transform + - uid: 8031 + components: + - pos: -31.5,44.5 + parent: 1 + type: Transform + - uid: 8033 + components: + - pos: -29.5,46.5 + parent: 1 + type: Transform + - uid: 8034 + components: + - pos: -28.5,41.5 + parent: 1 + type: Transform + - uid: 8035 + components: + - pos: -31.5,38.5 + parent: 1 + type: Transform + - uid: 8036 + components: + - pos: -32.5,40.5 + parent: 1 + type: Transform + - uid: 8037 + components: + - pos: -35.5,35.5 + parent: 1 + type: Transform + - uid: 8038 + components: + - pos: -42.5,37.5 + parent: 1 + type: Transform + - uid: 8039 + components: + - pos: -35.5,40.5 + parent: 1 + type: Transform + - uid: 8040 + components: + - pos: -36.5,28.5 + parent: 1 + type: Transform + - uid: 8041 + components: + - pos: -38.5,22.5 + parent: 1 + type: Transform + - uid: 8042 + components: + - pos: -37.5,16.5 + parent: 1 + type: Transform + - uid: 8043 + components: + - pos: -36.5,9.5 + parent: 1 + type: Transform + - uid: 8044 + components: + - pos: -38.5,5.5 + parent: 1 + type: Transform + - uid: 8045 + components: + - pos: -33.5,4.5 + parent: 1 + type: Transform + - uid: 8046 + components: + - pos: -32.5,1.5 + parent: 1 + type: Transform + - uid: 8047 + components: + - pos: -41.5,2.5 + parent: 1 + type: Transform + - uid: 8048 + components: + - pos: -48.5,5.5 + parent: 1 + type: Transform + - uid: 8049 + components: + - pos: -55.5,6.5 + parent: 1 + type: Transform + - uid: 8050 + components: + - pos: -57.5,4.5 + parent: 1 + type: Transform + - uid: 8051 + components: + - pos: -65.5,6.5 + parent: 1 + type: Transform + - uid: 8052 + components: + - pos: -70.5,5.5 + parent: 1 + type: Transform + - uid: 8053 + components: + - pos: -74.5,6.5 + parent: 1 + type: Transform + - uid: 8054 + components: + - pos: -56.5,-2.5 + parent: 1 + type: Transform + - uid: 8055 + components: + - pos: -58.5,1.5 + parent: 1 + type: Transform + - uid: 8056 + components: + - pos: -56.5,-8.5 + parent: 1 + type: Transform + - uid: 8060 + components: + - pos: -52.5,-7.5 + parent: 1 + type: Transform + - uid: 8061 + components: + - pos: -54.5,-2.5 + parent: 1 + type: Transform + - uid: 8062 + components: + - pos: -50.5,-1.5 + parent: 1 + type: Transform + - uid: 8063 + components: + - pos: -44.5,-4.5 + parent: 1 + type: Transform + - uid: 8064 + components: + - pos: -45.5,0.5 + parent: 1 + type: Transform + - uid: 8065 + components: + - pos: -37.5,-3.5 + parent: 1 + type: Transform + - uid: 8066 + components: + - pos: -41.5,-3.5 + parent: 1 + type: Transform + - uid: 8067 + components: + - pos: -32.5,-9.5 + parent: 1 + type: Transform + - uid: 8069 + components: + - pos: -38.5,-12.5 + parent: 1 + type: Transform + - uid: 8070 + components: + - pos: -41.5,-10.5 + parent: 1 + type: Transform + - uid: 8072 + components: + - pos: -26.5,-6.5 + parent: 1 + type: Transform + - uid: 8073 + components: + - pos: -29.5,-5.5 + parent: 1 + type: Transform + - uid: 8074 + components: + - pos: -25.5,-0.5 + parent: 1 + type: Transform + - uid: 8075 + components: + - pos: -28.5,2.5 + parent: 1 + type: Transform + - uid: 8076 + components: + - pos: -21.5,-8.5 + parent: 1 + type: Transform + - uid: 8077 + components: + - pos: -20.5,-4.5 + parent: 1 + type: Transform + - uid: 8078 + components: + - pos: -21.5,-1.5 + parent: 1 + type: Transform + - uid: 8079 + components: + - pos: -24.5,-7.5 + parent: 1 + type: Transform + - uid: 8080 + components: + - pos: -15.5,1.5 + parent: 1 + type: Transform + - uid: 8081 + components: + - pos: -16.5,-10.5 + parent: 1 + type: Transform + - uid: 8082 + components: + - pos: -12.5,-13.5 + parent: 1 + type: Transform + - uid: 8083 + components: + - pos: -20.5,-10.5 + parent: 1 + type: Transform + - uid: 8085 + components: + - pos: -24.5,-4.5 + parent: 1 + type: Transform + - uid: 8086 + components: + - pos: -31.5,6.5 + parent: 1 + type: Transform + - uid: 8087 + components: + - pos: -24.5,4.5 + parent: 1 + type: Transform + - uid: 8088 + components: + - pos: -19.5,6.5 + parent: 1 + type: Transform + - uid: 8089 + components: + - pos: -14.5,5.5 + parent: 1 + type: Transform + - uid: 8090 + components: + - pos: -8.5,4.5 + parent: 1 + type: Transform + - uid: 8091 + components: + - pos: -4.5,6.5 + parent: 1 + type: Transform + - uid: 8092 + components: + - pos: -1.5,4.5 + parent: 1 + type: Transform + - uid: 8093 + components: + - pos: 7.5,5.5 + parent: 1 + type: Transform + - uid: 8094 + components: + - pos: 13.5,6.5 + parent: 1 + type: Transform + - uid: 8095 + components: + - pos: 19.5,5.5 + parent: 1 + type: Transform + - uid: 8096 + components: + - pos: 26.5,6.5 + parent: 1 + type: Transform + - uid: 8097 + components: + - pos: 28.5,10.5 + parent: 1 + type: Transform + - uid: 8098 + components: + - pos: 25.5,14.5 + parent: 1 + type: Transform + - uid: 8099 + components: + - pos: 27.5,18.5 + parent: 1 + type: Transform + - uid: 8100 + components: + - pos: 26.5,21.5 + parent: 1 + type: Transform + - uid: 8101 + components: + - pos: 22.5,15.5 + parent: 1 + type: Transform + - uid: 8102 + components: + - pos: 19.5,16.5 + parent: 1 + type: Transform + - uid: 8103 + components: + - pos: 16.5,20.5 + parent: 1 + type: Transform + - uid: 8104 + components: + - pos: 19.5,23.5 + parent: 1 + type: Transform + - uid: 8105 + components: + - pos: 23.5,25.5 + parent: 1 + type: Transform + - uid: 8106 + components: + - pos: 22.5,33.5 + parent: 1 + type: Transform + - uid: 8107 + components: + - pos: 23.5,35.5 + parent: 1 + type: Transform + - uid: 8108 + components: + - pos: 14.5,35.5 + parent: 1 + type: Transform + - uid: 8110 + components: + - pos: 9.5,39.5 + parent: 1 + type: Transform + - uid: 8111 + components: + - pos: 7.5,43.5 + parent: 1 + type: Transform + - uid: 8112 + components: + - pos: 6.5,46.5 + parent: 1 + type: Transform + - uid: 8113 + components: + - pos: 14.5,48.5 + parent: 1 + type: Transform + - uid: 8116 + components: + - pos: 11.5,51.5 + parent: 1 + type: Transform + - uid: 8117 + components: + - pos: 6.5,50.5 + parent: 1 + type: Transform + - uid: 8118 + components: + - pos: 4.5,52.5 + parent: 1 + type: Transform + - uid: 8119 + components: + - pos: -1.5,49.5 + parent: 1 + type: Transform + - uid: 8120 + components: + - pos: -0.5,53.5 + parent: 1 + type: Transform + - uid: 8121 + components: + - pos: -0.5,47.5 + parent: 1 + type: Transform + - uid: 8122 + components: + - pos: -2.5,40.5 + parent: 1 + type: Transform + - uid: 8123 + components: + - pos: -6.5,36.5 + parent: 1 + type: Transform + - uid: 8124 + components: + - pos: -5.5,47.5 + parent: 1 + type: Transform + - uid: 8125 + components: + - pos: -10.5,51.5 + parent: 1 + type: Transform + - uid: 8126 + components: + - pos: -12.5,53.5 + parent: 1 + type: Transform + - uid: 8127 + components: + - pos: -8.5,57.5 + parent: 1 + type: Transform + - uid: 8128 + components: + - pos: -5.5,59.5 + parent: 1 + type: Transform + - uid: 8129 + components: + - pos: -13.5,60.5 + parent: 1 + type: Transform + - uid: 8130 + components: + - pos: -17.5,64.5 + parent: 1 + type: Transform + - uid: 8131 + components: + - pos: -20.5,61.5 + parent: 1 + type: Transform + - uid: 8132 + components: + - pos: -17.5,56.5 + parent: 1 + type: Transform + - uid: 8133 + components: + - pos: -14.5,53.5 + parent: 1 + type: Transform + - uid: 8134 + components: + - pos: -22.5,55.5 + parent: 1 + type: Transform + - uid: 8135 + components: + - pos: -17.5,49.5 + parent: 1 + type: Transform + - uid: 8136 + components: + - pos: -16.5,42.5 + parent: 1 + type: Transform + - uid: 8137 + components: + - pos: -15.5,46.5 + parent: 1 + type: Transform + - uid: 8138 + components: + - pos: -12.5,47.5 + parent: 1 + type: Transform + - uid: 8139 + components: + - pos: -10.5,48.5 + parent: 1 + type: Transform + - uid: 8140 + components: + - pos: -15.5,39.5 + parent: 1 + type: Transform + - uid: 8141 + components: + - pos: -17.5,35.5 + parent: 1 + type: Transform + - uid: 8142 + components: + - pos: -13.5,39.5 + parent: 1 + type: Transform + - uid: 8143 + components: + - pos: -11.5,42.5 + parent: 1 + type: Transform + - uid: 8144 + components: + - pos: -4.5,33.5 + parent: 1 + type: Transform + - uid: 8145 + components: + - pos: -0.5,30.5 + parent: 1 + type: Transform + - uid: 8146 + components: + - pos: 2.5,33.5 + parent: 1 + type: Transform + - uid: 8147 + components: + - pos: 2.5,37.5 + parent: 1 + type: Transform + - uid: 8148 + components: + - pos: 1.5,40.5 + parent: 1 + type: Transform + - uid: 8149 + components: + - pos: 0.5,36.5 + parent: 1 + type: Transform + - uid: 8150 + components: + - pos: 7.5,37.5 + parent: 1 + type: Transform + - uid: 8151 + components: + - pos: 11.5,34.5 + parent: 1 + type: Transform + - uid: 8152 + components: + - pos: 4.5,28.5 + parent: 1 + type: Transform + - uid: 8153 + components: + - pos: 2.5,24.5 + parent: 1 + type: Transform + - uid: 8154 + components: + - pos: 4.5,19.5 + parent: 1 + type: Transform + - uid: 8155 + components: + - pos: -1.5,16.5 + parent: 1 + type: Transform + - uid: 8156 + components: + - pos: 2.5,15.5 + parent: 1 + type: Transform + - uid: 8157 + components: + - pos: -1.5,20.5 + parent: 1 + type: Transform + - uid: 8158 + components: + - pos: -3.5,26.5 + parent: 1 + type: Transform + - uid: 8159 + components: + - pos: -1.5,22.5 + parent: 1 + type: Transform + - uid: 8160 + components: + - pos: 10.5,20.5 + parent: 1 + type: Transform + - uid: 8161 + components: + - pos: 7.5,15.5 + parent: 1 + type: Transform + - uid: 8162 + components: + - pos: 10.5,14.5 + parent: 1 + type: Transform + - uid: 8163 + components: + - pos: 7.5,12.5 + parent: 1 + type: Transform + - uid: 8164 + components: + - pos: 11.5,11.5 + parent: 1 + type: Transform + - uid: 8165 + components: + - pos: 9.5,23.5 + parent: 1 + type: Transform + - uid: 8166 + components: + - pos: 7.5,25.5 + parent: 1 + type: Transform + - uid: 8167 + components: + - pos: 8.5,29.5 + parent: 1 + type: Transform + - uid: 8168 + components: + - pos: 11.5,28.5 + parent: 1 + type: Transform + - uid: 8169 + components: + - pos: 14.5,30.5 + parent: 1 + type: Transform + - uid: 8171 + components: + - pos: 18.5,29.5 + parent: 1 + type: Transform + - uid: 8172 + components: + - pos: -8.5,33.5 + parent: 1 + type: Transform + - uid: 8173 + components: + - pos: -12.5,30.5 + parent: 1 + type: Transform + - uid: 8174 + components: + - pos: -7.5,27.5 + parent: 1 + type: Transform + - uid: 8175 + components: + - pos: -17.5,32.5 + parent: 1 + type: Transform + - uid: 8176 + components: + - pos: -11.5,26.5 + parent: 1 + type: Transform + - uid: 8177 + components: + - pos: -13.5,22.5 + parent: 1 + type: Transform + - uid: 8178 + components: + - pos: -11.5,19.5 + parent: 1 + type: Transform + - uid: 8179 + components: + - pos: -13.5,16.5 + parent: 1 + type: Transform + - uid: 8180 + components: + - pos: -11.5,12.5 + parent: 1 + type: Transform + - uid: 8181 + components: + - pos: -13.5,9.5 + parent: 1 + type: Transform + - uid: 8182 + components: + - pos: -5.5,10.5 + parent: 1 + type: Transform + - uid: 8183 + components: + - pos: -4.5,15.5 + parent: 1 + type: Transform + - uid: 8184 + components: + - pos: -6.5,20.5 + parent: 1 + type: Transform + - uid: 8185 + components: + - pos: -7.5,24.5 + parent: 1 + type: Transform + - uid: 8186 + components: + - pos: 1.5,12.5 + parent: 1 + type: Transform + - uid: 8187 + components: + - pos: 6.5,9.5 + parent: 1 + type: Transform + - uid: 8188 + components: + - pos: 14.5,9.5 + parent: 1 + type: Transform + - uid: 8189 + components: + - pos: 13.5,16.5 + parent: 1 + type: Transform + - uid: 8190 + components: + - pos: 13.5,21.5 + parent: 1 + type: Transform + - uid: 8192 + components: + - pos: 19.5,12.5 + parent: 1 + type: Transform + - uid: 8193 + components: + - pos: 16.5,9.5 + parent: 1 + type: Transform + - uid: 8194 + components: + - pos: 13.5,2.5 + parent: 1 + type: Transform + - uid: 8195 + components: + - pos: 16.5,-1.5 + parent: 1 + type: Transform + - uid: 8196 + components: + - pos: 19.5,1.5 + parent: 1 + type: Transform + - uid: 8197 + components: + - pos: 19.5,-1.5 + parent: 1 + type: Transform + - uid: 8198 + components: + - pos: 7.5,-2.5 + parent: 1 + type: Transform + - uid: 8199 + components: + - pos: 8.5,1.5 + parent: 1 + type: Transform + - uid: 8200 + components: + - pos: 11.5,-0.5 + parent: 1 + type: Transform + - uid: 8201 + components: + - pos: -18.5,-2.5 + parent: 1 + type: Transform + - uid: 8202 + components: + - pos: -15.5,-4.5 + parent: 1 + type: Transform + - uid: 8203 + components: + - pos: -13.5,-2.5 + parent: 1 + type: Transform + - uid: 8204 + components: + - pos: -12.5,-5.5 + parent: 1 + type: Transform + - uid: 8205 + components: + - pos: -11.5,-7.5 + parent: 1 + type: Transform + - uid: 8206 + components: + - pos: -9.5,-1.5 + parent: 1 + type: Transform + - uid: 8207 + components: + - pos: -11.5,2.5 + parent: 1 + type: Transform + - uid: 8208 + components: + - pos: -5.5,-1.5 + parent: 1 + type: Transform + - uid: 8210 + components: + - pos: -4.5,-4.5 + parent: 1 + type: Transform + - uid: 8211 + components: + - pos: -1.5,-1.5 + parent: 1 + type: Transform + - uid: 8213 + components: + - pos: -3.5,1.5 + parent: 1 + type: Transform + - uid: 8216 + components: + - pos: -1.5,-9.5 + parent: 1 + type: Transform + - uid: 8217 + components: + - pos: -4.5,-12.5 + parent: 1 + type: Transform + - uid: 8218 + components: + - pos: -11.5,-11.5 + parent: 1 + type: Transform + - uid: 8219 + components: + - pos: 0.5,-8.5 + parent: 1 + type: Transform + - uid: 8220 + components: + - pos: 4.5,-10.5 + parent: 1 + type: Transform + - uid: 8221 + components: + - pos: 2.5,-15.5 + parent: 1 + type: Transform + - uid: 8222 + components: + - pos: 4.5,0.5 + parent: 1 + type: Transform + - uid: 8223 + components: + - pos: 3.5,-5.5 + parent: 1 + type: Transform + - uid: 8225 + components: + - pos: 16.5,-5.5 + parent: 1 + type: Transform + - uid: 8226 + components: + - pos: 19.5,-4.5 + parent: 1 + type: Transform + - uid: 8227 + components: + - pos: 24.5,-5.5 + parent: 1 + type: Transform + - uid: 8228 + components: + - pos: 27.5,-2.5 + parent: 1 + type: Transform + - uid: 8229 + components: + - pos: 29.5,-1.5 + parent: 1 + type: Transform + - uid: 8230 + components: + - pos: 19.5,-8.5 + parent: 1 + type: Transform + - uid: 8231 + components: + - pos: 24.5,-7.5 + parent: 1 + type: Transform + - uid: 8232 + components: + - pos: 29.5,-8.5 + parent: 1 + type: Transform + - uid: 8233 + components: + - pos: 15.5,-11.5 + parent: 1 + type: Transform + - uid: 8234 + components: + - pos: 13.5,-8.5 + parent: 1 + type: Transform + - uid: 8237 + components: + - pos: -7.5,11.5 + parent: 1 + type: Transform + - uid: 8238 + components: + - pos: -15.5,14.5 + parent: 1 + type: Transform + - uid: 8241 + components: + - pos: -16.5,20.5 + parent: 1 + type: Transform + - uid: 8242 + components: + - pos: -20.5,16.5 + parent: 1 + type: Transform + - uid: 8243 + components: + - pos: -19.5,11.5 + parent: 1 + type: Transform + - uid: 8244 + components: + - pos: -20.5,12.5 + parent: 1 + type: Transform + - uid: 8245 + components: + - pos: -18.5,19.5 + parent: 1 + type: Transform + - uid: 8246 + components: + - pos: -25.5,21.5 + parent: 1 + type: Transform + - uid: 8247 + components: + - pos: -19.5,24.5 + parent: 1 + type: Transform + - uid: 8248 + components: + - pos: -19.5,27.5 + parent: 1 + type: Transform + - uid: 8249 + components: + - pos: -15.5,28.5 + parent: 1 + type: Transform + - uid: 8250 + components: + - pos: -16.5,25.5 + parent: 1 + type: Transform + - uid: 8251 + components: + - pos: -15.5,23.5 + parent: 1 + type: Transform + - uid: 8252 + components: + - pos: 1.5,8.5 + parent: 1 + type: Transform + - uid: 8253 + components: + - pos: -1.5,9.5 + parent: 1 + type: Transform + - uid: 8254 + components: + - pos: -28.5,8.5 + parent: 1 + type: Transform + - uid: 8255 + components: + - pos: -24.5,10.5 + parent: 1 + type: Transform + - uid: 8256 + components: + - pos: -27.5,12.5 + parent: 1 + type: Transform + - uid: 8257 + components: + - pos: -22.5,12.5 + parent: 1 + type: Transform + - uid: 8258 + components: + - pos: -25.5,16.5 + parent: 1 + type: Transform + - uid: 8259 + components: + - pos: -22.5,17.5 + parent: 1 + type: Transform + - uid: 8260 + components: + - pos: -28.5,18.5 + parent: 1 + type: Transform + - uid: 8261 + components: + - pos: -33.5,9.5 + parent: 1 + type: Transform + - uid: 8262 + components: + - pos: -30.5,13.5 + parent: 1 + type: Transform + - uid: 8263 + components: + - pos: -32.5,16.5 + parent: 1 + type: Transform + - uid: 8265 + components: + - pos: -32.5,20.5 + parent: 1 + type: Transform + - uid: 8266 + components: + - pos: -29.5,21.5 + parent: 1 + type: Transform + - uid: 8267 + components: + - pos: -28.5,24.5 + parent: 1 + type: Transform + - uid: 8268 + components: + - pos: -33.5,25.5 + parent: 1 + type: Transform + - uid: 8269 + components: + - pos: -32.5,28.5 + parent: 1 + type: Transform + - uid: 8270 + components: + - pos: -36.5,24.5 + parent: 1 + type: Transform + - uid: 8271 + components: + - pos: -30.5,29.5 + parent: 1 + type: Transform + - uid: 8272 + components: + - pos: -24.5,27.5 + parent: 1 + type: Transform + - uid: 8273 + components: + - pos: -26.5,28.5 + parent: 1 + type: Transform + - uid: 8274 + components: + - pos: -27.5,36.5 + parent: 1 + type: Transform + - uid: 8275 + components: + - pos: -42.5,27.5 + parent: 1 + type: Transform + - uid: 8276 + components: + - pos: -40.5,24.5 + parent: 1 + type: Transform + - uid: 8277 + components: + - pos: -44.5,27.5 + parent: 1 + type: Transform + - uid: 8279 + components: + - pos: -44.5,18.5 + parent: 1 + type: Transform + - uid: 8280 + components: + - pos: -41.5,18.5 + parent: 1 + type: Transform + - uid: 8281 + components: + - pos: -42.5,21.5 + parent: 1 + type: Transform + - uid: 8282 + components: + - pos: -50.5,21.5 + parent: 1 + type: Transform + - uid: 8283 + components: + - pos: -44.5,10.5 + parent: 1 + type: Transform + - uid: 8284 + components: + - pos: -48.5,14.5 + parent: 1 + type: Transform + - uid: 8285 + components: + - pos: -41.5,10.5 + parent: 1 + type: Transform + - uid: 8286 + components: + - pos: -41.5,15.5 + parent: 1 + type: Transform + - uid: 8291 + components: + - pos: -53.5,1.5 + parent: 1 + type: Transform + - uid: 8292 + components: + - pos: -48.5,1.5 + parent: 1 + type: Transform + - uid: 8293 + components: + - pos: -48.5,-3.5 + parent: 1 + type: Transform + - uid: 8294 + components: + - pos: -48.5,-7.5 + parent: 1 + type: Transform + - uid: 8295 + components: + - pos: -51.5,-9.5 + parent: 1 + type: Transform + - uid: 8296 + components: + - pos: -48.5,-10.5 + parent: 1 + type: Transform + - uid: 8297 + components: + - pos: -56.5,9.5 + parent: 1 + type: Transform + - uid: 8298 + components: + - pos: -57.5,14.5 + parent: 1 + type: Transform + - uid: 8299 + components: + - pos: -57.5,19.5 + parent: 1 + type: Transform + - uid: 8300 + components: + - pos: -56.5,24.5 + parent: 1 + type: Transform + - uid: 8301 + components: + - pos: -58.5,26.5 + parent: 1 + type: Transform + - uid: 8302 + components: + - pos: -57.5,30.5 + parent: 1 + type: Transform + - uid: 8303 + components: + - pos: -54.5,32.5 + parent: 1 + type: Transform + - uid: 8304 + components: + - pos: -49.5,32.5 + parent: 1 + type: Transform + - uid: 8305 + components: + - pos: -45.5,32.5 + parent: 1 + type: Transform + - uid: 8306 + components: + - pos: -41.5,31.5 + parent: 1 + type: Transform + - uid: 8307 + components: + - pos: -41.5,33.5 + parent: 1 + type: Transform + - uid: 8308 + components: + - pos: -48.5,35.5 + parent: 1 + type: Transform + - uid: 8309 + components: + - pos: -46.5,40.5 + parent: 1 + type: Transform + - uid: 8310 + components: + - pos: -47.5,44.5 + parent: 1 + type: Transform + - uid: 8311 + components: + - pos: -49.5,46.5 + parent: 1 + type: Transform + - uid: 8312 + components: + - pos: -46.5,51.5 + parent: 1 + type: Transform + - uid: 8313 + components: + - pos: -54.5,47.5 + parent: 1 + type: Transform + - uid: 8315 + components: + - pos: -57.5,44.5 + parent: 1 + type: Transform + - uid: 8316 + components: + - pos: -57.5,40.5 + parent: 1 + type: Transform + - uid: 8317 + components: + - pos: -56.5,39.5 + parent: 1 + type: Transform + - uid: 8318 + components: + - pos: -58.5,36.5 + parent: 1 + type: Transform + - uid: 8319 + components: + - pos: -52.5,43.5 + parent: 1 + type: Transform + - uid: 8320 + components: + - pos: -44.5,51.5 + parent: 1 + type: Transform + - uid: 8321 + components: + - pos: -40.5,55.5 + parent: 1 + type: Transform + - uid: 8322 + components: + - pos: -35.5,55.5 + parent: 1 + type: Transform + - uid: 8323 + components: + - pos: -32.5,52.5 + parent: 1 + type: Transform + - uid: 8327 + components: + - pos: -27.5,50.5 + parent: 1 + type: Transform + - uid: 8328 + components: + - pos: -28.5,54.5 + parent: 1 + type: Transform + - uid: 8329 + components: + - pos: -20.5,51.5 + parent: 1 + type: Transform + - uid: 8330 + components: + - pos: -25.5,47.5 + parent: 1 + type: Transform + - uid: 8331 + components: + - pos: -25.5,39.5 + parent: 1 + type: Transform + - uid: 8332 + components: + - pos: -24.5,42.5 + parent: 1 + type: Transform + - uid: 8333 + components: + - pos: -24.5,36.5 + parent: 1 + type: Transform + - uid: 8334 + components: + - pos: -22.5,39.5 + parent: 1 + type: Transform + - uid: 8335 + components: + - pos: -20.5,41.5 + parent: 1 + type: Transform + - uid: 8336 + components: + - pos: -21.5,44.5 + parent: 1 + type: Transform + - uid: 8337 + components: + - pos: -20.5,48.5 + parent: 1 + type: Transform + - uid: 8338 + components: + - pos: -21.5,31.5 + parent: 1 + type: Transform + - uid: 8339 + components: + - pos: -25.5,32.5 + parent: 1 + type: Transform + - uid: 8340 + components: + - pos: -20.5,35.5 + parent: 1 + type: Transform + - uid: 8341 + components: + - pos: -31.5,33.5 + parent: 1 + type: Transform + - uid: 8342 + components: + - pos: -34.5,31.5 + parent: 1 + type: Transform + - uid: 8343 + components: + - pos: -51.5,24.5 + parent: 1 + type: Transform + - uid: 8344 + components: + - pos: -49.5,27.5 + parent: 1 + type: Transform + - uid: 8345 + components: + - pos: -53.5,28.5 + parent: 1 + type: Transform + - uid: 8346 + components: + - pos: -33.5,-3.5 + parent: 1 + type: Transform + - uid: 9000 + components: + - pos: -32.5,-6.5 + parent: 1 + type: Transform + - uid: 9105 + components: + - pos: -57.5,84.5 + parent: 1 + type: Transform + - uid: 9106 + components: + - pos: -60.5,84.5 + parent: 1 + type: Transform + - uid: 9107 + components: + - pos: -59.5,87.5 + parent: 1 + type: Transform + - uid: 9108 + components: + - pos: -57.5,88.5 + parent: 1 + type: Transform + - uid: 9109 + components: + - pos: -54.5,89.5 + parent: 1 + type: Transform + - uid: 9110 + components: + - pos: -55.5,82.5 + parent: 1 + type: Transform + - uid: 9111 + components: + - pos: -55.5,86.5 + parent: 1 + type: Transform + - uid: 9112 + components: + - pos: -51.5,89.5 + parent: 1 + type: Transform + - uid: 9113 + components: + - pos: -52.5,85.5 + parent: 1 + type: Transform + - uid: 9114 + components: + - pos: -50.5,82.5 + parent: 1 + type: Transform + - uid: 9115 + components: + - pos: -54.5,79.5 + parent: 1 + type: Transform + - uid: 9116 + components: + - pos: -50.5,80.5 + parent: 1 + type: Transform + - uid: 9117 + components: + - pos: -52.5,76.5 + parent: 1 + type: Transform + - uid: 9118 + components: + - pos: -50.5,73.5 + parent: 1 + type: Transform + - uid: 9119 + components: + - pos: -52.5,72.5 + parent: 1 + type: Transform + - uid: 9120 + components: + - pos: -51.5,68.5 + parent: 1 + type: Transform + - uid: 9121 + components: + - pos: -47.5,67.5 + parent: 1 + type: Transform + - uid: 9122 + components: + - pos: -52.5,64.5 + parent: 1 + type: Transform + - uid: 9123 + components: + - pos: -50.5,60.5 + parent: 1 + type: Transform + - uid: 9125 + components: + - pos: -59.5,61.5 + parent: 1 + type: Transform + - uid: 9126 + components: + - pos: -61.5,65.5 + parent: 1 + type: Transform + - uid: 9127 + components: + - pos: -55.5,65.5 + parent: 1 + type: Transform + - uid: 9128 + components: + - pos: -54.5,63.5 + parent: 1 + type: Transform + - uid: 9130 + components: + - pos: -43.5,62.5 + parent: 1 + type: Transform + - uid: 9131 + components: + - pos: -42.5,64.5 + parent: 1 + type: Transform + - uid: 9132 + components: + - pos: -46.5,58.5 + parent: 1 + type: Transform + - uid: 9133 + components: + - pos: -48.5,61.5 + parent: 1 + type: Transform + - uid: 9134 + components: + - pos: -50.5,58.5 + parent: 1 + type: Transform + - uid: 9135 + components: + - pos: -55.5,55.5 + parent: 1 + type: Transform + - uid: 9136 + components: + - pos: -51.5,54.5 + parent: 1 + type: Transform + - uid: 9137 + components: + - pos: -59.5,55.5 + parent: 1 + type: Transform + - uid: 9138 + components: + - pos: -62.5,53.5 + parent: 1 + type: Transform + - uid: 9139 + components: + - pos: -59.5,51.5 + parent: 1 + type: Transform + - uid: 9140 + components: + - pos: -65.5,54.5 + parent: 1 + type: Transform + - uid: 9141 + components: + - pos: -50.5,50.5 + parent: 1 + type: Transform + - uid: 9142 + components: + - pos: -54.5,52.5 + parent: 1 + type: Transform + - uid: 9143 + components: + - pos: -53.5,49.5 + parent: 1 + type: Transform + - uid: 9144 + components: + - pos: -56.5,50.5 + parent: 1 + type: Transform + - uid: 9145 + components: + - pos: -46.5,54.5 + parent: 1 + type: Transform + - uid: 9282 + components: + - pos: 20.5,30.5 + parent: 1 + type: Transform + - uid: 14370 + components: + - pos: -72.5,54.5 + parent: 1 + type: Transform + - uid: 14371 + components: + - pos: -69.5,55.5 + parent: 1 + type: Transform + - uid: 14372 + components: + - pos: -70.5,51.5 + parent: 1 + type: Transform + - uid: 14373 + components: + - pos: -75.5,52.5 + parent: 1 + type: Transform + - uid: 14374 + components: + - pos: -75.5,47.5 + parent: 1 + type: Transform + - uid: 14375 + components: + - pos: -74.5,44.5 + parent: 1 + type: Transform + - uid: 14376 + components: + - pos: -74.5,39.5 + parent: 1 + type: Transform + - uid: 14377 + components: + - pos: -75.5,38.5 + parent: 1 + type: Transform + - uid: 14378 + components: + - pos: -69.5,41.5 + parent: 1 + type: Transform + - uid: 14379 + components: + - pos: -71.5,40.5 + parent: 1 + type: Transform + - uid: 14380 + components: + - pos: -71.5,44.5 + parent: 1 + type: Transform + - uid: 14381 + components: + - pos: -66.5,46.5 + parent: 1 + type: Transform + - uid: 14382 + components: + - pos: -62.5,47.5 + parent: 1 + type: Transform + - uid: 14383 + components: + - pos: -67.5,50.5 + parent: 1 + type: Transform + - uid: 14384 + components: + - pos: -67.5,55.5 + parent: 1 + type: Transform + - uid: 14385 + components: + - pos: -67.5,41.5 + parent: 1 + type: Transform + - uid: 14386 + components: + - pos: -66.5,38.5 + parent: 1 + type: Transform + - uid: 14387 + components: + - pos: -68.5,37.5 + parent: 1 + type: Transform + - uid: 14388 + components: + - pos: -62.5,36.5 + parent: 1 + type: Transform + - uid: 14389 + components: + - pos: -60.5,38.5 + parent: 1 + type: Transform + - uid: 14390 + components: + - pos: -63.5,40.5 + parent: 1 + type: Transform + - uid: 14391 + components: + - pos: -61.5,44.5 + parent: 1 + type: Transform + - uid: 14392 + components: + - pos: -63.5,44.5 + parent: 1 + type: Transform + - uid: 14394 + components: + - pos: -80.5,30.5 + parent: 1 + type: Transform + - uid: 14395 + components: + - pos: -77.5,32.5 + parent: 1 + type: Transform + - uid: 14396 + components: + - pos: -80.5,33.5 + parent: 1 + type: Transform + - uid: 14403 + components: + - pos: -74.5,35.5 + parent: 1 + type: Transform + - uid: 14404 + components: + - pos: -71.5,34.5 + parent: 1 + type: Transform + - uid: 14405 + components: + - pos: -66.5,33.5 + parent: 1 + type: Transform + - uid: 14406 + components: + - pos: -64.5,34.5 + parent: 1 + type: Transform + - uid: 14407 + components: + - pos: -64.5,27.5 + parent: 1 + type: Transform + - uid: 14408 + components: + - pos: -66.5,29.5 + parent: 1 + type: Transform + - uid: 14410 + components: + - pos: -70.5,29.5 + parent: 1 + type: Transform + - uid: 14411 + components: + - pos: -73.5,31.5 + parent: 1 + type: Transform + - uid: 14412 + components: + - pos: -74.5,26.5 + parent: 1 + type: Transform + - uid: 14413 + components: + - pos: -73.5,22.5 + parent: 1 + type: Transform + - uid: 14414 + components: + - pos: -74.5,19.5 + parent: 1 + type: Transform + - uid: 14415 + components: + - pos: -70.5,19.5 + parent: 1 + type: Transform + - uid: 14416 + components: + - pos: -67.5,23.5 + parent: 1 + type: Transform + - uid: 14417 + components: + - pos: -67.5,20.5 + parent: 1 + type: Transform + - uid: 14418 + components: + - pos: -64.5,21.5 + parent: 1 + type: Transform + - uid: 14419 + components: + - pos: -79.5,22.5 + parent: 1 + type: Transform + - uid: 14423 + components: + - pos: -80.5,19.5 + parent: 1 + type: Transform + - uid: 14424 + components: + - pos: -77.5,20.5 + parent: 1 + type: Transform + - uid: 14950 + components: + - pos: -70.5,25.5 + parent: 1 + type: Transform + - uid: 14967 + components: + - pos: 15.5,26.5 + parent: 1 + type: Transform + - uid: 15021 + components: + - pos: 11.5,-5.5 + parent: 1 + type: Transform + - uid: 15067 + components: + - pos: -44.5,21.5 + parent: 1 + type: Transform + - uid: 15075 + components: + - pos: -16.5,8.5 + parent: 1 + type: Transform + - uid: 15782 + components: + - pos: -44.5,-10.5 + parent: 1 + type: Transform + - uid: 15791 + components: + - pos: -47.5,64.5 + parent: 1 + type: Transform + - uid: 15846 + components: + - pos: 21.5,41.5 + parent: 1 + type: Transform + - uid: 15912 + components: + - pos: 16.5,34.5 + parent: 1 + type: Transform + - uid: 15916 + components: + - pos: 14.5,38.5 + parent: 1 + type: Transform +- proto: RCD + entities: + - uid: 13615 + components: + - pos: -73.40199,15.605122 + parent: 1 + type: Transform +- proto: RCDAmmo + entities: + - uid: 13616 + components: + - pos: -73.65199,15.448872 + parent: 1 + type: Transform + - uid: 13617 + components: + - pos: -73.54262,15.464497 + parent: 1 + type: Transform + - uid: 13618 + components: + - pos: -73.37074,15.464497 + parent: 1 + type: Transform +- proto: ReagentContainerFlour + entities: + - uid: 6954 + components: + - pos: -36.304527,44.574997 + parent: 1 + type: Transform + - uid: 6955 + components: + - pos: -33.757652,44.762497 + parent: 1 + type: Transform +- proto: ReagentContainerMilk + entities: + - uid: 5276 + components: + - pos: -52.395008,21.71115 + parent: 1 + type: Transform +- proto: ReagentContainerSugar + entities: + - uid: 6956 + components: + - pos: -35.288902,45.293747 + parent: 1 + type: Transform +- proto: Recycler + entities: + - uid: 14224 + components: + - rot: 3.141592653589793 rad + pos: -73.5,55.5 + parent: 1 + type: Transform + - links: + - 14233 + type: DeviceLinkSink +- proto: ReinforcedGirder + entities: + - uid: 128 + components: + - pos: -10.5,-13.5 + parent: 1 + type: Transform + - uid: 199 + components: + - pos: 2.5,-16.5 + parent: 1 + type: Transform + - uid: 208 + components: + - pos: 6.5,-7.5 + parent: 1 + type: Transform + - uid: 413 + components: + - pos: -10.5,-8.5 + parent: 1 + type: Transform + - uid: 3493 + components: + - pos: -30.5,51.5 + parent: 1 + type: Transform + - uid: 5533 + components: + - pos: -45.5,60.5 + parent: 1 + type: Transform +- proto: ReinforcedPlasmaWindow + entities: + - uid: 10827 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,35.5 + parent: 1 + type: Transform + - uid: 10828 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,37.5 + parent: 1 + type: Transform + - uid: 10829 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,39.5 + parent: 1 + type: Transform + - uid: 10830 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,41.5 + parent: 1 + type: Transform + - uid: 10831 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,43.5 + parent: 1 + type: Transform + - uid: 10832 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,45.5 + parent: 1 + type: Transform + - uid: 14832 + components: + - pos: 9.5,-15.5 + parent: 1 + type: Transform + - uid: 14834 + components: + - pos: 10.5,-15.5 + parent: 1 + type: Transform + - uid: 15009 + components: + - pos: 12.5,-13.5 + parent: 1 + type: Transform +- proto: ReinforcedWindow + entities: + - uid: 16 + components: + - pos: -3.5,-0.5 + parent: 1 + type: Transform + - uid: 119 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,-15.5 + parent: 1 + type: Transform + - uid: 121 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,-15.5 + parent: 1 + type: Transform + - uid: 122 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-15.5 + parent: 1 + type: Transform + - uid: 194 + components: + - pos: 2.5,-12.5 + parent: 1 + type: Transform + - uid: 195 + components: + - pos: 0.5,-12.5 + parent: 1 + type: Transform + - uid: 708 + components: + - pos: 30.5,3.5 + parent: 1 + type: Transform + - uid: 709 + components: + - pos: 30.5,2.5 + parent: 1 + type: Transform + - uid: 710 + components: + - pos: 30.5,1.5 + parent: 1 + type: Transform + - uid: 944 + components: + - rot: 3.141592653589793 rad + pos: 29.5,5.5 + parent: 1 + type: Transform + - uid: 945 + components: + - rot: 3.141592653589793 rad + pos: 29.5,6.5 + parent: 1 + type: Transform + - uid: 965 + components: + - rot: -1.5707963267948966 rad + pos: 31.5,17.5 + parent: 1 + type: Transform + - uid: 966 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,17.5 + parent: 1 + type: Transform + - uid: 972 + components: + - rot: 3.141592653589793 rad + pos: 29.5,12.5 + parent: 1 + type: Transform + - uid: 973 + components: + - rot: 3.141592653589793 rad + pos: 29.5,13.5 + parent: 1 + type: Transform + - uid: 974 + components: + - rot: 3.141592653589793 rad + pos: 29.5,14.5 + parent: 1 + type: Transform + - uid: 980 + components: + - rot: 3.141592653589793 rad + pos: 29.5,21.5 + parent: 1 + type: Transform + - uid: 981 + components: + - rot: 3.141592653589793 rad + pos: 29.5,20.5 + parent: 1 + type: Transform + - uid: 1263 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,24.5 + parent: 1 + type: Transform + - uid: 1270 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,28.5 + parent: 1 + type: Transform + - uid: 1271 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,28.5 + parent: 1 + type: Transform + - uid: 1272 + components: + - rot: 1.5707963267948966 rad + pos: -2.5,28.5 + parent: 1 + type: Transform + - uid: 1886 + components: + - pos: 13.5,29.5 + parent: 1 + type: Transform + - uid: 2665 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,-14.5 + parent: 1 + type: Transform + - uid: 2819 + components: + - pos: -14.5,23.5 + parent: 1 + type: Transform + - uid: 2821 + components: + - pos: -14.5,24.5 + parent: 1 + type: Transform + - uid: 2824 + components: + - pos: -14.5,28.5 + parent: 1 + type: Transform + - uid: 2825 + components: + - pos: -17.5,30.5 + parent: 1 + type: Transform + - uid: 2826 + components: + - pos: -14.5,29.5 + parent: 1 + type: Transform + - uid: 2830 + components: + - pos: -16.5,30.5 + parent: 1 + type: Transform + - uid: 2989 + components: + - pos: -44.5,65.5 + parent: 1 + type: Transform + - uid: 3358 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-12.5 + parent: 1 + type: Transform + - uid: 3455 + components: + - pos: -20.5,36.5 + parent: 1 + type: Transform + - uid: 3524 + components: + - pos: -49.5,-14.5 + parent: 1 + type: Transform + - uid: 3564 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,-14.5 + parent: 1 + type: Transform + - uid: 3567 + components: + - rot: -1.5707963267948966 rad + pos: -40.5,-14.5 + parent: 1 + type: Transform + - uid: 3634 + components: + - pos: -47.5,-11.5 + parent: 1 + type: Transform + - uid: 3675 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-13.5 + parent: 1 + type: Transform + - uid: 3697 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,-14.5 + parent: 1 + type: Transform + - uid: 3714 + components: + - pos: -42.5,-14.5 + parent: 1 + type: Transform + - uid: 4308 + components: + - pos: -48.5,23.5 + parent: 1 + type: Transform + - uid: 4309 + components: + - pos: -46.5,23.5 + parent: 1 + type: Transform + - uid: 4310 + components: + - pos: -46.5,24.5 + parent: 1 + type: Transform + - uid: 4311 + components: + - pos: -46.5,25.5 + parent: 1 + type: Transform + - uid: 4326 + components: + - pos: -48.5,25.5 + parent: 1 + type: Transform + - uid: 4532 + components: + - pos: -49.5,-11.5 + parent: 1 + type: Transform + - uid: 4540 + components: + - pos: -61.5,-8.5 + parent: 1 + type: Transform + - uid: 4541 + components: + - pos: -60.5,-8.5 + parent: 1 + type: Transform + - uid: 4576 + components: + - pos: -48.5,24.5 + parent: 1 + type: Transform + - uid: 4578 + components: + - pos: 22.5,36.5 + parent: 1 + type: Transform + - uid: 4592 + components: + - pos: 16.5,42.5 + parent: 1 + type: Transform + - uid: 4597 + components: + - pos: 23.5,36.5 + parent: 1 + type: Transform + - uid: 4598 + components: + - pos: 16.5,43.5 + parent: 1 + type: Transform + - uid: 4817 + components: + - pos: -59.5,-6.5 + parent: 1 + type: Transform + - uid: 4818 + components: + - pos: -59.5,-5.5 + parent: 1 + type: Transform + - uid: 4819 + components: + - pos: -59.5,-4.5 + parent: 1 + type: Transform + - uid: 4820 + components: + - pos: -59.5,-3.5 + parent: 1 + type: Transform + - uid: 4821 + components: + - pos: -59.5,-2.5 + parent: 1 + type: Transform + - uid: 4822 + components: + - pos: -59.5,-1.5 + parent: 1 + type: Transform + - uid: 4823 + components: + - pos: -59.5,-0.5 + parent: 1 + type: Transform + - uid: 4824 + components: + - pos: -59.5,0.5 + parent: 1 + type: Transform + - uid: 4825 + components: + - pos: -59.5,1.5 + parent: 1 + type: Transform + - uid: 4826 + components: + - pos: -59.5,2.5 + parent: 1 + type: Transform + - uid: 4837 + components: + - pos: -60.5,3.5 + parent: 1 + type: Transform + - uid: 4838 + components: + - pos: -61.5,3.5 + parent: 1 + type: Transform + - uid: 4839 + components: + - pos: -62.5,3.5 + parent: 1 + type: Transform + - uid: 4840 + components: + - pos: -63.5,3.5 + parent: 1 + type: Transform + - uid: 4841 + components: + - pos: -64.5,3.5 + parent: 1 + type: Transform + - uid: 4845 + components: + - pos: -68.5,3.5 + parent: 1 + type: Transform + - uid: 4846 + components: + - pos: -69.5,3.5 + parent: 1 + type: Transform + - uid: 4847 + components: + - pos: -70.5,3.5 + parent: 1 + type: Transform + - uid: 4848 + components: + - pos: -71.5,3.5 + parent: 1 + type: Transform + - uid: 4852 + components: + - pos: -75.5,3.5 + parent: 1 + type: Transform + - uid: 4863 + components: + - pos: -59.5,-7.5 + parent: 1 + type: Transform + - uid: 4882 + components: + - pos: -65.5,-13.5 + parent: 1 + type: Transform + - uid: 4891 + components: + - pos: -68.5,-8.5 + parent: 1 + type: Transform + - uid: 4892 + components: + - pos: -69.5,-8.5 + parent: 1 + type: Transform + - uid: 4893 + components: + - pos: -71.5,-8.5 + parent: 1 + type: Transform + - uid: 4903 + components: + - pos: -62.5,-8.5 + parent: 1 + type: Transform + - uid: 4911 + components: + - pos: -70.5,-8.5 + parent: 1 + type: Transform + - uid: 4922 + components: + - rot: 3.141592653589793 rad + pos: -70.5,-12.5 + parent: 1 + type: Transform + - uid: 4923 + components: + - rot: 3.141592653589793 rad + pos: -69.5,-12.5 + parent: 1 + type: Transform + - uid: 4930 + components: + - rot: 3.141592653589793 rad + pos: -60.5,-12.5 + parent: 1 + type: Transform + - uid: 4935 + components: + - rot: 3.141592653589793 rad + pos: -61.5,-12.5 + parent: 1 + type: Transform + - uid: 4937 + components: + - rot: 3.141592653589793 rad + pos: -58.5,-12.5 + parent: 1 + type: Transform + - uid: 4938 + components: + - pos: -65.5,-14.5 + parent: 1 + type: Transform + - uid: 4943 + components: + - rot: 3.141592653589793 rad + pos: -57.5,-12.5 + parent: 1 + type: Transform + - uid: 4946 + components: + - rot: 3.141592653589793 rad + pos: -62.5,-12.5 + parent: 1 + type: Transform + - uid: 4947 + components: + - pos: -75.5,-8.5 + parent: 1 + type: Transform + - uid: 4961 + components: + - pos: -63.5,-8.5 + parent: 1 + type: Transform + - uid: 4966 + components: + - pos: -64.5,-8.5 + parent: 1 + type: Transform + - uid: 4968 + components: + - rot: 3.141592653589793 rad + pos: -68.5,-12.5 + parent: 1 + type: Transform + - uid: 4978 + components: + - pos: -73.5,-14.5 + parent: 1 + type: Transform + - uid: 4982 + components: + - pos: -73.5,-13.5 + parent: 1 + type: Transform + - uid: 5069 + components: + - pos: -76.5,4.5 + parent: 1 + type: Transform + - uid: 5070 + components: + - pos: -76.5,5.5 + parent: 1 + type: Transform + - uid: 5071 + components: + - pos: -76.5,6.5 + parent: 1 + type: Transform + - uid: 5172 + components: + - pos: -75.5,7.5 + parent: 1 + type: Transform + - uid: 5174 + components: + - pos: -74.5,7.5 + parent: 1 + type: Transform + - uid: 5760 + components: + - pos: -50.5,48.5 + parent: 1 + type: Transform + - uid: 5763 + components: + - pos: -51.5,48.5 + parent: 1 + type: Transform + - uid: 5766 + components: + - pos: -53.5,48.5 + parent: 1 + type: Transform + - uid: 5768 + components: + - pos: -54.5,48.5 + parent: 1 + type: Transform + - uid: 5770 + components: + - pos: -56.5,48.5 + parent: 1 + type: Transform + - uid: 5820 + components: + - pos: -14.5,46.5 + parent: 1 + type: Transform + - uid: 5822 + components: + - pos: -18.5,46.5 + parent: 1 + type: Transform + - uid: 5827 + components: + - pos: -21.5,36.5 + parent: 1 + type: Transform + - uid: 5831 + components: + - pos: -18.5,47.5 + parent: 1 + type: Transform + - uid: 5832 + components: + - pos: -18.5,48.5 + parent: 1 + type: Transform + - uid: 5833 + components: + - pos: -22.5,36.5 + parent: 1 + type: Transform + - uid: 5900 + components: + - pos: -14.5,49.5 + parent: 1 + type: Transform + - uid: 5939 + components: + - pos: -2.5,49.5 + parent: 1 + type: Transform + - uid: 5949 + components: + - pos: -2.5,50.5 + parent: 1 + type: Transform + - uid: 5950 + components: + - pos: -2.5,51.5 + parent: 1 + type: Transform + - uid: 5951 + components: + - pos: -2.5,52.5 + parent: 1 + type: Transform + - uid: 5952 + components: + - pos: -2.5,53.5 + parent: 1 + type: Transform + - uid: 5960 + components: + - pos: -1.5,54.5 + parent: 1 + type: Transform + - uid: 5961 + components: + - pos: -0.5,54.5 + parent: 1 + type: Transform + - uid: 5962 + components: + - pos: 0.5,54.5 + parent: 1 + type: Transform + - uid: 6016 + components: + - pos: 16.5,53.5 + parent: 1 + type: Transform + - uid: 6017 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,51.5 + parent: 1 + type: Transform + - uid: 6018 + components: + - pos: 13.5,53.5 + parent: 1 + type: Transform + - uid: 6019 + components: + - pos: 14.5,53.5 + parent: 1 + type: Transform + - uid: 6020 + components: + - pos: 15.5,53.5 + parent: 1 + type: Transform + - uid: 6023 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,53.5 + parent: 1 + type: Transform + - uid: 6024 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,50.5 + parent: 1 + type: Transform + - uid: 6040 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,53.5 + parent: 1 + type: Transform + - uid: 6041 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,53.5 + parent: 1 + type: Transform + - uid: 6042 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,52.5 + parent: 1 + type: Transform + - uid: 6351 + components: + - rot: 3.141592653589793 rad + pos: -13.5,53.5 + parent: 1 + type: Transform + - uid: 6353 + components: + - rot: 3.141592653589793 rad + pos: -13.5,56.5 + parent: 1 + type: Transform + - uid: 6354 + components: + - rot: 3.141592653589793 rad + pos: -13.5,54.5 + parent: 1 + type: Transform + - uid: 6357 + components: + - rot: 3.141592653589793 rad + pos: -13.5,57.5 + parent: 1 + type: Transform + - uid: 6388 + components: + - rot: 3.141592653589793 rad + pos: -16.5,58.5 + parent: 1 + type: Transform + - uid: 6400 + components: + - pos: -4.5,60.5 + parent: 1 + type: Transform + - uid: 6401 + components: + - pos: -4.5,61.5 + parent: 1 + type: Transform + - uid: 6403 + components: + - pos: -5.5,62.5 + parent: 1 + type: Transform + - uid: 6404 + components: + - pos: -6.5,62.5 + parent: 1 + type: Transform + - uid: 6405 + components: + - pos: -7.5,62.5 + parent: 1 + type: Transform + - uid: 6406 + components: + - pos: -8.5,62.5 + parent: 1 + type: Transform + - uid: 6407 + components: + - pos: -9.5,62.5 + parent: 1 + type: Transform + - uid: 6435 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,64.5 + parent: 1 + type: Transform + - uid: 6436 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,65.5 + parent: 1 + type: Transform + - uid: 6437 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,65.5 + parent: 1 + type: Transform + - uid: 6438 + components: + - rot: -1.5707963267948966 rad + pos: -12.5,66.5 + parent: 1 + type: Transform + - uid: 6439 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,66.5 + parent: 1 + type: Transform + - uid: 6440 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,67.5 + parent: 1 + type: Transform + - uid: 6441 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,67.5 + parent: 1 + type: Transform + - uid: 6442 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,67.5 + parent: 1 + type: Transform + - uid: 6443 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,67.5 + parent: 1 + type: Transform + - uid: 6444 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,67.5 + parent: 1 + type: Transform + - uid: 6445 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,67.5 + parent: 1 + type: Transform + - uid: 6446 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,67.5 + parent: 1 + type: Transform + - uid: 6447 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,66.5 + parent: 1 + type: Transform + - uid: 6448 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,66.5 + parent: 1 + type: Transform + - uid: 6449 + components: + - rot: -1.5707963267948966 rad + pos: -20.5,65.5 + parent: 1 + type: Transform + - uid: 6450 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,65.5 + parent: 1 + type: Transform + - uid: 6451 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,64.5 + parent: 1 + type: Transform + - uid: 6454 + components: + - pos: -22.5,62.5 + parent: 1 + type: Transform + - uid: 6455 + components: + - pos: -22.5,61.5 + parent: 1 + type: Transform + - uid: 6456 + components: + - pos: -22.5,60.5 + parent: 1 + type: Transform + - uid: 6970 + components: + - pos: -56.5,59.5 + parent: 1 + type: Transform + - uid: 6971 + components: + - pos: -55.5,59.5 + parent: 1 + type: Transform + - uid: 6972 + components: + - pos: -54.5,59.5 + parent: 1 + type: Transform + - uid: 6982 + components: + - pos: -48.5,56.5 + parent: 1 + type: Transform + - uid: 6983 + components: + - pos: -46.5,56.5 + parent: 1 + type: Transform + - uid: 6986 + components: + - pos: -50.5,52.5 + parent: 1 + type: Transform + - uid: 6987 + components: + - pos: -53.5,52.5 + parent: 1 + type: Transform + - uid: 6988 + components: + - pos: -56.5,52.5 + parent: 1 + type: Transform + - uid: 7012 + components: + - pos: -46.5,63.5 + parent: 1 + type: Transform + - uid: 7013 + components: + - pos: -48.5,63.5 + parent: 1 + type: Transform + - uid: 7148 + components: + - pos: -53.5,63.5 + parent: 1 + type: Transform + - uid: 7149 + components: + - pos: -53.5,64.5 + parent: 1 + type: Transform + - uid: 7150 + components: + - pos: -53.5,65.5 + parent: 1 + type: Transform + - uid: 7154 + components: + - pos: -61.5,66.5 + parent: 1 + type: Transform + - uid: 7155 + components: + - pos: -60.5,66.5 + parent: 1 + type: Transform + - uid: 7156 + components: + - pos: -59.5,66.5 + parent: 1 + type: Transform + - uid: 7163 + components: + - pos: -58.5,62.5 + parent: 1 + type: Transform + - uid: 7164 + components: + - pos: -58.5,66.5 + parent: 1 + type: Transform + - uid: 7170 + components: + - pos: -56.5,66.5 + parent: 1 + type: Transform + - uid: 7171 + components: + - pos: -55.5,66.5 + parent: 1 + type: Transform + - uid: 7172 + components: + - pos: -54.5,66.5 + parent: 1 + type: Transform + - uid: 7177 + components: + - pos: -56.5,62.5 + parent: 1 + type: Transform + - uid: 7178 + components: + - pos: -54.5,62.5 + parent: 1 + type: Transform + - uid: 7237 + components: + - pos: -58.5,54.5 + parent: 1 + type: Transform + - uid: 7239 + components: + - pos: -49.5,54.5 + parent: 1 + type: Transform + - uid: 7249 + components: + - pos: -49.5,88.5 + parent: 1 + type: Transform + - uid: 7250 + components: + - pos: -49.5,87.5 + parent: 1 + type: Transform + - uid: 7251 + components: + - pos: -49.5,86.5 + parent: 1 + type: Transform + - uid: 7252 + components: + - pos: -49.5,85.5 + parent: 1 + type: Transform + - uid: 7253 + components: + - pos: -49.5,84.5 + parent: 1 + type: Transform + - uid: 7254 + components: + - pos: -49.5,83.5 + parent: 1 + type: Transform + - uid: 7262 + components: + - pos: -51.5,91.5 + parent: 1 + type: Transform + - uid: 7295 + components: + - pos: -62.5,88.5 + parent: 1 + type: Transform + - uid: 7305 + components: + - pos: -60.5,90.5 + parent: 1 + type: Transform + - uid: 7310 + components: + - pos: -58.5,90.5 + parent: 1 + type: Transform + - uid: 7315 + components: + - pos: -60.5,82.5 + parent: 1 + type: Transform + - uid: 7316 + components: + - pos: -63.5,85.5 + parent: 1 + type: Transform + - uid: 7321 + components: + - pos: -59.5,90.5 + parent: 1 + type: Transform + - uid: 7727 + components: + - pos: -58.5,82.5 + parent: 1 + type: Transform + - uid: 7734 + components: + - pos: -63.5,84.5 + parent: 1 + type: Transform + - uid: 7735 + components: + - pos: -63.5,83.5 + parent: 1 + type: Transform + - uid: 7736 + components: + - pos: -61.5,82.5 + parent: 1 + type: Transform + - uid: 7737 + components: + - pos: -59.5,82.5 + parent: 1 + type: Transform + - uid: 7861 + components: + - pos: -47.5,52.5 + parent: 1 + type: Transform + - uid: 8423 + components: + - pos: -57.5,48.5 + parent: 1 + type: Transform + - uid: 9033 + components: + - pos: -36.5,63.5 + parent: 1 + type: Transform + - uid: 9034 + components: + - pos: -36.5,66.5 + parent: 1 + type: Transform + - uid: 9035 + components: + - pos: -36.5,64.5 + parent: 1 + type: Transform + - uid: 9036 + components: + - pos: -36.5,65.5 + parent: 1 + type: Transform + - uid: 9037 + components: + - pos: -36.5,62.5 + parent: 1 + type: Transform + - uid: 9039 + components: + - pos: -36.5,68.5 + parent: 1 + type: Transform + - uid: 9040 + components: + - pos: -36.5,69.5 + parent: 1 + type: Transform + - uid: 9041 + components: + - pos: -37.5,69.5 + parent: 1 + type: Transform + - uid: 9042 + components: + - pos: -36.5,61.5 + parent: 1 + type: Transform + - uid: 9043 + components: + - pos: -38.5,69.5 + parent: 1 + type: Transform + - uid: 9044 + components: + - pos: -39.5,69.5 + parent: 1 + type: Transform + - uid: 9045 + components: + - pos: -36.5,67.5 + parent: 1 + type: Transform + - uid: 9046 + components: + - pos: -36.5,60.5 + parent: 1 + type: Transform + - uid: 9047 + components: + - pos: -36.5,59.5 + parent: 1 + type: Transform + - uid: 9190 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,57.5 + parent: 1 + type: Transform + - uid: 9281 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,32.5 + parent: 1 + type: Transform + - uid: 9302 + components: + - pos: -65.5,24.5 + parent: 1 + type: Transform + - uid: 9303 + components: + - pos: -64.5,24.5 + parent: 1 + type: Transform + - uid: 9306 + components: + - pos: -66.5,24.5 + parent: 1 + type: Transform + - uid: 9315 + components: + - rot: 1.5707963267948966 rad + pos: -63.5,29.5 + parent: 1 + type: Transform + - uid: 9342 + components: + - pos: -73.5,18.5 + parent: 1 + type: Transform + - uid: 9466 + components: + - pos: -72.5,22.5 + parent: 1 + type: Transform + - uid: 9619 + components: + - pos: -77.5,26.5 + parent: 1 + type: Transform + - uid: 9632 + components: + - pos: -71.5,32.5 + parent: 1 + type: Transform + - uid: 9661 + components: + - pos: -68.5,18.5 + parent: 1 + type: Transform + - uid: 9664 + components: + - pos: -69.5,18.5 + parent: 1 + type: Transform + - uid: 9665 + components: + - pos: -72.5,20.5 + parent: 1 + type: Transform + - uid: 9682 + components: + - pos: -77.5,24.5 + parent: 1 + type: Transform + - uid: 9696 + components: + - pos: -86.5,23.5 + parent: 1 + type: Transform + - uid: 9697 + components: + - pos: -86.5,24.5 + parent: 1 + type: Transform + - uid: 9698 + components: + - pos: -86.5,25.5 + parent: 1 + type: Transform + - uid: 9699 + components: + - pos: -86.5,26.5 + parent: 1 + type: Transform + - uid: 9700 + components: + - pos: -86.5,27.5 + parent: 1 + type: Transform + - uid: 9799 + components: + - pos: -82.5,47.5 + parent: 1 + type: Transform + - uid: 9824 + components: + - pos: -79.5,47.5 + parent: 1 + type: Transform + - uid: 9830 + components: + - pos: -84.5,47.5 + parent: 1 + type: Transform + - uid: 9831 + components: + - pos: -83.5,47.5 + parent: 1 + type: Transform + - uid: 9832 + components: + - pos: -81.5,47.5 + parent: 1 + type: Transform + - uid: 9833 + components: + - pos: -80.5,47.5 + parent: 1 + type: Transform + - uid: 9834 + components: + - pos: -85.5,47.5 + parent: 1 + type: Transform + - uid: 9835 + components: + - pos: -85.5,46.5 + parent: 1 + type: Transform + - uid: 9836 + components: + - pos: -85.5,45.5 + parent: 1 + type: Transform + - uid: 9837 + components: + - pos: -85.5,44.5 + parent: 1 + type: Transform + - uid: 9838 + components: + - pos: -85.5,43.5 + parent: 1 + type: Transform + - uid: 9839 + components: + - pos: -85.5,42.5 + parent: 1 + type: Transform + - uid: 9840 + components: + - pos: -85.5,41.5 + parent: 1 + type: Transform + - uid: 9841 + components: + - pos: -85.5,40.5 + parent: 1 + type: Transform + - uid: 9842 + components: + - pos: -85.5,39.5 + parent: 1 + type: Transform + - uid: 9843 + components: + - pos: -85.5,38.5 + parent: 1 + type: Transform + - uid: 9844 + components: + - pos: -85.5,37.5 + parent: 1 + type: Transform + - uid: 9845 + components: + - pos: -85.5,36.5 + parent: 1 + type: Transform + - uid: 9846 + components: + - pos: -85.5,35.5 + parent: 1 + type: Transform + - uid: 9847 + components: + - pos: -85.5,34.5 + parent: 1 + type: Transform + - uid: 9893 + components: + - pos: -85.5,33.5 + parent: 1 + type: Transform + - uid: 10159 + components: + - pos: -70.5,18.5 + parent: 1 + type: Transform + - uid: 10172 + components: + - pos: -69.5,24.5 + parent: 1 + type: Transform + - uid: 10242 + components: + - pos: -69.5,27.5 + parent: 1 + type: Transform + - uid: 10344 + components: + - pos: -43.5,-14.5 + parent: 1 + type: Transform + - uid: 10753 + components: + - rot: -1.5707963267948966 rad + pos: -83.5,49.5 + parent: 1 + type: Transform + - uid: 10756 + components: + - rot: -1.5707963267948966 rad + pos: -81.5,49.5 + parent: 1 + type: Transform + - uid: 10757 + components: + - rot: -1.5707963267948966 rad + pos: -80.5,50.5 + parent: 1 + type: Transform + - uid: 10760 + components: + - rot: -1.5707963267948966 rad + pos: -82.5,49.5 + parent: 1 + type: Transform + - uid: 11508 + components: + - rot: 1.5707963267948966 rad + pos: -84.5,50.5 + parent: 1 + type: Transform + - uid: 13846 + components: + - rot: -1.5707963267948966 rad + pos: 30.5,9.5 + parent: 1 + type: Transform + - uid: 13847 + components: + - rot: -1.5707963267948966 rad + pos: 31.5,9.5 + parent: 1 + type: Transform + - uid: 14528 + components: + - pos: -15.5,30.5 + parent: 1 + type: Transform + - uid: 14779 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,48.5 + parent: 1 + type: Transform + - uid: 14793 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,49.5 + parent: 1 + type: Transform + - uid: 14934 + components: + - pos: -40.5,69.5 + parent: 1 + type: Transform + - uid: 15036 + components: + - pos: -51.5,30.5 + parent: 1 + type: Transform + - uid: 15119 + components: + - pos: -53.5,30.5 + parent: 1 + type: Transform + - uid: 15382 + components: + - pos: -41.5,69.5 + parent: 1 + type: Transform + - uid: 15383 + components: + - pos: -42.5,69.5 + parent: 1 + type: Transform + - uid: 15384 + components: + - pos: -43.5,69.5 + parent: 1 + type: Transform + - uid: 15385 + components: + - pos: -44.5,69.5 + parent: 1 + type: Transform + - uid: 15836 + components: + - pos: -52.5,30.5 + parent: 1 + type: Transform +- proto: ResearchAndDevelopmentServer + entities: + - uid: 6943 + components: + - pos: -13.5,-8.5 + parent: 1 + type: Transform +- proto: RevolverCapGun + entities: + - uid: 2251 + components: + - rot: 1.5707963267948966 rad + pos: 0.88706434,42.793312 + parent: 1 + type: Transform +- proto: RubberStampApproved + entities: + - uid: 7583 + components: + - pos: -19.639711,39.734726 + parent: 1 + type: Transform +- proto: RubberStampClown + entities: + - uid: 4233 + components: + - pos: -41.031456,28.5956 + parent: 1 + type: Transform +- proto: RubberStampDenied + entities: + - uid: 7584 + components: + - pos: -19.389711,39.609726 + parent: 1 + type: Transform +- proto: RubberStampMime + entities: + - uid: 4218 + components: + - pos: -41.209343,23.558546 + parent: 1 + type: Transform +- proto: SalvageMagnet + entities: + - uid: 14223 + components: + - pos: -49.5,-15.5 + parent: 1 + type: Transform +- proto: Saw + entities: + - uid: 12803 + components: + - pos: 19.561224,28.58777 + parent: 1 + type: Transform +- proto: SaxophoneInstrument + entities: + - uid: 9326 + components: + - pos: -71.56229,45.50187 + parent: 1 + type: Transform +- proto: SecurityTechFab + entities: + - uid: 7917 + components: + - pos: -41.5,65.5 + parent: 1 + type: Transform +- proto: SeedExtractor + entities: + - uid: 6942 + components: + - pos: -41.5,49.5 + parent: 1 + type: Transform + - uid: 7723 + components: + - pos: -58.5,83.5 + parent: 1 + type: Transform +- proto: ShardGlass + entities: + - uid: 8324 + components: + - pos: 11.47951,24.442 + parent: 1 + type: Transform +- proto: SheetGlass + entities: + - uid: 262 + components: + - pos: -12.723352,-1.4051902 + parent: 1 + type: Transform + - uid: 263 + components: + - pos: -12.582727,-1.3895652 + parent: 1 + type: Transform + - uid: 326 + components: + - pos: -14.514996,-14.43877 + parent: 1 + type: Transform + - uid: 13605 + components: + - pos: -65.92235,25.549358 + parent: 1 + type: Transform + - uid: 13606 + components: + - pos: -65.92235,25.549358 + parent: 1 + type: Transform +- proto: SheetPlasma + entities: + - uid: 320 + components: + - pos: -17.481846,-13.543035 + parent: 1 + type: Transform + - uid: 10876 + components: + - pos: -22.475372,57.582253 + parent: 1 + type: Transform +- proto: SheetPlasteel + entities: + - uid: 13603 + components: + - pos: -66.25047,25.549358 + parent: 1 + type: Transform + - uid: 13604 + components: + - pos: -66.25047,25.549358 + parent: 1 + type: Transform +- proto: SheetPlastic + entities: + - uid: 264 + components: + - pos: -12.32629,-1.4051902 + parent: 1 + type: Transform + - uid: 265 + components: + - pos: -12.23254,-1.4051902 + parent: 1 + type: Transform +- proto: SheetSteel + entities: + - uid: 266 + components: + - pos: -11.498165,-5.4051905 + parent: 1 + type: Transform + - uid: 267 + components: + - pos: -11.016892,-5.4477215 + parent: 1 + type: Transform + - uid: 13600 + components: + - pos: -66.496956,25.561287 + parent: 1 + type: Transform + - uid: 13601 + components: + - pos: -66.496956,25.561287 + parent: 1 + type: Transform + - uid: 13610 + components: + - pos: -82.49008,29.604647 + parent: 1 + type: Transform + - uid: 13611 + components: + - pos: -82.49008,29.604647 + parent: 1 + type: Transform +- proto: SheetSteel1 + entities: + - uid: 268 + components: + - pos: 2.5175354,-1.5196886 + parent: 1 + type: Transform + - count: 10 + type: Stack +- proto: SheetUranium1 + entities: + - uid: 10865 + components: + - pos: -21.490997,57.551003 + parent: 1 + type: Transform + - uid: 10866 + components: + - pos: -21.490997,57.551003 + parent: 1 + type: Transform + - uid: 10867 + components: + - pos: -21.490997,57.551003 + parent: 1 + type: Transform + - uid: 10868 + components: + - pos: -21.490997,57.551003 + parent: 1 + type: Transform + - uid: 10869 + components: + - pos: -21.490997,57.551003 + parent: 1 + type: Transform +- proto: ShuttersNormal + entities: + - uid: 105 + components: + - pos: 0.5,3.5 + parent: 1 + type: Transform + - links: + - 523 + type: DeviceLinkSink + - uid: 215 + components: + - pos: 2.5,3.5 + parent: 1 + type: Transform + - links: + - 523 + type: DeviceLinkSink + - uid: 216 + components: + - pos: 1.5,3.5 + parent: 1 + type: Transform + - links: + - 523 + type: DeviceLinkSink + - uid: 1446 + components: + - pos: -10.5,11.5 + parent: 1 + type: Transform + - uid: 1487 + components: + - pos: -10.5,12.5 + parent: 1 + type: Transform + - uid: 4494 + components: + - pos: -48.5,20.5 + parent: 1 + type: Transform + - uid: 4495 + components: + - pos: -47.5,20.5 + parent: 1 + type: Transform + - uid: 4496 + components: + - pos: -45.5,19.5 + parent: 1 + type: Transform + - uid: 4497 + components: + - pos: -44.5,19.5 + parent: 1 + type: Transform + - uid: 4499 + components: + - pos: -41.5,19.5 + parent: 1 + type: Transform + - uid: 7075 + components: + - pos: -51.5,34.5 + parent: 1 + type: Transform + - links: + - 7077 + type: DeviceLinkSink + - uid: 7076 + components: + - pos: -50.5,34.5 + parent: 1 + type: Transform + - links: + - 7077 + type: DeviceLinkSink + - uid: 7468 + components: + - pos: -53.5,80.5 + parent: 1 + type: Transform + - uid: 7476 + components: + - pos: -53.5,79.5 + parent: 1 + type: Transform + - uid: 7719 + components: + - pos: -49.5,68.5 + parent: 1 + type: Transform + - uid: 7860 + components: + - pos: -49.5,67.5 + parent: 1 + type: Transform + - uid: 9955 + components: + - pos: -79.5,21.5 + parent: 1 + type: Transform +- proto: ShuttersNormalOpen + entities: + - uid: 4498 + components: + - pos: -42.5,19.5 + parent: 1 + type: Transform + - uid: 10698 + components: + - pos: -70.5,18.5 + parent: 1 + type: Transform + - links: + - 10701 + type: DeviceLinkSink + - uid: 10699 + components: + - pos: -69.5,18.5 + parent: 1 + type: Transform + - links: + - 10701 + type: DeviceLinkSink + - uid: 10700 + components: + - pos: -68.5,18.5 + parent: 1 + type: Transform + - links: + - 10701 + type: DeviceLinkSink +- proto: ShuttleConsoleCircuitboard + entities: + - uid: 15896 + components: + - pos: 11.536212,-16.49545 + parent: 1 + type: Transform +- proto: SignalButton + entities: + - uid: 351 + components: + - rot: 3.141592653589793 rad + pos: 3.5,-12.5 + parent: 1 + type: Transform + - linkedPorts: + 42: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 615 + components: + - pos: 17.5,-7.5 + parent: 1 + type: Transform + - linkedPorts: + 590: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 7077 + components: + - rot: 3.141592653589793 rad + pos: -52.5,34.5 + parent: 1 + type: Transform + - linkedPorts: + 7075: + - Pressed: Toggle + 7076: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 7192 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,79.5 + parent: 1 + type: Transform + - linkedPorts: + 7211: + - Pressed: Toggle + 7210: + - Pressed: Toggle + 7209: + - Pressed: Toggle + 7208: + - Pressed: Toggle + 7207: + - Pressed: Toggle + 7204: + - Pressed: Toggle + 7212: + - Pressed: Toggle + 7213: + - Pressed: Toggle + 7214: + - Pressed: Toggle + 7215: + - Pressed: Toggle + 7216: + - Pressed: Toggle + 7217: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 7218 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,68.5 + parent: 1 + type: Transform + - linkedPorts: + 7204: + - Pressed: Toggle + 7207: + - Pressed: Toggle + 7208: + - Pressed: Toggle + 7209: + - Pressed: Toggle + 7210: + - Pressed: Toggle + 7211: + - Pressed: Toggle + 7217: + - Pressed: Toggle + 7216: + - Pressed: Toggle + 7215: + - Pressed: Toggle + 7214: + - Pressed: Toggle + 7213: + - Pressed: Toggle + 7212: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 10701 + components: + - pos: -71.5,18.5 + parent: 1 + type: Transform + - linkedPorts: + 10698: + - Pressed: Toggle + 10699: + - Pressed: Toggle + 10700: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 13361 + components: + - pos: -78.5,47.5 + parent: 1 + type: Transform + - linkedPorts: + 13360: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 13367 + components: + - pos: -71.5,57.5 + parent: 1 + type: Transform + - linkedPorts: + 13366: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 13821 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,-9.5 + parent: 1 + type: Transform + - linkedPorts: + 13818: + - Pressed: Toggle + 13817: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 13822 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,-9.5 + parent: 1 + type: Transform + - linkedPorts: + 13819: + - Pressed: Toggle + 13820: + - Pressed: Toggle + type: DeviceLinkSource + - uid: 15185 + components: + - rot: 3.141592653589793 rad + pos: 18.5,48.5 + parent: 1 + type: Transform + - linkedPorts: + 15173: + - Pressed: Toggle + 15175: + - Pressed: Toggle + 15174: + - Pressed: Toggle + 15177: + - Pressed: Toggle + 15178: + - Pressed: Toggle + 15179: + - Pressed: Toggle + 15180: + - Pressed: Toggle + 15181: + - Pressed: Toggle + 15182: + - Pressed: Toggle + 15183: + - Pressed: Toggle + 15184: + - Pressed: Toggle + 15176: + - Pressed: Toggle + type: DeviceLinkSource +- proto: SignAnomaly + entities: + - uid: 325 + components: + - pos: -0.5,-9.5 + parent: 1 + type: Transform +- proto: SignAnomaly2 + entities: + - uid: 324 + components: + - pos: -10.5,-11.5 + parent: 1 + type: Transform +- proto: SignBar + entities: + - uid: 7371 + components: + - pos: -33.5,39.5 + parent: 1 + type: Transform + - uid: 7372 + components: + - pos: -37.5,34.5 + parent: 1 + type: Transform +- proto: SignBio + entities: + - uid: 14343 + components: + - pos: -76.5,57.5 + parent: 1 + type: Transform +- proto: SignCargo + entities: + - uid: 3658 + components: + - pos: -39.5,2.5 + parent: 1 + type: Transform + - uid: 3659 + components: + - pos: -35.5,2.5 + parent: 1 + type: Transform +- proto: SignChem + entities: + - uid: 1906 + components: + - pos: -3.5,28.5 + parent: 1 + type: Transform + - uid: 1907 + components: + - pos: 1.5,27.5 + parent: 1 + type: Transform +- proto: SignCloning + entities: + - uid: 1350 + components: + - pos: 2.5,35.5 + parent: 1 + type: Transform +- proto: SignCryogenicsMed + entities: + - uid: 1207 + components: + - pos: 5.5,34.5 + parent: 1 + type: Transform + - uid: 1321 + components: + - pos: 5.5,32.5 + parent: 1 + type: Transform +- proto: SignDanger + entities: + - uid: 14836 + components: + - pos: 11.5,-15.5 + parent: 1 + type: Transform + - uid: 14840 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,-12.5 + parent: 1 + type: Transform +- proto: SignDirectionalBar + entities: + - uid: 14501 + components: + - rot: 3.141592653589793 rad + pos: -59.490047,7.285572 + parent: 1 + type: Transform + - uid: 14507 + components: + - rot: 3.141592653589793 rad + pos: -39.450584,8.088224 + parent: 1 + type: Transform + - uid: 14525 + components: + - rot: 3.141592653589793 rad + pos: -14.487816,7.472787 + parent: 1 + type: Transform + - uid: 14530 + components: + - rot: -1.5707963267948966 rad + pos: -14.482212,30.621857 + parent: 1 + type: Transform + - uid: 14537 + components: + - rot: -1.5707963267948966 rad + pos: -18.473362,34.479904 + parent: 1 + type: Transform + - uid: 14547 + components: + - rot: 1.5707963267948966 rad + pos: -55.470596,30.735767 + parent: 1 + type: Transform +- proto: SignDirectionalBridge + entities: + - uid: 14517 + components: + - rot: 3.141592653589793 rad + pos: -14.488382,7.264183 + parent: 1 + type: Transform + - uid: 14518 + components: + - rot: 1.5707963267948966 rad + pos: -32.437344,7.701683 + parent: 1 + type: Transform + - uid: 14519 + components: + - rot: 1.5707963267948966 rad + pos: -55.473106,3.3110576 + parent: 1 + type: Transform + - uid: 14535 + components: + - rot: 3.141592653589793 rad + pos: -14.4896145,34.68303 + parent: 1 + type: Transform + - uid: 14540 + components: + - rot: 1.5707963267948966 rad + pos: -35.48712,30.33314 + parent: 1 + type: Transform + - uid: 14549 + components: + - rot: 1.5707963267948966 rad + pos: -55.470596,30.513163 + parent: 1 + type: Transform + - uid: 14552 + components: + - rot: 1.5707963267948966 rad + pos: -45.46681,34.272972 + parent: 1 + type: Transform + - uid: 14556 + components: + - pos: -49.482433,48.469536 + parent: 1 + type: Transform +- proto: SignDirectionalChapel + entities: + - uid: 14516 + components: + - rot: 1.5707963267948966 rad + pos: -10.488658,7.654808 + parent: 1 + type: Transform + - uid: 14520 + components: + - rot: 1.5707963267948966 rad + pos: -30.469654,3.3579326 + parent: 1 + type: Transform + - uid: 14521 + components: + - rot: 1.5707963267948966 rad + pos: -59.50527,3.7641826 + parent: 1 + type: Transform + - uid: 14527 + components: + - pos: 12.5,4.5 + parent: 1 + type: Transform +- proto: SignDirectionalEng + entities: + - uid: 14500 + components: + - rot: 3.141592653589793 rad + pos: -59.490047,7.504322 + parent: 1 + type: Transform + - uid: 14510 + components: + - rot: 3.141592653589793 rad + pos: -39.452663,8.478849 + parent: 1 + type: Transform + - uid: 14523 + components: + - rot: -1.5707963267948966 rad + pos: -14.487816,3.550912 + parent: 1 + type: Transform + - uid: 14533 + components: + - rot: -1.5707963267948966 rad + pos: -14.4896145,34.261154 + parent: 1 + type: Transform + - uid: 14545 + components: + - rot: -1.5707963267948966 rad + pos: -39.47286,34.276833 + parent: 1 + type: Transform + - uid: 14554 + components: + - rot: -1.5707963267948966 rad + pos: -45.482433,34.679222 + parent: 1 + type: Transform + - uid: 14555 + components: + - rot: -1.5707963267948966 rad + pos: -49.46681,48.26641 + parent: 1 + type: Transform +- proto: SignDirectionalEvac + entities: + - uid: 14505 + components: + - rot: 1.5707963267948966 rad + pos: -55.472736,3.7415338 + parent: 1 + type: Transform + - uid: 14513 + components: + - rot: 1.5707963267948966 rad + pos: -30.468357,3.5641694 + parent: 1 + type: Transform + - uid: 14514 + components: + - rot: 1.5707963267948966 rad + pos: -10.488658,7.248558 + parent: 1 + type: Transform + - uid: 14526 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,7.5 + parent: 1 + type: Transform + - uid: 14531 + components: + - pos: -14.474767,30.840607 + parent: 1 + type: Transform + - uid: 14542 + components: + - pos: -39.48712,30.567514 + parent: 1 + type: Transform +- proto: SignDirectionalGravity + entities: + - uid: 14506 + components: + - rot: 1.5707963267948966 rad + pos: -55.472736,3.5227838 + parent: 1 + type: Transform + - uid: 14512 + components: + - rot: 1.5707963267948966 rad + pos: -30.468357,3.7672944 + parent: 1 + type: Transform + - uid: 14532 + components: + - rot: 1.5707963267948966 rad + pos: -14.490392,7.668745 + parent: 1 + type: Transform + - uid: 14534 + components: + - pos: -14.4896145,34.46428 + parent: 1 + type: Transform + - uid: 14546 + components: + - pos: -39.47286,34.479958 + parent: 1 + type: Transform +- proto: SignDirectionalJanitor + entities: + - uid: 14561 + components: + - pos: -49.48419,37.304916 + parent: 1 + type: Transform +- proto: SignDirectionalMed + entities: + - uid: 14502 + components: + - rot: 1.5707963267948966 rad + pos: -55.48836,7.2415333 + parent: 1 + type: Transform + - uid: 14509 + components: + - rot: 1.5707963267948966 rad + pos: -32.43669,7.2913494 + parent: 1 + type: Transform + - uid: 14515 + components: + - rot: 3.141592653589793 rad + pos: -10.488658,7.451683 + parent: 1 + type: Transform + - uid: 14538 + components: + - rot: 1.5707963267948966 rad + pos: -35.48712,30.73939 + parent: 1 + type: Transform + - uid: 14550 + components: + - rot: 1.5707963267948966 rad + pos: -55.48622,34.45066 + parent: 1 + type: Transform + - uid: 14557 + components: + - pos: -49.482433,48.657036 + parent: 1 + type: Transform + - uid: 14558 + components: + - rot: 1.5707963267948966 rad + pos: -45.49806,34.875084 + parent: 1 + type: Transform +- proto: SignDirectionalSci + entities: + - uid: 2816 + components: + - pos: -14.4827,30.222769 + parent: 1 + type: Transform + - uid: 14503 + components: + - rot: 1.5707963267948966 rad + pos: -55.48836,7.4602833 + parent: 1 + type: Transform + - uid: 14511 + components: + - rot: 1.5707963267948966 rad + pos: -32.43541,7.4944744 + parent: 1 + type: Transform + - uid: 14539 + components: + - rot: 1.5707963267948966 rad + pos: -35.48712,30.55189 + parent: 1 + type: Transform + - uid: 14551 + components: + - pos: -55.472015,30.294413 + parent: 1 + type: Transform +- proto: SignDirectionalSec + entities: + - uid: 14499 + components: + - rot: 3.141592653589793 rad + pos: -59.490047,7.723072 + parent: 1 + type: Transform + - uid: 14508 + components: + - rot: 3.141592653589793 rad + pos: -39.450584,8.275724 + parent: 1 + type: Transform + - uid: 14522 + components: + - rot: -1.5707963267948966 rad + pos: -14.487816,3.769662 + parent: 1 + type: Transform + - uid: 14536 + components: + - rot: -1.5707963267948966 rad + pos: -18.473362,34.27678 + parent: 1 + type: Transform + - uid: 14541 + components: + - rot: -1.5707963267948966 rad + pos: -39.48712,30.348764 + parent: 1 + type: Transform + - uid: 14548 + components: + - rot: 3.141592653589793 rad + pos: -55.48622,34.247536 + parent: 1 + type: Transform + - uid: 14553 + components: + - rot: 3.141592653589793 rad + pos: -45.482433,34.476097 + parent: 1 + type: Transform +- proto: SignDirectionalSolar + entities: + - uid: 14544 + components: + - pos: 23.5,3.5 + parent: 1 + type: Transform +- proto: SignDirectionalSupply + entities: + - uid: 14504 + components: + - rot: 1.5707963267948966 rad + pos: -55.48836,7.6790333 + parent: 1 + type: Transform + - uid: 14524 + components: + - rot: -1.5707963267948966 rad + pos: -14.487816,3.363412 + parent: 1 + type: Transform + - uid: 14529 + components: + - pos: -14.482212,30.433353 + parent: 1 + type: Transform + - uid: 14543 + components: + - pos: -39.48712,30.77064 + parent: 1 + type: Transform +- proto: SignEVA + entities: + - uid: 7394 + components: + - pos: -14.5,49.5 + parent: 1 + type: Transform +- proto: SignLibrary + entities: + - uid: 3397 + components: + - pos: -24.5,7.5 + parent: 1 + type: Transform +- proto: SignMail + entities: + - uid: 15097 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,-0.5 + parent: 1 + type: Transform + - uid: 15281 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,0.5 + parent: 1 + type: Transform +- proto: SignMedical + entities: + - uid: 1361 + components: + - pos: 5.5,27.5 + parent: 1 + type: Transform + - uid: 1903 + components: + - pos: 1.5,31.5 + parent: 1 + type: Transform +- proto: SignMorgue + entities: + - uid: 1149 + components: + - pos: 2.5,18.5 + parent: 1 + type: Transform +- proto: SignPrison + entities: + - uid: 7205 + components: + - pos: -51.5,70.5 + parent: 1 + type: Transform + - uid: 7331 + components: + - pos: -51.5,77.5 + parent: 1 + type: Transform +- proto: SignScience + entities: + - uid: 228 + components: + - pos: -9.5,3.5 + parent: 1 + type: Transform +- proto: SignSecureMedRed + entities: + - uid: 1596 + components: + - pos: 12.5,-12.5 + parent: 1 + type: Transform + - uid: 7440 + components: + - pos: 9.5,41.5 + parent: 1 + type: Transform + - uid: 14837 + components: + - pos: 7.5,-15.5 + parent: 1 + type: Transform + - uid: 14841 + components: + - pos: 8.5,-11.5 + parent: 1 + type: Transform + - uid: 15010 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,-13.5 + parent: 1 + type: Transform + - uid: 15020 + components: + - rot: 1.5707963267948966 rad + pos: 12.5,-14.5 + parent: 1 + type: Transform +- proto: SignSpace + entities: + - uid: 5493 + components: + - pos: -53.5,78.5 + parent: 1 + type: Transform + - uid: 7329 + components: + - pos: -53.5,69.5 + parent: 1 + type: Transform + - uid: 7330 + components: + - pos: -49.5,69.5 + parent: 1 + type: Transform + - uid: 7333 + components: + - pos: -49.5,78.5 + parent: 1 + type: Transform +- proto: SignTelecomms + entities: + - uid: 9807 + components: + - pos: -40.5,7.5 + parent: 1 + type: Transform + - uid: 15381 + components: + - pos: 27.5,22.5 + parent: 1 + type: Transform +- proto: SignVirology + entities: + - uid: 1145 + components: + - pos: 5.5,20.5 + parent: 1 + type: Transform +- proto: SingularityGenerator + entities: + - uid: 9976 + components: + - pos: -77.5,22.5 + parent: 1 + type: Transform + - uid: 10648 + components: + - pos: -97.5,25.5 + parent: 1 + type: Transform +- proto: Sink + entities: + - uid: 4079 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,1.5 + parent: 1 + type: Transform + - uid: 4080 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,0.5 + parent: 1 + type: Transform + - uid: 4081 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,-0.5 + parent: 1 + type: Transform +- proto: SinkStemlessWater + entities: + - uid: 7088 + components: + - pos: -51.5,41.5 + parent: 1 + type: Transform +- proto: SinkWide + entities: + - uid: 15008 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,44.5 + parent: 1 + type: Transform +- proto: SMESBasic + entities: + - uid: 749 + components: + - name: Southeast Solars SMES + type: MetaData + - pos: 27.5,-7.5 + parent: 1 + type: Transform + - uid: 921 + components: + - name: Grav SMES + type: MetaData + - pos: 25.5,3.5 + parent: 1 + type: Transform + - uid: 2761 + components: + - name: Telecomms SMES + type: MetaData + - pos: 25.5,23.5 + parent: 1 + type: Transform + - uid: 10147 + components: + - name: SMES Bank 4 + type: MetaData + - pos: -71.5,28.5 + parent: 1 + type: Transform + - uid: 10148 + components: + - name: SMES Bank 3 + type: MetaData + - pos: -71.5,29.5 + parent: 1 + type: Transform + - uid: 10149 + components: + - name: SMES Bank 2 + type: MetaData + - pos: -71.5,30.5 + parent: 1 + type: Transform + - uid: 10165 + components: + - name: SMES Bank 1 + type: MetaData + - pos: -71.5,31.5 + parent: 1 + type: Transform +- proto: SMESMachineCircuitboard + entities: + - uid: 5551 + components: + - pos: -52.558533,24.686655 + parent: 1 + type: Transform + - uid: 5552 + components: + - pos: -52.386658,24.45228 + parent: 1 + type: Transform +- proto: SmokingPipe + entities: + - uid: 61 + components: + - pos: -34.59064,49.648758 + parent: 1 + type: Transform + - uid: 70 + components: + - pos: -34.481266,49.461258 + parent: 1 + type: Transform +- proto: soda_dispenser + entities: + - uid: 5270 + components: + - pos: -54.5,21.5 + parent: 1 + type: Transform + - uid: 9742 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,35.5 + parent: 1 + type: Transform + - uid: 15221 + components: + - rot: 3.141592653589793 rad + pos: 15.5,50.5 + parent: 1 + type: Transform +- proto: SolarAssemblyPart + entities: + - uid: 15982 + components: + - pos: -7.5718555,8.615294 + parent: 1 + type: Transform + - uid: 15983 + components: + - pos: -7.2749805,8.599669 + parent: 1 + type: Transform + - uid: 15984 + components: + - pos: -7.3374805,8.490294 + parent: 1 + type: Transform + - uid: 15985 + components: + - pos: -7.6812305,8.552794 + parent: 1 + type: Transform +- proto: SolarPanel + entities: + - uid: 803 + components: + - pos: 18.5,-14.5 + parent: 1 + type: Transform + - uid: 804 + components: + - pos: 19.5,-14.5 + parent: 1 + type: Transform + - uid: 805 + components: + - pos: 20.5,-14.5 + parent: 1 + type: Transform + - uid: 806 + components: + - pos: 21.5,-14.5 + parent: 1 + type: Transform + - uid: 807 + components: + - pos: 22.5,-14.5 + parent: 1 + type: Transform + - uid: 808 + components: + - pos: 23.5,-14.5 + parent: 1 + type: Transform + - uid: 809 + components: + - pos: 24.5,-14.5 + parent: 1 + type: Transform + - uid: 810 + components: + - pos: 25.5,-14.5 + parent: 1 + type: Transform + - uid: 811 + components: + - pos: 26.5,-14.5 + parent: 1 + type: Transform + - uid: 812 + components: + - pos: 27.5,-14.5 + parent: 1 + type: Transform + - uid: 813 + components: + - pos: 18.5,-16.5 + parent: 1 + type: Transform + - uid: 814 + components: + - pos: 19.5,-16.5 + parent: 1 + type: Transform + - uid: 815 + components: + - pos: 20.5,-16.5 + parent: 1 + type: Transform + - uid: 816 + components: + - pos: 21.5,-16.5 + parent: 1 + type: Transform + - uid: 817 + components: + - pos: 22.5,-16.5 + parent: 1 + type: Transform + - uid: 818 + components: + - pos: 23.5,-16.5 + parent: 1 + type: Transform + - uid: 819 + components: + - pos: 24.5,-16.5 + parent: 1 + type: Transform + - uid: 820 + components: + - pos: 25.5,-16.5 + parent: 1 + type: Transform + - uid: 821 + components: + - pos: 26.5,-16.5 + parent: 1 + type: Transform + - uid: 822 + components: + - pos: 27.5,-16.5 + parent: 1 + type: Transform + - uid: 823 + components: + - pos: 19.5,-18.5 + parent: 1 + type: Transform + - uid: 824 + components: + - pos: 20.5,-18.5 + parent: 1 + type: Transform + - uid: 825 + components: + - pos: 21.5,-18.5 + parent: 1 + type: Transform + - uid: 826 + components: + - pos: 22.5,-18.5 + parent: 1 + type: Transform + - uid: 827 + components: + - pos: 23.5,-18.5 + parent: 1 + type: Transform + - uid: 828 + components: + - pos: 24.5,-18.5 + parent: 1 + type: Transform + - uid: 829 + components: + - pos: 25.5,-18.5 + parent: 1 + type: Transform + - uid: 830 + components: + - pos: 26.5,-18.5 + parent: 1 + type: Transform + - uid: 831 + components: + - pos: 27.5,-18.5 + parent: 1 + type: Transform + - uid: 832 + components: + - pos: 19.5,-20.5 + parent: 1 + type: Transform + - uid: 833 + components: + - pos: 20.5,-20.5 + parent: 1 + type: Transform + - uid: 834 + components: + - pos: 21.5,-20.5 + parent: 1 + type: Transform + - uid: 835 + components: + - pos: 22.5,-20.5 + parent: 1 + type: Transform + - uid: 836 + components: + - pos: 23.5,-20.5 + parent: 1 + type: Transform + - uid: 837 + components: + - pos: 24.5,-20.5 + parent: 1 + type: Transform + - uid: 838 + components: + - pos: 25.5,-20.5 + parent: 1 + type: Transform + - uid: 839 + components: + - pos: 26.5,-20.5 + parent: 1 + type: Transform + - uid: 840 + components: + - pos: 27.5,-20.5 + parent: 1 + type: Transform + - uid: 841 + components: + - pos: 20.5,-22.5 + parent: 1 + type: Transform + - uid: 842 + components: + - pos: 21.5,-22.5 + parent: 1 + type: Transform + - uid: 843 + components: + - pos: 22.5,-22.5 + parent: 1 + type: Transform + - uid: 844 + components: + - pos: 23.5,-22.5 + parent: 1 + type: Transform + - uid: 845 + components: + - pos: 24.5,-22.5 + parent: 1 + type: Transform + - uid: 846 + components: + - pos: 25.5,-22.5 + parent: 1 + type: Transform + - uid: 847 + components: + - pos: 26.5,-22.5 + parent: 1 + type: Transform + - uid: 848 + components: + - pos: 27.5,-22.5 + parent: 1 + type: Transform + - uid: 849 + components: + - pos: 20.5,-24.5 + parent: 1 + type: Transform + - uid: 850 + components: + - pos: 21.5,-24.5 + parent: 1 + type: Transform + - uid: 851 + components: + - pos: 22.5,-24.5 + parent: 1 + type: Transform + - uid: 852 + components: + - pos: 23.5,-24.5 + parent: 1 + type: Transform + - uid: 853 + components: + - pos: 24.5,-24.5 + parent: 1 + type: Transform + - uid: 854 + components: + - pos: 25.5,-24.5 + parent: 1 + type: Transform + - uid: 855 + components: + - pos: 26.5,-24.5 + parent: 1 + type: Transform + - uid: 856 + components: + - pos: 27.5,-24.5 + parent: 1 + type: Transform +- proto: SolarTracker + entities: + - uid: 860 + components: + - pos: 28.5,-27.5 + parent: 1 + type: Transform +- proto: SolarTrackerElectronics + entities: + - uid: 15986 + components: + - pos: -7.5093555,8.3066 + parent: 1 + type: Transform +- proto: SpawnMobAlexander + entities: + - uid: 14184 + components: + - pos: -35.5,46.5 + parent: 1 + type: Transform +- proto: SpawnMobBandito + entities: + - uid: 14178 + components: + - pos: -8.5,-0.5 + parent: 1 + type: Transform +- proto: SpawnMobBear + entities: + - uid: 6324 + components: + - pos: 7.5,51.5 + parent: 1 + type: Transform +- proto: SpawnMobCatRuntime + entities: + - uid: 14180 + components: + - pos: 16.5,30.5 + parent: 1 + type: Transform +- proto: SpawnMobCorgi + entities: + - uid: 7575 + components: + - pos: -22.5,38.5 + parent: 1 + type: Transform +- proto: SpawnMobFoxRenault + entities: + - uid: 10907 + components: + - pos: -9.5,59.5 + parent: 1 + type: Transform +- proto: SpawnMobMcGriff + entities: + - uid: 14183 + components: + - pos: -46.5,59.5 + parent: 1 + type: Transform +- proto: SpawnMobMonkeyPunpun + entities: + - uid: 14168 + components: + - pos: -31.5,37.5 + parent: 1 + type: Transform +- proto: SpawnMobMouse + entities: + - uid: 4996 + components: + - pos: 10.5,39.5 + parent: 1 + type: Transform + - uid: 15041 + components: + - pos: 7.5,-5.5 + parent: 1 + type: Transform + - uid: 15042 + components: + - pos: 22.5,1.5 + parent: 1 + type: Transform + - uid: 15043 + components: + - pos: 14.5,17.5 + parent: 1 + type: Transform + - uid: 15045 + components: + - pos: -7.5,46.5 + parent: 1 + type: Transform + - uid: 15046 + components: + - pos: -44.5,53.5 + parent: 1 + type: Transform + - uid: 15047 + components: + - pos: -66.5,48.5 + parent: 1 + type: Transform +- proto: SpawnMobPossumMorty + entities: + - uid: 14182 + components: + - pos: 14.5,-1.5 + parent: 1 + type: Transform +- proto: SpawnMobRaccoonMorticia + entities: + - uid: 14179 + components: + - pos: -38.5,-4.5 + parent: 1 + type: Transform +- proto: SpawnMobShiva + entities: + - uid: 3680 + components: + - pos: -60.5,65.5 + parent: 1 + type: Transform +- proto: SpawnMobSlothPaperwork + entities: + - uid: 14185 + components: + - pos: -24.5,12.5 + parent: 1 + type: Transform +- proto: SpawnMobWalter + entities: + - uid: 14181 + components: + - pos: -2.5,22.5 + parent: 1 + type: Transform +- proto: SpawnPointAssistant + entities: + - uid: 10824 + components: + - pos: -25.5,27.5 + parent: 1 + type: Transform + - uid: 10825 + components: + - pos: -24.5,28.5 + parent: 1 + type: Transform + - uid: 10826 + components: + - pos: -23.5,27.5 + parent: 1 + type: Transform +- proto: SpawnPointAtmos + entities: + - uid: 14433 + components: + - pos: -81.5,31.5 + parent: 1 + type: Transform + - uid: 14434 + components: + - pos: -80.5,31.5 + parent: 1 + type: Transform + - uid: 14435 + components: + - pos: -79.5,31.5 + parent: 1 + type: Transform +- proto: SpawnPointBartender + entities: + - uid: 9724 + components: + - pos: -31.5,36.5 + parent: 1 + type: Transform + - uid: 9725 + components: + - pos: -31.5,39.5 + parent: 1 + type: Transform +- proto: SpawnPointBotanist + entities: + - uid: 5179 + components: + - pos: -43.5,46.5 + parent: 1 + type: Transform + - uid: 8209 + components: + - pos: -41.5,46.5 + parent: 1 + type: Transform + - uid: 8212 + components: + - pos: -43.5,42.5 + parent: 1 + type: Transform + - uid: 10814 + components: + - pos: -41.5,42.5 + parent: 1 + type: Transform +- proto: SpawnPointCaptain + entities: + - uid: 6508 + components: + - pos: -7.5,60.5 + parent: 1 + type: Transform +- proto: SpawnPointCargoTechnician + entities: + - uid: 3660 + components: + - pos: -39.5,-4.5 + parent: 1 + type: Transform + - uid: 3661 + components: + - pos: -37.5,-4.5 + parent: 1 + type: Transform + - uid: 3662 + components: + - pos: -39.5,-6.5 + parent: 1 + type: Transform + - uid: 3663 + components: + - pos: -37.5,-6.5 + parent: 1 + type: Transform +- proto: SpawnPointChaplain + entities: + - uid: 10823 + components: + - pos: 20.5,-1.5 + parent: 1 + type: Transform +- proto: SpawnPointChef + entities: + - uid: 6933 + components: + - pos: -37.5,44.5 + parent: 1 + type: Transform + - uid: 6934 + components: + - pos: -37.5,45.5 + parent: 1 + type: Transform +- proto: SpawnPointChemist + entities: + - uid: 2182 + components: + - pos: -1.5,25.5 + parent: 1 + type: Transform + - uid: 2183 + components: + - pos: -2.5,23.5 + parent: 1 + type: Transform +- proto: SpawnPointChiefEngineer + entities: + - uid: 3695 + components: + - pos: -69.5,16.5 + parent: 1 + type: Transform +- proto: SpawnPointChiefMedicalOfficer + entities: + - uid: 1314 + components: + - pos: 15.5,32.5 + parent: 1 + type: Transform +- proto: SpawnPointClown + entities: + - uid: 4188 + components: + - pos: -41.5,27.5 + parent: 1 + type: Transform +- proto: SpawnPointDetective + entities: + - uid: 14280 + components: + - pos: -70.5,48.5 + parent: 1 + type: Transform +- proto: SpawnPointHeadOfPersonnel + entities: + - uid: 11600 + components: + - pos: -20.5,38.5 + parent: 1 + type: Transform +- proto: SpawnPointHeadOfSecurity + entities: + - uid: 9989 + components: + - pos: -61.5,64.5 + parent: 1 + type: Transform +- proto: SpawnPointJanitor + entities: + - uid: 7090 + components: + - pos: -51.5,40.5 + parent: 1 + type: Transform + - uid: 9723 + components: + - pos: -52.5,36.5 + parent: 1 + type: Transform +- proto: SpawnPointLatejoin + entities: + - uid: 4855 + components: + - pos: -73.5,5.5 + parent: 1 + type: Transform + - uid: 4861 + components: + - pos: -66.5,5.5 + parent: 1 + type: Transform +- proto: SpawnPointLawyer + entities: + - uid: 9997 + components: + - pos: -53.5,54.5 + parent: 1 + type: Transform +- proto: SpawnPointLibrarian + entities: + - uid: 3398 + components: + - pos: -30.5,9.5 + parent: 1 + type: Transform +- proto: SpawnPointMedicalDoctor + entities: + - uid: 14923 + components: + - pos: 7.5,24.5 + parent: 1 + type: Transform + - uid: 14924 + components: + - pos: 8.5,24.5 + parent: 1 + type: Transform + - uid: 14925 + components: + - pos: 9.5,24.5 + parent: 1 + type: Transform + - uid: 14926 + components: + - pos: 8.5,23.5 + parent: 1 + type: Transform +- proto: SpawnPointMedicalIntern + entities: + - uid: 14927 + components: + - pos: 3.5,31.5 + parent: 1 + type: Transform + - uid: 14928 + components: + - pos: 3.5,29.5 + parent: 1 + type: Transform + - uid: 14929 + components: + - pos: 3.5,24.5 + parent: 1 + type: Transform + - uid: 14930 + components: + - pos: 3.5,22.5 + parent: 1 + type: Transform +- proto: SpawnPointMime + entities: + - uid: 4215 + components: + - pos: -41.5,24.5 + parent: 1 + type: Transform +- proto: SpawnPointMusician + entities: + - uid: 4139 + components: + - pos: -24.5,23.5 + parent: 1 + type: Transform +- proto: SpawnPointObserver + entities: + - uid: 13776 + components: + - pos: -37.5,32.5 + parent: 1 + type: Transform +- proto: SpawnPointQuartermaster + entities: + - uid: 3667 + components: + - pos: -44.5,-7.5 + parent: 1 + type: Transform +- proto: SpawnPointResearchAssistant + entities: + - uid: 2169 + components: + - pos: -7.5,-0.5 + parent: 1 + type: Transform + - uid: 15107 + components: + - pos: -10.5,-3.5 + parent: 1 + type: Transform + - uid: 15108 + components: + - pos: -4.5,-3.5 + parent: 1 + type: Transform +- proto: SpawnPointResearchDirector + entities: + - uid: 2167 + components: + - pos: -2.5,2.5 + parent: 1 + type: Transform +- proto: SpawnPointSalvageSpecialist + entities: + - uid: 10343 + components: + - pos: -38.5,-11.5 + parent: 1 + type: Transform + - uid: 13813 + components: + - pos: -42.5,-11.5 + parent: 1 + type: Transform + - uid: 13814 + components: + - pos: -40.5,-11.5 + parent: 1 + type: Transform +- proto: SpawnPointScientist + entities: + - uid: 2168 + components: + - pos: -7.5,1.5 + parent: 1 + type: Transform + - uid: 2170 + components: + - pos: -11.5,-3.5 + parent: 1 + type: Transform + - uid: 2171 + components: + - pos: -16.5,-3.5 + parent: 1 + type: Transform + - uid: 2172 + components: + - pos: -3.5,-3.5 + parent: 1 + type: Transform +- proto: SpawnPointSecurityCadet + entities: + - uid: 9994 + components: + - pos: -55.5,56.5 + parent: 1 + type: Transform + - uid: 9995 + components: + - pos: -53.5,56.5 + parent: 1 + type: Transform + - uid: 9996 + components: + - pos: -51.5,56.5 + parent: 1 + type: Transform +- proto: SpawnPointSecurityOfficer + entities: + - uid: 9990 + components: + - pos: -62.5,54.5 + parent: 1 + type: Transform + - uid: 9991 + components: + - pos: -62.5,52.5 + parent: 1 + type: Transform + - uid: 9992 + components: + - pos: -60.5,52.5 + parent: 1 + type: Transform + - uid: 9993 + components: + - pos: -60.5,54.5 + parent: 1 + type: Transform +- proto: SpawnPointSeniorEngineer + entities: + - uid: 7444 + components: + - pos: -66.5,31.5 + parent: 1 + type: Transform +- proto: SpawnPointSeniorOfficer + entities: + - uid: 7447 + components: + - pos: -52.5,57.5 + parent: 1 + type: Transform +- proto: SpawnPointSeniorPhysician + entities: + - uid: 7448 + components: + - pos: 4.5,23.5 + parent: 1 + type: Transform +- proto: SpawnPointSeniorResearcher + entities: + - uid: 7451 + components: + - pos: -8.5,-2.5 + parent: 1 + type: Transform +- proto: SpawnPointServiceWorker + entities: + - uid: 6036 + components: + - pos: -35.5,43.5 + parent: 1 + type: Transform + - uid: 10216 + components: + - pos: -33.5,43.5 + parent: 1 + type: Transform +- proto: SpawnPointStationEngineer + entities: + - uid: 14426 + components: + - pos: -66.5,26.5 + parent: 1 + type: Transform + - uid: 14427 + components: + - pos: -66.5,28.5 + parent: 1 + type: Transform + - uid: 14428 + components: + - pos: -64.5,28.5 + parent: 1 + type: Transform + - uid: 14429 + components: + - pos: -64.5,26.5 + parent: 1 + type: Transform +- proto: SpawnPointTechnicalAssistant + entities: + - uid: 14430 + components: + - pos: -67.5,33.5 + parent: 1 + type: Transform + - uid: 14431 + components: + - pos: -64.5,33.5 + parent: 1 + type: Transform + - uid: 14432 + components: + - pos: -64.5,31.5 + parent: 1 + type: Transform +- proto: SpawnPointWarden + entities: + - uid: 7958 + components: + - pos: -47.5,61.5 + parent: 1 + type: Transform +- proto: SpawnVehicleJanicart + entities: + - uid: 7067 + components: + - pos: -51.5,36.5 + parent: 1 + type: Transform +- proto: SpawnVehicleSecway + entities: + - uid: 7973 + components: + - pos: -61.5,55.5 + parent: 1 + type: Transform + - uid: 7974 + components: + - pos: -60.5,55.5 + parent: 1 + type: Transform +- proto: SpawnVendingMachineRestockFoodDrink + entities: + - uid: 13674 + components: + - pos: -50.5,41.5 + parent: 1 + type: Transform + - uid: 13675 + components: + - pos: -53.5,44.5 + parent: 1 + type: Transform +- proto: SpeedLoaderMagnum + entities: + - uid: 14951 + components: + - pos: -43.393112,61.308212 + parent: 1 + type: Transform + - uid: 14952 + components: + - pos: -43.099293,61.292587 + parent: 1 + type: Transform + - uid: 14953 + components: + - pos: -43.689987,61.308212 + parent: 1 + type: Transform +- proto: Spoon + entities: + - uid: 15910 + components: + - pos: -49.478313,9.54667 + parent: 1 + type: Transform +- proto: SprayBottleSpaceCleaner + entities: + - uid: 7133 + components: + - flags: InContainer + type: MetaData + - parent: 7074 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage + - uid: 7134 + components: + - flags: InContainer + type: MetaData + - parent: 7074 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage + - uid: 7136 + components: + - flags: InContainer + type: MetaData + - parent: 7074 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage + - uid: 7565 + components: + - flags: InContainer + type: MetaData + - parent: 7074 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: StasisBedMachineCircuitboard + entities: + - uid: 5548 + components: + - pos: -49.451916,24.552746 + parent: 1 + type: Transform +- proto: StatueVenusBlue + entities: + - uid: 5707 + components: + - pos: -32.5,17.5 + parent: 1 + type: Transform +- proto: StatueVenusRed + entities: + - uid: 5706 + components: + - pos: -34.5,18.5 + parent: 1 + type: Transform +- proto: Stool + entities: + - uid: 6 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,10.5 + parent: 1 + type: Transform + - uid: 9 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,8.5 + parent: 1 + type: Transform + - uid: 581 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,12.5 + parent: 1 + type: Transform + - uid: 583 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,12.5 + parent: 1 + type: Transform + - uid: 4140 + components: + - rot: 3.141592653589793 rad + pos: -29.5,26.5 + parent: 1 + type: Transform + - uid: 4169 + components: + - pos: -10.5,34.5 + parent: 1 + type: Transform + - uid: 4219 + components: + - pos: -7.5,34.5 + parent: 1 + type: Transform +- proto: StoolBar + entities: + - uid: 5262 + components: + - rot: 3.141592653589793 rad + pos: -54.5,16.5 + parent: 1 + type: Transform + - uid: 5263 + components: + - rot: 3.141592653589793 rad + pos: -53.5,16.5 + parent: 1 + type: Transform + - uid: 5281 + components: + - rot: 3.141592653589793 rad + pos: -52.5,16.5 + parent: 1 + type: Transform + - uid: 9743 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,38.5 + parent: 1 + type: Transform + - uid: 9744 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,37.5 + parent: 1 + type: Transform + - uid: 9745 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,36.5 + parent: 1 + type: Transform + - uid: 9746 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,35.5 + parent: 1 + type: Transform +- proto: StorageCanister + entities: + - uid: 369 + components: + - pos: 3.5,-8.5 + parent: 1 + type: Transform + - uid: 10737 + components: + - pos: -77.5,28.5 + parent: 1 + type: Transform + - uid: 10738 + components: + - pos: -76.5,28.5 + parent: 1 + type: Transform + - uid: 13924 + components: + - pos: -77.5,43.5 + parent: 1 + type: Transform + - uid: 13925 + components: + - pos: -77.5,44.5 + parent: 1 + type: Transform + - uid: 13926 + components: + - pos: -77.5,45.5 + parent: 1 + type: Transform +- proto: Stunbaton + entities: + - uid: 7999 + components: + - pos: -63.653942,50.74784 + parent: 1 + type: Transform + - uid: 8000 + components: + - pos: -63.450817,50.59159 + parent: 1 + type: Transform + - uid: 8004 + components: + - pos: -63.185192,50.544716 + parent: 1 + type: Transform +- proto: SubstationBasic + entities: + - uid: 606 + components: + - name: Science Substation + type: MetaData + - pos: 11.5,-7.5 + parent: 1 + type: Transform + - uid: 608 + components: + - name: Library Substation + type: MetaData + - pos: -15.5,17.5 + parent: 1 + type: Transform + - uid: 922 + components: + - name: Grav Substation + type: MetaData + - pos: 25.5,1.5 + parent: 1 + type: Transform + - uid: 2515 + components: + - name: Evac Substation + type: MetaData + - pos: 23.5,9.5 + parent: 1 + type: Transform + - uid: 2593 + components: + - name: Telecomms Substation + type: MetaData + - pos: 28.5,23.5 + parent: 1 + type: Transform + - uid: 2693 + components: + - name: Medical Substation + type: MetaData + - pos: -9.5,18.5 + parent: 1 + type: Transform + - uid: 3932 + components: + - name: Supply Substation + type: MetaData + - pos: -24.5,-3.5 + parent: 1 + type: Transform + - uid: 4339 + components: + - name: Tech Storage Substation + type: MetaData + - pos: -40.5,15.5 + parent: 1 + type: Transform + - uid: 6198 + components: + - name: Northeast Maints Substation + type: MetaData + - pos: 18.5,46.5 + parent: 1 + type: Transform + - uid: 6527 + components: + - name: Bridge Substation + type: MetaData + - pos: -3.5,56.5 + parent: 1 + type: Transform + - uid: 6812 + components: + - name: Service Substation + type: MetaData + - pos: -35.5,57.5 + parent: 1 + type: Transform + - uid: 9336 + components: + - name: Engineering Substation + type: MetaData + - pos: -71.5,25.5 + parent: 1 + type: Transform + - uid: 10141 + components: + - name: Security Substation + type: MetaData + - pos: -65.5,59.5 + parent: 1 + type: Transform + - uid: 10207 + components: + - name: PA Substation + type: MetaData + - pos: -79.5,27.5 + parent: 1 + type: Transform +- proto: SubstationMachineCircuitboard + entities: + - uid: 5549 + components: + - pos: -52.589783,25.717905 + parent: 1 + type: Transform + - uid: 5550 + components: + - pos: -52.433533,25.45228 + parent: 1 + type: Transform +- proto: SuitStorageCE + entities: + - uid: 3616 + components: + - pos: -68.5,17.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.1496 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: SuitStorageEVA + entities: + - uid: 3552 + components: + - pos: -10.5,49.5 + parent: 1 + type: Transform + - uid: 3553 + components: + - pos: -13.5,49.5 + parent: 1 + type: Transform + - uid: 5467 + components: + - pos: -12.5,49.5 + parent: 1 + type: Transform + - uid: 7387 + components: + - pos: -11.5,49.5 + parent: 1 + type: Transform +- proto: SuitStorageEVAPrisoner + entities: + - uid: 7186 + components: + - pos: -47.5,68.5 + parent: 1 + type: Transform + - uid: 7391 + components: + - pos: -48.5,68.5 + parent: 1 + type: Transform + - uid: 7410 + components: + - pos: -55.5,79.5 + parent: 1 + type: Transform + - uid: 10735 + components: + - pos: -55.5,80.5 + parent: 1 + type: Transform + - uid: 10736 + components: + - pos: -46.5,68.5 + parent: 1 + type: Transform +- proto: SuitStorageHOS + entities: + - uid: 7344 + components: + - pos: -58.5,63.5 + parent: 1 + type: Transform +- proto: SuitStorageRD + entities: + - uid: 334 + components: + - pos: -3.5,2.5 + parent: 1 + type: Transform +- proto: SuitStorageSec + entities: + - uid: 5494 + components: + - pos: -41.5,64.5 + parent: 1 + type: Transform +- proto: SurveillanceCameraCommand + entities: + - uid: 13732 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,37.5 + parent: 1 + type: Transform + - id: HoP Office Line + type: SurveillanceCamera + - uid: 13733 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,45.5 + parent: 1 + type: Transform + - id: HoP Office Backroom + type: SurveillanceCamera + - uid: 13734 + components: + - pos: -11.5,46.5 + parent: 1 + type: Transform + - id: EVA Room + type: SurveillanceCamera + - uid: 13735 + components: + - rot: 3.141592653589793 rad + pos: -15.5,51.5 + parent: 1 + type: Transform + - id: Bridge Entrance + type: SurveillanceCamera + - uid: 13736 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,56.5 + parent: 1 + type: Transform + - id: Bridge Reception + type: SurveillanceCamera + - uid: 13737 + components: + - rot: 1.5707963267948966 rad + pos: -20.5,56.5 + parent: 1 + type: Transform + - id: Vault + type: SurveillanceCamera + - uid: 13738 + components: + - rot: 3.141592653589793 rad + pos: -9.5,57.5 + parent: 1 + type: Transform + - id: Meeting Room + type: SurveillanceCamera + - uid: 13739 + components: + - pos: -6.5,59.5 + parent: 1 + type: Transform + - id: Captain's Office + type: SurveillanceCamera + - uid: 13740 + components: + - pos: -14.5,62.5 + parent: 1 + type: Transform + - id: Bridge + type: SurveillanceCamera + - uid: 15365 + components: + - rot: 3.141592653589793 rad + pos: 27.5,28.5 + parent: 1 + type: Transform + - id: Telecomms + type: SurveillanceCamera +- proto: SurveillanceCameraEngineering + entities: + - uid: 2016 + components: + - rot: -1.5707963267948966 rad + pos: -61.5,33.5 + parent: 1 + type: Transform + - id: Entrance + type: SurveillanceCamera + - uid: 13723 + components: + - rot: 3.141592653589793 rad + pos: -51.5,29.5 + parent: 1 + type: Transform + - id: Storage + type: SurveillanceCamera + - uid: 13724 + components: + - pos: -50.5,23.5 + parent: 1 + type: Transform + - id: Tech Vault + type: SurveillanceCamera + - uid: 14858 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,28.5 + parent: 1 + type: Transform + - id: Equipment Room + type: SurveillanceCamera + - uid: 14859 + components: + - rot: 1.5707963267948966 rad + pos: -69.5,29.5 + parent: 1 + type: Transform + - id: SMES + type: SurveillanceCamera + - uid: 14860 + components: + - pos: -80.5,29.5 + parent: 1 + type: Transform + - id: Atmospherics Equipment + type: SurveillanceCamera + - uid: 14861 + components: + - rot: 1.5707963267948966 rad + pos: -77.5,41.5 + parent: 1 + type: Transform + - id: Atmospherics + type: SurveillanceCamera + - uid: 14862 + components: + - rot: 3.141592653589793 rad + pos: -82.5,27.5 + parent: 1 + type: Transform + - id: PA Room + type: SurveillanceCamera + - uid: 14863 + components: + - pos: -66.5,19.5 + parent: 1 + type: Transform + - id: AME + type: SurveillanceCamera +- proto: SurveillanceCameraGeneral + entities: + - uid: 8969 + components: + - rot: 3.141592653589793 rad + pos: -31.5,29.5 + parent: 1 + type: Transform + - id: Theatre + type: SurveillanceCamera + - uid: 13727 + components: + - rot: 1.5707963267948966 rad + pos: -11.5,13.5 + parent: 1 + type: Transform + - setupAvailableNetworks: + - SurveillanceCameraGeneral + id: Store Area + type: SurveillanceCamera + - uid: 13728 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,11.5 + parent: 1 + type: Transform + - id: Library + type: SurveillanceCamera + - uid: 13729 + components: + - rot: 3.141592653589793 rad + pos: -25.5,18.5 + parent: 1 + type: Transform + - id: Library Backroom + type: SurveillanceCamera + - uid: 13731 + components: + - pos: -24.5,26.5 + parent: 1 + type: Transform + - id: Tool Room + type: SurveillanceCamera + - uid: 13747 + components: + - rot: 1.5707963267948966 rad + pos: -56.5,2.5 + parent: 1 + type: Transform + - id: Arrivals Corridor + type: SurveillanceCamera + - uid: 13748 + components: + - rot: 3.141592653589793 rad + pos: 14.5,6.5 + parent: 1 + type: Transform + - id: Evac Corridor + type: SurveillanceCamera + - uid: 13749 + components: + - pos: 13.5,-2.5 + parent: 1 + type: Transform + - id: Chapel + type: SurveillanceCamera + - uid: 13750 + components: + - rot: 1.5707963267948966 rad + pos: 28.5,11.5 + parent: 1 + type: Transform + - id: Evac 2 + type: SurveillanceCamera + - uid: 13751 + components: + - rot: -1.5707963267948966 rad + pos: 25.5,20.5 + parent: 1 + type: Transform + - id: Evac 1 + type: SurveillanceCamera +- proto: SurveillanceCameraMedical + entities: + - uid: 13090 + components: + - rot: 3.141592653589793 rad + pos: 0.5,17.5 + parent: 1 + type: Transform + - id: Morgue + type: SurveillanceCamera + - uid: 13091 + components: + - pos: 1.5,36.5 + parent: 1 + type: Transform + - id: Cloning + type: SurveillanceCamera + - uid: 13092 + components: + - rot: 3.141592653589793 rad + pos: 10.5,37.5 + parent: 1 + type: Transform + - id: Cryo + type: SurveillanceCamera + - uid: 13093 + components: + - pos: 10.5,28.5 + parent: 1 + type: Transform + - id: Ward + type: SurveillanceCamera + - uid: 13094 + components: + - pos: 9.5,22.5 + parent: 1 + type: Transform + - id: Equipment Room + type: SurveillanceCamera + - uid: 13095 + components: + - rot: 3.141592653589793 rad + pos: 8.5,17.5 + parent: 1 + type: Transform + - id: Virology + type: SurveillanceCamera + - uid: 13297 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,27.5 + parent: 1 + type: Transform + - id: Main Hall + type: SurveillanceCamera + - uid: 13759 + components: + - rot: -1.5707963267948966 rad + pos: -4.5,24.5 + parent: 1 + type: Transform + - id: Chemistry + type: SurveillanceCamera + - uid: 13762 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,31.5 + parent: 1 + type: Transform + - id: Reception + type: SurveillanceCamera + - uid: 13763 + components: + - rot: 3.141592653589793 rad + pos: -11.5,33.5 + parent: 1 + type: Transform + - id: Entrance + type: SurveillanceCamera +- proto: SurveillanceCameraRouterCommand + entities: + - uid: 4281 + components: + - pos: -40.5,8.5 + parent: 1 + type: Transform +- proto: SurveillanceCameraRouterEngineering + entities: + - uid: 4276 + components: + - pos: -42.5,9.5 + parent: 1 + type: Transform +- proto: SurveillanceCameraRouterGeneral + entities: + - uid: 4278 + components: + - pos: -40.5,11.5 + parent: 1 + type: Transform +- proto: SurveillanceCameraRouterMedical + entities: + - uid: 4274 + components: + - pos: -42.5,11.5 + parent: 1 + type: Transform +- proto: SurveillanceCameraRouterScience + entities: + - uid: 4277 + components: + - pos: -42.5,8.5 + parent: 1 + type: Transform +- proto: SurveillanceCameraRouterSecurity + entities: + - uid: 4280 + components: + - pos: -40.5,9.5 + parent: 1 + type: Transform +- proto: SurveillanceCameraRouterService + entities: + - uid: 4275 + components: + - pos: -42.5,10.5 + parent: 1 + type: Transform +- proto: SurveillanceCameraRouterSupply + entities: + - uid: 4279 + components: + - pos: -40.5,10.5 + parent: 1 + type: Transform +- proto: SurveillanceCameraScience + entities: + - uid: 13704 + components: + - rot: 3.141592653589793 rad + pos: -11.5,-1.5 + parent: 1 + type: Transform + - id: Main Area + type: SurveillanceCamera + - uid: 13705 + components: + - rot: 3.141592653589793 rad + pos: 2.5,-8.5 + parent: 1 + type: Transform + - id: Xenoarch + type: SurveillanceCamera + - uid: 13706 + components: + - rot: 3.141592653589793 rad + pos: -12.5,-10.5 + parent: 1 + type: Transform + - id: Anomaly Lab + type: SurveillanceCamera + - uid: 13707 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,0.5 + parent: 1 + type: Transform + - id: Robotics Room + type: SurveillanceCamera + - uid: 13726 + components: + - pos: -10.5,4.5 + parent: 1 + type: Transform + - id: Entrance + type: SurveillanceCamera +- proto: SurveillanceCameraSecurity + entities: + - uid: 9146 + components: + - rot: 3.141592653589793 rad + pos: -63.5,55.5 + parent: 1 + type: Transform + - id: Equipment Room + type: SurveillanceCamera + - uid: 9147 + components: + - rot: 1.5707963267948966 rad + pos: -50.5,56.5 + parent: 1 + type: Transform + - id: Brig Area + type: SurveillanceCamera + - uid: 9148 + components: + - rot: -1.5707963267948966 rad + pos: -48.5,50.5 + parent: 1 + type: Transform + - id: Entrance + type: SurveillanceCamera + - uid: 9149 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,60.5 + parent: 1 + type: Transform + - id: Warden's Office + type: SurveillanceCamera + - uid: 9150 + components: + - rot: -1.5707963267948966 rad + pos: -56.5,64.5 + parent: 1 + type: Transform + - id: Breakroom + type: SurveillanceCamera + - uid: 9151 + components: + - pos: -51.5,60.5 + parent: 1 + type: Transform + - id: Main Hall + type: SurveillanceCamera + - uid: 9152 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,63.5 + parent: 1 + type: Transform + - id: Armory + type: SurveillanceCamera + - uid: 9153 + components: + - pos: -51.5,71.5 + parent: 1 + type: Transform + - id: Space Bridge + type: SurveillanceCamera + - uid: 9154 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,86.5 + parent: 1 + type: Transform + - id: Perma Hall + type: SurveillanceCamera + - uid: 9155 + components: + - rot: 1.5707963267948966 rad + pos: -57.5,85.5 + parent: 1 + type: Transform + - id: Permabrig + type: SurveillanceCamera + - uid: 13089 + components: + - rot: 3.141592653589793 rad + pos: 0.5,10.5 + parent: 1 + type: Transform + - id: Evac Corridor Checkpoint + type: SurveillanceCamera + - uid: 13854 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,28.5 + parent: 1 + type: Transform + - id: Med Checkpoint + type: SurveillanceCamera +- proto: SurveillanceCameraService + entities: + - uid: 13741 + components: + - rot: 3.141592653589793 rad + pos: -28.5,47.5 + parent: 1 + type: Transform + - id: Freezer + type: SurveillanceCamera + - uid: 13742 + components: + - rot: 3.141592653589793 rad + pos: -35.5,47.5 + parent: 1 + type: Transform + - id: Kitchen + type: SurveillanceCamera + - uid: 13743 + components: + - pos: -42.5,41.5 + parent: 1 + type: Transform + - id: Botany + type: SurveillanceCamera + - uid: 13744 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,36.5 + parent: 1 + type: Transform + - id: Bar Right + type: SurveillanceCamera + - uid: 13745 + components: + - pos: -43.5,35.5 + parent: 1 + type: Transform + - id: Bar Left + type: SurveillanceCamera + - uid: 13746 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,51.5 + parent: 1 + type: Transform + - id: Botany Backroom + type: SurveillanceCamera +- proto: SurveillanceCameraSupply + entities: + - uid: 3835 + components: + - pos: -44.5,-13.5 + parent: 1 + type: Transform + - id: Salvage Bay + type: SurveillanceCamera + - uid: 6818 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,-9.5 + parent: 1 + type: Transform + - id: Cargo Dock + type: SurveillanceCamera + - uid: 13708 + components: + - pos: -35.5,0.5 + parent: 1 + type: Transform + - id: Reception Area + type: SurveillanceCamera + - uid: 13709 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,-5.5 + parent: 1 + type: Transform + - id: Cargo Bay + type: SurveillanceCamera +- proto: SurveillanceWirelessCameraMovableEntertainment + entities: + - uid: 8350 + components: + - rot: 3.141592653589793 rad + pos: -29.5,23.5 + parent: 1 + type: Transform +- proto: Syringe + entities: + - uid: 1963 + components: + - pos: -0.47509155,19.63882 + parent: 1 + type: Transform + - uid: 1964 + components: + - pos: -0.4652393,20.229368 + parent: 1 + type: Transform + - uid: 12770 + components: + - desc: A suspicious looking syringe. + name: suspicious syringe + type: MetaData + - pos: 19.469204,28.644407 + parent: 1 + type: Transform + - tags: [] + type: Tag + - solutions: + injector: + temperature: 293.15 + canMix: False + canReact: True + maxVol: 15 + reagents: + - data: null + ReagentId: Hyronalin + Quantity: 15 + type: SolutionContainerManager +- proto: Table + entities: + - uid: 64 + components: + - pos: 8.5,31.5 + parent: 1 + type: Transform + - uid: 230 + components: + - pos: -11.5,-5.5 + parent: 1 + type: Transform + - uid: 233 + components: + - pos: -10.5,-5.5 + parent: 1 + type: Transform + - uid: 235 + components: + - pos: -13.5,-1.5 + parent: 1 + type: Transform + - uid: 236 + components: + - pos: -12.5,-1.5 + parent: 1 + type: Transform + - uid: 237 + components: + - pos: -11.5,-1.5 + parent: 1 + type: Transform + - uid: 239 + components: + - pos: 2.5,-1.5 + parent: 1 + type: Transform + - uid: 241 + components: + - pos: 2.5,-2.5 + parent: 1 + type: Transform + - uid: 250 + components: + - pos: -9.5,2.5 + parent: 1 + type: Transform + - uid: 273 + components: + - pos: -7.5,3.5 + parent: 1 + type: Transform + - uid: 279 + components: + - pos: -0.5,-3.5 + parent: 1 + type: Transform + - uid: 280 + components: + - pos: -0.5,-4.5 + parent: 1 + type: Transform + - uid: 284 + components: + - pos: -17.5,-13.5 + parent: 1 + type: Transform + - uid: 288 + components: + - pos: -3.5,-5.5 + parent: 1 + type: Transform + - uid: 289 + components: + - pos: -4.5,-5.5 + parent: 1 + type: Transform + - uid: 322 + components: + - pos: -14.5,-14.5 + parent: 1 + type: Transform + - uid: 328 + components: + - pos: -16.5,-14.5 + parent: 1 + type: Transform + - uid: 329 + components: + - pos: -15.5,-14.5 + parent: 1 + type: Transform + - uid: 330 + components: + - pos: -17.5,-14.5 + parent: 1 + type: Transform + - uid: 350 + components: + - pos: 5.5,-11.5 + parent: 1 + type: Transform + - uid: 352 + components: + - pos: 4.5,-11.5 + parent: 1 + type: Transform + - uid: 353 + components: + - pos: 2.5,-11.5 + parent: 1 + type: Transform + - uid: 578 + components: + - pos: 12.5,31.5 + parent: 1 + type: Transform + - uid: 579 + components: + - pos: 10.5,31.5 + parent: 1 + type: Transform + - uid: 923 + components: + - pos: 25.5,2.5 + parent: 1 + type: Transform + - uid: 1619 + components: + - rot: 3.141592653589793 rad + pos: 4.5,16.5 + parent: 1 + type: Transform + - uid: 1621 + components: + - rot: 3.141592653589793 rad + pos: 4.5,15.5 + parent: 1 + type: Transform + - uid: 1623 + components: + - rot: 3.141592653589793 rad + pos: 4.5,17.5 + parent: 1 + type: Transform + - uid: 1634 + components: + - pos: -0.5,7.5 + parent: 1 + type: Transform + - uid: 1668 + components: + - pos: 16.5,-7.5 + parent: 1 + type: Transform + - uid: 1669 + components: + - pos: 16.5,-8.5 + parent: 1 + type: Transform + - uid: 1872 + components: + - pos: 25.5,-7.5 + parent: 1 + type: Transform + - uid: 1874 + components: + - pos: 22.5,-7.5 + parent: 1 + type: Transform + - uid: 1948 + components: + - pos: 1.5,25.5 + parent: 1 + type: Transform + - uid: 1949 + components: + - pos: 1.5,26.5 + parent: 1 + type: Transform + - uid: 1950 + components: + - pos: -0.5,28.5 + parent: 1 + type: Transform + - uid: 2019 + components: + - pos: 0.5,7.5 + parent: 1 + type: Transform + - uid: 2020 + components: + - pos: 6.5,23.5 + parent: 1 + type: Transform + - uid: 2021 + components: + - pos: 6.5,22.5 + parent: 1 + type: Transform + - uid: 2022 + components: + - pos: 7.5,22.5 + parent: 1 + type: Transform + - uid: 2023 + components: + - pos: 8.5,22.5 + parent: 1 + type: Transform + - uid: 2025 + components: + - pos: 10.5,26.5 + parent: 1 + type: Transform + - uid: 2026 + components: + - pos: 10.5,25.5 + parent: 1 + type: Transform + - uid: 2027 + components: + - pos: 10.5,24.5 + parent: 1 + type: Transform + - uid: 2038 + components: + - pos: 8.5,33.5 + parent: 1 + type: Transform + - uid: 2039 + components: + - pos: 9.5,33.5 + parent: 1 + type: Transform + - uid: 2040 + components: + - pos: 10.5,33.5 + parent: 1 + type: Transform + - uid: 2042 + components: + - pos: 4.5,37.5 + parent: 1 + type: Transform + - uid: 2043 + components: + - pos: 4.5,38.5 + parent: 1 + type: Transform + - uid: 2044 + components: + - pos: 4.5,39.5 + parent: 1 + type: Transform + - uid: 2353 + components: + - pos: 11.5,19.5 + parent: 1 + type: Transform + - uid: 2354 + components: + - pos: 11.5,18.5 + parent: 1 + type: Transform + - uid: 2355 + components: + - pos: 8.5,17.5 + parent: 1 + type: Transform + - uid: 2356 + components: + - pos: 7.5,17.5 + parent: 1 + type: Transform + - uid: 2357 + components: + - pos: 6.5,17.5 + parent: 1 + type: Transform + - uid: 2358 + components: + - pos: 6.5,16.5 + parent: 1 + type: Transform + - uid: 2636 + components: + - pos: -9.5,28.5 + parent: 1 + type: Transform + - uid: 2765 + components: + - pos: -14.5,8.5 + parent: 1 + type: Transform + - uid: 2766 + components: + - pos: -14.5,9.5 + parent: 1 + type: Transform + - uid: 2767 + components: + - pos: -14.5,10.5 + parent: 1 + type: Transform + - uid: 2768 + components: + - pos: -10.5,8.5 + parent: 1 + type: Transform + - uid: 2769 + components: + - pos: -10.5,9.5 + parent: 1 + type: Transform + - uid: 2770 + components: + - pos: -10.5,11.5 + parent: 1 + type: Transform + - uid: 2771 + components: + - pos: -10.5,12.5 + parent: 1 + type: Transform + - uid: 2773 + components: + - pos: -14.5,13.5 + parent: 1 + type: Transform + - uid: 2774 + components: + - pos: -14.5,14.5 + parent: 1 + type: Transform + - uid: 2776 + components: + - pos: -10.5,15.5 + parent: 1 + type: Transform + - uid: 2840 + components: + - pos: -16.5,29.5 + parent: 1 + type: Transform + - uid: 2841 + components: + - pos: -15.5,29.5 + parent: 1 + type: Transform + - uid: 2845 + components: + - pos: -15.5,24.5 + parent: 1 + type: Transform + - uid: 2885 + components: + - pos: 25.5,-8.5 + parent: 1 + type: Transform + - uid: 2951 + components: + - pos: 29.5,-4.5 + parent: 1 + type: Transform + - uid: 2952 + components: + - pos: 28.5,-4.5 + parent: 1 + type: Transform + - uid: 2958 + components: + - pos: 8.5,-4.5 + parent: 1 + type: Transform + - uid: 2959 + components: + - pos: 7.5,-4.5 + parent: 1 + type: Transform + - uid: 3038 + components: + - pos: -15.5,25.5 + parent: 1 + type: Transform + - uid: 3507 + components: + - pos: -21.5,-10.5 + parent: 1 + type: Transform + - uid: 3508 + components: + - pos: -21.5,-11.5 + parent: 1 + type: Transform + - uid: 3515 + components: + - pos: -19.5,-10.5 + parent: 1 + type: Transform + - uid: 3532 + components: + - pos: -39.5,1.5 + parent: 1 + type: Transform + - uid: 3534 + components: + - pos: -39.5,0.5 + parent: 1 + type: Transform + - uid: 3535 + components: + - pos: -38.5,2.5 + parent: 1 + type: Transform + - uid: 3536 + components: + - pos: -37.5,2.5 + parent: 1 + type: Transform + - uid: 3545 + components: + - pos: -36.5,2.5 + parent: 1 + type: Transform + - uid: 3546 + components: + - pos: -35.5,1.5 + parent: 1 + type: Transform + - uid: 3547 + components: + - pos: -35.5,0.5 + parent: 1 + type: Transform + - uid: 3671 + components: + - pos: -42.5,1.5 + parent: 1 + type: Transform + - uid: 3741 + components: + - pos: -46.5,2.5 + parent: 1 + type: Transform + - uid: 3742 + components: + - pos: -46.5,1.5 + parent: 1 + type: Transform + - uid: 3743 + components: + - pos: -46.5,0.5 + parent: 1 + type: Transform + - uid: 4128 + components: + - pos: -26.5,24.5 + parent: 1 + type: Transform + - uid: 4129 + components: + - pos: -25.5,24.5 + parent: 1 + type: Transform + - uid: 4130 + components: + - pos: -24.5,24.5 + parent: 1 + type: Transform + - uid: 4131 + components: + - pos: -23.5,24.5 + parent: 1 + type: Transform + - uid: 4132 + components: + - pos: -22.5,24.5 + parent: 1 + type: Transform + - uid: 4207 + components: + - pos: -42.5,23.5 + parent: 1 + type: Transform + - uid: 4208 + components: + - pos: -41.5,23.5 + parent: 1 + type: Transform + - uid: 4209 + components: + - pos: -40.5,23.5 + parent: 1 + type: Transform + - uid: 4210 + components: + - pos: -42.5,24.5 + parent: 1 + type: Transform + - uid: 4211 + components: + - pos: -42.5,28.5 + parent: 1 + type: Transform + - uid: 4212 + components: + - pos: -41.5,28.5 + parent: 1 + type: Transform + - uid: 4213 + components: + - pos: -40.5,28.5 + parent: 1 + type: Transform + - uid: 4214 + components: + - pos: -40.5,27.5 + parent: 1 + type: Transform + - uid: 4557 + components: + - pos: 23.5,40.5 + parent: 1 + type: Transform + - uid: 5250 + components: + - pos: -53.5,17.5 + parent: 1 + type: Transform + - uid: 5251 + components: + - pos: -54.5,17.5 + parent: 1 + type: Transform + - uid: 5256 + components: + - pos: -54.5,21.5 + parent: 1 + type: Transform + - uid: 5257 + components: + - pos: -53.5,21.5 + parent: 1 + type: Transform + - uid: 5258 + components: + - pos: -52.5,21.5 + parent: 1 + type: Transform + - uid: 5259 + components: + - pos: -53.5,13.5 + parent: 1 + type: Transform + - uid: 5278 + components: + - pos: -52.5,17.5 + parent: 1 + type: Transform + - uid: 5283 + components: + - pos: -54.5,29.5 + parent: 1 + type: Transform + - uid: 5284 + components: + - pos: -53.5,29.5 + parent: 1 + type: Transform + - uid: 5285 + components: + - pos: -52.5,29.5 + parent: 1 + type: Transform + - uid: 5286 + components: + - pos: -51.5,29.5 + parent: 1 + type: Transform + - uid: 5287 + components: + - pos: -47.5,29.5 + parent: 1 + type: Transform + - uid: 5288 + components: + - pos: -47.5,28.5 + parent: 1 + type: Transform + - uid: 5289 + components: + - pos: -47.5,27.5 + parent: 1 + type: Transform + - uid: 5325 + components: + - pos: 23.5,38.5 + parent: 1 + type: Transform + - uid: 5339 + components: + - pos: 23.5,42.5 + parent: 1 + type: Transform + - uid: 5407 + components: + - pos: -28.5,-8.5 + parent: 1 + type: Transform + - uid: 5424 + components: + - pos: -18.5,0.5 + parent: 1 + type: Transform + - uid: 5425 + components: + - pos: -29.5,-2.5 + parent: 1 + type: Transform + - uid: 5440 + components: + - pos: -23.5,-3.5 + parent: 1 + type: Transform + - uid: 5520 + components: + - pos: -47.5,-6.5 + parent: 1 + type: Transform + - uid: 5521 + components: + - pos: -47.5,-7.5 + parent: 1 + type: Transform + - uid: 5601 + components: + - pos: -41.5,13.5 + parent: 1 + type: Transform + - uid: 5602 + components: + - pos: -46.5,15.5 + parent: 1 + type: Transform + - uid: 5603 + components: + - pos: -47.5,15.5 + parent: 1 + type: Transform + - uid: 5610 + components: + - pos: -45.5,25.5 + parent: 1 + type: Transform + - uid: 5611 + components: + - pos: -45.5,24.5 + parent: 1 + type: Transform + - uid: 5635 + components: + - pos: -26.5,26.5 + parent: 1 + type: Transform + - uid: 5636 + components: + - pos: -25.5,26.5 + parent: 1 + type: Transform + - uid: 5637 + components: + - pos: -24.5,26.5 + parent: 1 + type: Transform + - uid: 5639 + components: + - pos: -24.5,29.5 + parent: 1 + type: Transform + - uid: 5713 + components: + - pos: -22.5,20.5 + parent: 1 + type: Transform + - uid: 5717 + components: + - pos: -30.5,12.5 + parent: 1 + type: Transform + - uid: 5718 + components: + - pos: -34.5,13.5 + parent: 1 + type: Transform + - uid: 5720 + components: + - pos: -20.5,14.5 + parent: 1 + type: Transform + - uid: 5784 + components: + - pos: -7.5,22.5 + parent: 1 + type: Transform + - uid: 6329 + components: + - pos: 9.5,46.5 + parent: 1 + type: Transform + - uid: 6330 + components: + - pos: -0.5,51.5 + parent: 1 + type: Transform + - uid: 6512 + components: + - pos: -18.5,66.5 + parent: 1 + type: Transform + - uid: 6513 + components: + - pos: -17.5,66.5 + parent: 1 + type: Transform + - uid: 6514 + components: + - pos: -18.5,65.5 + parent: 1 + type: Transform + - uid: 6515 + components: + - pos: -19.5,65.5 + parent: 1 + type: Transform + - uid: 6516 + components: + - pos: -15.5,66.5 + parent: 1 + type: Transform + - uid: 6517 + components: + - pos: -14.5,66.5 + parent: 1 + type: Transform + - uid: 6518 + components: + - pos: -14.5,65.5 + parent: 1 + type: Transform + - uid: 6519 + components: + - pos: -13.5,65.5 + parent: 1 + type: Transform + - uid: 6520 + components: + - pos: -12.5,63.5 + parent: 1 + type: Transform + - uid: 6521 + components: + - pos: -20.5,63.5 + parent: 1 + type: Transform + - uid: 6522 + components: + - pos: -21.5,62.5 + parent: 1 + type: Transform + - uid: 6523 + components: + - pos: -21.5,59.5 + parent: 1 + type: Transform + - uid: 6524 + components: + - pos: -11.5,62.5 + parent: 1 + type: Transform + - uid: 6525 + components: + - pos: -11.5,59.5 + parent: 1 + type: Transform + - uid: 6890 + components: + - pos: -45.5,42.5 + parent: 1 + type: Transform + - uid: 6891 + components: + - pos: -45.5,43.5 + parent: 1 + type: Transform + - uid: 6892 + components: + - pos: -45.5,44.5 + parent: 1 + type: Transform + - uid: 6893 + components: + - pos: -39.5,43.5 + parent: 1 + type: Transform + - uid: 6894 + components: + - pos: -39.5,44.5 + parent: 1 + type: Transform + - uid: 6895 + components: + - pos: -39.5,45.5 + parent: 1 + type: Transform + - uid: 6896 + components: + - pos: -39.5,46.5 + parent: 1 + type: Transform + - uid: 6897 + components: + - pos: -36.5,41.5 + parent: 1 + type: Transform + - uid: 6898 + components: + - pos: -35.5,41.5 + parent: 1 + type: Transform + - uid: 6909 + components: + - pos: -36.5,45.5 + parent: 1 + type: Transform + - uid: 6910 + components: + - pos: -36.5,44.5 + parent: 1 + type: Transform + - uid: 6911 + components: + - pos: -35.5,45.5 + parent: 1 + type: Transform + - uid: 6912 + components: + - pos: -35.5,44.5 + parent: 1 + type: Transform + - uid: 6913 + components: + - pos: -34.5,45.5 + parent: 1 + type: Transform + - uid: 6914 + components: + - pos: -34.5,44.5 + parent: 1 + type: Transform + - uid: 6915 + components: + - pos: -37.5,47.5 + parent: 1 + type: Transform + - uid: 6916 + components: + - pos: -36.5,47.5 + parent: 1 + type: Transform + - uid: 6917 + components: + - pos: -35.5,47.5 + parent: 1 + type: Transform + - uid: 6920 + components: + - pos: -33.5,42.5 + parent: 1 + type: Transform + - uid: 6921 + components: + - pos: -32.5,42.5 + parent: 1 + type: Transform + - uid: 6922 + components: + - pos: -33.5,44.5 + parent: 1 + type: Transform + - uid: 6923 + components: + - pos: -33.5,45.5 + parent: 1 + type: Transform + - uid: 7073 + components: + - pos: -53.5,36.5 + parent: 1 + type: Transform + - uid: 7296 + components: + - pos: -59.5,89.5 + parent: 1 + type: Transform + - uid: 7298 + components: + - pos: -61.5,88.5 + parent: 1 + type: Transform + - uid: 7302 + components: + - pos: -61.5,89.5 + parent: 1 + type: Transform + - uid: 7438 + components: + - pos: -50.5,88.5 + parent: 1 + type: Transform + - uid: 7443 + components: + - pos: -50.5,89.5 + parent: 1 + type: Transform + - uid: 7564 + components: + - pos: -19.5,36.5 + parent: 1 + type: Transform + - uid: 7571 + components: + - pos: -19.5,39.5 + parent: 1 + type: Transform + - uid: 7572 + components: + - pos: -19.5,40.5 + parent: 1 + type: Transform + - uid: 7640 + components: + - pos: -54.5,82.5 + parent: 1 + type: Transform + - uid: 7641 + components: + - pos: -54.5,88.5 + parent: 1 + type: Transform + - uid: 7711 + components: + - pos: -58.5,89.5 + parent: 1 + type: Transform + - uid: 7738 + components: + - pos: -60.5,89.5 + parent: 1 + type: Transform + - uid: 7902 + components: + - pos: -47.5,56.5 + parent: 1 + type: Transform + - uid: 7903 + components: + - pos: -47.5,63.5 + parent: 1 + type: Transform + - uid: 7905 + components: + - pos: -48.5,59.5 + parent: 1 + type: Transform + - uid: 7906 + components: + - pos: -47.5,59.5 + parent: 1 + type: Transform + - uid: 7960 + components: + - pos: -55.5,58.5 + parent: 1 + type: Transform + - uid: 7961 + components: + - pos: -56.5,58.5 + parent: 1 + type: Transform + - uid: 7963 + components: + - pos: -53.5,58.5 + parent: 1 + type: Transform + - uid: 7967 + components: + - pos: -60.5,50.5 + parent: 1 + type: Transform + - uid: 7968 + components: + - pos: -61.5,50.5 + parent: 1 + type: Transform + - uid: 7969 + components: + - pos: -62.5,50.5 + parent: 1 + type: Transform + - uid: 7970 + components: + - pos: -63.5,50.5 + parent: 1 + type: Transform + - uid: 7971 + components: + - pos: -63.5,51.5 + parent: 1 + type: Transform + - uid: 7984 + components: + - pos: -60.5,58.5 + parent: 1 + type: Transform + - uid: 8170 + components: + - pos: 20.5,32.5 + parent: 1 + type: Transform + - uid: 9006 + components: + - pos: -32.5,-5.5 + parent: 1 + type: Transform + - uid: 9070 + components: + - pos: 17.5,42.5 + parent: 1 + type: Transform + - uid: 9082 + components: + - pos: 18.5,40.5 + parent: 1 + type: Transform + - uid: 9226 + components: + - pos: -63.5,41.5 + parent: 1 + type: Transform + - uid: 9274 + components: + - pos: -60.5,41.5 + parent: 1 + type: Transform + - uid: 9948 + components: + - rot: 1.5707963267948966 rad + pos: -64.5,14.5 + parent: 1 + type: Transform + - uid: 9949 + components: + - rot: 1.5707963267948966 rad + pos: -81.5,22.5 + parent: 1 + type: Transform + - uid: 9950 + components: + - rot: 1.5707963267948966 rad + pos: -80.5,22.5 + parent: 1 + type: Transform + - uid: 10095 + components: + - pos: -13.5,-7.5 + parent: 1 + type: Transform + - uid: 10362 + components: + - pos: -3.5,43.5 + parent: 1 + type: Transform + - uid: 10366 + components: + - pos: -3.5,42.5 + parent: 1 + type: Transform + - uid: 10370 + components: + - pos: -29.5,49.5 + parent: 1 + type: Transform + - uid: 10371 + components: + - pos: -28.5,49.5 + parent: 1 + type: Transform + - uid: 10403 + components: + - pos: 22.5,29.5 + parent: 1 + type: Transform + - uid: 10719 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,25.5 + parent: 1 + type: Transform + - uid: 10720 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,25.5 + parent: 1 + type: Transform + - uid: 10721 + components: + - rot: -1.5707963267948966 rad + pos: -64.5,25.5 + parent: 1 + type: Transform + - uid: 10722 + components: + - rot: -1.5707963267948966 rad + pos: -63.5,25.5 + parent: 1 + type: Transform + - uid: 10731 + components: + - rot: -1.5707963267948966 rad + pos: -82.5,29.5 + parent: 1 + type: Transform + - uid: 10732 + components: + - rot: -1.5707963267948966 rad + pos: -82.5,30.5 + parent: 1 + type: Transform + - uid: 10733 + components: + - rot: -1.5707963267948966 rad + pos: -82.5,31.5 + parent: 1 + type: Transform + - uid: 10851 + components: + - pos: -61.5,41.5 + parent: 1 + type: Transform + - uid: 12512 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,14.5 + parent: 1 + type: Transform + - uid: 12767 + components: + - pos: 18.5,28.5 + parent: 1 + type: Transform + - uid: 12768 + components: + - pos: 19.5,28.5 + parent: 1 + type: Transform + - uid: 12769 + components: + - pos: 20.5,28.5 + parent: 1 + type: Transform + - uid: 12902 + components: + - pos: 4.5,8.5 + parent: 1 + type: Transform + - uid: 12903 + components: + - pos: 5.5,8.5 + parent: 1 + type: Transform + - uid: 13083 + components: + - pos: -2.5,10.5 + parent: 1 + type: Transform + - uid: 13084 + components: + - pos: -1.5,10.5 + parent: 1 + type: Transform + - uid: 14239 + components: + - pos: -73.5,51.5 + parent: 1 + type: Transform + - uid: 14240 + components: + - pos: -72.5,51.5 + parent: 1 + type: Transform + - uid: 14245 + components: + - rot: 3.141592653589793 rad + pos: -66.5,41.5 + parent: 1 + type: Transform + - uid: 14246 + components: + - rot: 3.141592653589793 rad + pos: -66.5,42.5 + parent: 1 + type: Transform + - uid: 14315 + components: + - rot: 3.141592653589793 rad + pos: -74.5,46.5 + parent: 1 + type: Transform + - uid: 14580 + components: + - pos: -60.5,19.5 + parent: 1 + type: Transform + - uid: 14586 + components: + - rot: -1.5707963267948966 rad + pos: -61.5,25.5 + parent: 1 + type: Transform + - uid: 14590 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,10.5 + parent: 1 + type: Transform + - uid: 15110 + components: + - pos: 14.5,-7.5 + parent: 1 + type: Transform + - uid: 15547 + components: + - pos: 11.5,-20.5 + parent: 1 + type: Transform + - uid: 15548 + components: + - pos: 12.5,-20.5 + parent: 1 + type: Transform +- proto: TableCarpet + entities: + - uid: 6782 + components: + - pos: -37.5,52.5 + parent: 1 + type: Transform + - uid: 6822 + components: + - pos: -36.5,52.5 + parent: 1 + type: Transform + - uid: 6823 + components: + - pos: -35.5,52.5 + parent: 1 + type: Transform + - uid: 6824 + components: + - pos: -34.5,52.5 + parent: 1 + type: Transform +- proto: TableFrame + entities: + - uid: 1934 + components: + - pos: -4.5,21.5 + parent: 1 + type: Transform + - uid: 1939 + components: + - pos: -4.5,24.5 + parent: 1 + type: Transform + - uid: 7140 + components: + - pos: -64.5,41.5 + parent: 1 + type: Transform + - uid: 7514 + components: + - pos: -25.5,55.5 + parent: 1 + type: Transform + - uid: 7515 + components: + - pos: -25.5,54.5 + parent: 1 + type: Transform + - uid: 10923 + components: + - pos: -61.5,39.5 + parent: 1 + type: Transform +- proto: TableGlass + entities: + - uid: 342 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,-11.5 + parent: 1 + type: Transform + - uid: 1935 + components: + - pos: -3.5,27.5 + parent: 1 + type: Transform + - uid: 1937 + components: + - pos: 0.5,27.5 + parent: 1 + type: Transform + - uid: 1938 + components: + - pos: -4.5,20.5 + parent: 1 + type: Transform + - uid: 1941 + components: + - pos: -0.5,19.5 + parent: 1 + type: Transform + - uid: 1942 + components: + - pos: -0.5,22.5 + parent: 1 + type: Transform + - uid: 1943 + components: + - pos: -0.5,20.5 + parent: 1 + type: Transform + - uid: 1945 + components: + - pos: -0.5,21.5 + parent: 1 + type: Transform + - uid: 2035 + components: + - pos: 15.5,28.5 + parent: 1 + type: Transform + - uid: 2036 + components: + - pos: 16.5,28.5 + parent: 1 + type: Transform +- proto: TableReinforced + entities: + - uid: 1327 + components: + - pos: 10.5,-13.5 + parent: 1 + type: Transform + - uid: 2969 + components: + - rot: 1.5707963267948966 rad + pos: 27.5,23.5 + parent: 1 + type: Transform + - uid: 7912 + components: + - pos: -43.5,61.5 + parent: 1 + type: Transform + - uid: 7913 + components: + - pos: -42.5,61.5 + parent: 1 + type: Transform + - uid: 7914 + components: + - pos: -41.5,61.5 + parent: 1 + type: Transform + - uid: 7915 + components: + - pos: -41.5,62.5 + parent: 1 + type: Transform + - uid: 7916 + components: + - pos: -41.5,63.5 + parent: 1 + type: Transform + - uid: 10857 + components: + - pos: -23.5,54.5 + parent: 1 + type: Transform + - uid: 10858 + components: + - pos: -23.5,53.5 + parent: 1 + type: Transform + - uid: 10859 + components: + - pos: -22.5,53.5 + parent: 1 + type: Transform + - uid: 14818 + components: + - pos: -21.5,53.5 + parent: 1 + type: Transform +- proto: TableReinforcedGlass + entities: + - uid: 6940 + components: + - pos: -42.5,47.5 + parent: 1 + type: Transform + - uid: 6948 + components: + - pos: -43.5,47.5 + parent: 1 + type: Transform +- proto: TableStone + entities: + - uid: 1808 + components: + - pos: 13.5,3.5 + parent: 1 + type: Transform + - uid: 1809 + components: + - pos: 14.5,3.5 + parent: 1 + type: Transform + - uid: 1811 + components: + - pos: 16.5,3.5 + parent: 1 + type: Transform + - uid: 1812 + components: + - pos: 17.5,3.5 + parent: 1 + type: Transform +- proto: TableWood + entities: + - uid: 246 + components: + - pos: -1.5,1.5 + parent: 1 + type: Transform + - uid: 628 + components: + - pos: 6.5,-2.5 + parent: 1 + type: Transform + - uid: 629 + components: + - pos: 7.5,2.5 + parent: 1 + type: Transform + - uid: 910 + components: + - pos: 27.5,-1.5 + parent: 1 + type: Transform + - uid: 911 + components: + - pos: 28.5,-1.5 + parent: 1 + type: Transform + - uid: 1279 + components: + - pos: 14.5,31.5 + parent: 1 + type: Transform + - uid: 1313 + components: + - pos: 15.5,31.5 + parent: 1 + type: Transform + - uid: 1521 + components: + - pos: -17.5,-4.5 + parent: 1 + type: Transform + - uid: 1833 + components: + - pos: 21.5,-2.5 + parent: 1 + type: Transform + - uid: 1834 + components: + - pos: 21.5,-1.5 + parent: 1 + type: Transform + - uid: 1974 + components: + - pos: -1.5,34.5 + parent: 1 + type: Transform + - uid: 1975 + components: + - pos: -1.5,33.5 + parent: 1 + type: Transform + - uid: 1976 + components: + - pos: -1.5,32.5 + parent: 1 + type: Transform + - uid: 1977 + components: + - pos: -0.5,32.5 + parent: 1 + type: Transform + - uid: 1978 + components: + - pos: 0.5,32.5 + parent: 1 + type: Transform + - uid: 2260 + components: + - pos: 16.5,15.5 + parent: 1 + type: Transform + - uid: 2261 + components: + - pos: 17.5,15.5 + parent: 1 + type: Transform + - uid: 2262 + components: + - pos: 18.5,15.5 + parent: 1 + type: Transform + - uid: 2263 + components: + - pos: 19.5,15.5 + parent: 1 + type: Transform + - uid: 2264 + components: + - pos: 20.5,15.5 + parent: 1 + type: Transform + - uid: 2265 + components: + - pos: 17.5,19.5 + parent: 1 + type: Transform + - uid: 2991 + components: + - pos: 24.5,14.5 + parent: 1 + type: Transform + - uid: 3096 + components: + - pos: -27.5,13.5 + parent: 1 + type: Transform + - uid: 3097 + components: + - pos: -28.5,13.5 + parent: 1 + type: Transform + - uid: 3103 + components: + - pos: -27.5,9.5 + parent: 1 + type: Transform + - uid: 3104 + components: + - pos: -26.5,9.5 + parent: 1 + type: Transform + - uid: 3105 + components: + - pos: -25.5,9.5 + parent: 1 + type: Transform + - uid: 3106 + components: + - pos: -24.5,9.5 + parent: 1 + type: Transform + - uid: 3107 + components: + - pos: -24.5,8.5 + parent: 1 + type: Transform + - uid: 3183 + components: + - pos: -27.5,17.5 + parent: 1 + type: Transform + - uid: 3185 + components: + - pos: -26.5,17.5 + parent: 1 + type: Transform + - uid: 3186 + components: + - pos: -26.5,16.5 + parent: 1 + type: Transform + - uid: 3196 + components: + - pos: -31.5,9.5 + parent: 1 + type: Transform + - uid: 3201 + components: + - pos: -27.5,16.5 + parent: 1 + type: Transform + - uid: 3572 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,15.5 + parent: 1 + type: Transform + - uid: 3575 + components: + - pos: -31.5,-1.5 + parent: 1 + type: Transform + - uid: 3577 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,-3.5 + parent: 1 + type: Transform + - uid: 3584 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,15.5 + parent: 1 + type: Transform + - uid: 3692 + components: + - pos: -37.5,-9.5 + parent: 1 + type: Transform + - uid: 3727 + components: + - pos: -45.5,-3.5 + parent: 1 + type: Transform + - uid: 3747 + components: + - pos: -45.5,-7.5 + parent: 1 + type: Transform + - uid: 3749 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,-6.5 + parent: 1 + type: Transform + - uid: 5342 + components: + - rot: 3.141592653589793 rad + pos: -50.5,9.5 + parent: 1 + type: Transform + - uid: 5343 + components: + - rot: 3.141592653589793 rad + pos: -48.5,9.5 + parent: 1 + type: Transform + - uid: 5351 + components: + - pos: -54.5,-5.5 + parent: 1 + type: Transform + - uid: 5352 + components: + - pos: -53.5,-5.5 + parent: 1 + type: Transform + - uid: 5353 + components: + - pos: -52.5,-5.5 + parent: 1 + type: Transform + - uid: 5354 + components: + - pos: -53.5,-0.5 + parent: 1 + type: Transform + - uid: 5355 + components: + - pos: -53.5,-1.5 + parent: 1 + type: Transform + - uid: 6077 + components: + - rot: 3.141592653589793 rad + pos: -49.5,9.5 + parent: 1 + type: Transform + - uid: 6243 + components: + - pos: -9.5,44.5 + parent: 1 + type: Transform + - uid: 6244 + components: + - pos: -8.5,44.5 + parent: 1 + type: Transform + - uid: 6245 + components: + - pos: -6.5,44.5 + parent: 1 + type: Transform + - uid: 6331 + components: + - pos: 2.5,49.5 + parent: 1 + type: Transform + - uid: 6332 + components: + - pos: 15.5,50.5 + parent: 1 + type: Transform + - uid: 6333 + components: + - pos: 14.5,50.5 + parent: 1 + type: Transform + - uid: 6510 + components: + - pos: -6.5,61.5 + parent: 1 + type: Transform + - uid: 6511 + components: + - pos: -7.5,61.5 + parent: 1 + type: Transform + - uid: 6646 + components: + - pos: -10.5,55.5 + parent: 1 + type: Transform + - uid: 6647 + components: + - pos: -9.5,55.5 + parent: 1 + type: Transform + - uid: 6648 + components: + - pos: -8.5,55.5 + parent: 1 + type: Transform + - uid: 6899 + components: + - pos: -33.5,38.5 + parent: 1 + type: Transform + - uid: 6901 + components: + - pos: -33.5,36.5 + parent: 1 + type: Transform + - uid: 6902 + components: + - pos: -33.5,35.5 + parent: 1 + type: Transform + - uid: 7357 + components: + - rot: 1.5707963267948966 rad + pos: -3.5,0.5 + parent: 1 + type: Transform + - uid: 7373 + components: + - pos: -5.5,44.5 + parent: 1 + type: Transform + - uid: 7388 + components: + - pos: -37.5,-10.5 + parent: 1 + type: Transform + - uid: 7528 + components: + - pos: -22.5,46.5 + parent: 1 + type: Transform + - uid: 7529 + components: + - pos: -21.5,46.5 + parent: 1 + type: Transform + - uid: 7542 + components: + - pos: -19.5,47.5 + parent: 1 + type: Transform + - uid: 7543 + components: + - pos: -19.5,48.5 + parent: 1 + type: Transform + - uid: 7544 + components: + - pos: -19.5,46.5 + parent: 1 + type: Transform + - uid: 7924 + components: + - pos: -54.5,64.5 + parent: 1 + type: Transform + - uid: 7925 + components: + - pos: -56.5,63.5 + parent: 1 + type: Transform + - uid: 7926 + components: + - pos: -56.5,64.5 + parent: 1 + type: Transform + - uid: 7927 + components: + - pos: -60.5,64.5 + parent: 1 + type: Transform + - uid: 7928 + components: + - pos: -60.5,63.5 + parent: 1 + type: Transform + - uid: 7929 + components: + - pos: -58.5,64.5 + parent: 1 + type: Transform + - uid: 8071 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,16.5 + parent: 1 + type: Transform + - uid: 9728 + components: + - pos: -30.5,39.5 + parent: 1 + type: Transform + - uid: 9729 + components: + - pos: -30.5,38.5 + parent: 1 + type: Transform + - uid: 9730 + components: + - pos: -30.5,36.5 + parent: 1 + type: Transform + - uid: 9731 + components: + - pos: -30.5,35.5 + parent: 1 + type: Transform + - uid: 9747 + components: + - pos: -41.5,35.5 + parent: 1 + type: Transform + - uid: 9748 + components: + - pos: -44.5,36.5 + parent: 1 + type: Transform + - uid: 9750 + components: + - pos: -38.5,37.5 + parent: 1 + type: Transform + - uid: 9751 + components: + - pos: -37.5,37.5 + parent: 1 + type: Transform + - uid: 9752 + components: + - pos: -36.5,37.5 + parent: 1 + type: Transform + - uid: 9770 + components: + - pos: -38.5,40.5 + parent: 1 + type: Transform + - uid: 10256 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,-2.5 + parent: 1 + type: Transform + - uid: 10702 + components: + - rot: -1.5707963267948966 rad + pos: -68.5,16.5 + parent: 1 + type: Transform + - uid: 10853 + components: + - pos: -63.5,39.5 + parent: 1 + type: Transform + - uid: 10922 + components: + - pos: -62.5,39.5 + parent: 1 + type: Transform + - uid: 10964 + components: + - pos: -72.5,41.5 + parent: 1 + type: Transform + - uid: 10965 + components: + - pos: -70.5,39.5 + parent: 1 + type: Transform + - uid: 14000 + components: + - pos: -70.5,45.5 + parent: 1 + type: Transform + - uid: 14001 + components: + - pos: -69.5,45.5 + parent: 1 + type: Transform + - uid: 14203 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,15.5 + parent: 1 + type: Transform + - uid: 14206 + components: + - pos: -37.5,-13.5 + parent: 1 + type: Transform + - uid: 14282 + components: + - pos: -71.5,49.5 + parent: 1 + type: Transform + - uid: 14283 + components: + - pos: -70.5,49.5 + parent: 1 + type: Transform + - uid: 14288 + components: + - pos: -72.5,47.5 + parent: 1 + type: Transform + - uid: 15012 + components: + - pos: 18.5,48.5 + parent: 1 + type: Transform + - uid: 15093 + components: + - pos: -38.5,-9.5 + parent: 1 + type: Transform + - uid: 15220 + components: + - pos: 17.5,52.5 + parent: 1 + type: Transform +- proto: TelecomServer + entities: + - uid: 982 + components: + - pos: 26.5,28.5 + parent: 1 + type: Transform + - containers: + key_slots: !type:Container + showEnts: False + occludes: True + ents: + - 983 + machine_board: !type:Container + showEnts: False + occludes: True + ents: [] + machine_parts: !type:Container + showEnts: False + occludes: True + ents: [] + type: ContainerContainer + - uid: 1026 + components: + - pos: 25.5,26.5 + parent: 1 + type: Transform + - containers: + key_slots: !type:Container + showEnts: False + occludes: True + ents: + - 1027 + machine_board: !type:Container + showEnts: False + occludes: True + ents: [] + machine_parts: !type:Container + showEnts: False + occludes: True + ents: [] + type: ContainerContainer + - uid: 2590 + components: + - pos: 25.5,25.5 + parent: 1 + type: Transform + - containers: + key_slots: !type:Container + showEnts: False + occludes: True + ents: + - 2591 + machine_board: !type:Container + showEnts: False + occludes: True + ents: [] + machine_parts: !type:Container + showEnts: False + occludes: True + ents: [] + type: ContainerContainer + - uid: 15336 + components: + - pos: 25.5,28.5 + parent: 1 + type: Transform + - containers: + key_slots: !type:Container + showEnts: False + occludes: True + ents: + - 15337 + machine_board: !type:Container + showEnts: False + occludes: True + ents: [] + machine_parts: !type:Container + showEnts: False + occludes: True + ents: [] + type: ContainerContainer + - uid: 15338 + components: + - pos: 27.5,28.5 + parent: 1 + type: Transform + - containers: + key_slots: !type:Container + showEnts: False + occludes: True + ents: + - 15339 + machine_board: !type:Container + showEnts: False + occludes: True + ents: [] + machine_parts: !type:Container + showEnts: False + occludes: True + ents: [] + type: ContainerContainer + - uid: 15340 + components: + - pos: 28.5,28.5 + parent: 1 + type: Transform + - containers: + key_slots: !type:Container + showEnts: False + occludes: True + ents: + - 15341 + - 15342 + machine_board: !type:Container + showEnts: False + occludes: True + ents: [] + machine_parts: !type:Container + showEnts: False + occludes: True + ents: [] + type: ContainerContainer + - uid: 15343 + components: + - pos: 28.5,26.5 + parent: 1 + type: Transform + - containers: + key_slots: !type:Container + showEnts: False + occludes: True + ents: + - 15344 + - 15345 + - 15346 + machine_board: !type:Container + showEnts: False + occludes: True + ents: [] + machine_parts: !type:Container + showEnts: False + occludes: True + ents: [] + type: ContainerContainer + - uid: 15347 + components: + - pos: 28.5,25.5 + parent: 1 + type: Transform + - containers: + key_slots: !type:Container + showEnts: False + occludes: True + ents: + - 15348 + machine_board: !type:Container + showEnts: False + occludes: True + ents: [] + machine_parts: !type:Container + showEnts: False + occludes: True + ents: [] + type: ContainerContainer +- proto: TintedWindow + entities: + - uid: 530 + components: + - pos: -42.5,-6.5 + parent: 1 + type: Transform + - uid: 536 + components: + - pos: -42.5,-7.5 + parent: 1 + type: Transform + - uid: 1325 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,31.5 + parent: 1 + type: Transform + - uid: 1397 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,30.5 + parent: 1 + type: Transform + - uid: 1664 + components: + - pos: 17.5,-11.5 + parent: 1 + type: Transform +- proto: ToiletDirtyWater + entities: + - uid: 1666 + components: + - rot: -1.5707963267948966 rad + pos: 19.5,-10.5 + parent: 1 + type: Transform + - uid: 4069 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,-1.5 + parent: 1 + type: Transform + - uid: 4070 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,0.5 + parent: 1 + type: Transform + - uid: 4071 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,2.5 + parent: 1 + type: Transform +- proto: ToiletEmpty + entities: + - uid: 7028 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,40.5 + parent: 1 + type: Transform + - containers: + stash: !type:ContainerSlot + showEnts: False + occludes: True + ent: 6979 + type: ContainerContainer + - uid: 7135 + components: + - pos: -64.5,42.5 + parent: 1 + type: Transform + - uid: 7322 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,86.5 + parent: 1 + type: Transform + - uid: 9954 + components: + - pos: -61.5,42.5 + parent: 1 + type: Transform + - uid: 10848 + components: + - rot: 3.141592653589793 rad + pos: -62.5,38.5 + parent: 1 + type: Transform + - uid: 10931 + components: + - pos: -64.5,45.5 + parent: 1 + type: Transform + - uid: 10932 + components: + - pos: -63.5,45.5 + parent: 1 + type: Transform + - uid: 10933 + components: + - pos: -60.5,45.5 + parent: 1 + type: Transform + - uid: 10951 + components: + - rot: 3.141592653589793 rad + pos: -64.5,39.5 + parent: 1 + type: Transform +- proto: ToolboxElectricalFilled + entities: + - uid: 5646 + components: + - pos: -25.110394,26.456669 + parent: 1 + type: Transform + - uid: 5840 + components: + - pos: -82.51737,30.870302 + parent: 1 + type: Transform + - uid: 13608 + components: + - pos: -63.54383,25.748787 + parent: 1 + type: Transform + - uid: 15549 + components: + - pos: 12.466422,-20.487698 + parent: 1 + type: Transform +- proto: ToolboxEmergencyFilled + entities: + - uid: 5645 + components: + - pos: -24.587534,26.550022 + parent: 1 + type: Transform + - uid: 10919 + components: + - pos: -21.512825,62.627495 + parent: 1 + type: Transform +- proto: ToolboxGoldFilled + entities: + - uid: 10871 + components: + - pos: -23.241955,53.59838 + parent: 1 + type: Transform +- proto: ToolboxMechanical + entities: + - uid: 4736 + components: + - pos: -8.936694,44.61425 + parent: 1 + type: Transform + - uid: 4738 + components: + - pos: -9.577319,44.598625 + parent: 1 + type: Transform + - uid: 5002 + components: + - pos: -8.436694,44.55175 + parent: 1 + type: Transform +- proto: ToolboxMechanicalFilled + entities: + - uid: 5641 + components: + - pos: -7.51254,9.424052 + parent: 1 + type: Transform + - uid: 5644 + components: + - pos: -25.165659,26.690647 + parent: 1 + type: Transform + - uid: 6065 + components: + - pos: -82.51737,30.995302 + parent: 1 + type: Transform + - uid: 10920 + components: + - pos: -11.49985,59.57393 + parent: 1 + type: Transform + - uid: 13609 + components: + - pos: -63.528206,25.389412 + parent: 1 + type: Transform + - uid: 15560 + components: + - pos: 12.466422,-20.253323 + parent: 1 + type: Transform +- proto: ToyDeathRipley + entities: + - uid: 3184 + components: + - pos: -26.45058,17.657667 + parent: 1 + type: Transform +- proto: ToyDurand + entities: + - uid: 3203 + components: + - pos: -27.13808,16.704542 + parent: 1 + type: Transform +- proto: ToyFireRipley + entities: + - uid: 3202 + components: + - pos: -26.466206,16.876417 + parent: 1 + type: Transform +- proto: ToyHonk + entities: + - uid: 3200 + components: + - pos: -27.54433,17.142042 + parent: 1 + type: Transform +- proto: ToyIan + entities: + - uid: 7576 + components: + - pos: -22.170961,37.297226 + parent: 1 + type: Transform +- proto: ToySkeleton + entities: + - uid: 15121 + components: + - pos: -4.60635,49.548958 + parent: 1 + type: Transform +- proto: ToySpawner + entities: + - uid: 3513 + components: + - pos: -19.5,-13.5 + parent: 1 + type: Transform + - uid: 3514 + components: + - pos: -19.5,-14.5 + parent: 1 + type: Transform + - uid: 5032 + components: + - pos: -31.5,25.5 + parent: 1 + type: Transform + - uid: 5046 + components: + - pos: -33.5,28.5 + parent: 1 + type: Transform + - uid: 15942 + components: + - pos: 18.5,-8.5 + parent: 1 + type: Transform +- proto: TrashBananaPeel + entities: + - uid: 1415 + components: + - pos: -37.219505,3.4937391 + parent: 1 + type: Transform + - uid: 1813 + components: + - pos: -47.903706,6.478619 + parent: 1 + type: Transform + - uid: 2259 + components: + - pos: -52.19529,31.223146 + parent: 1 + type: Transform + - uid: 2301 + components: + - pos: -34.750755,3.5093641 + parent: 1 + type: Transform + - uid: 2638 + components: + - pos: -58.333614,39.9851 + parent: 1 + type: Transform + - uid: 2660 + components: + - pos: -24.719154,34.580376 + parent: 1 + type: Transform + - uid: 2662 + components: + - pos: -46.437923,43.313522 + parent: 1 + type: Transform + - uid: 4161 + components: + - pos: -57.03674,38.469475 + parent: 1 + type: Transform + - uid: 15123 + components: + - pos: -42.080788,28.835457 + parent: 1 + type: Transform + - uid: 15124 + components: + - pos: -42.158913,28.601082 + parent: 1 + type: Transform + - uid: 15125 + components: + - pos: -42.237038,28.413582 + parent: 1 + type: Transform +- proto: TrashBananaPeelExplosive + entities: + - uid: 2791 + components: + - pos: -26.575481,55.467476 + parent: 1 + type: Transform + - uid: 15837 + components: + - pos: -29.528606,53.2956 + parent: 1 + type: Transform +- proto: trayScanner + entities: + - uid: 15559 + components: + - pos: 11.419547,-20.393948 + parent: 1 + type: Transform +- proto: TromboneInstrument + entities: + - uid: 10958 + components: + - pos: -69.56805,45.607796 + parent: 1 + type: Transform +- proto: TrumpetInstrument + entities: + - uid: 9676 + components: + - pos: -70.39617,45.607796 + parent: 1 + type: Transform +- proto: TwoWayLever + entities: + - uid: 523 + components: + - pos: 1.5,2.5 + parent: 1 + type: Transform + - linkedPorts: + 105: + - Left: Open + - Right: Open + - Middle: Close + 216: + - Left: Open + - Right: Open + - Middle: Close + 215: + - Left: Open + - Right: Open + - Middle: Close + type: DeviceLinkSource + - uid: 13823 + components: + - pos: -35.5,-8.5 + parent: 1 + type: Transform + - linkedPorts: + 13829: + - Left: Forward + - Right: Reverse + - Middle: Off + 13828: + - Left: Forward + - Right: Reverse + - Middle: Off + 13827: + - Left: Forward + - Right: Reverse + - Middle: Off + 13826: + - Left: Forward + - Right: Reverse + - Middle: Off + 13825: + - Left: Forward + - Right: Reverse + - Middle: Off + type: DeviceLinkSource + - uid: 13824 + components: + - pos: -31.5,-8.5 + parent: 1 + type: Transform + - linkedPorts: + 13834: + - Left: Forward + - Right: Reverse + - Middle: Off + 13833: + - Left: Forward + - Right: Reverse + - Middle: Off + 13832: + - Left: Forward + - Right: Reverse + - Middle: Off + 13831: + - Left: Forward + - Right: Reverse + - Middle: Off + 13830: + - Left: Forward + - Right: Reverse + - Middle: Off + type: DeviceLinkSource + - uid: 13842 + components: + - pos: -41.5,-9.5 + parent: 1 + type: Transform + - linkedPorts: + 6793: + - Left: Forward + - Right: Reverse + - Middle: Off + 6789: + - Left: Forward + - Right: Reverse + - Middle: Off + 7282: + - Left: Forward + - Right: Reverse + - Middle: Off + type: DeviceLinkSource + - uid: 13843 + components: + - pos: -38.5,-7.5 + parent: 1 + type: Transform + - linkedPorts: + 7282: + - Left: Forward + - Right: Reverse + - Middle: Off + 6789: + - Left: Forward + - Right: Reverse + - Middle: Off + 6793: + - Left: Forward + - Right: Reverse + - Middle: Off + type: DeviceLinkSource + - uid: 14233 + components: + - pos: -70.5,55.5 + parent: 1 + type: Transform + - linkedPorts: + 14225: + - Left: Forward + - Right: Reverse + - Middle: Off + 14226: + - Left: Forward + - Right: Reverse + - Middle: Off + 14224: + - Left: Forward + - Right: Reverse + - Middle: Off + 14227: + - Left: Forward + - Right: Reverse + - Middle: Off + 14228: + - Left: Forward + - Right: Reverse + - Middle: Off + 14229: + - Left: Forward + - Right: Reverse + - Middle: Off + 14230: + - Left: Forward + - Right: Reverse + - Middle: Off + type: DeviceLinkSource +- proto: UniformPrinter + entities: + - uid: 7560 + components: + - pos: -21.5,42.5 + parent: 1 + type: Transform +- proto: UniformShortsRed + entities: + - uid: 14365 + components: + - pos: -64.695595,14.460857 + parent: 1 + type: Transform + - uid: 14366 + components: + - pos: -64.24247,14.460857 + parent: 1 + type: Transform +- proto: UniformShortsRedWithTop + entities: + - uid: 14367 + components: + - pos: -64.601845,14.679607 + parent: 1 + type: Transform + - uid: 14368 + components: + - pos: -64.42997,14.679607 + parent: 1 + type: Transform +- proto: UprightPianoInstrument + entities: + - uid: 6705 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,42.5 + parent: 1 + type: Transform +- proto: UraniumWindow + entities: + - uid: 2696 + components: + - rot: 3.141592653589793 rad + pos: -24.5,30.5 + parent: 1 + type: Transform +- proto: Vaccinator + entities: + - uid: 2361 + components: + - pos: 11.5,17.5 + parent: 1 + type: Transform +- proto: VehicleKeyATV + entities: + - uid: 3519 + components: + - pos: -21.491938,-11.581937 + parent: 1 + type: Transform +- proto: VehicleKeyJanicart + entities: + - uid: 4162 + components: + - pos: -53.425735,36.403816 + parent: 1 + type: Transform + - uid: 15049 + components: + - flags: InContainer + type: MetaData + - parent: 7071 + type: Transform + - canCollide: False + type: Physics + - type: InsideEntityStorage +- proto: VehicleKeySecway + entities: + - uid: 8021 + components: + - pos: -63.41839,50.781906 + parent: 1 + type: Transform + - uid: 8022 + components: + - pos: -63.652763,50.594406 + parent: 1 + type: Transform +- proto: VehicleKeySkeleton + entities: + - uid: 15122 + components: + - pos: -4.309475,49.548958 + parent: 1 + type: Transform +- proto: VendingBarDrobe + entities: + - uid: 9726 + components: + - flags: SessionSpecific + type: MetaData + - pos: -27.5,38.5 + parent: 1 + type: Transform +- proto: VendingMachineAtmosDrobe + entities: + - uid: 133 + components: + - flags: SessionSpecific + type: MetaData + - pos: -84.5,32.5 + parent: 1 + type: Transform +- proto: VendingMachineBooze + entities: + - uid: 6339 + components: + - flags: SessionSpecific + type: MetaData + - pos: 13.5,50.5 + parent: 1 + type: Transform + - uid: 9727 + components: + - flags: SessionSpecific + type: MetaData + - pos: -30.5,40.5 + parent: 1 + type: Transform + - uid: 10103 + components: + - flags: SessionSpecific + type: MetaData + - pos: 4.5,49.5 + parent: 1 + type: Transform +- proto: VendingMachineCargoDrobe + entities: + - uid: 3655 + components: + - flags: SessionSpecific + type: MetaData + - pos: -41.5,-7.5 + parent: 1 + type: Transform +- proto: VendingMachineCart + entities: + - uid: 7561 + components: + - flags: SessionSpecific + type: MetaData + - pos: -22.5,42.5 + parent: 1 + type: Transform +- proto: VendingMachineChapel + entities: + - uid: 1835 + components: + - flags: SessionSpecific + type: MetaData + - pos: 19.5,-0.5 + parent: 1 + type: Transform +- proto: VendingMachineChefDrobe + entities: + - uid: 6930 + components: + - flags: SessionSpecific + type: MetaData + - pos: -31.5,42.5 + parent: 1 + type: Transform +- proto: VendingMachineChefvend + entities: + - uid: 6931 + components: + - flags: SessionSpecific + type: MetaData + - pos: -38.5,47.5 + parent: 1 + type: Transform +- proto: VendingMachineChemDrobe + entities: + - uid: 1928 + components: + - flags: SessionSpecific + type: MetaData + - pos: -4.5,19.5 + parent: 1 + type: Transform +- proto: VendingMachineChemicals + entities: + - uid: 527 + components: + - flags: SessionSpecific + type: MetaData + - pos: -4.5,26.5 + parent: 1 + type: Transform +- proto: VendingMachineCigs + entities: + - uid: 2661 + components: + - flags: SessionSpecific + type: MetaData + - pos: -9.5,34.5 + parent: 1 + type: Transform + - uid: 4159 + components: + - flags: SessionSpecific + type: MetaData + - pos: -31.5,23.5 + parent: 1 + type: Transform + - uid: 4160 + components: + - flags: SessionSpecific + type: MetaData + - pos: 19.5,4.5 + parent: 1 + type: Transform + - uid: 4164 + components: + - flags: SessionSpecific + type: MetaData + - pos: -18.5,3.5 + parent: 1 + type: Transform + - uid: 10970 + components: + - flags: SessionSpecific + type: MetaData + - pos: -72.5,39.5 + parent: 1 + type: Transform + - uid: 14249 + components: + - flags: SessionSpecific + type: MetaData + - pos: -65.5,50.5 + parent: 1 + type: Transform +- proto: VendingMachineClothing + entities: + - uid: 4238 + components: + - flags: SessionSpecific + type: MetaData + - pos: -6.5,28.5 + parent: 1 + type: Transform +- proto: VendingMachineCola + entities: + - uid: 4167 + components: + - flags: SessionSpecific + type: MetaData + - pos: -4.5,7.5 + parent: 1 + type: Transform +- proto: VendingMachineCondiments + entities: + - uid: 13669 + components: + - flags: SessionSpecific + type: MetaData + - pos: -38.5,40.5 + parent: 1 + type: Transform +- proto: VendingMachineDetDrobe + entities: + - uid: 14279 + components: + - flags: SessionSpecific + type: MetaData + - pos: -72.5,49.5 + parent: 1 + type: Transform +- proto: VendingMachineDinnerware + entities: + - uid: 6932 + components: + - flags: SessionSpecific + type: MetaData + - pos: -33.5,47.5 + parent: 1 + type: Transform +- proto: VendingMachineDiscount + entities: + - uid: 2663 + components: + - flags: SessionSpecific + type: MetaData + - pos: -8.5,34.5 + parent: 1 + type: Transform +- proto: VendingMachineDonut + entities: + - uid: 7943 + components: + - flags: SessionSpecific + type: MetaData + - pos: -56.5,65.5 + parent: 1 + type: Transform +- proto: VendingMachineEngiDrobe + entities: + - uid: 10749 + components: + - flags: SessionSpecific + type: MetaData + - pos: -67.5,25.5 + parent: 1 + type: Transform +- proto: VendingMachineEngivend + entities: + - uid: 10007 + components: + - flags: SessionSpecific + type: MetaData + - pos: -71.5,35.5 + parent: 1 + type: Transform +- proto: VendingMachineGames + entities: + - uid: 3195 + components: + - flags: SessionSpecific + type: MetaData + - pos: -22.5,18.5 + parent: 1 + type: Transform +- proto: VendingMachineHappyHonk + entities: + - uid: 6918 + components: + - flags: SessionSpecific + type: MetaData + - pos: -34.5,47.5 + parent: 1 + type: Transform +- proto: VendingMachineHydrobe + entities: + - uid: 5738 + components: + - flags: SessionSpecific + type: MetaData + - pos: -39.5,49.5 + parent: 1 + type: Transform +- proto: VendingMachineJaniDrobe + entities: + - uid: 7072 + components: + - flags: SessionSpecific + type: MetaData + - pos: -53.5,37.5 + parent: 1 + type: Transform +- proto: VendingMachineLawDrobe + entities: + - uid: 14296 + components: + - flags: SessionSpecific + type: MetaData + - pos: -64.5,38.5 + parent: 1 + type: Transform +- proto: VendingMachineMedical + entities: + - uid: 2031 + components: + - flags: SessionSpecific + type: MetaData + - pos: 5.5,31.5 + parent: 1 + type: Transform +- proto: VendingMachineMediDrobe + entities: + - uid: 2064 + components: + - flags: SessionSpecific + type: MetaData + - pos: 10.5,23.5 + parent: 1 + type: Transform +- proto: VendingMachineNutri + entities: + - uid: 6941 + components: + - flags: SessionSpecific + type: MetaData + - pos: -42.5,49.5 + parent: 1 + type: Transform +- proto: VendingMachineRestockBooze + entities: + - uid: 13676 + components: + - pos: -27.467127,35.556686 + parent: 1 + type: Transform +- proto: VendingMachineRoboDrobe + entities: + - uid: 238 + components: + - flags: SessionSpecific + type: MetaData + - pos: 1.5,-2.5 + parent: 1 + type: Transform +- proto: VendingMachineSalvage + entities: + - uid: 15798 + components: + - flags: SessionSpecific + type: MetaData + - pos: -37.5,-11.5 + parent: 1 + type: Transform +- proto: VendingMachineSciDrobe + entities: + - uid: 242 + components: + - flags: SessionSpecific + type: MetaData + - pos: -6.5,-5.5 + parent: 1 + type: Transform +- proto: VendingMachineSec + entities: + - uid: 7966 + components: + - flags: SessionSpecific + type: MetaData + - pos: -59.5,50.5 + parent: 1 + type: Transform +- proto: VendingMachineSecDrobe + entities: + - uid: 8023 + components: + - flags: SessionSpecific + type: MetaData + - pos: -61.5,61.5 + parent: 1 + type: Transform +- proto: VendingMachineSeeds + entities: + - uid: 5734 + components: + - flags: SessionSpecific + type: MetaData + - pos: -39.5,50.5 + parent: 1 + type: Transform +- proto: VendingMachineSeedsUnlocked + entities: + - uid: 7716 + components: + - flags: SessionSpecific + type: MetaData + - pos: -59.5,83.5 + parent: 1 + type: Transform +- proto: VendingMachineSmartFridge + entities: + - uid: 1936 + components: + - flags: SessionSpecific + type: MetaData + - pos: -4.5,27.5 + parent: 1 + type: Transform +- proto: VendingMachineSustenance + entities: + - uid: 3488 + components: + - flags: SessionSpecific + type: MetaData + - pos: -61.5,83.5 + parent: 1 + type: Transform +- proto: VendingMachineTankDispenserEngineering + entities: + - uid: 9210 + components: + - flags: SessionSpecific + type: MetaData + - pos: -69.5,35.5 + parent: 1 + type: Transform +- proto: VendingMachineTankDispenserEVA + entities: + - uid: 6070 + components: + - flags: SessionSpecific + type: MetaData + - pos: -10.5,46.5 + parent: 1 + type: Transform +- proto: VendingMachineTheater + entities: + - uid: 8968 + components: + - flags: SessionSpecific + type: MetaData + - pos: -32.5,23.5 + parent: 1 + type: Transform +- proto: VendingMachineVendomat + entities: + - uid: 5640 + components: + - flags: SessionSpecific + type: MetaData + - pos: -23.5,29.5 + parent: 1 + type: Transform + - uid: 15120 + components: + - flags: SessionSpecific + type: MetaData + - pos: -51.5,27.5 + parent: 1 + type: Transform +- proto: VendingMachineViroDrobe + entities: + - uid: 1144 + components: + - flags: SessionSpecific + type: MetaData + - pos: 11.5,20.5 + parent: 1 + type: Transform +- proto: VendingMachineWallMedical + entities: + - uid: 2034 + components: + - flags: SessionSpecific + type: MetaData + - pos: 17.5,29.5 + parent: 1 + type: Transform +- proto: VendingMachineWinter + entities: + - uid: 4217 + components: + - flags: SessionSpecific + type: MetaData + - pos: -6.5,27.5 + parent: 1 + type: Transform +- proto: VendingMachineYouTool + entities: + - uid: 5346 + components: + - flags: SessionSpecific + type: MetaData + - pos: -25.5,29.5 + parent: 1 + type: Transform + - uid: 11049 + components: + - flags: SessionSpecific + type: MetaData + - pos: -72.5,35.5 + parent: 1 + type: Transform +- proto: WallmountTelevision + entities: + - uid: 8351 + components: + - pos: -43.5,40.5 + parent: 1 + type: Transform +- proto: WallReinforced + entities: + - uid: 12 + components: + - pos: -4.5,62.5 + parent: 1 + type: Transform + - uid: 116 + components: + - pos: -4.5,58.5 + parent: 1 + type: Transform + - uid: 149 + components: + - pos: 4.5,-12.5 + parent: 1 + type: Transform + - uid: 164 + components: + - pos: -0.5,-14.5 + parent: 1 + type: Transform + - uid: 168 + components: + - pos: 6.5,-11.5 + parent: 1 + type: Transform + - uid: 172 + components: + - pos: 3.5,-7.5 + parent: 1 + type: Transform + - uid: 196 + components: + - pos: 6.5,-9.5 + parent: 1 + type: Transform + - uid: 198 + components: + - pos: 3.5,-12.5 + parent: 1 + type: Transform + - uid: 201 + components: + - pos: 6.5,-12.5 + parent: 1 + type: Transform + - uid: 202 + components: + - pos: 6.5,-10.5 + parent: 1 + type: Transform + - uid: 203 + components: + - pos: 5.5,-7.5 + parent: 1 + type: Transform + - uid: 204 + components: + - pos: 1.5,-16.5 + parent: 1 + type: Transform + - uid: 206 + components: + - pos: -0.5,-9.5 + parent: 1 + type: Transform + - uid: 207 + components: + - pos: 5.5,-12.5 + parent: 1 + type: Transform + - uid: 518 + components: + - pos: 14.5,-6.5 + parent: 1 + type: Transform + - uid: 522 + components: + - pos: -4.5,59.5 + parent: 1 + type: Transform + - uid: 674 + components: + - pos: 28.5,4.5 + parent: 1 + type: Transform + - uid: 676 + components: + - pos: 27.5,0.5 + parent: 1 + type: Transform + - uid: 678 + components: + - pos: 26.5,0.5 + parent: 1 + type: Transform + - uid: 694 + components: + - pos: 24.5,1.5 + parent: 1 + type: Transform + - uid: 703 + components: + - pos: 25.5,4.5 + parent: 1 + type: Transform + - uid: 704 + components: + - pos: 27.5,4.5 + parent: 1 + type: Transform + - uid: 705 + components: + - pos: 24.5,3.5 + parent: 1 + type: Transform + - uid: 707 + components: + - pos: 30.5,4.5 + parent: 1 + type: Transform + - uid: 948 + components: + - rot: 3.141592653589793 rad + pos: 29.5,7.5 + parent: 1 + type: Transform + - uid: 949 + components: + - rot: 3.141592653589793 rad + pos: 30.5,7.5 + parent: 1 + type: Transform + - uid: 950 + components: + - rot: 3.141592653589793 rad + pos: 31.5,7.5 + parent: 1 + type: Transform + - uid: 951 + components: + - rot: 3.141592653589793 rad + pos: 32.5,7.5 + parent: 1 + type: Transform + - uid: 952 + components: + - rot: 3.141592653589793 rad + pos: 29.5,9.5 + parent: 1 + type: Transform + - uid: 955 + components: + - rot: 3.141592653589793 rad + pos: 32.5,9.5 + parent: 1 + type: Transform + - uid: 956 + components: + - rot: 3.141592653589793 rad + pos: 29.5,11.5 + parent: 1 + type: Transform + - uid: 957 + components: + - rot: 3.141592653589793 rad + pos: 30.5,11.5 + parent: 1 + type: Transform + - uid: 958 + components: + - rot: 3.141592653589793 rad + pos: 31.5,11.5 + parent: 1 + type: Transform + - uid: 959 + components: + - rot: 3.141592653589793 rad + pos: 32.5,11.5 + parent: 1 + type: Transform + - uid: 960 + components: + - rot: 3.141592653589793 rad + pos: 29.5,15.5 + parent: 1 + type: Transform + - uid: 961 + components: + - rot: 3.141592653589793 rad + pos: 30.5,15.5 + parent: 1 + type: Transform + - uid: 962 + components: + - rot: 3.141592653589793 rad + pos: 31.5,15.5 + parent: 1 + type: Transform + - uid: 963 + components: + - rot: 3.141592653589793 rad + pos: 32.5,15.5 + parent: 1 + type: Transform + - uid: 964 + components: + - rot: 3.141592653589793 rad + pos: 29.5,17.5 + parent: 1 + type: Transform + - uid: 967 + components: + - rot: 3.141592653589793 rad + pos: 32.5,17.5 + parent: 1 + type: Transform + - uid: 968 + components: + - rot: 3.141592653589793 rad + pos: 29.5,19.5 + parent: 1 + type: Transform + - uid: 969 + components: + - rot: 3.141592653589793 rad + pos: 30.5,19.5 + parent: 1 + type: Transform + - uid: 970 + components: + - rot: 3.141592653589793 rad + pos: 31.5,19.5 + parent: 1 + type: Transform + - uid: 971 + components: + - rot: 3.141592653589793 rad + pos: 32.5,19.5 + parent: 1 + type: Transform + - uid: 1926 + components: + - pos: -55.5,48.5 + parent: 1 + type: Transform + - uid: 1927 + components: + - pos: -55.5,49.5 + parent: 1 + type: Transform + - uid: 1958 + components: + - pos: -55.5,50.5 + parent: 1 + type: Transform + - uid: 1982 + components: + - pos: -55.5,51.5 + parent: 1 + type: Transform + - uid: 1983 + components: + - pos: -55.5,52.5 + parent: 1 + type: Transform + - uid: 1984 + components: + - pos: -52.5,49.5 + parent: 1 + type: Transform + - uid: 1997 + components: + - pos: -52.5,48.5 + parent: 1 + type: Transform + - uid: 1998 + components: + - pos: -52.5,50.5 + parent: 1 + type: Transform + - uid: 1999 + components: + - pos: -52.5,51.5 + parent: 1 + type: Transform + - uid: 2000 + components: + - pos: -52.5,52.5 + parent: 1 + type: Transform + - uid: 2001 + components: + - pos: -49.5,51.5 + parent: 1 + type: Transform + - uid: 2002 + components: + - pos: -49.5,52.5 + parent: 1 + type: Transform + - uid: 2003 + components: + - pos: -49.5,48.5 + parent: 1 + type: Transform + - uid: 2004 + components: + - pos: -49.5,49.5 + parent: 1 + type: Transform + - uid: 2005 + components: + - pos: -49.5,50.5 + parent: 1 + type: Transform + - uid: 2656 + components: + - pos: -18.5,37.5 + parent: 1 + type: Transform + - uid: 2657 + components: + - pos: -18.5,38.5 + parent: 1 + type: Transform + - uid: 2658 + components: + - pos: -18.5,39.5 + parent: 1 + type: Transform + - uid: 2659 + components: + - pos: -18.5,40.5 + parent: 1 + type: Transform + - uid: 3440 + components: + - pos: -18.5,42.5 + parent: 1 + type: Transform + - uid: 3441 + components: + - pos: -18.5,41.5 + parent: 1 + type: Transform + - uid: 3443 + components: + - pos: -23.5,44.5 + parent: 1 + type: Transform + - uid: 3447 + components: + - pos: -23.5,40.5 + parent: 1 + type: Transform + - uid: 3449 + components: + - pos: -23.5,42.5 + parent: 1 + type: Transform + - uid: 3451 + components: + - pos: -23.5,48.5 + parent: 1 + type: Transform + - uid: 4200 + components: + - pos: -51.5,22.5 + parent: 1 + type: Transform + - uid: 4313 + components: + - pos: -49.5,26.5 + parent: 1 + type: Transform + - uid: 4319 + components: + - pos: -52.5,26.5 + parent: 1 + type: Transform + - uid: 4320 + components: + - pos: -53.5,26.5 + parent: 1 + type: Transform + - uid: 4321 + components: + - pos: -53.5,25.5 + parent: 1 + type: Transform + - uid: 4325 + components: + - pos: -52.5,22.5 + parent: 1 + type: Transform + - uid: 4327 + components: + - pos: -51.5,26.5 + parent: 1 + type: Transform + - uid: 4330 + components: + - pos: -49.5,22.5 + parent: 1 + type: Transform + - uid: 4331 + components: + - pos: -50.5,22.5 + parent: 1 + type: Transform + - uid: 4332 + components: + - pos: -47.5,22.5 + parent: 1 + type: Transform + - uid: 4333 + components: + - pos: -53.5,22.5 + parent: 1 + type: Transform + - uid: 4542 + components: + - pos: -48.5,22.5 + parent: 1 + type: Transform + - uid: 4572 + components: + - pos: -46.5,26.5 + parent: 1 + type: Transform + - uid: 4573 + components: + - pos: -47.5,26.5 + parent: 1 + type: Transform + - uid: 4574 + components: + - pos: -48.5,26.5 + parent: 1 + type: Transform + - uid: 4583 + components: + - pos: -46.5,22.5 + parent: 1 + type: Transform + - uid: 4584 + components: + - pos: -53.5,24.5 + parent: 1 + type: Transform + - uid: 4585 + components: + - pos: -53.5,23.5 + parent: 1 + type: Transform + - uid: 4744 + components: + - rot: 3.141592653589793 rad + pos: -59.5,-12.5 + parent: 1 + type: Transform + - uid: 4792 + components: + - pos: -72.5,2.5 + parent: 1 + type: Transform + - uid: 4793 + components: + - pos: -74.5,2.5 + parent: 1 + type: Transform + - uid: 4799 + components: + - pos: -59.5,3.5 + parent: 1 + type: Transform + - uid: 4809 + components: + - pos: -67.5,2.5 + parent: 1 + type: Transform + - uid: 4810 + components: + - pos: -65.5,2.5 + parent: 1 + type: Transform + - uid: 4843 + components: + - pos: -65.5,3.5 + parent: 1 + type: Transform + - uid: 4849 + components: + - pos: -74.5,3.5 + parent: 1 + type: Transform + - uid: 4856 + components: + - pos: -72.5,3.5 + parent: 1 + type: Transform + - uid: 4862 + components: + - rot: 3.141592653589793 rad + pos: -75.5,-13.5 + parent: 1 + type: Transform + - uid: 4873 + components: + - pos: -67.5,3.5 + parent: 1 + type: Transform + - uid: 4883 + components: + - rot: 3.141592653589793 rad + pos: -73.5,-15.5 + parent: 1 + type: Transform + - uid: 4885 + components: + - rot: 3.141592653589793 rad + pos: -71.5,-12.5 + parent: 1 + type: Transform + - uid: 4886 + components: + - rot: 3.141592653589793 rad + pos: -71.5,-13.5 + parent: 1 + type: Transform + - uid: 4887 + components: + - rot: 3.141592653589793 rad + pos: -67.5,-12.5 + parent: 1 + type: Transform + - uid: 4888 + components: + - rot: 3.141592653589793 rad + pos: -67.5,-13.5 + parent: 1 + type: Transform + - uid: 4896 + components: + - rot: 3.141592653589793 rad + pos: -75.5,-12.5 + parent: 1 + type: Transform + - uid: 4897 + components: + - rot: 3.141592653589793 rad + pos: -65.5,-15.5 + parent: 1 + type: Transform + - uid: 4901 + components: + - rot: 3.141592653589793 rad + pos: -63.5,-14.5 + parent: 1 + type: Transform + - uid: 4907 + components: + - pos: -59.5,-8.5 + parent: 1 + type: Transform + - uid: 4924 + components: + - rot: 3.141592653589793 rad + pos: -63.5,-12.5 + parent: 1 + type: Transform + - uid: 4927 + components: + - rot: 3.141592653589793 rad + pos: -63.5,-13.5 + parent: 1 + type: Transform + - uid: 4928 + components: + - rot: 3.141592653589793 rad + pos: -67.5,-15.5 + parent: 1 + type: Transform + - uid: 4929 + components: + - rot: 3.141592653589793 rad + pos: -65.5,-12.5 + parent: 1 + type: Transform + - uid: 4933 + components: + - rot: 3.141592653589793 rad + pos: -75.5,-14.5 + parent: 1 + type: Transform + - uid: 4936 + components: + - rot: 3.141592653589793 rad + pos: -75.5,-15.5 + parent: 1 + type: Transform + - uid: 4939 + components: + - rot: 3.141592653589793 rad + pos: -73.5,-12.5 + parent: 1 + type: Transform + - uid: 4940 + components: + - pos: -76.5,-8.5 + parent: 1 + type: Transform + - uid: 4941 + components: + - pos: -76.5,-12.5 + parent: 1 + type: Transform + - uid: 4942 + components: + - pos: -76.5,-9.5 + parent: 1 + type: Transform + - uid: 4945 + components: + - pos: -76.5,-11.5 + parent: 1 + type: Transform + - uid: 4948 + components: + - pos: -77.5,-11.5 + parent: 1 + type: Transform + - uid: 4949 + components: + - pos: -78.5,-11.5 + parent: 1 + type: Transform + - uid: 4950 + components: + - pos: -74.5,-8.5 + parent: 1 + type: Transform + - uid: 4953 + components: + - pos: -72.5,-7.5 + parent: 1 + type: Transform + - uid: 4954 + components: + - pos: -67.5,-8.5 + parent: 1 + type: Transform + - uid: 4955 + components: + - pos: -74.5,-7.5 + parent: 1 + type: Transform + - uid: 4956 + components: + - pos: -72.5,-8.5 + parent: 1 + type: Transform + - uid: 4959 + components: + - pos: -65.5,-8.5 + parent: 1 + type: Transform + - uid: 4960 + components: + - pos: -65.5,-7.5 + parent: 1 + type: Transform + - uid: 4962 + components: + - pos: -77.5,-9.5 + parent: 1 + type: Transform + - uid: 4963 + components: + - pos: -67.5,-7.5 + parent: 1 + type: Transform + - uid: 4965 + components: + - pos: -78.5,-9.5 + parent: 1 + type: Transform + - uid: 4967 + components: + - rot: 3.141592653589793 rad + pos: -63.5,-15.5 + parent: 1 + type: Transform + - uid: 4969 + components: + - rot: 3.141592653589793 rad + pos: -71.5,-15.5 + parent: 1 + type: Transform + - uid: 4970 + components: + - rot: 3.141592653589793 rad + pos: -71.5,-14.5 + parent: 1 + type: Transform + - uid: 4979 + components: + - rot: 3.141592653589793 rad + pos: -67.5,-14.5 + parent: 1 + type: Transform + - uid: 5072 + components: + - rot: -1.5707963267948966 rad + pos: -76.5,7.5 + parent: 1 + type: Transform + - uid: 5073 + components: + - pos: -76.5,3.5 + parent: 1 + type: Transform + - uid: 5472 + components: + - rot: 3.141592653589793 rad + pos: -49.5,69.5 + parent: 1 + type: Transform + - uid: 5473 + components: + - pos: -64.5,49.5 + parent: 1 + type: Transform + - uid: 5476 + components: + - rot: 3.141592653589793 rad + pos: -53.5,69.5 + parent: 1 + type: Transform + - uid: 5478 + components: + - pos: -64.5,51.5 + parent: 1 + type: Transform + - uid: 5686 + components: + - pos: -56.5,79.5 + parent: 1 + type: Transform + - uid: 5750 + components: + - pos: -45.5,56.5 + parent: 1 + type: Transform + - uid: 5754 + components: + - rot: 3.141592653589793 rad + pos: -45.5,68.5 + parent: 1 + type: Transform + - uid: 5776 + components: + - pos: -64.5,50.5 + parent: 1 + type: Transform + - uid: 5777 + components: + - pos: -58.5,56.5 + parent: 1 + type: Transform + - uid: 5785 + components: + - pos: -58.5,49.5 + parent: 1 + type: Transform + - uid: 5816 + components: + - pos: -23.5,47.5 + parent: 1 + type: Transform + - uid: 5817 + components: + - pos: -23.5,37.5 + parent: 1 + type: Transform + - uid: 5818 + components: + - pos: -23.5,38.5 + parent: 1 + type: Transform + - uid: 5821 + components: + - pos: -19.5,43.5 + parent: 1 + type: Transform + - uid: 5824 + components: + - pos: -19.5,49.5 + parent: 1 + type: Transform + - uid: 5826 + components: + - pos: -21.5,49.5 + parent: 1 + type: Transform + - uid: 5829 + components: + - pos: -22.5,43.5 + parent: 1 + type: Transform + - uid: 5834 + components: + - pos: -18.5,44.5 + parent: 1 + type: Transform + - uid: 5902 + components: + - pos: -22.5,49.5 + parent: 1 + type: Transform + - uid: 5904 + components: + - pos: -15.5,52.5 + parent: 1 + type: Transform + - uid: 5905 + components: + - pos: -18.5,52.5 + parent: 1 + type: Transform + - uid: 5947 + components: + - pos: -17.5,52.5 + parent: 1 + type: Transform + - uid: 6349 + components: + - rot: 3.141592653589793 rad + pos: -4.5,57.5 + parent: 1 + type: Transform + - uid: 6350 + components: + - rot: 3.141592653589793 rad + pos: -5.5,57.5 + parent: 1 + type: Transform + - uid: 6359 + components: + - pos: -6.5,57.5 + parent: 1 + type: Transform + - uid: 6360 + components: + - rot: 3.141592653589793 rad + pos: -6.5,58.5 + parent: 1 + type: Transform + - uid: 6361 + components: + - rot: 3.141592653589793 rad + pos: -8.5,58.5 + parent: 1 + type: Transform + - uid: 6362 + components: + - rot: 3.141592653589793 rad + pos: -9.5,58.5 + parent: 1 + type: Transform + - uid: 6363 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,58.5 + parent: 1 + type: Transform + - uid: 6368 + components: + - rot: 3.141592653589793 rad + pos: -19.5,53.5 + parent: 1 + type: Transform + - uid: 6369 + components: + - rot: 3.141592653589793 rad + pos: -19.5,55.5 + parent: 1 + type: Transform + - uid: 6370 + components: + - rot: 3.141592653589793 rad + pos: -19.5,56.5 + parent: 1 + type: Transform + - uid: 6371 + components: + - rot: 3.141592653589793 rad + pos: -19.5,57.5 + parent: 1 + type: Transform + - uid: 6374 + components: + - rot: 3.141592653589793 rad + pos: -21.5,58.5 + parent: 1 + type: Transform + - uid: 6375 + components: + - rot: 3.141592653589793 rad + pos: -22.5,58.5 + parent: 1 + type: Transform + - uid: 6376 + components: + - rot: 3.141592653589793 rad + pos: -23.5,58.5 + parent: 1 + type: Transform + - uid: 6378 + components: + - rot: 3.141592653589793 rad + pos: -24.5,57.5 + parent: 1 + type: Transform + - uid: 6379 + components: + - rot: 3.141592653589793 rad + pos: -24.5,56.5 + parent: 1 + type: Transform + - uid: 6380 + components: + - rot: 3.141592653589793 rad + pos: -24.5,55.5 + parent: 1 + type: Transform + - uid: 6381 + components: + - rot: 3.141592653589793 rad + pos: -24.5,54.5 + parent: 1 + type: Transform + - uid: 6382 + components: + - rot: 3.141592653589793 rad + pos: -23.5,52.5 + parent: 1 + type: Transform + - uid: 6383 + components: + - rot: 3.141592653589793 rad + pos: -22.5,52.5 + parent: 1 + type: Transform + - uid: 6384 + components: + - rot: 3.141592653589793 rad + pos: -21.5,52.5 + parent: 1 + type: Transform + - uid: 6385 + components: + - rot: 3.141592653589793 rad + pos: -20.5,52.5 + parent: 1 + type: Transform + - uid: 6386 + components: + - rot: 3.141592653589793 rad + pos: -24.5,53.5 + parent: 1 + type: Transform + - uid: 6387 + components: + - rot: 3.141592653589793 rad + pos: -24.5,52.5 + parent: 1 + type: Transform + - uid: 6390 + components: + - rot: 3.141592653589793 rad + pos: -14.5,58.5 + parent: 1 + type: Transform + - uid: 6391 + components: + - rot: 3.141592653589793 rad + pos: -18.5,58.5 + parent: 1 + type: Transform + - uid: 6429 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,62.5 + parent: 1 + type: Transform + - uid: 6430 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,61.5 + parent: 1 + type: Transform + - uid: 6431 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,60.5 + parent: 1 + type: Transform + - uid: 6432 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,59.5 + parent: 1 + type: Transform + - uid: 6433 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,63.5 + parent: 1 + type: Transform + - uid: 6434 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,63.5 + parent: 1 + type: Transform + - uid: 6452 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,63.5 + parent: 1 + type: Transform + - uid: 6453 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,63.5 + parent: 1 + type: Transform + - uid: 6457 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,59.5 + parent: 1 + type: Transform + - uid: 6494 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,61.5 + parent: 1 + type: Transform + - uid: 6495 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,61.5 + parent: 1 + type: Transform + - uid: 6654 + components: + - pos: -21.5,43.5 + parent: 1 + type: Transform + - uid: 6805 + components: + - pos: -62.5,57.5 + parent: 1 + type: Transform + - uid: 6806 + components: + - pos: -58.5,50.5 + parent: 1 + type: Transform + - uid: 6813 + components: + - pos: -61.5,56.5 + parent: 1 + type: Transform + - uid: 6814 + components: + - pos: -58.5,51.5 + parent: 1 + type: Transform + - uid: 6815 + components: + - pos: -60.5,56.5 + parent: 1 + type: Transform + - uid: 6817 + components: + - pos: -58.5,52.5 + parent: 1 + type: Transform + - uid: 6819 + components: + - pos: -59.5,56.5 + parent: 1 + type: Transform + - uid: 6858 + components: + - pos: -59.5,49.5 + parent: 1 + type: Transform + - uid: 6859 + components: + - pos: -60.5,49.5 + parent: 1 + type: Transform + - uid: 6873 + components: + - pos: -61.5,49.5 + parent: 1 + type: Transform + - uid: 6874 + components: + - pos: -62.5,49.5 + parent: 1 + type: Transform + - uid: 6875 + components: + - pos: -63.5,49.5 + parent: 1 + type: Transform + - uid: 6876 + components: + - pos: -58.5,48.5 + parent: 1 + type: Transform + - uid: 6877 + components: + - pos: -62.5,56.5 + parent: 1 + type: Transform + - uid: 6878 + components: + - pos: -62.5,58.5 + parent: 1 + type: Transform + - uid: 6882 + components: + - pos: -62.5,59.5 + parent: 1 + type: Transform + - uid: 6944 + components: + - pos: -58.5,58.5 + parent: 1 + type: Transform + - uid: 6952 + components: + - pos: -61.5,59.5 + parent: 1 + type: Transform + - uid: 6969 + components: + - pos: -57.5,59.5 + parent: 1 + type: Transform + - uid: 6973 + components: + - pos: -51.5,59.5 + parent: 1 + type: Transform + - uid: 6974 + components: + - pos: -53.5,66.5 + parent: 1 + type: Transform + - uid: 6975 + components: + - pos: -45.5,58.5 + parent: 1 + type: Transform + - uid: 6976 + components: + - pos: -45.5,57.5 + parent: 1 + type: Transform + - uid: 6977 + components: + - pos: -49.5,56.5 + parent: 1 + type: Transform + - uid: 6978 + components: + - pos: -49.5,57.5 + parent: 1 + type: Transform + - uid: 6980 + components: + - pos: -49.5,58.5 + parent: 1 + type: Transform + - uid: 6981 + components: + - pos: -49.5,59.5 + parent: 1 + type: Transform + - uid: 6998 + components: + - pos: -60.5,59.5 + parent: 1 + type: Transform + - uid: 6999 + components: + - pos: -59.5,59.5 + parent: 1 + type: Transform + - uid: 7000 + components: + - pos: -58.5,59.5 + parent: 1 + type: Transform + - uid: 7001 + components: + - pos: -64.5,56.5 + parent: 1 + type: Transform + - uid: 7002 + components: + - pos: -63.5,56.5 + parent: 1 + type: Transform + - uid: 7003 + components: + - pos: -53.5,59.5 + parent: 1 + type: Transform + - uid: 7007 + components: + - pos: -45.5,59.5 + parent: 1 + type: Transform + - uid: 7008 + components: + - pos: -42.5,66.5 + parent: 1 + type: Transform + - uid: 7009 + components: + - pos: -43.5,66.5 + parent: 1 + type: Transform + - uid: 7011 + components: + - pos: -45.5,63.5 + parent: 1 + type: Transform + - uid: 7015 + components: + - pos: -49.5,63.5 + parent: 1 + type: Transform + - uid: 7016 + components: + - pos: -41.5,59.5 + parent: 1 + type: Transform + - uid: 7017 + components: + - pos: -39.5,59.5 + parent: 1 + type: Transform + - uid: 7018 + components: + - pos: -40.5,60.5 + parent: 1 + type: Transform + - uid: 7019 + components: + - pos: -39.5,61.5 + parent: 1 + type: Transform + - uid: 7020 + components: + - pos: -39.5,62.5 + parent: 1 + type: Transform + - uid: 7021 + components: + - pos: -40.5,59.5 + parent: 1 + type: Transform + - uid: 7022 + components: + - pos: -39.5,60.5 + parent: 1 + type: Transform + - uid: 7023 + components: + - pos: -43.5,60.5 + parent: 1 + type: Transform + - uid: 7024 + components: + - pos: -42.5,59.5 + parent: 1 + type: Transform + - uid: 7025 + components: + - pos: -45.5,66.5 + parent: 1 + type: Transform + - uid: 7026 + components: + - pos: -41.5,60.5 + parent: 1 + type: Transform + - uid: 7078 + components: + - pos: -39.5,63.5 + parent: 1 + type: Transform + - uid: 7079 + components: + - pos: -39.5,64.5 + parent: 1 + type: Transform + - uid: 7080 + components: + - pos: -40.5,62.5 + parent: 1 + type: Transform + - uid: 7081 + components: + - pos: -40.5,63.5 + parent: 1 + type: Transform + - uid: 7082 + components: + - pos: -42.5,60.5 + parent: 1 + type: Transform + - uid: 7083 + components: + - pos: -41.5,66.5 + parent: 1 + type: Transform + - uid: 7084 + components: + - pos: -41.5,67.5 + parent: 1 + type: Transform + - uid: 7086 + components: + - pos: -40.5,67.5 + parent: 1 + type: Transform + - uid: 7103 + components: + - pos: -40.5,64.5 + parent: 1 + type: Transform + - uid: 7104 + components: + - pos: -40.5,65.5 + parent: 1 + type: Transform + - uid: 7105 + components: + - pos: -40.5,66.5 + parent: 1 + type: Transform + - uid: 7106 + components: + - pos: -42.5,67.5 + parent: 1 + type: Transform + - uid: 7108 + components: + - pos: -43.5,67.5 + parent: 1 + type: Transform + - uid: 7109 + components: + - pos: -44.5,66.5 + parent: 1 + type: Transform + - uid: 7110 + components: + - pos: -44.5,67.5 + parent: 1 + type: Transform + - uid: 7111 + components: + - pos: -44.5,59.5 + parent: 1 + type: Transform + - uid: 7112 + components: + - pos: -49.5,60.5 + parent: 1 + type: Transform + - uid: 7114 + components: + - pos: -39.5,65.5 + parent: 1 + type: Transform + - uid: 7115 + components: + - pos: -39.5,66.5 + parent: 1 + type: Transform + - uid: 7116 + components: + - pos: -39.5,67.5 + parent: 1 + type: Transform + - uid: 7117 + components: + - pos: -40.5,61.5 + parent: 1 + type: Transform + - uid: 7118 + components: + - pos: -44.5,60.5 + parent: 1 + type: Transform + - uid: 7119 + components: + - pos: -43.5,59.5 + parent: 1 + type: Transform + - uid: 7120 + components: + - pos: -47.5,66.5 + parent: 1 + type: Transform + - uid: 7121 + components: + - pos: -48.5,66.5 + parent: 1 + type: Transform + - uid: 7123 + components: + - pos: -46.5,66.5 + parent: 1 + type: Transform + - uid: 7124 + components: + - pos: -49.5,66.5 + parent: 1 + type: Transform + - uid: 7125 + components: + - pos: -49.5,62.5 + parent: 1 + type: Transform + - uid: 7132 + components: + - pos: -59.5,48.5 + parent: 1 + type: Transform + - uid: 7142 + components: + - pos: -62.5,62.5 + parent: 1 + type: Transform + - uid: 7143 + components: + - pos: -62.5,63.5 + parent: 1 + type: Transform + - uid: 7144 + components: + - pos: -62.5,64.5 + parent: 1 + type: Transform + - uid: 7145 + components: + - pos: -62.5,65.5 + parent: 1 + type: Transform + - uid: 7146 + components: + - pos: -62.5,66.5 + parent: 1 + type: Transform + - uid: 7147 + components: + - pos: -53.5,62.5 + parent: 1 + type: Transform + - uid: 7157 + components: + - pos: -57.5,65.5 + parent: 1 + type: Transform + - uid: 7158 + components: + - pos: -57.5,64.5 + parent: 1 + type: Transform + - uid: 7159 + components: + - pos: -57.5,63.5 + parent: 1 + type: Transform + - uid: 7160 + components: + - pos: -61.5,62.5 + parent: 1 + type: Transform + - uid: 7161 + components: + - pos: -60.5,62.5 + parent: 1 + type: Transform + - uid: 7169 + components: + - pos: -57.5,66.5 + parent: 1 + type: Transform + - uid: 7176 + components: + - pos: -57.5,62.5 + parent: 1 + type: Transform + - uid: 7181 + components: + - rot: 3.141592653589793 rad + pos: -53.5,70.5 + parent: 1 + type: Transform + - uid: 7182 + components: + - rot: 3.141592653589793 rad + pos: -48.5,69.5 + parent: 1 + type: Transform + - uid: 7183 + components: + - rot: 3.141592653589793 rad + pos: -47.5,69.5 + parent: 1 + type: Transform + - uid: 7184 + components: + - rot: 3.141592653589793 rad + pos: -46.5,69.5 + parent: 1 + type: Transform + - uid: 7185 + components: + - rot: 3.141592653589793 rad + pos: -45.5,69.5 + parent: 1 + type: Transform + - uid: 7190 + components: + - rot: 3.141592653589793 rad + pos: -49.5,77.5 + parent: 1 + type: Transform + - uid: 7191 + components: + - pos: -51.5,66.5 + parent: 1 + type: Transform + - uid: 7194 + components: + - rot: 3.141592653589793 rad + pos: -49.5,70.5 + parent: 1 + type: Transform + - uid: 7195 + components: + - rot: 3.141592653589793 rad + pos: -51.5,70.5 + parent: 1 + type: Transform + - uid: 7197 + components: + - rot: 3.141592653589793 rad + pos: -53.5,68.5 + parent: 1 + type: Transform + - uid: 7198 + components: + - rot: 3.141592653589793 rad + pos: -51.5,77.5 + parent: 1 + type: Transform + - uid: 7200 + components: + - rot: 3.141592653589793 rad + pos: -53.5,67.5 + parent: 1 + type: Transform + - uid: 7201 + components: + - rot: 3.141592653589793 rad + pos: -53.5,77.5 + parent: 1 + type: Transform + - uid: 7224 + components: + - pos: -56.5,78.5 + parent: 1 + type: Transform + - uid: 7226 + components: + - pos: -56.5,80.5 + parent: 1 + type: Transform + - uid: 7230 + components: + - pos: -49.5,81.5 + parent: 1 + type: Transform + - uid: 7231 + components: + - pos: -49.5,80.5 + parent: 1 + type: Transform + - uid: 7232 + components: + - pos: -49.5,79.5 + parent: 1 + type: Transform + - uid: 7233 + components: + - pos: -49.5,78.5 + parent: 1 + type: Transform + - uid: 7234 + components: + - pos: -56.5,81.5 + parent: 1 + type: Transform + - uid: 7235 + components: + - pos: -53.5,81.5 + parent: 1 + type: Transform + - uid: 7236 + components: + - pos: -51.5,81.5 + parent: 1 + type: Transform + - uid: 7243 + components: + - pos: -55.5,81.5 + parent: 1 + type: Transform + - uid: 7245 + components: + - pos: -49.5,82.5 + parent: 1 + type: Transform + - uid: 7246 + components: + - pos: -49.5,90.5 + parent: 1 + type: Transform + - uid: 7247 + components: + - pos: -49.5,89.5 + parent: 1 + type: Transform + - uid: 7248 + components: + - pos: -49.5,91.5 + parent: 1 + type: Transform + - uid: 7261 + components: + - pos: -50.5,91.5 + parent: 1 + type: Transform + - uid: 7263 + components: + - pos: -52.5,91.5 + parent: 1 + type: Transform + - uid: 7264 + components: + - pos: -53.5,91.5 + parent: 1 + type: Transform + - uid: 7265 + components: + - pos: -53.5,90.5 + parent: 1 + type: Transform + - uid: 7266 + components: + - pos: -56.5,87.5 + parent: 1 + type: Transform + - uid: 7267 + components: + - pos: -56.5,85.5 + parent: 1 + type: Transform + - uid: 7268 + components: + - pos: -55.5,85.5 + parent: 1 + type: Transform + - uid: 7269 + components: + - pos: -53.5,84.5 + parent: 1 + type: Transform + - uid: 7270 + components: + - pos: -53.5,82.5 + parent: 1 + type: Transform + - uid: 7272 + components: + - pos: -53.5,88.5 + parent: 1 + type: Transform + - uid: 7273 + components: + - pos: -54.5,87.5 + parent: 1 + type: Transform + - uid: 7274 + components: + - pos: -53.5,87.5 + parent: 1 + type: Transform + - uid: 7277 + components: + - pos: -54.5,85.5 + parent: 1 + type: Transform + - uid: 7278 + components: + - pos: -55.5,87.5 + parent: 1 + type: Transform + - uid: 7279 + components: + - pos: -53.5,85.5 + parent: 1 + type: Transform + - uid: 7280 + components: + - pos: -56.5,82.5 + parent: 1 + type: Transform + - uid: 7281 + components: + - pos: -56.5,84.5 + parent: 1 + type: Transform + - uid: 7283 + components: + - pos: -56.5,88.5 + parent: 1 + type: Transform + - uid: 7286 + components: + - pos: -56.5,90.5 + parent: 1 + type: Transform + - uid: 7287 + components: + - pos: -56.5,91.5 + parent: 1 + type: Transform + - uid: 7289 + components: + - pos: -54.5,91.5 + parent: 1 + type: Transform + - uid: 7290 + components: + - pos: -62.5,90.5 + parent: 1 + type: Transform + - uid: 7291 + components: + - pos: -62.5,89.5 + parent: 1 + type: Transform + - uid: 7293 + components: + - pos: -62.5,86.5 + parent: 1 + type: Transform + - uid: 7294 + components: + - pos: -63.5,86.5 + parent: 1 + type: Transform + - uid: 7299 + components: + - pos: -62.5,82.5 + parent: 1 + type: Transform + - uid: 7300 + components: + - pos: -62.5,87.5 + parent: 1 + type: Transform + - uid: 7314 + components: + - pos: -51.5,78.5 + parent: 1 + type: Transform + - uid: 7317 + components: + - pos: -63.5,82.5 + parent: 1 + type: Transform + - uid: 7327 + components: + - pos: -57.5,82.5 + parent: 1 + type: Transform + - uid: 7328 + components: + - pos: -57.5,90.5 + parent: 1 + type: Transform + - uid: 7332 + components: + - pos: -55.5,78.5 + parent: 1 + type: Transform + - uid: 7338 + components: + - pos: -54.5,78.5 + parent: 1 + type: Transform + - uid: 7339 + components: + - pos: -53.5,78.5 + parent: 1 + type: Transform + - uid: 7362 + components: + - pos: -45.5,67.5 + parent: 1 + type: Transform + - uid: 7646 + components: + - pos: -44.5,63.5 + parent: 1 + type: Transform + - uid: 7648 + components: + - pos: -44.5,61.5 + parent: 1 + type: Transform + - uid: 7718 + components: + - pos: -61.5,90.5 + parent: 1 + type: Transform + - uid: 7898 + components: + - pos: -51.5,69.5 + parent: 1 + type: Transform + - uid: 7976 + components: + - pos: -66.5,52.5 + parent: 1 + type: Transform + - uid: 7978 + components: + - pos: -66.5,51.5 + parent: 1 + type: Transform + - uid: 8012 + components: + - pos: -65.5,51.5 + parent: 1 + type: Transform + - uid: 8014 + components: + - pos: -66.5,53.5 + parent: 1 + type: Transform + - uid: 8015 + components: + - pos: -66.5,54.5 + parent: 1 + type: Transform + - uid: 8016 + components: + - pos: -66.5,55.5 + parent: 1 + type: Transform + - uid: 8017 + components: + - pos: -66.5,56.5 + parent: 1 + type: Transform + - uid: 8018 + components: + - pos: -65.5,56.5 + parent: 1 + type: Transform + - uid: 9334 + components: + - rot: 1.5707963267948966 rad + pos: -65.5,29.5 + parent: 1 + type: Transform + - uid: 10718 + components: + - rot: -1.5707963267948966 rad + pos: -84.5,49.5 + parent: 1 + type: Transform + - uid: 10750 + components: + - rot: -1.5707963267948966 rad + pos: -80.5,49.5 + parent: 1 + type: Transform + - uid: 10751 + components: + - rot: -1.5707963267948966 rad + pos: -80.5,51.5 + parent: 1 + type: Transform + - uid: 10752 + components: + - rot: -1.5707963267948966 rad + pos: -81.5,51.5 + parent: 1 + type: Transform + - uid: 10754 + components: + - rot: -1.5707963267948966 rad + pos: -83.5,51.5 + parent: 1 + type: Transform + - uid: 10755 + components: + - rot: -1.5707963267948966 rad + pos: -84.5,51.5 + parent: 1 + type: Transform + - uid: 10763 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,46.5 + parent: 1 + type: Transform + - uid: 10764 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,46.5 + parent: 1 + type: Transform + - uid: 10765 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,46.5 + parent: 1 + type: Transform + - uid: 10766 + components: + - rot: -1.5707963267948966 rad + pos: -90.5,46.5 + parent: 1 + type: Transform + - uid: 10767 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,46.5 + parent: 1 + type: Transform + - uid: 10768 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,45.5 + parent: 1 + type: Transform + - uid: 10769 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,44.5 + parent: 1 + type: Transform + - uid: 10770 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,43.5 + parent: 1 + type: Transform + - uid: 10771 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,42.5 + parent: 1 + type: Transform + - uid: 10772 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,41.5 + parent: 1 + type: Transform + - uid: 10773 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,40.5 + parent: 1 + type: Transform + - uid: 10774 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,39.5 + parent: 1 + type: Transform + - uid: 10775 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,38.5 + parent: 1 + type: Transform + - uid: 10776 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,37.5 + parent: 1 + type: Transform + - uid: 10777 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,36.5 + parent: 1 + type: Transform + - uid: 10778 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,35.5 + parent: 1 + type: Transform + - uid: 10779 + components: + - rot: -1.5707963267948966 rad + pos: -91.5,34.5 + parent: 1 + type: Transform + - uid: 10780 + components: + - rot: -1.5707963267948966 rad + pos: -90.5,34.5 + parent: 1 + type: Transform + - uid: 10781 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,34.5 + parent: 1 + type: Transform + - uid: 10782 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,34.5 + parent: 1 + type: Transform + - uid: 10783 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,34.5 + parent: 1 + type: Transform + - uid: 10784 + components: + - rot: -1.5707963267948966 rad + pos: -90.5,36.5 + parent: 1 + type: Transform + - uid: 10785 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,36.5 + parent: 1 + type: Transform + - uid: 10786 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,36.5 + parent: 1 + type: Transform + - uid: 10787 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,36.5 + parent: 1 + type: Transform + - uid: 10788 + components: + - rot: -1.5707963267948966 rad + pos: -90.5,38.5 + parent: 1 + type: Transform + - uid: 10789 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,38.5 + parent: 1 + type: Transform + - uid: 10790 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,38.5 + parent: 1 + type: Transform + - uid: 10791 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,38.5 + parent: 1 + type: Transform + - uid: 10792 + components: + - rot: -1.5707963267948966 rad + pos: -90.5,40.5 + parent: 1 + type: Transform + - uid: 10793 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,40.5 + parent: 1 + type: Transform + - uid: 10794 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,40.5 + parent: 1 + type: Transform + - uid: 10795 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,40.5 + parent: 1 + type: Transform + - uid: 10815 + components: + - rot: -1.5707963267948966 rad + pos: -90.5,42.5 + parent: 1 + type: Transform + - uid: 10816 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,42.5 + parent: 1 + type: Transform + - uid: 10817 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,42.5 + parent: 1 + type: Transform + - uid: 10818 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,42.5 + parent: 1 + type: Transform + - uid: 10819 + components: + - rot: -1.5707963267948966 rad + pos: -90.5,44.5 + parent: 1 + type: Transform + - uid: 10820 + components: + - rot: -1.5707963267948966 rad + pos: -89.5,44.5 + parent: 1 + type: Transform + - uid: 10821 + components: + - rot: -1.5707963267948966 rad + pos: -88.5,44.5 + parent: 1 + type: Transform + - uid: 10822 + components: + - rot: -1.5707963267948966 rad + pos: -87.5,44.5 + parent: 1 + type: Transform +- proto: WallSolid + entities: + - uid: 2 + components: + - pos: -4.5,-14.5 + parent: 1 + type: Transform + - uid: 3 + components: + - pos: -6.5,-16.5 + parent: 1 + type: Transform + - uid: 20 + components: + - pos: -12.5,-0.5 + parent: 1 + type: Transform + - uid: 21 + components: + - pos: -10.5,0.5 + parent: 1 + type: Transform + - uid: 22 + components: + - pos: -10.5,2.5 + parent: 1 + type: Transform + - uid: 23 + components: + - pos: -13.5,3.5 + parent: 1 + type: Transform + - uid: 24 + components: + - pos: -14.5,1.5 + parent: 1 + type: Transform + - uid: 26 + components: + - pos: -7.5,-3.5 + parent: 1 + type: Transform + - uid: 27 + components: + - pos: -10.5,3.5 + parent: 1 + type: Transform + - uid: 31 + components: + - pos: -14.5,-0.5 + parent: 1 + type: Transform + - uid: 34 + components: + - pos: -14.5,3.5 + parent: 1 + type: Transform + - uid: 35 + components: + - pos: -9.5,3.5 + parent: 1 + type: Transform + - uid: 43 + components: + - pos: 0.5,-0.5 + parent: 1 + type: Transform + - uid: 45 + components: + - pos: 0.5,-2.5 + parent: 1 + type: Transform + - uid: 47 + components: + - pos: 3.5,3.5 + parent: 1 + type: Transform + - uid: 48 + components: + - pos: 3.5,2.5 + parent: 1 + type: Transform + - uid: 50 + components: + - pos: 3.5,0.5 + parent: 1 + type: Transform + - uid: 53 + components: + - pos: 3.5,-2.5 + parent: 1 + type: Transform + - uid: 55 + components: + - pos: 2.5,-3.5 + parent: 1 + type: Transform + - uid: 58 + components: + - pos: -8.5,-6.5 + parent: 1 + type: Transform + - uid: 60 + components: + - pos: -9.5,-6.5 + parent: 1 + type: Transform + - uid: 73 + components: + - pos: -10.5,-10.5 + parent: 1 + type: Transform + - uid: 76 + components: + - pos: -6.5,-6.5 + parent: 1 + type: Transform + - uid: 81 + components: + - pos: 30.5,-1.5 + parent: 1 + type: Transform + - uid: 82 + components: + - pos: 30.5,-2.5 + parent: 1 + type: Transform + - uid: 85 + components: + - pos: 0.5,-6.5 + parent: 1 + type: Transform + - uid: 86 + components: + - pos: -5.5,-6.5 + parent: 1 + type: Transform + - uid: 88 + components: + - pos: -3.5,-6.5 + parent: 1 + type: Transform + - uid: 113 + components: + - pos: -18.5,-12.5 + parent: 1 + type: Transform + - uid: 117 + components: + - pos: -39.5,53.5 + parent: 1 + type: Transform + - uid: 124 + components: + - pos: -10.5,-11.5 + parent: 1 + type: Transform + - uid: 125 + components: + - pos: -8.5,-13.5 + parent: 1 + type: Transform + - uid: 175 + components: + - pos: 11.5,-8.5 + parent: 1 + type: Transform + - uid: 176 + components: + - pos: 6.5,-8.5 + parent: 1 + type: Transform + - uid: 178 + components: + - pos: 2.5,-6.5 + parent: 1 + type: Transform + - uid: 183 + components: + - pos: 9.5,-6.5 + parent: 1 + type: Transform + - uid: 190 + components: + - pos: -0.5,-15.5 + parent: 1 + type: Transform + - uid: 192 + components: + - pos: -0.5,-11.5 + parent: 1 + type: Transform + - uid: 205 + components: + - pos: 0.5,-7.5 + parent: 1 + type: Transform + - uid: 209 + components: + - pos: 6.5,-6.5 + parent: 1 + type: Transform + - uid: 214 + components: + - pos: -18.5,-14.5 + parent: 1 + type: Transform + - uid: 462 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,-0.5 + parent: 1 + type: Transform + - uid: 463 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,-0.5 + parent: 1 + type: Transform + - uid: 465 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,-2.5 + parent: 1 + type: Transform + - uid: 466 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,-3.5 + parent: 1 + type: Transform + - uid: 468 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,1.5 + parent: 1 + type: Transform + - uid: 469 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,2.5 + parent: 1 + type: Transform + - uid: 472 + components: + - rot: -1.5707963267948966 rad + pos: 5.5,2.5 + parent: 1 + type: Transform + - uid: 478 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,-3.5 + parent: 1 + type: Transform + - uid: 482 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,3.5 + parent: 1 + type: Transform + - uid: 483 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,3.5 + parent: 1 + type: Transform + - uid: 485 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,1.5 + parent: 1 + type: Transform + - uid: 486 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,-0.5 + parent: 1 + type: Transform + - uid: 487 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,-1.5 + parent: 1 + type: Transform + - uid: 491 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,-4.5 + parent: 1 + type: Transform + - uid: 492 + components: + - rot: -1.5707963267948966 rad + pos: 12.5,-3.5 + parent: 1 + type: Transform + - uid: 496 + components: + - pos: 10.5,-6.5 + parent: 1 + type: Transform + - uid: 502 + components: + - pos: 10.5,-7.5 + parent: 1 + type: Transform + - uid: 512 + components: + - pos: 15.5,-3.5 + parent: 1 + type: Transform + - uid: 525 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,17.5 + parent: 1 + type: Transform + - uid: 528 + components: + - pos: 13.5,-6.5 + parent: 1 + type: Transform + - uid: 531 + components: + - pos: 12.5,-7.5 + parent: 1 + type: Transform + - uid: 575 + components: + - pos: 10.5,-8.5 + parent: 1 + type: Transform + - uid: 584 + components: + - pos: -4.5,3.5 + parent: 1 + type: Transform + - uid: 610 + components: + - rot: 3.141592653589793 rad + pos: -15.5,16.5 + parent: 1 + type: Transform + - uid: 613 + components: + - pos: -4.5,2.5 + parent: 1 + type: Transform + - uid: 614 + components: + - pos: -16.5,16.5 + parent: 1 + type: Transform + - uid: 619 + components: + - pos: -4.5,-0.5 + parent: 1 + type: Transform + - uid: 632 + components: + - pos: 12.5,0.5 + parent: 1 + type: Transform + - uid: 634 + components: + - pos: 12.5,2.5 + parent: 1 + type: Transform + - uid: 635 + components: + - pos: 12.5,3.5 + parent: 1 + type: Transform + - uid: 636 + components: + - pos: 14.5,4.5 + parent: 1 + type: Transform + - uid: 638 + components: + - pos: 12.5,4.5 + parent: 1 + type: Transform + - uid: 639 + components: + - pos: 15.5,4.5 + parent: 1 + type: Transform + - uid: 641 + components: + - pos: 18.5,3.5 + parent: 1 + type: Transform + - uid: 642 + components: + - pos: 18.5,2.5 + parent: 1 + type: Transform + - uid: 643 + components: + - pos: 22.5,-2.5 + parent: 1 + type: Transform + - uid: 644 + components: + - pos: 18.5,0.5 + parent: 1 + type: Transform + - uid: 646 + components: + - pos: 19.5,3.5 + parent: 1 + type: Transform + - uid: 647 + components: + - pos: 18.5,-2.5 + parent: 1 + type: Transform + - uid: 649 + components: + - pos: 17.5,-3.5 + parent: 1 + type: Transform + - uid: 651 + components: + - pos: 21.5,3.5 + parent: 1 + type: Transform + - uid: 654 + components: + - pos: 21.5,0.5 + parent: 1 + type: Transform + - uid: 656 + components: + - pos: 22.5,-0.5 + parent: 1 + type: Transform + - uid: 659 + components: + - pos: 20.5,-3.5 + parent: 1 + type: Transform + - uid: 660 + components: + - pos: 26.5,-6.5 + parent: 1 + type: Transform + - uid: 662 + components: + - pos: 22.5,-3.5 + parent: 1 + type: Transform + - uid: 664 + components: + - pos: 23.5,-6.5 + parent: 1 + type: Transform + - uid: 665 + components: + - pos: -3.5,3.5 + parent: 1 + type: Transform + - uid: 666 + components: + - pos: 26.5,-7.5 + parent: 1 + type: Transform + - uid: 667 + components: + - pos: -2.5,3.5 + parent: 1 + type: Transform + - uid: 668 + components: + - pos: -1.5,3.5 + parent: 1 + type: Transform + - uid: 669 + components: + - pos: -0.5,3.5 + parent: 1 + type: Transform + - uid: 670 + components: + - pos: -0.5,2.5 + parent: 1 + type: Transform + - uid: 671 + components: + - pos: -0.5,1.5 + parent: 1 + type: Transform + - uid: 672 + components: + - pos: -0.5,0.5 + parent: 1 + type: Transform + - uid: 677 + components: + - pos: 24.5,0.5 + parent: 1 + type: Transform + - uid: 680 + components: + - pos: 25.5,-1.5 + parent: 1 + type: Transform + - uid: 682 + components: + - pos: 25.5,-3.5 + parent: 1 + type: Transform + - uid: 685 + components: + - pos: 28.5,-3.5 + parent: 1 + type: Transform + - uid: 688 + components: + - pos: 27.5,-6.5 + parent: 1 + type: Transform + - uid: 695 + components: + - pos: 25.5,0.5 + parent: 1 + type: Transform + - uid: 697 + components: + - pos: 29.5,0.5 + parent: 1 + type: Transform + - uid: 698 + components: + - pos: -1.5,-0.5 + parent: 1 + type: Transform + - uid: 700 + components: + - pos: 18.5,4.5 + parent: 1 + type: Transform + - uid: 701 + components: + - pos: 23.5,3.5 + parent: 1 + type: Transform + - uid: 702 + components: + - pos: 24.5,4.5 + parent: 1 + type: Transform + - uid: 706 + components: + - pos: 29.5,4.5 + parent: 1 + type: Transform + - uid: 714 + components: + - pos: -4.5,1.5 + parent: 1 + type: Transform + - uid: 715 + components: + - pos: -10.5,-6.5 + parent: 1 + type: Transform + - uid: 716 + components: + - pos: -11.5,-6.5 + parent: 1 + type: Transform + - uid: 722 + components: + - pos: -10.5,-7.5 + parent: 1 + type: Transform + - uid: 723 + components: + - pos: -13.5,-6.5 + parent: 1 + type: Transform + - uid: 724 + components: + - pos: -11.5,-9.5 + parent: 1 + type: Transform + - uid: 725 + components: + - pos: -12.5,-9.5 + parent: 1 + type: Transform + - uid: 726 + components: + - pos: -13.5,-9.5 + parent: 1 + type: Transform + - uid: 727 + components: + - pos: -14.5,-9.5 + parent: 1 + type: Transform + - uid: 881 + components: + - pos: 15.5,14.5 + parent: 1 + type: Transform + - uid: 985 + components: + - pos: -14.5,-8.5 + parent: 1 + type: Transform + - uid: 987 + components: + - pos: -14.5,-7.5 + parent: 1 + type: Transform + - uid: 989 + components: + - pos: -14.5,-6.5 + parent: 1 + type: Transform + - uid: 994 + components: + - pos: -10.5,-15.5 + parent: 1 + type: Transform + - uid: 996 + components: + - pos: -12.5,-15.5 + parent: 1 + type: Transform + - uid: 997 + components: + - pos: -11.5,-15.5 + parent: 1 + type: Transform + - uid: 998 + components: + - rot: 3.141592653589793 rad + pos: 24.5,20.5 + parent: 1 + type: Transform + - uid: 1001 + components: + - pos: 20.5,13.5 + parent: 1 + type: Transform + - uid: 1002 + components: + - pos: 20.5,14.5 + parent: 1 + type: Transform + - uid: 1004 + components: + - pos: -10.5,-14.5 + parent: 1 + type: Transform + - uid: 1005 + components: + - pos: 17.5,14.5 + parent: 1 + type: Transform + - uid: 1006 + components: + - pos: 16.5,14.5 + parent: 1 + type: Transform + - uid: 1007 + components: + - rot: 3.141592653589793 rad + pos: 24.5,10.5 + parent: 1 + type: Transform + - uid: 1008 + components: + - rot: 3.141592653589793 rad + pos: 24.5,9.5 + parent: 1 + type: Transform + - uid: 1010 + components: + - rot: 3.141592653589793 rad + pos: 24.5,7.5 + parent: 1 + type: Transform + - uid: 1011 + components: + - pos: -10.5,-9.5 + parent: 1 + type: Transform + - uid: 1012 + components: + - pos: -6.5,-17.5 + parent: 1 + type: Transform + - uid: 1013 + components: + - pos: -4.5,-16.5 + parent: 1 + type: Transform + - uid: 1030 + components: + - pos: -4.5,-15.5 + parent: 1 + type: Transform + - uid: 1035 + components: + - pos: 21.5,10.5 + parent: 1 + type: Transform + - uid: 1036 + components: + - pos: 20.5,10.5 + parent: 1 + type: Transform + - uid: 1038 + components: + - pos: 20.5,8.5 + parent: 1 + type: Transform + - uid: 1039 + components: + - pos: 20.5,7.5 + parent: 1 + type: Transform + - uid: 1041 + components: + - pos: 23.5,7.5 + parent: 1 + type: Transform + - uid: 1043 + components: + - pos: 15.5,10.5 + parent: 1 + type: Transform + - uid: 1045 + components: + - pos: 1.5,41.5 + parent: 1 + type: Transform + - uid: 1046 + components: + - pos: -4.5,-17.5 + parent: 1 + type: Transform + - uid: 1047 + components: + - pos: 15.5,8.5 + parent: 1 + type: Transform + - uid: 1050 + components: + - pos: 21.5,15.5 + parent: 1 + type: Transform + - uid: 1057 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,18.5 + parent: 1 + type: Transform + - uid: 1060 + components: + - pos: 6.5,7.5 + parent: 1 + type: Transform + - uid: 1062 + components: + - rot: -1.5707963267948966 rad + pos: 21.5,23.5 + parent: 1 + type: Transform + - uid: 1071 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,-6.5 + parent: 1 + type: Transform + - uid: 1074 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,-5.5 + parent: 1 + type: Transform + - uid: 1075 + components: + - rot: 1.5707963267948966 rad + pos: -22.5,3.5 + parent: 1 + type: Transform + - uid: 1076 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,-3.5 + parent: 1 + type: Transform + - uid: 1078 + components: + - rot: -1.5707963267948966 rad + pos: -19.5,-1.5 + parent: 1 + type: Transform + - uid: 1081 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,-0.5 + parent: 1 + type: Transform + - uid: 1083 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,-0.5 + parent: 1 + type: Transform + - uid: 1084 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,2.5 + parent: 1 + type: Transform + - uid: 1087 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,3.5 + parent: 1 + type: Transform + - uid: 1093 + components: + - pos: -15.5,-9.5 + parent: 1 + type: Transform + - uid: 1095 + components: + - pos: -18.5,-11.5 + parent: 1 + type: Transform + - uid: 1097 + components: + - pos: -19.5,-9.5 + parent: 1 + type: Transform + - uid: 1098 + components: + - pos: -6.5,-15.5 + parent: 1 + type: Transform + - uid: 1099 + components: + - pos: -21.5,-9.5 + parent: 1 + type: Transform + - uid: 1100 + components: + - rot: 1.5707963267948966 rad + pos: -22.5,2.5 + parent: 1 + type: Transform + - uid: 1103 + components: + - rot: 1.5707963267948966 rad + pos: -22.5,-0.5 + parent: 1 + type: Transform + - uid: 1104 + components: + - pos: -22.5,-1.5 + parent: 1 + type: Transform + - uid: 1108 + components: + - rot: 1.5707963267948966 rad + pos: -23.5,-2.5 + parent: 1 + type: Transform + - uid: 1111 + components: + - rot: 1.5707963267948966 rad + pos: -24.5,-2.5 + parent: 1 + type: Transform + - uid: 1113 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,-3.5 + parent: 1 + type: Transform + - uid: 1115 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,-5.5 + parent: 1 + type: Transform + - uid: 1119 + components: + - rot: 1.5707963267948966 rad + pos: -23.5,-0.5 + parent: 1 + type: Transform + - uid: 1121 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,-2.5 + parent: 1 + type: Transform + - uid: 1123 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,-0.5 + parent: 1 + type: Transform + - uid: 1124 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,0.5 + parent: 1 + type: Transform + - uid: 1125 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,1.5 + parent: 1 + type: Transform + - uid: 1127 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,3.5 + parent: 1 + type: Transform + - uid: 1129 + components: + - rot: 1.5707963267948966 rad + pos: -23.5,3.5 + parent: 1 + type: Transform + - uid: 1131 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,3.5 + parent: 1 + type: Transform + - uid: 1132 + components: + - rot: 1.5707963267948966 rad + pos: -24.5,1.5 + parent: 1 + type: Transform + - uid: 1135 + components: + - rot: 1.5707963267948966 rad + pos: 13.5,7.5 + parent: 1 + type: Transform + - uid: 1136 + components: + - rot: 1.5707963267948966 rad + pos: 12.5,7.5 + parent: 1 + type: Transform + - uid: 1141 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,7.5 + parent: 1 + type: Transform + - uid: 1152 + components: + - pos: 19.5,24.5 + parent: 1 + type: Transform + - uid: 1154 + components: + - pos: 2.5,35.5 + parent: 1 + type: Transform + - uid: 1160 + components: + - pos: 9.5,21.5 + parent: 1 + type: Transform + - uid: 1171 + components: + - pos: 12.5,23.5 + parent: 1 + type: Transform + - uid: 1177 + components: + - pos: 13.5,24.5 + parent: 1 + type: Transform + - uid: 1180 + components: + - pos: 11.5,10.5 + parent: 1 + type: Transform + - uid: 1182 + components: + - pos: 12.5,-6.5 + parent: 1 + type: Transform + - uid: 1183 + components: + - pos: 14.5,-12.5 + parent: 1 + type: Transform + - uid: 1184 + components: + - pos: 13.5,-12.5 + parent: 1 + type: Transform + - uid: 1185 + components: + - pos: 16.5,-12.5 + parent: 1 + type: Transform + - uid: 1186 + components: + - pos: 12.5,-9.5 + parent: 1 + type: Transform + - uid: 1187 + components: + - pos: 12.5,-11.5 + parent: 1 + type: Transform + - uid: 1188 + components: + - pos: 12.5,-10.5 + parent: 1 + type: Transform + - uid: 1194 + components: + - pos: 15.5,-12.5 + parent: 1 + type: Transform + - uid: 1195 + components: + - pos: 17.5,-6.5 + parent: 1 + type: Transform + - uid: 1196 + components: + - pos: 17.5,-12.5 + parent: 1 + type: Transform + - uid: 1197 + components: + - pos: 21.5,28.5 + parent: 1 + type: Transform + - uid: 1198 + components: + - pos: 20.5,-9.5 + parent: 1 + type: Transform + - uid: 1199 + components: + - pos: 13.5,34.5 + parent: 1 + type: Transform + - uid: 1201 + components: + - pos: 19.5,33.5 + parent: 1 + type: Transform + - uid: 1202 + components: + - rot: 1.5707963267948966 rad + pos: 21.5,17.5 + parent: 1 + type: Transform + - uid: 1204 + components: + - pos: 3.5,7.5 + parent: 1 + type: Transform + - uid: 1205 + components: + - pos: -1.5,13.5 + parent: 1 + type: Transform + - uid: 1206 + components: + - pos: 4.5,41.5 + parent: 1 + type: Transform + - uid: 1209 + components: + - pos: 18.5,-12.5 + parent: 1 + type: Transform + - uid: 1210 + components: + - pos: -0.5,13.5 + parent: 1 + type: Transform + - uid: 1212 + components: + - pos: 16.5,22.5 + parent: 1 + type: Transform + - uid: 1214 + components: + - pos: 5.5,20.5 + parent: 1 + type: Transform + - uid: 1215 + components: + - pos: 19.5,-12.5 + parent: 1 + type: Transform + - uid: 1216 + components: + - pos: 20.5,-12.5 + parent: 1 + type: Transform + - uid: 1217 + components: + - pos: 20.5,-10.5 + parent: 1 + type: Transform + - uid: 1218 + components: + - pos: 18.5,-9.5 + parent: 1 + type: Transform + - uid: 1219 + components: + - pos: 21.5,-9.5 + parent: 1 + type: Transform + - uid: 1220 + components: + - pos: 27.5,-9.5 + parent: 1 + type: Transform + - uid: 1221 + components: + - pos: 30.5,-6.5 + parent: 1 + type: Transform + - uid: 1222 + components: + - pos: 22.5,-9.5 + parent: 1 + type: Transform + - uid: 1224 + components: + - pos: 5.5,10.5 + parent: 1 + type: Transform + - uid: 1226 + components: + - pos: 4.5,13.5 + parent: 1 + type: Transform + - uid: 1227 + components: + - pos: 5.5,12.5 + parent: 1 + type: Transform + - uid: 1231 + components: + - pos: 6.5,10.5 + parent: 1 + type: Transform + - uid: 1232 + components: + - pos: 23.5,-9.5 + parent: 1 + type: Transform + - uid: 1235 + components: + - pos: 9.5,10.5 + parent: 1 + type: Transform + - uid: 1238 + components: + - pos: 10.5,32.5 + parent: 1 + type: Transform + - uid: 1239 + components: + - pos: 5.5,15.5 + parent: 1 + type: Transform + - uid: 1243 + components: + - pos: 2.5,18.5 + parent: 1 + type: Transform + - uid: 1244 + components: + - pos: 24.5,-9.5 + parent: 1 + type: Transform + - uid: 1245 + components: + - pos: 25.5,-9.5 + parent: 1 + type: Transform + - uid: 1251 + components: + - pos: 26.5,-9.5 + parent: 1 + type: Transform + - uid: 1252 + components: + - pos: 30.5,-3.5 + parent: 1 + type: Transform + - uid: 1253 + components: + - pos: 30.5,-0.5 + parent: 1 + type: Transform + - uid: 1254 + components: + - pos: 30.5,0.5 + parent: 1 + type: Transform + - uid: 1255 + components: + - pos: 30.5,-4.5 + parent: 1 + type: Transform + - uid: 1256 + components: + - pos: 29.5,-9.5 + parent: 1 + type: Transform + - uid: 1257 + components: + - pos: 30.5,-9.5 + parent: 1 + type: Transform + - uid: 1258 + components: + - pos: 30.5,-8.5 + parent: 1 + type: Transform + - uid: 1259 + components: + - pos: 30.5,-7.5 + parent: 1 + type: Transform + - uid: 1260 + components: + - pos: 30.5,-5.5 + parent: 1 + type: Transform + - uid: 1261 + components: + - pos: 29.5,22.5 + parent: 1 + type: Transform + - uid: 1262 + components: + - pos: 29.5,27.5 + parent: 1 + type: Transform + - uid: 1267 + components: + - pos: 29.5,23.5 + parent: 1 + type: Transform + - uid: 1268 + components: + - pos: 24.5,25.5 + parent: 1 + type: Transform + - uid: 1273 + components: + - pos: 24.5,24.5 + parent: 1 + type: Transform + - uid: 1274 + components: + - pos: 24.5,23.5 + parent: 1 + type: Transform + - uid: 1275 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,38.5 + parent: 1 + type: Transform + - uid: 1278 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,31.5 + parent: 1 + type: Transform + - uid: 1280 + components: + - rot: 1.5707963267948966 rad + pos: 0.5,35.5 + parent: 1 + type: Transform + - uid: 1282 + components: + - rot: 1.5707963267948966 rad + pos: -1.5,35.5 + parent: 1 + type: Transform + - uid: 1285 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,35.5 + parent: 1 + type: Transform + - uid: 1288 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,38.5 + parent: 1 + type: Transform + - uid: 1292 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,38.5 + parent: 1 + type: Transform + - uid: 1294 + components: + - pos: 5.5,34.5 + parent: 1 + type: Transform + - uid: 1295 + components: + - pos: 5.5,32.5 + parent: 1 + type: Transform + - uid: 1299 + components: + - pos: 17.5,31.5 + parent: 1 + type: Transform + - uid: 1302 + components: + - rot: 1.5707963267948966 rad + pos: 18.5,33.5 + parent: 1 + type: Transform + - uid: 1306 + components: + - rot: 1.5707963267948966 rad + pos: 21.5,32.5 + parent: 1 + type: Transform + - uid: 1309 + components: + - rot: 1.5707963267948966 rad + pos: 21.5,29.5 + parent: 1 + type: Transform + - uid: 1310 + components: + - pos: 24.5,22.5 + parent: 1 + type: Transform + - uid: 1312 + components: + - pos: 5.5,37.5 + parent: 1 + type: Transform + - uid: 1326 + components: + - rot: 1.5707963267948966 rad + pos: 12.5,38.5 + parent: 1 + type: Transform + - uid: 1334 + components: + - pos: 5.5,27.5 + parent: 1 + type: Transform + - uid: 1337 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,26.5 + parent: 1 + type: Transform + - uid: 1339 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,26.5 + parent: 1 + type: Transform + - uid: 1349 + components: + - pos: 0.5,41.5 + parent: 1 + type: Transform + - uid: 1358 + components: + - pos: -2.5,15.5 + parent: 1 + type: Transform + - uid: 1359 + components: + - pos: 12.5,20.5 + parent: 1 + type: Transform + - uid: 1362 + components: + - pos: 6.5,18.5 + parent: 1 + type: Transform + - uid: 1364 + components: + - pos: 12.5,18.5 + parent: 1 + type: Transform + - uid: 1366 + components: + - pos: 12.5,13.5 + parent: 1 + type: Transform + - uid: 1368 + components: + - pos: 8.5,32.5 + parent: 1 + type: Transform + - uid: 1374 + components: + - pos: -1.5,38.5 + parent: 1 + type: Transform + - uid: 1376 + components: + - pos: -1.5,36.5 + parent: 1 + type: Transform + - uid: 1378 + components: + - pos: -1.5,41.5 + parent: 1 + type: Transform + - uid: 1380 + components: + - pos: -1.5,43.5 + parent: 1 + type: Transform + - uid: 1384 + components: + - pos: 1.5,44.5 + parent: 1 + type: Transform + - uid: 1385 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,45.5 + parent: 1 + type: Transform + - uid: 1386 + components: + - rot: 1.5707963267948966 rad + pos: 2.5,45.5 + parent: 1 + type: Transform + - uid: 1388 + components: + - pos: 5.5,44.5 + parent: 1 + type: Transform + - uid: 1390 + components: + - pos: 5.5,42.5 + parent: 1 + type: Transform + - uid: 1393 + components: + - pos: 16.5,24.5 + parent: 1 + type: Transform + - uid: 1395 + components: + - pos: 24.5,26.5 + parent: 1 + type: Transform + - uid: 1396 + components: + - pos: 27.5,29.5 + parent: 1 + type: Transform + - uid: 1398 + components: + - pos: 6.5,21.5 + parent: 1 + type: Transform + - uid: 1399 + components: + - pos: 29.5,26.5 + parent: 1 + type: Transform + - uid: 1400 + components: + - pos: 17.5,29.5 + parent: 1 + type: Transform + - uid: 1408 + components: + - rot: 1.5707963267948966 rad + pos: 4.5,45.5 + parent: 1 + type: Transform + - uid: 1409 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,45.5 + parent: 1 + type: Transform + - uid: 1420 + components: + - rot: -1.5707963267948966 rad + pos: 18.5,44.5 + parent: 1 + type: Transform + - uid: 1426 + components: + - pos: -3.5,10.5 + parent: 1 + type: Transform + - uid: 1427 + components: + - pos: -3.5,9.5 + parent: 1 + type: Transform + - uid: 1428 + components: + - pos: -3.5,8.5 + parent: 1 + type: Transform + - uid: 1429 + components: + - pos: -2.5,7.5 + parent: 1 + type: Transform + - uid: 1430 + components: + - pos: -3.5,7.5 + parent: 1 + type: Transform + - uid: 1431 + components: + - pos: -1.5,7.5 + parent: 1 + type: Transform + - uid: 1432 + components: + - pos: -3.5,11.5 + parent: 1 + type: Transform + - uid: 1433 + components: + - pos: 13.5,33.5 + parent: 1 + type: Transform + - uid: 1434 + components: + - pos: 17.5,28.5 + parent: 1 + type: Transform + - uid: 1435 + components: + - pos: 17.5,30.5 + parent: 1 + type: Transform + - uid: 1436 + components: + - pos: 16.5,33.5 + parent: 1 + type: Transform + - uid: 1441 + components: + - pos: -2.5,18.5 + parent: 1 + type: Transform + - uid: 1442 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,7.5 + parent: 1 + type: Transform + - uid: 1443 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,16.5 + parent: 1 + type: Transform + - uid: 1444 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,16.5 + parent: 1 + type: Transform + - uid: 1449 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,14.5 + parent: 1 + type: Transform + - uid: 1450 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,13.5 + parent: 1 + type: Transform + - uid: 1453 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,10.5 + parent: 1 + type: Transform + - uid: 1455 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,8.5 + parent: 1 + type: Transform + - uid: 1456 + components: + - rot: 1.5707963267948966 rad + pos: -6.5,7.5 + parent: 1 + type: Transform + - uid: 1457 + components: + - pos: -1.5,18.5 + parent: 1 + type: Transform + - uid: 1458 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,7.5 + parent: 1 + type: Transform + - uid: 1460 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,10.5 + parent: 1 + type: Transform + - uid: 1461 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,10.5 + parent: 1 + type: Transform + - uid: 1462 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,10.5 + parent: 1 + type: Transform + - uid: 1464 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,13.5 + parent: 1 + type: Transform + - uid: 1465 + components: + - pos: -0.5,18.5 + parent: 1 + type: Transform + - uid: 1467 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,13.5 + parent: 1 + type: Transform + - uid: 1468 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,20.5 + parent: 1 + type: Transform + - uid: 1471 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,19.5 + parent: 1 + type: Transform + - uid: 1472 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,19.5 + parent: 1 + type: Transform + - uid: 1475 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,23.5 + parent: 1 + type: Transform + - uid: 1477 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,23.5 + parent: 1 + type: Transform + - uid: 1478 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,23.5 + parent: 1 + type: Transform + - uid: 1480 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,21.5 + parent: 1 + type: Transform + - uid: 1482 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,19.5 + parent: 1 + type: Transform + - uid: 1484 + components: + - rot: 1.5707963267948966 rad + pos: -10.5,17.5 + parent: 1 + type: Transform + - uid: 1485 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,7.5 + parent: 1 + type: Transform + - uid: 1492 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,10.5 + parent: 1 + type: Transform + - uid: 1493 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,11.5 + parent: 1 + type: Transform + - uid: 1494 + components: + - rot: -1.5707963267948966 rad + pos: -16.5,11.5 + parent: 1 + type: Transform + - uid: 1496 + components: + - rot: 1.5707963267948966 rad + pos: -15.5,11.5 + parent: 1 + type: Transform + - uid: 1497 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,11.5 + parent: 1 + type: Transform + - uid: 1503 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,14.5 + parent: 1 + type: Transform + - uid: 1511 + components: + - pos: -14.5,18.5 + parent: 1 + type: Transform + - uid: 1560 + components: + - rot: 1.5707963267948966 rad + pos: -4.5,8.5 + parent: 1 + type: Transform + - uid: 1589 + components: + - pos: 0.5,18.5 + parent: 1 + type: Transform + - uid: 1590 + components: + - pos: -4.5,18.5 + parent: 1 + type: Transform + - uid: 1595 + components: + - pos: 0.5,19.5 + parent: 1 + type: Transform + - uid: 1624 + components: + - pos: 0.5,20.5 + parent: 1 + type: Transform + - uid: 1626 + components: + - pos: 11.5,21.5 + parent: 1 + type: Transform + - uid: 1628 + components: + - pos: 7.5,27.5 + parent: 1 + type: Transform + - uid: 1661 + components: + - pos: 0.5,21.5 + parent: 1 + type: Transform + - uid: 1670 + components: + - pos: 1.5,21.5 + parent: 1 + type: Transform + - uid: 1671 + components: + - pos: 1.5,11.5 + parent: 1 + type: Transform + - uid: 1673 + components: + - pos: 2.5,7.5 + parent: 1 + type: Transform + - uid: 1751 + components: + - pos: -5.5,20.5 + parent: 1 + type: Transform + - uid: 1844 + components: + - pos: -5.5,19.5 + parent: 1 + type: Transform + - uid: 1845 + components: + - pos: -5.5,18.5 + parent: 1 + type: Transform + - uid: 1857 + components: + - pos: -5.5,26.5 + parent: 1 + type: Transform + - uid: 1858 + components: + - pos: -5.5,25.5 + parent: 1 + type: Transform + - uid: 1875 + components: + - pos: -5.5,24.5 + parent: 1 + type: Transform + - uid: 1879 + components: + - pos: -5.5,23.5 + parent: 1 + type: Transform + - uid: 1880 + components: + - pos: -5.5,22.5 + parent: 1 + type: Transform + - uid: 1882 + components: + - pos: -5.5,21.5 + parent: 1 + type: Transform + - uid: 1883 + components: + - pos: 19.5,27.5 + parent: 1 + type: Transform + - uid: 1884 + components: + - pos: 20.5,27.5 + parent: 1 + type: Transform + - uid: 1888 + components: + - pos: 1.5,27.5 + parent: 1 + type: Transform + - uid: 1893 + components: + - pos: 10.5,27.5 + parent: 1 + type: Transform + - uid: 1895 + components: + - pos: 2.5,13.5 + parent: 1 + type: Transform + - uid: 1899 + components: + - pos: 8.5,20.5 + parent: 1 + type: Transform + - uid: 1929 + components: + - pos: 1.5,28.5 + parent: 1 + type: Transform + - uid: 1930 + components: + - pos: -3.5,28.5 + parent: 1 + type: Transform + - uid: 1931 + components: + - pos: -4.5,28.5 + parent: 1 + type: Transform + - uid: 1932 + components: + - pos: 13.5,32.5 + parent: 1 + type: Transform + - uid: 1933 + components: + - pos: 13.5,31.5 + parent: 1 + type: Transform + - uid: 1956 + components: + - pos: 13.5,30.5 + parent: 1 + type: Transform + - uid: 1957 + components: + - pos: 17.5,33.5 + parent: 1 + type: Transform + - uid: 1965 + components: + - pos: 13.5,27.5 + parent: 1 + type: Transform + - uid: 1966 + components: + - pos: 16.5,27.5 + parent: 1 + type: Transform + - uid: 2013 + components: + - pos: -30.5,53.5 + parent: 1 + type: Transform + - uid: 2014 + components: + - pos: 24.5,36.5 + parent: 1 + type: Transform + - uid: 2032 + components: + - pos: 5.5,18.5 + parent: 1 + type: Transform + - uid: 2045 + components: + - pos: 24.5,35.5 + parent: 1 + type: Transform + - uid: 2047 + components: + - pos: 24.5,34.5 + parent: 1 + type: Transform + - uid: 2048 + components: + - pos: 24.5,33.5 + parent: 1 + type: Transform + - uid: 2049 + components: + - pos: 24.5,32.5 + parent: 1 + type: Transform + - uid: 2056 + components: + - pos: 24.5,31.5 + parent: 1 + type: Transform + - uid: 2057 + components: + - pos: 24.5,30.5 + parent: 1 + type: Transform + - uid: 2058 + components: + - pos: 15.5,21.5 + parent: 1 + type: Transform + - uid: 2061 + components: + - pos: 24.5,29.5 + parent: 1 + type: Transform + - uid: 2068 + components: + - pos: 5.5,17.5 + parent: 1 + type: Transform + - uid: 2069 + components: + - pos: 24.5,28.5 + parent: 1 + type: Transform + - uid: 2104 + components: + - pos: 24.5,27.5 + parent: 1 + type: Transform + - uid: 2184 + components: + - pos: 20.5,44.5 + parent: 1 + type: Transform + - uid: 2235 + components: + - pos: 18.5,21.5 + parent: 1 + type: Transform + - uid: 2236 + components: + - pos: 19.5,21.5 + parent: 1 + type: Transform + - uid: 2250 + components: + - pos: 24.5,37.5 + parent: 1 + type: Transform + - uid: 2318 + components: + - pos: -16.5,-15.5 + parent: 1 + type: Transform + - uid: 2332 + components: + - pos: 20.5,-11.5 + parent: 1 + type: Transform + - uid: 2366 + components: + - pos: 13.5,-11.5 + parent: 1 + type: Transform + - uid: 2377 + components: + - pos: 17.5,-8.5 + parent: 1 + type: Transform + - uid: 2646 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,35.5 + parent: 1 + type: Transform + - uid: 2647 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,35.5 + parent: 1 + type: Transform + - uid: 2651 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,34.5 + parent: 1 + type: Transform + - uid: 2652 + components: + - rot: -1.5707963267948966 rad + pos: -11.5,35.5 + parent: 1 + type: Transform + - uid: 2653 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,34.5 + parent: 1 + type: Transform + - uid: 2654 + components: + - pos: -18.5,34.5 + parent: 1 + type: Transform + - uid: 2655 + components: + - pos: 9.5,53.5 + parent: 1 + type: Transform + - uid: 2668 + components: + - pos: -18.5,-15.5 + parent: 1 + type: Transform + - uid: 2669 + components: + - pos: 15.5,33.5 + parent: 1 + type: Transform + - uid: 2732 + components: + - pos: -15.5,18.5 + parent: 1 + type: Transform + - uid: 2733 + components: + - pos: -14.5,17.5 + parent: 1 + type: Transform + - uid: 2749 + components: + - pos: 14.5,33.5 + parent: 1 + type: Transform + - uid: 2755 + components: + - pos: 17.5,27.5 + parent: 1 + type: Transform + - uid: 2763 + components: + - pos: 15.5,27.5 + parent: 1 + type: Transform + - uid: 2764 + components: + - pos: 14.5,27.5 + parent: 1 + type: Transform + - uid: 2772 + components: + - pos: -2.5,11.5 + parent: 1 + type: Transform + - uid: 2795 + components: + - pos: -1.5,11.5 + parent: 1 + type: Transform + - uid: 2797 + components: + - pos: 2.5,9.5 + parent: 1 + type: Transform + - uid: 2810 + components: + - pos: 0.5,11.5 + parent: 1 + type: Transform + - uid: 2815 + components: + - pos: 2.5,10.5 + parent: 1 + type: Transform + - uid: 2817 + components: + - pos: 2.5,11.5 + parent: 1 + type: Transform + - uid: 2818 + components: + - pos: 2.5,8.5 + parent: 1 + type: Transform + - uid: 2823 + components: + - pos: -0.5,11.5 + parent: 1 + type: Transform + - uid: 2827 + components: + - pos: -46.5,-14.5 + parent: 1 + type: Transform + - uid: 2829 + components: + - rot: 3.141592653589793 rad + pos: -20.5,30.5 + parent: 1 + type: Transform + - uid: 2835 + components: + - pos: -18.5,36.5 + parent: 1 + type: Transform + - uid: 2836 + components: + - pos: -14.5,22.5 + parent: 1 + type: Transform + - uid: 2838 + components: + - pos: -14.5,25.5 + parent: 1 + type: Transform + - uid: 2844 + components: + - pos: -14.5,30.5 + parent: 1 + type: Transform + - uid: 2849 + components: + - pos: -18.5,30.5 + parent: 1 + type: Transform + - uid: 2850 + components: + - pos: -14.5,21.5 + parent: 1 + type: Transform + - uid: 2893 + components: + - pos: -18.5,22.5 + parent: 1 + type: Transform + - uid: 2960 + components: + - pos: -18.5,28.5 + parent: 1 + type: Transform + - uid: 2961 + components: + - pos: -15.5,21.5 + parent: 1 + type: Transform + - uid: 2975 + components: + - pos: -18.5,21.5 + parent: 1 + type: Transform + - uid: 2976 + components: + - pos: 28.5,29.5 + parent: 1 + type: Transform + - uid: 2977 + components: + - pos: 29.5,29.5 + parent: 1 + type: Transform + - uid: 3026 + components: + - pos: -20.5,8.5 + parent: 1 + type: Transform + - uid: 3030 + components: + - pos: -21.5,10.5 + parent: 1 + type: Transform + - uid: 3031 + components: + - pos: -21.5,11.5 + parent: 1 + type: Transform + - uid: 3033 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,13.5 + parent: 1 + type: Transform + - uid: 3035 + components: + - pos: -21.5,15.5 + parent: 1 + type: Transform + - uid: 3037 + components: + - pos: -21.5,17.5 + parent: 1 + type: Transform + - uid: 3043 + components: + - pos: -21.5,19.5 + parent: 1 + type: Transform + - uid: 3048 + components: + - pos: -27.5,26.5 + parent: 1 + type: Transform + - uid: 3050 + components: + - pos: -23.5,25.5 + parent: 1 + type: Transform + - uid: 3051 + components: + - pos: -21.5,27.5 + parent: 1 + type: Transform + - uid: 3053 + components: + - pos: -22.5,7.5 + parent: 1 + type: Transform + - uid: 3054 + components: + - pos: -24.5,7.5 + parent: 1 + type: Transform + - uid: 3056 + components: + - pos: -29.5,7.5 + parent: 1 + type: Transform + - uid: 3059 + components: + - pos: -29.5,10.5 + parent: 1 + type: Transform + - uid: 3063 + components: + - pos: -29.5,14.5 + parent: 1 + type: Transform + - uid: 3065 + components: + - pos: -29.5,16.5 + parent: 1 + type: Transform + - uid: 3068 + components: + - pos: -25.5,14.5 + parent: 1 + type: Transform + - uid: 3069 + components: + - pos: -28.5,19.5 + parent: 1 + type: Transform + - uid: 3072 + components: + - pos: -28.5,14.5 + parent: 1 + type: Transform + - uid: 3074 + components: + - pos: -22.5,19.5 + parent: 1 + type: Transform + - uid: 3076 + components: + - pos: -24.5,19.5 + parent: 1 + type: Transform + - uid: 3077 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,19.5 + parent: 1 + type: Transform + - uid: 3079 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,18.5 + parent: 1 + type: Transform + - uid: 3081 + components: + - pos: -22.5,14.5 + parent: 1 + type: Transform + - uid: 3108 + components: + - pos: -31.5,11.5 + parent: 1 + type: Transform + - uid: 3110 + components: + - pos: -27.5,30.5 + parent: 1 + type: Transform + - uid: 3113 + components: + - pos: -32.5,7.5 + parent: 1 + type: Transform + - uid: 3114 + components: + - pos: -31.5,7.5 + parent: 1 + type: Transform + - uid: 3120 + components: + - pos: -21.5,25.5 + parent: 1 + type: Transform + - uid: 3123 + components: + - pos: -21.5,22.5 + parent: 1 + type: Transform + - uid: 3125 + components: + - pos: -23.5,22.5 + parent: 1 + type: Transform + - uid: 3126 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,22.5 + parent: 1 + type: Transform + - uid: 3128 + components: + - pos: -24.5,25.5 + parent: 1 + type: Transform + - uid: 3138 + components: + - pos: -27.5,22.5 + parent: 1 + type: Transform + - uid: 3141 + components: + - pos: -29.5,30.5 + parent: 1 + type: Transform + - uid: 3142 + components: + - pos: -30.5,30.5 + parent: 1 + type: Transform + - uid: 3143 + components: + - pos: -31.5,30.5 + parent: 1 + type: Transform + - uid: 3148 + components: + - pos: -30.5,22.5 + parent: 1 + type: Transform + - uid: 3149 + components: + - pos: -31.5,22.5 + parent: 1 + type: Transform + - uid: 3153 + components: + - pos: -35.5,30.5 + parent: 1 + type: Transform + - uid: 3155 + components: + - pos: -35.5,22.5 + parent: 1 + type: Transform + - uid: 3156 + components: + - pos: -31.5,21.5 + parent: 1 + type: Transform + - uid: 3162 + components: + - pos: -31.5,15.5 + parent: 1 + type: Transform + - uid: 3163 + components: + - pos: -31.5,14.5 + parent: 1 + type: Transform + - uid: 3165 + components: + - pos: -33.5,14.5 + parent: 1 + type: Transform + - uid: 3170 + components: + - pos: 25.5,22.5 + parent: 1 + type: Transform + - uid: 3171 + components: + - pos: -35.5,8.5 + parent: 1 + type: Transform + - uid: 3172 + components: + - pos: -35.5,9.5 + parent: 1 + type: Transform + - uid: 3182 + components: + - pos: -34.5,8.5 + parent: 1 + type: Transform + - uid: 3214 + components: + - pos: -39.5,17.5 + parent: 1 + type: Transform + - uid: 3216 + components: + - pos: -39.5,14.5 + parent: 1 + type: Transform + - uid: 3218 + components: + - pos: -39.5,7.5 + parent: 1 + type: Transform + - uid: 3219 + components: + - pos: -43.5,7.5 + parent: 1 + type: Transform + - uid: 3221 + components: + - pos: -42.5,7.5 + parent: 1 + type: Transform + - uid: 3361 + components: + - pos: -40.5,7.5 + parent: 1 + type: Transform + - uid: 3408 + components: + - pos: -33.5,-14.5 + parent: 1 + type: Transform + - uid: 3421 + components: + - pos: -35.5,14.5 + parent: 1 + type: Transform + - uid: 3436 + components: + - pos: -39.5,9.5 + parent: 1 + type: Transform + - uid: 3438 + components: + - pos: -39.5,11.5 + parent: 1 + type: Transform + - uid: 3439 + components: + - pos: -39.5,12.5 + parent: 1 + type: Transform + - uid: 3442 + components: + - pos: -18.5,43.5 + parent: 1 + type: Transform + - uid: 3445 + components: + - pos: -23.5,45.5 + parent: 1 + type: Transform + - uid: 3450 + components: + - pos: -23.5,43.5 + parent: 1 + type: Transform + - uid: 3459 + components: + - pos: -30.5,3.5 + parent: 1 + type: Transform + - uid: 3460 + components: + - pos: -30.5,2.5 + parent: 1 + type: Transform + - uid: 3462 + components: + - pos: -30.5,0.5 + parent: 1 + type: Transform + - uid: 3466 + components: + - pos: -30.5,-3.5 + parent: 1 + type: Transform + - uid: 3467 + components: + - pos: -30.5,-4.5 + parent: 1 + type: Transform + - uid: 3470 + components: + - pos: -29.5,-9.5 + parent: 1 + type: Transform + - uid: 3472 + components: + - pos: -30.5,-9.5 + parent: 1 + type: Transform + - uid: 3482 + components: + - pos: -24.5,-14.5 + parent: 1 + type: Transform + - uid: 3483 + components: + - pos: -25.5,-14.5 + parent: 1 + type: Transform + - uid: 3484 + components: + - pos: -26.5,-14.5 + parent: 1 + type: Transform + - uid: 3487 + components: + - pos: -22.5,-15.5 + parent: 1 + type: Transform + - uid: 3489 + components: + - pos: -20.5,-15.5 + parent: 1 + type: Transform + - uid: 3490 + components: + - pos: -30.5,-11.5 + parent: 1 + type: Transform + - uid: 3495 + components: + - pos: -30.5,-12.5 + parent: 1 + type: Transform + - uid: 3497 + components: + - pos: -28.5,-13.5 + parent: 1 + type: Transform + - uid: 3498 + components: + - pos: -30.5,-13.5 + parent: 1 + type: Transform + - uid: 3501 + components: + - pos: -27.5,-13.5 + parent: 1 + type: Transform + - uid: 3502 + components: + - pos: -43.5,-8.5 + parent: 1 + type: Transform + - uid: 3503 + components: + - pos: -19.5,-12.5 + parent: 1 + type: Transform + - uid: 3520 + components: + - pos: -39.5,2.5 + parent: 1 + type: Transform + - uid: 3523 + components: + - pos: -42.5,2.5 + parent: 1 + type: Transform + - uid: 3526 + components: + - pos: -35.5,-0.5 + parent: 1 + type: Transform + - uid: 3529 + components: + - pos: -31.5,-0.5 + parent: 1 + type: Transform + - uid: 3533 + components: + - pos: -42.5,-0.5 + parent: 1 + type: Transform + - uid: 3537 + components: + - pos: -43.5,3.5 + parent: 1 + type: Transform + - uid: 3538 + components: + - pos: -44.5,-8.5 + parent: 1 + type: Transform + - uid: 3539 + components: + - pos: -45.5,-8.5 + parent: 1 + type: Transform + - uid: 3540 + components: + - pos: -46.5,-7.5 + parent: 1 + type: Transform + - uid: 3541 + components: + - pos: -46.5,-8.5 + parent: 1 + type: Transform + - uid: 3542 + components: + - pos: -46.5,-6.5 + parent: 1 + type: Transform + - uid: 3550 + components: + - pos: -35.5,-3.5 + parent: 1 + type: Transform + - uid: 3560 + components: + - pos: -36.5,-10.5 + parent: 1 + type: Transform + - uid: 3561 + components: + - pos: -36.5,-9.5 + parent: 1 + type: Transform + - uid: 3562 + components: + - pos: -36.5,-8.5 + parent: 1 + type: Transform + - uid: 3579 + components: + - pos: -46.5,-5.5 + parent: 1 + type: Transform + - uid: 3580 + components: + - pos: -42.5,-8.5 + parent: 1 + type: Transform + - uid: 3581 + components: + - pos: -45.5,-5.5 + parent: 1 + type: Transform + - uid: 3583 + components: + - pos: -49.5,2.5 + parent: 1 + type: Transform + - uid: 3585 + components: + - pos: -43.5,-5.5 + parent: 1 + type: Transform + - uid: 3587 + components: + - pos: -42.5,-5.5 + parent: 1 + type: Transform + - uid: 3590 + components: + - pos: -48.5,-11.5 + parent: 1 + type: Transform + - uid: 3598 + components: + - pos: -47.5,-3.5 + parent: 1 + type: Transform + - uid: 3599 + components: + - pos: -50.5,3.5 + parent: 1 + type: Transform + - uid: 3600 + components: + - pos: -47.5,-1.5 + parent: 1 + type: Transform + - uid: 3601 + components: + - pos: -47.5,-0.5 + parent: 1 + type: Transform + - uid: 3604 + components: + - pos: -47.5,2.5 + parent: 1 + type: Transform + - uid: 3605 + components: + - pos: -47.5,3.5 + parent: 1 + type: Transform + - uid: 3606 + components: + - pos: -46.5,3.5 + parent: 1 + type: Transform + - uid: 3611 + components: + - pos: -43.5,-0.5 + parent: 1 + type: Transform + - uid: 3628 + components: + - pos: -46.5,-11.5 + parent: 1 + type: Transform + - uid: 3632 + components: + - pos: -38.5,-14.5 + parent: 1 + type: Transform + - uid: 3645 + components: + - pos: -36.5,-14.5 + parent: 1 + type: Transform + - uid: 3647 + components: + - pos: -36.5,-11.5 + parent: 1 + type: Transform + - uid: 3676 + components: + - pos: -44.5,-14.5 + parent: 1 + type: Transform + - uid: 3678 + components: + - pos: -33.5,-11.5 + parent: 1 + type: Transform + - uid: 3684 + components: + - pos: -30.5,-14.5 + parent: 1 + type: Transform + - uid: 3690 + components: + - pos: -39.5,8.5 + parent: 1 + type: Transform + - uid: 3691 + components: + - pos: -43.5,8.5 + parent: 1 + type: Transform + - uid: 3699 + components: + - pos: -43.5,11.5 + parent: 1 + type: Transform + - uid: 3700 + components: + - pos: -43.5,12.5 + parent: 1 + type: Transform + - uid: 3705 + components: + - pos: -35.5,-4.5 + parent: 1 + type: Transform + - uid: 3766 + components: + - pos: -42.5,12.5 + parent: 1 + type: Transform + - uid: 3832 + components: + - pos: -41.5,12.5 + parent: 1 + type: Transform + - uid: 3903 + components: + - pos: -40.5,12.5 + parent: 1 + type: Transform + - uid: 3904 + components: + - pos: 29.5,28.5 + parent: 1 + type: Transform + - uid: 3963 + components: + - pos: 8.5,53.5 + parent: 1 + type: Transform + - uid: 3964 + components: + - pos: -50.5,-11.5 + parent: 1 + type: Transform + - uid: 4084 + components: + - pos: -51.5,-11.5 + parent: 1 + type: Transform + - uid: 4091 + components: + - pos: -52.5,-11.5 + parent: 1 + type: Transform + - uid: 4093 + components: + - pos: -54.5,-11.5 + parent: 1 + type: Transform + - uid: 4094 + components: + - pos: -55.5,-11.5 + parent: 1 + type: Transform + - uid: 4095 + components: + - pos: -56.5,-11.5 + parent: 1 + type: Transform + - uid: 4096 + components: + - pos: 10.5,53.5 + parent: 1 + type: Transform + - uid: 4097 + components: + - pos: 16.5,40.5 + parent: 1 + type: Transform + - uid: 4113 + components: + - pos: -56.5,-12.5 + parent: 1 + type: Transform + - uid: 4124 + components: + - pos: -73.5,7.5 + parent: 1 + type: Transform + - uid: 4136 + components: + - pos: -36.5,-13.5 + parent: 1 + type: Transform + - uid: 4170 + components: + - pos: -39.5,18.5 + parent: 1 + type: Transform + - uid: 4173 + components: + - pos: -40.5,20.5 + parent: 1 + type: Transform + - uid: 4177 + components: + - pos: -39.5,25.5 + parent: 1 + type: Transform + - uid: 4179 + components: + - pos: -39.5,27.5 + parent: 1 + type: Transform + - uid: 4180 + components: + - pos: -39.5,28.5 + parent: 1 + type: Transform + - uid: 4182 + components: + - pos: -39.5,30.5 + parent: 1 + type: Transform + - uid: 4184 + components: + - pos: -41.5,29.5 + parent: 1 + type: Transform + - uid: 4186 + components: + - pos: -43.5,29.5 + parent: 1 + type: Transform + - uid: 4187 + components: + - pos: -43.5,28.5 + parent: 1 + type: Transform + - uid: 4190 + components: + - pos: -43.5,25.5 + parent: 1 + type: Transform + - uid: 4192 + components: + - pos: -43.5,23.5 + parent: 1 + type: Transform + - uid: 4195 + components: + - pos: -41.5,22.5 + parent: 1 + type: Transform + - uid: 4196 + components: + - pos: -40.5,22.5 + parent: 1 + type: Transform + - uid: 4202 + components: + - pos: -50.5,30.5 + parent: 1 + type: Transform + - uid: 4203 + components: + - pos: -18.5,24.5 + parent: 1 + type: Transform + - uid: 4205 + components: + - pos: -51.5,20.5 + parent: 1 + type: Transform + - uid: 4206 + components: + - pos: -47.5,30.5 + parent: 1 + type: Transform + - uid: 4239 + components: + - pos: -44.5,56.5 + parent: 1 + type: Transform + - uid: 4253 + components: + - pos: -18.5,27.5 + parent: 1 + type: Transform + - uid: 4266 + components: + - pos: -17.5,21.5 + parent: 1 + type: Transform + - uid: 4267 + components: + - pos: 17.5,-7.5 + parent: 1 + type: Transform + - uid: 4269 + components: + - pos: -23.5,39.5 + parent: 1 + type: Transform + - uid: 4270 + components: + - pos: -20.5,49.5 + parent: 1 + type: Transform + - uid: 4271 + components: + - pos: -23.5,35.5 + parent: 1 + type: Transform + - uid: 4273 + components: + - pos: -9.5,45.5 + parent: 1 + type: Transform + - uid: 4282 + components: + - pos: -10.5,45.5 + parent: 1 + type: Transform + - uid: 4283 + components: + - pos: -43.5,17.5 + parent: 1 + type: Transform + - uid: 4286 + components: + - pos: -43.5,19.5 + parent: 1 + type: Transform + - uid: 4287 + components: + - pos: -42.5,16.5 + parent: 1 + type: Transform + - uid: 4289 + components: + - pos: -40.5,16.5 + parent: 1 + type: Transform + - uid: 4290 + components: + - pos: -44.5,16.5 + parent: 1 + type: Transform + - uid: 4291 + components: + - pos: -45.5,16.5 + parent: 1 + type: Transform + - uid: 4293 + components: + - pos: -49.5,20.5 + parent: 1 + type: Transform + - uid: 4295 + components: + - pos: -49.5,18.5 + parent: 1 + type: Transform + - uid: 4296 + components: + - pos: -49.5,17.5 + parent: 1 + type: Transform + - uid: 4298 + components: + - pos: -48.5,16.5 + parent: 1 + type: Transform + - uid: 4299 + components: + - pos: -47.5,16.5 + parent: 1 + type: Transform + - uid: 4301 + components: + - pos: -46.5,18.5 + parent: 1 + type: Transform + - uid: 4305 + components: + - pos: -42.5,13.5 + parent: 1 + type: Transform + - uid: 4324 + components: + - pos: -51.5,16.5 + parent: 1 + type: Transform + - uid: 4430 + components: + - pos: -11.5,45.5 + parent: 1 + type: Transform + - uid: 4431 + components: + - pos: -12.5,45.5 + parent: 1 + type: Transform + - uid: 4433 + components: + - pos: -14.5,45.5 + parent: 1 + type: Transform + - uid: 4500 + components: + - pos: -49.5,-1.5 + parent: 1 + type: Transform + - uid: 4506 + components: + - pos: -49.5,-7.5 + parent: 1 + type: Transform + - uid: 4509 + components: + - pos: -54.5,3.5 + parent: 1 + type: Transform + - uid: 4510 + components: + - pos: -55.5,3.5 + parent: 1 + type: Transform + - uid: 4511 + components: + - pos: -49.5,0.5 + parent: 1 + type: Transform + - uid: 4513 + components: + - pos: -51.5,0.5 + parent: 1 + type: Transform + - uid: 4516 + components: + - pos: -54.5,0.5 + parent: 1 + type: Transform + - uid: 4519 + components: + - pos: -55.5,-1.5 + parent: 1 + type: Transform + - uid: 4521 + components: + - pos: -55.5,-3.5 + parent: 1 + type: Transform + - uid: 4522 + components: + - pos: -55.5,-4.5 + parent: 1 + type: Transform + - uid: 4525 + components: + - pos: -55.5,-7.5 + parent: 1 + type: Transform + - uid: 4526 + components: + - pos: -55.5,-8.5 + parent: 1 + type: Transform + - uid: 4529 + components: + - pos: -52.5,-8.5 + parent: 1 + type: Transform + - uid: 4533 + components: + - pos: -9.5,48.5 + parent: 1 + type: Transform + - uid: 4534 + components: + - pos: -13.5,45.5 + parent: 1 + type: Transform + - uid: 4535 + components: + - pos: -9.5,50.5 + parent: 1 + type: Transform + - uid: 4536 + components: + - pos: -9.5,49.5 + parent: 1 + type: Transform + - uid: 4537 + components: + - pos: -6.5,52.5 + parent: 1 + type: Transform + - uid: 4538 + components: + - pos: -10.5,50.5 + parent: 1 + type: Transform + - uid: 4539 + components: + - pos: -14.5,50.5 + parent: 1 + type: Transform + - uid: 4544 + components: + - pos: -13.5,50.5 + parent: 1 + type: Transform + - uid: 4545 + components: + - pos: -12.5,50.5 + parent: 1 + type: Transform + - uid: 4551 + components: + - pos: -55.5,28.5 + parent: 1 + type: Transform + - uid: 4553 + components: + - pos: -55.5,30.5 + parent: 1 + type: Transform + - uid: 4554 + components: + - pos: -54.5,30.5 + parent: 1 + type: Transform + - uid: 4563 + components: + - pos: -30.5,57.5 + parent: 1 + type: Transform + - uid: 4564 + components: + - pos: -30.5,58.5 + parent: 1 + type: Transform + - uid: 4571 + components: + - pos: -46.5,27.5 + parent: 1 + type: Transform + - uid: 4575 + components: + - pos: -51.5,19.5 + parent: 1 + type: Transform + - uid: 4579 + components: + - pos: -55.5,22.5 + parent: 1 + type: Transform + - uid: 4581 + components: + - pos: -46.5,29.5 + parent: 1 + type: Transform + - uid: 4586 + components: + - pos: -55.5,26.5 + parent: 1 + type: Transform + - uid: 4587 + components: + - pos: -55.5,25.5 + parent: 1 + type: Transform + - uid: 4594 + components: + - pos: -11.5,50.5 + parent: 1 + type: Transform + - uid: 4707 + components: + - pos: -9.5,46.5 + parent: 1 + type: Transform + - uid: 4712 + components: + - pos: -6.5,49.5 + parent: 1 + type: Transform + - uid: 4737 + components: + - pos: -5.5,54.5 + parent: 1 + type: Transform + - uid: 4981 + components: + - pos: -6.5,48.5 + parent: 1 + type: Transform + - uid: 5006 + components: + - pos: -32.5,56.5 + parent: 1 + type: Transform + - uid: 5007 + components: + - pos: -33.5,56.5 + parent: 1 + type: Transform + - uid: 5009 + components: + - pos: -33.5,57.5 + parent: 1 + type: Transform + - uid: 5012 + components: + - pos: -6.5,53.5 + parent: 1 + type: Transform + - uid: 5015 + components: + - pos: -32.5,58.5 + parent: 1 + type: Transform + - uid: 5016 + components: + - pos: -4.5,54.5 + parent: 1 + type: Transform + - uid: 5017 + components: + - pos: -3.5,54.5 + parent: 1 + type: Transform + - uid: 5018 + components: + - pos: -12.5,52.5 + parent: 1 + type: Transform + - uid: 5019 + components: + - pos: -9.5,52.5 + parent: 1 + type: Transform + - uid: 5020 + components: + - pos: -8.5,52.5 + parent: 1 + type: Transform + - uid: 5021 + components: + - pos: -4.5,48.5 + parent: 1 + type: Transform + - uid: 5022 + components: + - pos: -14.5,52.5 + parent: 1 + type: Transform + - uid: 5023 + components: + - pos: -6.5,51.5 + parent: 1 + type: Transform + - uid: 5024 + components: + - pos: -6.5,50.5 + parent: 1 + type: Transform + - uid: 5025 + components: + - pos: -5.5,53.5 + parent: 1 + type: Transform + - uid: 5027 + components: + - pos: -5.5,48.5 + parent: 1 + type: Transform + - uid: 5028 + components: + - pos: -11.5,52.5 + parent: 1 + type: Transform + - uid: 5029 + components: + - pos: -13.5,52.5 + parent: 1 + type: Transform + - uid: 5030 + components: + - pos: -7.5,52.5 + parent: 1 + type: Transform + - uid: 5031 + components: + - pos: -3.5,48.5 + parent: 1 + type: Transform + - uid: 5034 + components: + - pos: -2.5,48.5 + parent: 1 + type: Transform + - uid: 5035 + components: + - pos: -18.5,49.5 + parent: 1 + type: Transform + - uid: 5036 + components: + - pos: -10.5,52.5 + parent: 1 + type: Transform + - uid: 5037 + components: + - pos: -2.5,54.5 + parent: 1 + type: Transform + - uid: 5038 + components: + - pos: 1.5,54.5 + parent: 1 + type: Transform + - uid: 5041 + components: + - pos: 1.5,53.5 + parent: 1 + type: Transform + - uid: 5042 + components: + - pos: 10.5,44.5 + parent: 1 + type: Transform + - uid: 5043 + components: + - pos: 9.5,44.5 + parent: 1 + type: Transform + - uid: 5044 + components: + - pos: 12.5,44.5 + parent: 1 + type: Transform + - uid: 5048 + components: + - pos: -35.5,58.5 + parent: 1 + type: Transform + - uid: 5049 + components: + - pos: 8.5,42.5 + parent: 1 + type: Transform + - uid: 5050 + components: + - pos: 13.5,42.5 + parent: 1 + type: Transform + - uid: 5051 + components: + - pos: 13.5,41.5 + parent: 1 + type: Transform + - uid: 5052 + components: + - pos: 12.5,41.5 + parent: 1 + type: Transform + - uid: 5055 + components: + - pos: 11.5,41.5 + parent: 1 + type: Transform + - uid: 5056 + components: + - pos: 13.5,44.5 + parent: 1 + type: Transform + - uid: 5057 + components: + - pos: 22.5,44.5 + parent: 1 + type: Transform + - uid: 5058 + components: + - pos: 9.5,41.5 + parent: 1 + type: Transform + - uid: 5059 + components: + - pos: 8.5,41.5 + parent: 1 + type: Transform + - uid: 5060 + components: + - pos: 21.5,44.5 + parent: 1 + type: Transform + - uid: 5061 + components: + - pos: 2.5,53.5 + parent: 1 + type: Transform + - uid: 5062 + components: + - pos: 3.5,53.5 + parent: 1 + type: Transform + - uid: 5063 + components: + - pos: 4.5,53.5 + parent: 1 + type: Transform + - uid: 5064 + components: + - pos: 5.5,53.5 + parent: 1 + type: Transform + - uid: 5065 + components: + - pos: 6.5,53.5 + parent: 1 + type: Transform + - uid: 5066 + components: + - pos: 7.5,53.5 + parent: 1 + type: Transform + - uid: 5067 + components: + - pos: 11.5,53.5 + parent: 1 + type: Transform + - uid: 5068 + components: + - pos: 12.5,53.5 + parent: 1 + type: Transform + - uid: 5077 + components: + - pos: -61.5,7.5 + parent: 1 + type: Transform + - uid: 5078 + components: + - pos: 16.5,49.5 + parent: 1 + type: Transform + - uid: 5104 + components: + - pos: 16.5,48.5 + parent: 1 + type: Transform + - uid: 5105 + components: + - pos: 18.5,47.5 + parent: 1 + type: Transform + - uid: 5107 + components: + - pos: 17.5,47.5 + parent: 1 + type: Transform + - uid: 5108 + components: + - pos: 12.5,52.5 + parent: 1 + type: Transform + - uid: 5109 + components: + - pos: 13.5,49.5 + parent: 1 + type: Transform + - uid: 5110 + components: + - pos: 14.5,49.5 + parent: 1 + type: Transform + - uid: 5111 + components: + - pos: 15.5,49.5 + parent: 1 + type: Transform + - uid: 5112 + components: + - pos: 12.5,49.5 + parent: 1 + type: Transform + - uid: 5113 + components: + - pos: 12.5,51.5 + parent: 1 + type: Transform + - uid: 5114 + components: + - pos: 12.5,50.5 + parent: 1 + type: Transform + - uid: 5115 + components: + - pos: 8.5,43.5 + parent: 1 + type: Transform + - uid: 5116 + components: + - pos: 8.5,44.5 + parent: 1 + type: Transform + - uid: 5117 + components: + - pos: 11.5,44.5 + parent: 1 + type: Transform + - uid: 5118 + components: + - pos: 13.5,43.5 + parent: 1 + type: Transform + - uid: 5119 + components: + - pos: 23.5,44.5 + parent: 1 + type: Transform + - uid: 5120 + components: + - pos: 24.5,44.5 + parent: 1 + type: Transform + - uid: 5121 + components: + - pos: 24.5,43.5 + parent: 1 + type: Transform + - uid: 5122 + components: + - pos: 24.5,42.5 + parent: 1 + type: Transform + - uid: 5123 + components: + - pos: 16.5,47.5 + parent: 1 + type: Transform + - uid: 5124 + components: + - pos: 19.5,-9.5 + parent: 1 + type: Transform + - uid: 5125 + components: + - pos: 19.5,46.5 + parent: 1 + type: Transform + - uid: 5126 + components: + - pos: 19.5,44.5 + parent: 1 + type: Transform + - uid: 5164 + components: + - pos: 19.5,45.5 + parent: 1 + type: Transform + - uid: 5165 + components: + - pos: 19.5,47.5 + parent: 1 + type: Transform + - uid: 5166 + components: + - pos: 16.5,39.5 + parent: 1 + type: Transform + - uid: 5168 + components: + - pos: 18.5,36.5 + parent: 1 + type: Transform + - uid: 5169 + components: + - pos: 16.5,41.5 + parent: 1 + type: Transform + - uid: 5171 + components: + - pos: -2.5,57.5 + parent: 1 + type: Transform + - uid: 5173 + components: + - pos: -2.5,56.5 + parent: 1 + type: Transform + - uid: 5176 + components: + - rot: -1.5707963267948966 rad + pos: -70.5,7.5 + parent: 1 + type: Transform + - uid: 5178 + components: + - rot: -1.5707963267948966 rad + pos: -68.5,7.5 + parent: 1 + type: Transform + - uid: 5180 + components: + - rot: -1.5707963267948966 rad + pos: -66.5,7.5 + parent: 1 + type: Transform + - uid: 5183 + components: + - pos: -59.5,7.5 + parent: 1 + type: Transform + - uid: 5187 + components: + - pos: -2.5,55.5 + parent: 1 + type: Transform + - uid: 5188 + components: + - pos: -3.5,57.5 + parent: 1 + type: Transform + - uid: 5199 + components: + - pos: -23.5,49.5 + parent: 1 + type: Transform + - uid: 5209 + components: + - pos: -26.5,56.5 + parent: 1 + type: Transform + - uid: 5222 + components: + - pos: -27.5,56.5 + parent: 1 + type: Transform + - uid: 5224 + components: + - pos: -29.5,56.5 + parent: 1 + type: Transform + - uid: 5255 + components: + - pos: -55.5,21.5 + parent: 1 + type: Transform + - uid: 5307 + components: + - pos: -53.5,-3.5 + parent: 1 + type: Transform + - uid: 5309 + components: + - pos: -50.5,-3.5 + parent: 1 + type: Transform + - uid: 5320 + components: + - pos: -30.5,56.5 + parent: 1 + type: Transform + - uid: 5330 + components: + - pos: 18.5,-6.5 + parent: 1 + type: Transform + - uid: 5331 + components: + - pos: -62.5,35.5 + parent: 1 + type: Transform + - uid: 5333 + components: + - pos: 20.5,-6.5 + parent: 1 + type: Transform + - uid: 5334 + components: + - pos: 21.5,-6.5 + parent: 1 + type: Transform + - uid: 5345 + components: + - pos: 21.5,-7.5 + parent: 1 + type: Transform + - uid: 5349 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,9.5 + parent: 1 + type: Transform + - uid: 5360 + components: + - pos: -36.5,57.5 + parent: 1 + type: Transform + - uid: 5361 + components: + - pos: -36.5,56.5 + parent: 1 + type: Transform + - uid: 5374 + components: + - pos: -46.5,-10.5 + parent: 1 + type: Transform + - uid: 5379 + components: + - pos: 19.5,36.5 + parent: 1 + type: Transform + - uid: 5380 + components: + - pos: 21.5,-8.5 + parent: 1 + type: Transform + - uid: 5412 + components: + - pos: -23.5,-5.5 + parent: 1 + type: Transform + - uid: 5428 + components: + - pos: -73.5,13.5 + parent: 1 + type: Transform + - uid: 5455 + components: + - pos: -73.5,12.5 + parent: 1 + type: Transform + - uid: 5505 + components: + - pos: -73.5,11.5 + parent: 1 + type: Transform + - uid: 5508 + components: + - pos: 21.5,36.5 + parent: 1 + type: Transform + - uid: 5523 + components: + - pos: -40.5,56.5 + parent: 1 + type: Transform + - uid: 5530 + components: + - pos: -42.5,56.5 + parent: 1 + type: Transform + - uid: 5557 + components: + - pos: -77.5,52.5 + parent: 1 + type: Transform + - uid: 5597 + components: + - pos: -76.5,52.5 + parent: 1 + type: Transform + - uid: 5621 + components: + - pos: -76.5,53.5 + parent: 1 + type: Transform + - uid: 5629 + components: + - pos: -75.5,53.5 + parent: 1 + type: Transform + - uid: 5632 + components: + - pos: -74.5,57.5 + parent: 1 + type: Transform + - uid: 5633 + components: + - pos: -72.5,36.5 + parent: 1 + type: Transform + - uid: 5659 + components: + - pos: -70.5,36.5 + parent: 1 + type: Transform + - uid: 5668 + components: + - pos: -67.5,35.5 + parent: 1 + type: Transform + - uid: 5679 + components: + - pos: -66.5,35.5 + parent: 1 + type: Transform + - uid: 5681 + components: + - pos: -73.5,36.5 + parent: 1 + type: Transform + - uid: 5722 + components: + - pos: -43.5,49.5 + parent: 1 + type: Transform + - uid: 5724 + components: + - pos: -44.5,48.5 + parent: 1 + type: Transform + - uid: 5730 + components: + - pos: -68.5,36.5 + parent: 1 + type: Transform + - uid: 5732 + components: + - pos: -64.5,58.5 + parent: 1 + type: Transform + - uid: 5749 + components: + - pos: -62.5,27.5 + parent: 1 + type: Transform + - uid: 5753 + components: + - pos: -45.5,55.5 + parent: 1 + type: Transform + - uid: 5757 + components: + - pos: -76.5,42.5 + parent: 1 + type: Transform + - uid: 5759 + components: + - pos: -45.5,50.5 + parent: 1 + type: Transform + - uid: 5802 + components: + - pos: -76.5,38.5 + parent: 1 + type: Transform + - uid: 5819 + components: + - pos: -76.5,37.5 + parent: 1 + type: Transform + - uid: 5825 + components: + - pos: -76.5,40.5 + parent: 1 + type: Transform + - uid: 5828 + components: + - pos: -76.5,39.5 + parent: 1 + type: Transform + - uid: 5830 + components: + - pos: -76.5,46.5 + parent: 1 + type: Transform + - uid: 5839 + components: + - pos: -10.5,38.5 + parent: 1 + type: Transform + - uid: 5841 + components: + - pos: -10.5,40.5 + parent: 1 + type: Transform + - uid: 5842 + components: + - pos: -10.5,41.5 + parent: 1 + type: Transform + - uid: 5844 + components: + - pos: -10.5,43.5 + parent: 1 + type: Transform + - uid: 5846 + components: + - pos: -76.5,45.5 + parent: 1 + type: Transform + - uid: 5847 + components: + - pos: -76.5,47.5 + parent: 1 + type: Transform + - uid: 5848 + components: + - pos: -76.5,44.5 + parent: 1 + type: Transform + - uid: 5849 + components: + - pos: -76.5,43.5 + parent: 1 + type: Transform + - uid: 5850 + components: + - pos: -76.5,49.5 + parent: 1 + type: Transform + - uid: 5853 + components: + - pos: -6.5,38.5 + parent: 1 + type: Transform + - uid: 5855 + components: + - pos: -76.5,50.5 + parent: 1 + type: Transform + - uid: 5858 + components: + - pos: -4.5,40.5 + parent: 1 + type: Transform + - uid: 5863 + components: + - pos: -7.5,38.5 + parent: 1 + type: Transform + - uid: 5865 + components: + - pos: -9.5,38.5 + parent: 1 + type: Transform + - uid: 5871 + components: + - pos: -4.5,41.5 + parent: 1 + type: Transform + - uid: 5873 + components: + - pos: -4.5,43.5 + parent: 1 + type: Transform + - uid: 5876 + components: + - pos: -5.5,45.5 + parent: 1 + type: Transform + - uid: 5880 + components: + - pos: -74.5,53.5 + parent: 1 + type: Transform + - uid: 5881 + components: + - pos: -74.5,55.5 + parent: 1 + type: Transform + - uid: 5882 + components: + - pos: -74.5,56.5 + parent: 1 + type: Transform + - uid: 5883 + components: + - pos: -76.5,36.5 + parent: 1 + type: Transform + - uid: 5884 + components: + - pos: -75.5,36.5 + parent: 1 + type: Transform + - uid: 5885 + components: + - pos: -71.5,36.5 + parent: 1 + type: Transform + - uid: 5886 + components: + - pos: -62.5,30.5 + parent: 1 + type: Transform + - uid: 5887 + components: + - pos: -62.5,31.5 + parent: 1 + type: Transform + - uid: 5888 + components: + - pos: -62.5,28.5 + parent: 1 + type: Transform + - uid: 5889 + components: + - pos: -62.5,29.5 + parent: 1 + type: Transform + - uid: 5890 + components: + - pos: -71.5,24.5 + parent: 1 + type: Transform + - uid: 5891 + components: + - pos: -72.5,25.5 + parent: 1 + type: Transform + - uid: 5892 + components: + - pos: -68.5,25.5 + parent: 1 + type: Transform + - uid: 5893 + components: + - pos: -62.5,26.5 + parent: 1 + type: Transform + - uid: 5894 + components: + - pos: -68.5,27.5 + parent: 1 + type: Transform + - uid: 5895 + components: + - pos: -68.5,26.5 + parent: 1 + type: Transform + - uid: 5896 + components: + - pos: -68.5,31.5 + parent: 1 + type: Transform + - uid: 5897 + components: + - pos: -68.5,30.5 + parent: 1 + type: Transform + - uid: 5898 + components: + - pos: -68.5,29.5 + parent: 1 + type: Transform + - uid: 5899 + components: + - pos: -18.5,50.5 + parent: 1 + type: Transform + - uid: 5903 + components: + - pos: -67.5,24.5 + parent: 1 + type: Transform + - uid: 5906 + components: + - pos: -68.5,28.5 + parent: 1 + type: Transform + - uid: 5907 + components: + - pos: -63.5,24.5 + parent: 1 + type: Transform + - uid: 5908 + components: + - pos: -62.5,33.5 + parent: 1 + type: Transform + - uid: 5909 + components: + - pos: -62.5,25.5 + parent: 1 + type: Transform + - uid: 5940 + components: + - pos: -62.5,34.5 + parent: 1 + type: Transform + - uid: 5941 + components: + - pos: -62.5,24.5 + parent: 1 + type: Transform + - uid: 5942 + components: + - pos: -68.5,32.5 + parent: 1 + type: Transform + - uid: 5943 + components: + - pos: -65.5,32.5 + parent: 1 + type: Transform + - uid: 5944 + components: + - pos: -68.5,24.5 + parent: 1 + type: Transform + - uid: 5945 + components: + - pos: -78.5,27.5 + parent: 1 + type: Transform + - uid: 5946 + components: + - pos: -79.5,28.5 + parent: 1 + type: Transform + - uid: 5948 + components: + - pos: -81.5,28.5 + parent: 1 + type: Transform + - uid: 5953 + components: + - pos: -75.5,21.5 + parent: 1 + type: Transform + - uid: 5954 + components: + - pos: 1.5,48.5 + parent: 1 + type: Transform + - uid: 5956 + components: + - pos: 1.5,50.5 + parent: 1 + type: Transform + - uid: 5959 + components: + - pos: -75.5,19.5 + parent: 1 + type: Transform + - uid: 5971 + components: + - pos: -75.5,18.5 + parent: 1 + type: Transform + - uid: 5973 + components: + - pos: 0.5,48.5 + parent: 1 + type: Transform + - uid: 5974 + components: + - pos: -75.5,17.5 + parent: 1 + type: Transform + - uid: 5975 + components: + - pos: -75.5,23.5 + parent: 1 + type: Transform + - uid: 5976 + components: + - pos: -77.5,23.5 + parent: 1 + type: Transform + - uid: 5977 + components: + - pos: -78.5,23.5 + parent: 1 + type: Transform + - uid: 5978 + components: + - pos: -64.5,59.5 + parent: 1 + type: Transform + - uid: 5980 + components: + - rot: -1.5707963267948966 rad + pos: 13.5,47.5 + parent: 1 + type: Transform + - uid: 5982 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,47.5 + parent: 1 + type: Transform + - uid: 5983 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,47.5 + parent: 1 + type: Transform + - uid: 5985 + components: + - rot: -1.5707963267948966 rad + pos: 12.5,47.5 + parent: 1 + type: Transform + - uid: 5988 + components: + - pos: -78.5,22.5 + parent: 1 + type: Transform + - uid: 5989 + components: + - pos: -78.5,21.5 + parent: 1 + type: Transform + - uid: 5990 + components: + - pos: -80.5,21.5 + parent: 1 + type: Transform + - uid: 5991 + components: + - pos: -72.5,24.5 + parent: 1 + type: Transform + - uid: 5992 + components: + - pos: -72.5,30.5 + parent: 1 + type: Transform + - uid: 5993 + components: + - pos: -78.5,28.5 + parent: 1 + type: Transform + - uid: 5994 + components: + - pos: -80.5,28.5 + parent: 1 + type: Transform + - uid: 5995 + components: + - pos: -72.5,29.5 + parent: 1 + type: Transform + - uid: 5997 + components: + - pos: -72.5,31.5 + parent: 1 + type: Transform + - uid: 5999 + components: + - pos: 5.5,48.5 + parent: 1 + type: Transform + - uid: 6000 + components: + - pos: -66.5,18.5 + parent: 1 + type: Transform + - uid: 6001 + components: + - pos: -72.5,19.5 + parent: 1 + type: Transform + - uid: 6002 + components: + - pos: -63.5,18.5 + parent: 1 + type: Transform + - uid: 6003 + components: + - pos: -72.5,18.5 + parent: 1 + type: Transform + - uid: 6004 + components: + - pos: 6.5,49.5 + parent: 1 + type: Transform + - uid: 6005 + components: + - pos: 5.5,51.5 + parent: 1 + type: Transform + - uid: 6007 + components: + - pos: 5.5,49.5 + parent: 1 + type: Transform + - uid: 6009 + components: + - pos: -72.5,23.5 + parent: 1 + type: Transform + - uid: 6010 + components: + - pos: -70.5,27.5 + parent: 1 + type: Transform + - uid: 6014 + components: + - pos: -71.5,18.5 + parent: 1 + type: Transform + - uid: 6015 + components: + - pos: -81.5,21.5 + parent: 1 + type: Transform + - uid: 6021 + components: + - pos: -82.5,21.5 + parent: 1 + type: Transform + - uid: 6022 + components: + - pos: -86.5,22.5 + parent: 1 + type: Transform + - uid: 6025 + components: + - pos: -85.5,22.5 + parent: 1 + type: Transform + - uid: 6026 + components: + - pos: 8.5,49.5 + parent: 1 + type: Transform + - uid: 6028 + components: + - pos: -77.5,27.5 + parent: 1 + type: Transform + - uid: 6029 + components: + - pos: 11.5,49.5 + parent: 1 + type: Transform + - uid: 6030 + components: + - pos: -83.5,21.5 + parent: 1 + type: Transform + - uid: 6031 + components: + - pos: -83.5,22.5 + parent: 1 + type: Transform + - uid: 6032 + components: + - pos: -75.5,20.5 + parent: 1 + type: Transform + - uid: 6033 + components: + - pos: -64.5,18.5 + parent: 1 + type: Transform + - uid: 6034 + components: + - pos: 9.5,52.5 + parent: 1 + type: Transform + - uid: 6035 + components: + - pos: 9.5,51.5 + parent: 1 + type: Transform + - uid: 6037 + components: + - pos: -65.5,18.5 + parent: 1 + type: Transform + - uid: 6038 + components: + - pos: -62.5,23.5 + parent: 1 + type: Transform + - uid: 6039 + components: + - pos: -76.5,23.5 + parent: 1 + type: Transform + - uid: 6047 + components: + - pos: -75.5,22.5 + parent: 1 + type: Transform + - uid: 6048 + components: + - pos: -62.5,22.5 + parent: 1 + type: Transform + - uid: 6049 + components: + - pos: -62.5,21.5 + parent: 1 + type: Transform + - uid: 6050 + components: + - pos: -62.5,20.5 + parent: 1 + type: Transform + - uid: 6051 + components: + - pos: -62.5,19.5 + parent: 1 + type: Transform + - uid: 6052 + components: + - pos: -62.5,18.5 + parent: 1 + type: Transform + - uid: 6053 + components: + - pos: -67.5,18.5 + parent: 1 + type: Transform + - uid: 6054 + components: + - pos: -72.5,32.5 + parent: 1 + type: Transform + - uid: 6055 + components: + - pos: -73.5,10.5 + parent: 1 + type: Transform + - uid: 6057 + components: + - pos: -75.5,57.5 + parent: 1 + type: Transform + - uid: 6059 + components: + - pos: -76.5,57.5 + parent: 1 + type: Transform + - uid: 6060 + components: + - pos: -77.5,57.5 + parent: 1 + type: Transform + - uid: 6061 + components: + - pos: -78.5,57.5 + parent: 1 + type: Transform + - uid: 6062 + components: + - pos: -78.5,56.5 + parent: 1 + type: Transform + - uid: 6063 + components: + - pos: -78.5,52.5 + parent: 1 + type: Transform + - uid: 6064 + components: + - pos: -78.5,53.5 + parent: 1 + type: Transform + - uid: 6079 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,44.5 + parent: 1 + type: Transform + - uid: 6254 + components: + - pos: -78.5,55.5 + parent: 1 + type: Transform + - uid: 6256 + components: + - pos: -78.5,54.5 + parent: 1 + type: Transform + - uid: 6266 + components: + - pos: -82.5,28.5 + parent: 1 + type: Transform + - uid: 6267 + components: + - pos: -83.5,28.5 + parent: 1 + type: Transform + - uid: 6268 + components: + - pos: -86.5,28.5 + parent: 1 + type: Transform + - uid: 6269 + components: + - pos: -85.5,28.5 + parent: 1 + type: Transform + - uid: 6270 + components: + - pos: -76.5,17.5 + parent: 1 + type: Transform + - uid: 6303 + components: + - pos: -78.5,17.5 + parent: 1 + type: Transform + - uid: 6304 + components: + - pos: -77.5,17.5 + parent: 1 + type: Transform + - uid: 6305 + components: + - pos: -79.5,17.5 + parent: 1 + type: Transform + - uid: 6306 + components: + - pos: -80.5,17.5 + parent: 1 + type: Transform + - uid: 6309 + components: + - pos: -81.5,17.5 + parent: 1 + type: Transform + - uid: 6310 + components: + - pos: -82.5,17.5 + parent: 1 + type: Transform + - uid: 6311 + components: + - pos: -83.5,17.5 + parent: 1 + type: Transform + - uid: 6312 + components: + - pos: -83.5,18.5 + parent: 1 + type: Transform + - uid: 6340 + components: + - pos: -83.5,20.5 + parent: 1 + type: Transform + - uid: 6344 + components: + - rot: 3.141592653589793 rad + pos: -5.5,56.5 + parent: 1 + type: Transform + - uid: 6345 + components: + - pos: -83.5,19.5 + parent: 1 + type: Transform + - uid: 6346 + components: + - pos: -83.5,29.5 + parent: 1 + type: Transform + - uid: 6347 + components: + - pos: -83.5,30.5 + parent: 1 + type: Transform + - uid: 6348 + components: + - pos: -83.5,31.5 + parent: 1 + type: Transform + - uid: 6366 + components: + - rot: 3.141592653589793 rad + pos: -13.5,58.5 + parent: 1 + type: Transform + - uid: 6367 + components: + - pos: -84.5,31.5 + parent: 1 + type: Transform + - uid: 6373 + components: + - rot: 3.141592653589793 rad + pos: -20.5,58.5 + parent: 1 + type: Transform + - uid: 6377 + components: + - pos: -85.5,31.5 + parent: 1 + type: Transform + - uid: 6398 + components: + - pos: -86.5,31.5 + parent: 1 + type: Transform + - uid: 6399 + components: + - pos: -86.5,29.5 + parent: 1 + type: Transform + - uid: 6402 + components: + - pos: -84.5,19.5 + parent: 1 + type: Transform + - uid: 6413 + components: + - pos: -85.5,19.5 + parent: 1 + type: Transform + - uid: 6416 + components: + - pos: -86.5,19.5 + parent: 1 + type: Transform + - uid: 6417 + components: + - pos: -86.5,21.5 + parent: 1 + type: Transform + - uid: 6418 + components: + - pos: -75.5,31.5 + parent: 1 + type: Transform + - uid: 6419 + components: + - pos: -75.5,32.5 + parent: 1 + type: Transform + - uid: 6420 + components: + - pos: -64.5,35.5 + parent: 1 + type: Transform + - uid: 6421 + components: + - pos: -75.5,30.5 + parent: 1 + type: Transform + - uid: 6422 + components: + - pos: -75.5,27.5 + parent: 1 + type: Transform + - uid: 6423 + components: + - pos: -75.5,28.5 + parent: 1 + type: Transform + - uid: 6424 + components: + - pos: 27.5,22.5 + parent: 1 + type: Transform + - uid: 6425 + components: + - pos: 28.5,22.5 + parent: 1 + type: Transform + - uid: 6426 + components: + - pos: -75.5,29.5 + parent: 1 + type: Transform + - uid: 6427 + components: + - pos: -76.5,27.5 + parent: 1 + type: Transform + - uid: 6428 + components: + - pos: -78.5,47.5 + parent: 1 + type: Transform + - uid: 6475 + components: + - pos: -77.5,50.5 + parent: 1 + type: Transform + - uid: 6476 + components: + - pos: -78.5,49.5 + parent: 1 + type: Transform + - uid: 6477 + components: + - pos: -78.5,50.5 + parent: 1 + type: Transform + - uid: 6478 + components: + - pos: -78.5,51.5 + parent: 1 + type: Transform + - uid: 6479 + components: + - pos: -73.5,9.5 + parent: 1 + type: Transform + - uid: 6480 + components: + - pos: -73.5,8.5 + parent: 1 + type: Transform + - uid: 6481 + components: + - pos: -76.5,41.5 + parent: 1 + type: Transform + - uid: 6482 + components: + - pos: -72.5,28.5 + parent: 1 + type: Transform + - uid: 6483 + components: + - pos: -72.5,27.5 + parent: 1 + type: Transform + - uid: 6484 + components: + - pos: -75.5,16.5 + parent: 1 + type: Transform + - uid: 6485 + components: + - pos: -75.5,15.5 + parent: 1 + type: Transform + - uid: 6486 + components: + - pos: -75.5,14.5 + parent: 1 + type: Transform + - uid: 6487 + components: + - pos: -74.5,14.5 + parent: 1 + type: Transform + - uid: 6488 + components: + - pos: -73.5,14.5 + parent: 1 + type: Transform + - uid: 6489 + components: + - pos: -72.5,14.5 + parent: 1 + type: Transform + - uid: 6490 + components: + - pos: -71.5,14.5 + parent: 1 + type: Transform + - uid: 6491 + components: + - pos: -70.5,14.5 + parent: 1 + type: Transform + - uid: 6492 + components: + - pos: -69.5,14.5 + parent: 1 + type: Transform + - uid: 6493 + components: + - pos: -68.5,14.5 + parent: 1 + type: Transform + - uid: 6509 + components: + - pos: -67.5,14.5 + parent: 1 + type: Transform + - uid: 6556 + components: + - pos: -67.5,15.5 + parent: 1 + type: Transform + - uid: 6649 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,47.5 + parent: 1 + type: Transform + - uid: 6650 + components: + - pos: -67.5,16.5 + parent: 1 + type: Transform + - uid: 6662 + components: + - pos: -67.5,17.5 + parent: 1 + type: Transform + - uid: 6663 + components: + - pos: -85.5,32.5 + parent: 1 + type: Transform + - uid: 6664 + components: + - pos: -26.5,57.5 + parent: 1 + type: Transform + - uid: 6665 + components: + - pos: -75.5,33.5 + parent: 1 + type: Transform + - uid: 6666 + components: + - pos: -74.5,36.5 + parent: 1 + type: Transform + - uid: 6667 + components: + - pos: -68.5,35.5 + parent: 1 + type: Transform + - uid: 6677 + components: + - pos: -64.5,60.5 + parent: 1 + type: Transform + - uid: 6679 + components: + - pos: -64.5,61.5 + parent: 1 + type: Transform + - uid: 6680 + components: + - pos: -63.5,61.5 + parent: 1 + type: Transform + - uid: 6681 + components: + - pos: -62.5,61.5 + parent: 1 + type: Transform + - uid: 6683 + components: + - pos: -68.5,57.5 + parent: 1 + type: Transform + - uid: 6684 + components: + - pos: -67.5,58.5 + parent: 1 + type: Transform + - uid: 6688 + components: + - pos: -71.5,27.5 + parent: 1 + type: Transform + - uid: 6689 + components: + - pos: -70.5,24.5 + parent: 1 + type: Transform + - uid: 6690 + components: + - pos: -65.5,35.5 + parent: 1 + type: Transform + - uid: 6691 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,48.5 + parent: 1 + type: Transform + - uid: 6692 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,48.5 + parent: 1 + type: Transform + - uid: 6694 + components: + - rot: 1.5707963267948966 rad + pos: -31.5,48.5 + parent: 1 + type: Transform + - uid: 6697 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,48.5 + parent: 1 + type: Transform + - uid: 6700 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,46.5 + parent: 1 + type: Transform + - uid: 6702 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,44.5 + parent: 1 + type: Transform + - uid: 6707 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,39.5 + parent: 1 + type: Transform + - uid: 6708 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,38.5 + parent: 1 + type: Transform + - uid: 6712 + components: + - rot: 1.5707963267948966 rad + pos: -26.5,34.5 + parent: 1 + type: Transform + - uid: 6713 + components: + - rot: 1.5707963267948966 rad + pos: -25.5,35.5 + parent: 1 + type: Transform + - uid: 6715 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,34.5 + parent: 1 + type: Transform + - uid: 6716 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,34.5 + parent: 1 + type: Transform + - uid: 6717 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,34.5 + parent: 1 + type: Transform + - uid: 6720 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,39.5 + parent: 1 + type: Transform + - uid: 6721 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,38.5 + parent: 1 + type: Transform + - uid: 6723 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,40.5 + parent: 1 + type: Transform + - uid: 6725 + components: + - rot: 1.5707963267948966 rad + pos: -27.5,39.5 + parent: 1 + type: Transform + - uid: 6726 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,40.5 + parent: 1 + type: Transform + - uid: 6727 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,34.5 + parent: 1 + type: Transform + - uid: 6728 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,34.5 + parent: 1 + type: Transform + - uid: 6729 + components: + - rot: 1.5707963267948966 rad + pos: -28.5,34.5 + parent: 1 + type: Transform + - uid: 6734 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,41.5 + parent: 1 + type: Transform + - uid: 6736 + components: + - rot: 1.5707963267948966 rad + pos: -29.5,43.5 + parent: 1 + type: Transform + - uid: 6737 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,41.5 + parent: 1 + type: Transform + - uid: 6738 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,42.5 + parent: 1 + type: Transform + - uid: 6742 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,40.5 + parent: 1 + type: Transform + - uid: 6745 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,40.5 + parent: 1 + type: Transform + - uid: 6747 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,39.5 + parent: 1 + type: Transform + - uid: 6751 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,35.5 + parent: 1 + type: Transform + - uid: 6752 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,34.5 + parent: 1 + type: Transform + - uid: 6759 + components: + - rot: 1.5707963267948966 rad + pos: -43.5,34.5 + parent: 1 + type: Transform + - uid: 6762 + components: + - rot: 1.5707963267948966 rad + pos: -32.5,34.5 + parent: 1 + type: Transform + - uid: 6763 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,34.5 + parent: 1 + type: Transform + - uid: 6765 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,40.5 + parent: 1 + type: Transform + - uid: 6767 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,43.5 + parent: 1 + type: Transform + - uid: 6769 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,45.5 + parent: 1 + type: Transform + - uid: 6770 + components: + - rot: 1.5707963267948966 rad + pos: -30.5,47.5 + parent: 1 + type: Transform + - uid: 6771 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,48.5 + parent: 1 + type: Transform + - uid: 6774 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,48.5 + parent: 1 + type: Transform + - uid: 6775 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,48.5 + parent: 1 + type: Transform + - uid: 6778 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,52.5 + parent: 1 + type: Transform + - uid: 6779 + components: + - rot: 1.5707963267948966 rad + pos: -33.5,51.5 + parent: 1 + type: Transform + - uid: 6781 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,42.5 + parent: 1 + type: Transform + - uid: 6785 + components: + - pos: -69.5,36.5 + parent: 1 + type: Transform + - uid: 6786 + components: + - pos: 17.5,36.5 + parent: 1 + type: Transform + - uid: 6788 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,47.5 + parent: 1 + type: Transform + - uid: 6792 + components: + - pos: -23.5,-9.5 + parent: 1 + type: Transform + - uid: 6795 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,53.5 + parent: 1 + type: Transform + - uid: 6796 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,53.5 + parent: 1 + type: Transform + - uid: 6798 + components: + - rot: 1.5707963267948966 rad + pos: -37.5,53.5 + parent: 1 + type: Transform + - uid: 6799 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,53.5 + parent: 1 + type: Transform + - uid: 6801 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,51.5 + parent: 1 + type: Transform + - uid: 6803 + components: + - rot: 1.5707963267948966 rad + pos: -38.5,49.5 + parent: 1 + type: Transform + - uid: 6804 + components: + - pos: -26.5,-9.5 + parent: 1 + type: Transform + - uid: 6809 + components: + - pos: -66.5,58.5 + parent: 1 + type: Transform + - uid: 6810 + components: + - pos: -26.5,-11.5 + parent: 1 + type: Transform + - uid: 6826 + components: + - pos: -26.5,52.5 + parent: 1 + type: Transform + - uid: 6827 + components: + - pos: -27.5,51.5 + parent: 1 + type: Transform + - uid: 6828 + components: + - pos: -29.5,51.5 + parent: 1 + type: Transform + - uid: 6829 + components: + - pos: -30.5,54.5 + parent: 1 + type: Transform + - uid: 6830 + components: + - pos: 16.5,36.5 + parent: 1 + type: Transform + - uid: 6831 + components: + - pos: 20.5,36.5 + parent: 1 + type: Transform + - uid: 6832 + components: + - pos: -66.5,59.5 + parent: 1 + type: Transform + - uid: 6845 + components: + - pos: -66.5,60.5 + parent: 1 + type: Transform + - uid: 6846 + components: + - pos: -65.5,60.5 + parent: 1 + type: Transform + - uid: 6847 + components: + - pos: -68.5,58.5 + parent: 1 + type: Transform + - uid: 6848 + components: + - pos: -69.5,57.5 + parent: 1 + type: Transform + - uid: 6849 + components: + - pos: -71.5,57.5 + parent: 1 + type: Transform + - uid: 6851 + components: + - pos: -72.5,57.5 + parent: 1 + type: Transform + - uid: 6887 + components: + - pos: -22.5,-10.5 + parent: 1 + type: Transform + - uid: 6960 + components: + - pos: -43.5,53.5 + parent: 1 + type: Transform + - uid: 7033 + components: + - pos: -55.5,45.5 + parent: 1 + type: Transform + - uid: 7034 + components: + - pos: -55.5,44.5 + parent: 1 + type: Transform + - uid: 7036 + components: + - pos: -55.5,42.5 + parent: 1 + type: Transform + - uid: 7038 + components: + - pos: -55.5,40.5 + parent: 1 + type: Transform + - uid: 7040 + components: + - pos: -55.5,38.5 + parent: 1 + type: Transform + - uid: 7041 + components: + - pos: -54.5,34.5 + parent: 1 + type: Transform + - uid: 7043 + components: + - pos: -54.5,37.5 + parent: 1 + type: Transform + - uid: 7047 + components: + - pos: -52.5,34.5 + parent: 1 + type: Transform + - uid: 7048 + components: + - pos: -53.5,34.5 + parent: 1 + type: Transform + - uid: 7050 + components: + - pos: -49.5,35.5 + parent: 1 + type: Transform + - uid: 7053 + components: + - pos: -49.5,38.5 + parent: 1 + type: Transform + - uid: 7056 + components: + - pos: -49.5,41.5 + parent: 1 + type: Transform + - uid: 7057 + components: + - pos: -49.5,42.5 + parent: 1 + type: Transform + - uid: 7059 + components: + - pos: -51.5,42.5 + parent: 1 + type: Transform + - uid: 7061 + components: + - pos: -53.5,42.5 + parent: 1 + type: Transform + - uid: 7064 + components: + - pos: -53.5,39.5 + parent: 1 + type: Transform + - uid: 7065 + components: + - pos: -53.5,38.5 + parent: 1 + type: Transform + - uid: 7068 + components: + - pos: -50.5,39.5 + parent: 1 + type: Transform + - uid: 7107 + components: + - pos: -22.5,-9.5 + parent: 1 + type: Transform + - uid: 7137 + components: + - pos: -26.5,-10.5 + parent: 1 + type: Transform + - uid: 7138 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,41.5 + parent: 1 + type: Transform + - uid: 7139 + components: + - pos: -25.5,-9.5 + parent: 1 + type: Transform + - uid: 7141 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,48.5 + parent: 1 + type: Transform + - uid: 7188 + components: + - pos: -30.5,52.5 + parent: 1 + type: Transform + - uid: 7389 + components: + - pos: -30.5,55.5 + parent: 1 + type: Transform + - uid: 7390 + components: + - pos: -28.5,51.5 + parent: 1 + type: Transform + - uid: 7408 + components: + - pos: -25.5,52.5 + parent: 1 + type: Transform + - uid: 7517 + components: + - pos: -69.5,32.5 + parent: 1 + type: Transform + - uid: 7923 + components: + - pos: -50.5,-14.5 + parent: 1 + type: Transform + - uid: 8059 + components: + - pos: 26.5,29.5 + parent: 1 + type: Transform + - uid: 8109 + components: + - pos: -24.5,58.5 + parent: 1 + type: Transform + - uid: 8114 + components: + - pos: 17.5,-9.5 + parent: 1 + type: Transform + - uid: 8191 + components: + - pos: 25.5,29.5 + parent: 1 + type: Transform + - uid: 8214 + components: + - pos: 29.5,25.5 + parent: 1 + type: Transform + - uid: 8215 + components: + - pos: 29.5,24.5 + parent: 1 + type: Transform + - uid: 8224 + components: + - pos: -74.5,54.5 + parent: 1 + type: Transform + - uid: 8235 + components: + - pos: 12.5,-8.5 + parent: 1 + type: Transform + - uid: 8240 + components: + - rot: 1.5707963267948966 rad + pos: -8.5,17.5 + parent: 1 + type: Transform + - uid: 8264 + components: + - pos: -42.5,53.5 + parent: 1 + type: Transform + - uid: 9157 + components: + - rot: 1.5707963267948966 rad + pos: -67.5,46.5 + parent: 1 + type: Transform + - uid: 9159 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,49.5 + parent: 1 + type: Transform + - uid: 9161 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,51.5 + parent: 1 + type: Transform + - uid: 9163 + components: + - pos: -69.5,46.5 + parent: 1 + type: Transform + - uid: 9166 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,56.5 + parent: 1 + type: Transform + - uid: 9177 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,46.5 + parent: 1 + type: Transform + - uid: 9179 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,47.5 + parent: 1 + type: Transform + - uid: 9181 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,49.5 + parent: 1 + type: Transform + - uid: 9182 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,50.5 + parent: 1 + type: Transform + - uid: 9184 + components: + - rot: 1.5707963267948966 rad + pos: -70.5,50.5 + parent: 1 + type: Transform + - uid: 9191 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,50.5 + parent: 1 + type: Transform + - uid: 9193 + components: + - rot: 1.5707963267948966 rad + pos: -74.5,51.5 + parent: 1 + type: Transform + - uid: 9194 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,38.5 + parent: 1 + type: Transform + - uid: 9202 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,44.5 + parent: 1 + type: Transform + - uid: 9206 + components: + - rot: -1.5707963267948966 rad + pos: -62.5,46.5 + parent: 1 + type: Transform + - uid: 9207 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,43.5 + parent: 1 + type: Transform + - uid: 9213 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,45.5 + parent: 1 + type: Transform + - uid: 9216 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,42.5 + parent: 1 + type: Transform + - uid: 9218 + components: + - rot: -1.5707963267948966 rad + pos: -60.5,46.5 + parent: 1 + type: Transform + - uid: 9220 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,38.5 + parent: 1 + type: Transform + - uid: 9221 + components: + - pos: -59.5,37.5 + parent: 1 + type: Transform + - uid: 9225 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,37.5 + parent: 1 + type: Transform + - uid: 9230 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,45.5 + parent: 1 + type: Transform + - uid: 9232 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,42.5 + parent: 1 + type: Transform + - uid: 9233 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,43.5 + parent: 1 + type: Transform + - uid: 9235 + components: + - pos: -68.5,45.5 + parent: 1 + type: Transform + - uid: 9236 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,43.5 + parent: 1 + type: Transform + - uid: 9237 + components: + - pos: -68.5,45.5 + parent: 1 + type: Transform + - uid: 9238 + components: + - rot: 1.5707963267948966 rad + pos: -73.5,41.5 + parent: 1 + type: Transform + - uid: 9240 + components: + - rot: 1.5707963267948966 rad + pos: -68.5,39.5 + parent: 1 + type: Transform + - uid: 9243 + components: + - pos: -68.5,38.5 + parent: 1 + type: Transform + - uid: 9244 + components: + - rot: 1.5707963267948966 rad + pos: -71.5,38.5 + parent: 1 + type: Transform + - uid: 9270 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,38.5 + parent: 1 + type: Transform + - uid: 9276 + components: + - rot: -1.5707963267948966 rad + pos: -65.5,46.5 + parent: 1 + type: Transform + - uid: 9277 + components: + - rot: -1.5707963267948966 rad + pos: -64.5,46.5 + parent: 1 + type: Transform + - uid: 9278 + components: + - rot: -1.5707963267948966 rad + pos: -61.5,37.5 + parent: 1 + type: Transform + - uid: 9279 + components: + - rot: -1.5707963267948966 rad + pos: -62.5,37.5 + parent: 1 + type: Transform + - uid: 9280 + components: + - rot: -1.5707963267948966 rad + pos: -63.5,37.5 + parent: 1 + type: Transform + - uid: 9289 + components: + - pos: -59.5,35.5 + parent: 1 + type: Transform + - uid: 9290 + components: + - pos: -59.5,34.5 + parent: 1 + type: Transform + - uid: 9291 + components: + - pos: -61.5,34.5 + parent: 1 + type: Transform + - uid: 9299 + components: + - pos: -61.5,30.5 + parent: 1 + type: Transform + - uid: 9895 + components: + - pos: -72.5,7.5 + parent: 1 + type: Transform + - uid: 9896 + components: + - pos: -71.5,7.5 + parent: 1 + type: Transform + - uid: 9898 + components: + - pos: -59.5,28.5 + parent: 1 + type: Transform + - uid: 9900 + components: + - pos: -59.5,26.5 + parent: 1 + type: Transform + - uid: 9904 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,40.5 + parent: 1 + type: Transform + - uid: 9905 + components: + - pos: -59.5,21.5 + parent: 1 + type: Transform + - uid: 9907 + components: + - pos: -59.5,19.5 + parent: 1 + type: Transform + - uid: 9908 + components: + - pos: -59.5,18.5 + parent: 1 + type: Transform + - uid: 9909 + components: + - pos: -59.5,15.5 + parent: 1 + type: Transform + - uid: 9910 + components: + - pos: -59.5,16.5 + parent: 1 + type: Transform + - uid: 9917 + components: + - pos: -59.5,9.5 + parent: 1 + type: Transform + - uid: 9918 + components: + - pos: -59.5,8.5 + parent: 1 + type: Transform + - uid: 9919 + components: + - pos: -68.5,13.5 + parent: 1 + type: Transform + - uid: 9921 + components: + - pos: -68.5,11.5 + parent: 1 + type: Transform + - uid: 9922 + components: + - pos: -68.5,10.5 + parent: 1 + type: Transform + - uid: 9924 + components: + - pos: -68.5,8.5 + parent: 1 + type: Transform + - uid: 9927 + components: + - pos: -62.5,9.5 + parent: 1 + type: Transform + - uid: 9929 + components: + - pos: -64.5,9.5 + parent: 1 + type: Transform + - uid: 9933 + components: + - pos: -65.5,12.5 + parent: 1 + type: Transform + - uid: 9934 + components: + - pos: -65.5,13.5 + parent: 1 + type: Transform + - uid: 9935 + components: + - pos: -65.5,14.5 + parent: 1 + type: Transform + - uid: 9937 + components: + - pos: -64.5,15.5 + parent: 1 + type: Transform + - uid: 9939 + components: + - pos: -62.5,15.5 + parent: 1 + type: Transform + - uid: 9941 + components: + - pos: -60.5,15.5 + parent: 1 + type: Transform + - uid: 10315 + components: + - pos: -16.5,18.5 + parent: 1 + type: Transform + - uid: 10316 + components: + - pos: -17.5,18.5 + parent: 1 + type: Transform + - uid: 10317 + components: + - pos: -17.5,16.5 + parent: 1 + type: Transform + - uid: 10436 + components: + - rot: 1.5707963267948966 rad + pos: -49.5,13.5 + parent: 1 + type: Transform + - uid: 10437 + components: + - rot: 1.5707963267948966 rad + pos: -50.5,13.5 + parent: 1 + type: Transform + - uid: 10438 + components: + - rot: 1.5707963267948966 rad + pos: -48.5,13.5 + parent: 1 + type: Transform + - uid: 10439 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,7.5 + parent: 1 + type: Transform + - uid: 10442 + components: + - rot: 1.5707963267948966 rad + pos: -46.5,13.5 + parent: 1 + type: Transform + - uid: 10444 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,12.5 + parent: 1 + type: Transform + - uid: 10447 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,10.5 + parent: 1 + type: Transform + - uid: 10448 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,11.5 + parent: 1 + type: Transform + - uid: 10449 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,8.5 + parent: 1 + type: Transform + - uid: 10451 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,8.5 + parent: 1 + type: Transform + - uid: 10452 + components: + - rot: 1.5707963267948966 rad + pos: -47.5,13.5 + parent: 1 + type: Transform + - uid: 10454 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,11.5 + parent: 1 + type: Transform + - uid: 10455 + components: + - rot: 1.5707963267948966 rad + pos: -53.5,11.5 + parent: 1 + type: Transform + - uid: 10457 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,7.5 + parent: 1 + type: Transform + - uid: 10458 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,9.5 + parent: 1 + type: Transform + - uid: 11052 + components: + - rot: 1.5707963267948966 rad + pos: -76.5,51.5 + parent: 1 + type: Transform + - uid: 11886 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,12.5 + parent: 1 + type: Transform + - uid: 11887 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,11.5 + parent: 1 + type: Transform + - uid: 14010 + components: + - pos: -68.5,9.5 + parent: 1 + type: Transform +- proto: WallSolidRust + entities: + - uid: 17 + components: + - pos: -5.5,3.5 + parent: 1 + type: Transform + - uid: 18 + components: + - pos: -14.5,0.5 + parent: 1 + type: Transform + - uid: 19 + components: + - pos: -13.5,-0.5 + parent: 1 + type: Transform + - uid: 25 + components: + - pos: 5.5,-6.5 + parent: 1 + type: Transform + - uid: 30 + components: + - pos: -11.5,-0.5 + parent: 1 + type: Transform + - uid: 32 + components: + - pos: -10.5,-0.5 + parent: 1 + type: Transform + - uid: 33 + components: + - pos: 3.5,-1.5 + parent: 1 + type: Transform + - uid: 40 + components: + - pos: 3.5,1.5 + parent: 1 + type: Transform + - uid: 44 + components: + - pos: 3.5,-0.5 + parent: 1 + type: Transform + - uid: 46 + components: + - pos: -11.5,3.5 + parent: 1 + type: Transform + - uid: 49 + components: + - pos: 1.5,-6.5 + parent: 1 + type: Transform + - uid: 51 + components: + - pos: 1.5,-3.5 + parent: 1 + type: Transform + - uid: 52 + components: + - pos: 0.5,-4.5 + parent: 1 + type: Transform + - uid: 56 + components: + - pos: 4.5,-6.5 + parent: 1 + type: Transform + - uid: 83 + components: + - pos: 0.5,-3.5 + parent: 1 + type: Transform + - uid: 109 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,-10.5 + parent: 1 + type: Transform + - uid: 115 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,-13.5 + parent: 1 + type: Transform + - uid: 173 + components: + - pos: 2.5,-7.5 + parent: 1 + type: Transform + - uid: 181 + components: + - pos: -14.5,2.5 + parent: 1 + type: Transform + - uid: 193 + components: + - pos: -0.5,-12.5 + parent: 1 + type: Transform + - uid: 197 + components: + - pos: 3.5,-13.5 + parent: 1 + type: Transform + - uid: 467 + components: + - rot: 3.141592653589793 rad + pos: 6.5,-3.5 + parent: 1 + type: Transform + - uid: 470 + components: + - pos: 6.5,3.5 + parent: 1 + type: Transform + - uid: 476 + components: + - rot: 3.141592653589793 rad + pos: 7.5,-3.5 + parent: 1 + type: Transform + - uid: 479 + components: + - pos: 9.5,-4.5 + parent: 1 + type: Transform + - uid: 480 + components: + - pos: 13.5,-3.5 + parent: 1 + type: Transform + - uid: 481 + components: + - pos: 7.5,3.5 + parent: 1 + type: Transform + - uid: 484 + components: + - pos: 9.5,2.5 + parent: 1 + type: Transform + - uid: 489 + components: + - pos: 8.5,-0.5 + parent: 1 + type: Transform + - uid: 490 + components: + - pos: 12.5,-4.5 + parent: 1 + type: Transform + - uid: 513 + components: + - pos: 7.5,-0.5 + parent: 1 + type: Transform + - uid: 529 + components: + - pos: 16.5,-6.5 + parent: 1 + type: Transform + - uid: 576 + components: + - pos: 7.5,-6.5 + parent: 1 + type: Transform + - uid: 618 + components: + - pos: -4.5,0.5 + parent: 1 + type: Transform + - uid: 633 + components: + - pos: 18.5,1.5 + parent: 1 + type: Transform + - uid: 637 + components: + - pos: 16.5,4.5 + parent: 1 + type: Transform + - uid: 640 + components: + - pos: 13.5,4.5 + parent: 1 + type: Transform + - uid: 645 + components: + - pos: 16.5,-3.5 + parent: 1 + type: Transform + - uid: 650 + components: + - pos: 20.5,3.5 + parent: 1 + type: Transform + - uid: 652 + components: + - pos: 21.5,2.5 + parent: 1 + type: Transform + - uid: 653 + components: + - pos: 21.5,1.5 + parent: 1 + type: Transform + - uid: 657 + components: + - pos: 12.5,1.5 + parent: 1 + type: Transform + - uid: 658 + components: + - pos: 21.5,-3.5 + parent: 1 + type: Transform + - uid: 661 + components: + - pos: 22.5,-1.5 + parent: 1 + type: Transform + - uid: 663 + components: + - pos: 18.5,-0.5 + parent: 1 + type: Transform + - uid: 673 + components: + - pos: 25.5,-6.5 + parent: 1 + type: Transform + - uid: 675 + components: + - pos: 24.5,2.5 + parent: 1 + type: Transform + - uid: 679 + components: + - pos: 25.5,-0.5 + parent: 1 + type: Transform + - uid: 683 + components: + - pos: 27.5,-3.5 + parent: 1 + type: Transform + - uid: 684 + components: + - pos: 29.5,-3.5 + parent: 1 + type: Transform + - uid: 686 + components: + - pos: -0.5,-0.5 + parent: 1 + type: Transform + - uid: 687 + components: + - pos: 26.5,-3.5 + parent: 1 + type: Transform + - uid: 689 + components: + - pos: 29.5,-6.5 + parent: 1 + type: Transform + - uid: 690 + components: + - pos: 26.5,-8.5 + parent: 1 + type: Transform + - uid: 696 + components: + - pos: 28.5,0.5 + parent: 1 + type: Transform + - uid: 699 + components: + - pos: 17.5,4.5 + parent: 1 + type: Transform + - uid: 995 + components: + - pos: 24.5,21.5 + parent: 1 + type: Transform + - uid: 999 + components: + - pos: 20.5,11.5 + parent: 1 + type: Transform + - uid: 1003 + components: + - pos: 21.5,27.5 + parent: 1 + type: Transform + - uid: 1009 + components: + - pos: 20.5,9.5 + parent: 1 + type: Transform + - uid: 1033 + components: + - pos: 23.5,10.5 + parent: 1 + type: Transform + - uid: 1034 + components: + - pos: 24.5,8.5 + parent: 1 + type: Transform + - uid: 1037 + components: + - pos: 22.5,10.5 + parent: 1 + type: Transform + - uid: 1040 + components: + - pos: 21.5,7.5 + parent: 1 + type: Transform + - uid: 1042 + components: + - pos: 20.5,33.5 + parent: 1 + type: Transform + - uid: 1055 + components: + - pos: 21.5,20.5 + parent: 1 + type: Transform + - uid: 1058 + components: + - pos: 4.5,7.5 + parent: 1 + type: Transform + - uid: 1059 + components: + - pos: 5.5,7.5 + parent: 1 + type: Transform + - uid: 1069 + components: + - pos: -16.5,-0.5 + parent: 1 + type: Transform + - uid: 1070 + components: + - pos: -18.5,2.5 + parent: 1 + type: Transform + - uid: 1072 + components: + - pos: -16.5,2.5 + parent: 1 + type: Transform + - uid: 1073 + components: + - pos: -19.5,-6.5 + parent: 1 + type: Transform + - uid: 1077 + components: + - pos: -19.5,2.5 + parent: 1 + type: Transform + - uid: 1079 + components: + - pos: -21.5,3.5 + parent: 1 + type: Transform + - uid: 1080 + components: + - pos: -19.5,-0.5 + parent: 1 + type: Transform + - uid: 1082 + components: + - pos: -18.5,-0.5 + parent: 1 + type: Transform + - uid: 1085 + components: + - pos: -19.5,-2.5 + parent: 1 + type: Transform + - uid: 1088 + components: + - pos: -19.5,-4.5 + parent: 1 + type: Transform + - uid: 1089 + components: + - pos: -18.5,-6.5 + parent: 1 + type: Transform + - uid: 1092 + components: + - pos: -16.5,-9.5 + parent: 1 + type: Transform + - uid: 1096 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,-9.5 + parent: 1 + type: Transform + - uid: 1101 + components: + - pos: -23.5,1.5 + parent: 1 + type: Transform + - uid: 1102 + components: + - pos: -22.5,0.5 + parent: 1 + type: Transform + - uid: 1106 + components: + - pos: -22.5,-3.5 + parent: 1 + type: Transform + - uid: 1107 + components: + - pos: -15.5,-6.5 + parent: 1 + type: Transform + - uid: 1109 + components: + - pos: -22.5,-6.5 + parent: 1 + type: Transform + - uid: 1110 + components: + - pos: -22.5,-5.5 + parent: 1 + type: Transform + - uid: 1112 + components: + - pos: -25.5,-2.5 + parent: 1 + type: Transform + - uid: 1116 + components: + - pos: -25.5,-6.5 + parent: 1 + type: Transform + - uid: 1117 + components: + - pos: -25.5,-4.5 + parent: 1 + type: Transform + - uid: 1120 + components: + - pos: -27.5,-1.5 + parent: 1 + type: Transform + - uid: 1122 + components: + - pos: -27.5,2.5 + parent: 1 + type: Transform + - uid: 1126 + components: + - pos: -27.5,-3.5 + parent: 1 + type: Transform + - uid: 1133 + components: + - pos: -24.5,-0.5 + parent: 1 + type: Transform + - uid: 1137 + components: + - pos: 11.5,7.5 + parent: 1 + type: Transform + - uid: 1140 + components: + - pos: 14.5,7.5 + parent: 1 + type: Transform + - uid: 1146 + components: + - pos: 18.5,24.5 + parent: 1 + type: Transform + - uid: 1158 + components: + - pos: 8.5,21.5 + parent: 1 + type: Transform + - uid: 1159 + components: + - pos: 8.5,18.5 + parent: 1 + type: Transform + - uid: 1161 + components: + - pos: 18.5,27.5 + parent: 1 + type: Transform + - uid: 1162 + components: + - pos: 21.5,30.5 + parent: 1 + type: Transform + - uid: 1163 + components: + - pos: 13.5,26.5 + parent: 1 + type: Transform + - uid: 1164 + components: + - pos: 15.5,19.5 + parent: 1 + type: Transform + - uid: 1166 + components: + - pos: 15.5,15.5 + parent: 1 + type: Transform + - uid: 1167 + components: + - pos: 7.5,18.5 + parent: 1 + type: Transform + - uid: 1168 + components: + - pos: 21.5,21.5 + parent: 1 + type: Transform + - uid: 1169 + components: + - pos: 12.5,10.5 + parent: 1 + type: Transform + - uid: 1170 + components: + - pos: 21.5,24.5 + parent: 1 + type: Transform + - uid: 1173 + components: + - pos: 11.5,23.5 + parent: 1 + type: Transform + - uid: 1176 + components: + - pos: 12.5,12.5 + parent: 1 + type: Transform + - uid: 1178 + components: + - pos: 15.5,12.5 + parent: 1 + type: Transform + - uid: 1179 + components: + - pos: 21.5,31.5 + parent: 1 + type: Transform + - uid: 1190 + components: + - pos: 7.5,21.5 + parent: 1 + type: Transform + - uid: 1192 + components: + - pos: -0.5,41.5 + parent: 1 + type: Transform + - uid: 1193 + components: + - pos: 10.5,38.5 + parent: 1 + type: Transform + - uid: 1203 + components: + - pos: 15.5,20.5 + parent: 1 + type: Transform + - uid: 1208 + components: + - pos: 1.5,18.5 + parent: 1 + type: Transform + - uid: 1211 + components: + - pos: 4.5,18.5 + parent: 1 + type: Transform + - uid: 1223 + components: + - pos: 16.5,23.5 + parent: 1 + type: Transform + - uid: 1230 + components: + - pos: 12.5,19.5 + parent: 1 + type: Transform + - uid: 1233 + components: + - pos: 10.5,10.5 + parent: 1 + type: Transform + - uid: 1234 + components: + - pos: 8.5,10.5 + parent: 1 + type: Transform + - uid: 1236 + components: + - pos: 7.5,10.5 + parent: 1 + type: Transform + - uid: 1237 + components: + - pos: 20.5,24.5 + parent: 1 + type: Transform + - uid: 1241 + components: + - pos: 21.5,19.5 + parent: 1 + type: Transform + - uid: 1247 + components: + - pos: 15.5,13.5 + parent: 1 + type: Transform + - uid: 1249 + components: + - pos: 1.5,35.5 + parent: 1 + type: Transform + - uid: 1276 + components: + - rot: 1.5707963267948966 rad + pos: 6.5,32.5 + parent: 1 + type: Transform + - uid: 1277 + components: + - pos: 1.5,32.5 + parent: 1 + type: Transform + - uid: 1281 + components: + - pos: -0.5,35.5 + parent: 1 + type: Transform + - uid: 1283 + components: + - pos: -2.5,35.5 + parent: 1 + type: Transform + - uid: 1284 + components: + - pos: -3.5,35.5 + parent: 1 + type: Transform + - uid: 1286 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,35.5 + parent: 1 + type: Transform + - uid: 1287 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,32.5 + parent: 1 + type: Transform + - uid: 1289 + components: + - pos: 11.5,38.5 + parent: 1 + type: Transform + - uid: 1291 + components: + - pos: 1.5,34.5 + parent: 1 + type: Transform + - uid: 1293 + components: + - pos: 6.5,38.5 + parent: 1 + type: Transform + - uid: 1296 + components: + - pos: 13.5,37.5 + parent: 1 + type: Transform + - uid: 1297 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,35.5 + parent: 1 + type: Transform + - uid: 1298 + components: + - rot: 1.5707963267948966 rad + pos: 12.5,32.5 + parent: 1 + type: Transform + - uid: 1300 + components: + - rot: 1.5707963267948966 rad + pos: 5.5,36.5 + parent: 1 + type: Transform + - uid: 1301 + components: + - pos: 15.5,9.5 + parent: 1 + type: Transform + - uid: 1304 + components: + - pos: 18.5,14.5 + parent: 1 + type: Transform + - uid: 1307 + components: + - pos: 19.5,14.5 + parent: 1 + type: Transform + - uid: 1308 + components: + - pos: 21.5,16.5 + parent: 1 + type: Transform + - uid: 1311 + components: + - pos: 8.5,38.5 + parent: 1 + type: Transform + - uid: 1315 + components: + - pos: 15.5,17.5 + parent: 1 + type: Transform + - uid: 1322 + components: + - pos: 13.5,36.5 + parent: 1 + type: Transform + - uid: 1328 + components: + - pos: 10.5,21.5 + parent: 1 + type: Transform + - uid: 1330 + components: + - pos: 12.5,11.5 + parent: 1 + type: Transform + - uid: 1332 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,32.5 + parent: 1 + type: Transform + - uid: 1335 + components: + - pos: 12.5,14.5 + parent: 1 + type: Transform + - uid: 1338 + components: + - rot: -1.5707963267948966 rad + pos: -7.5,26.5 + parent: 1 + type: Transform + - uid: 1346 + components: + - rot: -1.5707963267948966 rad + pos: -9.5,26.5 + parent: 1 + type: Transform + - uid: 1348 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,26.5 + parent: 1 + type: Transform + - uid: 1355 + components: + - rot: 1.5707963267948966 rad + pos: 11.5,32.5 + parent: 1 + type: Transform + - uid: 1357 + components: + - pos: 12.5,17.5 + parent: 1 + type: Transform + - uid: 1363 + components: + - pos: 12.5,16.5 + parent: 1 + type: Transform + - uid: 1367 + components: + - pos: 4.5,35.5 + parent: 1 + type: Transform + - uid: 1370 + components: + - pos: -2.5,17.5 + parent: 1 + type: Transform + - uid: 1373 + components: + - pos: 3.5,45.5 + parent: 1 + type: Transform + - uid: 1375 + components: + - pos: 0.5,44.5 + parent: 1 + type: Transform + - uid: 1377 + components: + - pos: 5.5,43.5 + parent: 1 + type: Transform + - uid: 1379 + components: + - pos: 5.5,41.5 + parent: 1 + type: Transform + - uid: 1382 + components: + - pos: -1.5,42.5 + parent: 1 + type: Transform + - uid: 1383 + components: + - pos: -0.5,44.5 + parent: 1 + type: Transform + - uid: 1387 + components: + - pos: -1.5,40.5 + parent: 1 + type: Transform + - uid: 1389 + components: + - pos: -1.5,39.5 + parent: 1 + type: Transform + - uid: 1391 + components: + - pos: -1.5,37.5 + parent: 1 + type: Transform + - uid: 1392 + components: + - pos: 5.5,39.5 + parent: 1 + type: Transform + - uid: 1394 + components: + - pos: 5.5,21.5 + parent: 1 + type: Transform + - uid: 1419 + components: + - rot: -1.5707963267948966 rad + pos: 16.5,46.5 + parent: 1 + type: Transform + - uid: 1445 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,22.5 + parent: 1 + type: Transform + - uid: 1448 + components: + - pos: -6.5,9.5 + parent: 1 + type: Transform + - uid: 1451 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,13.5 + parent: 1 + type: Transform + - uid: 1452 + components: + - pos: -6.5,11.5 + parent: 1 + type: Transform + - uid: 1454 + components: + - rot: -1.5707963267948966 rad + pos: -6.5,12.5 + parent: 1 + type: Transform + - uid: 1459 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,7.5 + parent: 1 + type: Transform + - uid: 1463 + components: + - pos: -6.5,15.5 + parent: 1 + type: Transform + - uid: 1473 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,18.5 + parent: 1 + type: Transform + - uid: 1474 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,16.5 + parent: 1 + type: Transform + - uid: 1479 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,21.5 + parent: 1 + type: Transform + - uid: 1481 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,20.5 + parent: 1 + type: Transform + - uid: 1483 + components: + - rot: -1.5707963267948966 rad + pos: -8.5,22.5 + parent: 1 + type: Transform + - uid: 1486 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,8.5 + parent: 1 + type: Transform + - uid: 1488 + components: + - rot: -1.5707963267948966 rad + pos: -15.5,7.5 + parent: 1 + type: Transform + - uid: 1490 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,7.5 + parent: 1 + type: Transform + - uid: 1495 + components: + - pos: -18.5,12.5 + parent: 1 + type: Transform + - uid: 1499 + components: + - rot: 1.5707963267948966 rad + pos: -9.5,13.5 + parent: 1 + type: Transform + - uid: 1500 + components: + - rot: 1.5707963267948966 rad + pos: -7.5,10.5 + parent: 1 + type: Transform + - uid: 1501 + components: + - rot: -1.5707963267948966 rad + pos: -17.5,15.5 + parent: 1 + type: Transform + - uid: 1502 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,15.5 + parent: 1 + type: Transform + - uid: 1504 + components: + - pos: -18.5,13.5 + parent: 1 + type: Transform + - uid: 1505 + components: + - pos: -18.5,9.5 + parent: 1 + type: Transform + - uid: 1507 + components: + - rot: -1.5707963267948966 rad + pos: -18.5,7.5 + parent: 1 + type: Transform + - uid: 1512 + components: + - pos: -14.5,16.5 + parent: 1 + type: Transform + - uid: 1588 + components: + - rot: 1.5707963267948966 rad + pos: -17.5,11.5 + parent: 1 + type: Transform + - uid: 1627 + components: + - pos: 9.5,27.5 + parent: 1 + type: Transform + - uid: 1630 + components: + - pos: 6.5,27.5 + parent: 1 + type: Transform + - uid: 1633 + components: + - pos: -2.5,14.5 + parent: 1 + type: Transform + - uid: 1846 + components: + - pos: -5.5,28.5 + parent: 1 + type: Transform + - uid: 1856 + components: + - pos: -5.5,27.5 + parent: 1 + type: Transform + - uid: 1868 + components: + - pos: -6.5,35.5 + parent: 1 + type: Transform + - uid: 1881 + components: + - pos: 13.5,25.5 + parent: 1 + type: Transform + - uid: 1885 + components: + - pos: 1.5,22.5 + parent: 1 + type: Transform + - uid: 1889 + components: + - pos: 2.5,41.5 + parent: 1 + type: Transform + - uid: 1891 + components: + - pos: 3.5,41.5 + parent: 1 + type: Transform + - uid: 1892 + components: + - pos: 8.5,27.5 + parent: 1 + type: Transform + - uid: 1900 + components: + - pos: 12.5,21.5 + parent: 1 + type: Transform + - uid: 2006 + components: + - pos: -45.5,52.5 + parent: 1 + type: Transform + - uid: 2007 + components: + - pos: -45.5,51.5 + parent: 1 + type: Transform + - uid: 2046 + components: + - pos: 17.5,21.5 + parent: 1 + type: Transform + - uid: 2644 + components: + - pos: -19.5,30.5 + parent: 1 + type: Transform + - uid: 2645 + components: + - rot: -1.5707963267948966 rad + pos: -5.5,35.5 + parent: 1 + type: Transform + - uid: 2648 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,35.5 + parent: 1 + type: Transform + - uid: 2649 + components: + - rot: -1.5707963267948966 rad + pos: -13.5,34.5 + parent: 1 + type: Transform + - uid: 2650 + components: + - pos: -12.5,34.5 + parent: 1 + type: Transform + - uid: 2667 + components: + - pos: -17.5,-15.5 + parent: 1 + type: Transform + - uid: 2813 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,19.5 + parent: 1 + type: Transform + - uid: 2837 + components: + - pos: -14.5,26.5 + parent: 1 + type: Transform + - uid: 2936 + components: + - pos: -18.5,23.5 + parent: 1 + type: Transform + - uid: 3027 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,7.5 + parent: 1 + type: Transform + - uid: 3028 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,8.5 + parent: 1 + type: Transform + - uid: 3029 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,9.5 + parent: 1 + type: Transform + - uid: 3039 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,19.5 + parent: 1 + type: Transform + - uid: 3046 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,25.5 + parent: 1 + type: Transform + - uid: 3052 + components: + - pos: -21.5,30.5 + parent: 1 + type: Transform + - uid: 3055 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,7.5 + parent: 1 + type: Transform + - uid: 3057 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,9.5 + parent: 1 + type: Transform + - uid: 3058 + components: + - rot: -1.5707963267948966 rad + pos: -24.5,14.5 + parent: 1 + type: Transform + - uid: 3060 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,11.5 + parent: 1 + type: Transform + - uid: 3061 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,12.5 + parent: 1 + type: Transform + - uid: 3062 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,14.5 + parent: 1 + type: Transform + - uid: 3066 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,18.5 + parent: 1 + type: Transform + - uid: 3067 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,13.5 + parent: 1 + type: Transform + - uid: 3071 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,19.5 + parent: 1 + type: Transform + - uid: 3073 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,14.5 + parent: 1 + type: Transform + - uid: 3075 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,19.5 + parent: 1 + type: Transform + - uid: 3078 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,17.5 + parent: 1 + type: Transform + - uid: 3080 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,9.5 + parent: 1 + type: Transform + - uid: 3111 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,8.5 + parent: 1 + type: Transform + - uid: 3112 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,7.5 + parent: 1 + type: Transform + - uid: 3115 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,11.5 + parent: 1 + type: Transform + - uid: 3116 + components: + - pos: -27.5,29.5 + parent: 1 + type: Transform + - uid: 3119 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,25.5 + parent: 1 + type: Transform + - uid: 3121 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,24.5 + parent: 1 + type: Transform + - uid: 3124 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,22.5 + parent: 1 + type: Transform + - uid: 3127 + components: + - rot: -1.5707963267948966 rad + pos: -22.5,25.5 + parent: 1 + type: Transform + - uid: 3136 + components: + - rot: -1.5707963267948966 rad + pos: -24.5,22.5 + parent: 1 + type: Transform + - uid: 3137 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,22.5 + parent: 1 + type: Transform + - uid: 3139 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,24.5 + parent: 1 + type: Transform + - uid: 3140 + components: + - pos: -34.5,30.5 + parent: 1 + type: Transform + - uid: 3145 + components: + - pos: -10.5,36.5 + parent: 1 + type: Transform + - uid: 3147 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,14.5 + parent: 1 + type: Transform + - uid: 3152 + components: + - pos: -28.5,30.5 + parent: 1 + type: Transform + - uid: 3157 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,-1.5 + parent: 1 + type: Transform + - uid: 3158 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,-0.5 + parent: 1 + type: Transform + - uid: 3166 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,22.5 + parent: 1 + type: Transform + - uid: 3167 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,10.5 + parent: 1 + type: Transform + - uid: 3169 + components: + - pos: -46.5,19.5 + parent: 1 + type: Transform + - uid: 3213 + components: + - pos: -42.5,15.5 + parent: 1 + type: Transform + - uid: 3215 + components: + - pos: -39.5,19.5 + parent: 1 + type: Transform + - uid: 3217 + components: + - pos: -39.5,16.5 + parent: 1 + type: Transform + - uid: 3420 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,13.5 + parent: 1 + type: Transform + - uid: 3437 + components: + - pos: -39.5,10.5 + parent: 1 + type: Transform + - uid: 3446 + components: + - pos: -23.5,46.5 + parent: 1 + type: Transform + - uid: 3453 + components: + - rot: -1.5707963267948966 rad + pos: -23.5,34.5 + parent: 1 + type: Transform + - uid: 3463 + components: + - pos: -30.5,-2.5 + parent: 1 + type: Transform + - uid: 3465 + components: + - pos: -30.5,-1.5 + parent: 1 + type: Transform + - uid: 3468 + components: + - pos: -30.5,-5.5 + parent: 1 + type: Transform + - uid: 3471 + components: + - pos: -30.5,-7.5 + parent: 1 + type: Transform + - uid: 3473 + components: + - pos: -30.5,1.5 + parent: 1 + type: Transform + - uid: 3474 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,-9.5 + parent: 1 + type: Transform + - uid: 3475 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,-10.5 + parent: 1 + type: Transform + - uid: 3492 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,-9.5 + parent: 1 + type: Transform + - uid: 3494 + components: + - pos: -29.5,-13.5 + parent: 1 + type: Transform + - uid: 3500 + components: + - pos: -26.5,-13.5 + parent: 1 + type: Transform + - uid: 3521 + components: + - pos: -35.5,2.5 + parent: 1 + type: Transform + - uid: 3525 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,0.5 + parent: 1 + type: Transform + - uid: 3528 + components: + - pos: -33.5,-0.5 + parent: 1 + type: Transform + - uid: 3548 + components: + - pos: -30.5,-8.5 + parent: 1 + type: Transform + - uid: 3582 + components: + - pos: -41.5,-8.5 + parent: 1 + type: Transform + - uid: 3597 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,-4.5 + parent: 1 + type: Transform + - uid: 3602 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,0.5 + parent: 1 + type: Transform + - uid: 3603 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,3.5 + parent: 1 + type: Transform + - uid: 3607 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,1.5 + parent: 1 + type: Transform + - uid: 3609 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,-0.5 + parent: 1 + type: Transform + - uid: 3610 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,-0.5 + parent: 1 + type: Transform + - uid: 3612 + components: + - rot: -1.5707963267948966 rad + pos: -55.5,2.5 + parent: 1 + type: Transform + - uid: 3633 + components: + - pos: -45.5,-14.5 + parent: 1 + type: Transform + - uid: 3648 + components: + - pos: -37.5,-14.5 + parent: 1 + type: Transform + - uid: 3689 + components: + - pos: -16.5,21.5 + parent: 1 + type: Transform + - uid: 3693 + components: + - pos: -43.5,9.5 + parent: 1 + type: Transform + - uid: 3694 + components: + - pos: -43.5,10.5 + parent: 1 + type: Transform + - uid: 4092 + components: + - pos: -53.5,-11.5 + parent: 1 + type: Transform + - uid: 4125 + components: + - pos: -36.5,-12.5 + parent: 1 + type: Transform + - uid: 4171 + components: + - pos: -39.5,15.5 + parent: 1 + type: Transform + - uid: 4174 + components: + - pos: -39.5,26.5 + parent: 1 + type: Transform + - uid: 4175 + components: + - pos: -39.5,29.5 + parent: 1 + type: Transform + - uid: 4178 + components: + - pos: -39.5,22.5 + parent: 1 + type: Transform + - uid: 4181 + components: + - pos: -43.5,26.5 + parent: 1 + type: Transform + - uid: 4183 + components: + - pos: -42.5,22.5 + parent: 1 + type: Transform + - uid: 4185 + components: + - pos: -43.5,24.5 + parent: 1 + type: Transform + - uid: 4189 + components: + - pos: -39.5,23.5 + parent: 1 + type: Transform + - uid: 4191 + components: + - pos: -40.5,29.5 + parent: 1 + type: Transform + - uid: 4194 + components: + - pos: -42.5,29.5 + parent: 1 + type: Transform + - uid: 4198 + components: + - pos: -49.5,30.5 + parent: 1 + type: Transform + - uid: 4204 + components: + - pos: -51.5,18.5 + parent: 1 + type: Transform + - uid: 4251 + components: + - pos: -18.5,26.5 + parent: 1 + type: Transform + - uid: 4268 + components: + - pos: -18.5,25.5 + parent: 1 + type: Transform + - uid: 4272 + components: + - pos: -23.5,36.5 + parent: 1 + type: Transform + - uid: 4285 + components: + - pos: -41.5,16.5 + parent: 1 + type: Transform + - uid: 4288 + components: + - pos: -46.5,17.5 + parent: 1 + type: Transform + - uid: 4300 + components: + - pos: -46.5,20.5 + parent: 1 + type: Transform + - uid: 4302 + components: + - pos: -49.5,16.5 + parent: 1 + type: Transform + - uid: 4304 + components: + - pos: -39.5,13.5 + parent: 1 + type: Transform + - uid: 4307 + components: + - pos: -55.5,23.5 + parent: 1 + type: Transform + - uid: 4318 + components: + - pos: -51.5,21.5 + parent: 1 + type: Transform + - uid: 4322 + components: + - pos: -51.5,17.5 + parent: 1 + type: Transform + - uid: 4323 + components: + - pos: -51.5,14.5 + parent: 1 + type: Transform + - uid: 4503 + components: + - pos: -49.5,-4.5 + parent: 1 + type: Transform + - uid: 4504 + components: + - pos: -49.5,-5.5 + parent: 1 + type: Transform + - uid: 4505 + components: + - pos: -49.5,-2.5 + parent: 1 + type: Transform + - uid: 4507 + components: + - pos: -49.5,-8.5 + parent: 1 + type: Transform + - uid: 4514 + components: + - pos: -55.5,0.5 + parent: 1 + type: Transform + - uid: 4515 + components: + - pos: -54.5,-8.5 + parent: 1 + type: Transform + - uid: 4517 + components: + - pos: -52.5,0.5 + parent: 1 + type: Transform + - uid: 4520 + components: + - pos: -55.5,-2.5 + parent: 1 + type: Transform + - uid: 4528 + components: + - pos: -49.5,-0.5 + parent: 1 + type: Transform + - uid: 4530 + components: + - pos: -51.5,-8.5 + parent: 1 + type: Transform + - uid: 4531 + components: + - pos: -53.5,0.5 + parent: 1 + type: Transform + - uid: 4552 + components: + - pos: -55.5,29.5 + parent: 1 + type: Transform + - uid: 4555 + components: + - pos: -54.5,22.5 + parent: 1 + type: Transform + - uid: 4580 + components: + - pos: -46.5,30.5 + parent: 1 + type: Transform + - uid: 4582 + components: + - pos: -46.5,28.5 + parent: 1 + type: Transform + - uid: 4588 + components: + - pos: -54.5,26.5 + parent: 1 + type: Transform + - uid: 4589 + components: + - pos: -55.5,27.5 + parent: 1 + type: Transform + - uid: 4591 + components: + - pos: -55.5,17.5 + parent: 1 + type: Transform + - uid: 5008 + components: + - rot: 3.141592653589793 rad + pos: -42.5,3.5 + parent: 1 + type: Transform + - uid: 5010 + components: + - pos: -33.5,58.5 + parent: 1 + type: Transform + - uid: 5045 + components: + - pos: -34.5,58.5 + parent: 1 + type: Transform + - uid: 5167 + components: + - pos: -36.5,58.5 + parent: 1 + type: Transform + - uid: 5170 + components: + - pos: -26.5,51.5 + parent: 1 + type: Transform + - uid: 5182 + components: + - rot: -1.5707963267948966 rad + pos: -67.5,7.5 + parent: 1 + type: Transform + - uid: 5190 + components: + - pos: -19.5,52.5 + parent: 1 + type: Transform + - uid: 5208 + components: + - pos: -25.5,56.5 + parent: 1 + type: Transform + - uid: 5223 + components: + - pos: -28.5,56.5 + parent: 1 + type: Transform + - uid: 5306 + components: + - pos: -54.5,-3.5 + parent: 1 + type: Transform + - uid: 5308 + components: + - pos: -52.5,-3.5 + parent: 1 + type: Transform + - uid: 5310 + components: + - rot: -1.5707963267948966 rad + pos: -50.5,2.5 + parent: 1 + type: Transform + - uid: 5410 + components: + - pos: -37.5,56.5 + parent: 1 + type: Transform + - uid: 5411 + components: + - pos: -24.5,-5.5 + parent: 1 + type: Transform + - uid: 5452 + components: + - pos: -38.5,56.5 + parent: 1 + type: Transform + - uid: 5495 + components: + - pos: -39.5,56.5 + parent: 1 + type: Transform + - uid: 5524 + components: + - pos: -41.5,56.5 + parent: 1 + type: Transform + - uid: 5532 + components: + - pos: -43.5,56.5 + parent: 1 + type: Transform + - uid: 5725 + components: + - pos: -43.5,48.5 + parent: 1 + type: Transform + - uid: 5755 + components: + - pos: -45.5,53.5 + parent: 1 + type: Transform + - uid: 5837 + components: + - pos: -10.5,39.5 + parent: 1 + type: Transform + - uid: 5838 + components: + - pos: -8.5,38.5 + parent: 1 + type: Transform + - uid: 5843 + components: + - pos: -10.5,44.5 + parent: 1 + type: Transform + - uid: 5845 + components: + - pos: -6.5,45.5 + parent: 1 + type: Transform + - uid: 5854 + components: + - pos: -5.5,38.5 + parent: 1 + type: Transform + - uid: 5859 + components: + - pos: -10.5,42.5 + parent: 1 + type: Transform + - uid: 5868 + components: + - pos: -4.5,38.5 + parent: 1 + type: Transform + - uid: 5872 + components: + - pos: -4.5,39.5 + parent: 1 + type: Transform + - uid: 5874 + components: + - pos: -4.5,44.5 + parent: 1 + type: Transform + - uid: 5877 + components: + - pos: -4.5,42.5 + parent: 1 + type: Transform + - uid: 5879 + components: + - pos: -8.5,45.5 + parent: 1 + type: Transform + - uid: 5955 + components: + - rot: 3.141592653589793 rad + pos: 2.5,48.5 + parent: 1 + type: Transform + - uid: 5957 + components: + - rot: 3.141592653589793 rad + pos: 1.5,51.5 + parent: 1 + type: Transform + - uid: 5958 + components: + - rot: 3.141592653589793 rad + pos: 1.5,52.5 + parent: 1 + type: Transform + - uid: 5972 + components: + - rot: 3.141592653589793 rad + pos: 4.5,48.5 + parent: 1 + type: Transform + - uid: 5979 + components: + - rot: 3.141592653589793 rad + pos: 9.5,49.5 + parent: 1 + type: Transform + - uid: 5981 + components: + - rot: 3.141592653589793 rad + pos: 13.5,46.5 + parent: 1 + type: Transform + - uid: 5984 + components: + - rot: 3.141592653589793 rad + pos: 11.5,47.5 + parent: 1 + type: Transform + - uid: 5986 + components: + - rot: 3.141592653589793 rad + pos: 10.5,47.5 + parent: 1 + type: Transform + - uid: 5987 + components: + - rot: 3.141592653589793 rad + pos: 8.5,46.5 + parent: 1 + type: Transform + - uid: 5996 + components: + - rot: 3.141592653589793 rad + pos: 5.5,52.5 + parent: 1 + type: Transform + - uid: 5998 + components: + - rot: 3.141592653589793 rad + pos: 5.5,50.5 + parent: 1 + type: Transform + - uid: 6006 + components: + - rot: 3.141592653589793 rad + pos: 1.5,49.5 + parent: 1 + type: Transform + - uid: 6008 + components: + - rot: 3.141592653589793 rad + pos: 9.5,50.5 + parent: 1 + type: Transform + - uid: 6027 + components: + - rot: 3.141592653589793 rad + pos: 8.5,45.5 + parent: 1 + type: Transform + - uid: 6066 + components: + - rot: -1.5707963267948966 rad + pos: 17.5,44.5 + parent: 1 + type: Transform + - uid: 6364 + components: + - rot: 3.141592653589793 rad + pos: -11.5,58.5 + parent: 1 + type: Transform + - uid: 6365 + components: + - rot: 3.141592653589793 rad + pos: -12.5,58.5 + parent: 1 + type: Transform + - uid: 6372 + components: + - rot: 3.141592653589793 rad + pos: -19.5,58.5 + parent: 1 + type: Transform + - uid: 6695 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,43.5 + parent: 1 + type: Transform + - uid: 6696 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,42.5 + parent: 1 + type: Transform + - uid: 6698 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,48.5 + parent: 1 + type: Transform + - uid: 6699 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,48.5 + parent: 1 + type: Transform + - uid: 6701 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,48.5 + parent: 1 + type: Transform + - uid: 6703 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,48.5 + parent: 1 + type: Transform + - uid: 6704 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,48.5 + parent: 1 + type: Transform + - uid: 6706 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,40.5 + parent: 1 + type: Transform + - uid: 6709 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,37.5 + parent: 1 + type: Transform + - uid: 6711 + components: + - rot: -1.5707963267948966 rad + pos: -26.5,35.5 + parent: 1 + type: Transform + - uid: 6714 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,52.5 + parent: 1 + type: Transform + - uid: 6718 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,36.5 + parent: 1 + type: Transform + - uid: 6719 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,35.5 + parent: 1 + type: Transform + - uid: 6722 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,39.5 + parent: 1 + type: Transform + - uid: 6724 + components: + - rot: -1.5707963267948966 rad + pos: -29.5,39.5 + parent: 1 + type: Transform + - uid: 6730 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,34.5 + parent: 1 + type: Transform + - uid: 6732 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,41.5 + parent: 1 + type: Transform + - uid: 6733 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,41.5 + parent: 1 + type: Transform + - uid: 6735 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,41.5 + parent: 1 + type: Transform + - uid: 6739 + components: + - rot: -1.5707963267948966 rad + pos: -27.5,43.5 + parent: 1 + type: Transform + - uid: 6740 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,40.5 + parent: 1 + type: Transform + - uid: 6741 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,38.5 + parent: 1 + type: Transform + - uid: 6743 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,44.5 + parent: 1 + type: Transform + - uid: 6744 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,37.5 + parent: 1 + type: Transform + - uid: 6746 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,34.5 + parent: 1 + type: Transform + - uid: 6748 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,41.5 + parent: 1 + type: Transform + - uid: 6749 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,41.5 + parent: 1 + type: Transform + - uid: 6750 + components: + - rot: -1.5707963267948966 rad + pos: -41.5,40.5 + parent: 1 + type: Transform + - uid: 6756 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,40.5 + parent: 1 + type: Transform + - uid: 6761 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,34.5 + parent: 1 + type: Transform + - uid: 6764 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,34.5 + parent: 1 + type: Transform + - uid: 6766 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,36.5 + parent: 1 + type: Transform + - uid: 6768 + components: + - rot: -1.5707963267948966 rad + pos: -28.5,43.5 + parent: 1 + type: Transform + - uid: 6772 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,51.5 + parent: 1 + type: Transform + - uid: 6773 + components: + - rot: -1.5707963267948966 rad + pos: -43.5,52.5 + parent: 1 + type: Transform + - uid: 6776 + components: + - rot: -1.5707963267948966 rad + pos: -38.5,50.5 + parent: 1 + type: Transform + - uid: 6777 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,53.5 + parent: 1 + type: Transform + - uid: 6780 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,47.5 + parent: 1 + type: Transform + - uid: 6787 + components: + - pos: -45.5,48.5 + parent: 1 + type: Transform + - uid: 6790 + components: + - pos: -45.5,45.5 + parent: 1 + type: Transform + - uid: 6797 + components: + - rot: -1.5707963267948966 rad + pos: -36.5,48.5 + parent: 1 + type: Transform + - uid: 6800 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,49.5 + parent: 1 + type: Transform + - uid: 6802 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,50.5 + parent: 1 + type: Transform + - uid: 6825 + components: + - pos: -26.5,-12.5 + parent: 1 + type: Transform + - uid: 6850 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,56.5 + parent: 1 + type: Transform + - uid: 6852 + components: + - pos: -19.5,-15.5 + parent: 1 + type: Transform + - uid: 6853 + components: + - pos: -22.5,-14.5 + parent: 1 + type: Transform + - uid: 6854 + components: + - pos: -23.5,-14.5 + parent: 1 + type: Transform + - uid: 6855 + components: + - pos: -21.5,-15.5 + parent: 1 + type: Transform + - uid: 6856 + components: + - pos: -22.5,-11.5 + parent: 1 + type: Transform + - uid: 6857 + components: + - pos: -22.5,-13.5 + parent: 1 + type: Transform + - uid: 6900 + components: + - pos: -22.5,-12.5 + parent: 1 + type: Transform + - uid: 6961 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,48.5 + parent: 1 + type: Transform + - uid: 7027 + components: + - pos: -49.5,39.5 + parent: 1 + type: Transform + - uid: 7035 + components: + - pos: -55.5,43.5 + parent: 1 + type: Transform + - uid: 7039 + components: + - pos: -51.5,39.5 + parent: 1 + type: Transform + - uid: 7042 + components: + - pos: -54.5,38.5 + parent: 1 + type: Transform + - uid: 7044 + components: + - pos: -54.5,35.5 + parent: 1 + type: Transform + - uid: 7049 + components: + - pos: -54.5,36.5 + parent: 1 + type: Transform + - uid: 7052 + components: + - pos: -50.5,45.5 + parent: 1 + type: Transform + - uid: 7054 + components: + - pos: -52.5,42.5 + parent: 1 + type: Transform + - uid: 7055 + components: + - pos: -50.5,44.5 + parent: 1 + type: Transform + - uid: 7060 + components: + - pos: -49.5,40.5 + parent: 1 + type: Transform + - uid: 7069 + components: + - pos: -55.5,34.5 + parent: 1 + type: Transform + - uid: 7070 + components: + - pos: -49.5,34.5 + parent: 1 + type: Transform + - uid: 7087 + components: + - pos: -49.5,37.5 + parent: 1 + type: Transform + - uid: 7244 + components: + - pos: -54.5,81.5 + parent: 1 + type: Transform + - uid: 7275 + components: + - pos: -53.5,86.5 + parent: 1 + type: Transform + - uid: 7288 + components: + - pos: -55.5,91.5 + parent: 1 + type: Transform + - uid: 7566 + components: + - pos: -64.5,37.5 + parent: 1 + type: Transform + - uid: 7567 + components: + - pos: -65.5,45.5 + parent: 1 + type: Transform + - uid: 7568 + components: + - pos: -59.5,43.5 + parent: 1 + type: Transform + - uid: 7921 + components: + - pos: -50.5,-13.5 + parent: 1 + type: Transform + - uid: 7922 + components: + - pos: -50.5,-12.5 + parent: 1 + type: Transform + - uid: 8057 + components: + - pos: -26.5,58.5 + parent: 1 + type: Transform + - uid: 8058 + components: + - pos: -25.5,58.5 + parent: 1 + type: Transform + - uid: 8314 + components: + - rot: 3.141592653589793 rad + pos: -69.5,7.5 + parent: 1 + type: Transform + - uid: 9160 + components: + - pos: -68.5,53.5 + parent: 1 + type: Transform + - uid: 9164 + components: + - pos: -68.5,50.5 + parent: 1 + type: Transform + - uid: 9165 + components: + - pos: -68.5,54.5 + parent: 1 + type: Transform + - uid: 9167 + components: + - pos: -71.5,50.5 + parent: 1 + type: Transform + - uid: 9168 + components: + - pos: -69.5,50.5 + parent: 1 + type: Transform + - uid: 9175 + components: + - pos: -68.5,46.5 + parent: 1 + type: Transform + - uid: 9176 + components: + - pos: -70.5,46.5 + parent: 1 + type: Transform + - uid: 9178 + components: + - pos: -71.5,46.5 + parent: 1 + type: Transform + - uid: 9180 + components: + - pos: -73.5,46.5 + parent: 1 + type: Transform + - uid: 9183 + components: + - pos: -73.5,42.5 + parent: 1 + type: Transform + - uid: 9192 + components: + - pos: -68.5,55.5 + parent: 1 + type: Transform + - uid: 9200 + components: + - pos: -73.5,48.5 + parent: 1 + type: Transform + - uid: 9205 + components: + - pos: -59.5,46.5 + parent: 1 + type: Transform + - uid: 9208 + components: + - pos: -65.5,40.5 + parent: 1 + type: Transform + - uid: 9215 + components: + - pos: -59.5,41.5 + parent: 1 + type: Transform + - uid: 9222 + components: + - pos: -61.5,46.5 + parent: 1 + type: Transform + - uid: 9228 + components: + - pos: -63.5,46.5 + parent: 1 + type: Transform + - uid: 9229 + components: + - pos: -69.5,38.5 + parent: 1 + type: Transform + - uid: 9231 + components: + - pos: -73.5,39.5 + parent: 1 + type: Transform + - uid: 9234 + components: + - pos: -68.5,44.5 + parent: 1 + type: Transform + - uid: 9239 + components: + - pos: -73.5,40.5 + parent: 1 + type: Transform + - uid: 9242 + components: + - pos: -68.5,41.5 + parent: 1 + type: Transform + - uid: 9269 + components: + - pos: -72.5,38.5 + parent: 1 + type: Transform + - uid: 9273 + components: + - pos: -65.5,42.5 + parent: 1 + type: Transform + - uid: 9275 + components: + - pos: -60.5,37.5 + parent: 1 + type: Transform + - uid: 9293 + components: + - pos: -65.5,39.5 + parent: 1 + type: Transform + - uid: 9301 + components: + - pos: -59.5,36.5 + parent: 1 + type: Transform + - uid: 9782 + components: + - rot: 3.141592653589793 rad + pos: -1.5,48.5 + parent: 1 + type: Transform + - uid: 9897 + components: + - pos: -59.5,20.5 + parent: 1 + type: Transform + - uid: 9899 + components: + - pos: -59.5,17.5 + parent: 1 + type: Transform + - uid: 9915 + components: + - pos: -60.5,9.5 + parent: 1 + type: Transform + - uid: 9916 + components: + - pos: -61.5,9.5 + parent: 1 + type: Transform + - uid: 9925 + components: + - pos: -63.5,9.5 + parent: 1 + type: Transform + - uid: 9928 + components: + - pos: -65.5,10.5 + parent: 1 + type: Transform + - uid: 9930 + components: + - pos: -65.5,11.5 + parent: 1 + type: Transform + - uid: 9931 + components: + - pos: -65.5,15.5 + parent: 1 + type: Transform + - uid: 9932 + components: + - pos: -61.5,15.5 + parent: 1 + type: Transform + - uid: 10440 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,13.5 + parent: 1 + type: Transform + - uid: 10441 + components: + - rot: 1.5707963267948966 rad + pos: -55.5,11.5 + parent: 1 + type: Transform + - uid: 10450 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,10.5 + parent: 1 + type: Transform + - uid: 10453 + components: + - rot: 1.5707963267948966 rad + pos: -51.5,13.5 + parent: 1 + type: Transform + - uid: 10456 + components: + - rot: 1.5707963267948966 rad + pos: -52.5,11.5 + parent: 1 + type: Transform + - uid: 13310 + components: + - pos: 1.5,13.5 + parent: 1 + type: Transform + - uid: 13311 + components: + - pos: 0.5,13.5 + parent: 1 + type: Transform + - uid: 13312 + components: + - pos: 3.5,13.5 + parent: 1 + type: Transform + - uid: 13313 + components: + - pos: 5.5,14.5 + parent: 1 + type: Transform + - uid: 13314 + components: + - pos: 5.5,13.5 + parent: 1 + type: Transform + - uid: 13315 + components: + - pos: 5.5,16.5 + parent: 1 + type: Transform + - uid: 13316 + components: + - pos: 5.5,11.5 + parent: 1 + type: Transform + - uid: 14971 + components: + - pos: -59.5,27.5 + parent: 1 + type: Transform + - uid: 14972 + components: + - pos: -59.5,29.5 + parent: 1 + type: Transform + - uid: 14973 + components: + - pos: -59.5,30.5 + parent: 1 + type: Transform +- proto: WallVaultRock + entities: + - uid: 167 + components: + - rot: -1.5707963267948966 rad + pos: 8.5,-11.5 + parent: 1 + type: Transform + - uid: 210 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,-12.5 + parent: 1 + type: Transform + - uid: 211 + components: + - rot: -1.5707963267948966 rad + pos: 10.5,-11.5 + parent: 1 + type: Transform + - uid: 494 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,-11.5 + parent: 1 + type: Transform + - uid: 524 + components: + - pos: 12.5,-12.5 + parent: 1 + type: Transform + - uid: 1920 + components: + - rot: -1.5707963267948966 rad + pos: 9.5,-11.5 + parent: 1 + type: Transform + - uid: 1921 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,-13.5 + parent: 1 + type: Transform + - uid: 14822 + components: + - pos: 12.5,-14.5 + parent: 1 + type: Transform + - uid: 14827 + components: + - rot: -1.5707963267948966 rad + pos: 7.5,-15.5 + parent: 1 + type: Transform + - uid: 14828 + components: + - rot: -1.5707963267948966 rad + pos: 6.5,-14.5 + parent: 1 + type: Transform + - uid: 14829 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,-15.5 + parent: 1 + type: Transform +- proto: WallWood + entities: + - uid: 3476 + components: + - rot: -1.5707963267948966 rad + pos: -51.5,7.5 + parent: 1 + type: Transform + - uid: 3496 + components: + - rot: 3.141592653589793 rad + pos: -49.5,11.5 + parent: 1 + type: Transform + - uid: 5315 + components: + - rot: -1.5707963267948966 rad + pos: -46.5,7.5 + parent: 1 + type: Transform + - uid: 5321 + components: + - rot: -1.5707963267948966 rad + pos: -49.5,7.5 + parent: 1 + type: Transform + - uid: 5323 + components: + - rot: -1.5707963267948966 rad + pos: -52.5,7.5 + parent: 1 + type: Transform + - uid: 5347 + components: + - rot: 3.141592653589793 rad + pos: -48.5,12.5 + parent: 1 + type: Transform + - uid: 5348 + components: + - rot: 3.141592653589793 rad + pos: -48.5,11.5 + parent: 1 + type: Transform + - uid: 5445 + components: + - rot: 3.141592653589793 rad + pos: -53.5,9.5 + parent: 1 + type: Transform + - uid: 6154 + components: + - rot: -1.5707963267948966 rad + pos: -54.5,7.5 + parent: 1 + type: Transform + - uid: 10443 + components: + - rot: 1.5707963267948966 rad + pos: -54.5,9.5 + parent: 1 + type: Transform + - uid: 10446 + components: + - rot: 3.141592653589793 rad + pos: -46.5,11.5 + parent: 1 + type: Transform + - uid: 11894 + components: + - rot: -1.5707963267948966 rad + pos: -47.5,7.5 + parent: 1 + type: Transform + - uid: 13292 + components: + - rot: -1.5707963267948966 rad + pos: -53.5,7.5 + parent: 1 + type: Transform + - uid: 14820 + components: + - rot: -1.5707963267948966 rad + pos: -48.5,7.5 + parent: 1 + type: Transform +- proto: WardrobeCargoFilled + entities: + - uid: 3664 + components: + - pos: -43.5,2.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 15095 + components: + - pos: -44.5,2.5 + parent: 1 + type: Transform +- proto: WardrobeGreenFilled + entities: + - uid: 14456 + components: + - pos: -72.5,8.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 14457 + components: + - pos: -69.5,8.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: WardrobeGreyFilled + entities: + - uid: 5934 + components: + - pos: -6.5,39.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5935 + components: + - pos: -5.5,39.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5936 + components: + - pos: -8.5,39.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 5937 + components: + - pos: -9.5,39.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: WardrobePrisonFilled + entities: + - uid: 1913 + components: + - pos: -50.5,51.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1917 + components: + - pos: -53.5,51.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 1919 + components: + - pos: -56.5,51.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 7350 + components: + - pos: -55.5,90.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage + - uid: 7359 + components: + - pos: -55.5,84.5 + parent: 1 + type: Transform + - air: + volume: 200 + immutable: False + temperature: 293.14963 + moles: + - 3.3523011 + - 12.611038 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: EntityStorage +- proto: WarningCO2 + entities: + - uid: 13931 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,38.5 + parent: 1 + type: Transform +- proto: WarningN2 + entities: + - uid: 13935 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,36.5 + parent: 1 + type: Transform +- proto: WarningN2O + entities: + - uid: 13932 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,40.5 + parent: 1 + type: Transform +- proto: WarningO2 + entities: + - uid: 13934 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,34.5 + parent: 1 + type: Transform +- proto: WarningPlasma + entities: + - uid: 13933 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,42.5 + parent: 1 + type: Transform +- proto: WarningWaste + entities: + - uid: 13930 + components: + - rot: 1.5707963267948966 rad + pos: -87.5,44.5 + parent: 1 + type: Transform +- proto: WarpPoint + entities: + - uid: 13783 + components: + - pos: -32.5,26.5 + parent: 1 + type: Transform + - location: theatre + type: WarpPoint + - uid: 13788 + components: + - pos: 15.5,-0.5 + parent: 1 + type: Transform + - location: chapel + type: WarpPoint +- proto: WarpPointBombing + entities: + - uid: 7647 + components: + - pos: 3.5,25.5 + parent: 1 + type: Transform + - location: Med + type: WarpPoint + - uid: 7868 + components: + - pos: -37.5,37.5 + parent: 1 + type: Transform + - location: Bar + type: WarpPoint + - uid: 7870 + components: + - pos: -21.5,40.5 + parent: 1 + type: Transform + - location: HoP + type: WarpPoint + - uid: 7899 + components: + - pos: -16.5,60.5 + parent: 1 + type: Transform + - location: Bridge + type: WarpPoint + - uid: 7900 + components: + - pos: 27.5,13.5 + parent: 1 + type: Transform + - location: Evac + type: WarpPoint + - uid: 7901 + components: + - pos: -7.5,-1.5 + parent: 1 + type: Transform + - location: Sci + type: WarpPoint + - uid: 7957 + components: + - pos: -38.5,-5.5 + parent: 1 + type: Transform + - location: Cargo + type: WarpPoint + - uid: 7959 + components: + - pos: -53.5,55.5 + parent: 1 + type: Transform + - location: Security + type: WarpPoint + - uid: 8032 + components: + - pos: -65.5,27.5 + parent: 1 + type: Transform + - location: Eng + type: WarpPoint + - uid: 9022 + components: + - pos: -42.5,63.5 + parent: 1 + type: Transform + - location: Armory + type: WarpPoint + - uid: 9025 + components: + - pos: -42.5,44.5 + parent: 1 + type: Transform + - location: Botany + type: WarpPoint + - uid: 9027 + components: + - pos: 2.5,38.5 + parent: 1 + type: Transform + - location: Cloning + type: WarpPoint + - uid: 9055 + components: + - pos: -25.5,28.5 + parent: 1 + type: Transform + - location: Tool storage + type: WarpPoint +- proto: WaterCooler + entities: + - uid: 331 + components: + - pos: -2.5,-5.5 + parent: 1 + type: Transform + - uid: 3088 + components: + - pos: -22.5,13.5 + parent: 1 + type: Transform + - uid: 8024 + components: + - pos: -60.5,61.5 + parent: 1 + type: Transform +- proto: WaterTank + entities: + - uid: 10388 + components: + - pos: -0.5,45.5 + parent: 1 + type: Transform +- proto: WaterTankFull + entities: + - uid: 78 + components: + - pos: -52.5,41.5 + parent: 1 + type: Transform + - uid: 3679 + components: + - pos: -51.5,-10.5 + parent: 1 + type: Transform + - uid: 5418 + components: + - pos: -29.5,-1.5 + parent: 1 + type: Transform + - uid: 5419 + components: + - pos: -21.5,2.5 + parent: 1 + type: Transform + - uid: 5420 + components: + - pos: 16.5,-4.5 + parent: 1 + type: Transform + - uid: 5614 + components: + - pos: -49.5,15.5 + parent: 1 + type: Transform + - uid: 5712 + components: + - pos: -24.5,20.5 + parent: 1 + type: Transform + - uid: 5741 + components: + - pos: -61.5,86.5 + parent: 1 + type: Transform + - uid: 5787 + components: + - pos: -7.5,21.5 + parent: 1 + type: Transform + - uid: 10365 + components: + - pos: -35.5,54.5 + parent: 1 + type: Transform + - uid: 10476 + components: + - pos: -52.5,44.5 + parent: 1 + type: Transform + - uid: 12899 + components: + - pos: 8.5,8.5 + parent: 1 + type: Transform + - uid: 12913 + components: + - pos: 19.5,25.5 + parent: 1 + type: Transform + - uid: 14308 + components: + - pos: -74.5,48.5 + parent: 1 + type: Transform + - uid: 14589 + components: + - pos: -67.5,9.5 + parent: 1 + type: Transform +- proto: WaterTankHighCapacity + entities: + - uid: 6945 + components: + - pos: -41.5,47.5 + parent: 1 + type: Transform +- proto: WaterVaporCanister + entities: + - uid: 368 + components: + - pos: 4.5,-8.5 + parent: 1 + type: Transform +- proto: WeaponCapacitorRecharger + entities: + - uid: 3134 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,10.5 + parent: 1 + type: Transform + - uid: 7965 + components: + - pos: -60.5,50.5 + parent: 1 + type: Transform + - uid: 9156 + components: + - rot: 3.141592653589793 rad + pos: -53.5,58.5 + parent: 1 + type: Transform + - uid: 10918 + components: + - pos: -17.5,66.5 + parent: 1 + type: Transform + - uid: 13338 + components: + - pos: -1.5,10.5 + parent: 1 + type: Transform +- proto: WeaponDisabler + entities: + - uid: 7954 + components: + - pos: -48.547054,59.421623 + parent: 1 + type: Transform + - uid: 8005 + components: + - pos: -61.153942,50.71659 + parent: 1 + type: Transform + - uid: 8006 + components: + - pos: -61.200817,50.52909 + parent: 1 + type: Transform + - uid: 8007 + components: + - pos: -61.372692,50.68534 + parent: 1 + type: Transform +- proto: WeaponFlareGun + entities: + - uid: 1672 + components: + - pos: 16.491018,-8.470055 + parent: 1 + type: Transform +- proto: WeaponLaserCarbine + entities: + - uid: 8357 + components: + - pos: -43.394764,61.749336 + parent: 1 + type: Transform + - uid: 8358 + components: + - pos: -43.31664,61.63996 + parent: 1 + type: Transform +- proto: WeaponPistolMk58 + entities: + - uid: 7955 + components: + - pos: -48.53143,59.640373 + parent: 1 + type: Transform + - uid: 8373 + components: + - pos: -42.53539,61.624336 + parent: 1 + type: Transform + - uid: 8374 + components: + - pos: -42.426014,61.54621 + parent: 1 + type: Transform +- proto: WeaponRifleLecter + entities: + - uid: 8354 + components: + - pos: -41.519764,63.624336 + parent: 1 + type: Transform + - uid: 8355 + components: + - pos: -41.488514,63.38996 + parent: 1 + type: Transform + - uid: 8356 + components: + - pos: -41.488514,63.13996 + parent: 1 + type: Transform +- proto: WeaponShotgunKammerer + entities: + - uid: 8370 + components: + - pos: -41.69164,61.686836 + parent: 1 + type: Transform + - uid: 8371 + components: + - pos: -41.62914,61.561836 + parent: 1 + type: Transform +- proto: WeaponSubMachineGunWt550 + entities: + - uid: 7937 + components: + - pos: -60.450623,64.62244 + parent: 1 + type: Transform +- proto: WeaponTurretSyndicateBroken + entities: + - uid: 15844 + components: + - pos: -27.5,54.5 + parent: 1 + type: Transform +- proto: WelderIndustrialAdvanced + entities: + - uid: 15838 + components: + - pos: -82.43898,31.548532 + parent: 1 + type: Transform +- proto: WeldingFuelTankFull + entities: + - uid: 3565 + components: + - pos: -50.5,-10.5 + parent: 1 + type: Transform + - uid: 5416 + components: + - pos: -20.5,2.5 + parent: 1 + type: Transform + - uid: 5417 + components: + - pos: -29.5,-0.5 + parent: 1 + type: Transform + - uid: 5421 + components: + - pos: 17.5,-4.5 + parent: 1 + type: Transform + - uid: 5613 + components: + - pos: -48.5,15.5 + parent: 1 + type: Transform + - uid: 5615 + components: + - pos: -50.5,29.5 + parent: 1 + type: Transform + - uid: 5711 + components: + - pos: -23.5,20.5 + parent: 1 + type: Transform + - uid: 5786 + components: + - pos: -7.5,20.5 + parent: 1 + type: Transform + - uid: 10364 + components: + - pos: -36.5,54.5 + parent: 1 + type: Transform + - uid: 10387 + components: + - pos: 0.5,45.5 + parent: 1 + type: Transform + - uid: 10475 + components: + - pos: -51.5,44.5 + parent: 1 + type: Transform + - uid: 11051 + components: + - pos: -70.5,35.5 + parent: 1 + type: Transform + - uid: 12898 + components: + - pos: 7.5,8.5 + parent: 1 + type: Transform + - uid: 12912 + components: + - pos: 20.5,25.5 + parent: 1 + type: Transform + - uid: 14307 + components: + - pos: -74.5,49.5 + parent: 1 + type: Transform + - uid: 14588 + components: + - pos: -67.5,8.5 + parent: 1 + type: Transform +- proto: Windoor + entities: + - uid: 275 + components: + - rot: 3.141592653589793 rad + pos: -7.5,3.5 + parent: 1 + type: Transform + - uid: 3758 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,0.5 + parent: 1 + type: Transform + - uid: 3759 + components: + - rot: -1.5707963267948966 rad + pos: -39.5,1.5 + parent: 1 + type: Transform + - uid: 3760 + components: + - rot: 3.141592653589793 rad + pos: -38.5,2.5 + parent: 1 + type: Transform + - uid: 3761 + components: + - rot: 3.141592653589793 rad + pos: -37.5,2.5 + parent: 1 + type: Transform + - uid: 3762 + components: + - rot: 3.141592653589793 rad + pos: -36.5,2.5 + parent: 1 + type: Transform + - uid: 3763 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,1.5 + parent: 1 + type: Transform + - uid: 3764 + components: + - rot: 1.5707963267948966 rad + pos: -35.5,0.5 + parent: 1 + type: Transform + - uid: 6963 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,44.5 + parent: 1 + type: Transform + - uid: 6964 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,43.5 + parent: 1 + type: Transform + - uid: 6965 + components: + - rot: -1.5707963267948966 rad + pos: -45.5,42.5 + parent: 1 + type: Transform + - uid: 13999 + components: + - pos: -69.5,43.5 + parent: 1 + type: Transform + - uid: 14360 + components: + - rot: -1.5707963267948966 rad + pos: -62.5,14.5 + parent: 1 + type: Transform + - uid: 14826 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,1.5 + parent: 1 + type: Transform +- proto: WindoorChapelLocked + entities: + - uid: 1648 + components: + - pos: 20.5,0.5 + parent: 1 + type: Transform +- proto: WindoorHydroponicsLocked + entities: + - uid: 6888 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,42.5 + parent: 1 + type: Transform + - uid: 6889 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,43.5 + parent: 1 + type: Transform + - uid: 6962 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,44.5 + parent: 1 + type: Transform +- proto: WindoorKitchenHydroponicsLocked + entities: + - uid: 6883 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,46.5 + parent: 1 + type: Transform + - uid: 6884 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,45.5 + parent: 1 + type: Transform + - uid: 6885 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,44.5 + parent: 1 + type: Transform + - uid: 6886 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,43.5 + parent: 1 + type: Transform +- proto: WindoorKitchenLocked + entities: + - uid: 6904 + components: + - rot: 3.141592653589793 rad + pos: -36.5,41.5 + parent: 1 + type: Transform + - uid: 6905 + components: + - rot: 3.141592653589793 rad + pos: -35.5,41.5 + parent: 1 + type: Transform +- proto: WindoorSecure + entities: + - uid: 1652 + components: + - rot: 3.141592653589793 rad + pos: -0.5,28.5 + parent: 1 + type: Transform + - uid: 1653 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,26.5 + parent: 1 + type: Transform + - uid: 1654 + components: + - rot: 1.5707963267948966 rad + pos: 1.5,25.5 + parent: 1 + type: Transform + - uid: 6655 + components: + - pos: -19.5,36.5 + parent: 1 + type: Transform + - uid: 6656 + components: + - rot: 1.5707963267948966 rad + pos: -18.5,35.5 + parent: 1 + type: Transform + - uid: 6657 + components: + - rot: 3.141592653589793 rad + pos: -22.5,34.5 + parent: 1 + type: Transform + - uid: 7877 + components: + - pos: -47.5,56.5 + parent: 1 + type: Transform + - uid: 7878 + components: + - rot: 3.141592653589793 rad + pos: -47.5,63.5 + parent: 1 + type: Transform + - uid: 13321 + components: + - pos: -0.5,7.5 + parent: 1 + type: Transform + - uid: 13322 + components: + - pos: 0.5,7.5 + parent: 1 + type: Transform + - uid: 13370 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,54.5 + parent: 1 + type: Transform +- proto: WindoorSecureArmoryLocked + entities: + - uid: 7874 + components: + - rot: 3.141592653589793 rad + pos: -47.5,56.5 + parent: 1 + type: Transform + - uid: 7875 + components: + - pos: -47.5,63.5 + parent: 1 + type: Transform +- proto: WindoorSecureCargoLocked + entities: + - uid: 3625 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,0.5 + parent: 1 + type: Transform + - uid: 3626 + components: + - pos: -38.5,2.5 + parent: 1 + type: Transform + - uid: 3627 + components: + - rot: 1.5707963267948966 rad + pos: -39.5,1.5 + parent: 1 + type: Transform + - uid: 3635 + components: + - pos: -37.5,2.5 + parent: 1 + type: Transform + - uid: 3636 + components: + - pos: -36.5,2.5 + parent: 1 + type: Transform + - uid: 3637 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,1.5 + parent: 1 + type: Transform + - uid: 3638 + components: + - rot: -1.5707963267948966 rad + pos: -35.5,0.5 + parent: 1 + type: Transform + - uid: 14713 + components: + - rot: -1.5707963267948966 rad + pos: -42.5,1.5 + parent: 1 + type: Transform +- proto: WindoorSecureChemistryLocked + entities: + - uid: 1649 + components: + - pos: -0.5,28.5 + parent: 1 + type: Transform + - uid: 1650 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,26.5 + parent: 1 + type: Transform + - uid: 1651 + components: + - rot: -1.5707963267948966 rad + pos: 1.5,25.5 + parent: 1 + type: Transform +- proto: WindoorSecureEngineeringLocked + entities: + - uid: 2800 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,8.5 + parent: 1 + type: Transform + - uid: 13624 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,32.5 + parent: 1 + type: Transform +- proto: WindoorSecureHeadOfPersonnelLocked + entities: + - uid: 3458 + components: + - rot: 3.141592653589793 rad + pos: -19.5,36.5 + parent: 1 + type: Transform +- proto: WindoorSecureMedicalLocked + entities: + - uid: 2342 + components: + - rot: 3.141592653589793 rad + pos: 10.5,13.5 + parent: 1 + type: Transform + - uid: 2343 + components: + - rot: 3.141592653589793 rad + pos: 8.5,13.5 + parent: 1 + type: Transform + - uid: 2344 + components: + - rot: 3.141592653589793 rad + pos: 6.5,13.5 + parent: 1 + type: Transform + - uid: 2798 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,13.5 + parent: 1 + type: Transform +- proto: WindoorSecureScienceLocked + entities: + - uid: 220 + components: + - pos: -5.5,-14.5 + parent: 1 + type: Transform + - uid: 274 + components: + - pos: -7.5,3.5 + parent: 1 + type: Transform +- proto: WindoorSecureSecurityLocked + entities: + - uid: 5570 + components: + - pos: -16.5,24.5 + parent: 1 + type: Transform + - uid: 7871 + components: + - rot: 3.141592653589793 rad + pos: -57.5,52.5 + parent: 1 + type: Transform + - links: + - 4985 + type: DeviceLinkSink + - uid: 7872 + components: + - rot: 3.141592653589793 rad + pos: -54.5,52.5 + parent: 1 + type: Transform + - links: + - 4986 + type: DeviceLinkSink + - uid: 7873 + components: + - rot: 3.141592653589793 rad + pos: -51.5,52.5 + parent: 1 + type: Transform + - links: + - 4987 + type: DeviceLinkSink + - uid: 13318 + components: + - rot: 3.141592653589793 rad + pos: -0.5,7.5 + parent: 1 + type: Transform + - uid: 13319 + components: + - rot: 3.141592653589793 rad + pos: 0.5,7.5 + parent: 1 + type: Transform + - uid: 15975 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,9.5 + parent: 1 + type: Transform +- proto: WindoorServiceLocked + entities: + - uid: 2799 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,14.5 + parent: 1 + type: Transform +- proto: WindoorTheatreLocked + entities: + - uid: 3417 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,29.5 + parent: 1 + type: Transform +- proto: Window + entities: + - uid: 4 + components: + - pos: -8.5,3.5 + parent: 1 + type: Transform + - uid: 36 + components: + - pos: -6.5,3.5 + parent: 1 + type: Transform + - uid: 39 + components: + - pos: -7.5,-4.5 + parent: 1 + type: Transform + - uid: 57 + components: + - pos: -7.5,-5.5 + parent: 1 + type: Transform + - uid: 66 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-4.5 + parent: 1 + type: Transform + - uid: 177 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-3.5 + parent: 1 + type: Transform + - uid: 180 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-5.5 + parent: 1 + type: Transform + - uid: 227 + components: + - rot: -1.5707963267948966 rad + pos: -14.5,-1.5 + parent: 1 + type: Transform + - uid: 1051 + components: + - pos: 18.5,7.5 + parent: 1 + type: Transform + - uid: 1250 + components: + - pos: 11.5,27.5 + parent: 1 + type: Transform + - uid: 1336 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,34.5 + parent: 1 + type: Transform + - uid: 1340 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,30.5 + parent: 1 + type: Transform + - uid: 1341 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,29.5 + parent: 1 + type: Transform + - uid: 1344 + components: + - rot: 1.5707963267948966 rad + pos: -5.5,32.5 + parent: 1 + type: Transform + - uid: 1371 + components: + - pos: 5.5,23.5 + parent: 1 + type: Transform + - uid: 1372 + components: + - pos: 5.5,22.5 + parent: 1 + type: Transform + - uid: 1437 + components: + - rot: 3.141592653589793 rad + pos: 24.5,39.5 + parent: 1 + type: Transform + - uid: 1438 + components: + - rot: 3.141592653589793 rad + pos: 24.5,40.5 + parent: 1 + type: Transform + - uid: 1625 + components: + - pos: 12.5,27.5 + parent: 1 + type: Transform + - uid: 1635 + components: + - pos: 5.5,26.5 + parent: 1 + type: Transform + - uid: 3047 + components: + - pos: -26.5,30.5 + parent: 1 + type: Transform + - uid: 3082 + components: + - pos: -27.5,7.5 + parent: 1 + type: Transform + - uid: 3083 + components: + - pos: -26.5,7.5 + parent: 1 + type: Transform + - uid: 3084 + components: + - pos: -25.5,7.5 + parent: 1 + type: Transform + - uid: 3131 + components: + - pos: -23.5,30.5 + parent: 1 + type: Transform + - uid: 3423 + components: + - pos: -35.5,15.5 + parent: 1 + type: Transform + - uid: 3425 + components: + - pos: -35.5,18.5 + parent: 1 + type: Transform + - uid: 3426 + components: + - pos: -35.5,19.5 + parent: 1 + type: Transform + - uid: 3428 + components: + - pos: -35.5,21.5 + parent: 1 + type: Transform + - uid: 3549 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,-0.5 + parent: 1 + type: Transform + - uid: 3568 + components: + - pos: -38.5,-8.5 + parent: 1 + type: Transform + - uid: 3576 + components: + - rot: -1.5707963267948966 rad + pos: -33.5,-4.5 + parent: 1 + type: Transform + - uid: 3586 + components: + - pos: -42.5,-4.5 + parent: 1 + type: Transform + - uid: 3591 + components: + - pos: -42.5,-3.5 + parent: 1 + type: Transform + - uid: 3592 + components: + - pos: -42.5,-1.5 + parent: 1 + type: Transform + - uid: 3608 + components: + - pos: -44.5,3.5 + parent: 1 + type: Transform + - uid: 3640 + components: + - pos: -38.5,-0.5 + parent: 1 + type: Transform + - uid: 3641 + components: + - pos: -36.5,-0.5 + parent: 1 + type: Transform + - uid: 3710 + components: + - pos: -37.5,-8.5 + parent: 1 + type: Transform + - uid: 3774 + components: + - rot: -1.5707963267948966 rad + pos: -31.5,-4.5 + parent: 1 + type: Transform + - uid: 5253 + components: + - pos: -55.5,18.5 + parent: 1 + type: Transform + - uid: 5254 + components: + - pos: -55.5,19.5 + parent: 1 + type: Transform + - uid: 5851 + components: + - pos: -14.5,44.5 + parent: 1 + type: Transform + - uid: 5852 + components: + - pos: -14.5,43.5 + parent: 1 + type: Transform + - uid: 5856 + components: + - pos: -14.5,39.5 + parent: 1 + type: Transform + - uid: 5857 + components: + - pos: -14.5,38.5 + parent: 1 + type: Transform + - uid: 5860 + components: + - pos: -14.5,35.5 + parent: 1 + type: Transform + - uid: 6272 + components: + - pos: -59.5,10.5 + parent: 1 + type: Transform + - uid: 6753 + components: + - rot: 1.5707963267948966 rad + pos: -44.5,34.5 + parent: 1 + type: Transform + - uid: 6754 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,34.5 + parent: 1 + type: Transform + - uid: 6755 + components: + - rot: 1.5707963267948966 rad + pos: -40.5,34.5 + parent: 1 + type: Transform + - uid: 6784 + components: + - rot: 1.5707963267948966 rad + pos: -42.5,48.5 + parent: 1 + type: Transform + - uid: 6794 + components: + - rot: 1.5707963267948966 rad + pos: -45.5,41.5 + parent: 1 + type: Transform + - uid: 6808 + components: + - pos: -40.5,53.5 + parent: 1 + type: Transform + - uid: 6820 + components: + - rot: 1.5707963267948966 rad + pos: -41.5,48.5 + parent: 1 + type: Transform + - uid: 6949 + components: + - pos: -41.5,53.5 + parent: 1 + type: Transform + - uid: 9008 + components: + - rot: 3.141592653589793 rad + pos: 24.5,38.5 + parent: 1 + type: Transform + - uid: 9009 + components: + - rot: 3.141592653589793 rad + pos: 24.5,41.5 + parent: 1 + type: Transform + - uid: 9018 + components: + - pos: -59.5,11.5 + parent: 1 + type: Transform + - uid: 10249 + components: + - rot: -1.5707963267948966 rad + pos: -34.5,-4.5 + parent: 1 + type: Transform + - uid: 10251 + components: + - rot: -1.5707963267948966 rad + pos: -32.5,-4.5 + parent: 1 + type: Transform + - uid: 10924 + components: + - pos: -64.5,43.5 + parent: 1 + type: Transform + - uid: 10925 + components: + - pos: -63.5,43.5 + parent: 1 + type: Transform + - uid: 10929 + components: + - pos: -61.5,43.5 + parent: 1 + type: Transform + - uid: 11934 + components: + - pos: -59.5,13.5 + parent: 1 + type: Transform + - uid: 13054 + components: + - pos: -59.5,14.5 + parent: 1 + type: Transform +- proto: WindowDirectional + entities: + - uid: 1229 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,25.5 + parent: 1 + type: Transform + - uid: 1632 + components: + - rot: -1.5707963267948966 rad + pos: 11.5,26.5 + parent: 1 + type: Transform + - uid: 1647 + components: + - pos: 19.5,0.5 + parent: 1 + type: Transform + - uid: 2695 + components: + - rot: 3.141592653589793 rad + pos: -25.5,30.5 + parent: 1 + type: Transform + - uid: 3133 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,15.5 + parent: 1 + type: Transform +- proto: WindowFrostedDirectional + entities: + - uid: 1225 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,30.5 + parent: 1 + type: Transform + - uid: 1410 + components: + - rot: 1.5707963267948966 rad + pos: 8.5,31.5 + parent: 1 + type: Transform + - uid: 1411 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,30.5 + parent: 1 + type: Transform + - uid: 1412 + components: + - rot: 1.5707963267948966 rad + pos: 10.5,31.5 + parent: 1 + type: Transform +- proto: WindowReinforcedDirectional + entities: + - uid: 1023 + components: + - rot: -1.5707963267948966 rad + pos: 31.5,3.5 + parent: 1 + type: Transform + - uid: 1024 + components: + - rot: -1.5707963267948966 rad + pos: 31.5,2.5 + parent: 1 + type: Transform + - uid: 1025 + components: + - rot: -1.5707963267948966 rad + pos: 31.5,1.5 + parent: 1 + type: Transform + - uid: 2309 + components: + - rot: 1.5707963267948966 rad + pos: -23.5,57.5 + parent: 1 + type: Transform + - uid: 2310 + components: + - pos: -23.5,57.5 + parent: 1 + type: Transform + - uid: 2333 + components: + - rot: 3.141592653589793 rad + pos: 7.5,13.5 + parent: 1 + type: Transform + - uid: 2334 + components: + - rot: 3.141592653589793 rad + pos: 9.5,13.5 + parent: 1 + type: Transform + - uid: 2335 + components: + - rot: 3.141592653589793 rad + pos: 11.5,13.5 + parent: 1 + type: Transform + - uid: 2336 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,13.5 + parent: 1 + type: Transform + - uid: 2337 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,12.5 + parent: 1 + type: Transform + - uid: 2338 + components: + - rot: 1.5707963267948966 rad + pos: 7.5,11.5 + parent: 1 + type: Transform + - uid: 2339 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,13.5 + parent: 1 + type: Transform + - uid: 2340 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,12.5 + parent: 1 + type: Transform + - uid: 2341 + components: + - rot: 1.5707963267948966 rad + pos: 9.5,11.5 + parent: 1 + type: Transform + - uid: 2786 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,8.5 + parent: 1 + type: Transform + - uid: 2790 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,55.5 + parent: 1 + type: Transform + - uid: 2801 + components: + - rot: -1.5707963267948966 rad + pos: -10.5,9.5 + parent: 1 + type: Transform + - uid: 2884 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,10.5 + parent: 1 + type: Transform + - uid: 4201 + components: + - rot: 3.141592653589793 rad + pos: -14.5,14.5 + parent: 1 + type: Transform + - uid: 4561 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,14.5 + parent: 1 + type: Transform + - uid: 4729 + components: + - rot: 1.5707963267948966 rad + pos: -14.5,12.5 + parent: 1 + type: Transform + - uid: 5569 + components: + - pos: -17.5,24.5 + parent: 1 + type: Transform + - uid: 5684 + components: + - pos: -15.5,24.5 + parent: 1 + type: Transform + - uid: 6658 + components: + - rot: 3.141592653589793 rad + pos: -21.5,34.5 + parent: 1 + type: Transform + - uid: 6659 + components: + - rot: 3.141592653589793 rad + pos: -20.5,34.5 + parent: 1 + type: Transform + - uid: 6660 + components: + - rot: 3.141592653589793 rad + pos: -19.5,34.5 + parent: 1 + type: Transform + - uid: 13368 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,56.5 + parent: 1 + type: Transform + - uid: 13369 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,55.5 + parent: 1 + type: Transform + - uid: 13371 + components: + - rot: 1.5707963267948966 rad + pos: -72.5,53.5 + parent: 1 + type: Transform + - uid: 13372 + components: + - pos: -73.5,53.5 + parent: 1 + type: Transform + - uid: 13373 + components: + - pos: -72.5,53.5 + parent: 1 + type: Transform + - uid: 13625 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,33.5 + parent: 1 + type: Transform + - uid: 13626 + components: + - rot: 1.5707963267948966 rad + pos: -59.5,31.5 + parent: 1 + type: Transform + - uid: 15126 + components: + - rot: -1.5707963267948966 rad + pos: -21.5,34.5 + parent: 1 + type: Transform + - uid: 15127 + components: + - pos: -21.5,34.5 + parent: 1 + type: Transform + - uid: 15128 + components: + - pos: -20.5,34.5 + parent: 1 + type: Transform + - uid: 15129 + components: + - pos: -19.5,34.5 + parent: 1 + type: Transform + - uid: 15130 + components: + - rot: 1.5707963267948966 rad + pos: -19.5,34.5 + parent: 1 + type: Transform + - uid: 15839 + components: + - rot: -1.5707963267948966 rad + pos: -25.5,54.5 + parent: 1 + type: Transform + - uid: 15909 + components: + - pos: -25.5,54.5 + parent: 1 + type: Transform +- proto: Wrench + entities: + - uid: 376 + components: + - pos: 2.4658198,-11.416069 + parent: 1 + type: Transform + - uid: 2378 + components: + - pos: 8.571079,33.55169 + parent: 1 + type: Transform + - uid: 5648 + components: + - pos: -24.486898,29.543127 + parent: 1 + type: Transform +- proto: YellowOxygenTank + entities: + - uid: 14198 + components: + - pos: -77.3013,42.445312 + parent: 1 + type: Transform +... From 873e287f26cf1e5547753c148241f9a582052576 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 14 Oct 2023 17:52:38 -0400 Subject: [PATCH 107/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 02e19b66cca114..5142dad175f9c4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,17 +1,4 @@ Entries: -- author: chromiumboy - changes: - - {message: Obstacles to deter hackers can now be added to airlocks., type: Add} - - {message: Security and Atmospherics airlocks start with a moderate level of protection. - Command airlocks start with an even higher level of security., type: Add} - id: 4506 - time: '2023-08-10T08:33:04.0000000+00:00' -- author: EmoGarbage404 - changes: - - {message: The Syndicate are no longer interested in stealing Cargo's request computer - boards., type: Remove} - id: 4507 - time: '2023-08-10T08:34:38.0000000+00:00' - author: Equivocateur changes: - {message: 'Added an electrical disruption kit to syndicate operatives, containing @@ -2949,3 +2936,13 @@ Entries: - {message: Reduced the bombsuit helmet's explosive resistance., type: Tweak} id: 5005 time: '2023-10-14T17:34:58.0000000+00:00' +- author: JoeHammad + changes: + - {message: mindshields to meta station armory, type: Add} + id: 5006 + time: '2023-10-14T21:50:44.0000000+00:00' +- author: JoeHammad + changes: + - {message: 'chem dispensers to barratry, you can stop crying now', type: Add} + id: 5007 + time: '2023-10-14T21:51:33.0000000+00:00' From 8801885b355732553fb7dac1d335e92e59373133 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 14 Oct 2023 14:56:06 -0700 Subject: [PATCH 108/245] Fix not being able to sort by playtime in the F7 players tab (#21004) --- .../UI/Bwoink/BwoinkWindow.xaml.cs | 2 +- .../UI/Tabs/PlayerTab/PlayerTab.xaml.cs | 3 ++- .../UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs | 20 ++++++++++++++----- Content.Shared/Administration/PlayerInfo.cs | 8 ++++---- Resources/Changelog/Admin.yml | 5 +++++ 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs b/Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs index 2562da3fa77573..f8d06f758f40dc 100644 --- a/Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs +++ b/Content.Client/Administration/UI/Bwoink/BwoinkWindow.xaml.cs @@ -22,7 +22,7 @@ public BwoinkWindow() if (sel.OverallPlaytime != null) { - Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString()}"; + Title += $" | {Loc.GetString("generic-playtime-title")}: {sel.PlaytimeString}"; } } }; diff --git a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs index ad8e4392c2ab86..e6a64fc48d4a0f 100644 --- a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs @@ -121,7 +121,7 @@ private void RefreshPlayerList(IReadOnlyList players) player.Antag ? "YES" : "NO", new StyleBoxFlat(useAltColor ? _altColor : _defaultColor), player.Connected, - player.PlaytimeString()); + player.PlaytimeString); entry.PlayerEntity = player.NetEntity; entry.OnPressed += args => OnEntryPressed?.Invoke(args); entry.ToolTip = Loc.GetString("player-tab-entry-tooltip"); @@ -150,6 +150,7 @@ private int Compare(PlayerInfo x, PlayerInfo y) Header.Character => Compare(x.CharacterName, y.CharacterName), Header.Job => Compare(x.StartingJob, y.StartingJob), Header.Antagonist => x.Antag.CompareTo(y.Antag), + Header.Playtime => Compare(x.PlaytimeString, y.PlaytimeString), _ => 1 }; } diff --git a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs index 08e414b655ecd1..98de6dafa98dfa 100644 --- a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs @@ -19,6 +19,7 @@ public PlayerTabHeader() CharacterLabel.OnKeyBindDown += CharacterClicked; JobLabel.OnKeyBindDown += JobClicked; AntagonistLabel.OnKeyBindDown += AntagonistClicked; + PlaytimeLabel.OnKeyBindDown += PlaytimeClicked; } public Label GetHeader(Header header) @@ -29,6 +30,7 @@ public Label GetHeader(Header header) Header.Character => CharacterLabel, Header.Job => JobLabel, Header.Antagonist => AntagonistLabel, + Header.Playtime => PlaytimeLabel, _ => throw new ArgumentOutOfRangeException(nameof(header), header, null) }; } @@ -39,6 +41,7 @@ public void ResetHeaderText() CharacterLabel.Text = Loc.GetString("player-tab-character"); JobLabel.Text = Loc.GetString("player-tab-job"); AntagonistLabel.Text = Loc.GetString("player-tab-antagonist"); + PlaytimeLabel.Text = Loc.GetString("player-tab-playtime"); } private void HeaderClicked(GUIBoundKeyEventArgs args, Header header) @@ -72,16 +75,22 @@ private void AntagonistClicked(GUIBoundKeyEventArgs args) HeaderClicked(args, Header.Antagonist); } + private void PlaytimeClicked(GUIBoundKeyEventArgs args) + { + HeaderClicked(args, Header.Playtime); + } + protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { - UsernameLabel.OnKeyBindDown += UsernameClicked; - CharacterLabel.OnKeyBindDown += CharacterClicked; - JobLabel.OnKeyBindDown += JobClicked; - AntagonistLabel.OnKeyBindDown += AntagonistClicked; + UsernameLabel.OnKeyBindDown -= UsernameClicked; + CharacterLabel.OnKeyBindDown -= CharacterClicked; + JobLabel.OnKeyBindDown -= JobClicked; + AntagonistLabel.OnKeyBindDown -= AntagonistClicked; + PlaytimeLabel.OnKeyBindDown -= PlaytimeClicked; } } @@ -90,6 +99,7 @@ public enum Header Username, Character, Job, - Antagonist + Antagonist, + Playtime } } diff --git a/Content.Shared/Administration/PlayerInfo.cs b/Content.Shared/Administration/PlayerInfo.cs index c72329aedc9157..74fd7e9dc06b3c 100644 --- a/Content.Shared/Administration/PlayerInfo.cs +++ b/Content.Shared/Administration/PlayerInfo.cs @@ -16,9 +16,9 @@ public record PlayerInfo( bool ActiveThisRound, TimeSpan? OverallPlaytime) { - public string PlaytimeString() - { - return OverallPlaytime?.ToString("%d':'hh':'mm") ?? Loc.GetString("generic-unknown-title"); - } + private string? _playtimeString; + + public string PlaytimeString => _playtimeString ??= + OverallPlaytime?.ToString("%d':'hh':'mm") ?? Loc.GetString("generic-unknown-title"); } } diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 9aa77155cc50fe..5a24f0d9794cf2 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -36,3 +36,8 @@ Entries: - {message: 'Add pop sound effect when using the erase admin verb.', type: Tweak} id: 5 time: '2023-10-14T09:47:00.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: 'Fixed not being able to sort the F7 players tab by playtime.', type: Fix} + id: 6 + time: '2023-10-14T23:52:00.0000000+00:00' From e5f5a288291fa7b27927731416bf395cf3222df1 Mon Sep 17 00:00:00 2001 From: Whisper <121047731+QuietlyWhisper@users.noreply.github.com> Date: Sun, 15 Oct 2023 17:06:55 -0400 Subject: [PATCH 109/245] adds "idk." to the text to emote list (#21015) --- Content.Server/Chat/Managers/ChatSanitizationManager.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Server/Chat/Managers/ChatSanitizationManager.cs b/Content.Server/Chat/Managers/ChatSanitizationManager.cs index b9932ec212b84d..d4a284b6cd0054 100644 --- a/Content.Server/Chat/Managers/ChatSanitizationManager.cs +++ b/Content.Server/Chat/Managers/ChatSanitizationManager.cs @@ -68,7 +68,8 @@ public sealed class ChatSanitizationManager : IChatSanitizationManager { "kek.", "chatsan-laughs" }, { "o7", "chatsan-salutes" }, { ";_;7", "chatsan-tearfully-salutes"}, - { "idk", "chatsan-shrugs" } + { "idk", "chatsan-shrugs" }, + { "idk.", "chatsan-shrugs" } }; private bool _doSanitize; From d10e33cff0d8068e2f501b8b578dada0b5c32bc2 Mon Sep 17 00:00:00 2001 From: ike709 Date: Sun, 15 Oct 2023 15:17:44 -0700 Subject: [PATCH 110/245] Allow Hand-Prying Most Unpowered Airlocks (#21002) Co-authored-by: ike709 --- Content.Shared/Prying/Systems/PryingSystem.cs | 2 +- .../Structures/Doors/Airlocks/base_structureairlocks.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Prying/Systems/PryingSystem.cs b/Content.Shared/Prying/Systems/PryingSystem.cs index 3bb3a9bc9b087f..40b77efe2287a0 100644 --- a/Content.Shared/Prying/Systems/PryingSystem.cs +++ b/Content.Shared/Prying/Systems/PryingSystem.cs @@ -92,7 +92,7 @@ public bool TryPry(EntityUid target, EntityUid user, out DoAfterId? id) // to be marked as handled as a popup would be generated on failure. return true; - return StartPry(target, user, null, 1.0f, out id); + return StartPry(target, user, null, 0.1f, out id); // hand-prying is much slower } private bool CanPry(EntityUid target, EntityUid user, PryingComponent? comp = null) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index 35f2e4d05fb832..a6ca726967f48e 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -136,6 +136,7 @@ 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 + - type: PryUnpowered placement: mode: SnapgridCenter From 212a89272b2be2c66ca2c436a60c7b2ca0d15843 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 15 Oct 2023 18:18:54 -0400 Subject: [PATCH 111/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5142dad175f9c4..c3f6082c3711a3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Equivocateur - changes: - - {message: 'Added an electrical disruption kit to syndicate operatives, containing - 3 EMP grenades and an EMP implanter. Costs 6 telecrystals.', type: Add} - - {message: Changed EMP grenade pricing to 2 telecrystals., type: Tweak} - - {message: Changed EMP implant pricing to 3 telecrystals., type: Tweak} - id: 4508 - time: '2023-08-10T08:40:17.0000000+00:00' - author: kxvvv changes: - {message: Added a homemade stun weapon., type: Add} @@ -2946,3 +2938,9 @@ Entries: - {message: 'chem dispensers to barratry, you can stop crying now', type: Add} id: 5007 time: '2023-10-14T21:51:33.0000000+00:00' +- author: ike709 + changes: + - {message: 'All non-high-security airlocks can now be pried open by hand when unpowered, + albeit much slower than using a crowbar', type: Tweak} + id: 5008 + time: '2023-10-15T22:17:45.0000000+00:00' From bfb5bcda1c3a78df5127a88f505b9afbcfbbdb6c Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sun, 15 Oct 2023 23:19:49 +0100 Subject: [PATCH 112/245] add rainbow fish (#20955) Co-authored-by: deltanedas <@deltanedas:kde.org> --- Resources/Prototypes/Entities/Mobs/NPCs/carp.yml | 12 ++++++++++++ Resources/Prototypes/Procedural/salvage_factions.yml | 3 +++ 2 files changed, 15 insertions(+) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml index 5b32601033dd63..d2f597fe41c4c7 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml @@ -128,6 +128,18 @@ - type: TypingIndicator proto: robot +- type: entity + parent: MobCarp + id: MobCarpRainbow + name: rainbow carp + description: Wow such a shiny fishie! + components: + - type: PointLight + radius: 1.5 + energy: 0.5 + - type: RgbLightController + layers: [ 0 ] + - type: entity id: MobCarpSalvage parent: MobCarp diff --git a/Resources/Prototypes/Procedural/salvage_factions.yml b/Resources/Prototypes/Procedural/salvage_factions.yml index 1097ed90497be5..847a40ac02512c 100644 --- a/Resources/Prototypes/Procedural/salvage_factions.yml +++ b/Resources/Prototypes/Procedural/salvage_factions.yml @@ -33,6 +33,9 @@ #- proto: MobCarpMagic # cost: 5 # prob: 0.1 + - proto: MobCarpRainbow # carp version of rouny... + cost: 3 + prob: 0.05 - proto: MobDragonDungeon cost: 10 prob: 0.02 From 687ceee4ed42b5e9ccfaa6f33f2cffe6a467bd90 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Mon, 16 Oct 2023 05:09:06 +0100 Subject: [PATCH 113/245] Rolling pin can be worn in belt slot (#21019) * sprite swap * rolling pin can be put in belt * test pls --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Prototypes/Entities/Objects/Tools/tools.yml | 5 +++++ .../Clothing/Belt/belt_overlay.rsi/meta.json | 4 ---- .../Tools/rolling_pin.rsi/equipped-BELT.png} | Bin .../Objects/Tools/rolling_pin.rsi/meta.json | 6 +++++- 4 files changed, 10 insertions(+), 5 deletions(-) rename Resources/Textures/{Clothing/Belt/belt_overlay.rsi/rolling_pin-equipped-BELT.png => Objects/Tools/rolling_pin.rsi/equipped-BELT.png} (100%) diff --git a/Resources/Prototypes/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/Entities/Objects/Tools/tools.yml index c8cca769c799df..9b133735353b48 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/tools.yml @@ -512,6 +512,11 @@ - type: Item sprite: Objects/Tools/rolling_pin.rsi size: 10 + - type: Clothing + sprite: Objects/Tools/rolling_pin.rsi + quickEquip: false + slots: + - Belt - type: ItemCooldown - type: MeleeWeapon damage: diff --git a/Resources/Textures/Clothing/Belt/belt_overlay.rsi/meta.json b/Resources/Textures/Clothing/Belt/belt_overlay.rsi/meta.json index f46241eab5b4d8..b8464e42430855 100644 --- a/Resources/Textures/Clothing/Belt/belt_overlay.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/belt_overlay.rsi/meta.json @@ -142,10 +142,6 @@ "name": "plasmatank-equipped-BELT", "directions": 4 }, - { - "name": "rolling_pin-equipped-BELT", - "directions": 4 - }, { "name": "rpd-equipped-BELT", "directions": 4 diff --git a/Resources/Textures/Clothing/Belt/belt_overlay.rsi/rolling_pin-equipped-BELT.png b/Resources/Textures/Objects/Tools/rolling_pin.rsi/equipped-BELT.png similarity index 100% rename from Resources/Textures/Clothing/Belt/belt_overlay.rsi/rolling_pin-equipped-BELT.png rename to Resources/Textures/Objects/Tools/rolling_pin.rsi/equipped-BELT.png diff --git a/Resources/Textures/Objects/Tools/rolling_pin.rsi/meta.json b/Resources/Textures/Objects/Tools/rolling_pin.rsi/meta.json index 407ebc30c0ed40..bc2ff1de9dc242 100644 --- a/Resources/Textures/Objects/Tools/rolling_pin.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/rolling_pin.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "icon.png taken from https://github.com/DesertRose2/desertrose/blob/0348c98f8343b5cb82d87df12411ba647b2b1b4f/icons/obj/kitchen.dmi. Inhand sprites created by deltanedas (github) for SS14.", + "copyright": "icon.png taken from https://github.com/DesertRose2/desertrose/blob/0348c98f8343b5cb82d87df12411ba647b2b1b4f/icons/obj/kitchen.dmi. Inhand sprites created by deltanedas (github) for SS14. Belt sprite taken from unknown file in tgstation at commit https://github.com/tgstation/tgstation/commit/dc89ef0239830774bd3d9d7d6c8da2856da2b869", "size": { "x": 32, "y": 32 @@ -17,6 +17,10 @@ { "name": "inhand-right", "directions": 4 + }, + { + "name": "equipped-BELT", + "directions": 4 } ] } From 58ae37957e2921becdf6f3dad42af16bb27fcd2c Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 16 Oct 2023 16:26:45 +1100 Subject: [PATCH 114/245] Fix low tickrate eye lerping (#21001) --- Content.Client/Eye/EyeLerpingSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/Eye/EyeLerpingSystem.cs b/Content.Client/Eye/EyeLerpingSystem.cs index 79af9e719b8e0c..8e54196b81d40d 100644 --- a/Content.Client/Eye/EyeLerpingSystem.cs +++ b/Content.Client/Eye/EyeLerpingSystem.cs @@ -132,7 +132,7 @@ private Vector2 UpdateZoom(EntityUid uid, float frameTime, EyeComponent? eye = n return content.TargetZoom; } - var change = diff * 8f * frameTime; + var change = diff * Math.Min(8f * frameTime, 1); return eye.Zoom + change; } From 556e679ef52e47df9b24c15a2acee67de39aef16 Mon Sep 17 00:00:00 2001 From: iacore <74560659+iacore@users.noreply.github.com> Date: Mon, 16 Oct 2023 05:27:23 +0000 Subject: [PATCH 115/245] Make secure crate weldable (#21007) --- .../Prototypes/Recipes/Crafting/Graphs/storage/cratesecure.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/cratesecure.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/cratesecure.yml index f9875e4e2d2b43..2a9047077d58e0 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/cratesecure.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/cratesecure.yml @@ -21,6 +21,8 @@ - tool: Screwing doAfter: 5 conditions: + - !type:StorageWelded + welded: false - !type:Locked locked: false completed: From 27b9c35c57307413e7b7cee7c5db5072a6897d5b Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Oct 2023 01:28:28 -0400 Subject: [PATCH 116/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c3f6082c3711a3..2bc7e2e915a9e2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: kxvvv - changes: - - {message: Added a homemade stun weapon., type: Add} - id: 4509 - time: '2023-08-10T09:33:34.0000000+00:00' - author: mirrorcult changes: - {message: 'You can now construct chain link fencing. Bullets pass through it, @@ -2944,3 +2939,8 @@ Entries: albeit much slower than using a crowbar', type: Tweak} id: 5008 time: '2023-10-15T22:17:45.0000000+00:00' +- author: iacore + changes: + - {message: Secure crates are now weldable!, type: Fix} + id: 5009 + time: '2023-10-16T05:27:23.0000000+00:00' From 3ecaa6523e2b9357c08e7b9713e74c2a16b444e0 Mon Sep 17 00:00:00 2001 From: brainfood1183 <113240905+brainfood1183@users.noreply.github.com> Date: Mon, 16 Oct 2023 06:29:14 +0100 Subject: [PATCH 117/245] fixes behonkers, they now function like spitters and will attack via ai with behonk laser. (#21003) --- .../Prototypes/Body/Prototypes/behonker.yml | 11 -------- .../Entities/Mobs/NPCs/behonker.yml | 27 +++++++++++++++---- 2 files changed, 22 insertions(+), 16 deletions(-) delete mode 100644 Resources/Prototypes/Body/Prototypes/behonker.yml diff --git a/Resources/Prototypes/Body/Prototypes/behonker.yml b/Resources/Prototypes/Body/Prototypes/behonker.yml deleted file mode 100644 index 26289d580d5c17..00000000000000 --- a/Resources/Prototypes/Body/Prototypes/behonker.yml +++ /dev/null @@ -1,11 +0,0 @@ -- type: body - id: Behonker - name: "behonker" - root: hand 1 - slots: - hand 1: - part: LeftArmBorg - connections: - - hand 2 - hand 2: - part: LeftArmBorg diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml index cb7b9f4c015501..f833c2e8ed3917 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml @@ -13,7 +13,26 @@ - type: GhostTakeoverAvailable - type: HTN rootTask: - task: SimpleHostileCompound + task: SimpleRangedHostileCompound + - type: HitscanBatteryAmmoProvider + proto: RedLaser + fireCost: 62.5 + - type: Battery + maxCharge: 1000 + startingCharge: 1000 + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 40 + - type: Gun + fireRate: 0.75 + useKey: false + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: /Audio/Weapons/Guns/Gunshots/laser_clown.ogg + - type: SpamEmitSound + sound: + collection: BikeHorn - type: NpcFactionMember factions: - SimpleHostile @@ -74,6 +93,8 @@ spawned: - id: MaterialBananium1 amount: 2 + - id: WeaponBehonkerLaser + amount: 1 - type: MeleeWeapon hidden: true soundHit: @@ -92,10 +113,6 @@ Radiation: 10 - type: Input context: "human" - - type: Hands - showInHands: false - - type: Body - prototype: Behonker - type: entity name: behonker From e40172e07b3838322c0e646588ef64e36b5cb933 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Oct 2023 01:30:18 -0400 Subject: [PATCH 118/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2bc7e2e915a9e2..7de7ab992b6aed 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: mirrorcult - changes: - - {message: 'You can now construct chain link fencing. Bullets pass through it, - it''s very slowly vaultable, and you can construct gates. Expect to see it mapped - eventually.', type: Add} - id: 4510 - time: '2023-08-10T14:16:26.0000000+00:00' - author: mirrorcult changes: - {message: 'Liquid plasma rivers now spawn on snow planets (you may have noticed @@ -2944,3 +2937,8 @@ Entries: - {message: Secure crates are now weldable!, type: Fix} id: 5009 time: '2023-10-16T05:27:23.0000000+00:00' +- author: brainfood1183 + changes: + - {message: Behonkers are fixed (in combat use right click to fire laser), type: Fix} + id: 5010 + time: '2023-10-16T05:29:14.0000000+00:00' From c20bf50f4039bd6ba422dd35e910d10f410d1a85 Mon Sep 17 00:00:00 2001 From: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> Date: Sun, 15 Oct 2023 22:30:35 -0700 Subject: [PATCH 119/245] Fix sound on material reclaimer (#21030) * Fix saw sound error on client The sound tried to play using shared PlayPvs which doesn't work on client. PlayPredicted handles client and server. Fixed NextSound not playing again while continuously gibbing items. * Fix duplicate splat sound on Recycler gibbing --- Content.Server/Materials/MaterialReclaimerSystem.cs | 9 +++++++-- .../Materials/SharedMaterialReclaimerSystem.cs | 13 +++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Content.Server/Materials/MaterialReclaimerSystem.cs b/Content.Server/Materials/MaterialReclaimerSystem.cs index ce1f285fcf6123..2f8b43e83287f7 100644 --- a/Content.Server/Materials/MaterialReclaimerSystem.cs +++ b/Content.Server/Materials/MaterialReclaimerSystem.cs @@ -166,13 +166,17 @@ public override void Reclaim(EntityUid uid, var xform = Transform(uid); SpawnMaterialsFromComposition(uid, item, completion * component.Efficiency, xform: xform); - SpawnChemicalsFromComposition(uid, item, completion, component, xform); if (CanGib(uid, item, component)) { + SpawnChemicalsFromComposition(uid, item, completion, false, component, xform); _body.GibBody(item, true); _appearance.SetData(uid, RecyclerVisuals.Bloody, true); } + else + { + SpawnChemicalsFromComposition(uid, item, completion, true, component, xform); + } QueueDel(item); } @@ -213,6 +217,7 @@ private void SpawnMaterialsFromComposition(EntityUid reclaimer, private void SpawnChemicalsFromComposition(EntityUid reclaimer, EntityUid item, float efficiency, + bool sound = true, MaterialReclaimerComponent? reclaimerComponent = null, TransformComponent? xform = null, PhysicalCompositionComponent? composition = null) @@ -248,7 +253,7 @@ private void SpawnChemicalsFromComposition(EntityUid reclaimer, _solutionContainer.TryTransferSolution(reclaimer, reclaimerComponent.OutputSolution, totalChemicals, totalChemicals.Volume); if (totalChemicals.Volume > 0) { - _puddle.TrySpillAt(reclaimer, totalChemicals, out _, transformComponent: xform); + _puddle.TrySpillAt(reclaimer, totalChemicals, out _, sound, transformComponent: xform); } } } diff --git a/Content.Shared/Materials/SharedMaterialReclaimerSystem.cs b/Content.Shared/Materials/SharedMaterialReclaimerSystem.cs index 3f5832f69a9557..c3c712b617b31a 100644 --- a/Content.Shared/Materials/SharedMaterialReclaimerSystem.cs +++ b/Content.Shared/Materials/SharedMaterialReclaimerSystem.cs @@ -35,11 +35,17 @@ public override void Initialize() SubscribeLocalEvent(OnUnpaused); SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnEmagged); + SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnCollide); SubscribeLocalEvent(OnActiveStartup); SubscribeLocalEvent(OnActiveUnpaused); } + private void OnMapInit(EntityUid uid, MaterialReclaimerComponent component, MapInitEvent args) + { + component.NextSound = Timing.CurTime; + } + private void OnShutdown(EntityUid uid, MaterialReclaimerComponent component, ComponentShutdown args) { component.Stream?.Stop(); @@ -109,8 +115,11 @@ public bool TryStartProcessItem(EntityUid uid, EntityUid item, MaterialReclaimer } if (Timing.CurTime > component.NextSound) - component.Stream = _audio.PlayPvs(component.Sound, uid); - component.NextSound = Timing.CurTime + component.SoundCooldown; + { + component.Stream = _audio.PlayPredicted(component.Sound, uid, user); + + component.NextSound = Timing.CurTime + component.SoundCooldown; + } var duration = GetReclaimingDuration(uid, item, component); // if it's instant, don't bother with all the active comp stuff. From b5a7af1d58258f27d80a70b0c555ad323286f6d9 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Mon, 16 Oct 2023 01:31:03 -0400 Subject: [PATCH 120/245] Fix uncuffing for zombies (#21021) --- Content.Shared/Cuffs/SharedCuffableSystem.cs | 39 ++++++++++++-------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index d64e15799dcc40..4951bb7f1cb410 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Administration.Components; using Content.Shared.Administration.Logs; using Content.Shared.Alert; +using Content.Shared.Atmos.Piping.Unary.Components; using Content.Shared.Buckle.Components; using Content.Shared.Cuffs.Components; using Content.Shared.Damage; @@ -85,6 +86,7 @@ public override void Initialize() SubscribeLocalEvent(OnCuffAfterInteract); SubscribeLocalEvent(OnCuffMeleeHit); SubscribeLocalEvent(OnAddCuffDoAfter); + SubscribeLocalEvent(OnCuffVirtualItemDeleted); } private void OnUncuffAttempt(ref UncuffAttemptEvent args) @@ -163,7 +165,7 @@ public void UpdateCuffState(EntityUid uid, CuffableComponent component) return; component.CanStillInteract = canInteract; - Dirty(component); + Dirty(uid, component); _actionBlocker.UpdateCanMove(uid); if (component.CanStillInteract) @@ -350,7 +352,11 @@ private void OnAddCuffDoAfter(EntityUid uid, HandcuffComponent component, AddCuf ("otherName", Identity.Name(user, EntityManager, target))), target, target); } } + } + private void OnCuffVirtualItemDeleted(EntityUid uid, HandcuffComponent component, VirtualItemDeletedEvent args) + { + Uncuff(args.User, null, uid, cuff: component); } /// @@ -543,7 +549,7 @@ public void TryUncuff(EntityUid target, EntityUid user, EntityUid? cuffsToRemove { if (!cuffable.Container.ContainedEntities.Contains(cuffsToRemove.Value)) { - Logger.Warning("A user is trying to remove handcuffs that aren't in the owner's container. This should never happen!"); + Log.Warning("A user is trying to remove handcuffs that aren't in the owner's container. This should never happen!"); } } @@ -608,21 +614,23 @@ public void TryUncuff(EntityUid target, EntityUid user, EntityUid? cuffsToRemove _audio.PlayPredicted(isOwner ? cuff.StartBreakoutSound : cuff.StartUncuffSound, target, user); } - public void Uncuff(EntityUid target, EntityUid user, EntityUid cuffsToRemove, CuffableComponent? cuffable = null, HandcuffComponent? cuff = null) + public void Uncuff(EntityUid target, EntityUid? user, EntityUid cuffsToRemove, CuffableComponent? cuffable = null, HandcuffComponent? cuff = null) { if (!Resolve(target, ref cuffable) || !Resolve(cuffsToRemove, ref cuff)) return; - var attempt = new UncuffAttemptEvent(user, target); - RaiseLocalEvent(user, ref attempt); - if (attempt.Cancelled) - return; + if (user != null) + { + var attempt = new UncuffAttemptEvent(user.Value, target); + RaiseLocalEvent(user.Value, ref attempt); + if (attempt.Cancelled) + return; + } _audio.PlayPredicted(cuff.EndUncuffSound, target, user); cuffable.Container.Remove(cuffsToRemove); - if (_net.IsServer) { // Handles spawning broken cuffs on server to avoid client misprediction @@ -640,12 +648,13 @@ public void Uncuff(EntityUid target, EntityUid user, EntityUid cuffsToRemove, Cu // Only play popups on server because popups suck if (cuffable.CuffedHandCount == 0) { - _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-success-message"), user, user); + if (user != null) + _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-success-message"), user.Value, user.Value); - if (target != user) + if (target != user && user != null) { _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-by-other-success-message", - ("otherName", Identity.Name(user, EntityManager, user))), target, target); + ("otherName", Identity.Name(user.Value, EntityManager, user))), target, target); _adminLog.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(user):player} has successfully uncuffed {ToPrettyString(target):player}"); } @@ -655,22 +664,22 @@ public void Uncuff(EntityUid target, EntityUid user, EntityUid cuffsToRemove, Cu $"{ToPrettyString(user):player} has successfully uncuffed themselves"); } } - else + else if (user != null) { if (user != target) { _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-partial-success-message", ("cuffedHandCount", cuffable.CuffedHandCount), - ("otherName", Identity.Name(user, EntityManager, user))), user, user); + ("otherName", Identity.Name(user.Value, EntityManager, user.Value))), user.Value, user.Value); _popup.PopupEntity(Loc.GetString( "cuffable-component-remove-cuffs-by-other-partial-success-message", - ("otherName", Identity.Name(user, EntityManager, user)), + ("otherName", Identity.Name(user.Value, EntityManager, user.Value)), ("cuffedHandCount", cuffable.CuffedHandCount)), target, target); } else { _popup.PopupEntity(Loc.GetString("cuffable-component-remove-cuffs-partial-success-message", - ("cuffedHandCount", cuffable.CuffedHandCount)), user, user); + ("cuffedHandCount", cuffable.CuffedHandCount)), user.Value, user.Value); } } } From 7032a5a89a442c85e632abb86899131b752f2e52 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 16 Oct 2023 16:31:14 +1100 Subject: [PATCH 121/245] Update dev map (#21016) --- Resources/Maps/Test/dev_map.yml | 303 ++++++++++++++------------------ 1 file changed, 131 insertions(+), 172 deletions(-) diff --git a/Resources/Maps/Test/dev_map.yml b/Resources/Maps/Test/dev_map.yml index fd0884b2b890a0..a573ee26459eef 100644 --- a/Resources/Maps/Test/dev_map.yml +++ b/Resources/Maps/Test/dev_map.yml @@ -407,6 +407,11 @@ entities: - pos: -9.5,0.5 parent: 179 type: Transform + - uid: 1182 + components: + - pos: 6.5,28.5 + parent: 179 + type: Transform - proto: AirlockCargo entities: - uid: 87 @@ -981,29 +986,21 @@ entities: - pos: -2.5,11.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 764 components: - pos: -1.5,11.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 765 components: - pos: -7.5,0.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 766 components: - pos: -0.5,11.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 767 components: - pos: -3.5,10.5 @@ -1174,36 +1171,26 @@ entities: - pos: -8.5,0.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 803 components: - pos: 2.5,-2.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 804 components: - pos: 2.5,-3.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 805 components: - pos: -9.5,0.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 806 components: - pos: -10.5,0.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 807 components: - pos: -14.5,0.5 @@ -1259,22 +1246,16 @@ entities: - pos: 7.5,5.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 818 components: - pos: 7.5,7.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 819 components: - pos: 7.5,8.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 820 components: - pos: 7.5,9.5 @@ -1385,8 +1366,6 @@ entities: - pos: 0.5,11.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 842 components: - pos: 2.5,12.5 @@ -1462,8 +1441,11 @@ entities: - pos: 7.5,6.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound + - uid: 873 + components: + - pos: 8.5,21.5 + parent: 179 + type: Transform - uid: 877 components: - pos: -6.5,3.5 @@ -1474,36 +1456,26 @@ entities: - pos: -2.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 879 components: - pos: -1.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 880 components: - pos: -0.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 881 components: - pos: 0.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 882 components: - pos: 1.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 883 components: - pos: 2.5,-4.5 @@ -1519,106 +1491,76 @@ entities: - pos: 4.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 886 components: - pos: 5.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 887 components: - pos: 6.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 888 components: - pos: 7.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 889 components: - pos: 8.5,-4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 890 components: - pos: 8.5,-3.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 891 components: - pos: 8.5,-2.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 892 components: - pos: 8.5,-1.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 893 components: - pos: 8.5,-0.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 894 components: - pos: 8.5,0.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 895 components: - pos: 8.5,1.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 896 components: - pos: 8.5,2.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 897 components: - pos: 8.5,3.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 898 components: - pos: 8.5,4.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 899 components: - pos: 8.5,5.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 900 components: - pos: -14.5,5.5 @@ -1639,6 +1581,11 @@ entities: - pos: -15.5,4.5 parent: 179 type: Transform + - uid: 909 + components: + - pos: 8.5,20.5 + parent: 179 + type: Transform - uid: 970 components: - pos: 9.5,12.5 @@ -1669,22 +1616,16 @@ entities: - pos: -5.5,-14.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1027 components: - pos: -5.5,-13.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1028 components: - pos: -5.5,-12.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1029 components: - pos: -4.5,-12.5 @@ -1700,8 +1641,6 @@ entities: - pos: -2.5,-12.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1032 components: - pos: -1.5,-12.5 @@ -1722,8 +1661,6 @@ entities: - pos: 1.5,-12.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1036 components: - pos: 2.5,-12.5 @@ -1744,15 +1681,11 @@ entities: - pos: 0.5,-14.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1040 components: - pos: 0.5,-15.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1041 components: - pos: -1.5,-13.5 @@ -1763,29 +1696,21 @@ entities: - pos: -1.5,-14.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1043 components: - pos: -1.5,-15.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1044 components: - pos: 4.5,-12.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1045 components: - pos: 4.5,-13.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1051 components: - pos: 9.5,15.5 @@ -1901,8 +1826,6 @@ entities: - pos: 13.5,24.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1082 components: - pos: 12.5,24.5 @@ -2283,6 +2206,26 @@ entities: - pos: 16.5,14.5 parent: 179 type: Transform + - uid: 1177 + components: + - pos: 8.5,22.5 + parent: 179 + type: Transform + - uid: 1178 + components: + - pos: 8.5,23.5 + parent: 179 + type: Transform + - uid: 1179 + components: + - pos: 8.5,24.5 + parent: 179 + type: Transform + - uid: 1180 + components: + - pos: 8.5,25.5 + parent: 179 + type: Transform - proto: CableApcStack entities: - uid: 70 @@ -2317,22 +2260,16 @@ entities: - pos: -6.5,-13.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1020 components: - pos: -6.5,-12.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1021 components: - pos: -6.5,-11.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - proto: CableHVStack entities: - uid: 184 @@ -2347,22 +2284,16 @@ entities: - pos: -6.5,-13.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1024 components: - pos: -5.5,-13.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - uid: 1025 components: - pos: -5.5,-14.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - proto: CableMVStack entities: - uid: 325 @@ -3031,6 +2962,14 @@ entities: - pos: -0.5,-11.5 parent: 179 type: Transform +- proto: ComputerSurveillanceCameraMonitor + entities: + - uid: 1185 + components: + - rot: 3.141592653589793 rad + pos: -8.5,1.5 + parent: 179 + type: Transform - proto: ComputerTechnologyDiskTerminal entities: - uid: 1088 @@ -3280,6 +3219,13 @@ entities: - 0 - 0 type: EntityStorage +- proto: CrewMonitoringServer + entities: + - uid: 1183 + components: + - pos: 9.5,25.5 + parent: 179 + type: Transform - proto: Crowbar entities: - uid: 147 @@ -3543,8 +3489,6 @@ entities: pos: 5.5,-0.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - proto: GasPipeFourway entities: - uid: 728 @@ -3552,8 +3496,6 @@ entities: - pos: 5.5,-1.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - proto: GasPipeStraight entities: - uid: 749 @@ -3562,8 +3504,6 @@ entities: pos: 5.5,-3.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - proto: GasPipeTJunction entities: - uid: 748 @@ -3571,8 +3511,6 @@ entities: - pos: 5.5,-2.5 parent: 179 type: Transform - - enabled: True - type: AmbientSound - proto: GasPort entities: - uid: 457 @@ -3605,8 +3543,6 @@ entities: pos: 6.5,-3.5 parent: 179 type: Transform - - enabled: False - type: AmbientSound - proto: GasVentScrubber entities: - uid: 452 @@ -3615,8 +3551,6 @@ entities: pos: 6.5,-2.5 parent: 179 type: Transform - - enabled: False - type: AmbientSound - proto: GasVolumePump entities: - uid: 160 @@ -3719,6 +3653,13 @@ entities: - pos: -3.5805476,0.74100244 parent: 179 type: Transform +- proto: HandheldCrewMonitor + entities: + - uid: 1184 + components: + - pos: 1.6819578,7.502847 + parent: 179 + type: Transform - proto: HandheldHealthAnalyzer entities: - uid: 513 @@ -4115,56 +4056,6 @@ entities: - 0 - 0 type: EntityStorage -- proto: LockerSyndicatePersonalFilled - entities: - - uid: 909 - components: - - pos: -7.5,1.5 - parent: 179 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14957 - moles: - - 2.9923203 - - 11.2568245 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage -- proto: LockerWardenFilled - entities: - - uid: 873 - components: - - pos: -8.5,1.5 - parent: 179 - type: Transform - - air: - volume: 200 - immutable: False - temperature: 293.14957 - moles: - - 2.9923203 - - 11.2568245 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - type: EntityStorage - proto: LockerWeldingSuppliesFilled entities: - uid: 871 @@ -4197,8 +4088,6 @@ entities: - pos: 16.5,25.5 parent: 179 type: Transform - - enabled: False - type: AmbientSound - proto: MachineAnomalyVessel entities: - uid: 1087 @@ -4628,16 +4517,12 @@ entities: - pos: 16.5,27.5 parent: 179 type: Transform - - enabled: False - type: AmbientSound - uid: 1076 components: - rot: 1.5707963267948966 rad pos: 15.5,22.5 parent: 179 type: Transform - - enabled: False - type: AmbientSound - proto: PoweredSmallLight entities: - uid: 163 @@ -5152,6 +5037,13 @@ entities: - pos: -3.5,4.5 parent: 179 type: Transform +- proto: SpawnVehicleATV + entities: + - uid: 1176 + components: + - pos: -7.5,1.5 + parent: 179 + type: Transform - proto: SpawnVehicleJanicart entities: - uid: 904 @@ -5214,6 +5106,33 @@ entities: - pos: -4.3012447,8.817795 parent: 179 type: Transform +- proto: SurveillanceCameraGeneral + entities: + - uid: 1186 + components: + - rot: 3.141592653589793 rad + pos: -2.5,10.5 + parent: 179 + type: Transform + - uid: 1188 + components: + - rot: -1.5707963267948966 rad + pos: 15.5,21.5 + parent: 179 + type: Transform + - uid: 1190 + components: + - rot: 3.141592653589793 rad + pos: 27.5,10.5 + parent: 179 + type: Transform +- proto: SurveillanceCameraRouterGeneral + entities: + - uid: 1189 + components: + - pos: 9.5,24.5 + parent: 179 + type: Transform - proto: Syringe entities: - uid: 460 @@ -5770,6 +5689,13 @@ entities: - pos: -7.5,4.5 parent: 179 type: Transform +- proto: VehicleKeyATV + entities: + - uid: 1187 + components: + - pos: -6.8905525,1.5128828 + parent: 179 + type: Transform - proto: VehicleKeyJanicart entities: - uid: 14 @@ -7575,6 +7501,39 @@ entities: - pos: 17.5,28.5 parent: 179 type: Transform + - uid: 1181 + components: + - pos: 5.5,28.5 + parent: 179 + type: Transform +- proto: WarpPointBeaconCargo + entities: + - uid: 1175 + components: + - pos: -14.5,3.5 + parent: 179 + type: Transform +- proto: WarpPointBeaconEngineering + entities: + - uid: 1173 + components: + - pos: 5.5,0.5 + parent: 179 + type: Transform +- proto: WarpPointBeaconMedical + entities: + - uid: 1172 + components: + - pos: 17.5,7.5 + parent: 179 + type: Transform +- proto: WarpPointBeaconService + entities: + - uid: 1174 + components: + - pos: 6.5,14.5 + parent: 179 + type: Transform - proto: WaterTankFull entities: - uid: 115 From f7fbabadac1db5309f54e40aae7a31246b0ecf85 Mon Sep 17 00:00:00 2001 From: coolmankid12345 <55817627+coolmankid12345@users.noreply.github.com> Date: Mon, 16 Oct 2023 01:31:48 -0400 Subject: [PATCH 122/245] Less charges for Sci flash (#20959) * Flash * Okay not plant based anymore --------- Co-authored-by: coolmankid12345 --- .../Catalog/VendingMachines/Inventories/robotics.yml | 2 +- .../Prototypes/Entities/Objects/Weapons/security.yml | 9 +++++++++ .../Prototypes/Entities/Structures/Machines/lathe.yml | 2 +- Resources/Prototypes/Recipes/Lathes/robotics.yml | 9 +++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/robotics.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/robotics.yml index 06a7398a23c6b5..e64acaa9f266e8 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/robotics.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/robotics.yml @@ -2,7 +2,7 @@ id: RoboticsInventory startingInventory: CableApcStack: 4 - Flash: 4 + SciFlash: 4 ProximitySensor: 3 RemoteSignaller: 3 Igniter: 3 # its more ordnance but yeah diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index dc5c052639b4c0..8d30935b0418f4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -138,6 +138,15 @@ guides: - Security +- type: entity + name: flash + parent: Flash + id: SciFlash + components: + - type: LimitedCharges + maxCharges: 2 + charges: 2 + - type: entity name: portable flasher parent: BaseStructure diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 045ee40556fe12..37932f87cafeea 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -398,7 +398,7 @@ staticRecipes: - MMI - PositronicBrain - - Flash + - SciFlash - BorgModuleCable - BorgModuleFireExtinguisher - BorgModuleGPS diff --git a/Resources/Prototypes/Recipes/Lathes/robotics.yml b/Resources/Prototypes/Recipes/Lathes/robotics.yml index 4825adbe493641..f9f00daf43bcee 100644 --- a/Resources/Prototypes/Recipes/Lathes/robotics.yml +++ b/Resources/Prototypes/Recipes/Lathes/robotics.yml @@ -6,6 +6,15 @@ Steel: 200 Glass: 300 +- type: latheRecipe + id: SciFlash + result: SciFlash + completetime: 2 + materials: + Glass: 100 + Plastic: 200 + Steel: 100 + - type: latheRecipe id: CyborgEndoskeleton result: CyborgEndoskeleton From 1f564f06b2a09dd09c60cd3de7e97daba26ff26f Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Oct 2023 01:32:07 -0400 Subject: [PATCH 123/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7de7ab992b6aed..5e8f6a4d5db0b3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,17 +1,4 @@ Entries: -- author: mirrorcult - changes: - - {message: 'Liquid plasma rivers now spawn on snow planets (you may have noticed - foreshadowing from the planet background sprites). They''re just as dangerous - as lava, so be careful.', type: Add} - id: 4511 - time: '2023-08-10T14:16:51.0000000+00:00' -- author: AlexMorgan3817 - changes: - - {message: Added supermatter grenade analog from SS13 and brand new whitehole grenade - for special operations., type: Add} - id: 4512 - time: '2023-08-10T14:29:47.0000000+00:00' - author: Flareguy changes: - {message: 'Updated asteroid tiles to match their sprites from /tg/. They are much @@ -2942,3 +2929,16 @@ Entries: - {message: Behonkers are fixed (in combat use right click to fire laser), type: Fix} id: 5010 time: '2023-10-16T05:29:14.0000000+00:00' +- author: ShadowCommander + changes: + - {message: Fixed material reclaimer sound error when processing something., type: Fix} + - {message: Fixed duplicate gib sound when the material reclaimer processes a mob., + type: Fix} + id: 5011 + time: '2023-10-16T05:30:35.0000000+00:00' +- author: EmoGarbage404 + changes: + - {message: Fixed being permanently cuffed if you transformed into a zombie with + cuffs on., type: Fix} + id: 5012 + time: '2023-10-16T05:31:04.0000000+00:00' From c3e303b80b963916377abc393812389fb049c2e8 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sun, 15 Oct 2023 22:32:51 -0700 Subject: [PATCH 124/245] Fix sorting admin player tab playtime alphabetically (#21028) * Fix sorting admin player tab playtime alphabetically * Admin changelog --- .../Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs | 2 +- Resources/Changelog/Admin.yml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs index e6a64fc48d4a0f..4f77369b57b3cd 100644 --- a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTab.xaml.cs @@ -150,7 +150,7 @@ private int Compare(PlayerInfo x, PlayerInfo y) Header.Character => Compare(x.CharacterName, y.CharacterName), Header.Job => Compare(x.StartingJob, y.StartingJob), Header.Antagonist => x.Antag.CompareTo(y.Antag), - Header.Playtime => Compare(x.PlaytimeString, y.PlaytimeString), + Header.Playtime => TimeSpan.Compare(x.OverallPlaytime ?? default, y.OverallPlaytime ?? default), _ => 1 }; } diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 5a24f0d9794cf2..74156b9d1326a0 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -41,3 +41,8 @@ Entries: - {message: 'Fixed not being able to sort the F7 players tab by playtime.', type: Fix} id: 6 time: '2023-10-14T23:52:00.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: 'Fixed playtime being sorted incorrectly in the F7 players tab.', type: Fix} + id: 7 + time: '2023-10-16T04:23:00.0000000+00:00' From 101cc347dd85eb85c07bc27b9bafcc94723b28b8 Mon Sep 17 00:00:00 2001 From: Alex <129697969+Lomcastar@users.noreply.github.com> Date: Mon, 16 Oct 2023 08:34:17 +0300 Subject: [PATCH 125/245] upgrade (#20997) --- Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml index beed7db43ce2c7..666ded8ff35e45 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml @@ -185,7 +185,8 @@ factions: - SimpleHostile - type: RadiationSource - intensity: 0.3 + intensity: 2 + slope: 0.3 - type: Destructible thresholds: - trigger: @@ -198,8 +199,8 @@ - !type:SpawnEntitiesBehavior spawn: UraniumOre1: - min: 4 - max: 6 + min: 8 + max: 10 - !type:DoActsBehavior acts: [ "Destruction" ] - type: PointLight From 422544035d283e0c272586d7701531322e08705b Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Oct 2023 01:35:22 -0400 Subject: [PATCH 126/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5e8f6a4d5db0b3..5c4f12a1810075 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Flareguy - changes: - - {message: 'Updated asteroid tiles to match their sprites from /tg/. They are much - more vibrant, and should fit in a lot better with their surroundings.', type: Tweak} - - {message: Updated pried tiles to match the appearance of the new tiles better., - type: Tweak} - id: 4513 - time: '2023-08-10T17:46:44.0000000+00:00' - author: Flareguy changes: - {message: 'Updated asteroid tiles to match their sprites from /tg/. They are much @@ -2942,3 +2934,8 @@ Entries: cuffs on., type: Fix} id: 5012 time: '2023-10-16T05:31:04.0000000+00:00' +- author: Lomcastar + changes: + - {message: Uranium crabs are more radioactive!, type: Tweak} + id: 5013 + time: '2023-10-16T05:34:18.0000000+00:00' From 1f0c9314fd791ce14d14ccfd8f8419a9c473e151 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 16 Oct 2023 16:39:39 +1100 Subject: [PATCH 127/245] Default warp point names (#21017) --- .../Administration/Commands/WarpCommand.cs | 31 ++++++++++++++----- Content.Server/Ghost/GhostSystem.cs | 3 +- .../Ninja/Systems/SpaceNinjaSystem.cs | 8 ++--- .../Systems/NinjaConditionsSystem.cs | 5 ++- Content.Server/Warps/WarpPointComponent.cs | 7 +++-- .../Entities/Markers/warp_point.yml | 20 ++++++++++++ 6 files changed, 53 insertions(+), 21 deletions(-) diff --git a/Content.Server/Administration/Commands/WarpCommand.cs b/Content.Server/Administration/Commands/WarpCommand.cs index 5c61208b5b26c3..30a6d127aa36bc 100644 --- a/Content.Server/Administration/Commands/WarpCommand.cs +++ b/Content.Server/Administration/Commands/WarpCommand.cs @@ -59,9 +59,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var currentMap = _entManager.GetComponent(playerEntity).MapID; var currentGrid = _entManager.GetComponent(playerEntity).GridUid; - var found = _entManager.EntityQuery(true) - .Where(p => p.Location == location) - .Select(p => (_entManager.GetComponent(p.Owner).Coordinates, p.Follow)) + var found = GetWarpPointByName(location) .OrderBy(p => p.Item1, Comparer.Create((a, b) => { // Sort so that warp points on the same grid/map are first. @@ -133,11 +131,28 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) private IEnumerable GetWarpPointNames() { - return _entManager.EntityQuery(true) - .Select(p => p.Location) - .Where(p => p != null) - .OrderBy(p => p) - .Distinct()!; + List points = new(_entManager.Count()); + var query = _entManager.AllEntityQueryEnumerator(); + while (query.MoveNext(out _, out var warp, out var meta)) + { + points.Add(warp.Location ?? meta.EntityName); + } + + points.Sort(); + return points; + } + + private List<(EntityCoordinates, bool)> GetWarpPointByName(string name) + { + List<(EntityCoordinates, bool)> points = new(); + var query = _entManager.AllEntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var warp, out var meta, out var xform)) + { + if (name == (warp.Location ?? meta.EntityName)) + points.Add((xform.Coordinates, warp.Follow)); + } + + return points; } public CompletionResult GetCompletion(IConsoleShell shell, string[] args) diff --git a/Content.Server/Ghost/GhostSystem.cs b/Content.Server/Ghost/GhostSystem.cs index 78818039017be1..064e25957a16ef 100644 --- a/Content.Server/Ghost/GhostSystem.cs +++ b/Content.Server/Ghost/GhostSystem.cs @@ -297,8 +297,7 @@ private IEnumerable GetLocationWarps() while (allQuery.MoveNext(out var uid, out var warp)) { - if (warp.Location != null) - yield return new GhostWarp(GetNetEntity(uid), warp.Location, true); + yield return new GhostWarp(GetNetEntity(uid), warp.Location ?? Name(uid), true); } } diff --git a/Content.Server/Ninja/Systems/SpaceNinjaSystem.cs b/Content.Server/Ninja/Systems/SpaceNinjaSystem.cs index 8f19850c70cdea..6de2d7dee00314 100644 --- a/Content.Server/Ninja/Systems/SpaceNinjaSystem.cs +++ b/Content.Server/Ninja/Systems/SpaceNinjaSystem.cs @@ -170,12 +170,10 @@ private void OnNinjaCreated(EntityUid uid, SpaceNinjaComponent comp, ref Generic // choose spider charge detonation point var warps = new List(); - var query = EntityQueryEnumerator(); - var map = Transform(uid).MapID; - while (query.MoveNext(out var warpUid, out _, out var warp, out var xform)) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var warpUid, out _, out var warp)) { - if (warp.Location != null) - warps.Add(warpUid); + warps.Add(warpUid); } if (warps.Count > 0) diff --git a/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs b/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs index eaf97e97e01204..24eeb0542ec61c 100644 --- a/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs +++ b/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs @@ -58,14 +58,13 @@ private string SpiderChargeTitle(EntityUid mindId) { if (!TryComp(mindId, out var role) || role.SpiderChargeTarget == null || - !TryComp(role.SpiderChargeTarget, out var warp) || - warp.Location == null) + !TryComp(role.SpiderChargeTarget, out var warp)) { // this should never really happen but eh return Loc.GetString("objective-condition-spider-charge-title-no-target"); } - return Loc.GetString("objective-condition-spider-charge-title", ("location", warp.Location)); + return Loc.GetString("objective-condition-spider-charge-title", ("location", warp.Location ?? Name(role.SpiderChargeTarget.Value))); } // steal research diff --git a/Content.Server/Warps/WarpPointComponent.cs b/Content.Server/Warps/WarpPointComponent.cs index 19c38493ef374e..ce169f2e1956f8 100644 --- a/Content.Server/Warps/WarpPointComponent.cs +++ b/Content.Server/Warps/WarpPointComponent.cs @@ -6,12 +6,13 @@ namespace Content.Server.Warps [RegisterComponent] public sealed partial class WarpPointComponent : Component { - [ViewVariables(VVAccess.ReadWrite)] [DataField("location")] public string? Location { get; set; } + [ViewVariables(VVAccess.ReadWrite), DataField] + public string? Location; /// /// If true, ghosts warping to this entity will begin following it. /// - [DataField("follow")] - public bool Follow = false; + [DataField] + public bool Follow; } } diff --git a/Resources/Prototypes/Entities/Markers/warp_point.yml b/Resources/Prototypes/Entities/Markers/warp_point.yml index d7651e1245eb19..8e15994dc5fdf1 100644 --- a/Resources/Prototypes/Entities/Markers/warp_point.yml +++ b/Resources/Prototypes/Entities/Markers/warp_point.yml @@ -13,6 +13,8 @@ name: warp point (beacon) components: - type: NavMapBeacon + - type: WarpPoint + location: beacon - type: entity parent: WarpPoint @@ -21,6 +23,8 @@ suffix: ninja bombing target components: - type: BombingTarget + - type: WarpPoint + location: bombing target - type: Sprite layers: - state: pink @@ -36,6 +40,8 @@ - type: NavMapBeacon text: bar color: "#791500" + - type: WarpPoint + location: bar - type: entity id: WarpPointBeaconCargo @@ -45,6 +51,8 @@ - type: NavMapBeacon text: cargo color: "#A46106" + - type: WarpPoint + location: cargo - type: entity id: WarpPointBeaconCommand @@ -54,6 +62,8 @@ - type: NavMapBeacon text: command color: "#334E6D" + - type: WarpPoint + location: command - type: entity id: WarpPointBeaconEngineering @@ -63,6 +73,8 @@ - type: NavMapBeacon text: engineering color: "#EFB341" + - type: WarpPoint + location: engineering - type: entity id: WarpPointBeaconMedical @@ -72,6 +84,8 @@ - type: NavMapBeacon text: medical color: "#52B4E9" + - type: WarpPoint + location: medical - type: entity id: WarpPointBeaconNeutral @@ -81,6 +95,8 @@ - type: NavMapBeacon text: neutral color: "#D4D4D4" + - type: WarpPoint + location: neutral - type: entity id: WarpPointBeaconScience @@ -90,6 +106,8 @@ - type: NavMapBeacon text: science color: "#D381C9" + - type: WarpPoint + location: science - type: entity id: WarpPointBeaconService @@ -99,3 +117,5 @@ - type: NavMapBeacon text: service color: "#9FED58" + - type: WarpPoint + location: service From 00e274ea388bc4ce1e59d9dc197a1886fe19bb34 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 16 Oct 2023 16:54:10 +1100 Subject: [PATCH 128/245] Add new entity spawn test & fix misc bugs (#19953) --- Content.IntegrationTests/Tests/EntityTest.cs | 98 ++++++++++++++++++- .../GameTicking/Rules/DeathMatchRuleSystem.cs | 3 +- Content.Server/Gatherable/GatherableSystem.cs | 2 +- .../IdentityManagement/IdentitySystem.cs | 5 +- .../EntitySystems/KitchenSpikeSystem.cs | 3 +- .../Events/StationEventSystem.cs | 7 +- .../EntitySystems/StorageSystem.Fill.cs | 9 +- .../Storage/EntitySystems/StorageSystem.cs | 3 +- .../EntityList/EntityLootTablePrototype.cs | 2 +- .../Components/KitchenSpikeComponent.cs | 2 +- .../Station/SharedStationSpawningSystem.cs | 2 +- Content.Shared/Storage/EntitySpawnEntry.cs | 10 +- .../SharedEntityStorageSystem.cs | 6 +- .../Catalog/Fills/Crates/salvage.yml | 33 ++++--- 14 files changed, 149 insertions(+), 36 deletions(-) diff --git a/Content.IntegrationTests/Tests/EntityTest.cs b/Content.IntegrationTests/Tests/EntityTest.cs index 453796b9165b77..042db1deb3c9a4 100644 --- a/Content.IntegrationTests/Tests/EntityTest.cs +++ b/Content.IntegrationTests/Tests/EntityTest.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using System.Linq; +using Content.Server.Humanoid.Components; using Content.Shared.Coordinates; +using Content.Shared.Prototypes; using Robust.Shared; using Robust.Shared.Configuration; using Robust.Shared.GameObjects; @@ -183,7 +185,7 @@ await server.WaitPost(() => var query = entityMan.AllEntityQueryEnumerator(); while (query.MoveNext(out var uid, out var meta)) yield return (uid, meta); - }; + } var entityMetas = Query(sEntMan).ToList(); foreach (var (uid, meta) in entityMetas) @@ -198,6 +200,100 @@ await server.WaitPost(() => await pair.CleanReturnAsync(); } + /// + /// This test checks that spawning and deleting an entity doesn't somehow create other unrelated entities. + /// + /// + /// Unless an entity is intentionally designed to spawn other entities (e.g., mob spawners), they should + /// generally not spawn unrelated / detached entities. Any entities that do get spawned should be parented to + /// the spawned entity (e.g., in a container). If an entity needs to spawn an entity somewhere in null-space, + /// it should delete that entity when it is no longer required. This test mainly exists to prevent "entity leak" + /// bugs, where spawning some entity starts spawning unrelated entities in null space. + /// + [Test] + public async Task SpawnAndDeleteEntityCountTest() + { + var settings = new PoolSettings { Connected = true, Dirty = true }; + await using var pair = await PoolManager.GetServerClient(settings); + var server = pair.Server; + var client = pair.Client; + + var excluded = new[] + { + "MapGrid", + "StationEvent", + "TimedDespawn", + + // Spawner entities + "DragonRift", + "RandomHumanoidSpawner", + "RandomSpawner", + "ConditionalSpawner", + "GhostRoleMobSpawner", + "NukeOperativeSpawner", + "TimedSpawner", + }; + + Assert.That(server.CfgMan.GetCVar(CVars.NetPVS), Is.False); + + var protoIds = server.ProtoMan + .EnumeratePrototypes() + .Where(p => !p.Abstract) + .Where(p => !pair.IsTestPrototype(p)) + .Where(p => !excluded.Any(p.Components.ContainsKey)) + .Select(p => p.ID) + .ToList(); + + MapCoordinates coords = default; + await server.WaitPost(() => + { + var map = server.MapMan.CreateMap(); + coords = new MapCoordinates(default, map); + }); + + await pair.RunTicksSync(3); + + List badPrototypes = new(); + foreach (var protoId in protoIds) + { + // TODO fix ninja + // Currently ninja fails to equip their own loadout. + if (protoId == "MobHumanSpaceNinja") + continue; + + var count = server.EntMan.EntityCount; + var clientCount = client.EntMan.EntityCount; + EntityUid uid = default; + await server.WaitPost(() => uid = server.EntMan.SpawnEntity(protoId, coords)); + await pair.RunTicksSync(3); + + // If the entity deleted itself, check that it didn't spawn other entities + if (!server.EntMan.EntityExists(uid)) + { + if (server.EntMan.EntityCount != count || client.EntMan.EntityCount != clientCount) + badPrototypes.Add(protoId); + continue; + } + + // Check that the number of entities has increased. + if (server.EntMan.EntityCount <= count || client.EntMan.EntityCount <= clientCount) + { + badPrototypes.Add(protoId); + continue; + } + + await server.WaitPost(() => server.EntMan.DeleteEntity(uid)); + await pair.RunTicksSync(3); + + // Check that the number of entities has gone back to the original value. + if (server.EntMan.EntityCount != count || client.EntMan.EntityCount != clientCount) + badPrototypes.Add(protoId); + } + + Assert.That(badPrototypes, Is.Empty); + await pair.CleanReturnAsync(); + } + [Test] public async Task AllComponentsOneToOneDeleteTest() { diff --git a/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs b/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs index 042455e75dfa87..82ac755592e6c8 100644 --- a/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Server.Administration.Commands; using Content.Server.GameTicking.Rules.Components; using Content.Server.KillTracking; @@ -95,7 +96,7 @@ private void OnKillReported(ref KillReportedEvent ev) if (ev.Assist is KillPlayerSource assist && dm.Victor == null) _point.AdjustPointValue(assist.PlayerId, 1, uid, point); - var spawns = EntitySpawnCollection.GetSpawns(dm.RewardSpawns); + var spawns = EntitySpawnCollection.GetSpawns(dm.RewardSpawns).Cast().ToList(); EntityManager.SpawnEntities(Transform(ev.Entity).MapPosition, spawns); } } diff --git a/Content.Server/Gatherable/GatherableSystem.cs b/Content.Server/Gatherable/GatherableSystem.cs index 5eaff020d5e47c..4f7d19b0a8b0c6 100644 --- a/Content.Server/Gatherable/GatherableSystem.cs +++ b/Content.Server/Gatherable/GatherableSystem.cs @@ -70,7 +70,7 @@ public void Gather(EntityUid gatheredUid, EntityUid? gatherer = null, Gatherable continue; } var getLoot = _prototypeManager.Index(table); - var spawnLoot = getLoot.GetSpawns(); + var spawnLoot = getLoot.GetSpawns(_random); var spawnPos = pos.Offset(_random.NextVector2(0.3f)); Spawn(spawnLoot[0], spawnPos); } diff --git a/Content.Server/IdentityManagement/IdentitySystem.cs b/Content.Server/IdentityManagement/IdentitySystem.cs index 6be3a964335df0..3d4be31435e466 100644 --- a/Content.Server/IdentityManagement/IdentitySystem.cs +++ b/Content.Server/IdentityManagement/IdentitySystem.cs @@ -35,6 +35,7 @@ public override void Initialize() SubscribeLocalEvent((uid, _, _) => QueueIdentityUpdate(uid)); SubscribeLocalEvent((uid, _, _) => QueueIdentityUpdate(uid)); SubscribeLocalEvent((uid, _, _) => QueueIdentityUpdate(uid)); + SubscribeLocalEvent(OnMapInit); } public override void Update(float frameTime) @@ -53,10 +54,8 @@ public override void Update(float frameTime) } // This is where the magic happens - protected override void OnComponentInit(EntityUid uid, IdentityComponent component, ComponentInit args) + private void OnMapInit(EntityUid uid, IdentityComponent component, MapInitEvent args) { - base.OnComponentInit(uid, component, args); - var ident = Spawn(null, Transform(uid).Coordinates); QueueIdentityUpdate(uid); diff --git a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs index 04a224a3a749d2..6e563ff45fd5c2 100644 --- a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs @@ -110,7 +110,8 @@ private void OnInteractHand(EntityUid uid, KitchenSpikeComponent component, Inte if (args.Handled) return; - if (component.PrototypesToSpawn?.Count > 0) { + if (component.PrototypesToSpawn?.Count > 0) + { _popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-knife-needed"), uid, args.User); args.Handled = true; } diff --git a/Content.Server/StationEvents/Events/StationEventSystem.cs b/Content.Server/StationEvents/Events/StationEventSystem.cs index c647c965064159..97b96ff7b0bdc2 100644 --- a/Content.Server/StationEvents/Events/StationEventSystem.cs +++ b/Content.Server/StationEvents/Events/StationEventSystem.cs @@ -136,12 +136,7 @@ protected void ForceEndSelf(EntityUid uid, GameRuleComponent? component = null) protected bool TryGetRandomStation([NotNullWhen(true)] out EntityUid? station, Func? filter = null) { - var stations = new ValueList(); - - if (filter == null) - { - stations.EnsureCapacity(Count()); - } + var stations = new ValueList(Count()); filter ??= _ => true; var query = AllEntityQuery(); diff --git a/Content.Server/Storage/EntitySystems/StorageSystem.Fill.cs b/Content.Server/Storage/EntitySystems/StorageSystem.Fill.cs index e05a8f49ff0bfb..902ab471f18d89 100644 --- a/Content.Server/Storage/EntitySystems/StorageSystem.Fill.cs +++ b/Content.Server/Storage/EntitySystems/StorageSystem.Fill.cs @@ -1,6 +1,10 @@ +using Content.Server.Spawners.Components; using Content.Server.Storage.Components; +using Content.Shared.Prototypes; using Content.Shared.Storage; using Content.Shared.Storage.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Server.Storage.EntitySystems; @@ -25,10 +29,13 @@ private void OnStorageFillMapInit(EntityUid uid, StorageFillComponent component, var spawnItems = EntitySpawnCollection.GetSpawns(component.Contents, Random); foreach (var item in spawnItems) { + // No, you are not allowed to fill a container with entity spawners. + DebugTools.Assert(!_prototype.Index(item) + .HasComponent(typeof(RandomSpawnerComponent))); var ent = EntityManager.SpawnEntity(item, coordinates); // handle depending on storage component, again this should be unified after ECS - if (entityStorageComp != null && EntityStorage.Insert(ent, uid)) + if (entityStorageComp != null && EntityStorage.Insert(ent, uid, entityStorageComp)) continue; if (storageComp != null && Insert(uid, ent, out _, storageComp: storageComp, playSound: false)) diff --git a/Content.Server/Storage/EntitySystems/StorageSystem.cs b/Content.Server/Storage/EntitySystems/StorageSystem.cs index b2d940ffe1cf60..3430449957e004 100644 --- a/Content.Server/Storage/EntitySystems/StorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/StorageSystem.cs @@ -12,7 +12,7 @@ using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Player; -using Robust.Shared.Players; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Server.Storage.EntitySystems; @@ -20,6 +20,7 @@ namespace Content.Server.Storage.EntitySystems; public sealed partial class StorageSystem : SharedStorageSystem { [Dependency] private readonly IAdminManager _admin = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; public override void Initialize() diff --git a/Content.Shared/EntityList/EntityLootTablePrototype.cs b/Content.Shared/EntityList/EntityLootTablePrototype.cs index 06b33eb7f61444..da535d570c4f5c 100644 --- a/Content.Shared/EntityList/EntityLootTablePrototype.cs +++ b/Content.Shared/EntityList/EntityLootTablePrototype.cs @@ -15,7 +15,7 @@ public sealed class EntityLootTablePrototype : IPrototype public ImmutableList Entries = ImmutableList.Empty; /// - public List GetSpawns(IRobustRandom? random = null) + public List GetSpawns(IRobustRandom random) { return EntitySpawnCollection.GetSpawns(Entries, random); } diff --git a/Content.Shared/Kitchen/Components/KitchenSpikeComponent.cs b/Content.Shared/Kitchen/Components/KitchenSpikeComponent.cs index 8b43ab1a850631..3057a75a4ccb12 100644 --- a/Content.Shared/Kitchen/Components/KitchenSpikeComponent.cs +++ b/Content.Shared/Kitchen/Components/KitchenSpikeComponent.cs @@ -15,7 +15,7 @@ public sealed partial class KitchenSpikeComponent : Component [DataField("sound")] public SoundSpecifier SpikeSound = new SoundPathSpecifier("/Audio/Effects/Fluids/splat.ogg"); - public List? PrototypesToSpawn; + public List? PrototypesToSpawn; // TODO: Spiking alive mobs? (Replace with uid) (deal damage to their limbs on spiking, kill on first butcher attempt?) public string MeatSource1p = "?"; diff --git a/Content.Shared/Station/SharedStationSpawningSystem.cs b/Content.Shared/Station/SharedStationSpawningSystem.cs index d392cf7bedab35..8cdcff883b1546 100644 --- a/Content.Shared/Station/SharedStationSpawningSystem.cs +++ b/Content.Shared/Station/SharedStationSpawningSystem.cs @@ -27,7 +27,7 @@ public void EquipStartingGear(EntityUid entity, StartingGearPrototype startingGe if (!string.IsNullOrEmpty(equipmentStr)) { var equipmentEntity = EntityManager.SpawnEntity(equipmentStr, EntityManager.GetComponent(entity).Coordinates); - InventorySystem.TryEquip(entity, equipmentEntity, slot.Name, true); + InventorySystem.TryEquip(entity, equipmentEntity, slot.Name, true, force:true); } } } diff --git a/Content.Shared/Storage/EntitySpawnEntry.cs b/Content.Shared/Storage/EntitySpawnEntry.cs index a39c2015a98acb..96fb9f9f405f3d 100644 --- a/Content.Shared/Storage/EntitySpawnEntry.cs +++ b/Content.Shared/Storage/EntitySpawnEntry.cs @@ -78,12 +78,12 @@ public sealed class OrGroup /// The entity spawn entries. /// Resolve param. /// A list of entity prototypes that should be spawned. - public static List GetSpawns(IEnumerable entries, + public static List GetSpawns(IEnumerable entries, IRobustRandom? random = null) { IoCManager.Resolve(ref random); - var spawned = new List(); + var spawned = new List(); var ungrouped = CollectOrGroups(entries, out var orGroupedSpawns); foreach (var entry in ungrouped) @@ -93,6 +93,9 @@ public sealed class OrGroup if (entry.SpawnProbability != 1f && !random.Prob(entry.SpawnProbability)) continue; + if (entry.PrototypeId == null) + continue; + var amount = (int) entry.GetAmount(random); for (var i = 0; i < amount; i++) @@ -116,6 +119,9 @@ public sealed class OrGroup if (diceRoll > cumulative) continue; + if (entry.PrototypeId == null) + break; + // Dice roll succeeded, add item and break loop var amount = (int) entry.GetAmount(random); diff --git a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs index 7553fb6c9cc096..2d85f79e0388d9 100644 --- a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs @@ -22,6 +22,7 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; +using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -260,9 +261,12 @@ public bool Insert(EntityUid toInsert, EntityUid container, SharedEntityStorageC } _joints.RecursiveClearJoints(toInsert); + if (!component.Contents.Insert(toInsert, EntityManager)) + return false; + var inside = EnsureComp(toInsert); inside.Storage = container; - return component.Contents.Insert(toInsert, EntityManager); + return true; } public bool Remove(EntityUid toRemove, EntityUid container, SharedEntityStorageComponent? component = null, TransformComponent? xform = null) diff --git a/Resources/Prototypes/Catalog/Fills/Crates/salvage.yml b/Resources/Prototypes/Catalog/Fills/Crates/salvage.yml index cd5daf6f722fd7..feae7a8942f0ca 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/salvage.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/salvage.yml @@ -92,30 +92,33 @@ id: CratePartsT3 name: tier 3 parts crate description: Contains 5 random tier 3 parts for upgrading machines. - components: - - type: StorageFill - contents: - - id: SalvagePartsT3Spawner - amount: 5 + # TODO add contents. + #components: + #- type: StorageFill + # contents: + # - id: SalvagePartsT3Spawner + # amount: 5 - type: entity parent: CrateGenericSteel id: CratePartsT3T4 name: tier 3/4 parts crate description: Contains 5 random tier 3 or 4 parts for upgrading machines. - components: - - type: StorageFill - contents: - - id: SalvagePartsT3T4Spawner - amount: 5 + # TODO add contents. + #components: + # type: StorageFill + # contents: + # - id: SalvagePartsT3T4Spawner + # amount: 5 - type: entity parent: CrateGenericSteel id: CratePartsT4 name: tier 4 parts crate description: Contains 5 random tier 4 parts for upgrading machines. - components: - - type: StorageFill - contents: - - id: SalvagePartsT4Spawner - amount: 5 + # TODO add contents. + #components: + #- type: StorageFill + # contents: + # - id: SalvagePartsT4Spawner + # amount: 5 From 77964d4a6b7ab33bfe51e070a11dc290eb8ea7da Mon Sep 17 00:00:00 2001 From: Kara Date: Sun, 15 Oct 2023 22:56:09 -0700 Subject: [PATCH 129/245] Kill `SharedEntityExtensions` and all popup extensions (#20909) Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Administration/Systems/AdminVerbSystem.cs | 4 +- .../Atmos/EntitySystems/FlammableSystem.cs | 16 +++--- .../EntitySystems/GasPressurePumpSystem.cs | 23 ++++---- .../EntitySystems/GasVolumePumpSystem.cs | 15 +++--- .../Trinary/EntitySystems/GasMixerSystem.cs | 15 +++--- .../Botany/Systems/BotanySystem.Seed.cs | 4 +- Content.Server/Botany/Systems/LogSystem.cs | 4 +- .../Botany/Systems/PlantHolderSystem.cs | 5 +- Content.Server/Chat/SuicideSystem.cs | 10 ++-- .../Coordinates/SpawnRandomOffsetSystem.cs | 7 ++- .../EntitySystems/ReagentGrinderSystem.cs | 6 ++- Content.Server/Popups/PopupExtensions.cs | 53 ------------------- Content.Server/Popups/PopupMsgCommand.cs | 24 --------- Content.Server/Popups/PopupSystem.cs | 3 +- Content.Server/Repairable/RepairableSystem.cs | 13 +++-- .../Stunnable/Systems/StunbatonSystem.cs | 50 +++++++++-------- .../Popups/SharedPopupExtensions.cs | 48 ----------------- .../Random/Helpers/SharedEntityExtensions.cs | 37 ------------- Content.Shared/Random/RandomHelperSystem.cs | 35 ++++++++++++ SpaceStation14.sln.DotSettings | 1 + 20 files changed, 135 insertions(+), 238 deletions(-) delete mode 100644 Content.Server/Popups/PopupExtensions.cs delete mode 100644 Content.Server/Popups/PopupMsgCommand.cs delete mode 100644 Content.Shared/Popups/SharedPopupExtensions.cs delete mode 100644 Content.Shared/Random/Helpers/SharedEntityExtensions.cs create mode 100644 Content.Shared/Random/RandomHelperSystem.cs diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index 3a419b93f6f9af..c7e23374a3c8fb 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -59,6 +59,7 @@ public sealed partial class AdminVerbSystem : EntitySystem [Dependency] private readonly SharedMindSystem _mindSystem = default!; [Dependency] private readonly ToolshedManager _toolshed = default!; [Dependency] private readonly RejuvenateSystem _rejuvenate = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; private readonly Dictionary _openSolutionUis = new(); @@ -357,7 +358,8 @@ private void AddDebugVerbs(GetVerbsEvent args) var message = ExamineSystemShared.InRangeUnOccluded(args.User, args.Target) ? Loc.GetString("in-range-unoccluded-verb-on-activate-not-occluded") : Loc.GetString("in-range-unoccluded-verb-on-activate-occluded"); - args.Target.PopupMessage(args.User, message); + + _popup.PopupEntity(message, args.Target, args.User); } }; args.Verbs.Add(verb); diff --git a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs index 2adec63db566d6..b2f62572bffb68 100644 --- a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs +++ b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs @@ -37,6 +37,7 @@ public sealed class FlammableSystem : EntitySystem [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; public const float MinimumFireStacks = -10f; public const float MaximumFireStacks = 20f; @@ -45,7 +46,7 @@ public sealed class FlammableSystem : EntitySystem public const float MinIgnitionTemperature = 373.15f; public const string FlammableFixtureID = "flammable"; - private float _timer = 0f; + private float _timer; private Dictionary _fireEvents = new(); @@ -191,8 +192,7 @@ private void OnTileFire(EntityUid uid, FlammableComponent flammable, ref TileFir { var tempDelta = args.Temperature - MinIgnitionTemperature; - var maxTemp = 0f; - _fireEvents.TryGetValue(flammable, out maxTemp); + _fireEvents.TryGetValue(flammable, out var maxTemp); if (tempDelta > maxTemp) _fireEvents[flammable] = tempDelta; @@ -233,7 +233,7 @@ public void Extinguish(EntityUid uid, FlammableComponent? flammable = null) if (!flammable.OnFire || !flammable.CanExtinguish) return; - _adminLogger.Add(LogType.Flammable, $"{ToPrettyString(flammable.Owner):entity} stopped being on fire damage"); + _adminLogger.Add(LogType.Flammable, $"{ToPrettyString(uid):entity} stopped being on fire damage"); flammable.OnFire = false; flammable.FireStacks = 0; @@ -271,16 +271,16 @@ public void Resist(EntityUid uid, if (!Resolve(uid, ref flammable)) return; - if (!flammable.OnFire || !_actionBlockerSystem.CanInteract(flammable.Owner, null) || flammable.Resisting) + if (!flammable.OnFire || !_actionBlockerSystem.CanInteract(uid, null) || flammable.Resisting) return; flammable.Resisting = true; - flammable.Owner.PopupMessage(Loc.GetString("flammable-component-resist-message")); + _popup.PopupEntity(Loc.GetString("flammable-component-resist-message"), uid, uid); _stunSystem.TryParalyze(uid, TimeSpan.FromSeconds(2f), true); // TODO FLAMMABLE: Make this not use TimerComponent... - flammable.Owner.SpawnTimer(2000, () => + uid.SpawnTimer(2000, () => { flammable.Resisting = false; flammable.FireStacks -= 1f; @@ -329,7 +329,7 @@ public override void Update(float frameTime) continue; } - _alertsSystem.ShowAlert(uid, AlertType.Fire, null, null); + _alertsSystem.ShowAlert(uid, AlertType.Fire); if (flammable.FireStacks > 0) { diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs index e193de4b3db640..e857b02b944b64 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs @@ -27,6 +27,7 @@ public sealed class GasPressurePumpSystem : EntitySystem [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; public override void Initialize() { @@ -49,14 +50,16 @@ private void OnInit(EntityUid uid, GasPressurePumpComponent pump, ComponentInit private void OnExamined(EntityUid uid, GasPressurePumpComponent pump, ExaminedEvent args) { - if (!EntityManager.GetComponent(pump.Owner).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. + if (!EntityManager.GetComponent(uid).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. return; if (Loc.TryGetString("gas-pressure-pump-system-examined", out var str, - ("statusColor", "lightblue"), // TODO: change with pressure? - ("pressure", pump.TargetPressure) - )) + ("statusColor", "lightblue"), // TODO: change with pressure? + ("pressure", pump.TargetPressure) + )) + { args.PushMarkup(str); + } } private void OnPumpUpdated(EntityUid uid, GasPressurePumpComponent pump, AtmosDeviceUpdateEvent args) @@ -66,7 +69,7 @@ private void OnPumpUpdated(EntityUid uid, GasPressurePumpComponent pump, AtmosDe || !_nodeContainer.TryGetNode(nodeContainer, pump.InletName, out PipeNode? inlet) || !_nodeContainer.TryGetNode(nodeContainer, pump.OutletName, out PipeNode? outlet)) { - _ambientSoundSystem.SetAmbience(pump.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); return; } @@ -74,7 +77,7 @@ private void OnPumpUpdated(EntityUid uid, GasPressurePumpComponent pump, AtmosDe if (outputStartingPressure >= pump.TargetPressure) { - _ambientSoundSystem.SetAmbience(pump.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); return; // No need to pump gas if target has been reached. } @@ -86,7 +89,7 @@ private void OnPumpUpdated(EntityUid uid, GasPressurePumpComponent pump, AtmosDe var removed = inlet.Air.Remove(transferMoles); _atmosphereSystem.Merge(outlet.Air, removed); - _ambientSoundSystem.SetAmbience(pump.Owner, removed.TotalMoles > 0f); + _ambientSoundSystem.SetAmbience(uid, removed.TotalMoles > 0f); } } @@ -104,14 +107,14 @@ private void OnPumpActivate(EntityUid uid, GasPressurePumpComponent pump, Activa if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) return; - if (EntityManager.GetComponent(pump.Owner).Anchored) + if (Transform(uid).Anchored) { _userInterfaceSystem.TryOpen(uid, GasPressurePumpUiKey.Key, actor.PlayerSession); DirtyUI(uid, pump); } else { - args.User.PopupMessageCursor(Loc.GetString("comp-gas-pump-ui-needs-anchor")); + _popup.PopupCursor(Loc.GetString("comp-gas-pump-ui-needs-anchor"), args.User); } args.Handled = true; @@ -141,7 +144,7 @@ private void DirtyUI(EntityUid uid, GasPressurePumpComponent? pump) return; _userInterfaceSystem.TrySetUiState(uid, GasPressurePumpUiKey.Key, - new GasPressurePumpBoundUserInterfaceState(EntityManager.GetComponent(pump.Owner).EntityName, pump.TargetPressure, pump.Enabled)); + new GasPressurePumpBoundUserInterfaceState(EntityManager.GetComponent(uid).EntityName, pump.TargetPressure, pump.Enabled)); } private void UpdateAppearance(EntityUid uid, GasPressurePumpComponent? pump = null, AppearanceComponent? appearance = null) diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs index 5b8035681e0edb..19ad8175aad003 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs @@ -9,9 +9,7 @@ using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; -using Content.Shared.Atmos.Piping; using Content.Shared.Atmos.Piping.Binary.Components; -using Content.Shared.Atmos.Piping.Unary.Components; using Content.Shared.Atmos.Visuals; using Content.Shared.Audio; using Content.Shared.Database; @@ -34,6 +32,7 @@ public sealed class GasVolumePumpSystem : EntitySystem [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; [Dependency] private readonly DeviceNetworkSystem _deviceNetwork = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; public override void Initialize() @@ -59,7 +58,7 @@ private void OnInit(EntityUid uid, GasVolumePumpComponent pump, ComponentInit ar private void OnExamined(EntityUid uid, GasVolumePumpComponent pump, ExaminedEvent args) { - if (!EntityManager.GetComponent(pump.Owner).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. + if (!EntityManager.GetComponent(uid).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. return; if (Loc.TryGetString("gas-volume-pump-system-examined", out var str, @@ -98,14 +97,14 @@ private void OnVolumePumpUpdated(EntityUid uid, GasVolumePumpComponent pump, Atm { pump.Blocked = true; } - + if (previouslyBlocked != pump.Blocked) UpdateAppearance(uid, pump); if (pump.Blocked) return; // We multiply the transfer rate in L/s by the seconds passed since the last process to get the liters. - var removed = inlet.Air.RemoveVolume((float)(pump.TransferRate * args.dt)); + var removed = inlet.Air.RemoveVolume(pump.TransferRate * args.dt); // Some of the gas from the mixture leaks when overclocked. if (pump.Overclocked) @@ -141,14 +140,14 @@ private void OnPumpActivate(EntityUid uid, GasVolumePumpComponent pump, Activate if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) return; - if (EntityManager.GetComponent(pump.Owner).Anchored) + if (Transform(uid).Anchored) { _userInterfaceSystem.TryOpen(uid, GasVolumePumpUiKey.Key, actor.PlayerSession); DirtyUI(uid, pump); } else { - args.User.PopupMessageCursor(Loc.GetString("comp-gas-pump-ui-needs-anchor")); + _popup.PopupCursor(Loc.GetString("comp-gas-pump-ui-needs-anchor"), args.User); } args.Handled = true; @@ -177,7 +176,7 @@ private void DirtyUI(EntityUid uid, GasVolumePumpComponent? pump) return; _userInterfaceSystem.TrySetUiState(uid, GasVolumePumpUiKey.Key, - new GasVolumePumpBoundUserInterfaceState(EntityManager.GetComponent(pump.Owner).EntityName, pump.TransferRate, pump.Enabled)); + new GasVolumePumpBoundUserInterfaceState(Name(uid), pump.TransferRate, pump.Enabled)); } private void UpdateAppearance(EntityUid uid, GasVolumePumpComponent? pump = null, AppearanceComponent? appearance = null) diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs index 0780ff035f1890..ce2213d535b62e 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs @@ -26,6 +26,7 @@ public sealed class GasMixerSystem : EntitySystem [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; public override void Initialize() { @@ -54,7 +55,7 @@ private void OnMixerUpdated(EntityUid uid, GasMixerComponent mixer, AtmosDeviceU if (!mixer.Enabled) { - _ambientSoundSystem.SetAmbience(mixer.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); return; } @@ -65,7 +66,7 @@ private void OnMixerUpdated(EntityUid uid, GasMixerComponent mixer, AtmosDeviceU || !_nodeContainer.TryGetNode(nodeContainer, mixer.InletTwoName, out PipeNode? inletTwo) || !_nodeContainer.TryGetNode(nodeContainer, mixer.OutletName, out PipeNode? outlet)) { - _ambientSoundSystem.SetAmbience(mixer.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); return; } @@ -103,7 +104,7 @@ private void OnMixerUpdated(EntityUid uid, GasMixerComponent mixer, AtmosDeviceU if (transferMolesOne <= 0 || transferMolesTwo <= 0) { - _ambientSoundSystem.SetAmbience(mixer.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); return; } @@ -133,7 +134,7 @@ private void OnMixerUpdated(EntityUid uid, GasMixerComponent mixer, AtmosDeviceU } if (transferred) - _ambientSoundSystem.SetAmbience(mixer.Owner, true); + _ambientSoundSystem.SetAmbience(uid, true); } private void OnMixerLeaveAtmosphere(EntityUid uid, GasMixerComponent mixer, AtmosDeviceDisabledEvent args) @@ -150,14 +151,14 @@ private void OnMixerInteractHand(EntityUid uid, GasMixerComponent mixer, Interac if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) return; - if (EntityManager.GetComponent(mixer.Owner).Anchored) + if (Transform(uid).Anchored) { _userInterfaceSystem.TryOpen(uid, GasMixerUiKey.Key, actor.PlayerSession); DirtyUI(uid, mixer); } else { - args.User.PopupMessageCursor(Loc.GetString("comp-gas-mixer-ui-needs-anchor")); + _popup.PopupCursor(Loc.GetString("comp-gas-mixer-ui-needs-anchor"), args.User); } args.Handled = true; @@ -169,7 +170,7 @@ private void DirtyUI(EntityUid uid, GasMixerComponent? mixer) return; _userInterfaceSystem.TrySetUiState(uid, GasMixerUiKey.Key, - new GasMixerBoundUserInterfaceState(EntityManager.GetComponent(mixer.Owner).EntityName, mixer.TargetPressure, mixer.Enabled, mixer.InletOneConcentration)); + new GasMixerBoundUserInterfaceState(EntityManager.GetComponent(uid).EntityName, mixer.TargetPressure, mixer.Enabled, mixer.InletOneConcentration)); } private void UpdateAppearance(EntityUid uid, GasMixerComponent? mixer = null, AppearanceComponent? appearance = null) diff --git a/Content.Server/Botany/Systems/BotanySystem.Seed.cs b/Content.Server/Botany/Systems/BotanySystem.Seed.cs index 752d8e40043b19..02fb1060f3168d 100644 --- a/Content.Server/Botany/Systems/BotanySystem.Seed.cs +++ b/Content.Server/Botany/Systems/BotanySystem.Seed.cs @@ -9,6 +9,7 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.Physics; using Content.Shared.Popups; +using Content.Shared.Random; using Content.Shared.Random.Helpers; using Content.Shared.Slippery; using Content.Shared.StepTrigger.Components; @@ -34,6 +35,7 @@ public sealed partial class BotanySystem : EntitySystem [Dependency] private readonly MetaDataSystem _metaData = default!; [Dependency] private readonly FixtureSystem _fixtureSystem = default!; [Dependency] private readonly CollisionWakeSystem _colWakeSystem = default!; + [Dependency] private readonly RandomHelperSystem _randomHelper = default!; public override void Initialize() { @@ -160,7 +162,7 @@ public IEnumerable GenerateProduct(SeedData proto, EntityCoordinates var product = _robustRandom.Pick(proto.ProductPrototypes); var entity = Spawn(product, position); - entity.RandomOffset(0.25f); + _randomHelper.RandomOffset(entity, 0.25f); products.Add(entity); var produce = EnsureComp(entity); diff --git a/Content.Server/Botany/Systems/LogSystem.cs b/Content.Server/Botany/Systems/LogSystem.cs index e9ac926d8a5a09..b6cb0dedaf4c94 100644 --- a/Content.Server/Botany/Systems/LogSystem.cs +++ b/Content.Server/Botany/Systems/LogSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Kitchen.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; +using Content.Shared.Random; using Content.Shared.Random.Helpers; using Robust.Shared.Containers; @@ -11,6 +12,7 @@ public sealed class LogSystem : EntitySystem { [Dependency] private readonly SharedHandsSystem _handsSystem = default!; [Dependency] private readonly SharedContainerSystem _containerSystem = default!; + [Dependency] private readonly RandomHelperSystem _randomHelper = default!; public override void Initialize() { @@ -39,7 +41,7 @@ private void OnInteractUsing(EntityUid uid, LogComponent component, InteractUsin var xform = Transform(plank); _containerSystem.AttachParentToContainerOrGrid(xform); xform.LocalRotation = 0; - plank.RandomOffset(0.25f); + _randomHelper.RandomOffset(plank, 0.25f); } } diff --git a/Content.Server/Botany/Systems/PlantHolderSystem.cs b/Content.Server/Botany/Systems/PlantHolderSystem.cs index 506b88f78b852d..c3d57c4ad8537d 100644 --- a/Content.Server/Botany/Systems/PlantHolderSystem.cs +++ b/Content.Server/Botany/Systems/PlantHolderSystem.cs @@ -15,7 +15,7 @@ using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Popups; -using Content.Shared.Random.Helpers; +using Content.Shared.Random; using Content.Shared.Tag; using Robust.Server.GameObjects; using Robust.Shared.Audio; @@ -39,6 +39,7 @@ public sealed class PlantHolderSystem : EntitySystem [Dependency] private readonly SharedPointLightSystem _pointLight = default!; [Dependency] private readonly SolutionContainerSystem _solutionSystem = default!; [Dependency] private readonly TagSystem _tagSystem = default!; + [Dependency] private readonly RandomHelperSystem _randomHelper = default!; [Dependency] private readonly IRobustRandom _random = default!; @@ -253,7 +254,7 @@ private void OnInteractUsing(EntityUid uid, PlantHolderComponent component, Inte component.Seed.Unique = false; var seed = _botany.SpawnSeedPacket(component.Seed, Transform(args.User).Coordinates, args.User); - seed.RandomOffset(0.25f); + _randomHelper.RandomOffset(seed, 0.25f); var displayName = Loc.GetString(component.Seed.DisplayName); _popup.PopupCursor(Loc.GetString("plant-holder-component-take-sample-message", ("seedName", displayName)), args.User); diff --git a/Content.Server/Chat/SuicideSystem.cs b/Content.Server/Chat/SuicideSystem.cs index 2f6ac51d72466e..131d19c5235701 100644 --- a/Content.Server/Chat/SuicideSystem.cs +++ b/Content.Server/Chat/SuicideSystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Mobs.Systems; using Content.Shared.Popups; using Content.Shared.Tag; +using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Server.Chat @@ -22,6 +23,7 @@ public sealed class SuicideSystem : EntitySystem [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly TagSystem _tagSystem = default!; [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; public bool Suicide(EntityUid victim) { @@ -67,10 +69,10 @@ private void DefaultSuicideHandler(EntityUid victim, SuicideEvent suicideEvent) return; var othersMessage = Loc.GetString("suicide-command-default-text-others", ("name", victim)); - victim.PopupMessageOtherClients(othersMessage); + _popup.PopupEntity(othersMessage, victim, Filter.PvsExcept(victim), true); var selfMessage = Loc.GetString("suicide-command-default-text-self"); - victim.PopupMessage(selfMessage); + _popup.PopupEntity(selfMessage, victim, victim); suicideEvent.SetHandled(SuicideKind.Bloodloss); } @@ -112,7 +114,7 @@ private bool EnvironmentSuicideHandler(EntityUid victim, SuicideEvent suicideEve if (itemQuery.HasComponent(entity)) continue; - RaiseLocalEvent(entity, suicideEvent, false); + RaiseLocalEvent(entity, suicideEvent); if (suicideEvent.Handled) return true; @@ -129,7 +131,7 @@ private void ApplyDeath(EntityUid target, SuicideKind kind) if (!_prototypeManager.TryIndex(kind.ToString(), out var damagePrototype)) { const SuicideKind fallback = SuicideKind.Blunt; - Logger.Error($"{nameof(SuicideSystem)} could not find the damage type prototype associated with {kind}. Falling back to {fallback}"); + Log.Error($"{nameof(SuicideSystem)} could not find the damage type prototype associated with {kind}. Falling back to {fallback}"); damagePrototype = _prototypeManager.Index(fallback.ToString()); } const int lethalAmountOfDamage = 200; // TODO: Would be nice to get this number from somewhere else diff --git a/Content.Server/Coordinates/SpawnRandomOffsetSystem.cs b/Content.Server/Coordinates/SpawnRandomOffsetSystem.cs index f664ec12255958..5643681f4ebd3d 100644 --- a/Content.Server/Coordinates/SpawnRandomOffsetSystem.cs +++ b/Content.Server/Coordinates/SpawnRandomOffsetSystem.cs @@ -1,9 +1,13 @@ +using Content.Shared.Random; using Content.Shared.Random.Helpers; +using Robust.Shared.Random; namespace Content.Server.Coordinates; public sealed class SpawnRandomOffsetSystem : EntitySystem { + [Dependency] private readonly RandomHelperSystem _randomHelper = default!; + public override void Initialize() { base.Initialize(); @@ -13,8 +17,7 @@ public override void Initialize() private void OnMapInit(EntityUid uid, SpawnRandomOffsetComponent component, MapInitEvent args) { - // TODO: Kill this extension with fire, thanks - uid.RandomOffset(component.Offset); + _randomHelper.RandomOffset(uid, component.Offset); EntityManager.RemoveComponentDeferred(uid, component); } } diff --git a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs index 2f34b4285d1a3f..d50ce8df1fdabc 100644 --- a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs @@ -11,6 +11,7 @@ using Content.Shared.Interaction; using Content.Shared.Kitchen; using Content.Shared.Popups; +using Content.Shared.Random; using Content.Shared.Random.Helpers; using Content.Shared.Stacks; using JetBrains.Annotations; @@ -33,6 +34,7 @@ internal sealed class ReagentGrinderSystem : EntitySystem [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; [Dependency] private readonly SharedContainerSystem _containerSystem = default!; + [Dependency] private readonly RandomHelperSystem _randomHelper = default!; public override void Initialize() { @@ -230,7 +232,7 @@ private void OnEjectChamberAllMessage(EntityUid uid, ReagentGrinderComponent rea foreach (var entity in inputContainer.ContainedEntities.ToList()) { inputContainer.Remove(entity); - entity.RandomOffset(0.4f); + _randomHelper.RandomOffset(entity, 0.4f); } UpdateUiState(uid); } @@ -245,7 +247,7 @@ private void OnEjectChamberContentMessage(EntityUid uid, ReagentGrinderComponent if (inputContainer.Remove(ent)) { - ent.RandomOffset(0.4f); + _randomHelper.RandomOffset(ent, 0.4f); ClickSound(uid, reagentGrinder); UpdateUiState(uid); } diff --git a/Content.Server/Popups/PopupExtensions.cs b/Content.Server/Popups/PopupExtensions.cs deleted file mode 100644 index 1419ef46fcf990..00000000000000 --- a/Content.Server/Popups/PopupExtensions.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Content.Shared.Popups; -using Robust.Server.Player; -using Robust.Shared.Player; - -namespace Content.Server.Popups -{ - public static class PopupExtensions - { - /// - /// Pops up a message for every player around to see, - /// except for itself. - /// - /// The entity on which to popup the message. - /// The message to show. - [Obsolete("Use PopupSystem.PopupEntity instead")] - public static void PopupMessageOtherClients(this EntityUid source, string message) - { - var viewers = Filter.Empty() - .AddPlayersByPvs(source) - .Recipients; - - foreach (var viewer in viewers) - { - if (viewer.AttachedEntity is not {Valid: true} viewerEntity || source == viewerEntity || viewer.AttachedEntity == null) - { - continue; - } - - source.PopupMessage(viewerEntity, message); - } - } - - /// - /// Pops up a message at the given entity's location for everyone, - /// including itself, to see. - /// - /// The entity above which to show the message. - /// The message to be seen. - /// - /// The instance of player manager to use, will be resolved automatically - /// if null. - /// - /// - /// The range in which to search for players, defaulting to one screen. - /// - [Obsolete("Use PopupSystem.PopupEntity instead")] - public static void PopupMessageEveryone(this EntityUid source, string message, IPlayerManager? playerManager = null, int range = 15) - { - source.PopupMessage(message); - source.PopupMessageOtherClients(message); - } - } -} diff --git a/Content.Server/Popups/PopupMsgCommand.cs b/Content.Server/Popups/PopupMsgCommand.cs deleted file mode 100644 index 8e4294c7fd370f..00000000000000 --- a/Content.Server/Popups/PopupMsgCommand.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Content.Server.Administration; -using Content.Shared.Administration; -using Content.Shared.Popups; -using Robust.Shared.Console; - -namespace Content.Server.Popups -{ - [AdminCommand(AdminFlags.Debug)] - public sealed class PopupMsgCommand : IConsoleCommand - { - public string Command => "srvpopupmsg"; - public string Description => ""; - public string Help => ""; - - public void Execute(IConsoleShell shell, string argStr, string[] args) - { - var source = EntityUid.Parse(args[0]); - var viewer = EntityUid.Parse(args[1]); - var msg = args[2]; - - source.PopupMessage(viewer, msg); - } - } -} diff --git a/Content.Server/Popups/PopupSystem.cs b/Content.Server/Popups/PopupSystem.cs index 407d2c49aa4df5..483d4f3d3f7a72 100644 --- a/Content.Server/Popups/PopupSystem.cs +++ b/Content.Server/Popups/PopupSystem.cs @@ -12,6 +12,7 @@ public sealed class PopupSystem : SharedPopupSystem { [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] private readonly TransformSystem _xform = default!; public override void PopupCursor(string message, PopupType type = PopupType.Small) { @@ -36,7 +37,7 @@ public override void PopupCoordinates(string message, EntityCoordinates coordina public override void PopupCoordinates(string message, EntityCoordinates coordinates, PopupType type = PopupType.Small) { - var mapPos = coordinates.ToMap(EntityManager); + var mapPos = coordinates.ToMap(EntityManager, _xform); var filter = Filter.Empty().AddPlayersByPvs(mapPos, entManager: EntityManager, playerMan: _player, cfgMan: _cfg); RaiseNetworkEvent(new PopupCoordinatesEvent(message, type, GetNetCoordinates(coordinates)), filter); } diff --git a/Content.Server/Repairable/RepairableSystem.cs b/Content.Server/Repairable/RepairableSystem.cs index 8d9833a66f4751..486ac756e3adf8 100644 --- a/Content.Server/Repairable/RepairableSystem.cs +++ b/Content.Server/Repairable/RepairableSystem.cs @@ -1,12 +1,10 @@ using Content.Server.Administration.Logs; using Content.Shared.Damage; using Content.Shared.Database; -using Content.Shared.DoAfter; using Content.Shared.Interaction; using Content.Shared.Popups; using Content.Shared.Repairable; using Content.Shared.Tools; -using Content.Shared.Tools.Components; namespace Content.Server.Repairable { @@ -14,6 +12,7 @@ public sealed class RepairableSystem : SharedRepairableSystem { [Dependency] private readonly SharedToolSystem _toolSystem = default!; [Dependency] private readonly DamageableSystem _damageableSystem = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly IAdminLogManager _adminLogger= default!; public override void Initialize() @@ -33,7 +32,7 @@ private void OnRepairFinished(EntityUid uid, RepairableComponent component, Repa if (component.Damage != null) { var damageChanged = _damageableSystem.TryChangeDamage(uid, component.Damage, true, false, origin: args.User); - _adminLogger.Add(LogType.Healed, $"{ToPrettyString(args.User):user} repaired {ToPrettyString(uid):target} by {damageChanged?.Total}"); + _adminLogger.Add(LogType.Healed, $"{ToPrettyString(args.User):user} repaired {ToPrettyString(uid):target} by {damageChanged?.GetTotal()}"); } else @@ -43,10 +42,10 @@ private void OnRepairFinished(EntityUid uid, RepairableComponent component, Repa _adminLogger.Add(LogType.Healed, $"{ToPrettyString(args.User):user} repaired {ToPrettyString(uid):target} back to full health"); } - uid.PopupMessage(args.User, - Loc.GetString("comp-repairable-repair", - ("target", uid), - ("tool", args.Used!))); + var str = Loc.GetString("comp-repairable-repair", + ("target", uid), + ("tool", args.Used!)); + _popup.PopupEntity(str, uid, args.User); } public async void Repair(EntityUid uid, RepairableComponent component, InteractUsingEvent args) diff --git a/Content.Server/Stunnable/Systems/StunbatonSystem.cs b/Content.Server/Stunnable/Systems/StunbatonSystem.cs index 7a801765d85cd0..f4a7448fa24fb0 100644 --- a/Content.Server/Stunnable/Systems/StunbatonSystem.cs +++ b/Content.Server/Stunnable/Systems/StunbatonSystem.cs @@ -11,6 +11,7 @@ using Content.Shared.Popups; using Content.Shared.Stunnable; using Content.Shared.Toggleable; +using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Player; @@ -21,6 +22,9 @@ public sealed class StunbatonSystem : SharedStunbatonSystem [Dependency] private readonly SharedItemSystem _item = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly RiggableSystem _riggableSystem = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly BatterySystem _battery = default!; + [Dependency] private readonly AudioSystem _audio = default!; public override void Initialize() { @@ -35,7 +39,7 @@ public override void Initialize() private void OnStaminaHitAttempt(EntityUid uid, StunbatonComponent component, ref StaminaDamageOnHitAttemptEvent args) { if (!component.Activated || - !TryComp(uid, out var battery) || !battery.TryUseCharge(component.EnergyPerUse)) + !TryComp(uid, out var battery) || !_battery.TryUseCharge(uid, component.EnergyPerUse, battery)) { args.Cancelled = true; return; @@ -43,7 +47,7 @@ private void OnStaminaHitAttempt(EntityUid uid, StunbatonComponent component, re if (battery.CurrentCharge < component.EnergyPerUse) { - SoundSystem.Play(component.SparksSound.GetSound(), Filter.Pvs(component.Owner, entityManager: EntityManager), uid, AudioHelpers.WithVariation(0.25f)); + _audio.PlayPvs(component.SparksSound, uid, AudioHelpers.WithVariation(0.25f)); TurnOff(uid, component); } } @@ -66,9 +70,11 @@ private void OnExamined(EntityUid uid, StunbatonComponent comp, ExaminedEvent ar ? Loc.GetString("comp-stunbaton-examined-on") : Loc.GetString("comp-stunbaton-examined-off"); args.PushMarkup(msg); - if(TryComp(uid, out var battery)) + if (TryComp(uid, out var battery)) + { args.PushMarkup(Loc.GetString("stunbaton-component-on-examine-charge", ("charge", (int)((battery.CurrentCharge/battery.MaxCharge) * 100)))); + } } private void TurnOff(EntityUid uid, StunbatonComponent comp) @@ -76,17 +82,17 @@ private void TurnOff(EntityUid uid, StunbatonComponent comp) if (!comp.Activated) return; - if (TryComp(comp.Owner, out var appearance) && - TryComp(comp.Owner, out var item)) + if (TryComp(uid, out var appearance) && + TryComp(uid, out var item)) { - _item.SetHeldPrefix(comp.Owner, "off", item); + _item.SetHeldPrefix(uid, "off", item); _appearance.SetData(uid, ToggleVisuals.Toggled, false, appearance); } - SoundSystem.Play(comp.SparksSound.GetSound(), Filter.Pvs(comp.Owner), comp.Owner, AudioHelpers.WithVariation(0.25f)); + _audio.PlayPvs(comp.SparksSound, uid, AudioHelpers.WithVariation(0.25f)); comp.Activated = false; - Dirty(comp); + Dirty(uid, comp); } private void TurnOn(EntityUid uid, StunbatonComponent comp, EntityUid user) @@ -95,12 +101,11 @@ private void TurnOn(EntityUid uid, StunbatonComponent comp, EntityUid user) if (comp.Activated) return; - var playerFilter = Filter.Pvs(comp.Owner, entityManager: EntityManager); - if (!TryComp(comp.Owner, out var battery) || battery.CurrentCharge < comp.EnergyPerUse) + if (!TryComp(uid, out var battery) || battery.CurrentCharge < comp.EnergyPerUse) { - SoundSystem.Play(comp.TurnOnFailSound.GetSound(), playerFilter, comp.Owner, AudioHelpers.WithVariation(0.25f)); - user.PopupMessage(Loc.GetString("stunbaton-component-low-charge")); + _audio.PlayPvs(comp.TurnOnFailSound, uid, AudioHelpers.WithVariation(0.25f)); + _popup.PopupEntity(Loc.GetString("stunbaton-component-low-charge"), user, user); return; } @@ -110,26 +115,27 @@ private void TurnOn(EntityUid uid, StunbatonComponent comp, EntityUid user) } - if (EntityManager.TryGetComponent(comp.Owner, out var appearance) && - EntityManager.TryGetComponent(comp.Owner, out var item)) + if (EntityManager.TryGetComponent(uid, out var appearance) && + EntityManager.TryGetComponent(uid, out var item)) { - _item.SetHeldPrefix(comp.Owner, "on", item); + _item.SetHeldPrefix(uid, "on", item); _appearance.SetData(uid, ToggleVisuals.Toggled, true, appearance); } - SoundSystem.Play(comp.SparksSound.GetSound(), playerFilter, comp.Owner, AudioHelpers.WithVariation(0.25f)); + _audio.PlayPvs(comp.SparksSound, uid, AudioHelpers.WithVariation(0.25f)); comp.Activated = true; - Dirty(comp); + Dirty(uid, comp); } // https://github.com/space-wizards/space-station-14/pull/17288#discussion_r1241213341 private void OnSolutionChange(EntityUid uid, StunbatonComponent component, SolutionChangedEvent args) { // Explode if baton is activated and rigged. - if (TryComp(uid, out var riggable)) - if (TryComp(uid, out var battery)) - if (component.Activated && riggable.IsRigged) - _riggableSystem.Explode(uid, battery); + if (!TryComp(uid, out var riggable) || !TryComp(uid, out var battery)) + return; + + if (component.Activated && riggable.IsRigged) + _riggableSystem.Explode(uid, battery); } private void SendPowerPulse(EntityUid target, EntityUid? user, EntityUid used) @@ -138,7 +144,7 @@ private void SendPowerPulse(EntityUid target, EntityUid? user, EntityUid used) { Used = used, User = user - }, false); + }); } } } diff --git a/Content.Shared/Popups/SharedPopupExtensions.cs b/Content.Shared/Popups/SharedPopupExtensions.cs deleted file mode 100644 index 94305330ef1acd..00000000000000 --- a/Content.Shared/Popups/SharedPopupExtensions.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Robust.Shared.Map; -using Robust.Shared.Player; - -namespace Content.Shared.Popups -{ - public static class SharedPopupExtensions - { - /// - /// Pops up a message at the location of for - /// alone to see. - /// - /// The entity above which the message will appear. - /// The entity that will see the message. - /// The message to show. - [Obsolete("Use PopupSystem.PopupEntity instead.")] - public static void PopupMessage(this EntityUid source, EntityUid viewer, string message) - { - var popupSystem = EntitySystem.Get(); - - popupSystem.PopupEntity(message, source, viewer); - } - - /// - /// Pops up a message at the given entity's location for it alone to see. - /// - /// The entity that will see the message. - /// The message to be seen. - [Obsolete("Use PopupSystem.PopupEntity instead.")] - public static void PopupMessage(this EntityUid viewer, string message) - { - viewer.PopupMessage(viewer, message); - } - - /// - /// Makes a string of text float up from a client's cursor. - /// - /// - /// The client attached entity that the message is being sent to. - /// - /// Text contents of the message. - [Obsolete("Use PopupSystem.PopupCursor instead.")] - public static void PopupMessageCursor(this EntityUid viewer, string message) - { - var popupSystem = EntitySystem.Get(); - popupSystem.PopupCursor(message, viewer); - } - } -} diff --git a/Content.Shared/Random/Helpers/SharedEntityExtensions.cs b/Content.Shared/Random/Helpers/SharedEntityExtensions.cs deleted file mode 100644 index 5b12ffb94d03f8..00000000000000 --- a/Content.Shared/Random/Helpers/SharedEntityExtensions.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Numerics; -using Robust.Shared.Random; -using Robust.Shared.Utility; - -namespace Content.Shared.Random.Helpers -{ - public static class SharedEntityExtensions - { - public static void RandomOffset(this EntityUid entity, float minX, float maxX, float minY, float maxY) - { - DebugTools.AssertNotNull(entity); - DebugTools.Assert(minX <= maxX, $"Minimum X value ({minX}) must be smaller than or equal to the maximum X value ({maxX})"); - DebugTools.Assert(minY <= maxY, $"Minimum Y value ({minY}) must be smaller than or equal to the maximum Y value ({maxY})"); - - var random = IoCManager.Resolve(); - var randomX = random.NextFloat() * (maxX - minX) + minX; - var randomY = random.NextFloat() * (maxY - minY) + minY; - var offset = new Vector2(randomX, randomY); - - IoCManager.Resolve().GetComponent(entity).LocalPosition += offset; - } - - public static void RandomOffset(this EntityUid entity, float min, float max) - { - DebugTools.AssertNotNull(entity); - DebugTools.Assert(min <= max, $"Minimum value ({min}) must be smaller than or equal to the maximum value ({max})"); - - entity.RandomOffset(min, max, min, max); - } - - public static void RandomOffset(this EntityUid entity, float value) - { - value = Math.Abs(value); - entity.RandomOffset(-value, value); - } - } -} diff --git a/Content.Shared/Random/RandomHelperSystem.cs b/Content.Shared/Random/RandomHelperSystem.cs new file mode 100644 index 00000000000000..66ebcc3f78bdd0 --- /dev/null +++ b/Content.Shared/Random/RandomHelperSystem.cs @@ -0,0 +1,35 @@ +using System.Numerics; +using Content.Shared.Random.Helpers; +using Robust.Shared.Random; +using Robust.Shared.Utility; + +namespace Content.Shared.Random; + +/// +/// System containing various content-related random helpers. +/// +public sealed class RandomHelperSystem : EntitySystem +{ + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly IRobustRandom _random = default!; + + public void RandomOffset(EntityUid entity, float minX, float maxX, float minY, float maxY) + { + var randomX = _random.NextFloat() * (maxX - minX) + minX; + var randomY = _random.NextFloat() * (maxY - minY) + minY; + var offset = new Vector2(randomX, randomY); + + var xform = Transform(entity); + _transform.SetLocalPosition(xform, xform.LocalPosition + offset); + } + + public void RandomOffset(EntityUid entity, float min, float max) + { + RandomOffset(entity, min, max, min, max); + } + + public void RandomOffset(EntityUid entity, float value) + { + RandomOffset(entity, -value, value); + } +} diff --git a/SpaceStation14.sln.DotSettings b/SpaceStation14.sln.DotSettings index 57f0e3c4db6acb..72e550ac6e3078 100644 --- a/SpaceStation14.sln.DotSettings +++ b/SpaceStation14.sln.DotSettings @@ -587,6 +587,7 @@ public sealed partial class $CLASS$ : Shared$CLASS$ { True True True + True True True True From a439a1295e12e5fefd73dbac9e27427a7e2f813b Mon Sep 17 00:00:00 2001 From: JoeHammad1844 <130668733+JoeHammad1844@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:39:06 +1100 Subject: [PATCH 130/245] Stun baton tweak (#20970) --- Resources/Prototypes/Entities/Objects/Weapons/security.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 8d30935b0418f4..616625c9250042 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -10,7 +10,7 @@ - state: stunbaton_off map: [ "enum.ToggleVisuals.Layer" ] - type: Stunbaton - energyPerUse: 100 + energyPerUse: 50 - type: MeleeWeapon damage: types: @@ -19,10 +19,10 @@ angle: 60 animation: WeaponArcSlash - type: StaminaDamageOnHit - damage: 55 + damage: 35 sound: /Audio/Weapons/egloves.ogg - type: StaminaDamageOnCollide - damage: 55 + damage: 35 sound: /Audio/Weapons/egloves.ogg - type: Battery maxCharge: 1000 From 2b1e4ed32d66e7aaad95759bbcece2d7dd63e213 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Oct 2023 07:40:10 -0400 Subject: [PATCH 131/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5c4f12a1810075..31adb6da969e6e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Flareguy - changes: - - {message: 'Updated asteroid tiles to match their sprites from /tg/. They are much - more vibrant, and should fit in a lot better with their surroundings.', type: Tweak} - - {message: Updated pried tiles to match the appearance of the new tiles better., - type: Tweak} - id: 4514 - time: '2023-08-10T18:33:15.435911+00:00' - author: juliangiebel & mirrorcult changes: - {message: 'You may notice that chat text in general has become much prettier and @@ -2939,3 +2931,9 @@ Entries: - {message: Uranium crabs are more radioactive!, type: Tweak} id: 5013 time: '2023-10-16T05:34:18.0000000+00:00' +- author: JoeHammad + changes: + - {message: Stun batons now take three hits to stun and have had their battery use + dropped by half, type: Tweak} + id: 5014 + time: '2023-10-16T11:39:06.0000000+00:00' From 91ea140ff174c4271ef6b870c31de30162fb8c30 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:49:41 +1100 Subject: [PATCH 132/245] Fix item drop mispredicts (#21035) --- Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs index 77752c4fbdeb7c..5d0eaaf994dd91 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs @@ -104,6 +104,8 @@ public bool TryDrop(EntityUid uid, Hand hand, EntityCoordinates? targetDropLocat var target = targetDropLocation.Value.ToMap(EntityManager, TransformSystem); TransformSystem.SetWorldPosition(itemXform, GetFinalDropCoordinates(uid, userXform.MapPosition, target)); + // TODO: Temporary measure until we get engine method for setworldpos nolerp. + TransformSystem.DeactivateLerp(itemXform); return true; } From fedc7c695743afb7b9c8fb6ab633e9af9f8ceb21 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Oct 2023 07:50:45 -0400 Subject: [PATCH 133/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 31adb6da969e6e..bc9c55affc123f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: juliangiebel & mirrorcult - changes: - - {message: 'You may notice that chat text in general has become much prettier and - dynamic. Whispered text is smaller, announcements are larger, and names should - pop out more.', type: Tweak} - id: 4515 - time: '2023-08-10T18:33:15.436963+00:00' - author: EmoGarbage404 changes: - {message: All crates have a brand new look., type: Tweak} @@ -2937,3 +2930,8 @@ Entries: dropped by half, type: Tweak} id: 5014 time: '2023-10-16T11:39:06.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Fix item drops mispredicting., type: Fix} + id: 5015 + time: '2023-10-16T11:49:41.0000000+00:00' From fd994511a74bf58bf6f09bda61662b88a4f38f2d Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Mon, 16 Oct 2023 17:51:58 -0400 Subject: [PATCH 134/245] technology auto guidebook (#21029) * technology auto guidebook * boo-womp * boo-womp II --- .../Controls/GuideTechDisciplineEmbed.xaml | 4 + .../Controls/GuideTechDisciplineEmbed.xaml.cs | 60 ++++++++++++ .../Controls/GuideTechnologyEmbed.xaml | 22 +++++ .../Controls/GuideTechnologyEmbed.xaml.cs | 93 +++++++++++++++++++ .../UI/MiniTechnologyCardControl.xaml.cs | 8 +- .../Research/UI/ResearchConsoleMenu.xaml.cs | 34 +------ .../Systems/TechnologyDiskSystem.cs | 2 +- .../Prototypes/TechnologyPrototype.cs | 32 +++---- .../Research/Systems/SharedResearchSystem.cs | 56 ++++++++++- Resources/Locale/en-US/guidebook/guides.ftl | 1 + .../components/research-console-component.ftl | 2 + Resources/Prototypes/Guidebook/science.yml | 7 ++ .../ServerInfo/Guidebook/Science/Science.xml | 4 +- .../Guidebook/Science/Technologies.xml | 23 +++++ 14 files changed, 296 insertions(+), 52 deletions(-) create mode 100644 Content.Client/Guidebook/Controls/GuideTechDisciplineEmbed.xaml create mode 100644 Content.Client/Guidebook/Controls/GuideTechDisciplineEmbed.xaml.cs create mode 100644 Content.Client/Guidebook/Controls/GuideTechnologyEmbed.xaml create mode 100644 Content.Client/Guidebook/Controls/GuideTechnologyEmbed.xaml.cs create mode 100644 Resources/ServerInfo/Guidebook/Science/Technologies.xml diff --git a/Content.Client/Guidebook/Controls/GuideTechDisciplineEmbed.xaml b/Content.Client/Guidebook/Controls/GuideTechDisciplineEmbed.xaml new file mode 100644 index 00000000000000..0878951af86cb5 --- /dev/null +++ b/Content.Client/Guidebook/Controls/GuideTechDisciplineEmbed.xaml @@ -0,0 +1,4 @@ + + + diff --git a/Content.Client/Guidebook/Controls/GuideTechDisciplineEmbed.xaml.cs b/Content.Client/Guidebook/Controls/GuideTechDisciplineEmbed.xaml.cs new file mode 100644 index 00000000000000..88d264cb059a9f --- /dev/null +++ b/Content.Client/Guidebook/Controls/GuideTechDisciplineEmbed.xaml.cs @@ -0,0 +1,60 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using Content.Client.Guidebook.Richtext; +using Content.Shared.Research.Prototypes; +using JetBrains.Annotations; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; + +namespace Content.Client.Guidebook.Controls; + +/// +/// Control for embedding all the technologies in a discipline into a guidebook. +/// +[UsedImplicitly, GenerateTypedNameReferences] +public sealed partial class GuideTechDisciplineEmbed : BoxContainer, IDocumentTag +{ + [Dependency] private readonly IPrototypeManager _prototype = default!; + + public GuideTechDisciplineEmbed() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + MouseFilter = MouseFilterMode.Stop; + } + + public GuideTechDisciplineEmbed(string group) : this() + { + var prototypes = _prototype.EnumeratePrototypes() + .Where(p => p.Discipline.Equals(group)).OrderBy(p => p.Tier).ThenBy(p => Loc.GetString(p.Name)); + foreach (var tech in prototypes) + { + var embed = new GuideTechnologyEmbed(tech); + DisciplineContainer.AddChild(embed); + } + } + + public bool TryParseTag(Dictionary args, [NotNullWhen(true)] out Control? control) + { + control = null; + if (!args.TryGetValue("Discipline", out var group)) + { + Logger.Error("Technology discipline embed tag is missing discipline argument"); + return false; + } + + var prototypes = _prototype.EnumeratePrototypes() + .Where(p => p.Discipline.Equals(group)).OrderBy(p => p.Tier).ThenBy(p => Loc.GetString(p.Name)); + foreach (var tech in prototypes) + { + var embed = new GuideTechnologyEmbed(tech); + DisciplineContainer.AddChild(embed); + } + + control = this; + return true; + } +} diff --git a/Content.Client/Guidebook/Controls/GuideTechnologyEmbed.xaml b/Content.Client/Guidebook/Controls/GuideTechnologyEmbed.xaml new file mode 100644 index 00000000000000..6d96f19972e986 --- /dev/null +++ b/Content.Client/Guidebook/Controls/GuideTechnologyEmbed.xaml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + diff --git a/Content.Client/Guidebook/Controls/GuideTechnologyEmbed.xaml.cs b/Content.Client/Guidebook/Controls/GuideTechnologyEmbed.xaml.cs new file mode 100644 index 00000000000000..d61cc2d961c2a9 --- /dev/null +++ b/Content.Client/Guidebook/Controls/GuideTechnologyEmbed.xaml.cs @@ -0,0 +1,93 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Client.Guidebook.Richtext; +using Content.Client.Message; +using Content.Client.Research; +using Content.Client.UserInterface.ControlExtensions; +using Content.Shared.Research.Prototypes; +using JetBrains.Annotations; +using Robust.Client.AutoGenerated; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; + +namespace Content.Client.Guidebook.Controls; + +/// +/// Control for embedding a research technology into a guidebook. +/// +[UsedImplicitly, GenerateTypedNameReferences] +public sealed partial class GuideTechnologyEmbed : BoxContainer, IDocumentTag, ISearchableControl +{ + [Dependency] private readonly IEntitySystemManager _systemManager = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + + private readonly ResearchSystem _research; + private readonly SpriteSystem _sprite; + + public GuideTechnologyEmbed() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + _research = _systemManager.GetEntitySystem(); + _sprite = _systemManager.GetEntitySystem(); + MouseFilter = MouseFilterMode.Stop; + } + + public GuideTechnologyEmbed(string technology) : this() + { + GenerateControl(_prototype.Index(technology)); + } + + public GuideTechnologyEmbed(TechnologyPrototype technology) : this() + { + GenerateControl(technology); + } + + public bool CheckMatchesSearch(string query) + { + return this.ChildrenContainText(query); + } + + public void SetHiddenState(bool state, string query) + { + Visible = CheckMatchesSearch(query) ? state : !state; + } + + public bool TryParseTag(Dictionary args, [NotNullWhen(true)] out Control? control) + { + control = null; + if (!args.TryGetValue("Technology", out var id)) + { + Logger.Error("Technology embed tag is missing technology prototype argument"); + return false; + } + + if (!_prototype.TryIndex(id, out var technology)) + { + Logger.Error($"Specified technology prototype \"{id}\" is not a valid technology prototype"); + return false; + } + + GenerateControl(technology); + + control = this; + return true; + } + + private void GenerateControl(TechnologyPrototype technology) + { + var discipline = _prototype.Index(technology.Discipline); + + NameLabel.SetMarkup($"[bold]{Loc.GetString(technology.Name)}[/bold]"); + DescriptionLabel.SetMessage(_research.GetTechnologyDescription(technology, includePrereqs: true, disciplinePrototype: discipline)); + TechTexture.Texture = _sprite.Frame0(technology.Icon); + + DisciplineColorBackground.PanelOverride = new StyleBoxFlat + { + BackgroundColor = discipline.Color + }; + } +} diff --git a/Content.Client/Research/UI/MiniTechnologyCardControl.xaml.cs b/Content.Client/Research/UI/MiniTechnologyCardControl.xaml.cs index 8b1a583c24a322..5af1159c935184 100644 --- a/Content.Client/Research/UI/MiniTechnologyCardControl.xaml.cs +++ b/Content.Client/Research/UI/MiniTechnologyCardControl.xaml.cs @@ -2,6 +2,7 @@ using Robust.Client.AutoGenerated; using Robust.Client.GameObjects; using Robust.Client.UserInterface; +using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -15,10 +16,13 @@ public MiniTechnologyCardControl(TechnologyPrototype technology, IPrototypeManag { RobustXamlLoader.Load(this); - var discipline = prototypeManager.Index(technology.Discipline); + var discipline = prototypeManager.Index(technology.Discipline); Background.ModulateSelfOverride = discipline.Color; Texture.Texture = spriteSys.Frame0(technology.Icon); NameLabel.SetMessage(Loc.GetString(technology.Name)); - Main.ToolTip = description.ToString(); + + var tooltip = new Tooltip(); + tooltip.SetMessage(description); + Main.TooltipSupplier = _ => tooltip; } } diff --git a/Content.Client/Research/UI/ResearchConsoleMenu.xaml.cs b/Content.Client/Research/UI/ResearchConsoleMenu.xaml.cs index c2b23f7341deda..a20509202fdeea 100644 --- a/Content.Client/Research/UI/ResearchConsoleMenu.xaml.cs +++ b/Content.Client/Research/UI/ResearchConsoleMenu.xaml.cs @@ -27,7 +27,7 @@ public sealed partial class ResearchConsoleMenu : FancyWindow private readonly TechnologyDatabaseComponent? _technologyDatabase; private readonly ResearchSystem _research; private readonly SpriteSystem _sprite; - private readonly AccessReaderSystem _accessReader = default!; + private readonly AccessReaderSystem _accessReader; public readonly EntityUid Entity; @@ -55,7 +55,7 @@ public void UpdatePanels(ResearchConsoleBoundInterfaceState state) foreach (var tech in allTech) { - var mini = new MiniTechnologyCardControl(tech, _prototype, _sprite, GetTechnologyDescription(tech, false)); + var mini = new MiniTechnologyCardControl(tech, _prototype, _sprite, _research.GetTechnologyDescription(tech)); AvailableCardsContainer.AddChild(mini); } @@ -74,7 +74,7 @@ public void UpdatePanels(ResearchConsoleBoundInterfaceState state) foreach (var techId in _technologyDatabase.CurrentTechnologyCards) { var tech = _prototype.Index(techId); - var cardControl = new TechnologyCardControl(tech, _prototype, _sprite, GetTechnologyDescription(tech), state.Points, hasAccess); + var cardControl = new TechnologyCardControl(tech, _prototype, _sprite, _research.GetTechnologyDescription(tech, includeTier: false), state.Points, hasAccess); cardControl.OnPressed += () => OnTechnologyCardPressed?.Invoke(techId); TechnologyCardsContainer.AddChild(cardControl); } @@ -82,37 +82,11 @@ public void UpdatePanels(ResearchConsoleBoundInterfaceState state) foreach (var unlocked in _technologyDatabase.UnlockedTechnologies) { var tech = _prototype.Index(unlocked); - var cardControl = new MiniTechnologyCardControl(tech, _prototype, _sprite, GetTechnologyDescription(tech, false)); + var cardControl = new MiniTechnologyCardControl(tech, _prototype, _sprite, _research.GetTechnologyDescription(tech, false)); UnlockedCardsContainer.AddChild(cardControl); } } - public FormattedMessage GetTechnologyDescription(TechnologyPrototype technology, bool includeCost = true) - { - var description = new FormattedMessage(); - if (includeCost) - { - description.AddMarkup(Loc.GetString("research-console-cost", ("amount", technology.Cost))); - description.PushNewline(); - } - description.AddMarkup(Loc.GetString("research-console-unlocks-list-start")); - foreach (var recipe in technology.RecipeUnlocks) - { - var recipeProto = _prototype.Index(recipe); - description.PushNewline(); - description.AddMarkup(Loc.GetString("research-console-unlocks-list-entry", - ("name",recipeProto.Name))); - } - foreach (var generic in technology.GenericUnlocks) - { - description.PushNewline(); - description.AddMarkup(Loc.GetString("research-console-unlocks-list-entry-generic", - ("name", Loc.GetString(generic.UnlockDescription)))); - } - - return description; - } - public void UpdateInformationPanel(ResearchConsoleBoundInterfaceState state) { var amountMsg = new FormattedMessage(); diff --git a/Content.Server/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs b/Content.Server/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs index d886493e3f3f68..176b2b68bc9468 100644 --- a/Content.Server/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs +++ b/Content.Server/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs @@ -72,7 +72,7 @@ private void OnMapInit(EntityUid uid, TechnologyDiskComponent component, MapInit var tier = int.Parse(weightedRandom.Pick(_random)); //get a list of every distinct recipe in all the technologies. - var techs = new List(); + var techs = new List>(); foreach (var tech in _prototype.EnumeratePrototypes()) { if (tech.Tier != tier) diff --git a/Content.Shared/Research/Prototypes/TechnologyPrototype.cs b/Content.Shared/Research/Prototypes/TechnologyPrototype.cs index ec1ca029c71fbf..38000677a13637 100644 --- a/Content.Shared/Research/Prototypes/TechnologyPrototype.cs +++ b/Content.Shared/Research/Prototypes/TechnologyPrototype.cs @@ -1,6 +1,4 @@ using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; using Robust.Shared.Utility; namespace Content.Shared.Research.Prototypes; @@ -19,57 +17,57 @@ public sealed class TechnologyPrototype : IPrototype /// The name of the technology. /// Supports locale strings /// - [DataField("name", required: true)] - public string Name = string.Empty; + [DataField(required: true)] + public LocId Name = string.Empty; /// /// An icon used to visually represent the technology in UI. /// - [DataField("icon", required: true)] + [DataField(required: true)] public SpriteSpecifier Icon = default!; /// /// What research discipline this technology belongs to. /// - [DataField("discipline", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] - public string Discipline = default!; + [DataField(required: true)] + public ProtoId Discipline; /// /// What tier research is this? /// The tier governs how much lower-tier technology /// needs to be unlocked before this one. /// - [DataField("tier", required: true)] + [DataField(required: true)] public int Tier; /// /// Hidden tech is not ever available at the research console. /// - [DataField("hidden")] + [DataField] public bool Hidden; /// /// How much research is needed to unlock. /// - [DataField("cost")] + [DataField] public int Cost = 10000; /// /// A list of s that need to be unlocked in order to unlock this technology. /// - [DataField("technologyPrerequisites", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public IReadOnlyList TechnologyPrerequisites = new List(); + [DataField] + public List> TechnologyPrerequisites = new(); /// /// A list of s that are unlocked by this technology /// - [DataField("recipeUnlocks", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public IReadOnlyList RecipeUnlocks = new List(); + [DataField] + public List> RecipeUnlocks = new(); /// /// A list of non-standard effects that are done when this technology is unlocked. /// - [DataField("genericUnlocks")] + [DataField] public IReadOnlyList GenericUnlocks = new List(); } @@ -80,13 +78,13 @@ public partial record struct GenericUnlock() /// What event is raised when this is unlocked? /// Used for doing non-standard logic. /// - [DataField("purchaseEvent")] + [DataField] public object? PurchaseEvent = null; /// /// A player facing tooltip for what the unlock does. /// Supports locale strings. /// - [DataField("unlockDescription")] + [DataField] public string UnlockDescription = string.Empty; } diff --git a/Content.Shared/Research/Systems/SharedResearchSystem.cs b/Content.Shared/Research/Systems/SharedResearchSystem.cs index e0cc937b004e9f..12f27d0b9c920f 100644 --- a/Content.Shared/Research/Systems/SharedResearchSystem.cs +++ b/Content.Shared/Research/Systems/SharedResearchSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Research.Prototypes; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using Robust.Shared.Utility; namespace Content.Shared.Research.Systems; @@ -40,7 +41,7 @@ public void UpdateTechnologyCards(EntityUid uid, TechnologyDatabaseComponent? co component.CurrentTechnologyCards.Add(selected.ID); } - Dirty(component); + Dirty(uid, component); } public List GetAvailableTechnologies(EntityUid uid, TechnologyDatabaseComponent? component = null) @@ -142,6 +143,59 @@ public int GetHighestDisciplineTier(TechnologyDatabaseComponent component, TechD return tier - 1; } + public FormattedMessage GetTechnologyDescription( + TechnologyPrototype technology, + bool includeCost = true, + bool includeTier = true, + bool includePrereqs = false, + TechDisciplinePrototype? disciplinePrototype = null) + { + var description = new FormattedMessage(); + if (includeTier) + { + disciplinePrototype ??= PrototypeManager.Index(technology.Discipline); + description.AddMarkup(Loc.GetString("research-console-tier-discipline-info", + ("tier", technology.Tier), ("color", disciplinePrototype.Color), ("discipline", Loc.GetString(disciplinePrototype.Name)))); + description.PushNewline(); + } + + if (includeCost) + { + description.AddMarkup(Loc.GetString("research-console-cost", ("amount", technology.Cost))); + description.PushNewline(); + } + + if (includePrereqs && technology.TechnologyPrerequisites.Any()) + { + description.AddMarkup(Loc.GetString("research-console-prereqs-list-start")); + foreach (var recipe in technology.TechnologyPrerequisites) + { + var techProto = PrototypeManager.Index(recipe); + description.PushNewline(); + description.AddMarkup(Loc.GetString("research-console-prereqs-list-entry", + ("text", Loc.GetString(techProto.Name)))); + } + description.PushNewline(); + } + + description.AddMarkup(Loc.GetString("research-console-unlocks-list-start")); + foreach (var recipe in technology.RecipeUnlocks) + { + var recipeProto = PrototypeManager.Index(recipe); + description.PushNewline(); + description.AddMarkup(Loc.GetString("research-console-unlocks-list-entry", + ("name",recipeProto.Name))); + } + foreach (var generic in technology.GenericUnlocks) + { + description.PushNewline(); + description.AddMarkup(Loc.GetString("research-console-unlocks-list-entry-generic", + ("text", Loc.GetString(generic.UnlockDescription)))); + } + + return description; + } + /// /// Returns whether a technology is unlocked on this database or not. /// diff --git a/Resources/Locale/en-US/guidebook/guides.ftl b/Resources/Locale/en-US/guidebook/guides.ftl index 9fc69839c08d37..8893db9b23093e 100644 --- a/Resources/Locale/en-US/guidebook/guides.ftl +++ b/Resources/Locale/en-US/guidebook/guides.ftl @@ -34,6 +34,7 @@ guide-entry-botanicals = Botanicals guide-entry-cloning = Cloning guide-entry-cryogenics = Cryogenics guide-entry-science = Science +guide-entry-technologies = Technologies guide-entry-anomalous-research = Anomalous Research guide-entry-scanners-and-vessels = Scanners and Vessels guide-entry-ape = A.P.E. diff --git a/Resources/Locale/en-US/research/components/research-console-component.ftl b/Resources/Locale/en-US/research/components/research-console-component.ftl index 1063e6ebcb202b..196983efcd43ec 100644 --- a/Resources/Locale/en-US/research/components/research-console-component.ftl +++ b/Resources/Locale/en-US/research/components/research-console-component.ftl @@ -14,5 +14,7 @@ research-console-cost = Cost: [color=orchid]{$amount}[/color] research-console-unlocks-list-start = Unlocks: research-console-unlocks-list-entry = - [color=yellow]{$name}[/color] research-console-unlocks-list-entry-generic = - [color=green]{$text}[/color] +research-console-prereqs-list-start = Requires: +research-console-prereqs-list-entry = - [color=orchid]{$text}[/color] research-console-no-access-popup = No access! diff --git a/Resources/Prototypes/Guidebook/science.yml b/Resources/Prototypes/Guidebook/science.yml index d9a3d442b446c3..03840ec15ee1d1 100644 --- a/Resources/Prototypes/Guidebook/science.yml +++ b/Resources/Prototypes/Guidebook/science.yml @@ -3,11 +3,18 @@ name: guide-entry-science text: "/ServerInfo/Guidebook/Science/Science.xml" children: + - Technologies - AnomalousResearch - Xenoarchaeology - Robotics - MachineUpgrading +- type: guideEntry + id: Technologies + name: guide-entry-technologies + text: "/ServerInfo/Guidebook/Science/Technologies.xml" + filterEnabled: True + - type: guideEntry id: AnomalousResearch name: guide-entry-anomalous-research diff --git a/Resources/ServerInfo/Guidebook/Science/Science.xml b/Resources/ServerInfo/Guidebook/Science/Science.xml index a32112877fb469..c886daf4d53174 100644 --- a/Resources/ServerInfo/Guidebook/Science/Science.xml +++ b/Resources/ServerInfo/Guidebook/Science/Science.xml @@ -10,7 +10,9 @@ Science, often called Research and Development, is a job made up of both generat The most important thing inside your department is the R&D server, which stores unlocked technologies, and the R&D computer, which allows you to unlock technologies. -Each technology costs [color=#a4885c]Research Points[/color] and unlocks recipes at lathes. Some technologies will also have prerequesites you have to unlock before you can research them. +Each technology costs [color=#a4885c]Research Points[/color] and unlocks recipes at lathes. Some technologies will also have prerequisites you have to unlock before you can research them. + +Information about the different technologies can be viewed [textlink="on the technology guidebook page" link="Technologies"]. ## Disciplines Technologies are spread over 5 different Disciplines: diff --git a/Resources/ServerInfo/Guidebook/Science/Technologies.xml b/Resources/ServerInfo/Guidebook/Science/Technologies.xml new file mode 100644 index 00000000000000..7f0feaca4208cd --- /dev/null +++ b/Resources/ServerInfo/Guidebook/Science/Technologies.xml @@ -0,0 +1,23 @@ + +# Technologies + +All technologies have a cost and a tier requirement in order to be researched. Unlocking them adds a variety of recipes that can be printed at various lathes. + +The different technologies and their respective discipline are listed below. + +## Industrial + + +## Biochemical + + +## Arsenal + + +## Experimental + + +## Civilian Services + + + From d394477d3a3d41a94efbace7c8820cb30f6f0a03 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 17 Oct 2023 23:58:36 +1100 Subject: [PATCH 135/245] Update submodule to 167.0.0 (#21060) --- Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs | 2 -- RobustToolbox | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs index 5d0eaaf994dd91..77752c4fbdeb7c 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Drop.cs @@ -104,8 +104,6 @@ public bool TryDrop(EntityUid uid, Hand hand, EntityCoordinates? targetDropLocat var target = targetDropLocation.Value.ToMap(EntityManager, TransformSystem); TransformSystem.SetWorldPosition(itemXform, GetFinalDropCoordinates(uid, userXform.MapPosition, target)); - // TODO: Temporary measure until we get engine method for setworldpos nolerp. - TransformSystem.DeactivateLerp(itemXform); return true; } diff --git a/RobustToolbox b/RobustToolbox index 7095a58685f607..77654a16289b2c 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 7095a58685f60707b38edfc4689b658a5bd21a92 +Subproject commit 77654a16289b2c8638b344b9e858c65051512e03 From ebd5238807b5bb6ccc4a90c4c61a54f649ae5797 Mon Sep 17 00:00:00 2001 From: Vasilis Date: Wed, 18 Oct 2023 00:58:05 +0200 Subject: [PATCH 136/245] Restrict arrows from being used in cannons (#21067) --- .../Entities/Objects/Weapons/Guns/pneumatic_cannon.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml index b79ec2c6739588..f9413d6c673ced 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml @@ -33,6 +33,9 @@ - type: PneumaticCannon - type: Storage capacity: 30 + blacklist: + tags: + - Arrow - type: Appearance - type: ItemMapper containerWhitelist: [gas_tank] From c08be70b6f36f01154cce162dfc2b3a30bf89995 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 17 Oct 2023 18:59:11 -0400 Subject: [PATCH 137/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index bc9c55affc123f..62e18d91b1df50 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - {message: All crates have a brand new look., type: Tweak} - id: 4516 - time: '2023-08-11T00:12:38.0000000+00:00' - author: EmoGarbage404 changes: - {message: Job icons now ignore lighting., type: Fix} @@ -2935,3 +2930,8 @@ Entries: - {message: Fix item drops mispredicting., type: Fix} id: 5015 time: '2023-10-16T11:49:41.0000000+00:00' +- author: Vasilis + changes: + - {message: Pneumatic Cannons can no longer shoot arrows., type: Tweak} + id: 5016 + time: '2023-10-17T22:58:05.0000000+00:00' From 0cf28f97008a4f722a4dc2eceff9b405b1cb7343 Mon Sep 17 00:00:00 2001 From: Vasilis Date: Wed, 18 Oct 2023 01:01:24 +0200 Subject: [PATCH 138/245] Spear 1984 (#21065) --- .../Entities/Objects/Weapons/Guns/Projectiles/arrows.yml | 6 +++--- .../Prototypes/Entities/Objects/Weapons/Melee/spear.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml index 201e328c75bceb..7dd6360a4059a2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml @@ -44,16 +44,16 @@ - type: SolutionContainerManager solutions: ammo: - maxVol: 5 + maxVol: 2 - type: RefillableSolution solution: ammo - type: InjectableSolution solution: ammo - type: SolutionInjectOnCollide - transferAmount: 5 + transferAmount: 2 blockSlots: NONE - type: SolutionTransfer - maxTransferAmount: 5 + maxTransferAmount: 2 - type: Appearance - type: SolutionContainerVisuals maxFillLevels: 1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml index bbd4d2389d3eaf..9127a92d51279a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml @@ -58,7 +58,7 @@ - type: SolutionContainerManager solutions: melee: - maxVol: 5 + maxVol: 2 - type: MeleeChemicalInjector solution: melee - type: RefillableSolution @@ -66,10 +66,10 @@ - type: InjectableSolution solution: melee - type: SolutionInjectOnCollide - transferAmount: 5 + transferAmount: 2 blockSlots: NONE - type: SolutionTransfer - maxTransferAmount: 5 + maxTransferAmount: 2 - type: Wieldable - type: IncreaseDamageOnWield damage: From b33b57509ede35658d05abf6b965f1858209469b Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 17 Oct 2023 19:02:28 -0400 Subject: [PATCH 139/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 62e18d91b1df50..c99989e27ea448 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - {message: Job icons now ignore lighting., type: Fix} - id: 4517 - time: '2023-08-11T00:36:26.0000000+00:00' - author: Lank changes: - {message: 'As disease has been eradicated, Spaceacillin can no longer be created @@ -2935,3 +2930,9 @@ Entries: - {message: Pneumatic Cannons can no longer shoot arrows., type: Tweak} id: 5016 time: '2023-10-17T22:58:05.0000000+00:00' +- author: Vasilis + changes: + - {message: Spears and arrows can now only hold up to 2u of liquids instead of 5u., + type: Tweak} + id: 5017 + time: '2023-10-17T23:01:25.0000000+00:00' From df815324692d0f82ed7de69793e237b757e5f904 Mon Sep 17 00:00:00 2001 From: "I.K" <45953835+notquitehadouken@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:12:00 -0500 Subject: [PATCH 140/245] Change wide swing sprites to be that of the weapon used (#21050) Co-authored-by: notquitehadouken <1isthisameme> --- .../Melee/MeleeWeaponSystem.Effects.cs | 46 +++++++++++++------ .../Weapons/Melee/MeleeWeaponSystem.cs | 7 ++- .../Fluids/EntitySystems/AbsorbentSystem.cs | 5 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 4 +- .../Weapons/Melee/Events/MeleeLungeEvent.cs | 8 +++- .../Weapons/Melee/MeleeWeaponComponent.cs | 11 +++++ .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 8 ++-- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 23 ++++------ .../Entities/Mobs/NPCs/argocyte.yml | 3 +- .../Entities/Mobs/NPCs/behonker.yml | 3 +- .../Prototypes/Entities/Mobs/NPCs/carp.yml | 3 +- .../Entities/Mobs/NPCs/elemental.yml | 23 ++++------ .../Prototypes/Entities/Mobs/NPCs/flesh.yml | 6 +-- .../Prototypes/Entities/Mobs/NPCs/mimic.yml | 3 +- .../Prototypes/Entities/Mobs/NPCs/pets.yml | 1 - .../Entities/Mobs/NPCs/regalrat.yml | 7 +-- .../Prototypes/Entities/Mobs/NPCs/slimes.yml | 4 +- .../Prototypes/Entities/Mobs/NPCs/space.yml | 3 -- .../Entities/Mobs/NPCs/spacetick.yml | 1 - .../Prototypes/Entities/Mobs/NPCs/xeno.yml | 5 -- .../Entities/Mobs/Player/dragon.yml | 1 - .../Entities/Mobs/Player/familiars.yml | 1 - .../Entities/Mobs/Player/guardian.yml | 5 +- .../Prototypes/Entities/Mobs/Species/base.yml | 1 - .../Entities/Mobs/Species/reptilian.yml | 1 - .../Fun/Instruments/instruments_string.yml | 4 +- .../Entities/Objects/Fun/bike_horn.yml | 2 + .../Entities/Objects/Fun/puppet.yml | 3 +- .../Prototypes/Entities/Objects/Fun/toys.yml | 9 ++++ .../Entities/Objects/Misc/books.yml | 5 +- .../Entities/Objects/Misc/desk_bell.yml | 1 + .../Objects/Misc/fire_extinguisher.yml | 1 + .../Entities/Objects/Misc/paper.yml | 4 +- .../Entities/Objects/Misc/utensils.yml | 4 +- .../Entities/Objects/Tools/tools.yml | 7 +++ .../Entities/Objects/Tools/welders.yml | 1 + .../Objects/Weapons/Melee/armblade.yml | 1 + .../Objects/Weapons/Melee/baseball_bat.yml | 1 + .../Objects/Weapons/Melee/chainsaw.yml | 1 + .../Entities/Objects/Weapons/Melee/cult.yml | 3 ++ .../Objects/Weapons/Melee/e_sword.yml | 3 ++ .../Objects/Weapons/Melee/fireaxe.yml | 2 + .../Entities/Objects/Weapons/Melee/gohei.yml | 1 + .../Entities/Objects/Weapons/Melee/knife.yml | 3 ++ .../Entities/Objects/Weapons/Melee/mining.yml | 3 ++ .../Entities/Objects/Weapons/Melee/needle.yml | 1 + .../Objects/Weapons/Melee/pickaxe.yml | 1 + .../Entities/Objects/Weapons/Melee/spear.yml | 4 ++ .../Objects/Weapons/Melee/stunprod.yml | 3 +- .../Entities/Objects/Weapons/Melee/sword.yml | 6 +++ .../Objects/Weapons/Melee/weapon_toolbox.yml | 1 + .../Objects/Weapons/Melee/white_cane.yml | 2 +- .../Entities/Objects/Weapons/security.yml | 3 ++ 53 files changed, 160 insertions(+), 103 deletions(-) diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs index 79a6529a4dde75..0dd207fbb19140 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs @@ -1,5 +1,6 @@ using System.Numerics; using Content.Client.Weapons.Melee.Components; +using Content.Shared.Weapons.Melee; using Robust.Client.Animations; using Robust.Client.GameObjects; using Robust.Shared.Animations; @@ -16,7 +17,7 @@ public sealed partial class MeleeWeaponSystem /// /// Does all of the melee effects for a player that are predicted, i.e. character lunge and weapon animation. /// - public override void DoLunge(EntityUid user, Angle angle, Vector2 localPos, string? animation, bool predicted = true) + public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vector2 localPos, string? animation, bool predicted = true) { if (!Timing.IsFirstTimePredicted) return; @@ -41,6 +42,19 @@ public override void DoLunge(EntityUid user, Angle angle, Vector2 localPos, stri return; } + var spriteRotation = Angle.Zero; + if (arcComponent.Animation != WeaponArcAnimation.None + && TryComp(weapon, out MeleeWeaponComponent? meleeWeaponComponent)) + { + if (user == weapon + && TryComp(weapon, out SpriteComponent? weaponSpriteComponent)) + sprite.CopyFrom(weaponSpriteComponent); + + spriteRotation = meleeWeaponComponent.WideAnimationRotation; + + if (meleeWeaponComponent.SwingLeft) + angle *= -1; + } sprite.NoRotation = true; sprite.Rotation = localPos.ToWorldAngle(); var distance = Math.Clamp(localPos.Length() / 2f, 0.2f, 1f); @@ -50,13 +64,13 @@ public override void DoLunge(EntityUid user, Angle angle, Vector2 localPos, stri switch (arcComponent.Animation) { case WeaponArcAnimation.Slash: - _animation.Play(animationUid, GetSlashAnimation(sprite, angle), SlashAnimationKey); + _animation.Play(animationUid, GetSlashAnimation(sprite, angle, spriteRotation), SlashAnimationKey); TransformSystem.SetParent(animationUid, xform, user, userXform); if (arcComponent.Fadeout) _animation.Play(animationUid, GetFadeAnimation(sprite, 0.065f, 0.065f + 0.05f), FadeAnimationKey); break; case WeaponArcAnimation.Thrust: - _animation.Play(animationUid, GetThrustAnimation(sprite, distance), ThrustAnimationKey); + _animation.Play(animationUid, GetThrustAnimation(sprite, distance, spriteRotation), ThrustAnimationKey); TransformSystem.SetParent(animationUid, xform, user, userXform); if (arcComponent.Fadeout) _animation.Play(animationUid, GetFadeAnimation(sprite, 0.05f, 0.15f), FadeAnimationKey); @@ -73,13 +87,17 @@ public override void DoLunge(EntityUid user, Angle angle, Vector2 localPos, stri } } - private Animation GetSlashAnimation(SpriteComponent sprite, Angle arc) + private Animation GetSlashAnimation(SpriteComponent sprite, Angle arc, Angle spriteRotation) { const float slashStart = 0.03f; const float slashEnd = 0.065f; const float length = slashEnd + 0.05f; - var startRotation = sprite.Rotation - arc / 2; - var endRotation = sprite.Rotation + arc / 2; + var startRotation = sprite.Rotation + arc / 2; + var endRotation = sprite.Rotation - arc / 2; + var startRotationOffset = startRotation.RotateVec(new Vector2(0f, -1f)); + var endRotationOffset = endRotation.RotateVec(new Vector2(0f, -1f)); + startRotation += spriteRotation; + endRotation += spriteRotation; sprite.NoRotation = true; return new Animation() @@ -104,19 +122,21 @@ private Animation GetSlashAnimation(SpriteComponent sprite, Angle arc) Property = nameof(SpriteComponent.Offset), KeyFrames = { - new AnimationTrackProperty.KeyFrame(startRotation.RotateVec(new Vector2(0f, -1f)), 0f), - new AnimationTrackProperty.KeyFrame(startRotation.RotateVec(new Vector2(0f, -1f)), slashStart), - new AnimationTrackProperty.KeyFrame(endRotation.RotateVec(new Vector2(0f, -1f)), slashEnd) + new AnimationTrackProperty.KeyFrame(startRotationOffset, 0f), + new AnimationTrackProperty.KeyFrame(startRotationOffset, slashStart), + new AnimationTrackProperty.KeyFrame(endRotationOffset, slashEnd) } }, } }; } - private Animation GetThrustAnimation(SpriteComponent sprite, float distance) + private Animation GetThrustAnimation(SpriteComponent sprite, float distance, Angle spriteRotation) { const float thrustEnd = 0.05f; const float length = 0.15f; + var startOffset = sprite.Rotation.RotateVec(new Vector2(0f, -distance / 5f)); + var endOffset = sprite.Rotation.RotateVec(new Vector2(0f, -distance)); return new Animation() { @@ -129,9 +149,9 @@ private Animation GetThrustAnimation(SpriteComponent sprite, float distance) Property = nameof(SpriteComponent.Offset), KeyFrames = { - new AnimationTrackProperty.KeyFrame(sprite.Rotation.RotateVec(new Vector2(0f, -distance / 5f)), 0f), - new AnimationTrackProperty.KeyFrame(sprite.Rotation.RotateVec(new Vector2(0f, -distance)), thrustEnd), - new AnimationTrackProperty.KeyFrame(sprite.Rotation.RotateVec(new Vector2(0f, -distance)), length), + new AnimationTrackProperty.KeyFrame(startOffset, 0f), + new AnimationTrackProperty.KeyFrame(endOffset, thrustEnd), + new AnimationTrackProperty.KeyFrame(endOffset, length), } }, } diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs index 36fe75fad7fcb9..397032cd154555 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs @@ -17,8 +17,6 @@ using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Players; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; namespace Content.Client.Weapons.Melee; @@ -235,9 +233,10 @@ private void ClientHeavyAttack(EntityUid user, EntityCoordinates coordinates, En private void OnMeleeLunge(MeleeLungeEvent ev) { var ent = GetEntity(ev.Entity); + var entWeapon = GetEntity(ev.Weapon); // Entity might not have been sent by PVS. - if (Exists(ent)) - DoLunge(ent, ev.Angle, ev.LocalPos, ev.Animation); + if (Exists(ent) && Exists(entWeapon)) + DoLunge(ent, entWeapon, ev.Angle, ev.LocalPos, ev.Animation); } } diff --git a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs b/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs index bf54a18f1af7c7..facc39f1461807 100644 --- a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs +++ b/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs @@ -207,9 +207,6 @@ private bool TryTransferAbsorber(EntityUid user, EntityUid used, EntityUid targe _audio.PlayPvs(component.TransferSound, target); _useDelay.BeginDelay(used); return true; - _audio.PlayPvs(component.TransferSound, target); - _useDelay.BeginDelay(used); - return true; } /// @@ -259,7 +256,7 @@ private bool TryPuddleInteract(EntityUid user, EntityUid used, EntityUid target, var localPos = _transform.GetInvWorldMatrix(userXform).Transform(targetPos); localPos = userXform.LocalRotation.RotateVec(localPos); - _melee.DoLunge(user, Angle.Zero, localPos, null, false); + _melee.DoLunge(user, used, Angle.Zero, localPos, null, false); return true; } diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index ab7831b2a484f8..1b6b2ebef1cff3 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -214,7 +214,7 @@ private float CalculateDisarmChance(EntityUid disarmer, EntityUid disarmed, Enti return Math.Clamp(chance, 0f, 1f); } - public override void DoLunge(EntityUid user, Angle angle, Vector2 localPos, string? animation, bool predicted = true) + public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vector2 localPos, string? animation, bool predicted = true) { Filter filter; @@ -227,7 +227,7 @@ public override void DoLunge(EntityUid user, Angle angle, Vector2 localPos, stri filter = Filter.Pvs(user, entityManager: EntityManager); } - RaiseNetworkEvent(new MeleeLungeEvent(GetNetEntity(user), angle, localPos, animation), filter); + RaiseNetworkEvent(new MeleeLungeEvent(GetNetEntity(user), GetNetEntity(weapon), angle, localPos, animation), filter); } private void OnSpeechHit(EntityUid owner, MeleeSpeechComponent comp, MeleeHitEvent args) diff --git a/Content.Shared/Weapons/Melee/Events/MeleeLungeEvent.cs b/Content.Shared/Weapons/Melee/Events/MeleeLungeEvent.cs index 66acc213c1d9ca..72851dc80ca2e3 100644 --- a/Content.Shared/Weapons/Melee/Events/MeleeLungeEvent.cs +++ b/Content.Shared/Weapons/Melee/Events/MeleeLungeEvent.cs @@ -11,6 +11,11 @@ public sealed class MeleeLungeEvent : EntityEventArgs { public NetEntity Entity; + /// + /// The weapon used. + /// + public NetEntity Weapon; + /// /// Width of the attack angle. /// @@ -26,9 +31,10 @@ public sealed class MeleeLungeEvent : EntityEventArgs /// public string? Animation; - public MeleeLungeEvent(NetEntity entity, Angle angle, Vector2 localPos, string? animation) + public MeleeLungeEvent(NetEntity entity, NetEntity weapon, Angle angle, Vector2 localPos, string? animation) { Entity = entity; + Weapon = weapon; Angle = angle; LocalPos = localPos; Animation = animation; diff --git a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs index ddc060e558ba0d..54db0b8c67feea 100644 --- a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs +++ b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs @@ -96,6 +96,17 @@ public sealed partial class MeleeWeaponComponent : Component [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField] public EntProtoId WideAnimation = "WeaponArcSlash"; + /// + /// Rotation of the animation. + /// 0 degrees means the top faces the attacker. + /// + [ViewVariables(VVAccess.ReadWrite), DataField] + public Angle WideAnimationRotation = Angle.Zero; + + [ViewVariables(VVAccess.ReadWrite), DataField] + public bool SwingLeft; + + // Sounds /// diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 4259706ba867b5..4b740b8d3c73a2 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -423,7 +423,7 @@ private bool AttemptAttack(EntityUid user, EntityUid weaponUid, MeleeWeaponCompo throw new NotImplementedException(); } - DoLungeAnimation(user, weapon.Angle, GetCoordinates(attack.Coordinates).ToMap(EntityManager, TransformSystem), weapon.Range, animation); + DoLungeAnimation(user, weaponUid, weapon.Angle, GetCoordinates(attack.Coordinates).ToMap(EntityManager, TransformSystem), weapon.Range, animation); } var attackEv = new MeleeAttackEvent(weaponUid); @@ -823,7 +823,7 @@ protected virtual bool DoDisarm(EntityUid user, DisarmAttackEvent ev, EntityUid return true; } - private void DoLungeAnimation(EntityUid user, Angle angle, MapCoordinates coordinates, float length, string? animation) + private void DoLungeAnimation(EntityUid user, EntityUid weapon, Angle angle, MapCoordinates coordinates, float length, string? animation) { // TODO: Assert that offset eyes are still okay. if (!TryComp(user, out var userXform)) @@ -844,8 +844,8 @@ private void DoLungeAnimation(EntityUid user, Angle angle, MapCoordinates coordi if (localPos.Length() > visualLength) localPos = localPos.Normalized() * visualLength; - DoLunge(user, angle, localPos, animation); + DoLunge(user, weapon, angle, localPos, animation); } - public abstract void DoLunge(EntityUid user, Angle angle, Vector2 localPos, string? animation, bool predicted = true); + public abstract void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vector2 localPos, string? animation, bool predicted = true); } diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 0077fddcfc4002..adba78141cce49 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1,6 +1,6 @@ - type: entity name: bat - parent: [ SimpleMobBase, FlyingMobBase ] + parent: [ SimpleMobBase, FlyingMobBase, MobCombat ] id: MobBat description: Some cultures find them terrifying, others crunchy on the teeth. components: @@ -51,7 +51,6 @@ - type: ReplacementAccent accent: mouse - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Effects/bite.ogg angle: 0 @@ -126,13 +125,12 @@ - type: entity name: bee suffix: Angry - parent: MobBee + parent: [ MobBee, MobCombat ] id: MobAngryBee description: How nice a bee. Oh no, it looks angry and wants my pizza. components: - type: CombatMode - type: MeleeWeapon - hidden: true angle: 0 animation: WeaponArcBite damage: @@ -668,7 +666,7 @@ - type: entity name: gorilla - parent: SimpleMobBase + parent: [ SimpleMobBase, MobCombat ] id: MobGorilla description: Smashes, roars, looks cool. Don't stand near one. components: @@ -722,7 +720,7 @@ - type: entity name: kangaroo - parent: SimpleMobBase + parent: [ SimpleMobBase, MobCombat ] id: MobKangaroo description: A large marsupial herbivore. It has powerful hind legs, with nails that resemble long claws. components: @@ -1376,7 +1374,7 @@ - type: entity name: grenade penguin - parent: SimpleMobBase + parent: [ SimpleMobBase, MobCombat ] id: MobGrenadePenguin description: A small penguin with a grenade strapped around its neck. Harvested by the Syndicate from icy shit-hole planets. components: @@ -1420,7 +1418,6 @@ - id: FoodMeatPenguin amount: 3 - type: MeleeWeapon - hidden: true angle: 0 animation: WeaponArcBite damage: @@ -1603,7 +1600,7 @@ # random sprite state when you spawn it. - type: entity name: tarantula - parent: SimpleMobBase + parent: [ SimpleMobBase, MobCombat ] id: MobGiantSpider description: Widely recognized to be the literal worst thing in existence. components: @@ -1641,7 +1638,6 @@ 0: Alive 90: Dead - type: MeleeWeapon - hidden: true angle: 0 animation: WeaponArcBite soundHit: @@ -1731,7 +1727,6 @@ - DoorBumpOpener - FootstepSound - type: MeleeWeapon - hidden: true angle: 0 animation: WeaponArcBite soundHit: @@ -1984,7 +1979,7 @@ - type: entity name: corrupted corgi - parent: MobCorgi + parent: [ MobCorgi, MobCombat ] id: MobCorgiNarsi description: Ian! No! components: @@ -2001,7 +1996,6 @@ Dead: Base: narsian_dead - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Effects/bite.ogg angle: 0 @@ -2314,7 +2308,7 @@ - type: entity name: hamster - parent: SimpleMobBase + parent: [ SimpleMobBase, MobCombat ] id: MobHamster description: A cute, fluffy, robust hamster. components: @@ -2421,7 +2415,6 @@ Blunt: 0.1 - type: CombatMode - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Effects/bite.ogg angle: 0 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml index cde11bf222bf78..4c36efa1773c4f 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 + parent: [ BaseSimpleMob, MobCombat ] id: BaseMobArgocyte suffix: AI description: A dangerous alien found on the wrong side of planets, known for their propensity for munching on ruins. @@ -31,7 +31,6 @@ - type: Insulated - type: CombatMode - type: MeleeWeapon - hidden: true angle: 0 animation: WeaponArcBite damage: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml index f833c2e8ed3917..3b3b9b44120373 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml @@ -1,6 +1,6 @@ - type: entity name: behonker - parent: [ SimpleSpaceMobBase, FlyingMobBase ] + parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat ] id: BaseMobBehonker abstract: true description: A floating demon aspect of the honkmother. @@ -96,7 +96,6 @@ - id: WeaponBehonkerLaser amount: 1 - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg damage: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml index d2f597fe41c4c7..1f598dc10bca5f 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml @@ -1,7 +1,7 @@ - type: entity name: space carp id: BaseMobCarp - parent: [ SimpleSpaceMobBase, FlyingMobBase ] + parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat ] description: It's a space carp. abstract: true components: @@ -56,7 +56,6 @@ amount: 2 - type: MeleeWeapon altDisarm: false - hidden: true angle: 0 animation: WeaponArcBite soundHit: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml index 666ded8ff35e45..8ab65c340ea73f 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml @@ -76,7 +76,7 @@ - type: ZombieImmune - type: entity - parent: MobElementalBase + parent: [ MobElementalBase, MobCombat ] id: MobQuartzCrab name: quartz crab description: An ore crab made from quartz. @@ -88,7 +88,6 @@ rootTask: task: SimpleHostileCompound - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg damage: @@ -116,7 +115,7 @@ acts: [ "Destruction" ] - type: entity - parent: MobElementalBase + parent: [ MobElementalBase, MobCombat ] id: MobIronCrab name: ore crab description: An ore crab made from iron. @@ -128,7 +127,6 @@ rootTask: task: SimpleHostileCompound - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg damage: @@ -159,7 +157,7 @@ acts: [ "Destruction" ] - type: entity - parent: MobElementalBase + parent: [ MobElementalBase, MobCombat ] id: MobUraniumCrab name: ore crab description: An ore crab made from uranium. @@ -171,7 +169,6 @@ rootTask: task: IdleCompound - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg damage: @@ -212,12 +209,12 @@ name: Reagent slime id: ReagentSlime suffix: Water - parent: MobAdultSlimes + parent: [ MobAdultSlimes, MobCombat ] description: It consists of a liquid, and it wants to dissolve you in itself. components: - type: NpcFactionMember factions: - - SimpleHostile + - SimpleHostile - type: Sprite drawdepth: Mobs sprite: Mobs/Aliens/elemental.rsi @@ -241,7 +238,7 @@ speedModifierThresholds: 50: 0.4 - type: Bloodstream - bloodReagent: Water + bloodReagent: Water chemicalMaxVolume: 100 - type: StatusEffects allowed: @@ -351,7 +348,7 @@ - map: [ "enum.DamageStateVisualLayers.Base" ] state: alive color: "#128e80" - + - type: entity id: ReagentSlimeTHC parent: ReagentSlime @@ -368,7 +365,7 @@ - map: [ "enum.DamageStateVisualLayers.Base" ] state: alive color: "#808080" - + - type: entity id: ReagentSlimeBicaridine parent: ReagentSlime @@ -419,7 +416,7 @@ - map: [ "enum.DamageStateVisualLayers.Base" ] state: alive color: "#FA00AF" - + - type: entity id: ReagentSlimeOmnizine parent: ReagentSlime @@ -435,4 +432,4 @@ layers: - map: [ "enum.DamageStateVisualLayers.Base" ] state: alive - color: "#fcf7f9" \ No newline at end of file + color: "#fcf7f9" diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml index 43c78c639eb189..a09927619ce26c 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml @@ -1,5 +1,5 @@ - type: entity - parent: SimpleMobBase + parent: [ SimpleMobBase, MobCombat ] id: BaseMobFlesh name: aberrant flesh description: A shambling mass of flesh, animated through anomalous energy. @@ -45,7 +45,6 @@ bloodMaxVolume: 100 - type: CombatMode - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg angle: 0 @@ -73,7 +72,6 @@ Dead: Base: dead - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg angle: 0 @@ -103,7 +101,6 @@ 0: Alive 50: Dead - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg angle: 0 @@ -190,7 +187,6 @@ baseWalkSpeed: 1.5 baseSprintSpeed: 2.5 - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg angle: 0 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml b/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml index 9675321da07399..657ac466f84660 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml @@ -1,7 +1,7 @@ - type: entity name: Mimic id: MobMimic - parent: SimpleMobBase + parent: [ SimpleMobBase, MobCombat ] description: Surprise. # When this gets a proper write this should use the object's actual description >:) components: - type: Tag @@ -33,7 +33,6 @@ - MachineLayer - type: AnimationPlayer - type: MeleeWeapon - hidden: true angle: 0 animation: WeaponArcFist damage: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index 21cc305acdebac..88d7cbaae29337 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -570,7 +570,6 @@ 0: Alive 150: Dead - type: MeleeWeapon - hidden: true angle: 0 animation: WeaponArcBite soundHit: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index 557d602bff1b04..b3f09b999d93d0 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 + parent: [ SimpleMobBase, MobCombat ] description: He's da rat. He make da roolz. components: - type: CombatMode @@ -45,7 +45,6 @@ 0: Alive 200: Dead - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh1.ogg angle: 0 @@ -133,7 +132,6 @@ 0: Alive 350: Dead - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh2.ogg angle: 0 @@ -153,7 +151,7 @@ - type: entity name: Rat Servant id: MobRatServant - parent: SimpleMobBase + parent: [ SimpleMobBase, MobCombat ] description: He's da mini rat. He don't make da roolz. noSpawn: true #Must be configured to a King or the AI breaks. components: @@ -208,7 +206,6 @@ - type: Stamina critThreshold: 60 - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/bladeslice.ogg angle: 0 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml index 4d56face9d1f40..ad4626d989a0f2 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: MobAdultSlimes - parent: SimpleMobBase + parent: [ SimpleMobBase, MobCombat ] abstract: true description: It looks so much like jelly. I wonder what it tastes like? components: @@ -97,9 +97,7 @@ - type: Body prototype: Slimes requiredLegs: 1 - - type: CombatMode - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/punch3.ogg angle: 0 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml index 62366e0b1420b3..d784f5c162f207 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml @@ -46,7 +46,6 @@ heatDamageThreshold: 500 coldDamageThreshold: 0 - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg angle: 0 @@ -143,7 +142,6 @@ state: glow shader: unshaded - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg angle: 0 @@ -249,7 +247,6 @@ layer: - MobLayer - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Effects/bite.ogg angle: 0 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml index 08db5857447894..c1ac66705a3db0 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml @@ -59,7 +59,6 @@ bloodMaxVolume: 50 - type: CombatMode - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Effects/bite.ogg angle: 0 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml index 9831d20e27a9cc..1626a1bc81aee0 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml @@ -74,7 +74,6 @@ bloodReagent: FluorosulfuricAcid - type: MeleeWeapon altDisarm: false - hidden: true angle: 0 soundHit: collection: AlienClaw @@ -213,7 +212,6 @@ 150: 0.7 - type: MovementSpeedModifier - type: MeleeWeapon - hidden: true damage: groups: Brute: 12 @@ -251,7 +249,6 @@ - type: MovementSpeedModifier baseSprintSpeed: 4 - type: MeleeWeapon - hidden: true damage: groups: Brute: 10 @@ -285,7 +282,6 @@ - type: MovementSpeedModifier baseSprintSpeed: 6.0 - type: MeleeWeapon - hidden: true damage: groups: Brute: 5 @@ -396,7 +392,6 @@ factions: - Xeno - type: MeleeWeapon - hidden: true angle: 0 animation: WeaponArcBite damage: diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml index 368d1846925e8d..d188070b269020 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml @@ -103,7 +103,6 @@ soundPerceivedByOthers: false # A 75% chance for a loud roar would get old fast. - type: MeleeWeapon altDisarm: false - hidden: true soundHit: path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg damage: diff --git a/Resources/Prototypes/Entities/Mobs/Player/familiars.yml b/Resources/Prototypes/Entities/Mobs/Player/familiars.yml index 65a47987e9098f..8a5c319d773c6f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/familiars.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/familiars.yml @@ -46,7 +46,6 @@ rules: ghost-role-information-cerberus-rules - type: GhostTakeoverAvailable - type: MeleeWeapon - hidden: true angle: 0 animation: WeaponArcBite damage: diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index 49c3175fc6bed7..1e863aa80f8e65 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -130,7 +130,7 @@ color: "#40a7d7" shader: unshaded - type: NpcFactionMember - factions: + factions: - Syndicate - type: HTN rootTask: @@ -225,7 +225,6 @@ Burn: 3 - type: InventorySlots - type: MeleeWeapon - hidden: true angle: 30 animation: WeaponArcFist attackRate: 1.8 @@ -238,7 +237,7 @@ nameSegments: - names_clown - type: NpcFactionMember - factions: + factions: - Syndicate - type: HTN rootTask: diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 74c676eb68821c..55473daf157db4 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -161,7 +161,6 @@ - type: CombatMode canDisarm: true - type: MeleeWeapon - hidden: true soundHit: collection: Punch angle: 30 diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index 5a4518c7b50143..7d5f3cdddc33ac 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -40,7 +40,6 @@ damageContainer: Biological damageModifierSet: Scale - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/pierce.ogg angle: 30 diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml index c29c482dfd0afd..c71fecd91bae8c 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml @@ -83,6 +83,7 @@ tags: - StringInstrument - type: MeleeWeapon + wideAnimationRotation: 45 damage: types: Blunt: 6 @@ -121,7 +122,7 @@ - back sprite: Objects/Fun/Instruments/guitar.rsi - type: Wieldable - - type: Damageable # Smash it! Does 20 damage a hit, but breaks after 1 hit. + - type: Damageable # Smash it! Does 20 damage a hit, but breaks after 1 hit. damageContainer: Inorganic - type: Destructible thresholds: @@ -144,6 +145,7 @@ types: Blunt: 20 - type: MeleeWeapon + wideAnimationRotation: 45 damage: types: Blunt: 5 diff --git a/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml b/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml index 1a95cdd9962981..fc20f1a58dd229 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml @@ -32,6 +32,7 @@ - Payload # yes, you can make re-usable prank grenades - BikeHorn - type: MeleeWeapon + wideAnimationRotation: 135 soundHit: collection: BikeHorn params: @@ -77,6 +78,7 @@ params: variation: 0.246 - type: MeleeWeapon + wideAnimationRotation: 135 soundHit: collection: CluwneHorn params: diff --git a/Resources/Prototypes/Entities/Objects/Fun/puppet.yml b/Resources/Prototypes/Entities/Objects/Fun/puppet.yml index 2757689a300b10..c0649d0acfaa8c 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/puppet.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/puppet.yml @@ -1,5 +1,5 @@ - type: entity - parent: BaseItem + parent: [ BaseItem, MobCombat ] id: MrChips name: mr chips suffix: Dummy @@ -23,7 +23,6 @@ allowedStates: - Alive - type: MeleeWeapon - hidden: true soundHit: path: /Audio/Weapons/boxingpunch1.ogg angle: 30 diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index dfa4dbcc7b1c33..491ae0037a3e67 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -122,6 +122,7 @@ sound: path: /Audio/Items/Toys/mousesqueek.ogg - type: MeleeWeapon + wideAnimationRotation: 180 soundHit: path: /Audio/Items/Toys/mousesqueek.ogg @@ -185,6 +186,7 @@ sound: path: /Audio/Items/Toys/weh.ogg - type: MeleeWeapon + wideAnimationRotation: 180 soundHit: path: /Audio/Items/Toys/weh.ogg @@ -206,6 +208,7 @@ sound: path: /Audio/Items/Toys/muffled_weh.ogg - type: MeleeWeapon + wideAnimationRotation: 180 soundHit: path: /Audio/Items/Toys/muffled_weh.ogg @@ -231,6 +234,7 @@ sound: path: /Audio/Items/Toys/toy_rustle.ogg - type: MeleeWeapon + wideAnimationRotation: 180 soundHit: path: /Audio/Items/Toys/toy_rustle.ogg - type: SolutionContainerManager @@ -353,6 +357,7 @@ sound: path: /Audio/Effects/bite.ogg - type: MeleeWeapon + wideAnimationRotation: -90 soundHit: path: /Audio/Effects/bite.ogg angle: 0 @@ -379,6 +384,7 @@ sound: path: /Audio/Items/Toys/rattle.ogg - type: MeleeWeapon + wideAnimationRotation: 180 soundHit: path: /Audio/Items/Toys/rattle.ogg @@ -394,6 +400,7 @@ sound: path: /Audio/Items/Toys/mousesqueek.ogg - type: MeleeWeapon + wideAnimationRotation: -90 soundHit: path: /Audio/Items/Toys/mousesqueek.ogg - type: Clothing @@ -436,6 +443,7 @@ sound: path: /Audio/Voice/Vox/shriek1.ogg - type: MeleeWeapon + wideAnimationRotation: 180 soundHit: path: /Audio/Voice/Vox/shriek1.ogg @@ -466,6 +474,7 @@ sound: path: /Audio/Weapons/Xeno/alien_spitacid.ogg - type: MeleeWeapon + wideAnimationRotation: 180 soundHit: path: /Audio/Weapons/Xeno/alien_spitacid.ogg diff --git a/Resources/Prototypes/Entities/Objects/Misc/books.yml b/Resources/Prototypes/Entities/Objects/Misc/books.yml index 5bfcaef42d068e..8bf992cb2fbe2d 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/books.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/books.yml @@ -84,7 +84,7 @@ id: BookChefGaming parent: BaseItem name: chef gaming - description: A book about cooking written by a gamer chef. + description: A book about cooking written by a gamer chef. components: - type: Sprite sprite: Objects/Misc/books.rsi @@ -156,7 +156,7 @@ id: BookSecurity parent: BaseItem name: security 101 - description: A book about security written by Nanotrasen. The book is stained with blood. It seems to have been used more as a weapon than reading material. + description: A book about security written by Nanotrasen. The book is stained with blood. It seems to have been used more as a weapon than reading material. components: - type: Sprite sprite: Objects/Misc/books.rsi @@ -166,6 +166,7 @@ tags: - Book - type: MeleeWeapon + wideAnimationRotation: 180 damage: types: Blunt: 6 diff --git a/Resources/Prototypes/Entities/Objects/Misc/desk_bell.yml b/Resources/Prototypes/Entities/Objects/Misc/desk_bell.yml index 2c57cc105a88d7..12406f2890d8f8 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/desk_bell.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/desk_bell.yml @@ -36,6 +36,7 @@ - type: UseDelay delay: 0.5 - type: MeleeWeapon + wideAnimationRotation: 180 soundHit: collection: DeskBell params: diff --git a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml index 66ab0ab7fb8e57..a90f598a5dd839 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml @@ -37,6 +37,7 @@ - type: FireExtinguisher hasSafety: true - type: MeleeWeapon + wideAnimationRotation: 180 damage: types: Blunt: 10 diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 4493ec6190ebca..5b4e5e24bac512 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -265,6 +265,7 @@ state: overpriced_pen - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: -45 damage: types: Piercing: 15 @@ -464,7 +465,7 @@ whitelist: tags: - Write - insertOnInteract: false + insertOnInteract: false - type: Item sprite: Objects/Misc/clipboard.rsi size: 10 @@ -488,6 +489,7 @@ tags: - Write - type: MeleeWeapon + wideAnimationRotation: 180 damage: types: Blunt: 6 diff --git a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml index b180e7d6316d8e..5f2ce47ba13d42 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml @@ -11,7 +11,7 @@ tags: - Metal - type: SpaceGarbage - + - type: entity parent: UtensilBase id: UtensilBasePlastic @@ -42,6 +42,7 @@ types: - Fork - type: MeleeWeapon + wideAnimationRotation: 180 attackRate: 1.5 damage: types: @@ -73,6 +74,7 @@ types: - Spoon - type: MeleeWeapon + wideAnimationRotation: 180 attackRate: 1.5 damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/Entities/Objects/Tools/tools.yml index 9b133735353b48..12a6ede23183e5 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/tools.yml @@ -19,6 +19,7 @@ - state: cutters-cutty-thingy - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: -90 damage: types: Piercing: 2 @@ -65,6 +66,7 @@ sprite: Objects/Tools/screwdriver.rsi - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: -90 attackRate: 1 damage: types: @@ -105,6 +107,7 @@ sprite: Objects/Tools/wrench.rsi - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: 135 attackRate: 1.5 damage: types: @@ -140,6 +143,7 @@ size: 10 - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Blunt: 8 @@ -318,6 +322,7 @@ - type: StaticPrice price: 100 - type: MeleeWeapon + wideAnimationRotation: -90 attackRate: 1.5 damage: types: @@ -487,6 +492,7 @@ state: icon - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Blunt: 14 @@ -519,6 +525,7 @@ - Belt - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Blunt: 7 diff --git a/Resources/Prototypes/Entities/Objects/Tools/welders.yml b/Resources/Prototypes/Entities/Objects/Tools/welders.yml index 3a105a299475f4..7c3de82d0ad626 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/welders.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/welders.yml @@ -30,6 +30,7 @@ shader: unshaded - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: -90 damage: types: Blunt: 5 #i mean... i GUESS you could use it like that diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml index 764683183d9616..9e9288c8d4a38a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml @@ -9,6 +9,7 @@ sprite: Objects/Weapons/Melee/armblade.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: 90 attackRate: 0.75 damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml index 4cd71e723939f2..e244647a130840 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml @@ -8,6 +8,7 @@ sprite: Objects/Weapons/Melee/baseball_bat.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Blunt: 10 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml index 387913715cf91c..b0874bfaef15ea 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml @@ -15,6 +15,7 @@ sprite: Objects/Weapons/Melee/chainsaw.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Slash: 5 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml index 3061e29e11237d..833614105d93dd 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml @@ -9,6 +9,7 @@ sprite: Objects/Weapons/Melee/cult_dagger.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1.5 damage: types: @@ -32,6 +33,7 @@ sprite: Objects/Weapons/Melee/cult_blade.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 0.75 damage: types: @@ -58,6 +60,7 @@ sprite: Objects/Weapons/Melee/cult_halberd.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 0.75 damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index 5c5972d839b290..7cf02ad05cbb18 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -22,6 +22,7 @@ shader: unshaded map: [ "blade" ] - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1 soundHit: path: /Audio/Weapons/eblade1.ogg @@ -87,6 +88,7 @@ shader: unshaded map: [ "blade" ] - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1 hidden: true damage: @@ -179,6 +181,7 @@ Blunt: -4.5 litDisarmMalus: 0.7 - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1.5 angle: 100 soundHit: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml index fcc2129a51f588..62a983cd4dad1e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml @@ -12,6 +12,8 @@ sprite: Objects/Weapons/Melee/fireaxe.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -90 + swingLeft: true attackRate: 0.75 damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml index 1fdb237f4a07fd..9e673da49d028b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml @@ -8,6 +8,7 @@ sprite: Objects/Weapons/Melee/gohei.rsi state: gohei - type: MeleeWeapon + wideAnimationRotation: -150 damage: types: Blunt: 3 #You'd be better off punching people diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml index 34fa0a53b81a40..bbd18927e1f220 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml @@ -12,6 +12,7 @@ - Knife - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Slash: 12 @@ -59,6 +60,7 @@ size: 4 state: butch - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1.5 damage: types: @@ -85,6 +87,7 @@ size: 2 state: icon - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1.5 damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml index af073435bae8a3..f3bb0ceec91c3a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml @@ -44,6 +44,7 @@ capacity: 1 count: 1 - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Blunt: 8 @@ -73,6 +74,7 @@ sprite: Objects/Weapons/Melee/crusher_dagger.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1.5 damage: types: @@ -107,6 +109,7 @@ - type: Sprite sprite: Objects/Weapons/Melee/crusher_glaive.rsi - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1.25 - type: Item size: 150 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/needle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/needle.yml index cfe6c7b27376f2..48b2d6ad2b83b9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/needle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/needle.yml @@ -8,6 +8,7 @@ sprite: Objects/Weapons/Melee/needle.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Piercing: 1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml index 513e691395f7a6..8d04fd316b47f0 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml @@ -12,6 +12,7 @@ state: pickaxe - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: -135 damage: groups: Brute: 5 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml index 9127a92d51279a..f19b76b3e81a14 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml @@ -34,6 +34,7 @@ map: ["enum.SolutionContainerLayers.Fill"] visible: false - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Piercing: 12 @@ -117,6 +118,7 @@ - type: Sprite sprite: Objects/Weapons/Melee/reinforced_spear.rsi - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Piercing: 15 @@ -136,6 +138,7 @@ - type: Sprite sprite: Objects/Weapons/Melee/plasma_spear.rsi - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Piercing: 18 @@ -155,6 +158,7 @@ - type: Sprite sprite: Objects/Weapons/Melee/uranium_spear.rsi - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Piercing: 10 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml index 8ecd97827c7d2e..25c9cf6125796d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml @@ -12,6 +12,7 @@ - type: Stunbaton energyPerUse: 70 - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Blunt: 9 @@ -44,4 +45,4 @@ price: 100 - type: Construction graph: makeshiftstunprod - node: msstunprod \ No newline at end of file + node: msstunprod diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml index 2e733cf658a04b..23160f13ea7785 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml @@ -9,6 +9,7 @@ sprite: Objects/Weapons/Melee/captain_sabre.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1.5 damage: types: @@ -41,6 +42,7 @@ sprite: Objects/Weapons/Melee/katana.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Slash: 25 @@ -61,6 +63,7 @@ sprite: Objects/Weapons/Melee/energykatana.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -60 damage: types: Slash: 30 @@ -95,6 +98,7 @@ sprite: Objects/Weapons/Melee/machete.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Slash: 20 @@ -116,6 +120,7 @@ sprite: Objects/Weapons/Melee/claymore.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 0.75 damage: types: @@ -144,6 +149,7 @@ sprite: Objects/Weapons/Melee/cutlass.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Slash: 16 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/weapon_toolbox.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/weapon_toolbox.yml index 9eaf14cf9ab6a2..b5f8590304453a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/weapon_toolbox.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/weapon_toolbox.yml @@ -12,6 +12,7 @@ size: 150 sprite: Objects/Tools/Toolboxes/toolbox_red.rsi - type: MeleeWeapon + wideAnimationRotation: -135 attackRate: 1.5 damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml index f38c714c650b00..36ea58c11167d1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml @@ -11,6 +11,7 @@ size: 15 sprite: Objects/Weapons/Melee/white_cane.rsi - type: MeleeWeapon + wideAnimationRotation: 45 damage: types: Blunt: 5 @@ -21,4 +22,3 @@ damage: types: Blunt: 3 - \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 616625c9250042..eafcc46815d686 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -12,6 +12,7 @@ - type: Stunbaton energyPerUse: 50 - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Blunt: 7 @@ -74,6 +75,7 @@ sprite: Objects/Weapons/Melee/truncheon.rsi state: icon - type: MeleeWeapon + wideAnimationRotation: -135 damage: types: Blunt: 20 @@ -114,6 +116,7 @@ maxCharges: 5 charges: 5 - type: MeleeWeapon + wideAnimationRotation: 180 damage: types: Blunt: 0 # melee weapon to allow flashing individual targets From 433c70638411077fbff9f349816a5830f756dd80 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 17 Oct 2023 21:13:07 -0400 Subject: [PATCH 141/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c99989e27ea448..2cd5a93bf6b772 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Lank - changes: - - {message: 'As disease has been eradicated, Spaceacillin can no longer be created - or found.', type: Remove} - - {message: Creating medicated suture now required Cryptobiolin in place of Spaceacillin., - type: Tweak} - id: 4518 - time: '2023-08-11T03:04:49.0000000+00:00' - author: crazybrain changes: - {message: Added missing emergency security orders to the hardsuit version of HoS's @@ -2936,3 +2928,9 @@ Entries: type: Tweak} id: 5017 time: '2023-10-17T23:01:25.0000000+00:00' +- author: notquitehadouken + changes: + - {message: The grey stick that shows up when you wide swing a weapon now looks + like the weapon used., type: Tweak} + id: 5018 + time: '2023-10-18T01:12:00.0000000+00:00' From cb1b067a21a22510e939e2160937564844f6edb4 Mon Sep 17 00:00:00 2001 From: rosieposie <52761126+rosieposieeee@users.noreply.github.com> Date: Tue, 17 Oct 2023 21:33:02 -0400 Subject: [PATCH 142/245] Lockable Suit Storages (#20950) --- .../Catalog/Fills/Lockers/suit_storage.yml | 27 +++++++++++++++--- .../Storage/Closets/base_structureclosets.yml | 11 +++++-- .../Storage/suit_storage.rsi/base.png | Bin 839 -> 754 bytes .../Storage/suit_storage.rsi/closed.png | Bin 500 -> 0 bytes .../Storage/suit_storage.rsi/door.png | Bin 0 -> 381 bytes .../Storage/suit_storage.rsi/locked.png | Bin 0 -> 231 bytes .../Storage/suit_storage.rsi/meta.json | 11 ++++++- .../Storage/suit_storage.rsi/panel.png | Bin 0 -> 260 bytes .../Storage/suit_storage.rsi/unlocked.png | Bin 0 -> 239 bytes .../Storage/suit_storage.rsi/welded.png | Bin 416 -> 442 bytes 10 files changed, 42 insertions(+), 7 deletions(-) delete mode 100644 Resources/Textures/Structures/Storage/suit_storage.rsi/closed.png create mode 100644 Resources/Textures/Structures/Storage/suit_storage.rsi/door.png create mode 100644 Resources/Textures/Structures/Storage/suit_storage.rsi/locked.png create mode 100644 Resources/Textures/Structures/Storage/suit_storage.rsi/panel.png create mode 100644 Resources/Textures/Structures/Storage/suit_storage.rsi/unlocked.png diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml index 09afc383495f85..7ee7351fbe2d20 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml @@ -39,7 +39,7 @@ - id: OxygenTankFilled - id: ClothingOuterSuitEmergency - id: ClothingMaskBreath - + #Prisoner EVA - type: entity id: SuitStorageEVAPrisoner @@ -80,7 +80,7 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitPirateEVA - id: ClothingMaskGas - + #NTSRA Voidsuit - type: entity id: SuitStorageNTSRA @@ -93,7 +93,7 @@ - id: ClothingOuterHardsuitAncientEVA - id: ClothingHeadHelmetAncient - id: ClothingMaskBreath - + #HARDSUITS #Basic hardsuit - type: entity @@ -121,6 +121,8 @@ - id: ClothingShoesBootsMag - id: ClothingOuterHardsuitEngineering - id: ClothingMaskBreath + - type: AccessReader + access: [["Engineering"]] #Atmospherics hardsuit - type: entity @@ -134,6 +136,8 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitAtmos - id: ClothingMaskBreath + - type: AccessReader + access: [["Atmospherics"]] #Security hardsuit - type: entity @@ -147,6 +151,8 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitSecurity - id: ClothingMaskBreath + - type: AccessReader + access: [["Security"]] #CE's hardsuit - type: entity @@ -162,6 +168,8 @@ - id: ClothingShoesBootsMagAdv - id: ClothingOuterHardsuitEngineeringWhite - id: ClothingMaskBreath + - type: AccessReader + access: [["ChiefEngineer"]] #CMO's hardsuit - type: entity @@ -175,6 +183,8 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitMedical - id: ClothingMaskBreathMedical + - type: AccessReader + access: [ [ "ChiefMedicalOfficer" ] ] #RD's hardsuit - type: entity @@ -188,6 +198,8 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitRd - id: ClothingMaskBreath + - type: AccessReader + access: [ [ "ResearchDirector" ] ] #HOS's hardsuit - type: entity @@ -202,6 +214,8 @@ - id: JetpackSecurityFilled - id: ClothingOuterHardsuitSecurityRed - id: ClothingMaskGasSwat + - type: AccessReader + access: [["HeadOfSecurity"]] #Warden's hardsuit - type: entity @@ -215,6 +229,8 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitWarden - id: ClothingMaskBreath + - type: AccessReader + access: [["Armory"]] #Captain's hardsuit - type: entity @@ -228,6 +244,8 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitCap - id: ClothingMaskGasCaptain + - type: AccessReader + access: [["Captain"]] #Salvage hardsuit - type: entity @@ -242,6 +260,8 @@ - id: ClothingShoesBootsMag - id: ClothingOuterHardsuitSpatio - id: ClothingMaskGasExplorer + - type: AccessReader + access: [["Salvage"]] #Blood-red hardsuit - type: entity @@ -282,4 +302,3 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitWizard - id: ClothingMaskBreath - \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml index f39938fd9550c8..5edad73e3377e1 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml @@ -184,6 +184,8 @@ name: suit storage unit description: A fancy hi-tech storage unit made for storing space suits. components: + - type: AccessReader + - type: Lock - type: Anchorable delay: 2 - type: StaticPrice @@ -196,11 +198,14 @@ sprite: Structures/Storage/suit_storage.rsi layers: - state: base - - state: closed + - state: door map: ["enum.StorageVisualLayers.Door"] - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + - state: locked + map: ["enum.StorageVisualLayers.Lock"] + shader: unshaded - type: MovedByPressure - type: DamageOnHighSpeedImpact damage: @@ -257,5 +262,7 @@ - type: Appearance - type: EntityStorageVisuals stateBase: base + stateLocked: locked + stateUnlocked: unlocked stateDoorOpen: base - stateDoorClosed: closed + stateDoorClosed: door diff --git a/Resources/Textures/Structures/Storage/suit_storage.rsi/base.png b/Resources/Textures/Structures/Storage/suit_storage.rsi/base.png index 3a686cd6ecbbf57f16eb4baf430b6c8e21e3c939..5171b03f4611739868635ecb19891a86acf2f1ce 100644 GIT binary patch delta 693 zcmV;m0!sbI2J!`vNq>4tL_t(|+Qe7AOB_KIe{+7IVt1f$7FyUCu{b@k6ScDNz(yrq ziim<}qY3&KD59kx#6l~PwGb361q%;RbA^O7SEUgALPofkO2eT4P#8uhGq_Dq?mDdvaiA@J0zPSrj04PitXvDg{@S zLu{d3l$SE5QQ+j1qXb7|g*AlCuVqNV7Jw#2(=P2e*?+s*z-ig5Xa%x>GVM-EjnTv1 zK#wOMKpb6wXV_9mvjw0@A@2kGii{(aa>M6u_t{Y{A+3#8Dhu@dk6MuPfmBYg3)``V z@KHcMfF=%$iRa(NRYOjA+48_f_i^d+fZGZ6d$Z6Q=yyK6PaZ&r8%tCagy3OD!WTaQ z2MZnY(|_teV;;aL(Er*N6-ZW+Oy~|T6R9Z=U@u`R!@fR%rov_diNe$ZT!-sT6|m@@ z(8~#Jc_6R=+&i*Dm^?s#@8<)a9Z@oot6JU70)n0kbZ!Az_8@9ojmy65Q` z4NG2)+ph?}#knk=-1|_SMk5kRB8)|fI2(J1&&536PZYq$#>Az6&X)G$WBJRb?noJ- zX`#F03`lewj{y%yF`O-7cvnZ|N8NK**E5_yR}jM&bANCzLW#$3g1|rqE5XxPYI<&J z_rtedAv%&#t{AVA^7`K5$4s-&^#2`OP9i>#5`^2r_3ML7zZ^%S6HJ)^X<+cwR}77$ z_$cVOE$dOM1!o%gomx`39;EotT1pVD)qqhGqmph&0}H-BK6)yGsSp+Q&((k7&N6=r zi1FQvK7WycV}D~UAcApDR1ntTQMkSF#Yk#^Qrsx|%ir9sh9b2#kQyMudOYYIZ=3+7 zG+x!fW)aqojfn3k*;0OrSvJsJm(X8-^I07*qo JLrim%_V(FTh6nerF;W}?DhhI7L#3=# z8D8E##;}U%09c&ywi*iiF0&O_9Z3D12al*51t3FZ)I}MdJ>15y@vReBtd2>P!J+m8 zL!|9ThUI@hFsP}kGjKh7O}j+M`HhEx{WBB8k7LIe=Is?=U}g1SXf87b%du}e50+XE+#AGI;4%4wMAE0n;GM=~fPa zfUn6HhRKsGA)IZ>9I*Ke4_3!)KEuqAV!|+*21e7s zXd0ky2!N_mP?d^avw?y=HxCl$Ajil%`J%{!)Du$`4~jHE&;cM{fEp&)(m>fZ)HHDU q(j}674{k?{cFjf|FwhPF2rvM|GQbi2X(R{$000046o@Y zg<+R+$=5FuMb1zE`Oiz?+_=G|&GF6kthPxF<~+92E)pfavsOy8?l^F`cJ@IrqYbS_ z2V@R!cxdtUGK1NMpFI3w$8+ospP7*4bUcQEt4x5Qon>tiquGP(PppD(ZcmU^c9LiB zS=M;b#9$U%TddRpX{H6ML_(I{tNg&Be53fYLLpyK&z{NpT{a%JhM^x9crdfbGJIlP zk=UfmJ0;iImwCE=tkTKv3I{B1nM#))aIj`jIKZ&%|8&RT8HdgRLya#r!ZXd+mq822 W<^W<4xD-4YM0vXUxvX709|cOGtUcUY*}7_?@( zJ_`$Tqpv>5yIkbLH6gX(;||?di!@eMGkdq?026!-@(Adq0jDyLx7%(Jmk~6@vd$@?2>`=9OaK4? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/suit_storage.rsi/meta.json b/Resources/Textures/Structures/Storage/suit_storage.rsi/meta.json index aa1c1f09ec74b3..c4d4dc3468dffe 100644 --- a/Resources/Textures/Structures/Storage/suit_storage.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/suit_storage.rsi/meta.json @@ -11,7 +11,16 @@ "name": "base" }, { - "name": "closed" + "name": "door" + }, + { + "name": "unlocked" + }, + { + "name": "locked" + }, + { + "name": "panel" }, { "name": "welded" diff --git a/Resources/Textures/Structures/Storage/suit_storage.rsi/panel.png b/Resources/Textures/Structures/Storage/suit_storage.rsi/panel.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4ef0d075ea8f10c8bd2ba4bc6e8ca506fd6458 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GJ)SO(Ar-fh{`~)Mf7pRZt&NdwF`q=~ffdYdvIegj0@-`4 z8d|T385kKEX=uMbBrRM1J}#|gqhqe%u9gF9)VE6zSSql z6wK-7_Ng~WVsB@;d)eXa@9#aQoQxg>FtneT9R1(1ZflI-YL6oPfpUXO@geCx}JXdl6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/suit_storage.rsi/unlocked.png b/Resources/Textures/Structures/Storage/suit_storage.rsi/unlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..cb906e3cb202a82ba0fa224df108e8a8896b9e3d GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G<(@8%Ar-fh{`~)Mf7pRZt&NdwF`q=~fd=b_R*|DW|8H_> zn8G2any+T$TkUMj?w~8KxZoMD?V<+;B8xX?O0%w>u}nC`cw(Xyv+iOBww%HZnbJ%y zN8U>Z$sVwXlI*ogxWWiFZw0fPtih{>Kz5!j%nVFC3_02&@*ECV0)S57OO5bM^YvxW X0mdKI;Vst0NaBJyZ`_I delta 17 YcmdnRynuPbbVg1FPgg&ebxsLQ05YKkqyPW_ From a136616531a9b1d8575dfa520be746f4b76b92eb Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 17 Oct 2023 19:35:36 -0700 Subject: [PATCH 143/245] Replace Component.OnRemove with ComponentRemove event subscriptions (#21072) --- .../Power/Components/ApcPowerReceiverComponent.cs | 7 ------- .../Power/Components/BaseNetConnectorComponent.cs | 6 ------ .../EntitySystems/PowerNetConnectorSystem.cs | 15 +++++++++++++++ .../Power/EntitySystems/PowerNetSystem.cs | 8 +++++++- .../Pulling/Components/PullableComponent.cs | 11 ----------- .../Pulling/Components/SharedPullerComponent.cs | 10 ---------- .../Systems/SharedPullingStateManagementSystem.cs | 1 - 7 files changed, 22 insertions(+), 36 deletions(-) diff --git a/Content.Server/Power/Components/ApcPowerReceiverComponent.cs b/Content.Server/Power/Components/ApcPowerReceiverComponent.cs index ae4d73943046c3..b8340d0be4b1c9 100644 --- a/Content.Server/Power/Components/ApcPowerReceiverComponent.cs +++ b/Content.Server/Power/Components/ApcPowerReceiverComponent.cs @@ -59,13 +59,6 @@ public bool PowerDisabled { }; public float PowerReceived => NetworkLoad.ReceivingPower; - - protected override void OnRemove() - { - Provider?.RemoveReceiver(this); - - base.OnRemove(); - } } /// diff --git a/Content.Server/Power/Components/BaseNetConnectorComponent.cs b/Content.Server/Power/Components/BaseNetConnectorComponent.cs index 551b5f3621f22b..f2a1372dbc99b2 100644 --- a/Content.Server/Power/Components/BaseNetConnectorComponent.cs +++ b/Content.Server/Power/Components/BaseNetConnectorComponent.cs @@ -33,12 +33,6 @@ public abstract partial class BaseNetConnectorComponent : Component, I [DataField("node")] public string? NodeId { get; set; } - protected override void OnRemove() - { - ClearNet(); - base.OnRemove(); - } - public void TryFindAndSetNet() { if (TryFindNet(out var net)) diff --git a/Content.Server/Power/EntitySystems/PowerNetConnectorSystem.cs b/Content.Server/Power/EntitySystems/PowerNetConnectorSystem.cs index df38c2f17a21a7..8738f493ac75e9 100644 --- a/Content.Server/Power/EntitySystems/PowerNetConnectorSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerNetConnectorSystem.cs @@ -12,6 +12,21 @@ public override void Initialize() SubscribeLocalEvent(OnApcPowerProviderInit); SubscribeLocalEvent(OnBatteryChargerInit); SubscribeLocalEvent(OnBatteryDischargerInit); + + // TODO please end my life + SubscribeLocalEvent(OnRemove); + SubscribeLocalEvent(OnRemove); + SubscribeLocalEvent(OnRemove); + SubscribeLocalEvent(OnRemove); + SubscribeLocalEvent(OnRemove); + SubscribeLocalEvent(OnRemove); + } + + private void OnRemove(EntityUid uid, TComp component, ComponentRemove args) + where TComp : BaseNetConnectorComponent + where TNet : class + { + component.ClearNet(); } private void OnPowerSupplierInit(EntityUid uid, PowerSupplierComponent component, ComponentInit args) diff --git a/Content.Server/Power/EntitySystems/PowerNetSystem.cs b/Content.Server/Power/EntitySystems/PowerNetSystem.cs index a3aa1caee2ebc8..425f4637afff49 100644 --- a/Content.Server/Power/EntitySystems/PowerNetSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerNetSystem.cs @@ -3,8 +3,8 @@ using Content.Server.Power.Components; using Content.Server.Power.NodeGroups; using Content.Server.Power.Pow3r; -using JetBrains.Annotations; using Content.Shared.Power; +using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Threading; @@ -34,6 +34,7 @@ public override void Initialize() SubscribeLocalEvent(ApcPowerReceiverInit); SubscribeLocalEvent(ApcPowerReceiverShutdown); + SubscribeLocalEvent(ApcPowerReceiverRemove); SubscribeLocalEvent(ApcPowerReceiverPaused); SubscribeLocalEvent(ApcPowerReceiverUnpaused); @@ -64,6 +65,11 @@ private void ApcPowerReceiverShutdown(EntityUid uid, ApcPowerReceiverComponent c _powerState.Loads.Free(component.NetworkLoad.Id); } + private void ApcPowerReceiverRemove(EntityUid uid, ApcPowerReceiverComponent component, ComponentRemove args) + { + component.Provider?.RemoveReceiver(component); + } + private static void ApcPowerReceiverPaused( EntityUid uid, ApcPowerReceiverComponent component, diff --git a/Content.Shared/Pulling/Components/PullableComponent.cs b/Content.Shared/Pulling/Components/PullableComponent.cs index 51ab2c91e49cf1..30222c481be7f4 100644 --- a/Content.Shared/Pulling/Components/PullableComponent.cs +++ b/Content.Shared/Pulling/Components/PullableComponent.cs @@ -1,6 +1,5 @@ using Robust.Shared.GameStates; using Robust.Shared.Map; -using Robust.Shared.Physics.Dynamics.Joints; using Robust.Shared.Serialization; namespace Content.Shared.Pulling.Components @@ -39,16 +38,6 @@ public sealed partial class SharedPullableComponent : Component [Access(typeof(SharedPullingSystem), Other = AccessPermissions.ReadExecute)] [ViewVariables] public bool PrevFixedRotation; - - protected override void OnRemove() - { - if (Puller != null) - { - // This is absolute paranoia but it's also absolutely necessary. Too many puller state bugs. - 20kdc - Logger.ErrorS("c.go.c.pulling", "PULLING STATE CORRUPTION IMMINENT IN PULLABLE {0} - OnRemove called when Puller is set!", Owner); - } - base.OnRemove(); - } } [Serializable, NetSerializable] diff --git a/Content.Shared/Pulling/Components/SharedPullerComponent.cs b/Content.Shared/Pulling/Components/SharedPullerComponent.cs index 4ee8b3d129bfba..c21e8a76de26fc 100644 --- a/Content.Shared/Pulling/Components/SharedPullerComponent.cs +++ b/Content.Shared/Pulling/Components/SharedPullerComponent.cs @@ -17,15 +17,5 @@ public sealed partial class SharedPullerComponent : Component /// [DataField("needsHands")] public bool NeedsHands = true; - - protected override void OnRemove() - { - if (Pulling != default) - { - // This is absolute paranoia but it's also absolutely necessary. Too many puller state bugs. - 20kdc - Logger.ErrorS("c.go.c.pulling", "PULLING STATE CORRUPTION IMMINENT IN PULLER {0} - OnRemove called when Pulling is set!", Owner); - } - base.OnRemove(); - } } } diff --git a/Content.Shared/Pulling/Systems/SharedPullingStateManagementSystem.cs b/Content.Shared/Pulling/Systems/SharedPullingStateManagementSystem.cs index 63f6d648678990..974859a6209cac 100644 --- a/Content.Shared/Pulling/Systems/SharedPullingStateManagementSystem.cs +++ b/Content.Shared/Pulling/Systems/SharedPullingStateManagementSystem.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Shared.Physics.Pull; using Content.Shared.Pulling.Components; using JetBrains.Annotations; From 5934c6728f7a3ac6c789239d2420f6aec914da18 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 17 Oct 2023 19:42:47 -0700 Subject: [PATCH 144/245] Replace all T : Component constraints with T : IComponent (#21073) --- Content.Client/Antag/AntagStatusIconSystem.cs | 6 +++--- Content.IntegrationTests/PoolManager.cs | 2 +- Content.Server/GameTicking/Rules/GameRuleSystem.cs | 2 +- .../EntitySystems/ParticleAcceleratorSystem.Parts.cs | 8 ++++---- Content.Server/StationEvents/Events/StationEventSystem.cs | 3 +-- Content.Shared/Body/Systems/SharedBodySystem.Organs.cs | 4 ++-- Content.Shared/Body/Systems/SharedBodySystem.Parts.cs | 8 ++++---- Content.Shared/Mind/SharedMindSystem.cs | 8 ++++---- Content.Shared/Roles/SharedRoleSystem.cs | 8 ++++---- Content.Shared/StatusEffect/StatusEffectsSystem.cs | 5 +---- 10 files changed, 25 insertions(+), 29 deletions(-) diff --git a/Content.Client/Antag/AntagStatusIconSystem.cs b/Content.Client/Antag/AntagStatusIconSystem.cs index 3c1c72d03b9de5..bf3955b49ab1ed 100644 --- a/Content.Client/Antag/AntagStatusIconSystem.cs +++ b/Content.Client/Antag/AntagStatusIconSystem.cs @@ -1,8 +1,8 @@ +using Content.Shared.Ghost; using Content.Shared.StatusIcon; using Content.Shared.StatusIcon.Components; -using Robust.Shared.Prototypes; -using Content.Shared.Ghost; using Robust.Client.Player; +using Robust.Shared.Prototypes; namespace Content.Client.Antag; @@ -10,7 +10,7 @@ namespace Content.Client.Antag; /// Used for assigning specified icons for antags. /// public abstract class AntagStatusIconSystem : SharedStatusIconSystem - where T : Component + where T : IComponent { [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IPlayerManager _player = default!; diff --git a/Content.IntegrationTests/PoolManager.cs b/Content.IntegrationTests/PoolManager.cs index 3f8d261e8dda80..a2015f3fdba20a 100644 --- a/Content.IntegrationTests/PoolManager.cs +++ b/Content.IntegrationTests/PoolManager.cs @@ -428,7 +428,7 @@ public static async Task WaitUntil(RobustIntegrationTest.IntegrationInstance ins /// /// Helper method that retrieves all entity prototypes that have some component. /// - public static List GetPrototypesWithComponent(RobustIntegrationTest.IntegrationInstance instance) where T : Component + public static List GetPrototypesWithComponent(RobustIntegrationTest.IntegrationInstance instance) where T : IComponent { var protoMan = instance.ResolveDependency(); var compFact = instance.ResolveDependency(); diff --git a/Content.Server/GameTicking/Rules/GameRuleSystem.cs b/Content.Server/GameTicking/Rules/GameRuleSystem.cs index b13f00f36383a3..ba781e32e298dc 100644 --- a/Content.Server/GameTicking/Rules/GameRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/GameRuleSystem.cs @@ -3,7 +3,7 @@ namespace Content.Server.GameTicking.Rules; -public abstract partial class GameRuleSystem : EntitySystem where T : Component +public abstract partial class GameRuleSystem : EntitySystem where T : IComponent { [Dependency] protected readonly IChatManager ChatManager = default!; [Dependency] protected readonly GameTicker GameTicker = default!; diff --git a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs index 860fbdcefe3bdc..e76d85781023b0 100644 --- a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs +++ b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs @@ -1,10 +1,10 @@ +using System.Diagnostics.CodeAnalysis; +using System.Numerics; using Content.Server.ParticleAccelerator.Components; using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Events; -using System.Diagnostics.CodeAnalysis; -using System.Numerics; namespace Content.Server.ParticleAccelerator.EntitySystems; @@ -127,12 +127,12 @@ public void RescanParts(EntityUid uid, IPlayerSession? user = null, ParticleAcce } private bool ScanPart(EntityUid uid, Vector2i coordinates, Angle? rotation, [NotNullWhen(true)] out EntityUid? part, [NotNullWhen(true)] out T? comp, MapGridComponent? grid = null) - where T : Component + where T : IComponent { if (!Resolve(uid, ref grid)) { part = null; - comp = null; + comp = default; return false; } diff --git a/Content.Server/StationEvents/Events/StationEventSystem.cs b/Content.Server/StationEvents/Events/StationEventSystem.cs index 97b96ff7b0bdc2..41a7b153f58c0c 100644 --- a/Content.Server/StationEvents/Events/StationEventSystem.cs +++ b/Content.Server/StationEvents/Events/StationEventSystem.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using System.Linq; using Content.Server.Administration.Logs; using Content.Server.Atmos.EntitySystems; using Content.Server.Chat.Systems; @@ -22,7 +21,7 @@ namespace Content.Server.StationEvents.Events; /// /// An abstract entity system inherited by all station events for their behavior. /// -public abstract partial class StationEventSystem : GameRuleSystem where T : Component +public abstract partial class StationEventSystem : GameRuleSystem where T : IComponent { [Dependency] protected readonly IAdminLogManager AdminLogManager = default!; [Dependency] private readonly IGameTiming _timing = default!; diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs b/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs index d2a7b7256ae85b..6e392b9892c25d 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs @@ -151,7 +151,7 @@ public bool AddOrganToFirstValidSlot( public List<(T Comp, OrganComponent Organ)> GetBodyOrganComponents( EntityUid uid, BodyComponent? body = null) - where T : Component + where T : IComponent { if (!Resolve(uid, ref body)) return new List<(T Comp, OrganComponent Organ)>(); @@ -180,7 +180,7 @@ public bool TryGetBodyOrganComponents( EntityUid uid, [NotNullWhen(true)] out List<(T Comp, OrganComponent Organ)>? comps, BodyComponent? body = null) - where T : Component + where T : IComponent { if (!Resolve(uid, ref body)) { diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs b/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs index 66397017e14fca..463a4b7661a925 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs @@ -679,7 +679,7 @@ public bool BodyHasChild( public List<(T Comp, OrganComponent Organ)> GetBodyPartOrganComponents( EntityUid uid, BodyPartComponent? part = null) - where T : Component + where T : IComponent { if (!Resolve(uid, ref part)) return new List<(T Comp, OrganComponent Organ)>(); @@ -709,7 +709,7 @@ public bool TryGetBodyPartOrganComponents( EntityUid uid, [NotNullWhen(true)] out List<(T Comp, OrganComponent Organ)>? comps, BodyPartComponent? part = null) - where T : Component + where T : IComponent { if (!Resolve(uid, ref part)) { @@ -751,7 +751,7 @@ public IEnumerable GetBodyPartAdjacentParts(EntityUid partId, BodyPar public IEnumerable<(EntityUid AdjacentId, T Component)> GetBodyPartAdjacentPartsComponents( EntityUid partId, BodyPartComponent? part = null) - where T : Component + where T : IComponent { if (!Resolve(partId, ref part, false)) yield break; @@ -768,7 +768,7 @@ public bool TryGetBodyPartAdjacentPartsComponents( EntityUid partId, [NotNullWhen(true)] out List<(EntityUid AdjacentId, T Component)>? comps, BodyPartComponent? part = null) - where T : Component + where T : IComponent { if (!Resolve(partId, ref part, false)) { diff --git a/Content.Shared/Mind/SharedMindSystem.cs b/Content.Shared/Mind/SharedMindSystem.cs index be11d8a2ad4c85..cc4ac4af23675c 100644 --- a/Content.Shared/Mind/SharedMindSystem.cs +++ b/Content.Shared/Mind/SharedMindSystem.cs @@ -292,7 +292,7 @@ public bool TryRemoveObjective(EntityUid mindId, MindComponent mind, int index) return true; } - public bool TryGetObjectiveComp(EntityUid uid, [NotNullWhen(true)] out T? objective) where T : Component + public bool TryGetObjectiveComp(EntityUid uid, [NotNullWhen(true)] out T? objective) where T : IComponent { if (TryGetMind(uid, out var mindId, out var mind) && TryGetObjectiveComp(mindId, out objective, mind)) { @@ -302,7 +302,7 @@ public bool TryGetObjectiveComp(EntityUid uid, [NotNullWhen(true)] out T? obj return false; } - public bool TryGetObjectiveComp(EntityUid mindId, [NotNullWhen(true)] out T? objective, MindComponent? mind = null) where T : Component + public bool TryGetObjectiveComp(EntityUid mindId, [NotNullWhen(true)] out T? objective, MindComponent? mind = null) where T : IComponent { if (Resolve(mindId, ref mind)) { @@ -382,9 +382,9 @@ public bool TryGetMind( /// Gets a role component from a player's mind. /// /// Whether a role was found - public bool TryGetRole(EntityUid user, [NotNullWhen(true)] out T? role) where T : Component + public bool TryGetRole(EntityUid user, [NotNullWhen(true)] out T? role) where T : IComponent { - role = null; + role = default; if (!TryComp(user, out var mindContainer) || mindContainer.Mind == null) return false; diff --git a/Content.Shared/Roles/SharedRoleSystem.cs b/Content.Shared/Roles/SharedRoleSystem.cs index 75296b96f4a5a6..ebd6730bbe47e2 100644 --- a/Content.Shared/Roles/SharedRoleSystem.cs +++ b/Content.Shared/Roles/SharedRoleSystem.cs @@ -65,7 +65,7 @@ protected void SubscribeAntagEvents() where T : AntagonistRoleComponent /// /// Thrown if we already have a role with this type. /// - public void MindAddRole(EntityUid mindId, T component, MindComponent? mind = null, bool silent = false) where T : Component, new() + public void MindAddRole(EntityUid mindId, T component, MindComponent? mind = null, bool silent = false) where T : IComponent, new() { if (!Resolve(mindId, ref mind)) return; @@ -99,7 +99,7 @@ protected void SubscribeAntagEvents() where T : AntagonistRoleComponent /// /// Thrown if we do not have this role. /// - public void MindRemoveRole(EntityUid mindId) where T : Component + public void MindRemoveRole(EntityUid mindId) where T : IComponent { if (!RemComp(mindId)) { @@ -118,7 +118,7 @@ public void MindRemoveRole(EntityUid mindId) where T : Component $"'Role {typeof(T).Name}' removed from mind of {_minds.MindOwnerLoggingString(mind)}"); } - public bool MindTryRemoveRole(EntityUid mindId) where T : Component + public bool MindTryRemoveRole(EntityUid mindId) where T : IComponent { if (!MindHasRole(mindId)) return false; @@ -127,7 +127,7 @@ public bool MindTryRemoveRole(EntityUid mindId) where T : Component return true; } - public bool MindHasRole(EntityUid mindId) where T : Component + public bool MindHasRole(EntityUid mindId) where T : IComponent { return HasComp(mindId); } diff --git a/Content.Shared/StatusEffect/StatusEffectsSystem.cs b/Content.Shared/StatusEffect/StatusEffectsSystem.cs index bedc5a824ce2ea..17b886449301f1 100644 --- a/Content.Shared/StatusEffect/StatusEffectsSystem.cs +++ b/Content.Shared/StatusEffect/StatusEffectsSystem.cs @@ -1,8 +1,5 @@ using System.Diagnostics.CodeAnalysis; using Content.Shared.Alert; -using Content.Shared.Mobs; -using Content.Shared.Mobs.Components; -using Content.Shared.Mobs.Systems; using Content.Shared.Rejuvenate; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -107,7 +104,7 @@ private void OnRejuvenate(EntityUid uid, StatusEffectsComponent component, Rejuv /// The component type to add and remove from the entity. public bool TryAddStatusEffect(EntityUid uid, string key, TimeSpan time, bool refresh, StatusEffectsComponent? status = null) - where T : Component, new() + where T : IComponent, new() { if (!Resolve(uid, ref status, false)) return false; From 7ac338741b69ac6537367054be23158e1a9f5739 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 17 Oct 2023 19:42:55 -0700 Subject: [PATCH 145/245] Update RobustToolbox to 904ddea27497caa6e652eec1b9d3ff2743a79e5c (#21074) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 77654a16289b2c..904ddea27497ca 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 77654a16289b2c8638b344b9e858c65051512e03 +Subproject commit 904ddea27497caa6e652eec1b9d3ff2743a79e5c From 13cff0e89b6c973f0b5f757fad681024800b2ce2 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 17 Oct 2023 20:11:33 -0700 Subject: [PATCH 146/245] Fix build (#21075) --- .../EntitySystems/ParticleAcceleratorSystem.Parts.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs index e76d85781023b0..271d17a0c49beb 100644 --- a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs +++ b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Parts.cs @@ -149,7 +149,7 @@ private bool ScanPart(EntityUid uid, Vector2i coordinates, Angle? rotation, [ } part = null; - comp = null; + comp = default; return false; } From c72b95db6bf664fe24f39f0ff5e77f78b57b55dc Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 17 Oct 2023 21:45:35 -0700 Subject: [PATCH 147/245] Fix debug assert when shooting guns (#21070) --- .../ParticleAcceleratorSystem.Emitter.cs | 2 +- Content.Server/Projectiles/ProjectileSystem.cs | 5 ++--- .../Singularity/EntitySystems/EmitterSystem.cs | 2 +- Content.Server/Weapons/Ranged/Systems/GunSystem.cs | 5 ++--- Content.Shared/Projectiles/SharedProjectileSystem.cs | 12 ++++-------- 5 files changed, 10 insertions(+), 16 deletions(-) diff --git a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Emitter.cs b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Emitter.cs index dbe55bb6e5c19a..7fad69e349f4df 100644 --- a/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Emitter.cs +++ b/Content.Server/ParticleAccelerator/EntitySystems/ParticleAcceleratorSystem.Emitter.cs @@ -38,7 +38,7 @@ private void FireEmitter(EntityUid uid, ParticleAcceleratorPowerState strength, } if (TryComp(emitted, out var proj)) - _projectileSystem.SetShooter(proj, uid); + _projectileSystem.SetShooter(emitted, proj, uid); if (TryComp(emitted, out var food)) { diff --git a/Content.Server/Projectiles/ProjectileSystem.cs b/Content.Server/Projectiles/ProjectileSystem.cs index c52e712e741b74..b8a6b8c5b262e2 100644 --- a/Content.Server/Projectiles/ProjectileSystem.cs +++ b/Content.Server/Projectiles/ProjectileSystem.cs @@ -4,11 +4,10 @@ using Content.Shared.Camera; using Content.Shared.Damage; using Content.Shared.Database; -using Content.Shared.FixedPoint; using Content.Shared.Projectiles; using Robust.Server.GameObjects; -using Robust.Shared.Player; using Robust.Shared.Physics.Events; +using Robust.Shared.Player; namespace Content.Server.Projectiles; @@ -39,7 +38,7 @@ private void OnStartCollide(EntityUid uid, ProjectileComponent component, ref St RaiseLocalEvent(target, ref attemptEv); if (attemptEv.Cancelled) { - SetShooter(component, target); + SetShooter(uid, component, target); return; } diff --git a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs index e737cd0a8d72c2..652ca236e44111 100644 --- a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs @@ -291,7 +291,7 @@ private void Fire(EntityUid uid, EmitterComponent component) var xform = Transform(uid); var ent = Spawn(component.BoltType, xform.Coordinates); var proj = EnsureComp(ent); - _projectile.SetShooter(proj, uid); + _projectile.SetShooter(ent, proj, uid); var targetPos = new EntityCoordinates(uid, new Vector2(0, -1)); diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs index adda6a94e3c123..bbac7acd125d7c 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs @@ -10,13 +10,13 @@ using Content.Shared.Damage.Systems; using Content.Shared.Database; using Content.Shared.Effects; -using Content.Shared.FixedPoint; using Content.Shared.Interaction.Components; using Content.Shared.Projectiles; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Ranged; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; +using Content.Shared.Weapons.Ranged.Systems; using Content.Shared.Weapons.Reflect; using Robust.Server.GameObjects; using Robust.Shared.Audio; @@ -26,7 +26,6 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; -using SharedGunSystem = Content.Shared.Weapons.Ranged.Systems.SharedGunSystem; namespace Content.Server.Weapons.Ranged.Systems; @@ -305,7 +304,7 @@ public void ShootProjectile(EntityUid uid, Vector2 direction, Vector2 gunVelocit if (user != null) { var projectile = EnsureComp(uid); - Projectiles.SetShooter(projectile, user.Value); + Projectiles.SetShooter(uid, projectile, user.Value); projectile.Weapon = gunUid; } diff --git a/Content.Shared/Projectiles/SharedProjectileSystem.cs b/Content.Shared/Projectiles/SharedProjectileSystem.cs index 1df743bc0b1d2e..63b4cb13aa634e 100644 --- a/Content.Shared/Projectiles/SharedProjectileSystem.cs +++ b/Content.Shared/Projectiles/SharedProjectileSystem.cs @@ -3,11 +3,7 @@ using Content.Shared.DoAfter; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; -using Content.Shared.Projectiles; -using Content.Shared.Sound.Components; using Content.Shared.Throwing; -using Content.Shared.Weapons.Ranged.Components; -using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Network; using Robust.Shared.Physics; @@ -139,13 +135,13 @@ private void PreventCollision(EntityUid uid, ProjectileComponent component, ref } } - public void SetShooter(ProjectileComponent component, EntityUid uid) + public void SetShooter(EntityUid id, ProjectileComponent component, EntityUid shooterId) { - if (component.Shooter == uid) + if (component.Shooter == shooterId) return; - component.Shooter = uid; - Dirty(uid, component); + component.Shooter = shooterId; + Dirty(id, component); } [Serializable, NetSerializable] From 7a878f703ffae0cb149cce6358dc01b04ae897a6 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Wed, 18 Oct 2023 16:11:33 +1100 Subject: [PATCH 148/245] Fix vaulting mispredict (#21082) --- Content.Shared/Climbing/Systems/ClimbSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index 4e25fa4ac0d777..511149f8f9502f 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -101,7 +101,7 @@ public override void UpdateBeforeSolve(bool prediction, float frameTime) } var xform = _xformQuery.GetComponent(uid); - _xformSystem.SetLocalPositionNoLerp(uid, xform.LocalPosition + comp.Direction * frameTime, xform); + _xformSystem.SetLocalPosition(uid, xform.LocalPosition + comp.Direction * frameTime, xform); } } From 6b587576765bcd661e256ff1c1cd6713819b7132 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Oct 2023 01:12:37 -0400 Subject: [PATCH 149/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2cd5a93bf6b772..cd0c690f58440d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: crazybrain - changes: - - {message: Added missing emergency security orders to the hardsuit version of HoS's - locker., type: Fix} - id: 4519 - time: '2023-08-11T03:31:13.0000000+00:00' - author: Flareguy changes: - {message: The Microwave and wall-mounted Nanomed now use sprites similar to the @@ -2934,3 +2928,8 @@ Entries: like the weapon used., type: Tweak} id: 5018 time: '2023-10-18T01:12:00.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Fix vaulting mispredict., type: Fix} + id: 5019 + time: '2023-10-18T05:11:33.0000000+00:00' From 344c10745e9a317dd32ea53056269669297f5693 Mon Sep 17 00:00:00 2001 From: "I.K" <45953835+notquitehadouken@users.noreply.github.com> Date: Wed, 18 Oct 2023 09:03:00 -0500 Subject: [PATCH 150/245] FIX (#21091) --- Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs index 0dd207fbb19140..0f2f98e76408e9 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs @@ -46,7 +46,7 @@ public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vect if (arcComponent.Animation != WeaponArcAnimation.None && TryComp(weapon, out MeleeWeaponComponent? meleeWeaponComponent)) { - if (user == weapon + if (user != weapon && TryComp(weapon, out SpriteComponent? weaponSpriteComponent)) sprite.CopyFrom(weaponSpriteComponent); From badb601dd1867f497d8181e8add98e02f16e4f30 Mon Sep 17 00:00:00 2001 From: Link <131011403+LinkUyx@users.noreply.github.com> Date: Wed, 18 Oct 2023 20:18:54 +0300 Subject: [PATCH 151/245] Added implanter sprite (#20758) * add * Update meta.json * tweaaaak --- .../Prototypes/Catalog/Cargo/cargo_armory.yml | 4 +-- .../Prototypes/Catalog/Cargo/cargo_fun.yml | 12 ++++---- .../Catalog/Cargo/cargo_medical.yml | 4 +-- .../Entities/Objects/Misc/implanters.yml | 29 +++++++++--------- .../Specific/Medical/implanter.rsi/broken.png | Bin 257 -> 483 bytes .../Medical/implanter.rsi/implanter0.png | Bin 229 -> 539 bytes .../Medical/implanter.rsi/implanter1.png | Bin 124 -> 127 bytes .../Specific/Medical/implanter.rsi/meta.json | 2 +- .../Medical/syndi_implanter.rsi/broken.png | Bin 0 -> 257 bytes .../syndi_implanter.rsi/implanter0.png | Bin 0 -> 229 bytes .../syndi_implanter.rsi/implanter1.png | Bin 0 -> 124 bytes .../Medical/syndi_implanter.rsi/meta.json | 20 ++++++++++++ 12 files changed, 45 insertions(+), 26 deletions(-) create mode 100644 Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/broken.png create mode 100644 Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/implanter0.png create mode 100644 Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/implanter1.png create mode 100644 Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/meta.json diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml index 77140aba3b8e5c..f8f5253b23a714 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml @@ -21,8 +21,8 @@ - type: cargoProduct id: TrackingImplant icon: - sprite: Objects/Specific/Chemistry/syringe.rsi - state: syringe_base0 + sprite: Objects/Specific/Medical/implanter.rsi + state: implanter0 product: CrateTrackingImplants cost: 1000 category: Armory diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml index cc18f6676f1086..5ea658ffe51875 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml @@ -121,8 +121,8 @@ - type: cargoProduct id: FunSadTromboneImplants icon: - sprite: Objects/Specific/Chemistry/syringe.rsi - state: syringe_base0 + sprite: Objects/Specific/Medical/implanter.rsi + state: implanter0 product: CrateFunSadTromboneImplants cost: 1000 category: Fun @@ -131,8 +131,8 @@ - type: cargoProduct id: FunLightImplants icon: - sprite: Objects/Specific/Chemistry/syringe.rsi - state: syringe_base0 + sprite: Objects/Specific/Medical/implanter.rsi + state: implanter0 product: CrateFunLightImplants cost: 1000 category: Fun @@ -171,8 +171,8 @@ - type: cargoProduct id: FunBikeHornImplants icon: - sprite: Objects/Specific/Chemistry/syringe.rsi - state: syringe_base0 + sprite: Objects/Specific/Medical/implanter.rsi + state: implanter0 product: CrateFunBikeHornImplants cost: 1000 category: Fun diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml b/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml index 42370eb7d9a6d6..16498a5a750168 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_medical.yml @@ -101,8 +101,8 @@ - type: cargoProduct id: MedicalMindShieldImplants icon: - sprite: Objects/Specific/Chemistry/syringe.rsi - state: syringe_base0 + sprite: Objects/Specific/Medical/implanter.rsi + state: implanter0 product: CrateMindShieldImplants cost: 3000 category: Medical diff --git a/Resources/Prototypes/Entities/Objects/Misc/implanters.yml b/Resources/Prototypes/Entities/Objects/Misc/implanters.yml index 8cb55e386e7a5b..41966ab93f82e4 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/implanters.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/implanters.yml @@ -21,17 +21,17 @@ tags: - SubdermalImplant - type: Sprite - sprite: Objects/Specific/Chemistry/syringe.rsi - state: syringe_base0 + sprite: Objects/Specific/Medical/implanter.rsi + state: implanter0 layers: - - state: syringe2 + - state: implanter0 + map: [ "implantOnly" ] + visible: true + - state: implanter1 map: [ "implantFull" ] - color: '#1cd94e' visible: false - - state: syringe_base0 - map: [ "implantOnly" ] - type: Item - sprite: Objects/Specific/Chemistry/syringe.rsi + sprite: Objects/Specific/Medical/implanter.rsi heldPrefix: 0 - type: Appearance - type: GenericVisualizer @@ -43,7 +43,7 @@ enum.ImplanterImplantOnlyVisuals.ImplantOnly: implantOnly: True: {state: broken} - False: {state: syringe_base0} + False: {state: implanter0} - type: entity id: Implanter @@ -61,14 +61,13 @@ abstract: true components: - type: Sprite - sprite: Objects/Specific/Chemistry/syringe.rsi - state: syringe_base0 + sprite: Objects/Specific/Medical/implanter.rsi + state: implanter0 layers: - - state: syringe2 + - state: implanter1 map: [ "implantFull" ] - color: '#1cd94e' visible: true - - state: syringe_base0 + - state: implanter0 map: [ "implantOnly" ] - type: Implanter currentMode: Inject @@ -81,10 +80,10 @@ abstract: true components: - type: Item - sprite: Objects/Specific/Medical/implanter.rsi + sprite: Objects/Specific/Medical/syndi_implanter.rsi size: 3 - type: Sprite - sprite: Objects/Specific/Medical/implanter.rsi + sprite: Objects/Specific/Medical/syndi_implanter.rsi state: implanter1 layers: - state: implanter0 diff --git a/Resources/Textures/Objects/Specific/Medical/implanter.rsi/broken.png b/Resources/Textures/Objects/Specific/Medical/implanter.rsi/broken.png index 027ecee0f7dd50e3a991da3cace39bca29e5c4dc..301d1928d74fa23b37d89fcb738977092ed066e7 100644 GIT binary patch delta 457 zcmV;)0XF`D0^8cgW?g5ejX<=koyo)a6y~pBPsc zTrHVQA`*#khkxi8fH6kV=ppI4PPJN%7-KZ;pCiBDPXrI_Vt#3j7-Jm~i^YiG;r8pv zfhIeP=CPH4z%*p_8mNMF!WQ|0N18H7= z`vIEd^La^mE7A!7O$&BiqO2C|CJO`tfq=_5pFhqe5@fBu00000NkvXXu0mjfzsAzK delta 229 zcmaFN+{iRRrJl3EBeIx*f$s4Sea(SUI8it`xSPs2st89-JJg=!Pm8Qk-jko;zxq{*_?yI{>N=YV@0pP&? zon*7wFm^f}K6;N-?>)w541xe5gox^N>1)i+-dFkjQEIh!)M~G>?E+Ftq?7Hb^N6f`FMjx5!Q2j9wBlbK?q)h99e6I|A3A z?qG6vviaCw(DMzbv-6)>vI}Bq@pdTO{;|#%{|$#mk8Xvr)%u3-e@!&Dw$^59>T*mx zbp>N%2SwE_V*&$vhY@^&!f8<~I-!ZyipTfXMi>DeF1URnRkxgIC`!ygmwLS}%+;p4 rx0yRmF?Ig{Rj0TmL5)VE(M0(R!fURm#&O6300000NkvXXu0mjfT;TI( delta 189 zcmV;u07Czp1myvcFn<7_NklhEZ!h^hFri~ z$=*Qr3fovN2v%v9RHU#&}lOR?j5 diff --git a/Resources/Textures/Objects/Specific/Medical/implanter.rsi/implanter1.png b/Resources/Textures/Objects/Specific/Medical/implanter.rsi/implanter1.png index 1dd9ee53bd1de40a364ff2a21d5a4bb385aba1ae..6072b5227211fe976fe89807467103a75c973196 100644 GIT binary patch delta 83 zcmb=apJ3=`>FMGa64CnhjG`cef(XmSr7UeNOA0vIe+Pi n9p|=1I<#$H{N=)Q70+FK6<^qyI1J=D8Gyjk)z4*}Q$iB}E!-Z| delta 80 zcmb=gnPBK`=IP=X64CnhOrRixfPllnAnM8ko<6r;+Pgg&ebxsLQ09ZgFqyPW_ diff --git a/Resources/Textures/Objects/Specific/Medical/implanter.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/implanter.rsi/meta.json index 38050ea31012ac..efcfc1c348a1da 100644 --- a/Resources/Textures/Objects/Specific/Medical/implanter.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/implanter.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/PestoVerde322/tgstation/blob/37460afeeb24f84e591d538e40bb04e60aef9cf8/icons/obj/syringe.dmi", + "copyright": "Taken from tgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d, resprite by @linkblyat", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/broken.png b/Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/broken.png new file mode 100644 index 0000000000000000000000000000000000000000..027ecee0f7dd50e3a991da3cace39bca29e5c4dc GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7e|v z#WAE}&f80dT!#!q*dB-%aLY!C2OC7*nX^l5`6FH%7rh6Dd%Dag_+2vXzRT6*t#)#X z<*g>k)+W~}|Kpk7^ZvZ|`0R_*j6kCxK!R1HOGzU6M%8wH?|R8B&gUE7&siKCyZI!; zXA@OLmlI)=CcU$|a?V%y_v}qeazk5P=S`k6X-d$Nt##Z|tUK)0w_Mw_W;g4*+CN{W uo;1I(et-S#$BkRR%=~jrkO^eLAJqqp>LI$Bn%}1ggZQ4VelF{r5}E)&!C;pF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/implanter0.png b/Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/implanter0.png new file mode 100644 index 0000000000000000000000000000000000000000..57956f4c907f44dedc29aa8ae67fc841985d94cf GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}^F3W0Ln2z= zUNGchG8ACFpns!Pw=6g1;F67-XKCx)Q>bW*IS_sFp2Ih;+Yx#kVVToHRwi$C)aAKx z-XH3`o8*k^} c;_`*X>7LG_s>-9jK&LWzy85}Sb4q9e0Q=cl7ytkO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/implanter1.png b/Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/implanter1.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd9ee53bd1de40a364ff2a21d5a4bb385aba1ae GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}W}YsNArY-_ z&jboG2naYFT;3v=MXJtr->KQ-sVb&HS$=Pfh;sd!esWBUD< Vl}YsXHx8f)44$rjF6*2UngBi!DDwaS literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/meta.json new file mode 100644 index 00000000000000..38050ea31012ac --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/syndi_implanter.rsi/meta.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/PestoVerde322/tgstation/blob/37460afeeb24f84e591d538e40bb04e60aef9cf8/icons/obj/syringe.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "broken" + }, + { + "name": "implanter0" + }, + { + "name": "implanter1" + } + ] +} From 8edd5257c4b83957e52c56233df0523a8b110c87 Mon Sep 17 00:00:00 2001 From: daerSeebaer <61566539+daerSeebaer@users.noreply.github.com> Date: Wed, 18 Oct 2023 19:46:32 +0200 Subject: [PATCH 152/245] Display current load and maximum capacity (#20181) --- Content.Client/Ame/UI/AmeWindow.xaml | 20 +++++++++++--- Content.Client/Ame/UI/AmeWindow.xaml.cs | 3 +++ Content.Server/Ame/AmeNodeGroup.cs | 17 ++++++++---- .../Ame/Components/AmeControllerComponent.cs | 11 ++++++++ .../Ame/EntitySystems/AmeControllerSystem.cs | 27 ++++++++++++++++--- .../Ame/SharedAmeControllerComponent.cs | 8 ++++-- .../components/ame-controller-component.ftl | 2 ++ 7 files changed, 75 insertions(+), 13 deletions(-) diff --git a/Content.Client/Ame/UI/AmeWindow.xaml b/Content.Client/Ame/UI/AmeWindow.xaml index 8769e3124e1235..14835f85c71a9a 100644 --- a/Content.Client/Ame/UI/AmeWindow.xaml +++ b/Content.Client/Ame/UI/AmeWindow.xaml @@ -1,7 +1,7 @@ - - + - + + + + + + + diff --git a/Content.Client/Ame/UI/AmeWindow.xaml.cs b/Content.Client/Ame/UI/AmeWindow.xaml.cs index 0ad8880becab82..8f5103e6cf7382 100644 --- a/Content.Client/Ame/UI/AmeWindow.xaml.cs +++ b/Content.Client/Ame/UI/AmeWindow.xaml.cs @@ -64,6 +64,9 @@ public void UpdateState(BoundUserInterfaceState state) CoreCount.Text = $"{castState.CoreCount}"; InjectionAmount.Text = $"{castState.InjectionAmount}"; + // format power statistics to pretty numbers + CurrentPowerSupply.Text = $"{castState.CurrentPowerSupply.ToString("N1")}"; + TargetedPowerSupply.Text = $"{castState.TargetedPowerSupply.ToString("N1")}"; } } } diff --git a/Content.Server/Ame/AmeNodeGroup.cs b/Content.Server/Ame/AmeNodeGroup.cs index d0e854469f55be..d970f43d8be23c 100644 --- a/Content.Server/Ame/AmeNodeGroup.cs +++ b/Content.Server/Ame/AmeNodeGroup.cs @@ -126,11 +126,7 @@ public float InjectFuel(int fuel, out bool overloading) var safeFuelLimit = CoreCount * 2; - // Note the float conversions. The maths will completely fail if not done using floats. - // Oh, and don't ever stuff the result of this in an int. Seriously. - var floatFuel = (float) fuel; - var floatCores = (float) CoreCount; - var powerOutput = 20000f * floatFuel * floatFuel / floatCores; + var powerOutput = CalculatePower(fuel, CoreCount); if (fuel <= safeFuelLimit) return powerOutput; @@ -177,6 +173,17 @@ public float InjectFuel(int fuel, out bool overloading) return powerOutput; } + /// + /// Calculates the amount of power the AME can produce with the given settings + /// + public float CalculatePower(int fuel, int cores) + { + // Fuel is squared so more fuel vastly increases power and efficiency + // We divide by the number of cores so a larger AME is less efficient at the same fuel settings + // this results in all AMEs having the same efficiency at the same fuel-per-core setting + return 20000f * fuel * fuel / cores; + } + public int GetTotalStability() { if (CoreCount < 1) diff --git a/Content.Server/Ame/Components/AmeControllerComponent.cs b/Content.Server/Ame/Components/AmeControllerComponent.cs index 42bfa5303d7342..1bf1ac2c927c38 100644 --- a/Content.Server/Ame/Components/AmeControllerComponent.cs +++ b/Content.Server/Ame/Components/AmeControllerComponent.cs @@ -72,10 +72,21 @@ public sealed partial class AmeControllerComponent : SharedAmeControllerComponen [DataField("nextUpdate")] public TimeSpan NextUpdate = default!; + /// + /// The next time this will try to update the controller UI. + /// + public TimeSpan NextUIUpdate = default!; + /// /// The the amount of time that passes between injection attempts. /// [DataField("updatePeriod")] [ViewVariables(VVAccess.ReadWrite)] public TimeSpan UpdatePeriod = TimeSpan.FromSeconds(10.0); + + /// + /// The maximum amount of time that passes between UI updates. + /// + [ViewVariables] + public TimeSpan UpdateUIPeriod = TimeSpan.FromSeconds(3.0); } diff --git a/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs b/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs index 7b9ea7146ef8d9..44140193d2a3f0 100644 --- a/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs +++ b/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs @@ -50,6 +50,8 @@ public override void Update(float frameTime) { if (controller.NextUpdate <= curTime) UpdateController(uid, curTime, controller, nodes); + else if (controller.NextUIUpdate <= curTime) + UpdateUi(uid, controller); } } @@ -60,6 +62,8 @@ private void UpdateController(EntityUid uid, TimeSpan curTime, AmeControllerComp controller.LastUpdate = curTime; controller.NextUpdate = curTime + controller.UpdatePeriod; + // update the UI regardless of other factors to update the power readings + UpdateUi(uid, controller); if (!controller.Injecting) return; @@ -106,18 +110,35 @@ public void UpdateUi(EntityUid uid, AmeControllerComponent? controller = null) var state = GetUiState(uid, controller); _userInterfaceSystem.SetUiState(bui, state); + + controller.NextUIUpdate = _gameTiming.CurTime + controller.UpdateUIPeriod; } private AmeControllerBoundUserInterfaceState GetUiState(EntityUid uid, AmeControllerComponent controller) { var powered = !TryComp(uid, out var powerSource) || powerSource.Powered; - var coreCount = TryGetAMENodeGroup(uid, out var group) ? group.CoreCount : 0; + var coreCount = 0; + // how much power can be produced at the current settings, in kW + // we don't use max. here since this is what is set in the Controller, not what the AME is actually producing + float targetedPowerSupply = 0; + if (TryGetAMENodeGroup(uid, out var group)) + { + coreCount = group.CoreCount; + targetedPowerSupply = group.CalculatePower(controller.InjectionAmount, group.CoreCount) / 1000; + } + + // set current power statistics in kW + float currentPowerSupply = 0; + if (TryComp(uid, out var powerOutlet) && coreCount > 0) + { + currentPowerSupply = powerOutlet.CurrentSupply / 1000; + } var hasJar = Exists(controller.JarSlot.ContainedEntity); if (!hasJar || !TryComp(controller.JarSlot.ContainedEntity, out var jar)) - return new AmeControllerBoundUserInterfaceState(powered, IsMasterController(uid), false, hasJar, 0, controller.InjectionAmount, coreCount); + return new AmeControllerBoundUserInterfaceState(powered, IsMasterController(uid), false, hasJar, 0, controller.InjectionAmount, coreCount, currentPowerSupply, targetedPowerSupply); - return new AmeControllerBoundUserInterfaceState(powered, IsMasterController(uid), controller.Injecting, hasJar, jar.FuelAmount, controller.InjectionAmount, coreCount); + return new AmeControllerBoundUserInterfaceState(powered, IsMasterController(uid), controller.Injecting, hasJar, jar.FuelAmount, controller.InjectionAmount, coreCount, currentPowerSupply, targetedPowerSupply); } private bool IsMasterController(EntityUid uid) diff --git a/Content.Shared/Ame/SharedAmeControllerComponent.cs b/Content.Shared/Ame/SharedAmeControllerComponent.cs index 386d577ef38dc5..8dde66724d5b6f 100644 --- a/Content.Shared/Ame/SharedAmeControllerComponent.cs +++ b/Content.Shared/Ame/SharedAmeControllerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Ame; @@ -17,8 +17,10 @@ public sealed class AmeControllerBoundUserInterfaceState : BoundUserInterfaceSta public readonly int FuelAmount; public readonly int InjectionAmount; public readonly int CoreCount; + public readonly float CurrentPowerSupply; + public readonly float TargetedPowerSupply; - public AmeControllerBoundUserInterfaceState(bool hasPower, bool isMaster, bool injecting, bool hasFuelJar, int fuelAmount, int injectionAmount, int coreCount) + public AmeControllerBoundUserInterfaceState(bool hasPower, bool isMaster, bool injecting, bool hasFuelJar, int fuelAmount, int injectionAmount, int coreCount, float currentPowerSupply, float targetedPowerSupply) { HasPower = hasPower; IsMaster = isMaster; @@ -27,6 +29,8 @@ public AmeControllerBoundUserInterfaceState(bool hasPower, bool isMaster, bool i FuelAmount = fuelAmount; InjectionAmount = injectionAmount; CoreCount = coreCount; + CurrentPowerSupply = currentPowerSupply; + TargetedPowerSupply = targetedPowerSupply; } } diff --git a/Resources/Locale/en-US/ame/components/ame-controller-component.ftl b/Resources/Locale/en-US/ame/components/ame-controller-component.ftl index f55fa8755f019f..cd5e6b4661c12b 100644 --- a/Resources/Locale/en-US/ame/components/ame-controller-component.ftl +++ b/Resources/Locale/en-US/ame/components/ame-controller-component.ftl @@ -16,6 +16,8 @@ ame-window-fuel-not-inserted-text = No fuel inserted ame-window-injection-amount-label = Injection amount: ame-window-refresh-parts-button = Refresh Parts ame-window-core-count-label = Core count: +ame-window-power-currentsupply-label = Current power supply: +ame-window-power-targetsupply-label = Targeted power supply: ame-window-toggle-injection-button = Toggle Injection ame-window-eject-button = Eject ame-window-increase-fuel-button = Increase From 8adbd50cf93e02537ff682caa120cf8ef4a184c9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Oct 2023 13:47:37 -0400 Subject: [PATCH 153/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index cd0c690f58440d..43bda6635eaa2e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: Flareguy - changes: - - {message: The Microwave and wall-mounted Nanomed now use sprites similar to the - ones found in SS14., type: Tweak} - id: 4520 - time: '2023-08-11T05:12:37.0000000+00:00' - author: Potato1234_x changes: - {message: Ice has been added to the freezer crates. Chefs rejoice!, type: Tweak} @@ -2933,3 +2927,9 @@ Entries: - {message: Fix vaulting mispredict., type: Fix} id: 5019 time: '2023-10-18T05:11:33.0000000+00:00' +- author: daerSeebaer + changes: + - {message: The AME controller now shows the current load and maximum capacity., + type: Add} + id: 5020 + time: '2023-10-18T17:46:33.0000000+00:00' From 064cb8797e3921051de9287cdfac9a9258722c7e Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Wed, 18 Oct 2023 20:05:15 +0200 Subject: [PATCH 154/245] Accurate temperature alerts (#19913) --- .../Temperature/Systems/TemperatureSystem.cs | 67 ++++++++++++------- 1 file changed, 42 insertions(+), 25 deletions(-) diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs index 4796704d27be1e..0dc5e9391af8da 100644 --- a/Content.Server/Temperature/Systems/TemperatureSystem.cs +++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Administration.Logs; using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; +using Content.Server.Body.Components; using Content.Server.Temperature.Components; using Content.Shared.Alert; using Content.Shared.Atmos; @@ -133,41 +134,57 @@ private void OnRejuvenate(EntityUid uid, TemperatureComponent comp, RejuvenateEv private void ServerAlert(EntityUid uid, AlertsComponent status, OnTemperatureChangeEvent args) { - switch (args.CurrentTemperature) + AlertType type; + float threshold; + float idealTemp; + + if (!TryComp(uid, out var temperature)) { - // Cold strong. - case <= 260: - _alerts.ShowAlert(uid, AlertType.Cold, 3); - break; + _alerts.ClearAlertCategory(uid, AlertCategory.Temperature); + return; + } - // Cold mild. - case <= 280 and > 260: - _alerts.ShowAlert(uid, AlertType.Cold, 2); - break; + if (TryComp(uid, out var regulator) && + regulator.NormalBodyTemperature > temperature.ColdDamageThreshold && + regulator.NormalBodyTemperature < temperature.HeatDamageThreshold) + { + idealTemp = regulator.NormalBodyTemperature; + } + else + { + idealTemp = (temperature.ColdDamageThreshold + temperature.HeatDamageThreshold) / 2; + } - // Cold weak. - case <= 292 and > 280: - _alerts.ShowAlert(uid, AlertType.Cold, 1); - break; + if (args.CurrentTemperature <= idealTemp) + { + type = AlertType.Cold; + threshold = temperature.ColdDamageThreshold; + } + else + { + type = AlertType.Hot; + threshold = temperature.HeatDamageThreshold; + } - // Safe. - case <= 327 and > 292: - _alerts.ClearAlertCategory(uid, AlertCategory.Temperature); + // Calculates a scale where 1.0 is the ideal temperature and 0.0 is where temperature damage begins + // The cold and hot scales will differ in their range if the ideal temperature is not exactly halfway between the thresholds + var tempScale = (args.CurrentTemperature - threshold) / (idealTemp - threshold); + switch (tempScale) + { + case <= 0f: + _alerts.ShowAlert(uid, type, 3); break; - // Heat weak. - case <= 335 and > 327: - _alerts.ShowAlert(uid, AlertType.Hot, 1); + case <= 0.4f: + _alerts.ShowAlert(uid, type, 2); break; - // Heat mild. - case <= 360 and > 335: - _alerts.ShowAlert(uid, AlertType.Hot, 2); + case <= 0.66f: + _alerts.ShowAlert(uid, type, 1); break; - // Heat strong. - case > 360: - _alerts.ShowAlert(uid, AlertType.Hot, 3); + case > 0.66f: + _alerts.ClearAlertCategory(uid, AlertCategory.Temperature); break; } } From f20ed9461482e788d312fc9406436b04f0ed94cc Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Oct 2023 14:06:20 -0400 Subject: [PATCH 155/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 43bda6635eaa2e..6e7dfce019b864 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Potato1234_x - changes: - - {message: Ice has been added to the freezer crates. Chefs rejoice!, type: Tweak} - id: 4521 - time: '2023-08-11T07:28:27.0000000+00:00' - author: tom-leys changes: - {message: Air Technicians will find a new fire-fighting door remote in their locker. @@ -2933,3 +2928,8 @@ Entries: type: Add} id: 5020 time: '2023-10-18T17:46:33.0000000+00:00' +- author: Errant + changes: + - {message: Temperature alerts are now more accurate for different species., type: Fix} + id: 5021 + time: '2023-10-18T18:05:15.0000000+00:00' From 9741aaa5c1f907ae32ace2525da002e00631c0ab Mon Sep 17 00:00:00 2001 From: Fluffiest Floofers Date: Wed, 18 Oct 2023 20:11:41 +0200 Subject: [PATCH 156/245] Adjust warm donk pocket chemicals (#21052) Add omnizine and increase nutriment as the comment suggest. --- .../Entities/Objects/Consumable/Food/Baked/donkpocket.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml index 0564524e9afb20..061852f56166c3 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml @@ -58,7 +58,9 @@ maxVol: 10 reagents: - ReagentId: Nutriment - Quantity: 7 + Quantity: 8 + - ReagentId: Omnizine + Quantity: 2 - type: entity name: dank-pocket From 7b4ceb9d0c776905e374621f99b9ded04c13023f Mon Sep 17 00:00:00 2001 From: Keiku <41867291+Keikiru@users.noreply.github.com> Date: Wed, 18 Oct 2023 22:59:00 +0200 Subject: [PATCH 157/245] Add checkbox for toggle walking (#20926) Co-authored-by: onoira LGTM! --- .../Options/UI/Tabs/KeyRebindTab.xaml.cs | 58 +++++++++++++++++++ Content.Shared/CCVar/CCVars.cs | 6 ++ .../en-US/escape-menu/ui/options-menu.ftl | 1 + 3 files changed, 65 insertions(+) diff --git a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs index 188fe7740cc6d9..c68e7f3af95ee2 100644 --- a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs @@ -1,5 +1,6 @@ using System.Numerics; using Content.Client.Stylesheets; +using Content.Shared.CCVar; using Content.Shared.Input; using Robust.Client.AutoGenerated; using Robust.Client.Input; @@ -41,6 +42,61 @@ private void HandleToggleUSQWERTYCheckbox(BaseButton.ButtonToggledEventArgs args _cfg.SaveToFile(); } + private void InitToggleWalk() + { + if (_cfg.GetCVar(CCVars.ToggleWalk)) + { + ToggleFunctions.Add(EngineKeyFunctions.Walk); + } + else + { + ToggleFunctions.Remove(EngineKeyFunctions.Walk); + } + } + + private void HandleToggleWalk(BaseButton.ButtonToggledEventArgs args) + { + _cfg.SetCVar(CCVars.ToggleWalk, args.Pressed); + _cfg.SaveToFile(); + InitToggleWalk(); + + if (!_keyControls.TryGetValue(EngineKeyFunctions.Walk, out var keyControl)) + { + return; + } + + var bindingType = args.Pressed ? KeyBindingType.Toggle : KeyBindingType.State; + for (var i = 0; i <= 1; i++) + { + var binding = (i == 0 ? keyControl.BindButton1 : keyControl.BindButton2).Binding; + if (binding == null) + { + continue; + } + + var registration = new KeyBindingRegistration + { + Function = EngineKeyFunctions.Walk, + BaseKey = binding.BaseKey, + Mod1 = binding.Mod1, + Mod2 = binding.Mod2, + Mod3 = binding.Mod3, + Priority = binding.Priority, + Type = bindingType, + CanFocus = binding.CanFocus, + CanRepeat = binding.CanRepeat, + }; + + _deferCommands.Add(() => + { + _inputManager.RemoveBinding(binding); + _inputManager.RegisterBinding(registration); + }); + } + + _deferCommands.Add(_inputManager.SaveToUserData); + } + public KeyRebindTab() { IoCManager.InjectDependencies(this); @@ -98,6 +154,8 @@ void AddCheckBox(string checkBoxName, bool currentState, Action public static readonly CVarDef DragDropDeadZone = CVarDef.Create("control.drag_dead_zone", 12f, CVar.CLIENTONLY | CVar.ARCHIVE); + /// + /// Toggles whether the walking key is a toggle or a held key. + /// + public static readonly CVarDef ToggleWalk = + CVarDef.Create("control.toggle_walk", false, CVar.CLIENTONLY | CVar.ARCHIVE); + /* * UPDATE */ diff --git a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl index 10db378ab42af7..97d1da949b00c8 100644 --- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl @@ -82,6 +82,7 @@ ui-options-header-dev = Development ui-options-header-general = General ui-options-hotkey-keymap = Use US QWERTY Keys +ui-options-hotkey-toggle-walk = Toggle Walk ui-options-function-move-up = Move Up ui-options-function-move-left = Move Left From c92b99f6bacaa0e829995be0fcfbef2f4f7b374c Mon Sep 17 00:00:00 2001 From: phunnyguy <90366172+phunnyguy@users.noreply.github.com> Date: Wed, 18 Oct 2023 17:03:23 -0400 Subject: [PATCH 158/245] Tortilla dough, Taco shells, and Tacos (#20797) LGTM! --- .../Objects/Consumable/Food/ingredients.yml | 50 +++++- .../Objects/Consumable/Food/meals.yml | 10 +- .../Entities/Objects/Consumable/Food/taco.yml | 145 ++++++++++++++++++ .../Construction/Graphs/food/tortilla.yml | 13 ++ .../Recipes/Cooking/meal_recipes.yml | 82 +++++++++- .../Prototypes/Recipes/Reactions/food.yml | 14 ++ .../Consumable/Food/ingredients.rsi/meta.json | 11 +- .../ingredients.rsi/tortilladough-flat.png | Bin 0 -> 378 bytes .../ingredients.rsi/tortilladough-slice.png | Bin 0 -> 438 bytes .../Food/ingredients.rsi/tortilladough.png | Bin 0 -> 610 bytes .../Consumable/Food/meals.rsi/meta.json | 2 +- .../Food/meals.rsi/{taco.png => softtaco.png} | Bin .../Consumable/Food/taco.rsi/beeftaco.png | Bin 0 -> 303 bytes .../Food/taco.rsi/beeftacosupreme.png | Bin 0 -> 307 bytes .../Consumable/Food/taco.rsi/chickentaco.png | Bin 0 -> 308 bytes .../Food/taco.rsi/chickentacosupreme.png | Bin 0 -> 309 bytes .../Consumable/Food/taco.rsi/fishtaco.png | Bin 0 -> 286 bytes .../Consumable/Food/taco.rsi/meta.json | 32 ++++ .../Consumable/Food/taco.rsi/rattaco.png | Bin 0 -> 329 bytes .../Consumable/Food/taco.rsi/tacoshell.png | Bin 0 -> 283 bytes 20 files changed, 347 insertions(+), 12 deletions(-) create mode 100644 Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/food/tortilla.yml create mode 100644 Resources/Textures/Objects/Consumable/Food/ingredients.rsi/tortilladough-flat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/ingredients.rsi/tortilladough-slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/ingredients.rsi/tortilladough.png rename Resources/Textures/Objects/Consumable/Food/meals.rsi/{taco.png => softtaco.png} (100%) create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftaco.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftacosupreme.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentaco.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentacosupreme.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/fishtaco.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/rattaco.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell.png diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml index 8ef9bab706a7f8..71008ac89a34b8 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml @@ -379,6 +379,54 @@ - type: Sprite state: cornmealdough-slice +- type: entity + name: tortilla dough + parent: FoodBakingBase + id: FoodDoughTortilla + description: A piece of tortilla dough. + components: + - type: FlavorProfile + flavors: + - chalky + - dough + - type: Sprite + state: tortilladough + - type: SliceableFood + count: 3 + slice: FoodDoughTortillaSlice + +- type: entity + name: tortilla dough slice + parent: FoodBakingBase + id: FoodDoughTortillaSlice + description: A slice of tortilla dough. + components: + - type: FlavorProfile + flavors: + - chalky + - dough + - type: Sprite + state: tortilladough-slice + - type: Construction + graph: Tortilla + node: start + +- type: entity + name: flattened tortilla dough + parent: FoodBakingBase + id: FoodDoughTortillaFlat + description: A flattened slice of tortilla dough, cook this to get a taco shell. + components: + - type: FlavorProfile + flavors: + - chalky + - dough + - type: Sprite + state: tortilladough-flat + - type: Construction + graph: Tortilla + node: flat + - type: entity name: bun parent: FoodBakingBase @@ -460,7 +508,7 @@ components: - type: Sprite state: butter - + - type: entity name: stick of cannabis butter parent: FoodBakingBase diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml index a55c53542138e6..f4b52217cdf6d8 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml @@ -580,9 +580,9 @@ - Fruit - type: entity - name: taco + name: soft taco parent: FoodMealBase - id: FoodMealTaco + id: FoodMealSoftTaco description: Take a bite! components: - type: FlavorProfile @@ -592,10 +592,8 @@ - meaty - onion - type: Sprite - state: taco - - type: Tag - tags: - - Meat + state: softtaco + - type: entity name: corn in butter diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml new file mode 100644 index 00000000000000..385f52b54306cf --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml @@ -0,0 +1,145 @@ +- type: entity + name: taco shell + parent: FoodMealBase + id: FoodTacoShell + description: A taco shell, easy to hold, but falls on its side when put down. + components: + - type: Food + - type: Sprite + sprite: Objects/Consumable/Food/taco.rsi + layers: + - state: tacoshell + - type: SolutionContainerManager + solutions: + food: + maxVol: 10 + reagents: + - ReagentId: Nutriment + Quantity: 6.66 # Just using the same values as the bun values, since the recipe for taco shells is roughly the same as buns. +# Base + +- type: entity + parent: FoodInjectableBase + id: FoodTacoBase + abstract: true + components: + - type: FlavorProfile + flavors: + - meaty + - cheesy + - type: Food + transferAmount: 3 + - type: Sprite + sprite: Objects/Consumable/Food/taco.rsi + - type: SolutionContainerManager + solutions: + food: + maxVol: 15 + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Vitamin + Quantity: 4 + - type: Item + sprite: Objects/Consumable/Food/taco.rsi + +- type: entity + name: beef taco + parent: FoodTacoBase + id: FoodTacoBeef + description: A very basic and run of the mill beef taco, now with cheese! + components: + - type: Food + - type: Sprite + state: beeftaco + +- type: entity + name: chicken taco + parent: FoodTacoBase + id: FoodTacoChicken + description: A very basic and run of the mill chicken taco, now with cheese! + components: + - type: Food + - type: Sprite + state: chickentaco + +- type: entity + name: fish taco + parent: FoodTacoBase + id: FoodTacoFish + description: Sounds kinda gross, but it's actually not that bad. + components: + - type: FlavorProfile + flavors: + - onion + - fishy + - type: Food + - type: Sprite + state: fishtaco + - type: SolutionContainerManager + solutions: + food: + maxVol: 20 + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 6 + +- type: entity + name: rat taco + parent: FoodTacoBase + id: FoodTacoRat + description: Yeah, that looks about right... + components: + - type: Food + - type: Sprite + state: rattaco + - type: SolutionContainerManager + solutions: + food: + maxVol: 15 + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Vitamin + Quantity: 4 + +- type: entity + name: beef taco supreme + parent: FoodTacoBase + id: FoodTacoBeefSupreme + description: It's like a regular beef taco, but surpeme! + components: + - type: Food + - type: Sprite + state: beeftacosupreme + - type: SolutionContainerManager + solutions: + food: + maxVol: 26 + reagents: + - ReagentId: Nutriment + Quantity: 14 + - ReagentId: Vitamin + Quantity: 6 + +- type: entity + name: chicken taco supreme + parent: FoodTacoBase + id: FoodTacoChickenSupreme + description: It's like a regular chicken taco, but surpeme! + components: + - type: Food + - type: Sprite + state: chickentacosupreme + - type: SolutionContainerManager + solutions: + food: + maxVol: 26 + reagents: + - ReagentId: Nutriment + Quantity: 14 + - ReagentId: Vitamin + Quantity: 6 + diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/food/tortilla.yml b/Resources/Prototypes/Recipes/Construction/Graphs/food/tortilla.yml new file mode 100644 index 00000000000000..4678ef801e7fb8 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/food/tortilla.yml @@ -0,0 +1,13 @@ +- type: constructionGraph + id: Tortilla + start: start + graph: + - node: start + entity: FoodDoughTortillaSlice + edges: + - to: flat + steps: + - tool: Rolling + doAfter: 1 + - node: flat + entity: FoodDoughTortillaFlat diff --git a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml index c02919777b2867..d83d58bc925689 100644 --- a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml @@ -1674,9 +1674,9 @@ FoodKebabSkewer: 1 - type: microwaveMealRecipe - id: RecipeFoodMealTaco - name: taco recipe - result: FoodMealTaco + id: RecipeFoodMealSoftTaco + name: soft taco recipe + result: FoodMealSoftTaco time: 10 solids: FoodDoughSlice: 1 @@ -1733,3 +1733,79 @@ FoodCorn: 1 FoodPlate: 1 FoodButter: 1 + +- type: microwaveMealRecipe + id: RecipeTacoShell + name: taco shell recipe + result: FoodTacoShell + time: 5 + solids: + FoodDoughTortillaFlat: 1 # one third of a standard bread dough recipe + +- type: microwaveMealRecipe + id: RecipeTacoBeef + name: beef taco recipe + result: FoodTacoBeef + time: 10 + solids: + FoodTacoShell: 1 + FoodMeatCutlet: 1 + FoodCheeseSlice: 1 + +- type: microwaveMealRecipe + id: RecipeTacoChicken + name: chicken taco recipe + result: FoodTacoChicken + time: 10 + solids: + FoodTacoShell: 1 + FoodMeatChickenCutlet: 1 + FoodCheeseSlice: 1 + +- type: microwaveMealRecipe + id: RecipeTacoFish + name: fish taco recipe + result: FoodTacoFish + time: 10 + solids: + FoodTacoShell: 1 + FoodMeatFish: 1 + FoodOnionSlice: 2 + FoodTomato: 1 + FoodCabbage: 1 + +- type: microwaveMealRecipe + id: RecipeTacoRat + name: rat taco recipe + result: FoodTacoRat + time: 10 + solids: + FoodTacoShell: 1 + FoodCheeseSlice: 1 + FoodMeatRat: 1 + +- type: microwaveMealRecipe + id: RecipeTacoBeefSupreme + name: beef taco supreme recipe + result: FoodTacoBeefSupreme + time: 10 + solids: + FoodTacoShell: 1 + FoodCheeseSlice: 1 + FoodMeatCutlet: 1 + FoodTomato: 1 + FoodCabbage: 1 + FoodOnionSlice: 2 + +- type: microwaveMealRecipe + id: RecipeTacoChickenSupreme + name: beef taco supreme recipe + result: FoodTacoChickenSupreme + time: 10 + solids: + FoodTacoShell: 1 + FoodCheeseSlice: 1 + FoodMeatChickenCutlet: 1 + FoodTomato: 1 + FoodCabbage: 1 + FoodOnionSlice: 2 diff --git a/Resources/Prototypes/Recipes/Reactions/food.yml b/Resources/Prototypes/Recipes/Reactions/food.yml index 284b1c763a4a83..3ca69b379d31cb 100644 --- a/Resources/Prototypes/Recipes/Reactions/food.yml +++ b/Resources/Prototypes/Recipes/Reactions/food.yml @@ -58,6 +58,20 @@ - !type:CreateEntityReactionEffect entity: FoodDoughCornmeal +- type: reaction + id: CreateTortillaDough + impact: Low + quantized: true + conserveEnergy: false + reactants: + Cornmeal: + amount: 15 + Water: + amount: 10 + effects: + - !type:CreateEntityReactionEffect + entity: FoodDoughTortilla + - type: reaction id: CreateCakeBatter impact: Low diff --git a/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/meta.json index bf656ff00ca731..3c66005b04ba48 100644 --- a/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation and baystation and modified by potato1234x at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24 and https://github.com/Baystation12/Baystation12/commit/a6067826de7fd8f698793f6d84e6c2f1f9b1f188. Tofu and tofu-slice were created by Discord user rosysyntax#6514. Chevrelog and chevredisk created by Github user deathride58", + "copyright": "Taken from tgstation and baystation and modified by potato1234x at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24 and https://github.com/Baystation12/Baystation12/commit/a6067826de7fd8f698793f6d84e6c2f1f9b1f188. Tofu and tofu-slice were created by Discord user rosysyntax#6514. Chevrelog and chevredisk created by Github user deathride58, tortilladough tortillaflat and tortillaslice added by Phunny,", "size": { "x": 32, "y": 32 @@ -108,6 +108,15 @@ }, { "name": "tofu-slice" + }, + { + "name": "tortilladough" + }, + { + "name": "tortilladough-flat" + }, + { + "name": "tortilladough-slice" } ] } diff --git a/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/tortilladough-flat.png b/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/tortilladough-flat.png new file mode 100644 index 0000000000000000000000000000000000000000..a0820eeacc524aa43ad73bc14bc91836310cfc08 GIT binary patch literal 378 zcmV-=0fqjFP)RB!U=$z& Y00FXY@jIq8U;qFB07*qoM6N<$f*^jUaR2}S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/tortilladough-slice.png b/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/tortilladough-slice.png new file mode 100644 index 0000000000000000000000000000000000000000..b69ffc39e6f48dea8b0ee55421744ff53c70ebf2 GIT binary patch literal 438 zcmV;n0ZIOeP)r&iv~q|BB-}KCm<4Uxw+VWL9-s&40i*{A7p>|IiZ<=r1T9**2$Ntc z1~b$gguz0lh0MheW*j%QxZh@m|D1dOpL@>*i9{li{4sO0Ec$%DaED(5035pmz{>XV zOnZe| zM=rqPvNloscKQHBm4wj3hL{gB*9(R)Ph@hmnwF@0#^ah}chC!l2p)uQ%FFXTS6^7e zY&R(8OQ=h$q85q88Ga3L><-^fpKi}4l~jSzwRoX}hST>108&YnV!i~x?cEh-y(T6< z5{sj#X`)KvmwDdUL{ZZyYMQtE6W@~vyr*iV>}pz8gy{Bc0L*rSt@T|JnH=7e^g;o2 zU!O#;-#kn;DAh{Y1<oB#j-07*qoM6N<$f;J+^1^@s6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/tortilladough.png b/Resources/Textures/Objects/Consumable/Food/ingredients.rsi/tortilladough.png new file mode 100644 index 0000000000000000000000000000000000000000..d502da9b1cc84f6ea5824338c622680fd3fbb712 GIT binary patch literal 610 zcmV-o0-gPdP)BjE7=|A!#g;M1l^P>#r~{#HmJ*DUzmTCzp^!h&Ipi03&MzpLyJsncLLpl_7GpYe zaTSur1{>j4vPDGYK&%eVo#S9E+3i-n+v&c$=l#C>bO(tNCHmi$T4mAM$$q%Ay~kQQ zBfmMe2f(0jQG4|^_P$FQxcpQPExX0e_MZH9-$dy3CUNaLbVm~E*d8gZ z2!Ni~Xr3O1|IC1ZYi4-{u4nxzH0uK}7+%Ymvy=Tu6Ojhqzk4|sp4T&sRYRV=`#Xo* zu@JEv&tF6)7R$iKlV=htB(fd4BMegmz%VuRrxh9F*=^RQ&9bvqVU-@h${M;frK9}I@qxE%|(W1*R4Zf`~s44?##9D8;ffG>>?09^e# z|2qQ!UoV=#^d1lpC2;WUwls1dUNN`i`qythF1(T-Et)*2H&Vw(yCF2G0`Abeo0-5Y zyM=$zq`Fy?>`rTdb=^eg-{!-WT4{ZrikNp%F#mPdxF{)agN7yW+@2T6_~Is_yor5Spg z#o<23MKdrkFeqI5%aCNvM3f_lasYa;W22)|&O!J#CJf2*e=*EWWFyKEL?xQ7OGW={ zseWU)cAJY~$p!(2n1BxqFg`XqCh{wTx&#x$%@_X|j^4#@2T=~#vEKOqhxdON1O!RB!U=)lT008pMpG64@mz4kj002ovPDHLkV1l}8 BfIa{K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftacosupreme.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftacosupreme.png new file mode 100644 index 0000000000000000000000000000000000000000..4db06131dce7e2f745568d4a6f0d1c1ccd2ccec3 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJU!E?GArY;~2@#5yEbD3Ao!D>pm0mjg6^3g;Tf$kU??zny85}Sb4q9e0G()r AO#lD@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentaco.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentaco.png new file mode 100644 index 0000000000000000000000000000000000000000..014e20c0e96aefc2e7f7135cc4fa58815e276643 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ-<~dxArY;~2@=0O;wsjB8kb);J}X?FK$OKm3Y$QEGaiP_Uwae71HZvT`UuhS3UkOfA4>y zfIv#3!nCwqA37VoPt7=}R?8Y`nG5zIm)k)N2}=fstI7)wg!cYh0SpEPPgg&ebxsLQ E0H#5yEbD3Ao!D>pm0mjgT8M?AW-nE5SoRlqq_8 z*T3sQe~%TsH4{HPiI<7TkWpSDp(f|c<3Gg!isRw+z1u94!CvHYJE$S?iGg9qrP&{%{CtIh;lSYO>gTe~DWM4f DruKs) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/fishtaco.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/fishtaco.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2a6055234cfd987914d15b9d79ec33f83adfec GIT binary patch literal 286 zcmV+(0pb3MP)NkdKx49UWY!G0G3HZPO z<71zZ}<>ckG kQ7{Td!6+C7qhRC!0KPrHzdt#tZ~y=R07*qoM6N<$f+7}!E&u=k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json new file mode 100644 index 00000000000000..3e028b55c9364c --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Added by Phunny", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "tacoshell" + }, + { + "name": "beeftaco" + }, + { + "name": "beeftacosupreme" + }, + { + "name": "chickentaco" + }, + { + "name": "chickentacosupreme" + }, + { + "name": "fishtaco" + }, + { + "name": "rattaco" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/rattaco.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/rattaco.png new file mode 100644 index 0000000000000000000000000000000000000000..f80673f6a685cd9786f0c9bbf1d7fa7f196a0d04 GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFba6OIEF;DCMQU+E=~~XX$mwr z&@fTP_rHDH|N4J_G@F+!F**GCxxeJO`Fl?;So*8i@!}iplg|tvZe6kbxxLZ$t*0^| zhcqw$S~E$e(fs0prux|_>dn($nYU$c-zhOIM!;7KF4w!W zX36#Sk`mfl25*$LuD*-N|MUOwZ+jl5CLNw5m&Eg17tRQbi}MTXlZN@6tIeK)VY$)< V(S(VT>wrPT;OXk;vd$@?2>|nika++A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell.png new file mode 100644 index 0000000000000000000000000000000000000000..63a396484ce9a4922224beaf9fafacbec44afd63 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJN1iT@ArY;~2@NpBnze9yq|CYRp9+(9l+EsL6mj1m zuv#EVlDX^Yjf^11K*a{RH#c6am{QC$Y0@R0wqvhUTA2bn(_RN%{2#UIzQnq_&ypfG zIW{P&Jz!?;>F-xl3lw_VAp5%ae|^ROc1MQ^t&I}5VxIFI-g-NR=ibHjCr_n9y~5>o c@B|Y>qhjZoITL0AJFVdQ&MBb@01fMadH?_b literal 0 HcmV?d00001 From dffc32163ea99b6ce541fc0775a021edc5a5746b Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Oct 2023 17:04:27 -0400 Subject: [PATCH 159/245] 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 6e7dfce019b864..c147cbdd60d3d2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: tom-leys - changes: - - {message: Air Technicians will find a new fire-fighting door remote in their locker. - It controls FireLocks Let space in and fire out using a handy remote from a - safe distance!, type: Add} - - {message: 'FireDoors can be bolted and unbolted by fire-fighting, engineering - and command door remotes', type: Add} - - {message: 'Door remotes add your ID card access to their own. If you have access - to open a door, you can control that door with any door remote.', type: Tweak} - id: 4522 - time: '2023-08-11T09:29:33.0000000+00:00' - author: deltanedas changes: - {message: Nanotrasen has designed the new Vim exosuit for all your beloved pets! @@ -2933,3 +2922,11 @@ Entries: - {message: Temperature alerts are now more accurate for different species., type: Fix} id: 5021 time: '2023-10-18T18:05:15.0000000+00:00' +- author: Phunny + changes: + - {message: Added Tortilla doughs and variants., type: Add} + - {message: Added Taco shells and recipe, type: Add} + - {message: Added various types of Tacos, type: Add} + - {message: Changed naming of the original taco to soft shell taco, type: Tweak} + id: 5022 + time: '2023-10-18T21:03:23.0000000+00:00' From 414701dd3bfc0cf0a2dd40d2cfe692f2d0b70985 Mon Sep 17 00:00:00 2001 From: TemporalOroboros Date: Wed, 18 Oct 2023 14:04:47 -0700 Subject: [PATCH 160/245] Swaps HV/MV/LV scaling to supply power scaling (#20880) --- .../Components/ElectrifiedComponent.cs | 12 ---- .../Components/ElectrocutionComponent.cs | 13 ++-- .../Electrocution/ElectrocutionSystem.cs | 59 ++++++++++--------- .../Power/Pow3r/BatteryRampPegSolver.cs | 1 + Content.Server/Power/Pow3r/PowerState.cs | 5 ++ 5 files changed, 45 insertions(+), 45 deletions(-) diff --git a/Content.Server/Electrocution/Components/ElectrifiedComponent.cs b/Content.Server/Electrocution/Components/ElectrifiedComponent.cs index d551aa15410ca2..2f3def6e061faa 100644 --- a/Content.Server/Electrocution/Components/ElectrifiedComponent.cs +++ b/Content.Server/Electrocution/Components/ElectrifiedComponent.cs @@ -41,18 +41,6 @@ public sealed partial class ElectrifiedComponent : Component [DataField("lowVoltageNode")] public string? LowVoltageNode; - [DataField("highVoltageDamageMultiplier")] - public float HighVoltageDamageMultiplier = 3f; - - [DataField("highVoltageTimeMultiplier")] - public float HighVoltageTimeMultiplier = 1.5f; - - [DataField("mediumVoltageDamageMultiplier")] - public float MediumVoltageDamageMultiplier = 2f; - - [DataField("mediumVoltageTimeMultiplier")] - public float MediumVoltageTimeMultiplier = 1.25f; - [DataField("shockDamage")] public int ShockDamage = 20; diff --git a/Content.Server/Electrocution/Components/ElectrocutionComponent.cs b/Content.Server/Electrocution/Components/ElectrocutionComponent.cs index 2534544f6ce81e..9da78c9134f6ef 100644 --- a/Content.Server/Electrocution/Components/ElectrocutionComponent.cs +++ b/Content.Server/Electrocution/Components/ElectrocutionComponent.cs @@ -7,15 +7,18 @@ [Access(typeof(ElectrocutionSystem))] public sealed partial class ElectrocutionComponent : Component { - [DataField("timeLeft")] - public float TimeLeft; - [DataField("electrocuting")] public EntityUid Electrocuting; + [DataField("source")] + public EntityUid Source; + + [DataField("timeLeft")] + public float TimeLeft; + [DataField("accumDamage")] public float AccumulatedDamage; - [DataField("source")] - public EntityUid Source; + [DataField("baseDamage")] + public float BaseDamage = 20f; } diff --git a/Content.Server/Electrocution/ElectrocutionSystem.cs b/Content.Server/Electrocution/ElectrocutionSystem.cs index 48415c3953318b..6c962667404a4f 100644 --- a/Content.Server/Electrocution/ElectrocutionSystem.cs +++ b/Content.Server/Electrocution/ElectrocutionSystem.cs @@ -17,6 +17,7 @@ using Content.Shared.Inventory; using Content.Shared.Jittering; using Content.Shared.Maps; +using Content.Shared.Mobs; using Content.Shared.Popups; using Content.Shared.Pulling.Components; using Content.Shared.Speech.EntitySystems; @@ -61,7 +62,7 @@ public sealed class ElectrocutionSystem : SharedElectrocutionSystem private const string DamageType = "Shock"; // Yes, this is absurdly small for a reason. - private const float ElectrifiedDamagePerWatt = 0.0015f; + private const float ElectrifiedScalePerWatt = 1E-6f; private const float RecursiveDamageMultiplier = 0.75f; private const float RecursiveTimeMultiplier = 0.8f; @@ -102,7 +103,7 @@ private void UpdateElectrocutions(float frameTime) var timePassed = Math.Min(frameTime, electrocution.TimeLeft); electrocution.TimeLeft -= timePassed; - electrocution.AccumulatedDamage += consumer.ReceivedPower * ElectrifiedDamagePerWatt * timePassed; + electrocution.AccumulatedDamage += electrocution.BaseDamage * (consumer.ReceivedPower / consumer.DrawRate) * timePassed; if (!MathHelper.CloseTo(electrocution.TimeLeft, 0)) continue; @@ -117,7 +118,7 @@ private void UpdateElectrocutions(float frameTime) if (actual != null) { _adminLogger.Add(LogType.Electrocution, - $"{ToPrettyString(electrocution.Electrocuting):entity} received {actual.Total:damage} powered electrocution damage from {ToPrettyString(electrocution.Source):source}"); + $"{ToPrettyString(electrocution.Electrocuting):entity} received {actual.GetTotal():damage} powered electrocution damage from {ToPrettyString(electrocution.Source):source}"); } } QueueDel(uid); @@ -257,15 +258,17 @@ public bool TryDoElectrifiedAct(EntityUid uid, EntityUid targetUid, } var node = PoweredNode(uid, electrified, nodeContainer); - if (node == null) + if (node?.NodeGroup is not IBasePowerNet powerNet) return false; - var (damageMult, timeMult) = node.NodeGroupID switch - { - NodeGroupID.HVPower => (electrified.HighVoltageDamageMultiplier, electrified.HighVoltageTimeMultiplier), - NodeGroupID.MVPower => (electrified.MediumVoltageDamageMultiplier, electrified.MediumVoltageTimeMultiplier), - _ => (1f, 1f) - }; + var net = powerNet.NetworkNode; + var supp = net.LastCombinedSupply; + + if (supp <= 0f) + return false; + + // Initial damage scales off of the available supply on the principle that the victim has shorted the entire powernet through their body. + var damageScale = supp * ElectrifiedScalePerWatt; { var lastRet = true; @@ -276,8 +279,8 @@ public bool TryDoElectrifiedAct(EntityUid uid, EntityUid targetUid, entity, uid, node, - (int) (electrified.ShockDamage * MathF.Pow(RecursiveDamageMultiplier, depth) * damageMult), - TimeSpan.FromSeconds(electrified.ShockTime * MathF.Pow(RecursiveTimeMultiplier, depth) * timeMult), + (int) (electrified.ShockDamage * damageScale * MathF.Pow(RecursiveDamageMultiplier, depth)), + TimeSpan.FromSeconds(electrified.ShockTime * MathF.Min(1f + MathF.Log2(1f + damageScale), 3f) * MathF.Pow(RecursiveTimeMultiplier, depth)), true, electrified.SiemensCoefficient); } @@ -304,18 +307,18 @@ public bool TryDoElectrifiedAct(EntityUid uid, EntityUid targetUid, } } - /// - public override bool TryDoElectrocution( - EntityUid uid, EntityUid? sourceUid, int shockDamage, TimeSpan time, bool refresh, float siemensCoefficient = 1f, - StatusEffectsComponent? statusEffects = null, bool ignoreInsulation = false) - { - if (!DoCommonElectrocutionAttempt(uid, sourceUid, ref siemensCoefficient, ignoreInsulation) - || !DoCommonElectrocution(uid, sourceUid, shockDamage, time, refresh, siemensCoefficient, statusEffects)) - return false; + /// + public override bool TryDoElectrocution( + EntityUid uid, EntityUid? sourceUid, int shockDamage, TimeSpan time, bool refresh, float siemensCoefficient = 1f, + StatusEffectsComponent? statusEffects = null, bool ignoreInsulation = false) + { + if (!DoCommonElectrocutionAttempt(uid, sourceUid, ref siemensCoefficient, ignoreInsulation) + || !DoCommonElectrocution(uid, sourceUid, shockDamage, time, refresh, siemensCoefficient, statusEffects)) + return false; - RaiseLocalEvent(uid, new ElectrocutedEvent(uid, sourceUid, siemensCoefficient), true); - return true; - } + RaiseLocalEvent(uid, new ElectrocutedEvent(uid, sourceUid, siemensCoefficient), true); + return true; + } private bool TryDoElectrocutionPowered( EntityUid uid, @@ -331,12 +334,12 @@ private bool TryDoElectrocutionPowered( if (!DoCommonElectrocutionAttempt(uid, sourceUid, ref siemensCoefficient)) return false; + if (!DoCommonElectrocution(uid, sourceUid, shockDamage, time, refresh, siemensCoefficient, statusEffects)) + return false; + // Coefficient needs to be higher than this to do a powered electrocution! if (siemensCoefficient <= 0.5f) - return DoCommonElectrocution(uid, sourceUid, shockDamage, time, refresh, siemensCoefficient, statusEffects); - - if (!DoCommonElectrocution(uid, sourceUid, null, time, refresh, siemensCoefficient, statusEffects)) - return false; + return true; if (!Resolve(sourceUid, ref sourceTransform)) // This shouldn't really happen, but just in case... return true; @@ -422,7 +425,7 @@ private bool DoCommonElectrocution(EntityUid uid, EntityUid? sourceUid, if (actual != null) { _adminLogger.Add(LogType.Electrocution, - $"{ToPrettyString(uid):entity} received {actual.Total:damage} powered electrocution damage{(sourceUid != null ? " from " + ToPrettyString(sourceUid.Value) : ""):source}"); + $"{ToPrettyString(uid):entity} received {actual.GetTotal():damage} powered electrocution damage{(sourceUid != null ? " from " + ToPrettyString(sourceUid.Value) : ""):source}"); } } diff --git a/Content.Server/Power/Pow3r/BatteryRampPegSolver.cs b/Content.Server/Power/Pow3r/BatteryRampPegSolver.cs index e2399d8f779711..d0c0a297b47205 100644 --- a/Content.Server/Power/Pow3r/BatteryRampPegSolver.cs +++ b/Content.Server/Power/Pow3r/BatteryRampPegSolver.cs @@ -170,6 +170,7 @@ private void UpdateNetwork(Network network, PowerState state, float frameTime) } } + network.LastCombinedLoad = demand; network.LastCombinedSupply = totalSupply + totalBatterySupply; network.LastCombinedMaxSupply = totalMaxSupply + totalMaxBatterySupply; diff --git a/Content.Server/Power/Pow3r/PowerState.cs b/Content.Server/Power/Pow3r/PowerState.cs index 2b94af97b22c42..78ba97bb22acdc 100644 --- a/Content.Server/Power/Pow3r/PowerState.cs +++ b/Content.Server/Power/Pow3r/PowerState.cs @@ -488,6 +488,11 @@ public sealed class Network /// [ViewVariables] public List BatterySupplies = new(); + /// + /// The total load on the power network as of last tick. + /// + [ViewVariables] public float LastCombinedLoad = 0f; + /// /// Available supply, including both normal supplies and batteries. /// From 9c25db8b13723713375949e22d02516076b06e95 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Oct 2023 17:05:50 -0400 Subject: [PATCH 161/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c147cbdd60d3d2..ff8aa62cfe78f5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: deltanedas - changes: - - {message: Nanotrasen has designed the new Vim exosuit for all your beloved pets! - Research it alongside the HAMTR in the new "Critters Mechs" research technology, - type: Add} - id: 4523 - time: '2023-08-11T16:20:16.0000000+00:00' - author: tom-leys changes: - {message: 'After a flurry of memos, the Atmospheric Technician''s remote no longer @@ -2930,3 +2923,9 @@ Entries: - {message: Changed naming of the original taco to soft shell taco, type: Tweak} id: 5022 time: '2023-10-18T21:03:23.0000000+00:00' +- author: TemporalOroboros + changes: + - {message: Electric shocks now scale with the amount of power in the cables instead + of the type of cable., type: Tweak} + id: 5023 + time: '2023-10-18T21:04:47.0000000+00:00' From b419dbb3eb85f7fe542d275ff921460cbec79b94 Mon Sep 17 00:00:00 2001 From: Doru991 <75124791+Doru991@users.noreply.github.com> Date: Thu, 19 Oct 2023 00:15:17 +0300 Subject: [PATCH 162/245] Make gibbing drop items again (#21047) LGTM, Just a warning that this will probably get overriden when medical refactor gets merged since it refactors gibbing. --- Content.Server/Body/Systems/BodySystem.cs | 9 ++++++--- .../Explosion/EntitySystems/TriggerSystem.cs | 2 +- .../Body/Systems/SharedBodySystem.Body.cs | 15 +++++++++++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/Content.Server/Body/Systems/BodySystem.cs b/Content.Server/Body/Systems/BodySystem.cs index 2010537e34bf94..f2f848c488d7d9 100644 --- a/Content.Server/Body/Systems/BodySystem.cs +++ b/Content.Server/Body/Systems/BodySystem.cs @@ -111,7 +111,7 @@ protected override void RemovePart( _humanoidSystem.SetLayersVisibility(bodyUid, layers, false, true, humanoid); } - public override HashSet GibBody(EntityUid bodyId, bool gibOrgans = false, BodyComponent? body = null, bool deleteItems = false) + public override HashSet GibBody(EntityUid bodyId, bool gibOrgans = false, BodyComponent? body = null, bool deleteItems = false, bool deleteBrain = false) { if (!Resolve(bodyId, ref body, false)) return new HashSet(); @@ -123,7 +123,7 @@ public override HashSet GibBody(EntityUid bodyId, bool gibOrgans = fa if (xform.MapUid == null) return new HashSet(); - var gibs = base.GibBody(bodyId, gibOrgans, body, deleteItems); + var gibs = base.GibBody(bodyId, gibOrgans, body, deleteItems, deleteBrain); var coordinates = xform.Coordinates; var filter = Filter.Pvs(bodyId, entityManager: EntityManager); @@ -135,7 +135,10 @@ public override HashSet GibBody(EntityUid bodyId, bool gibOrgans = fa { if (deleteItems) { - QueueDel(entity); + if (!HasComp(entity) || deleteBrain) + { + QueueDel(entity); + } } else { diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs index 91b32af870818f..b57e9bd2987205 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs @@ -148,7 +148,7 @@ private void HandleGibTrigger(EntityUid uid, GibOnTriggerComponent component, Tr if (!TryComp(uid, out var xform)) return; - _body.GibBody(xform.ParentUid, deleteItems: component.DeleteItems); + _body.GibBody(xform.ParentUid, true, deleteItems: component.DeleteItems); args.Handled = true; } diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Body.cs b/Content.Shared/Body/Systems/SharedBodySystem.Body.cs index 8f16ca8efc4514..74a202386ec45a 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Body.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Body.cs @@ -5,6 +5,8 @@ using Content.Shared.Body.Part; using Content.Shared.Body.Prototypes; using Content.Shared.DragDrop; +using Content.Shared.Inventory; +using Content.Shared.Inventory.Events; using Robust.Shared.Containers; using Robust.Shared.Map; @@ -19,6 +21,8 @@ public partial class SharedBodySystem * - 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 void InitializeBody() { // Body here to handle root body parts. @@ -263,7 +267,7 @@ public IEnumerable GetBodyAllSlots(EntityUid bodyId, BodyComponent } public virtual HashSet GibBody(EntityUid bodyId, bool gibOrgans = false, - BodyComponent? body = null, bool deleteItems = false) + BodyComponent? body = null, bool deleteItems = false, bool deleteBrain = false) { var gibs = new HashSet(); @@ -287,7 +291,14 @@ public virtual HashSet GibBody(EntityUid bodyId, bool gibOrgans = fal gibs.Add(organ.Id); } } - + if(TryComp(bodyId, out var inventory)) + { + foreach (var item in _inventory.GetHandOrInventoryEntities(bodyId)) + { + SharedTransform.AttachToGridOrMap(item); + gibs.Add(item); + } + } return gibs; } } From 68ed9784357a26b70402cdb6b28add4a55950953 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Oct 2023 17:16:22 -0400 Subject: [PATCH 163/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ff8aa62cfe78f5..a5edc43947c1bb 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: tom-leys - changes: - - {message: 'After a flurry of memos, the Atmospheric Technician''s remote no longer - opens the Chief Engineer''s door. So I guess fires in that room are considered - "totally normal" by command. To compensate, the remotes are more widely available - in more stations. Thanks Wookyskill.', type: Tweak} - id: 4524 - time: '2023-08-11T22:18:40.0000000+00:00' - author: mirrorcult changes: - {message: Mobs with crit states that die will now perform a visible emote., type: Add} @@ -2929,3 +2921,9 @@ Entries: of the type of cable., type: Tweak} id: 5023 time: '2023-10-18T21:04:47.0000000+00:00' +- author: Doru991 + changes: + - {message: Being gibbed through normal means will no longer delete all items on + the body., type: Fix} + id: 5024 + time: '2023-10-18T21:15:17.0000000+00:00' From 83acaa5bf2b021e015cb96ef24c77c6495434b25 Mon Sep 17 00:00:00 2001 From: Velcroboy <107660393+IamVelcroboy@users.noreply.github.com> Date: Wed, 18 Oct 2023 22:43:52 -0500 Subject: [PATCH 164/245] Add security beacon (#21048) Co-authored-by: Jeff --- Resources/Prototypes/Entities/Markers/warp_point.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Resources/Prototypes/Entities/Markers/warp_point.yml b/Resources/Prototypes/Entities/Markers/warp_point.yml index 8e15994dc5fdf1..da109f6212bba1 100644 --- a/Resources/Prototypes/Entities/Markers/warp_point.yml +++ b/Resources/Prototypes/Entities/Markers/warp_point.yml @@ -109,6 +109,17 @@ - type: WarpPoint location: science +- type: entity + id: WarpPointBeaconSecurity + parent: WarpPointBeacon + name: warp point (security) + components: + - type: NavMapBeacon + text: security + color: "#DE3A3A" + - type: WarpPoint + location: security + - type: entity id: WarpPointBeaconService parent: WarpPointBeacon From 4ca9227294d9a185aeff355352fe13ad1d626f5e Mon Sep 17 00:00:00 2001 From: Vasilis Date: Thu, 19 Oct 2023 05:44:06 +0200 Subject: [PATCH 165/245] Add sufix to sci flash (#21095) * Add sufix to flash * It's 4 am please help --- Resources/Prototypes/Entities/Objects/Weapons/security.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index eafcc46815d686..92e7dbd4c1dff5 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -144,6 +144,7 @@ - type: entity name: flash parent: Flash + suffix: 2 charges id: SciFlash components: - type: LimitedCharges From 5703776232e34ea773ef67db772a446a6e930a55 Mon Sep 17 00:00:00 2001 From: KingFroozy <140668342+KingFroozy@users.noreply.github.com> Date: Thu, 19 Oct 2023 06:44:58 +0300 Subject: [PATCH 166/245] Atmos-tech's casual jumpsuit resprite (#20989) * Pixels go brrr * Update meta.json --- .../equipped-INNERCLOTHING-monkey.png | Bin 20591 -> 1266 bytes .../equipped-INNERCLOTHING.png | Bin 708 -> 638 bytes .../Jumpsuit/atmos_casual.rsi/icon.png | Bin 355 -> 299 bytes .../Jumpsuit/atmos_casual.rsi/inhand-left.png | Bin 408 -> 499 bytes .../atmos_casual.rsi/inhand-right.png | Bin 416 -> 512 bytes .../Jumpsuit/atmos_casual.rsi/meta.json | 4 ++-- 6 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/equipped-INNERCLOTHING-monkey.png index 95744ee74947feece8ba8747bfd4f14173628612..4d2bc04576b6a40951077d45a1cf0938f9b72344 100644 GIT binary patch delta 1247 zcmV<51R(qGpaJp;kR*Qrb5ch_0Itp)=>Px(tVu*cRCt{2nonpPRUF4ZPxP`Tg+R?h zBROc)AcUp$5Xd2!o5>|$JV*}~&t+%lB4MK-IoXnUnVsOtLx_}~l0r_^)2^T-C@Fif z5!*{?tQ%?&8wVl9Uk|f0`!`|UB)fs+ePEcG-_E}8Z{EE3dozFU_rPE<7z_r3;hdu4 zUg+i_GYr<2C&eo^)+e?97MBrg%fn6C3c$H}@{YFXzar6Z#RElB{g>j3=Vk+OH)RLL zoG0~rH)Z4a)#H482NLVA&epaL>mz#vH+oCN%_Fjha7!e#$sXe7Yc@B3a!$DU_WEwV zwzbob%gafeDy@HmOe?fx|$o%o+LD=-$>0fy_xaQe|_WEGQif^%EKvekC9Uurs6Vs4R zr*Vi^BzzuD=S(>Y6rpbw^oCL|Db#q`hdO*@XiHT^)21v zw0ZB+3S57xo;2+p-vc^O0pXJz8yn-J@t?@eHumv}X(%i-UfT)Aez^_fwHQ=dukE8i z*h#`Mx47Im4i}f}#^NsOiwMz{P(S`CP$dd_BcdGNQ;zSc^7hF^{n+}xr;T zAKDY3)dJjSl)@;l010eA)?d}pk=S4`7z_r(8A9)4sEg=+);6P5yj#=%7C2+XeicsgMB+Y$ z)8yQ@08;^{?Z9bs?khlRKAj4E$K?neB8t=$5wEl->gp}ZZe%&31(MM<<^q8kKS4L9$M2-cRq56A8TGNq7t zoBEt!r*Ts@GH)YO#~)_3x`5-i=IN_Vuj{m=!|K)sI0ib(p0vc$_ z2G<8f$M+O#i(17cdSah_+&=%Lo10I{Y3myd27|$1Fc{7PF954`X;CI9bRhr$002ov JPDHLkV1kxTZTbKJ literal 20591 zcmeI433L=i8h|@77ziRJ#Yz4uyDtf=9Sqg%t=i2qX*02Y=MBNdEAV`;tA?exhH%0#Icr*Nd-8$(2{ORNvGRB1D z6_Vpe(V1ALBMlT-hm<+N$g*KMeAz^v5#k3}qLNC@&_E$@v%1nko84tDO^)~2HN&!8 zt&i7vMBEdT<5T4Zb)z%0bZL?k=;%ZP%3}tj&d4O20Kfe1abhI{Pclp>siuzL4p~n+3 zeJCY?Z`E-WIc=V<3A`TIKq0WZT~H4Xsplw=+>)z6YNyH8%k4G{eUh2k+IGnP78ZtV z+T|Wp3=#N{hSYTBOm+Z$HgHKrP96*@hPTo?)ZM$>*+B7*3R6%#q#?IeY{!m#rCkW1 z)Y^`ke8sEg8B<fu&GP#~mzL%kp1OolR=XgTxb9EV2dgLp zN3jOdSvRl{7#xc@hGIkxPMb;Ej2j=oa5IJl81YI5*~pXxt2o(jgG4b3C72unGt)*h zMF-jlkPNl~C!)Z*Syfg7WdrO8yjhf-g{<3REoAe7-eJ#A(kqn#lC8tjoF>^MC+rrm zkV*Pb)giUgCB8_WAE|a8xS%s!0ZxLh@NOB3 zfnZId4CDrz773gnO|aLL0s7K2_*hJYEr}SQNs=dwobZc4V6aIP;F#t(jN=6nM_Cat zs6bO9$}k*;G6oLgDH8=uI33!Ux3=xv37nW$n|X3T%gi)q*j;WGPRxvSi`*Y8><`0; z1_3j%C`*wHii;G5aso%8JkJ0l$(W3|z<8ouTXkiQ`Aqv;ho(c%Gm@i40C*k+29uAX ziKl6lrx;*@BhEk&aKw818DQ*+hK4(>FvDSO0WyBJMxHnEJT0K2QKV6Uq-d0*AYk4E zLj+DzfHAWECPJ9GqNyQPIf6}Y8&EtEY$TY}wpNK?o?OJiI$c0sX_MpqOKofN;tfi^ z(BxUM%`7ixF&184zW^LdZEBTnwQ44L1*})PQyqdU)Z1^PqyX5jw*Gldd8FDm;*vyn z3F`!@`EX@Wvow3Hwp9x@A9|MD5J$M!;_Gt*$ukDPni!Oz;oLSFC=5060*xAAETJg_ zhZ_Z>-^~GD48BGAW&!}iGz6v)xSWQ_`874xZ{oMWuk?*CVD0%pu;~5W@mB=j&i}H< zOhyw%k|Kd}1Vf=ljDl;a09S1jz<49ci992U{`Wl4yZ=2VeMEboKVB^0yKn38m{+gf? z&`aKrN%uRu=j#rmzzCB%o)l4-;nOHBQZP%Wa3cycQG z_?8%75^~*66Dg86Z~}%JctJo3lblh)q+iZ0Y0^Leo@HQ$du>khY@cx$Mj12Fx&;qd zA%iEhvPiYfB~+Xac&)ZoYu~(o$@?wWz}7h7r|a`*`@IebGM>=#3lUTfvaJ!<-$;Os z;D-K#>-~)jr@x2!V(DBW-4SqN4KU z+40$|*Rip?ZqKRPrC*2Vf{!Hs4`Qk}`n27t`*;6W?(F@?7~V8(u$)}V$A&Pv{lZ2b zuAcDd+Z?bb@E@(HT?m8J+eA^Hb-{P4+V1I!y7NG9R|AZNYD>D_0~T*9ApEctu@+HP5xt@=1%W$a9inBry2VX@sm z23`(URWu*5Tiq7I*IH0@fR_CD!h5zp5DoPqI6_6AW4VS_~MM=Y@0+J%4;Zj(rC~3G*7qTy0ls3>W;R6tThG+YV`6(tRq3P_5GhD%|gqNL$c z0Z9?ja49TQlr&r_ASogmE`^1Pl7>qKBt=BSrLa&@(r~GOq=;y^6c#E<8ZH%(6cG)V z!a_w!!=(a}BBJ3^Sg0sn6<3tuWM?8sSsw(MIs-v2 zT!z0#5u^x1kYf`N#JmJS;-p1+TLvRYgfSyMHK%mn@v(IiyQRinTJ~0X*_qom%&v+Y zl+`cxrI?yI>nC^naK@e)kEd+h`}Ov+&dC|cg=@YYAJwoew(S1cnK`SeglDR@Oh32o z`^9gU#-yH^yk!60{nXC=?)%n?meGs;+<#lk;m1g+cnTK(KE_9+-P&hrOiHJ!h^+90 zuvy)!GotXV6Dn%=fU0*R!)v$C|KP~tPRQ4{B0KZP+_U}E<5B4+J3QVHmlXeFBd9>` z3SZpm<+R&w?-^0Owa1fpu&Yzu9oIa(07Rt{EB^H4<@?V}Tz$``lC$@{78l*8F??%y zR&IEY&YKQ3bT*X zFV2nl{?$v(&Bb*I-8+9Ib+EpCPu@n<@8*sj7FJeN zgf07d*_UgkP46|OY;9%DgIH5@kG0G4FMM{XUp+JD)(>_ah`7m?Sr-#k7WYN;oK)-6 zS$P+ye79{^hqxKTem>n|jH@4!Z|TukQ32j_ov+DSdnhlxYwgFo#_Xd%-@_n3EkAmE zO!e%q{%&hpI_jb9aVbg1zQ`_UxpUU|7c$?{$1-Mcl0`97_(~YL+b{E z`tVgvC(7$LA8tBz?!6a>B436XDmVX2IJ7%%*6`u-s9wk~Vt3!Bo{E&b%ByBBwg3SV^2meSA^HsY<8_n#lTc38qw z(F;DA9ohHhuqlbtp5X6YyJcR7No4@bSg>N`y4WdCK3}mZ+HrDauSVOzv0(|{U;gLD zr{5eJd%oePzAZC9UeQ0f`O<~gkLxys6^#o!F#elO883FuDIX>h(y1-OpXzgR`)juk zns-Od`z8Dv2P$I+eEOYpNo8g1mc}18ytQq|#fwQ{wI@#|Ce?LoZdqB}16eh+i*WSp zSme!~@ANn@|Gw%>q+suopDv{S@s-BvQKcmt!xl!Y&wG#A;+}Z!HD~SDbzP?(*|G59 zQa diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/equipped-INNERCLOTHING.png index 3c93a0aa7696e8220b6d571ec90d693026d3dcda..567435a374461b3346a26f931b99af3d5ad5ab59 100644 GIT binary patch delta 528 zcmX@Y`j2ITA*1(1C!hLHrxCV!Y-A~eqws^xBbhU%XtnPlyiRv`W8+Nxo9Y_CSG&r)9C{C2Mm8q6)Jyz z_B`n;=ge{Am8gPf=cQvTmmb@k-*~ltKcl9?ku6I&B-~i8Id>>-+4cLHrQ)&^oXk!a z-#2)zX9!Vx#C^$Fs~fikvhN=$x<2q3jyJcCDNHkKw}G z*bB@l4E;q{+g|i@W$mrw@9<@qmnajn@cZ0*3?Ap^EMlzT6fLlOdiv`m|8&-Zy4uJ0 z>#G-+dut?yJXpi^!?3EZM~mUWN#8I=qh`he8MOnt=NNjvs54i1Zn)RHHjY`Xt4Qj2 zK>a%3uM9E`^~?_Y?HB#NCGF6~apl3+gDOmJXA>^`P*8JLRVkEL?Bi{VXgH$g%)a5b z$J*)}3_Jd3GZ=D+HB4t%%^Gnq#;GT!ahLYxZS`kFT|^yX>)kGFFE!+_*#0c>LQJ{V zi(UEe`OW^;-}GF;C@-|V<|@PW8f{Cigh`TLzMcCU&$YtZ`?HquL5X_x1s7+kRo5tP znY;eKl;i%^$1QRRHqC{H*cL>snbh!`VeL+DA8UrgG8vNRx2^oAV8;yq}AGL zoA-ZHcQ2QggMgjU8U2xUNI3TRLNEo~^h0fc4M6=Wz;$x#YEb9gZnwi#V^I>gPP*!? z6pRkNdDRx`QFnbm_%H=O^!*xv{xEnHZ5;_p_+XG7(W3xnlDU3U0WYQ8~X|% z^_LpjLV&kN385q`J^`4BhkplPW|$E98WLG8K4tu+GL9qXPXUaq79X;H`lR4J03HeJ zqL2R8&j3E6GytM1;INO!*JIotG|qK+JMr(`_+|u)G|t5lNYPki0DMD~Isl$bVt*nF zkS8<%GQK82ehXE=n*YB5vJzC61Ni4N{L97oX@C!OoG>U=PRAt8pQ$$k^KL=^+C+ z0I={?#5EsVdmYfthm1OaJCAF;0)OV`34onNQ>Q%F?usx4UXnDX(t2>*yxSvShD#F+ zfNo=NrxUwar~LW*>46XdDhyMMiVL&*-lK(-!mv-Y-Er TBur9_00000NkvXXu0mjfs$Ba& diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/icon.png index 02e22ce0d5fb25a7f90edf6f33f5233c50ce019c..0ccbcfd86bd1ff4d1c691a4c3208450dd55bd658 100644 GIT binary patch delta 169 zcmV;a09OCw0;>X$F_A%Be~C#%K~y-6?a)CE10e_n(Ek;o>P$QLKW&*slcABc`<6sD zJO#w@A@F;^Xr&a-2{6!VsYX}^M6H@i0<1xrnl?eR1Q58v^BPQrh;%>Dxtw9bZx4S3 zmwH$e6d586e-i-Uz;gn;0lfto#1(9P?Du{2EdxCJ^KFO-&J~z~ALH?gY>Q?5!I$6( XaxXazgxi_a00000NkvXXu0mjfOS4Gm delta 223 zcmV<503iRX0^CpdhL#CDqeUl%Ov; z<^CC!4hzLRa=4XiL9`eQH!D1Xgra8lLMV@5LC~BKxQ!a%YoIwJf{HA(uQ2k1lYj*w z_?<@(;SRw)*dSq9r+IsC^RzCb(qRD;4&p|rSW*ISjXEkFUb5CIDmX`ez``Ye;lqQ_ Z+74O3Ij(Qy*zN!T002ovPDHLkV1gX%ToV8Q diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/inhand-left.png index 95489b82685eaeb7fdfb0450915380f8a2aa5408..a9f940b4d00691502b9970cfce756a14a87fe8a4 100644 GIT binary patch delta 484 zcmVrr8Gi-<0063Kaozv`00DDSM?wIu&K&6g00FH@L_t(|obB1YPQp+a z#_>PK$qOi}g9DqRlQ}nFm|VRBz}0vG#>B*ga04cW&1k~pNMiykYz(p(7Z|(&hU3s; zz!Z@3ik{^8Z9TM4o3|ef4~U3}h=_=Yh=@oowT5rs;j`BB=6`)(YTw~==Pj^fl2U8< z`d&5jr}|!X{UKQAEnzc&lq)lLasDIYiCDwj@wJ9`kWy>7DKU*xS|^9@KZW_pLBC}MVd?TfX}Tf+1scv#}=J&jv4 zckG|!Wigp#{R02;dP)>U6pKZibHs7XXf$Fx9&>!~!1?vh&t;vr%&tWUK;`5CS5EF! z{~25fTs7SutUms?^A<6CmoCp1|L0%buYVrvJP{EQ5nT}x5fKpyoKYKX+6!!rVS60r z08$ohba(?WZll8+fN^^q-T;i-%mhG`wJG^aH?QxJ#0H{3{ a5gVV5u@>j$32+$z0000NS%G}50G|-o zi4_b77BH+{z53?OoB!W2Ff^@W$eYZt^nXuJPe@2ec6K&HP-#^xP&LCQNgI&Kd?i7C z!T*r~gX@7iCx9}X1s;*b3=H*rhk>dNGak=hkpdLG>*?Yc65;-K>Orm+10I*)tta0_ z{r_LSeWBo#GY2MdH@vB%|9qI9aYgM(83#JZ@a&9W0VoN#aHH`g$BNU1+<#v5R^ z!|_1O@1m!V%}(*?N9@$vb8F3lGas6cIr$tqo5q^TR?&Rzm;Uv0yEUX49D78TICwg8 zOKpPOPli_L|bWm__H_R b_P(vm$Ml!AJYoa-l)=;0&t;txQ$iB}Ro13` diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/inhand-right.png index 53fde2ef924c0e8bca8d34b9712497a6db7ebad1..8ab7f969dc0c96d344e76a27df2cb08e0b0162a8 100644 GIT binary patch delta 497 zcmVC&~z<*fKn(FBrhNoH>u#%F`=NVZVq)RU3BORI9!J$ zC7PVM7|^@&{kBUk$Cv-bbNB;9L_|bHL_|bH1OV`SxqB(-Lx1L7H-hKOppR^}g1l#{ z#d`H_?yX+ETe#@aRmhuPfSCMARn+sPa1Tv*9Kyxc%WmaY$QHo!CE6VTKsW|4kTSUz zj^jD)jyYe!Zr&u@KuVpw*#dlj0m~5pV7>r?O${#>8w8sg=8JgFaum%oLB+h;0=zxf zFq;AZTFvOQntx0t5N-9vtS-oSAjG#U*EArOWkR;v}(>ou+}hq!ynfA$orll}yR{+~O#wF+#z_yNY3HoP%Z5?Axr4K>dI>tq`cg?nru`XqI nIFD@|V;!Y-j2&1a`fq*#Ug{R-zK2;x00000NkvXXu0mjf93g!S%qM6F?cx0*}aI28MdR!$4Js8IR|$NCApI^>lFziEw{A)tm3I0uQUN(3@?F z-}mSJ)U;UVQgC|Nr1ZwrFGk!VFAsiHRx@xs#G>YLMyMfr+R@&d>uwqyJh*Gk$1~CL z6W2DKecV+iEfll4^1!nWIhVWx3Y$Y2T>KYVd`{(`xmI0hZ^ws!zx#7!ziz76F^}0i znWe)nu1dzRBS-Mf3*jBl*Y=+fb97*0IW%Frol^9Dg_a-LtrOp;ZsXc_9BAW=11y~@ znS5R6Z`iTouHz1ez>B@pu7#L1b05>5b@0%vuDlOhmL>Y9ahZtTO#mu0pWzUEk@p|l mtS-BUP3wPDA1vI%=u~)2ze1vEG6Mq_1B0ilpUXO@geCy@!K|+U diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/meta.json index a83b7d7f366998..7cd0cba745cbd0 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/atmos_casual.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Edited from the atmos jumpsuit and grey jumpsuit by Flareguy for Space Station 14. In hand sprite scaled down by potato1234_x, monkey made by brainfood1183 (github)", + "copyright": "Sprited by KingFroozy (github) for space station 14", "size": { "x": 32, "y": 32 @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} From 3e32e757372f0cba3bb8de3ddb9e52b8f1c3ef41 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Oct 2023 23:46:02 -0400 Subject: [PATCH 167/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a5edc43947c1bb..ab9119b8c12e3c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,14 +1,4 @@ Entries: -- author: mirrorcult - changes: - - {message: Mobs with crit states that die will now perform a visible emote., type: Add} - - {message: 'Succumbing in crit is more accessible, as it''s also an action now', - type: Tweak} - - {message: 'You can now say your ''last words'' while in crit. This action will - let you whisper up to 30 characters, then kill you.', type: Add} - - {message: You can fake your own deathgasp emote using an action in crit., type: Add} - id: 4525 - time: '2023-08-12T05:56:34.0000000+00:00' - author: CrigCrag changes: - {message: Pickaxes are now 80 size and take more wood and steel to manufacture., @@ -2927,3 +2917,8 @@ Entries: the body., type: Fix} id: 5024 time: '2023-10-18T21:15:17.0000000+00:00' +- author: KingFroozy + changes: + - {message: Atmospheric technician's casual jumpsuit was resprited., type: Tweak} + id: 5025 + time: '2023-10-19T03:44:58.0000000+00:00' From e04d6a312c940803544adc4ee287fa633c1a3db8 Mon Sep 17 00:00:00 2001 From: Vasilis Date: Thu, 19 Oct 2023 05:48:55 +0200 Subject: [PATCH 168/245] Fixed players without headrevs ticked being picked anyway (#20895) * Fixy fix fix uwu merge pwease * admin message to inform them * oop --- Content.Server/Antag/AntagSelectionSystem.cs | 3 +-- .../Rules/Components/RevolutionaryRuleComponent.cs | 3 +++ .../GameTicking/Rules/RevolutionaryRuleSystem.cs | 9 +++++++-- .../game-ticking/game-presets/preset-revolutionary.ftl | 1 + 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs index f1ca1817569512..5e323f5ab8eb2d 100644 --- a/Content.Server/Antag/AntagSelectionSystem.cs +++ b/Content.Server/Antag/AntagSelectionSystem.cs @@ -116,14 +116,13 @@ public void EligiblePlayers(string antagPrototype, var antags = Math.Clamp(allPlayers.Count / antagsPerPlayer, 1, maxAntags); for (var antag = 0; antag < antags; antag++) { - IPlayerSession chosenPlayer; + IPlayerSession chosenPlayer = null!; if (prefList.Count == 0) { if (playerList.Count == 0) { break; } - chosenPlayer = _random.PickAndTake(playerList); } else { diff --git a/Content.Server/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs index f015f8bd573eb9..7d036c615ba68b 100644 --- a/Content.Server/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs @@ -29,6 +29,9 @@ public sealed partial class RevolutionaryRuleComponent : Component [DataField] public Dictionary HeadRevs = new(); + [DataField] + public ProtoId HeadRevPrototypeId = "HeadRev"; + [DataField] public ProtoId RevPrototypeId = "Rev"; diff --git a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs index d6195aaa540338..54b45f59e94093 100644 --- a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs @@ -142,9 +142,14 @@ private void OnPlayerJobAssigned(RulePlayerJobsAssignedEvent ev) var query = QueryActiveRules(); while (query.MoveNext(out _, out var comp, out _)) { - _antagSelection.EligiblePlayers(comp.RevPrototypeId, comp.MaxHeadRevs, comp.PlayersPerHeadRev, comp.HeadRevStartSound, + _antagSelection.EligiblePlayers(comp.HeadRevPrototypeId, comp.MaxHeadRevs, comp.PlayersPerHeadRev, comp.HeadRevStartSound, "head-rev-role-greeting", "#5e9cff", out var chosen); - GiveHeadRev(chosen, comp.RevPrototypeId, comp); + if (!chosen.Any()) + GiveHeadRev(chosen, comp.RevPrototypeId, comp); + else + { + _chatManager.SendAdminAnnouncement(Loc.GetString("rev-no-heads")); + } } } diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl index 8bcdc249775968..8958802161896a 100644 --- a/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl +++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl @@ -46,6 +46,7 @@ rev-description = Revolutionaries are among us. rev-not-enough-ready-players = Not enough players readied up for the game. There were {$readyPlayersCount} players readied up out of {$minimumPlayers} needed. Can't start a Revolution. rev-no-one-ready = No players readied up! Can't start a Revolution. +rev-no-heads = There were no Head Revolutionaries to be selected. Can't start a Revolution. rev-all-heads-dead = All the heads are dead, now finish up the rest of the crew! From 0a4c16ca21e266c24243119d944cbff8084829dd Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Thu, 19 Oct 2023 04:49:51 +0100 Subject: [PATCH 169/245] make meat sizzle when cooked (#20877) * make meat sizzle when cooked * fixy * better sound * vorbis ops * fade out --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- Resources/Audio/Effects/attributions.yml | 5 +++ Resources/Audio/Effects/sizzle.ogg | Bin 0 -> 59043 bytes .../Construction/Graphs/food/steak.yml | 30 ++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 Resources/Audio/Effects/sizzle.ogg diff --git a/Resources/Audio/Effects/attributions.yml b/Resources/Audio/Effects/attributions.yml index 556c4603a5a49b..7fd46a02417471 100644 --- a/Resources/Audio/Effects/attributions.yml +++ b/Resources/Audio/Effects/attributions.yml @@ -67,3 +67,8 @@ license: "CC-BY-4.0" copyright: "Taken from InspectorJ via freesound.org and mixed from stereo to mono." source: "https://freesound.org/people/InspectorJ/sounds/411642/" + +- files: ["sizzle.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Recorded by deltanedas for SS14" + source: "https://github.com/deltanedas" diff --git a/Resources/Audio/Effects/sizzle.ogg b/Resources/Audio/Effects/sizzle.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2c39b87490d0d21f36a0ba4c3640f2bfa95e84e2 GIT binary patch literal 59043 zcmafabzEFMv+!BmyGXGv?vxg%#ih8ryHko3hhoLuy;yOIyA*e)xVsgnxbrQ2p7*`? z{`KXTJ!djAnIw}*GReuxnVBg8Fu=dzlMv?TXE0sz6C;QiegS~@ zd(hu^JxK03=YPX<&SwhhNs}{;9Y}r_z^EsJV8{63FSs3$bG3op_VnQi` zipmm7%Dl!VpBxOVO^glf!BC`?!AB_fUpc(bB3?Y>EUclp{}jqZ3PqV%8`&6}*zrP} zWdv;&Gb`J3yGTD-82-~_5d1%Ha-k2ZAV2^BDDCm-MRV>ew*I!X8z;lK`K^Gjq5J4m|KPq1J7+)G*C=|pA#aTS#z(W6d zh;W)ise(vEej7~h(R{bwUqk#vIMu;W+;3997ee(ZzQvqSW=eK(d0zz1-w?kJ2HFsx zE~a{1KR9;UFrQ7PzDZwHp`a9B3HED3KQloW+<(fT6cms0MG)-6_Y)O_)&POC9>;G` zuz=8yo)d}0kCe^$B@hJwnOU?US+po%!b%jN4*^6$07#kdLvqzaa?L|_ zf+CRo0*YY(ZvcRU7Q^;IiAO9>cvM+srq*iVe?_eX6N10lp*jSQTbLFi1Tn!9ApGqI zXf?bsLzud}|D$AYd`XNfKSMMEb8xLuX`7giv64{Xl_XO_NyBT$@T0mr-J{>@|W+glA-Mt00)E{EYcy3@0gQ{ zVj2>%>W3`)!^R$Av@{|5;Iz<{yQ_00Ky4{y2)_|9Kb&kpfQmF2Q5D1K;6rLp;2GQlG+M&=F{G(3N=dJ+&xl_m(Cei=IKaf#ODg`WPd^5qq zKA|L{;%G9H;HXjOp*8ETbLFuFjn|F_>Io(q|0n*_bm;s<3N`kB8ba5DZ$HHOn=%gk zpJqZk6tKk+`)h9!m6THBl*8i;a%XIE*t`ljA`@&XV=r|S-dQPdm`t$iC~@ehs9LEd zSZUQdE+m>PTzRbguc(9gw~1H)z!gJ57eh`Lv++KHQbNGIj~);}cpi}<>$DLY?_($> zVyG-)%v=)+l2dk*)9HWwWdXp?EYBe%&n2YLC8WS5;&)Jtd2&KQVan@)yo1Kl{r_J? z{cGTq0N_9=W=AQeNGYNS1^#N+8|_)UkWOYw5j%##akhWjIEKv&Rj8W7Ka(f%mkYZHdL|D$r%Lv(zG8cNsJKuU7XlQo0B;s z%ekF1Geql?x&vl5O6pZ){(#n#Am|qd4^`4X5iabqj$=q6H%Z*fMa)35hQ>ut4SK0DM1vC?Y2>qdc{}uHTB!B||U(pm%==|dh zN9cB<6bCrBA%-EG`Kd-DoV00i1DrHzu~>Au&?MbXYTSs#c53Xn1TEA)+Cb2s5G|Xr z2mq!5R&60Nv1~FpR5I8iayU9O*dkN$Y{P8q3d$-nI5JbpDjK*lDhX6FtTHkIa8;&iO|&jO)Dj$*SY_s(lTfN7G^tZ-wUqc@Q7SXaDhnJ? zD!YP%j)IDb22`?>j>e3N+O!8$@|2Ry+)EXe1eLid6O{xZ<5B*&%SuRg533t*e5wt~uAa?sIBbX+puZ^uFzjmF%;i7ij$hkURIL!d#=2s)OWvWA-W2GMa@qoQz@FE?0(~#w7E6%lA(pU zgj$yDqG5u4sj)GfG`Vqq2}7LpX}-`Y6gtsqGSGFabJ9@xMo1!(<;F-#Q|01+ps$FJ zGlUXmH9s|UC)v~HcE?D5qRLg*lIE<%w~u%(oaS%gxiyN4mhtwAP*ElrlJrnfl9J5O zT0uo&2uVUkDM>j7Bufw;5mZ1q1wLNVFb@N~`pwk0&+*jzhhj||NaAcCq2;T*Rn0Ip6keIhq z<3gBsNOKgKw;_ItEIXueF^bQSB1&#fjH2cDI7P*eCD3sX^E~cfu~Fe7LWeCC5QPHh z+d>9Uc@)@G=A0P%&xFU=pd*XuF9tgLtOozVI65x<&VMP28ar`AymUv=skW2N;jKx@Wv>B`@LldH~pzw!94;}3T) z0Gz-f0+}$cRK?!Y5u!5utrgU9gZ8bUIGHaPx|HUE6(yl_Bfc%vEn)hOhC^711q4BD z6)76JM25#buanPEZXDKseY5}Z(*6$w4_wQ=2d?>NGwCYc3w$Sg4f2KxZNtw^vP0uS zrehD|MED*T2i2587&B6C&ZMSPyggV_qOfMxusGFMUQx27o6rbqQ`4Ho71Jr)P`kyo zEaserNLswWRO1+xHe9ZLIi{=Cv>fKWCiRoA zn9{UAd3Gj4nXeXoPoNH_b{OXlvENBMq5%Ln`@#akKH;pzlxZ&`5b&N`i-Zi2f(@Y^ zoC+O>&}KuqA<)H{mP+w24nqiu%J@IH+_gnsV*cfW`VlNUnb5pYoTB94yhzW` z?tgJ~&z|jHDjn5-p*{9002&xs#0*8;1IJ}AsG^LL7|W&T>$fk0n$7=B@{A$GW!rR znD5=HQr*yn9SjE`K~=ycAkPE~pkaXd5Cv%jY^$N(t&nkmI2!|8AYwd#$@~(aq^8}3 z5%BL8neT>oAXxQzd&C760{eiw)&Ugpwsz!qJbwac7FXfYvJ?^j?y2+v0J_iUg$HAf zK|}+35X1s|5yhe2Ff`NyZHPb{8H}(nTVV9}iuSR!KOiiqlk#tXgM<4ELG2KLgZpP= z*4F$F@p)tRjL)N6#_#|=2b)R~aw^IpVxm{CNNB0rn~BJY2_bZ}t!>0)BoHbpiuT&- zW(WjAN=5;pprU$3Li~)Rrz|CX1tF)VF7D_YtZJpEfQq25sIKeitS6?XXo3)tkr7c* z<(89BQBw7_Qc{pp62F2H3Wr5qLY9Wa&b{34IyS2 z;GElI>;28>IzsHiG2L&QEUYPvl6z-_De3$4O7yYw#S94IK5ry3LyO&gf}86O(DPln zXJu^91-pev*@>N)=IbAn*#bbT^{ADQf~?v9lE4BSUqx#KQ!WUauG!506U&JB6Ao64 zy`%H-#_MVuR?JC9Y=#|RX-;AYg2^r0Ua^0u4PY@6-@-jg0ZYC<@sol$ z^6{kf4-boov6>_DSEk=JynMk*ZN?8#KagaF@V>^Y&HgpA?tGrt7K?Uy{j}0LB=seM z!pgozf{g3wJvFNsGa@~cMU3q+U+>)S9NNdHNB`hsae*I9`umRyGFXc{ez7NQ@UWM9 z{vYRaBn&%jK|rx|q0IQDh9e-X_vkS9b|E=Qij(^y@1?GNIUmk(MIXN(o&3Y(PiOPVIm zxA+Y^SjEoGUrSR%tw(XRqIT%Ir3v`YeAx(QrJv|`xY{HAb1y&1Cat{cY!z#LdN>;) zUg_T)f;pGgPwj|2#a6Cz6pBaBbhGSTop>#c>xEL4+Dfl?xDD!aS`!(_@tHEwdB4f%e>Sh;vqmW@QK1C+wQ1|M>iroFi8MwEbx%X!P{( zyBXi2+{ON4oqf^53uF>ogagqzI)$GkQn>rIA;|kU&2P0jf_` zwE*GtA~4o>q+UI*QI`I8<-nSTKe4~UwW*1ZLkXsUHIPe;R-U58Z}V6pft9m&=XGsb zZ~0zm4_K%v&W>WMKey~xgN)}v*7cdQ*{h(faVZ&Ll@-(5Bl$=U<1oeU>Y??YRPRe{ zFXLHFaD7`6aOEY>n1W%Ez~gZ(hF9Y5qSo?VMfwi@TOaY*<;mWaKvG1YlqC0wd*O69Y5oz z^xR!vK3eX(LbCbf9{R$Nv&mo5O?L+#mKIjb_wco(xVkfHzd9Do5Gbh^{DsqLJfI2? zhF<)+WN@O?rAvRrsmx-=>k^+EX82`~34GW2*=%XEXMs9Qcs9hdfa}DDi#jB! zZusT|woL#;%l9YAu5eo%O>g|->Fr15X=fM`dk87eC0^k7-Z#)WTwUNKyE}gM&~@gd zTm4k#XtKkS1K1SO;H?g*3x!A0=XT24a+__T;p}B>V(=#%67PH547vXVzzyAnE-%^Z zGxSmIi>_bFXeuC2judKtEU!;@nq))i_p0=yo|53ENgd+3vVXb~J;Y?jb23p-1v=`=OMo@1xYIh52}SbSgO=)vBG+-;Vgr9Qm5mb~A=Nt|V)bE<_zHA)GpqleCM7X!eJT@IXiuHW}ID%-Dw z+})aJ`1GOCN{8}?b}cHg*lwwgoo2ob+>dg9bEW6`lOfEV@u!%(Wtn zH#QB!xnM+?6l(LY_Nw^c-8QXTZc+XF$Z1$V!(52NmN1yI5M@!k$#BYs8H4V-?7|R< zM2*Sox(_lsjE`of{{3ZMcpeCg!pvA^r;lq~ppMi94GrbomKDJS1t_^sZMUW=vbH0O7;*V^pIZ)%lZ34jiSnUV7ios(e^?Xe~Fl8PqRKHZ;9_IAGJ z59sx2te5@5(>0B=C=A4!7Ny$=iYFw7q)^=H^wSZ{Jg8{IU4Kb5rQ^&mh$Q*~o$<7{ zYWYW4r3~L#hAvbit?Ad;I2;sD4afY7A}{YZsB;jP=(`CvKQj!vF_Oe(-%m zvgkP95!kC=!dQWMQmLnsHQR}!`}HE`U1X6z*VU|DQW2SK(!39KM28*oVVGHO0zdstb<3Us^R(x zQTA0Ie8^d{b6~#ofK9PPftI?>aM*QN=L3b*(JniDr$UQ4hW2^s3vn4XG)V`;#Osf| zwc&({yaCaCMdPQr39||Z+$7nv@Ab5T`1&)MVsWrlV%WR!N=sIBf?j&AjhBVlJ;=Bx z&qObzU2WoqXke7S_`*fOFJ4@rx{20f`%CsG{^ty^d?$`QQTXaZ*Yp~1_T0&b732CjyrLOXuEXye)@UN_-FyJYGIt5pRphT>2=Csftw_= z4ZW@{r5S9uL3!LlTIQrb_l>_v3d*a_Wyd!Jmza-ufj^GSSUyElZ>k<)oi!04Iw}lG z80(F%t^S&-`jbPhImD0kvSpM?hJKWPs?+=a)YNN39jheW5X9R#*QZgvc277B?yuSI z!ve#;r(t>T$Yd2;vcO@V>(u6e&=swR)hr;L_5&>@eI+s5`3F{{k!gh{%yU(C$P{I!LY;TF$CmVEd5PVra+;r`;4-6Ftv)Kz zD!TWpaeDNYC)Cfd&r*Cei^QX>UOJwo9l|Zu%kY%hNzxDb^<2^j;D6 zpxxzf+qVNoiN})O_1xR(z69FBSOTXtGY4k!zU5Z;^Bb<&fd|s`%O+vTZ2jVAuG^eT zly1~^+~7sDW~B7{W)ro(f`ZLCF^w;EI)7|x*g1Du}(y-rQMl{Xl0i z8Vh|nOT;^Ai5ua*_FT^HIB5A(*q4 zx{QIYG1L(_7p8+3>)dGs_Op7ukT7!h^0U+tZ@aRs4r>1nj zrCd(=Wm|c^{k#9-0W>MBg4CvSX>0=f)p3y~uWR1>_i9l$fyU|mm97kYv9O})=HZuH zPT=dq=0Wp5w;hj$`>kL8hDj0BW3E9`(^(YKk93%H3p3B&N*FjpQr6SH!z!^IXp#+& z&j4Wp=b}l&<^49;QNQdK^#lL-Jh^}ZVi~Dhrk7bJG+zyPtg=qX@Mvb*_-IbRA zLT|{f=9J}>+?hu=2-p;b2+d=g!Kf$eer|c&_%^G}w~IoLA8f_-am)_kR&&fv6$Yyo z(!n*2O!;~f?MnAzXl5~%(GjO`KMV;Zu7xLwdlLm|$+T!P&Hv#w=RF6gM6#uNoP1yxgkxT*;{K*~m5u(gxhu*6RTag5=S0D)O|r z$6<}D@Sf6pujy%Q3~f3rM-t&V4*SaFVQ^wjUnoNLWV-5ubKJo6$Lv+hey^AC(f(8x zZiVmUs?R6qWu6Y%ZJEk}CgGZj_kTR>jRb$OEiu>THNY64on`7Ie-g4P{n&esF)36t zw)n}VSDX~kSDUk#@jY#xZp_#B{cVOGV|CDgtW?hx?h^bJ0SVgVnuQHW~>;P z6xC+H^qe9iJD2|QMe3k^rQpwb!MaV4&4X;{N5PJZBVbW<&RpO#?{L`5psohzYW@sm zasITnR>S$E2I@#zcl}YNE|mqS9QE~2VIC21ya4{~mjlQ#b8d>Ni$^<;mr>&ZU)J$% zQ}g{J$gO8cGFloLRdw~&x}~V)Zr(!AP)K+JaM(cRVR;3&RXIwk#U{m{$d<-U_~1FC zweFccBdbX{UM2ljV(2%)kagdDjp+m=+1GCM&v z@2O>ly#_;@Pq@VaJQLC?QTtOX{NwZxKtL{V#?t9@M3rFqE$m>9)gijS3OxxV&OBQ0 z7PF#ts51;`AZ_1|7XieZD&cliX_#`JGoSNUx^d&H^hDMT2&0P3$qqkP#u5X4DfZ^>%a*b!=9e= zE;tu{o_LeR7hJunf-8trrhhj3zs_hKY(4OQ>3{b)OlX%ldsV}}!}$FbBQAVGWqHcn z${9<7&Ytz780rFck%3Tlrlp*yJZqr5Y~TscYiSepZB?a@@RCJiuSsnfaLvN-(ICE~ zD6_B7na%Hv)YcyOr)#VI1;U>YVqR{0xHrpjAF3tNOltA7NDa{W1ZL)a(q6dRF&tg7 zVUcYa(ZhJnw;33>beUG`LhjK`R3)MeKPavsIk~WMx!wMdTpab?N9C^Ms(hy<)ojf?KJ|lS z#ZqL%vwb?XQW>L`tOLiLLK_)9ILBsZyuWDFf4fpNPAd~w&FwkN74)u?v)!Kpnk45^ zzFrV8&)@?f3f7r0hHVCgGK2!R$46zVVs! zCYi3v<_9jg7Xxo9>1TAQ?U^CKqIiL{_2tu?KJyYc(Sfkdnb=6Pf|~2OFrFv<57}~s z!HMO34uGo;t+@@l#9MrIo>_|g=#@X5Uyvrw=?%xLl2wo?;QBgjG_WZ;=V~*F%so?_ zs)y*aFsF%R=(_j$c+Xgj$jZpxrPgpcBSd>`^ z!E*2;LLdRle6;67-Q`abh?SgYiEZRc;Gao+oeg6jzDl{a2}FX3ZKs&ki;4oC&=rzR zc?JcRA5z^e`=><0C553X3}l4$x=rq4$G%rP!*;WC4edT-5-}y{%TZOIf7Bh@i{h$m z_#9u<7g=sJwa;dJ_2qpf6;T>8eUvF>x^a_6jL@Lg{=(+Ai`MKYl1oAfmG%7g*EVPi zg>RNJ4SA2$HF>r6r+lo$5LqxlI*~BmkERIz<#njloz!{xzK3_7#NNGwElsUNUY(C0~H{=D}^jW>0%>;3!vsG*N zq9gO)7^suxGSgHQ5DRu;!J-SekcGC{2)!i?#C$f&JX4x8ojcbCa&V>0_j_=L^0JVU zJ9(MCmD3@Kk3J1g%PKzf;s-4zkd8^tOojlY&nV|gR|cdzt!?<_M>JXrRf-XRLlj6r z)1k&jrCWqp*IEsM4<1Ka8GU(FbA8`RG%AJ=oAWl8{@_dHLR<8fVfm~$O_tV?S~Zrg z;aH{jBX9pM^Ypt_zi-y4;lbrz{bY(Zt11Mqb?nwom7wd_dOmkysMDv>PlHsc!8l1k zW~8uPQ$296Ozt+A<4|QL^SS9FH}{XXHyEarX|r{MsqNcOUEUQ&WN08o z$_C_sAOSd+Q-pgs;#o>RacY>a(}O+MQf<_Y=uUrzc>4+FKf9pQEvBRn`Pe6Cmt6FE z+b_7juUXT4)tmZ-ny}WaBq(g&6jbx;;{jNv;^y1b)WuGfM;0!kUH`A4oZNuTTrL8| zDPtX#u|~(OV=8U}tKd8v-G)y3>5jOfy4@o(vmLXHVL4;l(S5X`>8&h^T(chyV}12n zo%2<$%+RlS5p%Hh-Wy-)OGy#%$>hJ|GL%JXGk0GscKxvTWiZi?1>Sk5rCF{7d#>I* zZ^VR%$k1L)n1tsO?Wim#$xU_VncKm!Fb9`7F@GreVp8IVBD`rhV7T%fy=pd*{~`j zYYF`fS6#$sGpFvr)N6{%B7Z0acSH`r?cf1JLh5!31j|+da2>}oPm*qtWKZg-iP|&# zV-9aAh=%&+B#9mssH3$F97JIrHckBSrWabuSGaqfS zNP~6L&)9eBE|x38_2dE^tM%IVk~>(`f)N#KA$jBSa6`mA%|<`8tXEnd`ZdUlT`^4I zeoYvMXawM-NWLm02z1@ykE!T7zjG3FqsX{gE}W_%di2Uq^=$Kq+Lwt!?N;uf+>Z;6y+TOo%GtF zCx76EBs_2~)Fx!bkBy6Ty}|hh1+;(ss>r(2RIx-zM;WTVIZGVOWsSE2*JV=V-%eZC zKV|(OxG|%m^O*uRdvLXImuXBm@Vz!A9c9kH@&Uhk#_&0U#h+>BL4XVom1p>7J)h%e{S9D`71W6m&+xvqY@+1#qzj%=P< znj+pJ@Y%NhG8lGnIzwu!#FbCW>FtUUXBf1zIAaYIsBl`s)v^xU&=Z_G+)Mk7Wiw zyp^Rf5B6nVS(YOaMwN%v+$9D0x85&nlhBn5k_sMeFM?ESA;vH#uxpBiqDh{8V^WI! zuEg0qFPe4IIm7Ks;v1u%UAM!gs~Mub$9zfo{l(qOkVCyhaf8e3A?CXf)PS7F$a`{d zxXv&v^prvlCL4gUY_po`A=|(HU{y1pEGJ$@j@GD_dJqANI(3^L3Mrh-KIW^y$arZ&cft2ZVqjgt zzOWsAQ&Lef2#({B?5m)aRlmn}jaAyBx%OS zFlkJktJE8ZBiWn!>ME6eO^tk**o@z${x|r^VcS$|jia^>sUAyR<+h#ompD68P7g+5 z5G3bX%wV2K!9#;QROj<2|9l}j_RptDumX=`V+e0u7+(yvpqxxH#VTJTaH@z_6=1@$ z!-=EomqR~8f6so$-I24JP!|@Urpx0JjeJD}xQMRWNUK8K3eYubpFF9{@fpQuGZT;0 z1KQ!&Zp;>Vgn95k_@-TC4LR-(37Yw5!@QuoO;3>#1B`RK-#IvNv7;zCG4%_mc!e3TSmKV#oX<-l{>l=i~ZGkto&h0pBkI^FuFqz zFT^yG6}vvn)SwdS{?AaK07E#1%*CSX(WnW1&fXEcDb(fE3-L%HjE)0{*xhJUewf|y& zLp6^wXtOIO$6@8QIH}ulFemINJ35QS=Mudz`nwl>t^3r_8As8|?_uk$>ZvJ-SK3cT z1l9AqB`f>aM~P~x+b{aH$=57#pyxH}Zq)@VwIF$?_q_brjJpPGpDnIE^je*#M_bMh z?Y3UP+totg2v3N9edzh(QIxVjvjf>kvA{GQ#v21l_iUbcR)f; zL;AyFs;-2?U^ccnca4#Vf&JvGPUSWwvG(lRK1?OFmGfHh(o1yTq8D=yh}>*Fm|%Oe zD4;G1OmyZ0;DyF&hv>J1>_o{$DFSDQCZ%Onpe~_;FahkA_+B(HvFGBK=0|HSJ?E{y zAX;P!_!pZ38Vokr@B&ed-XCjJLhNY9PtT*ZoQ5S`7eK^|q8gMVnMJz6)Vs{{Qkpe) zd1D+wHW^9_O0;zu@A(XBa5qAhoS?@*1v#^nBm#z@q#LKVjEGz7@Oy@qUpCxTOKM^^ zro{XtHkwfgdmu3H>tVQR^F7WUXJmVLa8?GxXGey9DanWA;0M;$hO703?sFb#K0OV- zY0Q{Kv$WnA=CE&q<-6UTCoY$U;MduklpEJz;(A0qdMv&x8h3#ZB1>kQtbF!Jrj?Fq(52>h1l#aC&F!Xf@3ZsgV^qphcVrqjz))A9j}+wMnY-~Izric|x>fQ({v zPMxrWU7jyZ(tY@c%fKI9h_7H#i_{M#WCwL4GMvr)X1EzSXw?(e*xbP1VP$mPcM=m_G@o7 zET&i`m*05r2EJ;{v}6n}l!bkZRg(Td;3Ys}pMSOLPMR%YMLD1X6D{ zgjWj@82{eRas7Mc2Y9}n0}DMfX+DR2)bA!Iq9muPtA`L16O&Sq4K!Bwc8!p{A|j@Q zUdpMjZEUWrt!Zqgq9`RMA$vteL`+3n1|fnFQBhOWHOT*K}tkHN=rjs zRZm4lMnO4I)zmrC(>hY$P{#qiC(vWOBv3?x>mvJ@RiHPr-+!Fd+A!9D1ro}Wpy>C@ zSxxQNHg&s7c{_D;tKIvKU1ytS?v}2rYa&`@(b1%kn6z#JD@Vf_=FOXsu(Xu$&9G?p z=u0^VcFdBm>`(8PCkNTNCX&s`!@MZJIZltg6D>v%zHhrj7NEGOfmCq)A$oUg{dhQ^ zsM$%mqrYbn)ZZ0BF2>3B0RvEi(%1LjD>FY+oc_xGtuaQBhupy>FP@gJtJN< zm!)=$F&hB7l+;v74!{a%0;Liz81c{(|CCSN4eZfkVyD*B6U#X<$U_2!{5;=_QYpc0 zIr2p3KdT5n)i(r*KiTv%7(+h*6teSp*jSJz^<6fk-SmGFn-> zB=-E#oj;e2Awck;US6951=`VUsERWExp??#J?T?$I@hTVFT!`8ZvNx>fz`~v{ z^i}d#+i_$m@=`TUe{&Etl@?A@_tPGXLTOBneTyI;7KTf(z+prK&kv8y>g(EJikMIf z8OLYQ)9)J4#9q4F++}P$9lGZ#b?c*Ow5k*!iRoC^sh*$iCN~tWb z{A*q5{k3@QI8@~e{*)qY?99j>w3diE>fEzuw-8=96={7lvBlUd(BY-)cPn9gU@BLc zZu4Vs9;;fNNwUM-VImtrR#*yq;*h8=umWug1>*|h?|1_rH>jFx?BYJfz%}LB&~Lt* z#Dn(e955^Bq5{D5k~1f#%`CUfEx6)J{h_N}37iJb1+*o}-OE@(pKsDD%z{ehoS*XC z9~v-pFNUiE(KdxtEXZ%=xB%wjvI(}FndYrp`rXLSbGhZsJWsfr!s28+`>+BGpvd7* z2QMTiel&@Mc={2N9}GofcA?@f3OA*BmwH-HQ5uYx)UA}`JssSyeZ^L!FJCt}zux78 zWd!j2X!qvh7xq8aqR$)=E4J88vjxt)AQlFUI)0hFZ0J zd(D~{(O8`uGsa|{L5HlbWk)L$MdilG?S-6NK2oeDd?{nQNA3PBDb#lE9$`1HEtlL& zkxrAHX!f?MQG!|aa@fZ|yjmE>>t&sL-x-zCONYQ}BAiG8h+m&g9kxkrsYYTJlr>;Q zfWLg%H5|>OZQj^^_r)v`j)Jjf>50eliR&HC()cylDSWy1qA0H|4?&vH z4+|x1Fu;~^VMC0cDUuk+7T&x4DFXz91#{(fhev%II_KzDfxwXNo*uie*LCB* zN`-VJ&SDdrV)}i(mO}lDRo7S~1Z@=4$oP}A=A@^;^Km@us>2cK_^@agHWekJl(YBP=&ca_}FBsY;9|PYWD_; z_X&(o#?{>eyuf+XuY8TzWF!|;ZM-=GVuwxab_6DevrY=na#*t};b3HYO_8uFDVO(U z`3qTIc>AAoTi>OX2koth&oZ)Li16Eq0?=C($`ILYI8CIy^6jC8p2gQJmRwbd(mzaL zk=mRy14_27PTw6Ijh^?zF>Dh8&`)|{S4Hkq`AM!}OJ-a*tat)f+wxLKdmWcfdTdbq-bA%Ki*65GB_ZhxqBml!vR0}r)1!A$s+U0!6+ot#qO%d z%ANDh71NFuSr05kdW}~*J%l``1ee4osSgh%v5GMQxyCw?@|%K$*&reNMHuq0rFlo` zF}3Mmx&i3b7kT_W7LFYLrpLxt1DXqk7~DHs0qL`~m_rg}&Z&tErnuLj059Z6Dj%?T zK97`!3cXSdY&fB)ONm5GZ}0mJb9A~0=ALhOBG?P5w>Ct0O;N7oU>_zmk@V=GOLVGV zR=^LXX0w#f*h%Qq8KM^^K9692@tO3QmUkp$8GWavk@TW)-hW-IZ#Gy?tkKdKj^h?&ZbloCs3OCKDWt8Bl3rTHc;CXO-Q|a;Iyb9(k9o!y8 zvt8@9X`zNWmsP)1X}mok08@WV+jZ|{uCv=-dH8WroHpRvh^(!{9aD}Cb@0{aZ9ld) zC(8CXGEmHRiR~>G3BzYtAT53Q;Vprj(rbd0GChP^@d;HXPzr`;S(g1z@BWMeSFn@J zXeS6*n&fRD^Zt?}pfkknyKm5%)H6z{_sd?PWZAs|k1dS6RMmG(I5}!{w%C>A4OjA= zi_n|uxg52tv=%vxH8ZkTJ6-Ym#KBqsj2354{P@97tb`r*}%!h3hkI zKg>WT-F(}$vCal+!+xxTOw!p2%8!RMjeZio4AEV%x3PwaB5>lKAAu7@$EWf7kjNTe z6F#JlHDP$RZME`XtWc6qNxd%$wx)`8oN44#NK+;n3SJqF&?4F)KMrUnxrT1CKorw) zXFg)0EE>DX9@mD7S(LY5F^ew*?P%EGe`N z6~zHcP1g^{LZ^lIKu);vaOJDqp3aEz#zA~OgaS;C#$<$E#qOhEkY^nlfGU_d1+VtP zd6+l*F4M8t%AB$}N6aWr7{zssGGfBre!f*PxN@1Y^nu}(X#HBXvW}i;%aULPjm-Lb z&B7SD$jcw5x^oFwM--$fh~)&yGYX<1f$YHpvjIP1%B^U}=6CZD9w%YcUNMXyR&koa zn?_6B&gimoR3%~JI$sRXWo`O&kK`^jTo{9W_U?HIyD@lv9S@WgT+?6@kLvAUfaHqq zVL$P*CHzqdNgdHFeDM)>xo)#L$WfGLDv{3M!ofqlDlW7HRvgs9Cc#?0DGn>}?y=6L z6(XmBbT%^4^jOxhiX;PX)rePA4_|uup`>-C9KxYJ9;0ZK$!}(3fdES1Yi~deHA;bQ zz&IsSs<&tkh8M!fKIHrqQ>Y%MK{c}NaDi5;QyNf0(J%e=3N+<0NIH0ena3>4 znOL&>RaXm!*%oHw_a7G$$!IaB(>=LaDH3AypV==cR1~e}88S|K3U)(-pvxL%6Pk~} zslitzKJ-@~M@RgAk?s=YHATJjNl96;GY>W5wWcSVV?^jbbcj!q;a?6*q)+=kq3dLF z^g);czt_er@p~42nH&C0t>5?3Yg1`2u?9D5?l`A+=Pnyvn+hDRXLUj?^+REwP$l3* zZ-&t9UxX9Y-4%42yl7?%)~sJ-m(;AO-K6^=ffD9SK0>{$_|fKmzTCgd{@S|)qaS>2 zdh~m=nLab2^`P{fd8V}NaXNR{2FleCcj+lJ)L6oRb$BhrtJ@HV6v(%RgI^VZTS7HO z`_~WhIybo$Z*4?1TCF-c%tr5K7KqrIciqS!+oH#5np*iXp+#?7!Q5hU0CFmxn^JzWxxxJkoj0E#+;@7c(F7dc`%_8)ui| z6#HG4?Jc@3?p5wi^r6F1Zt&M>E_D7Dc=>jB+F16mF8uj75yvpf9mE`6ar19-3jxo% zA)yz^JnGW>3{fo;BRYG-Mk3@dys5qkP|LT! zack|-;>I<6L;b#d`?EfBlEz&^jaM)O)orY?^-mfI@YZQtRQgkVVV_AtNOvs>D@JW2 z>rR-9@5L}CO=cHY?goA5&SKjam<`;(2DNcN&4_^N8CWBFvVM1x^6ri%BY~3hm4HT0 z++)q9bySrYb(2T!LR2il%5Sr=V|D`5z;YehS5#U3JiJZdD(fBoJB!@|D>i}A^tY0< z@*73xoXe*)rbo$niyn;4m3uh`5ig)4ahxrLde_-A1ig~mj^yGb_YnboA$Eu-WwC9N z<4$~(secy>xx+6@HpEK@dMlluCbY({DA-Jz)Q&{j70U)C-JZqQyZJqzY+bzXstfm8 zYarK!8jlTAW$oofHFcPBL;%`4^3zFR69JiDc<#U5m^7G)(adXfx{P;Y{kd|Ka)=y}!}@%?cOwPs0~R!k z&~Q>cBa?c5k`Br@3Y$hyT**|gXuNw8)QhYHIPxF}OkjR6@#-$$p;ww`*jYNQk)KoC zIw^>Sl@d_~OsJSTh>@4EJPLVqiS$DI8I_WmuWk5JlcV69hY}6TcT}P6zHLzFx{CCa zWL@*j9o+5*wwVYNR!W-m-ySrsFAicQOa!tq2_49aU-YWh_eYp}Q894E2x>eeBq}PpcC)s|$gQiq^+6@HFybIl)op zhmIb(y$^)`KMGDnAlv22k%;3nWv2D^vD+1?7j24R#8NWj%tb1Z42JLa3TCI zU$O%*V7A`av>Lu)Rp89o@HSFHFvfKid9JcF8s@YXjV>Sz{x@l8>yFKYr#-=duPQGh`h;ZliX=!{U#^cMUd-rt&=9bzy?13 ze$w8%++ixn>p+*YYd@&4mSg%crx=NmlUI4!$D6_Z74M(>T@<)E$!cD1{3X?w@YMo} zxoO)Ppy*t%P z{OFOSWiUgM+GWOfKomcy<kmH(?yG5>k8N^1zWeEQ{}OuFbk2)3 zz$TSapiQsrc;Y72Yx(}wy;4N6)%$T^u??3{w!KA-1{Lgf^8biB$KcAkZjGMUwr$%^ z$F|LmZFbT@$9B@O)3I&awr$_@R()0X@APOZJ?oNGK|R-?)AKVeYVG@F|_6^Po& z12zV<&34P(4nfhzYketKpDC!T{Jj!Ze_kTRSgl=^Q;pVYGlNa^*|TTeAm#l7=vnC^ z(0SoCkHdN4$JDpyU-Qy)ZuXZ)X7&pI~72==W$4#~c+oxjcOQMRKCVIMLkX^4znJx;+ zTtyLdaqH6D^UEp3INsMjV@4rsyesBzt8_k8r7eE$WcTNIc4GYTczR#xmPT2(19Teibl+Ots8*H_r*l@OGcq)pbU7BwoZsxJGu~2tFXLf@;>ZOArq*&M=ji|5%-VPu4KyeLX$QcLf{> zt{&L7QUjGL5IfDYs~NLNM_ekGd^Kv}4?wn6PbS}x5|dbO=?7Nw%A!5*k0FTNlW<(} zCQ^`tk(5Mn&8iVw@^~NY0L7?c6nD+pPj#h>Pi`1G)RF)(&0kRh;IlLmS(9A3gy0bd zvb?d5%Uj>gWsO=m?*ekKk5cSv8pE0i5}5F^>c7ArIMS^`pW&u2RFkEXRo~V-6)UbC z80G)ygY_1;6k`}fE zXs>f_@3LNTsoY%>yY2lWH>&vFv-M_az1l?0f7Vg4Zt-0ZSVXmd7I+^$zs4-uBLtPF zX+Rp}g^`%|+z|L}2m3*pF7{VPeAwwovh%EZy2?)6oU@~3Q} z!lO_x+fNxaYAK<820{%NK>-1T1OH+j{?wT36)EU$YSC=jS~LZJKjKbd>$FN4=ipqj zPM(5mb23Mh4$V)IuA zI=FlhX^G$BYT^V>m@?XB6aE*0ur942Ob0bCdl*yrCw7U{_ZVg`iW-E{chPkPMQ|Xj zr6M+eQ{@5(vi58o2xl*THsCyad`HekX12)&-hR;l_!Dnx+yUUg*1@c07dNy$Rwwk_ za2k^beL}p0C=H&D4g>*UuOmnJNh7%)*$`Id=Z=Q-AW8x~Q=$r5sHGRfvk$|@;1Qr0 zo#bSUh!sdY`jB~zqzgEZQ4N=`{QScmND)EjKFKcRVBb9xY(nV~*>O#}-7_Thtq0K| z(U^(yKDml%k>2Wa0y8+2o0tT|xpIAFeYy0`IX4~IQ zFqSUIlnY!M@Q`pvis6~CcV%y{;{F=@&%5oYF%;_vrG+E0X!_YRI(OX;tI;_*t8!CJ zH2uR#l4Ujs{ACu-1_Pe-vol`J1IDbnK+m(avDg22mQ++(^}UMWd_bigrJQuKU=yAU z+XOF!-@rR(`t(*n9HL^ReI9;wH-t!0ZeD_j1z*(0ufIy8xWcg4O@v3%546xoWaQqF z;$XUYA3@l0D=-jXpy)3-#EHRh?srNN1`aS-A&-I{6;8wIwQvcy@MwVUe3;?<`5^+E zx-u!Se6TV-Pnd8`mD9Nd>an3{o{$xg0dAWc6s9F4s?TM7R5QB_R|+q-YUNN1X?PWd zdA(>tmqpk=aZ&atrnvG~XIyO~Cu^&~#e%6u@AmQe+_>{9kgk8kd@!z=4~(_xVz_Pi zH2iCUn03ciy;E9M2SNgpmDSb6RU1qR=|;AX;3@7rE$j&nnrR0H2$2Fv0l7#62iM=9 zL;w~LV2RmK7!FHWCDRK3inLyvzG_z~Cc#wl7o`dW*ND2!3YNy#Hs0w<&{>pS!I@7< z&V~sMkmjC&)U)*L^=iAO+$Shsx_OyS=aPEo^UxMdQFly7;0BU^L1`>7Da{)+@+!p* z;FO_cLYXyFq6ZZp?o)?~AU%KC(qj0&?zp4`YlvCbxDLfbu~(}0)j}SUgvW!qlk5<( z?os)|@#;ir4=KP+9W7D;PCC8h#)dGc>@n%1c+{>t$pw+$)Et@RY5<*wb^&<-?1o&Z=P)?tR}Lf zPZ+Ii%Pvq>aeXtkDS_u1jl3b31`&B=dQAgE8(g3c4Y>qS7n;Q!x_)5cGHbYn>R&(gCMa3V!PL zviS>&5AtFR0tWgma#UQF0>fvCZThRr;OW$%x*k8VcEP_@Fq=NmdnTjL1%NK^zzTCk zasDHp%(&v7+w=@Pc4Z+=!I?o*$9r`KF3r&GsxSda{z?jyZ8QBC$s6e|VmO_IIPTJt znqISQFs^VU&Y_}$_*y?^*9HMzdO(8baY#?giVd7$Ikyda_swJXvrO_$t$D8My4v*S7%o~YNSL9Z$oid zva%?5*ln@x2gH z8f!{1cvYpySfSedSZ68+G1NOK9><*10Qu7`A(~WT!`A+HZSF=CISFhN7Z1S{d-Gqe z-+mdM2!hgs`evy(EhZjE*iat|aA<9X?RYS9D>h4oU+jhilb*=Nj6;#sRFaH1*-eD*X~GzNPRRnc)`ZUpZ}yhYC3zfo zIr8rR*6`{|cwBSEWF9$H3FMeNqyEK|yT_uhFWgPh6x$Jf$X~BbmmO~Y{vnX$4n0Lh z=d!jN6HInH5>2!Wmy}2*Ex&iNlzQjuy)E0e7byrG144T95wz2`@=Pq3qy$n_xr~`5 z)XuTwUXIcR5P2JiAjV5M8}GjK=ljSqJ=j_yX4`S-&kah0FxSRjtW<%73>x*2X(B$P z;Op_j246-*0(I0Rnf7$ke39f{?_TIh4FG{gzW4_J=G|NKd)n`?8-JKAX@nd z>E;PrZy&zrBqIiBO*8_8ExRfB8Z4rl3}BSV8;B=~8E<6a2K(lsCRSURNTN^By+j zSOeLfzu)BI)_wJCe`MQm3sFakheb$?55Iw~C`D5I0n)Q@0;}$LK^!a$>k3c+Q)Ei9?0Q@QOa z6Gu=N_KHOspQr%kpS_NJHxrPIxe9;L*i$PtjJ$mp-urDE8v`y9;M5um@Hvq;<4k0- zqWfHy@b-}P;W(Nf+k5I9>>Bjad)$6 zYrF^4dK`(FxM1?B>(z?lCG4=>^W$eC8?7(N4u1ci>E+3F76<%`pSr@X*VGA1!i<+h79mtr4A9vBHJy;Ur! zM@Akiy_*Dz!!t)jnle~VW;}|uu?kL3Q5F~-+o+xq@T9ohsQ%J}^t1B7eYM$ zHD<)+9z&NSw_>jQ_TCa#?C2ud-)z6X?>iy|s|I~uaUZP3wge-4qLK20c#47pJV600 z;UECui7tSP%sa%etgeU0a}RHwnrw6pT#`NAiRauRhG446d2ad>5!MOA5Q3tcVc)SB zeO>kCS~8*Z&R}1UU@5UXRKsb3-zlqYgG5Z9Xy(UhGJysL{aW7+y>waTGlIx0QbAFC zfJjNg)&AD8p$@L7#i#zA8MZ^9Xr?Ikn@$|&nmOlR*KN6&io);3b5P2En%l#5uzpa0 zYGzdGok6%tI!Mxv7Sq7Cm$pY#A(21^rd%vhM}mHg0dV3Vx{kCZh#r(&svAf>ONIG2 zP~a<-6!HUV4&wcd9gpQK`#!D}F_=8!cQGpj0!_;u7oUmW^GJb=@2QPS_t;!2(uh7S z$vceis6*|y!OMEd(^>WLAx@^iI=+ViXn(F=tWK=~TFc*Fb5gn;Z+E;F7lZ=iqmWE) zumgt&b_~v%DpKr6dM@iB7I_U+n(TO)fW*V|;?W}&5cm634(eo2}_utftrX9cp}5FIi$3eI4~f!$?=K2nxx(N5(;RuRdeFJf_(5PsP6+2d`R~ zL-8fOGER;z_5O{jB;yGdx%9&D=A7s9<9|u3`7sGR>3*CD9&k)9uW7Xo+pkc7nTrIa zik2)22FfDYnl-mqh2RG@mnuEFpX&o6eOuWub(0~O$s61*PA>ZqX4vA8^f;@XGtN&r zUky`J_+W(16QC&QAh|uC3TUWo1Y|J=&LFyp{jTvk%u%_#L?g*RX;mIGe%xYRf`iw&QInE8zExu9si+-pOKb5dP}u_sw*%9Ek0Tm? zI6wC;5M86(&0<~i_EoK4HA6jk*7sPDpVgyPIx4yYK2e%G!GAmQj0+B!^KJSz@z?Ub z;QQ4Qq%=kvhZc?JgrmK(-uHxO7M(N^`K`s?PL(Gf^sPl8{=O_R0RgMmHKErBaAmGxCR#_$iq#)3{x@|l|t@c6nLjIW#?@e7^jgJmQqp4tPLlgCB8!#bP z{lQ@v0Af&bVMOPIVd8#KSe+OYpnhPN%P(uvkV0^e2+i-tX&+`qE1-zcD=*8zeTYnB zf2zz8Yjk*OGAu&rgdwXF$0rV9JiRdm0%mp?=l9Z;0}pd`9KK8v%oeLPO>uHS?nDc^ z;<}7vEWzuhS134i;CeG1I|?J{9OxRL<7X?p@Y>qM8N|P=^42`dqjB+|gK-Cb2I&Tn`^&mg)w?bBGuc_-0qrm!rg7c{IqLbw&L z_be=7v#@~4(|X@~7A7@hk@v4+E-5ST)dwK`N1c`w;i6(|z#WyiIf^ z?Z^2rGInLh0DJ+!R{ljcL-hM1xy%A{oCcUz zwTynWMH`@f$>c&$AAHA9wAG4aI66;Jjmd{pp(gC3YE|Ydv}>>*#Iko(d_I$LK@L6Q zE^tOj({9dB(>W|=p}lw0X7lzP8)lqDz)sujtbrLpfqW;;=mVMti}R~>N8~)2$uCJp z3&wBDjS#n(ns7Tusy?qwWdDNPYCSar-C_2Q2i2{ZU&$s$B==dde|2{(Rj`73 zE&rc5SU9)^r{jm-Lk7elc|rv|MGzq^k9Xr8#4GM2%eT>;R0qGx`vtDj7*BLY7u8Nk zP{J+Niq3i%&X8&{9R&NFDQ(|k>h`(~S=cr2>q$)=yg^8rLjMAw7FiW%QFhn$za8n+ zpSa6>(=XxedoO*L_SVEk&i%hHHb4Sm`~AWM$ia6QAlf=X74reY4|c?$8&WhDfe)L8 zxMs}reS%X*`HY}|=m4w{g@*j(U!60T<9hFi;sKxw;-w28g1$o5fq{H#iWwA40?C;H zcw}{qz^>~*`Xce`hOrd}lo7W}C*CRjlQNV@jka#I_h=FWXqTu(#*8Dm->ptVeg{*eV&o`vmk8 zC?%4x?~ErVp~YmM>@0hzcz6H}8<}Skxzg_z-^Us#x2aSIy`1#^hb2*tf+3B|mGrSH z2ednQiFmau`-I-Hl*(_E4F&fwgnes7yiz;Y`wkv9tfR1rMALn_ApqyQC4(6vZ~M>a zCXVPin)M}euXbdG0Z3zRZatPMyxnYsXB1fe_^VRQ;}yuvVmD<)rZ3c@_qv#qZ9>Ar zp24)YCr%r!O!;RzDdCZ?$IwI2|Jp?eP+t(%g_$PAuskYM$q8%~G7;#pge7?<-Q#YF zpMnb)#y`dVmTvVczz=tah)D`p)v-`a^`iEY)s4RTG})7V5L$6H(@)Q%8J^1_&e`R7 zLJ@K7#T=Ak(70ro)W=^;XXt}HTzUdRv#~B5#8497JLI%uCBf44UElS0tw-dhxttS! z&wLAtKfR~1)Hd@Nz^toH(sci*SGUy_CDkE$tgVLtRshI z#KlfSJR(5}Te-7E7YUSGU6!3hh7VUvPdW)tnw5oOskDrFPpyugs>+Krhre7gMC#hG zB}@zDdEnnP|kI(XG!t;uCbuT&p~P3*k0AF2dQeCK+Dy@C_ezn={?b%t=iJ zb1YcP8;C_N{@}nXu9O{kZGNLxE zAJ|@~b^ZyZ?v+bLYvnO*xAZz4LKTA(K20yC?58j6v6H)Q_^No2(OFMMXkK68Pqx3h z;{^Nwfnadv9Em{22LtEB-zGx2xR^zTJ>#_qv`|p!Eyc3zdD*f6D2L)`TigxpB2j{I z%HPX-wEnxw)6g1y)5WuLw|^G7Eim!_WT;dC2UuCLCQI%@-lok~(gvf4X^p*)|lw@Fs~4SHu1C z#_Q@mo5akIZoa6L@I;IhJ5NYR4bs4$DqVGEcoK2~@o98&2Ey-5!HoHUWWv0RvK*!* zHFoeobalq>V0^6tr5dAevSOgE^}Xg(AjjH|ofh+hLr*Gl-_9Z>lK_iEZMB$IqFfB+ zdb!Pf!{Y7RfYA9XQVWj;J{H>Zx2|ZP;^8>*79s$Pe;4gg-c#bmHxL+Kz#*e#0VZ;^ z{UKqmohd=`^@}&pShvnY$o|MFZG+-z;-LU8gga1-xj*?q`hJ+jCu(hN)T&+nbn3XE zSQP$Rsw07ev_?=M2uKliU2>OK_1OUF?BH-81%jC-M>OP8evK5?j!9$Hu) za=Vt_!X>A=rHH-jnw4?hzRVt`asa%WHavGgI(wIPQwKMZG}Wp!Zk-9674EU+M*zZ4 zNf8O)V+R{{mqTaU7gLq^-;wHVLiWjTGcm5!)ct=^DG|{iN1EVNg%fKNb&`cMOFEJ0 z()>mP%7_oaxp_w;c@sRckQP6V*x?*ns++B;Kc8%y=iutyCEy>aVPiz@IGff$m)5k` z%DKlXnKig9(tY}iXodv{+U>TS?vhAnRVhy}4c7p0oPRRvhQ10gxe{5!YB=Oi^35wi zb6Ohoz<+|e4QAguoK;3&iN{v5NzlTOQlED{9q=KUCi-ooiW}yBh;cX95#qk`r1G=J z@OUhG*I}NamfRjm_RYP`7(i}$_Au;}mwHyZGV%p1m0Dy^x9}TyFnkq4AE>bJ_$m4X z6wAg7GF7S`@@y?9*)ZE!%!41T39+168WNRpyRyEMgVn`-*Sz`QNkkSVutyzifyI`G z&Ma^~WCd|9)REc>)Ik^kix5CsAYt7LS`K`HDz+P}6y}4KicExvbZ9`;{!beo@Av*N zEe=$-OqEb8m`c+$42K4KbmK8r%3Nf55Dxr|AgimloZ|yd{i^#`OguaqM4m_QM|Ef+ zGjv$i=xdl{8St#z{OkOr%>g_^qkk3;c!SGU2CovXobZBKY?dhf22>2p; zQ*7s&s04qPtF{rZpGZKc9^{(&R2-9`cSxr|f@3c=)In?TRUgg6)tZh3rN zRn03eUvL}2gV!blAkKOYS_ZU8vin`}u9>%a$#DYt)p;9aqAq&spCpg@P0l5) zdjoqBUc_@yBBX-2ueag6On*IdhV3l`X-Dfg(*_)YdUq35$ z4z;rPAY4u*)tCx!(?R||_?3E3(8hRAdHkG4%n{3&!!|1Z{gz?WYBY6SsmlF%yaQcALw4Wm9}O z>WHAFacBo)Udbrb2#9I&QWPpc874jeJsb>3N^A}{D}H|S2pu_Dpog?tD$N2Plr_gE z;(Zx8nCH7XMp9vGkZ4Enc?@x_L%J0a`N}Vv|9~t1U zeypd^A7h$ZB$i;#KAh6hZK5=~h-?$5o1}r1rg(wU`n(@o&F#y^v zqJ(Kvo7rc{K8DR2ox?eE#hmj%P)`R29Rj%r)zRWlzEEUgDfw4y5nS+rRaUbyG%!5q z4LVsq03vRtz?WE86i}og(59x7KFuutUB05tVq9wv3d|-N26l}vxl2#n4!KS3`}pD= zSIxdH-I08L7FIi0b~3$40S+eYIXGSlv$Lf2O<$_)UcUww?V}=c9rq7yO5e=>9C~2$ z%?VY4e5j1rJKet@Lc$ppre($IMB)BW>lbi)bYX_F$tnFwTv6K1-VC@9)iQxG>K>#N zp$36zpWK##frM|dJvkCDtnlfbGM;{WR{(4X14PPTrUki>SKe}63bOvqm6SK!a_ZXU z8`_Eg_soh0g~K#~H`$*G7#QU>Q&m(w_Qh2OfJN{J;WFxJl-DwFI==4;s_~VXdu5l)iRL(B2gBF>Io*hW_+H*DS~5h7huwlpY=s{_`$ZC{S}8;6YXRVZ z2Pti?DYK{IUl5q5?87Nu_T3p6DcXOox=;+>$JKouK`n#uU#q&U08pgGzX=bBV%6CF z46GNbJSUBe!L$oNb)ErU*C#si#gW0-xtoq&qfW)(%ElVO4~I?Q$U;xX?xho&_+@a$ zzC+zDy2b#%mq+=>xU91pTpirSz?!!8%r})ZflBATu|I;xMtRJ2z`_U8^CLCWnA{Lz z%c-NU^g<-ahE(Gq-E5{iqLRPKaeR!X4w~!R>6ENite<~7#rlMy6{5y#+cW^Tc>)@q zj4SWgHDyId`F=F(CaSg-IBML`k7D5W+^d1>5;dwsu{zokr@tSYzLx#C=+KPP;?yE= z2+^aPK+s=~?E-ZW>k>t?i#>K3<*2XQB=#2hSw1(~7OK!`u5pu7R&z3$Cw=K60D+2d zw%VLin(@x@lKHpmdn1q0cGpoO)kzDFv>i5mrq0T z;E!rnAr#lC6Svhrc|ipK8v(+K)c3VLk6EzABsF<}0XpP<(B8zMzbmF1UNUs0rhSN? zG#xF|xf$L>yq*ZXTzum<0k^hv2gnzzcovOa(_0eb>DPu9PM z1=GMiA<+$-pO6*&su|$q(YDOLx%}FUqt3By(kk%dnxE&5FZt`tfB9w8ZEiP?EH9u~ z#F$G5?``!gt4&v$&LR3QoC6N_ zV8Q%wW9N4e&w&;lFVOGm91Qc*UUwrTb?8g*EVD$ApNh!h(cwC~?5@LBmG)LxUqp7E z!(0N63KA_dV$W6(?c&9C{aYXA=!BcUg_SaYV5Y$Y+izZ+@exyi*WLZ;^s?3D4z+O>x&)^7n;xLpKT3>MGrjdK z^h)Q$aiAWPaU@8G=!E!TvYd#|3qAq#|B1GbbAFEPnG-%Ah}~RbqgIF<`ebVZ;T$^4j!Zj1tAuEZJmwXOPEI1$UTB= z4Ie-t*au>HwhhNi@Ey(Y*#CwOS~wwa4726NB5sd#4AA%IRbVauAZ+hsiLd6VkO zLB^Nr@WGqlcmJy{3;%k62cEZ;@=F4taxOZs5p4h$=ky5mmVHD{JKCu!dX5j`z-U>5 z%3a?TttK`P+5CnDIyCScJf-azKOzkJl{7P_H%A-(o#gHlld!_FGEL^jxK0em0iPK@ z8tfQy4R)JnyL44-r0q&99&qv-6IVh6>}M&Vb5TjnD9V;!z@7W&9S2EPSJOM?Z1S<& zj5C6ieb~K~p}QbnK{FKT`XiD)_qMX)B9>>TKTG7o>ffXXY5#hu}Ewrqq`e)4_@hI$kF6S$F zfSJXZER|T~S1QW4PrKXvcAM4v1NG`MKE__XU@=02)Mx7OlFIWov5suXQdsv{;`w=> zG95BvXoEciIo<`5zku9P{EsvHyRHSQ$gl{P_aBz`&VebKS@$^nyVcKmOD4EPQxGw8Vh;+&O^&Z_cBrfABgt#uquntylhnGy*+0xYki~m z1e-^^8YD&7=gHQl^>$xznozxxfd7G7G$O3XeK5W!8=Y(Co$+7}jzqsw-tR^#Z-48( zx{qVr0N<_8>8fnB4Qdz1NWR19?e=p>g5vvtXGPu?DlUUMNi>Z&W$v#ontu~95Q*95 zby@TJjJLc$oHNHwMe{K?e*MVIWX~06xB{PuGLeo$J*6UltTuo+sTtnrb*(rGX=U!K zqrQDzVdCB~Jk7$MW%cG`V|@}YpeK;U8|6B>9tn)+EMk;+TN<`YS^LX80lw98kO?`? zU=#x3pwQ_qxE{0QYJh_S%D!smJzIc@PVLpbhOGMTckH%aeK6RjPBT00?aARaE34^F zcV>R*J(v+CH;GS7GU>-$R2#a-oWfA|A{=J1{2oh7_RA&U zFjG*?Ej@d>xrS@<_I5TYI~xKW*!}=uPM}nDh-J4m80(5rB%}cB0+a}1Pz0sBEyf)K z_{XmjQ5z^*aLZFQ?=Ms~3TocD7Yh@+-ddZ^v+!9kFX0t*Sz`N+WaioCA38&W=sw8c zcB?B+55GLnxV|6aVW%chdr}F41t}Cc;+MaI6LP=y%znF<0(FO0rRV4VIB@3aEc*}n z#1nU|MZLKl=0geVg|@;~M;6ZmA)~MpwNQSwJItn(TI0Y}k{ARrlwiw2bVwo5uUWrd&nq{GI>AbPb{{hYoqM#fsE;s$E5R(OJt#4#9Om};%?pNyfu zzf3{J)?{WE8`0)Xt*7-}GbzlJ&x>vOZ3zgAYV}c4$0VWGxwT)ypZeFe*PyvJN5Omn zX))b1n5islcOQp@20&&7K8Cmm%3u4gsfzibSEn-#+1p(zFt4~l_j8G7f&j|$`*wDm zYAxTtd9{fRUQv#qNqoWwp~qgvmE-l10;O$@Z&smFiMWa8Cj4LB=BOaY*4Kk<@;L^` z#*Jc8ikFj|tN0sSB!fFi4RD{9|L`CNP2}`yF`C{|pskyy$2lLC=rX)$IQE01mX5YI zMkvY+&##TpoL7XbLG$Mt8}3SO1P_pVnHUq+5gk!BB?xGcuI7dyun&+suqT1XKnHcEDivN-wFR!v~ zzvid#vdWKY%-DU$=+uw4`l4~3UfafO7b)<)PJo%-bp5adcG1nv`WfH=G8s@B#U z0Q?U?MO+M7MqR$R*F`Su`7+^1ur46us|r~3!(dYt3h_W7k2&=#Axtv$!1qLZPf7{B zUMD$L;BEkw)mheWnjT=}6IO(1YdM$Cyk4n6>-<9pdrs@Xbb^Wu=!I=7OgR4Vd3ZJ9 z30UaJh-$@dm$A!?-hZNG$h)T9_bdQQgrpdh8?uYEz2 z8LHw@-|+g)NVT{8S&r5>qKsr9`WbPmeYdlO15`<^68-5)mz$Fzj>qxHAAf*p@E>}p zU&y(8 z=n~^Q@raHlXSuu~e@HMze%u>*IlL%V>w)obd#DgJ2%6%eO1kxC4>+x}_oi+Sz}0G`_@_{h9Lq(r)ssjVvn?gJwbC2xx|sP|v4 zCrt=}FP$yU-S!TwA9B_2gdnwK3pEic5DGE}D2bxWhO%(4^?ldb64&JpNTmuFqLs1#>KW-Q!Uu(d=uT z*YM^EC%JzjNvv+FoXcAJj%&~juo~`cl(R70tY$E|&G^t`izV>V5n)kc6cDbfv3;Zf zlEMdI$ghA8@c*WY(8A1pCRwjhB=h0OD7@_Cc_rCnD=P#G4XcfrZmnzxmg=l_cL}p9 zro49>Ffs_;VMyCG;~y~G2_!l0$F1}8vjgrQgIS`T=niX9O8n`%F_1C_?~>|yLs`3F zNBh#=%Z8ojJ!Y0Bo*g&^+<2FvVyr2-4!%j@J0=*iFjO0fjMRuk{{&bH$_h|M*NX@z}sXUDSN6v4Q9pzS$2D4K=+Ur63wgQ#!dceVZzhulEi&dVQHgBzSs7<~IkFwRNl!h7 zTUX|)OE@cHOX8O{tzyuf;F8c&x-}J4FB}~3x-a7J{+Cj{U{h?+^`2iM^y+i31}G0C z3Q2$5uwW^E1?fw{PvX|oY19k#f^57=2cIzld|?54qDjupc->J>uX`Hydqi%$33jMF zDS)G=(gC&KR2Tr0`v86WvEzY&n`F|jH;f1=g$YJjV9-LNPhxi%OIWFIHH!T-y5;W{ z$45q2!LNTsLA2l^dUCn`>QA7cp1-tBu&%FWUcO&D*SjK6V1Q;Aro!Fxd3|IfE(?|o z)&TJ&Obye;q-Uq;XbNz#YNTSi60q?5C?4g*j^D>)-2xYv&`wRAv~_U!V))?Oj}PGC z0)!MGw{P$|YzY@EePbiZ8$g;uN}Hd5bvqj%VK#j5@foPW_1&7ogy1Z96=eBkedpkd z0K_6X&hksD;pvSBZrCgd1SeXbA`G z?_9lSH}Nj{Ntju@%MJyYOvCTTkCKD>m14>+yGqcx%AZshKjBIZ`?w7Owl+R>uMrgE zx#YTN_*P&ro`_85eio@Oum{NGBO68;^Ok6<{^_s#=~8^V*%#XrFI5S`1$5Si6@;xQ z*1Di?TQ)F%R$-y!kvoy8Vxu>tQ=?ll$s{b)*Q^J?f(Kv`zUVF)2-e|NL}C2S#I>ELg`iv z;l9@MI@Sxm8qxn}C}fIH6pH$S!7Nf(^c3%7(7B$cTPOw3gP_1NiHLXzNS<{^@jhLw z2|3^{C~cBiVu$+#qdYBbqrjWXzcZB@#Jn0YTk|10+q4pMb_sPT?|_1f^}9o=c}TB< zi4%qvh6mipMupfLiu?oZKmq&@PrChoJPEjg4ww(k1(HfcWaI-oxB9R&eHi}yCrC-k< z5Kp_3n>*ixSEi;{h%wg4ZN$&4MQ#RX>(jj>>2*ldMR%nSW{7x$8BSxkHl}5;`3G4R zGlYNGZKijiIWOvEM23>LVzLBuHMqde>b~gWH^dK~_B1EyGDTmqno6(33lXc{#^ozn zHWs(!M3cFS{yBy{M1)QVvsLnZzLRzBJE#E6IGZWPiLfa^{71;)qkje_F|l$HXM0tL z8bp|0r2s}I)DqG+;xM&FF7uik(w`c+Mwb=7l6JzZ$&y^1&>aE7I~_uo(hUJY{dV$v zAMj%54uYT=W=9J;q*uFG3;U2G2V3IiAT4D9xJEGKpqXs;C}%C?EE#$G#bNODy-*2F zinO~qM|eD1H1*S{;|&H;2bgT3WNi4mHYo0pJz%fkNuuoQ*E%tDyA>MErd+a8V`m1e zbcUUYazs)29sprC=>INsArPpoPV1hWIAwzMHiN)|Lnm?~aUS4ke(KMqkPn}?;4n2E z`{2vYd|fyFQbX}QyzhNtuL-A@IqR%#?=xNUKF?NS{o6V4EA&phLX_U=8^lDInj6I6 zP~K7Lzz7Wn-|FM19UeGmH?eZD?uI|^+>(urA0Hv$MM&hzoexx_?m)T_sfSBNcHGw+ za#8dgAl`xx>E^6CbN44=`FOki^|1c7mNjE#7Cdl~ZQgAexN(|ID*jBcRiJLA8B5;h zDyQcC`mbcVQ}Ao+^BvK$s6L0*8~ffx8_7}sQ})Le8&HvZTV0&51D_-JD29)Wu2?1# zBRx5I`IrTth(%=18m3(1HDt`Ti1_FbQxb0K=mc9QaB<6gQd~AWMfc9A7BmrW7>16? z&@ysv=tTu*9DI2Nc!JC)?${)G`lbVbz=Ll&g-#QB0?!d}J32bCL=<*F0H{y^D%gKI zad3X4?{G0Il|9t@*B?z;+0><(i0bAjvT+;pzwyF8VmKF8AZj3xSDuFnVfZ3A)6A>d z1B{oxU$b75Im4b;hgz|Y^)j%sl}5o2)Kmz=bVaw#GjZY{&dao770>y+W=ok^%lAJ~ zj^1wfl{3sU_UemEWYJAvBXmS%5QTLoHqmk9+qb`rA9K5j?|yu6_+NP`uZbVu zA9E$01?jg5%2@2iAnx%Vc)t+o7jY|lmKc?BtBDC#V&3?o*?(si8R@L(QfCU0&xp20 z4bW)@IDcRfMCKK^SwK$kM7wN@fLE@Ei%invAsnZiIXRI=hmRiez{EC2ihc{7qd1tC-RzC zMe9Hf$s;OW@Hy&(_yDk9P^@eNf&04Yq}qWxXACoc4&C7TOZLC+KSqOYA0mQXihhSE zNNBnrhSTO3fNFnO+B~Cz?>hZ6yf7Z|4`l&u@dWKTz8ncV38Qup1Hz)f`VAr)xsQAp zqa~VqCTOx%0vXVm$R_a!2!uE+)^^iHP;umezGjtJ>(HK3v%9y`#%;pTYe^kP`lx_N zJL;BW?6F(d3I#K-dtD+HbI^xAV6m3VSuVW(6^ z(?mwECYSsZhmIx9NA4f)MFbyLTF_CtF){X$Lx`Tg_Q>3{lj(P^W4*T-=Nv(k;ovp~ zsm0GKh7EdimMSd#5^HFJ(4nG<(?q^Z0lB%2lVOxDPY zgPHmP0}4EcxO@d456+C=+vL3?OkwNK)>+)RjFyfIk?_yYyY)$ZRRW8xd85$|yq0(v zB@BnFsbX^l=>(&ypweUd_w$lzE#gK&fdf;deLEB|^nOoG&son9Bh(sWAVtUrypWET zvT_(O6dHhdZ#JYQ*Cv$jw@{q4i4Ahu{B4hJy38a_2&E(FVqTCM$S>KQP)#Oz=o$lP zAQyNOC0>9G0mzAm1_Y2CDTcpdy?_DyTgamztsN@eeWdQ%EvIndkKPG~WdKnIBRNqW zkPAxp>HPxqh6?T)X32xPXxnqJUYz^|3{9i_-3Sf+A?Xo-zK>N|>|VFW%E}WreEj8# zX-;oj5x!Et@FeD0Esgm^LEt8wnz~af3u9biObgxa{=o&h-+SCMPqfL2x!>=(PQDkQ z@wT>pS?cmJcpbmZQ=oZ1@FM8f0geCKi`-qyls)a>Jq3Hmk-zBp_ZCrl9`X2k0$7$H zI=*s61wpa(( zTSE5rQmyXGBZ^CKCXsYaGjQz&RT0mHS`k*L>-{sd?f#;xM3x~h_9y>tPRhIf^5nDT zW+9qej?b=~zoscxl*!M1yWw7oL+Nw;t5fbZN03suBJ1ncH~zLlZ)O@BEB^ommA#oY z!RqxX*5ps1GawijYbDW=kWxdr? zsg2cZ?Q26r{V%Yb7chmBH!aW|xir5lA1RL!Y!D@>LDm|obO1#4RQm1!yCsWoak}fH z7m07_Q71w$of8Z&`Jf$W3*u?f`0Ydq;A$pTwiU9YlL@LoWk;<52=Zcv0~|asD}OQd zgQW1C!Ntw!^!dc_idRKZN0ry+IACx>7QVn`dqt~31ql0g1UGEAv1*!dL`|4Q3Y;{p zp5eUYv#HOxj`D9jV%iUJRDc5e_wg0B&|qRMSuq8|>m$2wL0KF$^BCi-cgjq|M!yvf;3(F=clWZdakn6^nAgbPd05UTEX8Av%QdcrXTQM zncdOho75Z%Z7E~o%z&*zrFQ^uFZtE%zt)?VS%=#||(RvsTfG1J;f0RaE^< zYFY^e0KKZ-8U8<(&MGR7F3Q5yxVyW1Ab40G@@+kfiXWr`ZsMU{Y|1)-*xb%an@q>;9+0bw)d396ufJ!;J z+Vpp_PN^Jjc>kTHwbgXDT4`n1mhp9AuJzt6^A~~s3>Go9tCE>7nO@Clq6_24$u%4V zdsoh6I@T7|o+3gQF9m4#hIa6bgae-#7lp>_vO_$J+U;Qc|DZKR8TG7TJJjj>ddwh_ z_@n9VZ~RDRL?dfTCWrE;1n2F*L4ggH#+r7}pre53g@bRVZ$qiZ%e`Mt=R;tGFLG%Z z#fkDBldo9(w4NTH?VP}8cgmV~n6p~cn@gxwpq<`La7%x7jL5c7SPh+-yZ*8SMeT;w z+Tl31s6%wt=TFQG;jglKu|Ogc%t5smUnMplwkLP%E$$BgT=bO()Bvo*5dPnQaC#0oHe*w5auO@#q zpyDL(AkAJP3lL5~{SOq0Lg6i-WDi-r?%{1F_Eg7kbzd%lqDN7>rv8YzE4*ZBx8#;d zYC7 z454YcSo9d-SV&rWD7>+fbC%$X(d5h$zkOLFV$r{Y;#wsnj?GYsS|MD^3euniydu1o zsGHzJDUJ3)Mly4zP0s0Lwrzj5*|YJ{pn`|L0w_c_8GpqlwtucAP8RC5&DN8ZvQnj1 z#wk6oRlf*zh{pyML>s6qa!7MRhmm_yE&7cj0Iq@Am~AlEoIM|)%Js*~h&Xf#G0=Kr z9RPg`NnH`MHx6ZMyMpF3ngmVw`{3vA@eq^*X>JI)Kz!t-Ax)9W*~XIZF^SkXzmYz9Qzqq-?ihr6%`EnT0x zzZn`xZhheF2ZMXcju2YgN?y@(D#9Rqa$G6PvbD6~TIPrH>Ln-;||$R_<3J$T|$N*jj{1-w0m zm^i%yKE*MGXks zrk4#}lPb-VXfiYO2-vsj9kKrmPZY7kB7d(SA$x(q{6$W`pr=_al=mSEXVsnu0$h_( zK|fknZI6BBW`*^Hlp`2mz(22t?WHS`1;lt&uj?2MkFwm8a8n57g383-d(Kam(M1iy0Q2Os{2~H z(`Z@a&0gV^ejC13VLKlVC=)+?SawUkLr)0t8bXD9gy;XzV7G+NRwxiPASnGL#7Z_E z-l7$6u3AJgej~p+@ZId6{mRn)0nc9tSYIM6FW?9!5&_dc+N6*&$baeiD}{UhdI@5V zR+H625w`6x>s9%h6vep(J|ULs%%rN6!2;Qu`cT4jeYy{{&E-;xcmTLa8C42MTjZ=t zxT*wzG$w$}*m#LPP&ksOoS2nt!cr0kNS&me}=wk+OOVg&~v8yN!JmH@;N6zhmq&#s4Wb)9?h- z`!yUX!yw4YK&^IK4K@71ZO=ktG7;hxnHCnFU@`BKa=NUBZ88XLxq;N$qg;(of;?X^ zmpE3k7PKl%|7q1=dP5#ZBZP#zK>zj9w|phD7y{+PXi7SfkO}{k6&zf$$*cBcxRLAJPVwr`iB*RC2h~vOCmg$SNDpEfKM*;+@LNw5`)nmim3~c-pkg~1d$hVMUT@}{k z;2*hEXhwu+ddQSyd}=fyAH zVs?(o{87MpqywP)=_Y!cNrU)<-9^~uq$kN3fd!B&iay3@D-K$kN z@K;4TsqKJLyZ#>*W10{QmQ1|}gdi>Q=~C-kM2ELb>zvh|9G6*Wy?O9X;QqCAK|2!> zP}8vLZya-i5;4wJSLye>CGeYmcqSgR^#-q37ShCQnhA-rNNUaK%&p0CCZ4s@TjA%% zb-#IC9oz_1F0GnfUhH9Q7yIfnzDDdsni6SF^}|&v^JUhE(Zt`Lzsn4N|6oZ+sC{nz zC_=p=ln`e|CnCj;wZ6bQ&Zonw@EybdLWVzNOqohPbr#j4OL6IKst-b0be-C-zR=k+=b-380$kr2k?Yxua|Fg07 z8O**i{hFuiVxS zI9WJ~OlPW9-=~2>k|szapi}_?pd$DI}5Mxc@Qq_k%r z@tzQ+4t`KD$Zg@oRxEpQWk$y>0@jO$m-qga2Jf)^cc6Fw_jat`cLR& zR_E%&?bgS}5f^~OUQqGbap#ULHtgg&q?2bFV zCx|X+xO4rF*%d}mTL*{#N?PXSFiTrqmL3cMWDf2IAS!>oK}{mpY#)$;L^1tyYtI^(>-peH+!^|a)Fk~Wdw>{fjgJQ+bV#_dooj!Z9(yKUDj|o!< zt{nWs!{jS`Q=&4abl@$Dw7ThStxjel#TD=;^Afr7=dPzHRVgYjayiYzv3(aGeDzKK zJOr@(7Jj-K&R1H7VB>?FEW|Vn3qxQH1X&gMgoh44l=Yb&bHD!9WAInE_k;Ea9vN3X zTkk((M82XylR+o|fIr?VIani96hgzRR!)|8Z&w?Qqb|`kXbaG-U1$mi;i%19q(cuc zzsc(DnNJJ8tGpaMFyR#Qc)9^inL8M7T-yRmtGgfHi1G2wk9NzRm=Lk>o$?2Xl5=Ma zIs&Ur32Gfv+Qb@j)!$#YSMGPAsth7Dc6Rpw=J2(Nfp z1xDPYfq-nOcvIKCGfO+Ri-~5TgH4A{IC7+ul1jo^VX^=qh|ZK6KZ)(_0N(I&>>v3| zyPi)?q=4XHT@`bUQH%~v>PoKU;o>Q8lqfP_Y!Y2DNSIf2ZYg>8SKOZV8K=_ip1L^G z)52~0s+4#hx3y>^1j|`ts*Gg+hJ11q>0lGQ!Rb%z{z0LpRRqrCLsQHWulr(_au*+u zWoD5o4(V+l8C;%a5_#<3~hNDU5VPH0U&jegWj zLAgcaV|*8*UTsjY;T^XK*1s#wKnQz+Ne8zIQ||+UPY1yD>IzkWi-jXy{}0AQ(zN>> zhiN-MX@n+W5sjyENLL^y9$Uh6Gz9A|1H5YVIqUA8`t3gMZnVDDb8l0#W6$2(+UVDE zjRkZMy@ds3d82pC1i|?-h(qNlTOn!B>xW``RfKgC>(lJRcx@d-=VjZYvJccNVf6>P zhyGoxP@=F^C>6h-!4ROh&p!#-i5f$cDlCT<5V_3y8zhV3;3DVrK?_6}3Q#}cGmX;) z3ZEs;FF_@eyxHAj0vqPxNH9RpB{RV#3~&h|8AP&(OqBijd_7FSlWD|6-Xk%3 zV=ez#NJL2zg^!;ev*5bu|cxJ`OFg$~fNXe;sCwtyKf<$p@ zj_E|K#%Zl^@Jmo1iC^2OOF6x?+nV8#K`6Md0OV99{bLSr$_(s0A%I6H@^c3FPH$-c z479*p)W>#4L`D4kX9E7SZOHE8w}Bb9ut73I?5{XIXhfZ_M3pv$&7z^gLIZEP zNOT{Ibhts^OVoz#kX>X`pTFpv!Ng=_yFQ;^I@-+5Z%LG`5VMC`7}<4-%-rwXHjw47 zyt0caT0PnI=`z`+yKGl93=V57&HN@>q{jQb*jsl{MGzqvE_J=3@a(E2WH+lmAXcw` zhJps?K`eHj~I`;MW zFrT)N`e)weW1L^b7FsoO8aNm5Atce_FD-t%8=WjU2|%oSFw^;fBdusuTog|U05RPfl%FVtsvXzk7}bH z)t?)BC9NkSERXdTw=+vNIz$I=Vo@|0G)gMqvv;RALH&bxh5RJ~qx!%_cE+p))Fj`X zu5Gw)lvb6yHtV&qL_N(QXIR97_aN`@txup3&(FfZJY0Y|Ot;g!P$!bkH8eT^htpNw zsDLv{t200=EZKGSj%Mio)8XfR!zg0mvzUSC&lr3MLiI+B;a?8 z0RZ!4(96c_ets{XE{Z1OoZj}UgM;&bQhyGB9~}X4@7t{lP0*#8vv0~U)#!S2FBHhC z6G{EfozAPjQTsJN;#_Hn_xD$+F$mAoXR~Q&(HLG$WmZIX?c5eK7luZ8?Hr#h;5-3w zia@hiTz+4%N>Wxnz+B%MBW^2Jz;$rSJ~#`7>jT1~f|l%2{c(4Y2TlZ73;-GxdI2I* zSagGpN@9P;NBnnW5u;PquLr`ke9`&5plnF2uRa)y@!Sw-<5;%N(Hz+J&80MOuCJ$Q%pJ&>9z%a{~k=XV&Fv7D{NL-oEj5W+@k`zf@5xJhq3*d zzIp}=+7WRdqzzNAfxv5cQA9vBhMoaZ8ajHhQ#qT1ImU8mQ0gSdYcQjsCn z5t6bEQxe5$v=vobsRX?nag8dB=a~8g6?nDe3;e1BIqTu6(Oe~*ADI-bLAtf2LHSi* z!LT* zZe2!Ii>oH)`uNJQiqKAKS1rdL$ZnitKuR0Y1r2_O*1^G{`N7)JvTO5kZ4OfM9m6Qc zvqq*hKoMXG~+04!>Jy+wc%fUd^8XLZ0CJ5dgCRsh=ejts8A_Y*|es3<@xLHkj_V< z&r}+&k6D&lDXjh*0m?9hh8lF{l?hJUKZK|!`gUqCHHhj4+krW01v&GMMs#4h6-SHXwT(YrZ5m;ok$NJ*vc6^&OFKb zU(QC7XqB>o4Xi%-Vd$j#CH0fQtJu=(=oAYkJX-1Z5$@;La6ZW3<#x`__wwC$$<6;7 zYki&@e;@WNQvVL_Q_sFNi#YnUFpu7Y?)K($2d6bUM+%=4^a(khj zJ-W^*p?SoTwEQ7!!xw-W`U5|)co4r7CpNbmQF?m%X;P3qTEEfjgo!k$p4YB$YJ~@g zYgk3Y%f?P=-Y)N!ga!s9;$nldYu+fr@Uj=6joaU`8G=V+-|X?H6+Z;gRexj=U_Idgu#xws}>&=kjqPH+AXv-n>PfZ zuRF&g-u|hf!mpD5L3BPs_v4p+d3oM;DB+cbxTV!%vEbwL&PV%&4+U|*8i_|rtQZ=E zQIaX*@i98TW5O9O#S=3L5)s+yb9(_8UnyNrh<{cvg)VIB^CJ0s?-1(>7IoPxz35lz zWPZ2D_>aD<-hI%kY<+dxgk3aL$Z7I2o}I_r2|D*ela|Q#PJ#~Kxm(TZ9Hds`sy{ZF zU76XTZLJ7S`$pF5nJo_wSarZ_@~z-(-e1-+;HRvqB)O9+K}WvIgW|$#bi+kGEl-tr zRuOZE&s8en-C%H|!sILx*G!T5ovu(Io^E*t&^ue*WIx8U(II2kT4`0=puz zBx{-}_%!hA>3kyACnZVpgv;I!+RbZHc4<3Wa<;s7@QV!{9vMP~-W)#3CkjV+pHpS< zz8wj=|H@%SP*pE9{Bb4bEy@mLW!}?aOU3sF-rho9OvaXnnEo?mD4B+AKxXhKPozzG!@Lp2PPP}hZKN>&`rl! zm3qi}?&KugH>)Ty6@qo0WgF2Ha`oo-xlTC5R7ym zEITcYxuRch2pfWrO^Iwm=Hcsr`El2qZ8r`U|b@948IOxOx$lWe^GAhVuoQoX^ zcRIk~5$~#KdWHVU9VjA~;cd#`fEGa@*a4{$0tyZ8924rqG;qrS(!XR;$(BbHGC2G1 zzcv7dcAY`in73N*dI2izd~>l7{|6(~YM{D^FdTm_kYxe&{{l1NivRKh|BrtK9%uka zgzaAn=}3u4XlUqYiiSqW!F($cItog#n2egXxTuhrm=yet3Jk@fpdlhAA*G{T81A2# zq^2RJp{63DpzI(gBPJ%Jp&_EAqgke=rXT}n5mJ!R(+@VZP*M=n(9qHm6OvGngAYzg zNkub2NJ30P1U?GY7!@t;=s-U$Jq!4Ao2y^*aB`GD^ z3gLPQfXV#wJF-hGw6MY&KAI9@Yd?_eUnC191*`oK$iNk9F~7X4J!>d(xy#6GRd2o1?vpNd4$?i&Ps9k+| zxfBbUcRMK6_t>#&pFQH7Wmi=w@MBL|(=OyQ<01y0!F#4~pFza4eas&&Ino{H%}th! zG7P{Dum2OHre_`?1>WaJi zs7fz8@INJ<$^8*pklD(8vnncjSW(c3hnd%fPVvKIK)bxD588=SBkPFCYr6qR0X;2_aokC z?)Mk+!lvpvsL#w{KoK4Q7td_@G$5;0(CLZ|IsLQRsBq!J4tYwbJ zF`F2W&!sga9mf}II|oGnYl*TuSl6#4hVY2B(&JfgcCDb~2uUvNt7`>)S@@~XZH#T` zHB{}qE24pDBH}z>kV=R6)#nbWlJe!i!`T~l%Vhv%RBX{`+lEw)PaH6jXsc8XY=>o4a#SHw7{se$OB(Ld zoe9WLzDK#qac7_Hf5a=0j0x3MOMN{9K`DG6yNuw=Dgu$By~Vr8<+WW&;4e_JY&FvB z1^e8d2dnWl@q)P#GMuCI}a~s|Gd7>EX99v{sVy|Y8N(B z^^Ka$l6pe){2Ctmjt<6Uk5Si;mX_fBVRp|h;1qnCocwZ+64k)g-JJcxX6bg_b<)+U zL!|AWBdY)A;8R~T-Gkoj|Gp48Bw!I*Uj+1yD&ziHkyQ(0a-P?DaX!PV#&SwnuMHmXCm$O6U+2SRt5AU}No% zz}ct0;pa^memX(vIA4FoPbY;$bCXeeH5I?Mpt{i6nB9Ld;&RA2l*C=|-P~DYlw^B( z$lRo~?UMV46swKav%R9&WJne@-b2Sd@j$FqB%1VgNm4?qVgx8pd%{2ZBsA`)MY{yU)t<(*HhrqXj3D((H0cEG8mpUeyE*yWK)K{##%=|2>(Dn>H zJPz0ll=UXDFwnNYmRB3+>D_!;QmL&ga$v~0scHgQQ1{tE?9IryZ;SE7+Ip(RLyu|} ze9Q1#uDJQJL3LdHQb(b_9IHWG&yjKhXX=|jb)rT4{bCT4xI_TYEm=*8B*)yiNWW6T zKf2c+IF^1~6UG80SJ)nl5>E@Fpt)@M)QyXHTu15)>ur6pjqJI%WkMWZMA)Dse{+jC z?K?v%B3>o!42o$c=+9KRsA`R)?4UlB5R{rnY+w@(q+wH#%!DKMIbPZVa=$j!21Ugy zq{MWdw3eWq_jvO6`NzAX<(MpMncRYISKBmMX(PI>Xpt+GTKcOB%zDa71KBdAl}wJv zBu^ppIi@EX2Luhb$5i+F01c1+RJ3V{h)A>~y83#NFz&hvl;hz5cfihfdvnd=B+$y& zDpjt5jyVsBsUBjF0gG(=S0@%mLsmI{Q>$^{RU|B4?28K(T1o{=-4tW7i)Rn|h@I_K zEYnUN6x27?WyOU#OtJ>6401cCzm6+QWp*xojg~!mEZ|^m`U<^oAT-1-mtq22Myo?b z_@0Kw!EP}rC9ip1u;Gcw%|4!(90@uFH@!~A9hH(kH%V$3@5aa%t^}1B_@SEyB3QR z=+i#d>AnJ9ON#hmO|_S58j|*UAN}IWV-tz*@4u`D2E?DE6_IZx>4j3>mTLkIMNbiB zHl);pwa&6AieD{Qu1=P{zAa^-FezC%sXd&iaOM%!_-X1r56Fi{^SkDaisp=evr>Dd zsm{I#&xa+Fqfe6Lc(pSp^LH_Kvi3No^75%)GqGwdcZ0hXfybp~Lje9l{F317rmxx7 zZ6nva&R+XQu!;TOHSk;EkJAD_>)+R9PGp%1pO_ADWz`#WXOpbKHzI7sSs@8NW|gnt zQ$n~avi&!Hg#$*THzx+ac{X5I9+<(=J%-Hg1X{&@jL@Mk>=9Ns!WxE!pULySuOt6H zZu(eXR-z!%t^cvLc^nUuK}g2n?irQcSlK&{7arR(bO`J8u%`kO=;agw1@IQG0(}PL zbcWT(!;v#9b2pdIH>KQM4f0ED7#i&l5eZz)E+d0zTpWsfA2%NbC%kv*cfPgpq{fBE z3muK0FT~5M7uY@}!v*L5tsfRXn5o^)=opfDCJt2Uuv07*H$Xq-)=JsSYjNWhQDo^j zOE!Q;^5Q4y!S~~1 zomNB6lKaCy82yc%0(LQ2e}n}R%1?!ZnrwHjbQ80Sb%CUZb#@_<6hsC9 zzJn$NAz!bGJ@G@GzF^z1HqwlSLAydi)EIlYI$}|yP6Kx|E5`~V${(?#w}-Buwf|*% zgF)z4w6~JZUgck9K)@mMCLsKH*%A8U+wH@FXMj52b{I}%s#*v4W8kdw9GQzge!DGh`>vP%FWqJUsO1tBIXS?K?67XQ!KPV)XJL~H z-*n7B{B4XIWFXXGO`WH10_ES!N?!qoCO&9->i&atyot7EDTV&jf#X-5)H#h~U+tOr zg9K)oB0ASaU;Tzl|34BHI)60?t>_QmHr79Z3I5QGl=8??ta`DZ%pY^+(j5UqU{DAqRp6#+h}RKM-`D=( zwkdQ(w6*Z(!y}I%tZ{qHEMr0AWT$y@(lp>5qLoscrr6TsQ9#hSWqO{_YiI1C~|i% zGx)XZW8}=&%Ls2lw4dC$N}HGrp^vwQodMF! zx5z;`D#Ls#GK^ zr49)(m_1KVqr51e;~65`r?0KirwrIu(?#SPNzbL3LMoc9p9tPDueeBz8=^UJknZxW zyV%0MCPdXG2kCT+x_u+B`Y(+YJaj;J-+_-czoiA65_G=SPtdXnU&;JzvQ?y|HNRNb zqi}zT^ddv5$RyVQ1++24u1XZ+ptkTu0r>?M$`a8;neKm`ZqT8tL;)eO_U4h&Mp6n~ zH0ak3R!XZS7SX^ilAdg$?J`rDaKAe1jK6iQt!Citk^0oI`;3gyyq9|-x2Dq&<9*v` z`Raw#?a4D$n^n0I`2iwv@cU7clV#aH_G?Vu(Tp=8tb{R(MU=1Lc#uz7DoUEXc&B?g z2iQUUjyQS>`?(4VX{FW+ea}pAq27>mp9#U9k$YHS>#Y1j8B9MSqNQj{;{gRihbEjA z%+=Xjv$E`@s>3x)qU}nw*<_b~Ujbai%$KdlqoXnQuOtB7QiT zP29h$$x>G`Bw8<8tjFsiD%$eqYBRKwi`qU(en-UsKh_~#_GHY|^7h~XoYp8ShJgte z2XQ<(U8F#{4NJtsiN`GQ5us!JTD&!)uYkSdg?DA9-;;FvTRq%Gx5pPTLKw+L-gR8` zSe_Joxa~%<;Rqv$ci57z{4n+h?ccCJiBU*4euIf}He<2hG-@WolEam-NjOd!?@C*`N5?X@iey$ZHTnm^(a0$aa+=qJ0Lu>Tffqh#z)mRm^? z0D--S06~XBl`xU%4CQYY)sl|RYrb1DY3gQmToBS%*1(yg8Fhbj3Mm)LNhk9SR02Z& zH3$vQfcJzzG~8Pa<$n67$vZJJ!#{@~PpBWH581@rv?wx&@ACH&n&CZr*Q;0v982^e zF!~AwVj3}G(;`S1XZCv`L@O}$H#XL;siXrb6YBi)~5cxR-WHH(~Z=K4rV{De;=fCP*my~*De@m zy!Zgr0zmctobr|j3!M_FzwTJ?X_a&u>vxIauvDl3hb6N_#Cp696_)tpEyUwtg3n4o zf#q}1VH9@oAHkUnWR`nJxHcpHBq?mD6ESz_I={$6QrYAs`gPg z&xKq*X<4FO{zJz@$A=cl4G!X*{8fkL9H^{hxxPUXcF(wkw~M^1oNcjrXYE;#B1w4l$ zBhQH{c6(gqN{Q}Vtj~62`X3P3$2+PWqOXF1hYGgxj7-(u4}_}1MYb|oQl1>_VR**8M}VoLRxfC`j0eHTRm0C-+=98Ti?d%*h?s~q z*oj4{_)bQyPDRhK*t*y29`xO6Le zi0>X!WFj_ruE8*!hf9;Tf7oJA!gc?#&BgR91eJjFigr2i)qf!hxVI%@>Mo;f#jMbS zBr6Mx&^hup%`P5Br0NZFRXw;j_~)q-&}7+;9W}a19)F8I1TBe<>riTk2Jzw0wL3)@ zgh~7)Vm2PrQc7dH!gIKnL5{gsAhX982qtJp*@TphZ$QfZ1<^V?Byw zvDwz*9L5#A4+EFoZg5OK^8Tn&pPsoc^iG$CjX^au9GlAYH5zM&T|cYOEzfb;;3C#U zeNJrW*wC`{##_Ye9{xm(3EmsCLQO(Zu?~`|RaYE^w0J_2SAL7)^LIrT!#NZ9Pj$Um z_GX2!u=P2nc(dYmOQ!rM4+f}nipcYbbZy%D{eiYAwS&{@`2WFT;5VKJpSN^g-=r+R-CD>zr`C0HA6 zF7lTImL*{p_e90G+ZY4#v|m$#VD&W)8LrC5Z{qUV^Bmm$M&ee5XJxWPZenkTU`?vy zb%Ps2yYxvpO7qP&%ZMHOdfWTj3}vuv^v%@ki&^KA=lGH1^_UXMsYo%j04kX-M2(;Y z-@Dc2!Wv%0db=}cvrqoU%Qqgv)w5y9u}5sssfbSG=T|poVUDrLgSf@{XFaEe35p*R z8_uQ#RIh?M(u6&1awsLBsI}H5!-5=AzN&`5SSCKBVYE*QAUJKvn*vI=f zB3&23soe&(7o<E$D-ju=A&>$PnSWfM;%TBecYlF*bO>g~Y#`*&Ar;Ln#^m zX8X=G1%J&Il9YIT>C-T5^DK~AAvh0N(}O)f^|A@@Z-t&w^5!nL=m^e=z42~0!9!Zb(Bn_+`^*@W1VX}K;^ zg*C$RYH~eR(%(DbZVpeB>4h!}G`sRJ=)vGy91>Bk^HB{DSB7!^| z8gwRb3FQxm_A~1>@+%V3R~sr!`AS0JqQ;>rMb5kajk(8-13EQHDMTpIYFuKmU?BzO z&zri*m7K%RW+hk@nh!}_j0VZDw<29Vh|cve{=z3G3z+GGbE*X|>^>{*IA8ofG3^Sk zq5XPsXifhF_kz1i*xxl^x|ti6jpzCJ!$1}I@6nZee3K)9(KEkI7RM`<&_#mYbGcg7 z04H_|w;>U%yWB$bn0i|mikDaDWxPfuT@>k6xPFrZfx|t5<}cf$pg<(g(J>a zN-XKeKW7K;^eXSBP|4!2kMYZa}CItP10Jwmmgdl zYyTdMs)^!#C?XHY%ztE+>=oe^TSUHL#*coWeu zRn36$<*aBQ8(l{>xH3hLj*IoGEII5iLa!nx=~)fI7b|^u^fq<$nou!x0y|1&uWw%R zdE9tNPsJ_=Ej^ph)Sx~{W1KIvn61}`X5XahkX5%Y6{Q$PRBcZ=_>2x%(f?B2h5unO zrM->nF4tyhWpocJWq~4_{eY`v!G6^olo3D^27t=|RPdYR*P_ZrEbWwP_J}L~-n1X`T4Ez?jwF|@(R2g)z8V*=>Y@{t8|lp$t|vW z64Uk{-miPhZ^|ZeqnjH?$T)qoJZ-&7^P>(&vj4P-F45Iiu^f>dUIbf$mKSim)VKAIY)UO1{c_ zbRkT`8+_Vg+CZ!HlgKltW6~ofXkGq{SOQ1$!9yFs((D;MVPbT+M6B#9K}}q^Ou^T=~nC^!GspRWS!B zvB$Q>=!e!;Vz@>42QOxkUlJ4wnZN|xl+fdd!hd;?$b-beRVnUy5Wp=7p(&jaoRvk^ zgIgb9xMo-?Ey%jx_Tz(urfpHb|GC_!(bnF?c;BUIc`AP#s#!iQY(;>t^ZxjZH)>8k zA(-B!|5iGYqjopVUdL9>`LAHnhQ?k-qX@}*wnIPr*cO`;E0-c1FIEj_D|?UUFvFS| zRmnL#P|sfEiWu&g@|ROk(g#Iuy6xQL3v_Nd;??*7c3XG~5rV&uDRfzM2&0zAuKogO zb1V&wQkYEN|HPS5!#?X012iiJPiTIfrU#9KSbF?<2RX|qbrpHI6CzWyDeB2fp$U?o z63oJfK9!W5qj>=g2dJE@aOr@%{?JAlknp3MvUp3C3~j*R#rq?AE?<@uEQ&`5UxecgrmN3~``Eh;n?ZEw<@)nO?QuqPlFhs1t z9(VZ>YxZ)FQfDR!eK+}l^V~kCP^)ov-ASGvexk4*4yF@S>3gK+@NVF8w=&0rXT7}7 zVkW!o*v3HdB*FVTM=VUwpC$vrnZ?8Dd`_$_Z55}(96bh3f;1yTP6(6oswI^`#}XTL zW=!>#a|Xm!%T%|g!zt_=bFD3Rr|#ekh3kd}#0qbIl+;El-W1x0g|>Tm3?X1JKy|0Be3~!q!q^^MZ0uq|Zst*u1rM`?+tSi6 zUutd0W*ZkS;BMEZmCU)`i`E0cEj7V+V=IznMRDUl35`Hfn7ZY#< zhle>U!nteyJbS*4pWF9UuoE;hX2ze9kpsDtFZUG*e1N<74vF#yPK1x zPflLro22W$Lfsh|b^U}=+*LGN$(vKvGBw$Wj*L=;<{I@6Zn`0(8?uTb3h7^iCdN*v zqFE=M_+9`e@VST5C6ktd)ZF!I&V^(<6c+$iZL#qL$6u#&jwIP#1X!ZfIwQ#(m9o8d zQ2dFPGTyH{%qL&Jl0ipWO&cHNzyS+9hIgCRERd%n^q;J%KX69LY&x=e5+@`~i3$;% zq6Ucy=>2fP{%31+X?;jxccP2Ru!WAqonMz9$;TM0Z}i~XrDCc0m{?7AIk9Iwol=Nv zynyjd92dRd-GK`kJl-p;+OQfIHXv0=7N%{Nlh^Z>g&nLymTJp}It6c58}?pcW1xBR z&SO7JQI6+PJu}I&lZ5br=Yl#&%Nu<7E!E|3{TtLazUYMaJ5u5m8|$7XEBrj33?x7? z#A&}B7i)u1EI}zM5dY(0N3%6J$Jzb6*;`tH+F6M}I%BH4BzRPzBl8T5l7b$l&sVsM zlm+Z%zMbfu3f3-HY@wd?R6XBtxfDV>z?@VMGgOR`et1AKgS`EyeRy*X@ z43NW8Ro1Ze2J!KxTMJX-vg<5Am`z!vQzZ@8AdXs!(^s1)2cWzeY<9ykQWO~;#x8XI zCvp+$bmX|7tsFA~4<;_`lsqa&v3mVxSG3FLkhQG|f$_yjfyS1*u=e%Vg$D%H2W;?m zEg@14wwiV@LHa?(Ogf!;<|-ziQ5p={j7b6%wAp%$>6LTa`8SQ{%$aoE`{MSZymPaz zyE|u>F+u5nUltkh1vS0hjZD}Vs`-K->RlIxk=N{0{wK^IGvMZT9H(6FUoRwAqr1>a zZ{fmME4_Idq(1YC+9q$>FbBy&EiLU@^Lgynp3E3{RNj3fdFu7su#rg`S(H<6U1CN2 zd`Guv*{19)3wxgvTSQ@=>haWz)DSjq8kuisn$a2SkMyQ zHU**kEQ%SM0PIG{D#!O!a{xryaVcwj!1R`iqnY-byD4$2{&@lXM96M&Wcb~j0I^Rh zq(N+CF}bH;p?HGg?!6@^lmPrfSvItP00LM7w!c=WM)lSnH^1m;DoVthgw5Td0OUs5 z4%Bvc(@SIhsfW@tdc8O9O5^e=anW_gY7HH4tW|P8u>kx^SW@70`|C&+SFo}qM_y|F zIptOa?2dm_Cd(>c(G&O30pvtjatJ_wCumIle_P-A<@0|0ci;DX|JuJ~w0!(o zSR5XH$pHjEyh@$$tVkBbRY~X85c+AJ$tK*ZKdub3ZXcn$%{KQgXdhbPp?7C~%6<$b$Dl@)62+Xba%uj=3 zVx}1noC&yCf(7T^AMZ$00w@zw4($31~c@K@vgHE z8OC;+<%UKAvS;nt#zBh|_?KM1Bfi;Zb#w3zdm1-Bpw`2gzH=_n(djmwf zcCNd$5K(P)w~<5V)^(Lh{$t!pfWb(f@H^5@rmRjskWrJcBEy?Oy-0sqHw0K}jOcyg zAKH(t-`g{2C7&INEWVE=P1kQ^920<|p5vL1sDZaB0kx_DXC3gww%L%;=~3rLKp(V; zH>2~+w^r!hY;g5(SNo zdbeUfK5Nnnq4}A~(`6^h^m-4MZGA>%WQbk|_*8OKJEjJO^Mma)%AQ7Pf=l*;w+JA& zr#2@-Gx)sKBW$QSOq*Q`%h3Aq2+Rba7vmB2wDmrSO4{|V)BvYc`G(Ai(ko2*Fmnz8 zPiJRS00h7}1ONa4003-45pf3q001L-n#5oxCMG2xBqb&#As!tc9vvkmB_|~(uA`%- zARQbYA0HkhCAFy?9vmkoA|xFj9UUVkBe)zK9vm4PDI~M9slC6ry}iyN9v&VYBPS=m zAR8YX9ULSiCat}!t+A}Mt)T(LLfKx#4`68k_DI@XP#y=zn{SqO={(j;7X23O_@k

h}ks_nve2c7(ndto3Wn=fW)$e>;l23H(A_YNCI6n!7zvKN-t%eyb>fFYEnR zBE+Tg|K2l|&i?iP$prjFT!{y1mNXIj15xBKsF z4K~~SUZ`{=xytL&vn&ixwVB|lyUBS$a?!ntaX)!n+x>jkLfX%2ZdGwPoW283zBA_l z^gy+YB=>UKu}!iZUY>pU_OW3T(*Ilk zIE}XZ$IPXesf>IaaU=iA2LSXw*;)1s|5O|Rp~-7#Q+y@XWPg|K?s-mOrBg}+>_otw zM0j%xKups0wKSouPaD^q0VZ^MoZOkw3j9Kty@&<-+vz4Sa3*q=gRCF}&7#XS2>ww zq~s?@vL34^$nb%*fBU9`OkJsWTtBxk-I{Ae0GhTO1~A|SnhZ5`zJL1kQ^tAD6St3u zZo8cWu&7g!LJ2Y`W%}}^l6wv+=V|)#uP>%&SNGZfc+Ya^9Q?eglyYN7qKpLpd!oAp z1iPy^xBA*`@H~C7E^H0ix0~=@zTE@2^jBYLrK8ol=aG26H0<}U>!V%$;$7c>8x;YR ziP0swsE^SR<^3cpqQ{~r*R=)xb;}&(d(r^pdc>3a!}tDc`|n@XvtW-aP6jA7R7bD%wvCcj-4N!yF6xbs2CcKDnM}Fdhy1x@o@>_wLLH zx5AMj*?ODs-Xfc2vI1ViBv(Ol>XL1JZ^~zCEMaFLA)?plK!;m}2OQbX6k1+d2E;rp zmjIr)L={7(4`6{Twi&(4ZfDd+ouO=jGh|Q__PNS=^UK%%Ys9NB;^ro6Zdb<|fia4$iI^*o2`s&KBQw*9?_mqxkHu2Y@6w|MUu`<>KwK zqhl?a*tb4!0yeh{1O=FY9%{Jn-tFm!m?-ADpCh{29uW()E{R%^89}+XesQES`segl z*Up>tV^2IW>Df;&ug;cQmr~c&^+CGej%w+PsRPPOwBcBk&knrt7IVL(A~A)3rf++y zRV_u|%%7=4RVEH9@{gdjxq3t`rDnYW zt^NDNT~+7FIf4F>4H6=DrE~$@M!efa6aa~Pz@(`#Oyte*`=;-Wj2GWM@}tgHP9q-l zKwL>@|GfkV&ji1rbNsh_J?%8aTLz~5xE6vAD?Q{y*=p20oaP2VcqaR3vvK$L zZ5ipTsH^x)`u(QE3hY3sEN>YFKv)5cS6Pw>wP08Go{H4*J@yC!5l&T2^gdHbvd^k( zfSCQSo3xU`_KOlT#qq7hYrNDfj{w|CQpRP8-op|oJzqaqj+WBsmzMKC5jA9sZm(GC zKmH`Fodonq$VRnfcIynb89mvrEmuc94}LimL!CcPg(i$fiRpir(~lH7w+ti&!~}Fu z6YjpM@7Yd5p4>h{U1mBdI!T~B+24F~QF|rzydLi6S7i`C>7Sqa|%nnBfR<;}j7|6vU;UB0E7h~0gRjoEXbe? zt6p8^njW{$Y-J>7tig?~kwme>(mjfn7Lg`Sq8y~GHSZ(HT^=n3ayq)3ni&ub?Mr#j zz1)3{u(M)#x43ggYrl~wr3PQ_sMQHr+RwK#)v~tY<^<4%aLg9vpSHsn4NM%?hzR*pqLdM{l@BHY}G(Vl>X zDa^;uCL6>=*=}ARIa>^X$p5-pqc~dm*O&KFZ^D1QxwM7=+(N(&r!$;(00KRKuS)fH ziG<0Sq_I6Yj~ZaJlavt{2#gT}Cd`1@ClHn?gazNyDuP{iFERgCr_&0vZbZ zOts2Q-&NPZap)RUPP$4;Qf7_cp9tc=JNl3Q)@&cSbBdtQ1td*=>D8{u1mY$7k)I#E ziSxJ9Ey||DdSR#LORmJQ*)EBG8etv&kk!<%{a^&oU+udk2wmqL% z&N~3~LRCm0`;Tsbfd0}%yt}&;D@K+tJBPCzQ~Ut{NJMlLRtf!X?G z)uXzdWj0L`%IpICK3q&l_+cUd0oNmsR3j^6fvWjVfO$m3jWM18+(Owwo})icCP2WJ zJ`xF>*t}-#O1$gCG3xvg0K7o8(IECUn#3$OZHFd{Z?!b#YZ{^m^GAv2oATB6!nc48!Hf^cVt3t9zlEz$=N@C2izd;4%#?{@ z7ATYXA6Ij|)bk4+{m=Nl7XEx+5%tUooC#a0t8QN>+B%B_VQ03|`ibeoh?Dj|+bX^3 zKAL9@*9vqn$n^xPUg}z>tga=m9ZR|v_pZMShRWSBmttA~dZx$0k$rk_m2mN-fEOfW>EmlQtG{7tOKS4uoN$!&-J+=0qjCt zOhEW%n*xNE!&s~BNbae%zUKKY6UVlv0Ng-XHfq^#Q6>NahQJy`HR>_BQyj*2%5Bp( z0MtlWdie?8qZ5$$lb%R-S-d_fy-z-~7!9)ER-FLULfL94?m7to1nGtwHd#IFtIS5z z`jqyX+fV?^K)e?qocbPsfQcl!29f_s@29-5f&(cD+(5jM%J8hp8X#auPESs%dOFq9 z>y<`!fF2F}Mo3{+tolTNDmildyUriSi_q79n|r)hC{+5&6Z+mRn&sI3PrJqe1WC1Q zJa9ir8d@e@lvCp#&i}P~?|sP@6wkbT>l*^p6uKt>+P2J4Nx%)H6|(HT-~D^9PUr9| zVKG|^K&Htwa)JoTDMOMu&zQ__{YL3a$6`G`ku@21ed<06O})GVMVV>xP%7(~p7voE z7sW6~yN4zk*s>=+qppSEYn zTGF4Mu${veYtPL_0rc12?CchDi&m`L&`)`x#aCt5L@`gf1wv!fbGzRGnC5DF_Vu*t z9Tx%Kx8#ik!~^E&amuoray1blGb1zDqX{Jj^JC=J*P%AYWKBln<@)WddyryO4{n_C zZxB(FFHtPx(hqK5$?;kZ#4S*V+njKQO3^Z~s^7(hoJvh)H_C0KT{6i~!^dV(JatS$f;-A?xT&j_6*PN(nNU zM}5f~r&ZA<9rvgPI)$@tp6l0ar&%6N$RssTYq8cLrWK5$J3=G(9j1~!0kOG&Z)3Ew zyjw95=+ng1{dOYW#Ntu%R)L~a$g8axFbwF;^Y+t?c68Y%@}r975AY&8WL_mr)zo7M zh*7(YZ4p62t;it5NOAJDYWr7!WunRSj7;9aN-Eq5pzvZr4gmhwB$AF*2Q93)ax3Pw zGIBTj>R>gXdxlMDn0gze1RzD(_?x44(&9Sn$~R{4$(PVhe13-GU;-Z#AQDmvGo-SA zmIL-hi+Xr8wHa4;T|dqS%*8h7mI~5-}qo96g(64*d(rpV;n;@x>Vmcq9x3g zwmB!F0s~V{ws27}F&gjLg*`OT|)A7xNN|sc zbbqQ%uD43WbIy;wSG}Sqpt2*G+!TJ=7y-e0kd<=TgBaq+Q=h3>Ngr3q0lJpSRNpP- zv02)(C*sa%muRBsWxfZt^B7vd)Wi>Z5@9MrWdHy${hz#nR~kqy^_C`NAjaNmMBus>BOIWQkTpOO zS-dn-q#h|~S-q{dWEo49Ioc~hccL*QUiMSB?Ah@P{7~F+@Inww+C+XR#n&7MhScSD z!10ws@E5@CY|$_-CPro%=L(*-w>=rm@wSp#-*L@p= z|C8@HK6@naHo`U239b$c9^T?veT1-P4Svmq(L?EG!ny>4!4PQVe-2|!U_AhC1qj~l z)lGlIQMj*XU@!n)*HoDfLP0DKYdE6rwVjAAa5@7}N>St4Wblv_#GJg}S-iFA_U0t* ztH*5^9KX~}7V&11TDl9QNkvs|s;AQ7xe0iC$(pQQ_94__%l&q$ zJ`0%vDm?-i&0e6y`~5ld>f7-KFTcCKG`#dp2mj^OXau70;q52zc|Jb?R>sUrlVlK! z9WIh8uj{kE&U{@X_KDay@2;B&fYQUFR0Qv!=ASana*w{saW3hf*yoF}he)CN+E(0o zGp|op*enz^3Jm6NCYcq-D69dvt`nSYxwa%7X&x=aLy70aVGVOg?4L%4#805pc#mo+ zS%u93fF@=EyK)<{UtGscZe7e5(dl5`bTiG@T*2ErUkQtjd>lHv_2wkzg9x?7hGwS& zQ@F{{cJb4zySxe!06TXf_iz*w*zdS{#+6@QT|EzOy?mWlUhQt(0sz!TQpRTPKKpSb z2#&jc9-5CZju4?y-PEQULo1)7#FlIT%t8RO3b60k0R$N4dy;9**s-G@>R4B%eR4Pj z#x2Z3Sv6`9o~>Ab#7%S7ultH&lLM0{f;6XFJ7l#0)I?!Vbe}|T0%6{LCq?(uB~1JI zF@~BW2aKe*s|&=@pr!oQ=9|90cHVv$20v`Cdej>L zIQnC>fN2ev3DiV?s{(yzi|B+--e1ie)~nY_J&BLsJZ`+4eBYj|^~H7OZ?{GQ^2N+h z5$TKv9^movld6SsC+|r+!Z(g&}>Sk9+A%aw- z+vu%|(}hXS1p4bu!b-6xp1Kt;^^Mz;XJFQ-lgaGsaM3l1l=uaTQSTF7d)o)JjxXAu z)9V=x!g##pYj?%X>seewoFTh0SdGs1!Sqa$AppEW(qh0V(?^j&_`}NcRK!~F%)u^{ zBIUazFXJ>xme3Z6%;9PXlO}YBodE zn>(Ia`e_2FeT#G{_Zd$Bq(o9iP#b<%2SC6jjppXWTXXKGqo-~xIq1t4ltfs1^RWE` z0uUs9r;1D--n5vRz7wxU1#|t`7PLm$%}o6OAYcJtS<59=VZE(0VdC~}ReqdK0-Qp~ zZk(J|D?-3x&p0esr`e#FkYHjH)tKu8?Q?>dD5sJQ0K~+pGaQOjlp71p5CR+W3$#eyuMz$*KEdWJ-*iy{&tZT zRE+^zwp5K_8ojZi8ZnJAf`nL zX_Vyr%*|6GSno{pveA8@&+?ObVrvrtt22r5#IO+M4JOUQv0d*Q!cS2oFV{Afu#dsT zF3%)KKohBygk9_yd*@C{#YDHe&AhSOS{ z0*aZ}>gvCi78MPMGau=~ka-;zp0?zS5AHNtcp!P&Iu)6+W{B(=OZ1G4O$t4^XCk%; z0b|GfjIN{L7S-g;-^Uk6X7-TY$*k=ms@BP>Y zLmK-QUed;D+Dy8}y3c3LC$y=OtYN&|otZHz(me?E%y+Ax*Q)7^0mpx|Jyai*J2>kY zJE?VK4ZCp??o8#lt0bbVRrAs;ElJjMOZBvSHpTz1VMn%Ig2r6IVdgZsqwhB2e z?HI@3PmS4%P6qqBCQk2C(Ai!0HO>kwkS0D1wXaXCUN#Bc~BWR=L zsmhCHeyQIySTr!!u)a*z$tB#&whY1(J2mrGiBxxWUIhqXPA<=ysQHG^kJw@f2i1hE zRm~&2_N?rl)-bsNDvS3*FX24qYF|`S8P>p9QFvyV2o+woMAgT-qt`r)INx^26rEyY zV`OOo=!5KWR1n+-mA}~BcpYzRjup?bB;UR}bDJz%;anyeG4Ht}Zc*GCj?j3rNN&ZJ zzFg{*1>_-M+~4D~h~G@m`zhW|q_f97y;i!|89NDL3YUkmH`{-Nrwv@)6XD6G~qA4nj7ay$|j88%7xd|X__J%387E|a_LU2WthW(8{ z+6@qaqB-~DRej44FzTxp`6uy;XdCennAvB(!6bu-QNZc89^rd9gsr{?x{!c-qn~Y- zl!_uP5boP`-RdgYnoWByi6H?#wp7iufulFW!&a^ZIP;OPiOx>KYyp{JZ73BKsOWRG zW!rJrw&ZVC1$+A;t5@irBg4_&o>(n!NNph^U7rPC~a$W!4 z@|0v=vWrmnw9W+X?rDMh;a%fu>YFSr$Z-AUJVG=}8b}UxyvD-5*JGsgh69(tKKw!` z0OpNlxZy$qj$B?|*4W$o+j?uGIg<(gcE1I3Ia!+Ctkn)Mh%00ipH=s8c2!6;3SaOPCZxBb*U+)hSK>ip{wEs6}8yRBN=m}abX zv$oVu+;m=WcmjvmTdV43#A0<>-fd5q(b`bnG>C~pIYy2YGCnl``XSihh)eUsn)ba% zrFzYR^m)%QMSJ1Zj7{sh5bCv?^{!Zeg zzui);)i23#b@iWY1eNM)sD9e&LP9zCCtG9zmX?>7mzC$^BY}B&d3iY*-akG*G~q?n zWM5tVZ~&H<6@cYs4C`;twg$jy%gKJ`{rw{WmX?=I;6r?T0L0G+EGN&&?2nI+4}k(8 Rcz1xM-eqMwG{E0c01jNF*u?+< literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/food/steak.yml b/Resources/Prototypes/Recipes/Construction/Graphs/food/steak.yml index a2fa2ec6b03923..bbf8f5ef54deb0 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/food/steak.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/food/steak.yml @@ -7,6 +7,9 @@ - node: start edges: - to: meat steak + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 335 @@ -22,6 +25,9 @@ - node: start edges: - to: cooked penguin + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 345 @@ -37,6 +43,9 @@ - node: start edges: - to: cooked chicken + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 345 @@ -52,6 +61,9 @@ - node: start edges: - to: cooked duck + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 335 #duck is actually culinarily red meat IRL and has a lower min temp than other poultry @@ -67,6 +79,9 @@ - node: start edges: - to: lizard steak + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 345 @@ -82,6 +97,9 @@ - node: start edges: - to: filet migrawr + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 345 #apparently trichinellosis is a concern @@ -97,6 +115,9 @@ - node: start edges: - to: cooked crab + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 335 @@ -112,6 +133,9 @@ - node: start edges: - to: goliath steak + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 345 #I dunno what this is but I don't want whatever parasites are inside @@ -126,6 +150,9 @@ - node: start edges: - to: rouny steak + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 445 #rouny - node: rouny steak @@ -139,6 +166,9 @@ - node: start edges: - to: bacon + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 345 - node: bacon From 41ec40a0d3d30914228665000936ed02dcfe3db1 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Oct 2023 23:49:59 -0400 Subject: [PATCH 170/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ab9119b8c12e3c..e4544db1d8a17d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: CrigCrag - changes: - - {message: Pickaxes are now 80 size and take more wood and steel to manufacture., - type: Tweak} - id: 4526 - time: '2023-08-12T06:17:26.0000000+00:00' - author: Ilya246 changes: - {message: Traitors can now exist along with nuclear operatives., type: Add} @@ -2922,3 +2916,10 @@ Entries: - {message: Atmospheric technician's casual jumpsuit was resprited., type: Tweak} id: 5025 time: '2023-10-19T03:44:58.0000000+00:00' +- author: Vasilis + changes: + - {message: You will no longer be picked as a head revolutionary if you have not + checked it in the antag picker. Note you can still become a revolutionary if + someone converts you., type: Fix} + id: 5026 + time: '2023-10-19T03:48:56.0000000+00:00' From 3be48bed3b075332a4f19786a3556d93740e640c Mon Sep 17 00:00:00 2001 From: Panzer <146987057+Panzer-IV1@users.noreply.github.com> Date: Thu, 19 Oct 2023 06:52:12 +0300 Subject: [PATCH 171/245] wet floor bomb properties (#20823) * wet floor bomb prop made it more powerful * Update uplink_catalog.yml Made it clearer and credited myself --- Resources/Prototypes/Catalog/uplink_catalog.yml | 2 +- .../Entities/Objects/Specific/Janitorial/janitor.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 5c6bad28fa14ab..10dee0b804c3a2 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -977,7 +977,7 @@ description: uplink-proximity-mine-desc productEntity: WetFloorSignMineExplosive cost: - Telecrystal: 4 + Telecrystal: 5 # was 4, with my buff made it 5 to be closer to minibomb -panzer categories: - UplinkJob conditions: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml index 3ae89e0d1c02fd..333c17b21715de 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml @@ -246,9 +246,9 @@ - type: LandMine - type: ExplodeOnTrigger - type: Explosive - explosionType: Default - maxIntensity: 5 # about a ~67.5 total damage - totalIntensity: 60 # about a ~3 tile radius + explosionType: HardBomb # normally Default and max 5 total 60 + maxIntensity: 10 # about a ~67.5 total damage + totalIntensity: 30 # about a ~3 tile radius canCreateVacuum: false - type: DeleteOnTrigger - type: OnUseTimerTrigger From 8d070d4758537da7abdbc5b8ff1a300d0c26a5a7 Mon Sep 17 00:00:00 2001 From: Itzbenz <49940811+Itzbenz@users.noreply.github.com> Date: Thu, 19 Oct 2023 11:53:32 +0800 Subject: [PATCH 172/245] Allow Chemical Dispenser to be scrollable (#20800) --- .../Chemistry/UI/ReagentDispenserWindow.xaml | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/Content.Client/Chemistry/UI/ReagentDispenserWindow.xaml b/Content.Client/Chemistry/UI/ReagentDispenserWindow.xaml index d01454eb7a7a9b..e17586db14ec5f 100644 --- a/Content.Client/Chemistry/UI/ReagentDispenserWindow.xaml +++ b/Content.Client/Chemistry/UI/ReagentDispenserWindow.xaml @@ -18,8 +18,10 @@

private int MaxSingleSound => (int) (_maxAmbientCount / (16.0f / 6.0f)); - private readonly Dictionary _playingSounds = new(); + private readonly Dictionary, (IPlayingAudioStream? Stream, SoundSpecifier Sound, string Path)> _playingSounds = new(); private readonly Dictionary _playingCount = new(); public bool OverlayEnabled @@ -80,7 +78,7 @@ public bool OverlayEnabled ///
/// /// - public bool IsActive(AmbientSoundComponent component) + public bool IsActive(Entity component) { return _playingSounds.ContainsKey(component); } @@ -100,7 +98,7 @@ public override void Initialize() private void OnShutdown(EntityUid uid, AmbientSoundComponent component, ComponentShutdown args) { - if (!_playingSounds.Remove(component, out var sound)) + if (!_playingSounds.Remove((uid, component), out var sound)) return; sound.Stream?.Stop(); @@ -113,7 +111,7 @@ private void SetAmbienceVolume(float value) { _ambienceVolume = value; - foreach (var (comp, values) in _playingSounds) + foreach (var ((_, comp), values) in _playingSounds) { if (values.Stream == null) continue; @@ -188,7 +186,7 @@ private void ClearSounds() private readonly struct QueryState { - public readonly Dictionary> SourceDict = new(); + public readonly Dictionary)>> SourceDict = new(); public readonly Vector2 MapPos; public readonly TransformComponent Player; public readonly EntityQuery Query; @@ -226,7 +224,7 @@ private static bool Callback( // Prioritize far away & loud sounds. var importance = range * (ambientComp.Volume + 32); - state.SourceDict.GetOrNew(key).Add((importance, ambientComp)); + state.SourceDict.GetOrNew(key).Add((importance, (ambientComp.Owner, ambientComp))); return true; } @@ -240,9 +238,10 @@ private void ProcessNearbyAmbience(TransformComponent playerXform) var mapPos = playerXform.MapPosition; // Remove out-of-range ambiences - foreach (var (comp, sound) in _playingSounds) + foreach (var (ent, sound) in _playingSounds) { - var entity = comp.Owner; + var entity = ent.Owner; + var comp = ent.Comp; if (comp.Enabled && // Don't keep playing sounds that have changed since. @@ -260,7 +259,7 @@ private void ProcessNearbyAmbience(TransformComponent playerXform) } sound.Stream?.Stop(); - _playingSounds.Remove(comp); + _playingSounds.Remove((entity, comp)); _playingCount[sound.Path] -= 1; if (_playingCount[sound.Path] == 0) _playingCount.Remove(sound.Path); @@ -285,11 +284,12 @@ private void ProcessNearbyAmbience(TransformComponent playerXform) sources.Sort(static (a, b) => b.Importance.CompareTo(a.Importance)); - foreach (var (_, comp) in sources) + foreach (var (_, ent) in sources) { - var uid = comp.Owner; + var uid = ent.Owner; + var comp = ent.Comp; - if (_playingSounds.ContainsKey(comp) || + if (_playingSounds.ContainsKey(ent) || metaQuery.GetComponent(uid).EntityPaused) continue; @@ -303,7 +303,7 @@ private void ProcessNearbyAmbience(TransformComponent playerXform) if (stream == null) continue; - _playingSounds[comp] = (stream, comp.Sound, key); + _playingSounds[ent] = (stream, comp.Sound, key); playingCount++; if (_playingSounds.Count >= _maxAmbientCount) diff --git a/Content.Client/CardboardBox/CardboardBoxSystem.cs b/Content.Client/CardboardBox/CardboardBoxSystem.cs index 3c870f6e6ec170..5e479409cf9075 100644 --- a/Content.Client/CardboardBox/CardboardBoxSystem.cs +++ b/Content.Client/CardboardBox/CardboardBoxSystem.cs @@ -38,12 +38,16 @@ private void OnBoxEffect(PlayBoxEffectMessage msg) var mover = GetEntity(msg.Mover); //Filter out entities in range to see that they're a mob and add them to the mobMoverEntities hash for faster lookup - foreach (var moverComp in _entityLookup.GetComponentsInRange(xform.Coordinates, box.Distance)) + var movers = new HashSet>(); + _entityLookup.GetEntitiesInRange(xform.Coordinates, box.Distance, movers); + + foreach (var moverComp in movers) { - if (moverComp.Owner == mover) + var uid = moverComp.Owner; + if (uid == mover) continue; - mobMoverEntities.Add(moverComp.Owner); + mobMoverEntities.Add(uid); } //Play the effect for the mobs as long as they can see the box and are in range. diff --git a/Content.Client/Chasm/ChasmFallingVisualsSystem.cs b/Content.Client/Chasm/ChasmFallingVisualsSystem.cs index a22ea945ef2608..4b04aa9dd713f6 100644 --- a/Content.Client/Chasm/ChasmFallingVisualsSystem.cs +++ b/Content.Client/Chasm/ChasmFallingVisualsSystem.cs @@ -33,7 +33,7 @@ private void OnComponentInit(EntityUid uid, ChasmFallingComponent component, Com if (_anim.HasRunningAnimation(player, _chasmFallAnimationKey)) return; - _anim.Play(player, GetFallingAnimation(component), _chasmFallAnimationKey); + _anim.Play((uid, player), GetFallingAnimation(component), _chasmFallAnimationKey); } private void OnComponentRemove(EntityUid uid, ChasmFallingComponent component, ComponentRemove args) diff --git a/Content.Client/Commands/HideMechanismsCommand.cs b/Content.Client/Commands/HideMechanismsCommand.cs index e9c2073b20af96..28433d2337f6af 100644 --- a/Content.Client/Commands/HideMechanismsCommand.cs +++ b/Content.Client/Commands/HideMechanismsCommand.cs @@ -16,18 +16,18 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) { var entityManager = IoCManager.Resolve(); var containerSys = entityManager.System(); - var organs = entityManager.EntityQuery(true); + var query = entityManager.AllEntityQueryEnumerator(); - foreach (var part in organs) + while (query.MoveNext(out var uid, out _)) { - if (!entityManager.TryGetComponent(part.Owner, out SpriteComponent? sprite)) + if (!entityManager.TryGetComponent(uid, out SpriteComponent? sprite)) { continue; } sprite.ContainerOccluded = false; - var tempParent = part.Owner; + var tempParent = uid; while (containerSys.TryGetContainingContainer(tempParent, out var container)) { if (!container.ShowContents) diff --git a/Content.Client/Commands/ShowMechanismsCommand.cs b/Content.Client/Commands/ShowMechanismsCommand.cs index f86aee87149d68..b94278f8c9efb3 100644 --- a/Content.Client/Commands/ShowMechanismsCommand.cs +++ b/Content.Client/Commands/ShowMechanismsCommand.cs @@ -17,14 +17,11 @@ public sealed class ShowMechanismsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { var entityManager = IoCManager.Resolve(); - var organs = entityManager.EntityQuery(true); + var query = entityManager.AllEntityQueryEnumerator(); - foreach (var mechanism in organs) + while (query.MoveNext(out _, out var sprite)) { - if (entityManager.TryGetComponent(mechanism.Owner, out SpriteComponent? sprite)) - { - sprite.ContainerOccluded = false; - } + sprite.ContainerOccluded = false; } IoCManager.Resolve().ExecuteCommand("showcontainedcontext"); diff --git a/Content.Client/Decals/Overlays/DecalOverlay.cs b/Content.Client/Decals/Overlays/DecalOverlay.cs index c37a0e3aea35b8..f2c11e2a682ebf 100644 --- a/Content.Client/Decals/Overlays/DecalOverlay.cs +++ b/Content.Client/Decals/Overlays/DecalOverlay.cs @@ -31,11 +31,11 @@ protected override void Draw(in OverlayDrawArgs args) // Shouldn't need to clear cached textures unless the prototypes get reloaded. var handle = args.WorldHandle; var xformQuery = _entManager.GetEntityQuery(); + var xformSystem = _entManager.System(); var eyeAngle = args.Viewport.Eye?.Rotation ?? Angle.Zero; foreach (var (decalGrid, xform) in _entManager.EntityQuery(true)) { - var gridId = decalGrid.Owner; var zIndexDictionary = decalGrid.DecalRenderIndex; if (zIndexDictionary.Count == 0) @@ -44,7 +44,7 @@ protected override void Draw(in OverlayDrawArgs args) if (xform.MapID != args.MapId) continue; - var (_, worldRot, worldMatrix) = xform.GetWorldPositionRotationMatrix(xformQuery); + var (_, worldRot, worldMatrix) = xformSystem.GetWorldPositionRotationMatrix(xform, xformQuery); handle.SetTransform(worldMatrix); diff --git a/Content.Client/Doors/DoorSystem.cs b/Content.Client/Doors/DoorSystem.cs index c4b88346de4661..4b82d3506aedd1 100644 --- a/Content.Client/Doors/DoorSystem.cs +++ b/Content.Client/Doors/DoorSystem.cs @@ -22,8 +22,9 @@ public override void Initialize() SubscribeLocalEvent(OnAppearanceChange); } - protected override void OnComponentInit(EntityUid uid, DoorComponent comp, ComponentInit args) + protected override void OnComponentInit(Entity ent, ref ComponentInit args) { + var comp = ent.Comp; comp.OpenSpriteStates = new(2); comp.ClosedSpriteStates = new(2); diff --git a/Content.Client/Effects/ColorFlashEffectSystem.cs b/Content.Client/Effects/ColorFlashEffectSystem.cs index 34acb7f370f93e..9a844019480bf7 100644 --- a/Content.Client/Effects/ColorFlashEffectSystem.cs +++ b/Content.Client/Effects/ColorFlashEffectSystem.cs @@ -114,7 +114,7 @@ private void OnColorFlashEffect(ColorFlashEffectEvent ev) var comp = EnsureComp(ent); comp.NetSyncEnabled = false; comp.Color = sprite.Color; - _animation.Play(player, animation, AnimationKey); + _animation.Play((ent, player), animation, AnimationKey); } } } diff --git a/Content.Client/Explosion/ExplosionOverlay.cs b/Content.Client/Explosion/ExplosionOverlay.cs index 17df782887dc93..2ab84d4438a818 100644 --- a/Content.Client/Explosion/ExplosionOverlay.cs +++ b/Content.Client/Explosion/ExplosionOverlay.cs @@ -4,6 +4,7 @@ using Robust.Client.Graphics; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -63,10 +64,10 @@ private void DrawExplosion( Box2 gridBounds; foreach (var (gridId, tiles) in visuals.Tiles) { - if (!_mapManager.TryGetGrid(gridId, out var grid)) + if (!_entMan.TryGetComponent(gridId, out MapGridComponent? grid)) continue; - var xform = xforms.GetComponent(grid.Owner); + var xform = xforms.GetComponent(gridId); var (_, _, worldMatrix, invWorldMatrix) = xform.GetWorldPositionRotationMatrixWithInv(xforms); gridBounds = invWorldMatrix.TransformBox(worldBounds).Enlarged(grid.TileSize * 2); diff --git a/Content.Client/Fluids/PuddleOverlay.cs b/Content.Client/Fluids/PuddleOverlay.cs index f2f5ca1b9ade42..8c8b13a1efe78c 100644 --- a/Content.Client/Fluids/PuddleOverlay.cs +++ b/Content.Client/Fluids/PuddleOverlay.cs @@ -1,9 +1,9 @@ -using System.Numerics; -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Client.Fluids; @@ -52,7 +52,7 @@ private void DrawWorld(in OverlayDrawArgs args) foreach (var gridId in _debugOverlaySystem.TileData.Keys) { - if (!_mapManager.TryGetGrid(gridId, out var mapGrid)) + if (!_entityManager.TryGetComponent(gridId, out MapGridComponent? mapGrid)) continue; var gridXform = xformQuery.GetComponent(gridId); @@ -60,7 +60,7 @@ private void DrawWorld(in OverlayDrawArgs args) gridBounds = invWorldMatrix.TransformBox(args.WorldBounds).Enlarged(mapGrid.TileSize * 2); drawHandle.SetTransform(worldMatrix); - foreach (var debugOverlayData in _debugOverlaySystem.GetData(mapGrid.Owner)) + foreach (var debugOverlayData in _debugOverlaySystem.GetData(gridId)) { var centre = (debugOverlayData.Pos + Vector2Helpers.Half) * mapGrid.TileSize; @@ -85,14 +85,14 @@ private void DrawScreen(in OverlayDrawArgs args) foreach (var gridId in _debugOverlaySystem.TileData.Keys) { - if (!_mapManager.TryGetGrid(gridId, out var mapGrid)) + if (!_entityManager.TryGetComponent(gridId, out MapGridComponent? mapGrid)) continue; var gridXform = xformQuery.GetComponent(gridId); var (_, _, matrix, invMatrix) = gridXform.GetWorldPositionRotationMatrixWithInv(xformQuery); var gridBounds = invMatrix.TransformBox(args.WorldBounds).Enlarged(mapGrid.TileSize * 2); - foreach (var debugOverlayData in _debugOverlaySystem.GetData(mapGrid.Owner)) + foreach (var debugOverlayData in _debugOverlaySystem.GetData(gridId)) { var centre = (debugOverlayData.Pos + Vector2Helpers.Half) * mapGrid.TileSize; diff --git a/Content.Client/GPS/Systems/HandheldGpsSystem.cs b/Content.Client/GPS/Systems/HandheldGpsSystem.cs index 5bc92f0c28d9e3..fa680de1fc055f 100644 --- a/Content.Client/GPS/Systems/HandheldGpsSystem.cs +++ b/Content.Client/GPS/Systems/HandheldGpsSystem.cs @@ -12,8 +12,8 @@ public override void Initialize() SubscribeLocalEvent(OnItemStatus); } - private void OnItemStatus(EntityUid uid, HandheldGPSComponent component, ItemStatusCollectMessage args) + private void OnItemStatus(Entity ent, ref ItemStatusCollectMessage args) { - args.Controls.Add(new HandheldGpsStatusControl(component)); + args.Controls.Add(new HandheldGpsStatusControl(ent)); } } diff --git a/Content.Client/GPS/UI/HandheldGpsStatusControl.cs b/Content.Client/GPS/UI/HandheldGpsStatusControl.cs index 2b703105eac03b..de6a1031bad007 100644 --- a/Content.Client/GPS/UI/HandheldGpsStatusControl.cs +++ b/Content.Client/GPS/UI/HandheldGpsStatusControl.cs @@ -9,12 +9,12 @@ namespace Content.Client.GPS.UI; public sealed class HandheldGpsStatusControl : Control { - private readonly HandheldGPSComponent _parent; + private readonly Entity _parent; private readonly RichTextLabel _label; private float _updateDif; private readonly IEntityManager _entMan; - public HandheldGpsStatusControl(HandheldGPSComponent parent) + public HandheldGpsStatusControl(Entity parent) { _parent = parent; _entMan = IoCManager.Resolve(); @@ -28,10 +28,10 @@ protected override void FrameUpdate(FrameEventArgs args) base.FrameUpdate(args); _updateDif += args.DeltaSeconds; - if (_updateDif < _parent.UpdateRate) + if (_updateDif < _parent.Comp.UpdateRate) return; - _updateDif -= _parent.UpdateRate; + _updateDif -= _parent.Comp.UpdateRate; UpdateGpsDetails(); } @@ -39,7 +39,7 @@ protected override void FrameUpdate(FrameEventArgs args) private void UpdateGpsDetails() { var posText = "Error"; - if (_entMan.TryGetComponent(_parent.Owner, out TransformComponent? transComp)) + if (_entMan.TryGetComponent(_parent, out TransformComponent? transComp)) { var pos = transComp.MapPosition; var x = (int) pos.X; diff --git a/Content.Client/Guidebook/Controls/GuideEntityEmbed.xaml.cs b/Content.Client/Guidebook/Controls/GuideEntityEmbed.xaml.cs index 8fd11dc19eb953..d0b39abb374748 100644 --- a/Content.Client/Guidebook/Controls/GuideEntityEmbed.xaml.cs +++ b/Content.Client/Guidebook/Controls/GuideEntityEmbed.xaml.cs @@ -5,7 +5,6 @@ using Content.Client.ContextMenu.UI; using Content.Client.Examine; using Content.Client.Guidebook.Richtext; -using Content.Client.Verbs; using Content.Client.Verbs.UI; using Content.Shared.Input; using Content.Shared.Tag; @@ -37,7 +36,9 @@ public sealed partial class GuideEntityEmbed : BoxContainer, IDocumentTag public bool Interactive; - public SpriteComponent? Sprite => View.Sprite; + public Entity? Sprite => View.Entity == null || View.Sprite == null + ? null + : (View.Entity.Value, View.Sprite); public Vector2 Scale { @@ -127,7 +128,7 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); if (Sprite is not null) - _entityManager.DeleteEntity(Sprite.Owner); + _entityManager.DeleteEntity(Sprite); } public bool TryParseTag(Dictionary args, [NotNullWhen(true)] out Control? control) diff --git a/Content.Client/Hands/Systems/HandsSystem.cs b/Content.Client/Hands/Systems/HandsSystem.cs index 1189f5a66ec754..f44bc1ec97985d 100644 --- a/Content.Client/Hands/Systems/HandsSystem.cs +++ b/Content.Client/Hands/Systems/HandsSystem.cs @@ -1,7 +1,5 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; -using System.Numerics; -using Content.Client.Animations; using Content.Client.Examine; using Content.Client.Strip; using Content.Client.Verbs.UI; @@ -15,7 +13,6 @@ using Robust.Client.UserInterface; using Robust.Shared.Containers; using Robust.Shared.GameStates; -using Robust.Shared.Map; using Robust.Shared.Timing; namespace Content.Client.Hands.Systems @@ -416,21 +413,21 @@ public override void RemoveHand(EntityUid uid, string handName, HandsComponent? base.RemoveHand(uid, handName, handsComp); } - private void OnHandActivated(HandsComponent? handsComponent) + private void OnHandActivated(Entity? ent) { - if (handsComponent == null) + if (ent is not { } hand) return; - if (_playerManager.LocalPlayer?.ControlledEntity != handsComponent.Owner) + if (_playerManager.LocalPlayer?.ControlledEntity != hand.Owner) return; - if (handsComponent.ActiveHand == null) + if (hand.Comp.ActiveHand == null) { OnPlayerSetActiveHand?.Invoke(null); return; } - OnPlayerSetActiveHand?.Invoke(handsComponent.ActiveHand.Name); + OnPlayerSetActiveHand?.Invoke(hand.Comp.ActiveHand.Name); } } } diff --git a/Content.Client/HealthOverlay/HealthOverlaySystem.cs b/Content.Client/HealthOverlay/HealthOverlaySystem.cs index 9e1b39aed2ffce..baeb4fe0259e66 100644 --- a/Content.Client/HealthOverlay/HealthOverlaySystem.cs +++ b/Content.Client/HealthOverlay/HealthOverlaySystem.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using Content.Client.HealthOverlay.UI; using Content.Shared.Damage; using Content.Shared.GameTicking; @@ -6,8 +5,6 @@ using JetBrains.Annotations; using Robust.Client.GameObjects; using Robust.Client.Graphics; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; namespace Content.Client.HealthOverlay { @@ -80,10 +77,9 @@ public override void FrameUpdate(float frameTime) var viewBox = _eyeManager.GetWorldViewport().Enlarged(2.0f); - foreach (var (mobState, _) in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var entity, out var mobState, out _)) { - var entity = mobState.Owner; - if (_entities.GetComponent(ent).MapID != _entities.GetComponent(entity).MapID || !viewBox.Contains(_entities.GetComponent(entity).WorldPosition)) { diff --git a/Content.Client/HealthOverlay/UI/HealthOverlayGui.cs b/Content.Client/HealthOverlay/UI/HealthOverlayGui.cs index 9f0c94acce08b5..e8ec77e540048e 100644 --- a/Content.Client/HealthOverlay/UI/HealthOverlayGui.cs +++ b/Content.Client/HealthOverlay/UI/HealthOverlayGui.cs @@ -70,7 +70,7 @@ public void SetVisibility(bool val) Panel.Visible = val; } - private void MoreFrameUpdate(FrameEventArgs args) + private void MoreFrameUpdate() { if (_entities.Deleted(Entity)) { @@ -87,7 +87,7 @@ private void MoreFrameUpdate(FrameEventArgs args) var mobStateSystem = _entities.EntitySysManager.GetEntitySystem(); var mobThresholdSystem = _entities.EntitySysManager.GetEntitySystem(); - if (mobStateSystem.IsAlive(mobState.Owner, mobState)) + if (mobStateSystem.IsAlive(Entity, mobState)) { if (!mobThresholdSystem.TryGetThresholdForState(Entity,MobState.Critical, out var threshold)) { @@ -101,7 +101,7 @@ private void MoreFrameUpdate(FrameEventArgs args) HealthBar.Ratio = 1 - ((FixedPoint2)(damageable.TotalDamage / threshold)).Float(); HealthBar.Visible = true; } - else if (mobStateSystem.IsCritical(mobState.Owner, mobState)) + else if (mobStateSystem.IsCritical(Entity, mobState)) { HealthBar.Ratio = 0; HealthBar.Visible = false; @@ -118,7 +118,7 @@ private void MoreFrameUpdate(FrameEventArgs args) ((damageable.TotalDamage - critThreshold) / (deadThreshold - critThreshold)).Value.Float(); } - else if (mobStateSystem.IsDead(mobState.Owner, mobState)) + else if (mobStateSystem.IsDead(Entity, mobState)) { CritBar.Ratio = 0; CritBar.Visible = false; @@ -136,7 +136,7 @@ protected override void FrameUpdate(FrameEventArgs args) { base.FrameUpdate(args); - MoreFrameUpdate(args); + MoreFrameUpdate(); if (_entities.Deleted(Entity) || _eyeManager.CurrentMap != _entities.GetComponent(Entity).MapID) { diff --git a/Content.Client/IconSmoothing/IconSmoothSystem.cs b/Content.Client/IconSmoothing/IconSmoothSystem.cs index 5b931b7232f074..7334c2fd4320ee 100644 --- a/Content.Client/IconSmoothing/IconSmoothSystem.cs +++ b/Content.Client/IconSmoothing/IconSmoothSystem.cs @@ -236,6 +236,8 @@ private void CalculateNewSprite(EntityUid uid, return; } + var spriteEnt = (uid, sprite); + if (xform.Anchored) { if (!_mapManager.TryGetGrid(xform.GridUid, out grid)) @@ -248,13 +250,13 @@ private void CalculateNewSprite(EntityUid uid, switch (smooth.Mode) { case IconSmoothingMode.Corners: - CalculateNewSpriteCorners(grid, smooth, sprite, xform, smoothQuery); + CalculateNewSpriteCorners(grid, smooth, spriteEnt, xform, smoothQuery); break; case IconSmoothingMode.CardinalFlags: - CalculateNewSpriteCardinal(grid, smooth, sprite, xform, smoothQuery); + CalculateNewSpriteCardinal(grid, smooth, spriteEnt, xform, smoothQuery); break; case IconSmoothingMode.Diagonal: - CalculateNewSpriteDiagonal(grid, smooth, sprite, xform, smoothQuery); + CalculateNewSpriteDiagonal(grid, smooth, spriteEnt, xform, smoothQuery); break; default: throw new ArgumentOutOfRangeException(); @@ -262,11 +264,11 @@ private void CalculateNewSprite(EntityUid uid, } private void CalculateNewSpriteDiagonal(MapGridComponent? grid, IconSmoothComponent smooth, - SpriteComponent sprite, TransformComponent xform, EntityQuery smoothQuery) + Entity sprite, TransformComponent xform, EntityQuery smoothQuery) { if (grid == null) { - sprite.LayerSetState(0, $"{smooth.StateBase}0"); + sprite.Comp.LayerSetState(0, $"{smooth.StateBase}0"); return; } @@ -289,21 +291,21 @@ private void CalculateNewSpriteDiagonal(MapGridComponent? grid, IconSmoothCompon if (matching) { - sprite.LayerSetState(0, $"{smooth.StateBase}1"); + sprite.Comp.LayerSetState(0, $"{smooth.StateBase}1"); } else { - sprite.LayerSetState(0, $"{smooth.StateBase}0"); + sprite.Comp.LayerSetState(0, $"{smooth.StateBase}0"); } } - private void CalculateNewSpriteCardinal(MapGridComponent? grid, IconSmoothComponent smooth, SpriteComponent sprite, TransformComponent xform, EntityQuery smoothQuery) + private void CalculateNewSpriteCardinal(MapGridComponent? grid, IconSmoothComponent smooth, Entity sprite, TransformComponent xform, EntityQuery smoothQuery) { var dirs = CardinalConnectDirs.None; if (grid == null) { - sprite.LayerSetState(0, $"{smooth.StateBase}{(int) dirs}"); + sprite.Comp.LayerSetState(0, $"{smooth.StateBase}{(int) dirs}"); return; } @@ -317,7 +319,7 @@ private void CalculateNewSpriteCardinal(MapGridComponent? grid, IconSmoothCompon if (MatchingEntity(smooth, grid.GetAnchoredEntitiesEnumerator(pos.Offset(Direction.West)), smoothQuery)) dirs |= CardinalConnectDirs.West; - sprite.LayerSetState(0, $"{smooth.StateBase}{(int) dirs}"); + sprite.Comp.LayerSetState(0, $"{smooth.StateBase}{(int) dirs}"); var directions = DirectionFlag.None; @@ -330,7 +332,7 @@ private void CalculateNewSpriteCardinal(MapGridComponent? grid, IconSmoothCompon if ((dirs & CardinalConnectDirs.West) != 0x0) directions |= DirectionFlag.West; - CalculateEdge(sprite.Owner, directions, sprite); + CalculateEdge(sprite, directions, sprite); } private bool MatchingEntity(IconSmoothComponent smooth, AnchoredEntitiesEnumerator candidates, EntityQuery smoothQuery) @@ -348,7 +350,7 @@ private bool MatchingEntity(IconSmoothComponent smooth, AnchoredEntitiesEnumerat return false; } - private void CalculateNewSpriteCorners(MapGridComponent? grid, IconSmoothComponent smooth, SpriteComponent sprite, TransformComponent xform, EntityQuery smoothQuery) + private void CalculateNewSpriteCorners(MapGridComponent? grid, IconSmoothComponent smooth, Entity spriteEnt, TransformComponent xform, EntityQuery smoothQuery) { var (cornerNE, cornerNW, cornerSW, cornerSE) = grid == null ? (CornerFill.None, CornerFill.None, CornerFill.None, CornerFill.None) @@ -359,6 +361,7 @@ private void CalculateNewSpriteCorners(MapGridComponent? grid, IconSmoothCompone // It will also result in 4-8 sprite update events being raised when it only needs to be 1-2. // At the very least each event currently only queues a sprite for updating. // Oh god sprite component is a mess. + var sprite = spriteEnt.Comp; sprite.LayerSetState(CornerLayers.NE, $"{smooth.StateBase}{(int) cornerNE}"); sprite.LayerSetState(CornerLayers.SE, $"{smooth.StateBase}{(int) cornerSE}"); sprite.LayerSetState(CornerLayers.SW, $"{smooth.StateBase}{(int) cornerSW}"); @@ -378,7 +381,7 @@ private void CalculateNewSpriteCorners(MapGridComponent? grid, IconSmoothCompone if ((cornerNW & cornerSW) != CornerFill.None) directions |= DirectionFlag.West; - CalculateEdge(sprite.Owner, directions, sprite); + CalculateEdge(spriteEnt, directions, sprite); } private (CornerFill ne, CornerFill nw, CornerFill sw, CornerFill se) CalculateCornerFill(MapGridComponent grid, IconSmoothComponent smooth, TransformComponent xform, EntityQuery smoothQuery) diff --git a/Content.Client/Interactable/Components/InteractionOutlineComponent.cs b/Content.Client/Interactable/Components/InteractionOutlineComponent.cs index 9c72d763ff8cba..9803920257ca88 100644 --- a/Content.Client/Interactable/Components/InteractionOutlineComponent.cs +++ b/Content.Client/Interactable/Components/InteractionOutlineComponent.cs @@ -22,11 +22,11 @@ public sealed partial class InteractionOutlineComponent : Component private ShaderInstance? _shader; private int _lastRenderScale; - public void OnMouseEnter(bool inInteractionRange, int renderScale) + public void OnMouseEnter(EntityUid uid, bool inInteractionRange, int renderScale) { _lastRenderScale = renderScale; _inRange = inInteractionRange; - if (_entMan.TryGetComponent(Owner, out SpriteComponent? sprite) && sprite.PostShader == null) + if (_entMan.TryGetComponent(uid, out SpriteComponent? sprite) && sprite.PostShader == null) { // TODO why is this creating a new instance of the outline shader every time the mouse enters??? _shader = MakeNewShader(inInteractionRange, renderScale); @@ -34,9 +34,9 @@ public void OnMouseEnter(bool inInteractionRange, int renderScale) } } - public void OnMouseLeave() + public void OnMouseLeave(EntityUid uid) { - if (_entMan.TryGetComponent(Owner, out SpriteComponent? sprite)) + if (_entMan.TryGetComponent(uid, out SpriteComponent? sprite)) { if (sprite.PostShader == _shader) sprite.PostShader = null; @@ -47,9 +47,9 @@ public void OnMouseLeave() _shader = null; } - public void UpdateInRange(bool inInteractionRange, int renderScale) + public void UpdateInRange(EntityUid uid, bool inInteractionRange, int renderScale) { - if (_entMan.TryGetComponent(Owner, out SpriteComponent? sprite) + if (_entMan.TryGetComponent(uid, out SpriteComponent? sprite) && sprite.PostShader == _shader && (inInteractionRange != _inRange || _lastRenderScale != renderScale)) { diff --git a/Content.Client/Inventory/ClientInventorySystem.cs b/Content.Client/Inventory/ClientInventorySystem.cs index d6a487f3fd5a5b..ffff392aa4683a 100644 --- a/Content.Client/Inventory/ClientInventorySystem.cs +++ b/Content.Client/Inventory/ClientInventorySystem.cs @@ -107,7 +107,7 @@ private void OnDidEquip(InventorySlotsComponent component, DidEquipEvent args) private void OnShutdown(EntityUid uid, InventoryComponent component, ComponentShutdown args) { - if (component.Owner != _playerManager.LocalPlayer?.ControlledEntity) + if (uid != _playerManager.LocalPlayer?.ControlledEntity) return; OnUnlinkInventory?.Invoke(); diff --git a/Content.Client/Light/Components/LightBehaviourComponent.cs b/Content.Client/Light/Components/LightBehaviourComponent.cs index 282df5c8294b4a..7e8bf82a29e1e6 100644 --- a/Content.Client/Light/Components/LightBehaviourComponent.cs +++ b/Content.Client/Light/Components/LightBehaviourComponent.cs @@ -408,9 +408,9 @@ void ISerializationHooks.AfterDeserialization() /// /// If we disable all the light behaviours we want to be able to revert the light to its original state. /// - private void CopyLightSettings(string property) + private void CopyLightSettings(EntityUid uid, string property) { - if (_entMan.TryGetComponent(Owner, out PointLightComponent? light)) + if (_entMan.TryGetComponent(uid, out PointLightComponent? light)) { var propertyValue = AnimationHelper.GetAnimatableProperty(light, property); if (propertyValue != null) @@ -420,7 +420,7 @@ private void CopyLightSettings(string property) } else { - Logger.Warning($"{_entMan.GetComponent(Owner).EntityName} has a {nameof(LightBehaviourComponent)} but it has no {nameof(PointLightComponent)}! Check the prototype!"); + Logger.Warning($"{_entMan.GetComponent(uid).EntityName} has a {nameof(LightBehaviourComponent)} but it has no {nameof(PointLightComponent)}! Check the prototype!"); } } @@ -445,7 +445,7 @@ public void StartLightBehaviour(string id = "") { if (!animations.HasRunningAnimation(uid, animation, KeyPrefix + container.Key)) { - CopyLightSettings(container.LightBehaviour.Property); + CopyLightSettings(uid, container.LightBehaviour.Property); container.LightBehaviour.UpdatePlaybackValues(container.Animation); animations.Play(uid, animation, container.Animation, KeyPrefix + container.Key); } diff --git a/Content.Client/Light/RgbLightControllerSystem.cs b/Content.Client/Light/RgbLightControllerSystem.cs index a9ba34ca7d0485..ad8ca475828544 100644 --- a/Content.Client/Light/RgbLightControllerSystem.cs +++ b/Content.Client/Light/RgbLightControllerSystem.cs @@ -170,11 +170,12 @@ private void ResetOriginalColors(EntityUid uid, RgbLightControllerComponent? rgb public override void FrameUpdate(float frameTime) { - foreach (var (rgb, light, sprite) in EntityManager.EntityQuery()) + var lightQuery = EntityQueryEnumerator(); + while (lightQuery.MoveNext(out var uid, out var rgb, out var light, out var sprite)) { - var color = GetCurrentRgbColor(_gameTiming.RealTime, rgb.CreationTick.Value * _gameTiming.TickPeriod, rgb); + var color = GetCurrentRgbColor(_gameTiming.RealTime, rgb.CreationTick.Value * _gameTiming.TickPeriod, (uid, rgb)); - _lights.SetColor(light.Owner, color, light); + _lights.SetColor(uid, color, light); if (rgb.Layers != null) { @@ -196,17 +197,18 @@ public override void FrameUpdate(float frameTime) } } - foreach (var (map, rgb) in EntityQuery()) + var mapQuery = EntityQueryEnumerator(); + while (mapQuery.MoveNext(out var uid, out var map, out var rgb)) { - var color = GetCurrentRgbColor(_gameTiming.RealTime, rgb.CreationTick.Value * _gameTiming.TickPeriod, rgb); + var color = GetCurrentRgbColor(_gameTiming.RealTime, rgb.CreationTick.Value * _gameTiming.TickPeriod, (uid, rgb)); map.AmbientLightColor = color; } } - public static Color GetCurrentRgbColor(TimeSpan curTime, TimeSpan offset, RgbLightControllerComponent rgb) + public static Color GetCurrentRgbColor(TimeSpan curTime, TimeSpan offset, Entity rgb) { return Color.FromHsv(new Vector4( - (float) (((curTime.TotalSeconds - offset.TotalSeconds) * rgb.CycleRate + Math.Abs(rgb.Owner.Id * 0.1)) % 1), + (float) (((curTime.TotalSeconds - offset.TotalSeconds) * rgb.Comp.CycleRate + Math.Abs(rgb.Owner.Id * 0.1)) % 1), 1.0f, 1.0f, 1.0f diff --git a/Content.Client/NPC/NPCSteeringSystem.cs b/Content.Client/NPC/NPCSteeringSystem.cs index 271632d0184602..bb2145bce0c92b 100644 --- a/Content.Client/NPC/NPCSteeringSystem.cs +++ b/Content.Client/NPC/NPCSteeringSystem.cs @@ -38,9 +38,10 @@ public bool DebugEnabled Enabled = false }); - foreach (var comp in EntityQuery(true)) + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out var npc)) { - RemCompDeferred(comp.Owner); + RemCompDeferred(uid); } } } diff --git a/Content.Client/NPC/PathfindingSystem.cs b/Content.Client/NPC/PathfindingSystem.cs index 518c1f32aaeaa7..548edd601ce871 100644 --- a/Content.Client/NPC/PathfindingSystem.cs +++ b/Content.Client/NPC/PathfindingSystem.cs @@ -2,11 +2,13 @@ using System.Numerics; using System.Text; using Content.Shared.NPC; +using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Input; using Robust.Client.ResourceManagement; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -20,6 +22,7 @@ public sealed class PathfindingSystem : SharedPathfindingSystem [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IResourceCache _cache = default!; [Dependency] private readonly NPCSteeringSystem _steering = default!; + [Dependency] private readonly MapSystem _mapSystem = default!; public PathfindingDebugMode Modes { @@ -36,7 +39,7 @@ public PathfindingDebugMode Modes } else if (!overlayManager.HasOverlay()) { - overlayManager.AddOverlay(new PathfindingOverlay(EntityManager, _eyeManager, _inputManager, _mapManager, _cache, this)); + overlayManager.AddOverlay(new PathfindingOverlay(EntityManager, _eyeManager, _inputManager, _mapManager, _cache, this, _mapSystem)); } if ((value & PathfindingDebugMode.Steering) != 0x0) @@ -136,10 +139,12 @@ public sealed class PathfindingOverlay : Overlay private readonly IInputManager _inputManager; private readonly IMapManager _mapManager; private readonly PathfindingSystem _system; + private readonly MapSystem _mapSystem; public override OverlaySpace Space => OverlaySpace.ScreenSpace | OverlaySpace.WorldSpace; private readonly Font _font; + private List> _grids = new(); public PathfindingOverlay( IEntityManager entManager, @@ -147,13 +152,15 @@ public PathfindingOverlay( IInputManager inputManager, IMapManager mapManager, IResourceCache cache, - PathfindingSystem system) + PathfindingSystem system, + MapSystem mapSystem) { _entManager = entManager; _eyeManager = eyeManager; _inputManager = inputManager; _mapManager = mapManager; _system = system; + _mapSystem = mapSystem; _font = new VectorFont(cache.GetResource("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10); } @@ -182,11 +189,14 @@ private void DrawScreen(OverlayDrawArgs args, DrawingHandleScreen screenHandle) { var found = false; - foreach (var grid in _mapManager.FindGridsIntersecting(mouseWorldPos.MapId, aabb)) + _grids.Clear(); + _mapManager.FindGridsIntersecting(mouseWorldPos.MapId, aabb, ref _grids); + + foreach (var grid in _grids) { - var netGrid = _entManager.GetNetEntity(grid.Owner); + var netGrid = _entManager.GetNetEntity(grid); - if (found || !_system.Breadcrumbs.TryGetValue(netGrid, out var crumbs) || !xformQuery.TryGetComponent(grid.Owner, out var gridXform)) + if (found || !_system.Breadcrumbs.TryGetValue(netGrid, out var crumbs) || !xformQuery.TryGetComponent(grid, out var gridXform)) continue; var (_, _, worldMatrix, invWorldMatrix) = gridXform.GetWorldPositionRotationMatrixWithInv(); @@ -262,7 +272,7 @@ private void DrawScreen(OverlayDrawArgs args, DrawingHandleScreen screenHandle) if (!_system.Polys.TryGetValue(_entManager.GetNetEntity(gridUid), out var data)) return; - var tileRef = grid.GetTileRef(mouseWorldPos); + var tileRef = _mapSystem.GetTileRef(gridUid, grid, mouseWorldPos); var localPos = tileRef.GridIndices; var chunkOrigin = localPos / SharedPathfindingSystem.ChunkSize; @@ -333,12 +343,15 @@ private void DrawWorld(OverlayDrawArgs args, DrawingHandleWorld worldHandle) if ((_system.Modes & PathfindingDebugMode.Breadcrumbs) != 0x0 && mouseWorldPos.MapId == args.MapId) { - foreach (var grid in _mapManager.FindGridsIntersecting(mouseWorldPos.MapId, aabb)) + _grids.Clear(); + _mapManager.FindGridsIntersecting(mouseWorldPos.MapId, aabb, ref _grids); + + foreach (var grid in _grids) { - var netGrid = _entManager.GetNetEntity(grid.Owner); + var netGrid = _entManager.GetNetEntity(grid); if (!_system.Breadcrumbs.TryGetValue(netGrid, out var crumbs) || - !xformQuery.TryGetComponent(grid.Owner, out var gridXform)) + !xformQuery.TryGetComponent(grid, out var gridXform)) { continue; } @@ -392,12 +405,15 @@ private void DrawWorld(OverlayDrawArgs args, DrawingHandleWorld worldHandle) if ((_system.Modes & PathfindingDebugMode.Polys) != 0x0 && mouseWorldPos.MapId == args.MapId) { - foreach (var grid in _mapManager.FindGridsIntersecting(args.MapId, aabb)) + _grids.Clear(); + _mapManager.FindGridsIntersecting(args.MapId, aabb, ref _grids); + + foreach (var grid in _grids) { - var netGrid = _entManager.GetNetEntity(grid.Owner); + var netGrid = _entManager.GetNetEntity(grid); if (!_system.Polys.TryGetValue(netGrid, out var data) || - !xformQuery.TryGetComponent(grid.Owner, out var gridXform)) + !xformQuery.TryGetComponent(grid, out var gridXform)) continue; var (_, _, worldMatrix, invWorldMatrix) = gridXform.GetWorldPositionRotationMatrixWithInv(); @@ -428,12 +444,15 @@ private void DrawWorld(OverlayDrawArgs args, DrawingHandleWorld worldHandle) if ((_system.Modes & PathfindingDebugMode.PolyNeighbors) != 0x0 && mouseWorldPos.MapId == args.MapId) { - foreach (var grid in _mapManager.FindGridsIntersecting(args.MapId, aabb)) + _grids.Clear(); + _mapManager.FindGridsIntersecting(args.MapId, aabb, ref _grids); + + foreach (var grid in _grids) { - var netGrid = _entManager.GetNetEntity(grid.Owner); + var netGrid = _entManager.GetNetEntity(grid); if (!_system.Polys.TryGetValue(netGrid, out var data) || - !xformQuery.TryGetComponent(grid.Owner, out var gridXform)) + !xformQuery.TryGetComponent(grid, out var gridXform)) continue; var (_, _, worldMatrix, invMatrix) = gridXform.GetWorldPositionRotationMatrixWithInv(); @@ -484,12 +503,15 @@ private void DrawWorld(OverlayDrawArgs args, DrawingHandleWorld worldHandle) if ((_system.Modes & PathfindingDebugMode.Chunks) != 0x0) { - foreach (var grid in _mapManager.FindGridsIntersecting(args.MapId, args.WorldBounds)) + _grids.Clear(); + _mapManager.FindGridsIntersecting(args.MapId, args.WorldBounds, ref _grids); + + foreach (var grid in _grids) { - var netGrid = _entManager.GetNetEntity(grid.Owner); + var netGrid = _entManager.GetNetEntity(grid); if (!_system.Breadcrumbs.TryGetValue(netGrid, out var crumbs) || - !xformQuery.TryGetComponent(grid.Owner, out var gridXform)) + !xformQuery.TryGetComponent(grid, out var gridXform)) continue; var (_, _, worldMatrix, invWorldMatrix) = gridXform.GetWorldPositionRotationMatrixWithInv(); diff --git a/Content.Client/NetworkConfigurator/NetworkConfiguratorLinkOverlay.cs b/Content.Client/NetworkConfigurator/NetworkConfiguratorLinkOverlay.cs index ca135f6ca202ec..4fcdada86842ec 100644 --- a/Content.Client/NetworkConfigurator/NetworkConfiguratorLinkOverlay.cs +++ b/Content.Client/NetworkConfigurator/NetworkConfiguratorLinkOverlay.cs @@ -1,10 +1,9 @@ using Content.Client.NetworkConfigurator.Systems; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Robust.Client.Graphics; using Robust.Shared.Enums; -using Robust.Shared.Random; using Robust.Shared.Map; +using Robust.Shared.Random; namespace Content.Client.NetworkConfigurator; @@ -28,24 +27,25 @@ public NetworkConfiguratorLinkOverlay() protected override void Draw(in OverlayDrawArgs args) { - foreach (var tracker in _entityManager.EntityQuery()) + var query = _entityManager.EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) { - if (_entityManager.Deleted(tracker.Owner) || !_entityManager.TryGetComponent(tracker.Owner, out DeviceListComponent? deviceList)) + if (_entityManager.Deleted(uid) || !_entityManager.TryGetComponent(uid, out DeviceListComponent? deviceList)) { - _entityManager.RemoveComponentDeferred(tracker.Owner); + _entityManager.RemoveComponentDeferred(uid); continue; } - if (!Colors.TryGetValue(tracker.Owner, out var color)) + if (!Colors.TryGetValue(uid, out var color)) { color = new Color( _random.Next(0, 255), _random.Next(0, 255), _random.Next(0, 255)); - Colors.Add(tracker.Owner, color); + Colors.Add(uid, color); } - var sourceTransform = _entityManager.GetComponent(tracker.Owner); + var sourceTransform = _entityManager.GetComponent(uid); if (sourceTransform.MapID == MapId.Nullspace) { // Can happen if the item is outside the client's view. In that case, @@ -53,7 +53,7 @@ protected override void Draw(in OverlayDrawArgs args) continue; } - foreach (var device in _deviceListSystem.GetAllDevices(tracker.Owner, deviceList)) + foreach (var device in _deviceListSystem.GetAllDevices(uid, deviceList)) { if (_entityManager.Deleted(device)) { @@ -66,7 +66,7 @@ protected override void Draw(in OverlayDrawArgs args) continue; } - args.WorldHandle.DrawLine(sourceTransform.WorldPosition, linkTransform.WorldPosition, Colors[tracker.Owner]); + args.WorldHandle.DrawLine(sourceTransform.WorldPosition, linkTransform.WorldPosition, Colors[uid]); } } } diff --git a/Content.Client/NetworkConfigurator/Systems/NetworkConfiguratorSystem.cs b/Content.Client/NetworkConfigurator/Systems/NetworkConfiguratorSystem.cs index af1861dc47a077..7bd13a12b27b6c 100644 --- a/Content.Client/NetworkConfigurator/Systems/NetworkConfiguratorSystem.cs +++ b/Content.Client/NetworkConfigurator/Systems/NetworkConfiguratorSystem.cs @@ -1,9 +1,7 @@ -using System.Linq; using Content.Client.Actions; using Content.Client.Items; using Content.Client.Message; using Content.Client.Stylesheets; -using Content.Shared.Actions; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Systems; using Content.Shared.Input; @@ -94,9 +92,10 @@ public void ClearAllOverlays() return; } - foreach (var tracker in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) { - RemCompDeferred(tracker.Owner); + RemCompDeferred(uid); } _actions.RemoveAction(overlay.Action); diff --git a/Content.Client/NodeContainer/NodeVisualizationOverlay.cs b/Content.Client/NodeContainer/NodeVisualizationOverlay.cs index 85198f01d0cf24..f10eb9ed8b14e0 100644 --- a/Content.Client/NodeContainer/NodeVisualizationOverlay.cs +++ b/Content.Client/NodeContainer/NodeVisualizationOverlay.cs @@ -6,6 +6,7 @@ using Robust.Client.ResourceManagement; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Timing; using Robust.Shared.Utility; using static Content.Shared.NodeContainer.NodeVis; @@ -22,6 +23,7 @@ public sealed class NodeVisualizationOverlay : Overlay private readonly Dictionary<(int, int), NodeRenderData> _nodeIndex = new(); private readonly Dictionary>> _gridIndex = new (); + private List> _grids = new(); private readonly Font _font; @@ -112,21 +114,24 @@ private void DrawWorld(in OverlayDrawArgs overlayDrawArgs) var worldAABB = overlayDrawArgs.WorldAABB; var xformQuery = _entityManager.GetEntityQuery(); - foreach (var grid in _mapManager.FindGridsIntersecting(map, worldAABB)) + _grids.Clear(); + _mapManager.FindGridsIntersecting(map, worldAABB, ref _grids); + + foreach (var grid in _grids) { - foreach (var entity in _lookup.GetEntitiesIntersecting(grid.Owner, worldAABB)) + foreach (var entity in _lookup.GetEntitiesIntersecting(grid, worldAABB)) { if (!_system.Entities.TryGetValue(entity, out var nodeData)) continue; - var gridDict = _gridIndex.GetOrNew(grid.Owner); + var gridDict = _gridIndex.GetOrNew(grid); var coords = xformQuery.GetComponent(entity).Coordinates; // TODO: This probably shouldn't be capable of returning NaN... if (float.IsNaN(coords.Position.X) || float.IsNaN(coords.Position.Y)) continue; - var tile = gridDict.GetOrNew(grid.TileIndicesFor(coords)); + var tile = gridDict.GetOrNew(grid.Comp.TileIndicesFor(coords)); foreach (var (group, nodeDatum) in nodeData) { @@ -141,7 +146,7 @@ private void DrawWorld(in OverlayDrawArgs overlayDrawArgs) foreach (var (gridId, gridDict) in _gridIndex) { var grid = _mapManager.GetGrid(gridId); - var (_, _, worldMatrix, invMatrix) = _entityManager.GetComponent(grid.Owner).GetWorldPositionRotationMatrixWithInv(); + var (_, _, worldMatrix, invMatrix) = _entityManager.GetComponent(gridId).GetWorldPositionRotationMatrixWithInv(); var lCursorBox = invMatrix.TransformBox(cursorBox); foreach (var (pos, list) in gridDict) diff --git a/Content.Client/Outline/InteractionOutlineSystem.cs b/Content.Client/Outline/InteractionOutlineSystem.cs index ce1945ed033c99..bb341785d038f4 100644 --- a/Content.Client/Outline/InteractionOutlineSystem.cs +++ b/Content.Client/Outline/InteractionOutlineSystem.cs @@ -64,7 +64,7 @@ public void SetCvarEnabled(bool cvarEnabled) return; if (TryComp(_lastHoveredEntity, out InteractionOutlineComponent? outline)) - outline.OnMouseLeave(); + outline.OnMouseLeave(_lastHoveredEntity.Value); } public void SetEnabled(bool enabled) @@ -83,7 +83,7 @@ public void SetEnabled(bool enabled) return; if (TryComp(_lastHoveredEntity, out InteractionOutlineComponent? outline)) - outline.OnMouseLeave(); + outline.OnMouseLeave(_lastHoveredEntity.Value); } public override void FrameUpdate(float frameTime) @@ -146,7 +146,7 @@ public override void FrameUpdate(float frameTime) { if (entityToClick != null && TryComp(entityToClick, out outline)) { - outline.UpdateInRange(inRange, renderScale); + outline.UpdateInRange(entityToClick.Value, inRange, renderScale); } return; @@ -155,14 +155,14 @@ public override void FrameUpdate(float frameTime) if (_lastHoveredEntity != null && !Deleted(_lastHoveredEntity) && TryComp(_lastHoveredEntity, out outline)) { - outline.OnMouseLeave(); + outline.OnMouseLeave(_lastHoveredEntity.Value); } _lastHoveredEntity = entityToClick; if (_lastHoveredEntity != null && TryComp(_lastHoveredEntity, out outline)) { - outline.OnMouseEnter(inRange, renderScale); + outline.OnMouseEnter(_lastHoveredEntity.Value, inRange, renderScale); } } } diff --git a/Content.Client/Pinpointer/NavMapSystem.cs b/Content.Client/Pinpointer/NavMapSystem.cs index 35b0a32b56aaa1..d346d90904a393 100644 --- a/Content.Client/Pinpointer/NavMapSystem.cs +++ b/Content.Client/Pinpointer/NavMapSystem.cs @@ -4,6 +4,7 @@ using Robust.Shared.Enums; using Robust.Shared.GameStates; using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Client.Pinpointer; @@ -42,6 +43,8 @@ public sealed class NavMapOverlay : Overlay public override OverlaySpace Space => OverlaySpace.WorldSpace; + private List> _grids = new(); + public NavMapOverlay(IEntityManager entManager, IMapManager mapManager) { _entManager = entManager; @@ -54,9 +57,12 @@ protected override void Draw(in OverlayDrawArgs args) var xformQuery = _entManager.GetEntityQuery(); var scale = Matrix3.CreateScale(new Vector2(1f, 1f)); - foreach (var grid in _mapManager.FindGridsIntersecting(args.MapId, args.WorldBounds)) + _grids.Clear(); + _mapManager.FindGridsIntersecting(args.MapId, args.WorldBounds, ref _grids); + + foreach (var grid in _grids) { - if (!query.TryGetComponent(grid.Owner, out var navMap) || !xformQuery.TryGetComponent(grid.Owner, out var xform)) + if (!query.TryGetComponent(grid, out var navMap) || !xformQuery.TryGetComponent(grid.Owner, out var xform)) continue; // TODO: Faster helper method @@ -67,9 +73,9 @@ protected override void Draw(in OverlayDrawArgs args) args.WorldHandle.SetTransform(matty); - for (var x = Math.Floor(localAABB.Left); x <= Math.Ceiling(localAABB.Right); x += SharedNavMapSystem.ChunkSize * grid.TileSize) + for (var x = Math.Floor(localAABB.Left); x <= Math.Ceiling(localAABB.Right); x += SharedNavMapSystem.ChunkSize * grid.Comp.TileSize) { - for (var y = Math.Floor(localAABB.Bottom); y <= Math.Ceiling(localAABB.Top); y += SharedNavMapSystem.ChunkSize * grid.TileSize) + for (var y = Math.Floor(localAABB.Bottom); y <= Math.Ceiling(localAABB.Top); y += SharedNavMapSystem.ChunkSize * grid.Comp.TileSize) { var floored = new Vector2i((int) x, (int) y); @@ -89,7 +95,7 @@ protected override void Draw(in OverlayDrawArgs args) continue; var tile = chunk.Origin * SharedNavMapSystem.ChunkSize + SharedNavMapSystem.GetTile(mask); - args.WorldHandle.DrawRect(new Box2(tile * grid.TileSize, (tile + 1) * grid.TileSize), Color.Aqua, false); + args.WorldHandle.DrawRect(new Box2(tile * grid.Comp.TileSize, (tile + 1) * grid.Comp.TileSize), Color.Aqua, false); } } } diff --git a/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs b/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs index b10025f56ffbbd..adc535b2684b4f 100644 --- a/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs +++ b/Content.Client/Radiation/Overlays/RadiationPulseOverlay.cs @@ -1,4 +1,3 @@ -using System.Linq; using System.Numerics; using Content.Shared.Radiation.Components; using Robust.Client.Graphics; @@ -81,11 +80,10 @@ private void RadiationQuery(IEye? currentEye) var currentEyeLoc = currentEye.Position; - var pulses = _entityManager.EntityQuery(); - foreach (var pulse in pulses) //Add all pulses that are not added yet but qualify + var pulses = _entityManager.EntityQueryEnumerator(); + //Add all pulses that are not added yet but qualify + while (pulses.MoveNext(out var pulseEntity, out var pulse)) { - var pulseEntity = pulse.Owner; - if (!_pulses.ContainsKey(pulseEntity) && PulseQualifies(pulseEntity, currentEyeLoc)) { _pulses.Add( diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs index 66768e9fda2527..427ed039e1726d 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Shared.Movement.Components; using Robust.Client.GameObjects; using Robust.Shared.Map; @@ -134,9 +133,20 @@ private bool TryFindFallbackSpawn(out EntityCoordinates coords) return true; } - var uid = EntityQuery().MaxBy(x => x.LocalAABB.Size.LengthSquared())?.Owner; - coords = new EntityCoordinates(uid ?? default, default); - return uid != null; + Entity? maxUid = null; + float? maxSize = null; + while (EntityQueryEnumerator().MoveNext(out var uid, out var grid)) + { + var size = grid.LocalAABB.Size.LengthSquared(); + if (maxSize == null || size > maxSize) + { + maxUid = (uid, grid); + maxSize = size; + } + } + + coords = new EntityCoordinates(maxUid ?? default, default); + return maxUid != null; } private void OnTerminating(EntityUid uid, ReplaySpectatorComponent component, ref EntityTerminatingEvent args) diff --git a/Content.Client/Revenant/RevenantOverloadedLightsSystem.cs b/Content.Client/Revenant/RevenantOverloadedLightsSystem.cs index 9fd4e4f068f361..3f3f3d876c5c47 100644 --- a/Content.Client/Revenant/RevenantOverloadedLightsSystem.cs +++ b/Content.Client/Revenant/RevenantOverloadedLightsSystem.cs @@ -55,7 +55,7 @@ private void OnShutdown(EntityUid uid, RevenantOverloadedLightsComponent compone Dirty(uid, light); } - protected override void OnZap(RevenantOverloadedLightsComponent component) + protected override void OnZap(Entity component) { } diff --git a/Content.Client/Rotation/RotationVisualizerSystem.cs b/Content.Client/Rotation/RotationVisualizerSystem.cs index 106bd797110121..177c149faa1734 100644 --- a/Content.Client/Rotation/RotationVisualizerSystem.cs +++ b/Content.Client/Rotation/RotationVisualizerSystem.cs @@ -77,6 +77,6 @@ public void AnimateSpriteRotation(EntityUid uid, SpriteComponent spriteComp, Ang } }; - AnimationSystem.Play(animationComp, animation, animationKey); + AnimationSystem.Play((uid, animationComp), animation, animationKey); } } diff --git a/Content.Client/Shuttles/UI/DockingControl.cs b/Content.Client/Shuttles/UI/DockingControl.cs index e477b5a1a22609..92d9959110988e 100644 --- a/Content.Client/Shuttles/UI/DockingControl.cs +++ b/Content.Client/Shuttles/UI/DockingControl.cs @@ -4,6 +4,7 @@ using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Physics; using Robust.Shared.Physics.Collision.Shapes; @@ -43,6 +44,8 @@ public class DockingControl : Control ///
public Dictionary> Docks = new(); + private List> _grids = new(); + public DockingControl() { _entManager = IoCManager.Resolve(); @@ -147,17 +150,19 @@ protected override void Draw(DrawingHandleScreen handle) // TODO: Getting some overdraw so need to fix that. var xformQuery = _entManager.GetEntityQuery(); - foreach (var grid in _mapManager.FindGridsIntersecting(gridXform.MapID, - new Box2(worldPos - RangeVector, worldPos + RangeVector))) + _grids.Clear(); + _mapManager.FindGridsIntersecting(gridXform.MapID, new Box2(worldPos - RangeVector, worldPos + RangeVector)); + + foreach (var grid in _grids) { if (grid.Owner == GridEntity) continue; // Draw the fixtures before drawing any docks in range. - if (!_entManager.TryGetComponent(grid.Owner, out var gridFixtures)) + if (!_entManager.TryGetComponent(grid, out var gridFixtures)) continue; - var gridMatrix = xformQuery.GetComponent(grid.Owner).WorldMatrix; + var gridMatrix = xformQuery.GetComponent(grid).WorldMatrix; Matrix3.Multiply(in gridMatrix, in invMatrix, out var matty); @@ -204,7 +209,7 @@ protected override void Draw(DrawingHandleScreen handle) } // Draw any docks on that grid - if (Docks.TryGetValue(_entManager.GetNetEntity(grid.Owner), out var gridDocks)) + if (Docks.TryGetValue(_entManager.GetNetEntity(grid), out var gridDocks)) { foreach (var dock in gridDocks) { diff --git a/Content.Client/Shuttles/UI/RadarControl.cs b/Content.Client/Shuttles/UI/RadarControl.cs index fa411ca9ba3bec..764fb854a74344 100644 --- a/Content.Client/Shuttles/UI/RadarControl.cs +++ b/Content.Client/Shuttles/UI/RadarControl.cs @@ -3,9 +3,7 @@ using Content.Shared.Shuttles.BUIStates; using Content.Shared.Shuttles.Components; using JetBrains.Annotations; -using Content.Shared.Shuttles.Systems; using Robust.Client.Graphics; -using Robust.Client.Input; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Collections; @@ -13,7 +11,6 @@ using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Physics; -using Robust.Shared.Physics.Collision.Shapes; using Robust.Shared.Physics.Components; using Robust.Shared.Utility; @@ -57,6 +54,8 @@ public sealed class RadarControl : MapGridControl ///
public Action? OnRadarClick; + private List> _grids = new(); + public RadarControl() : base(64f, 256f, 256f) { _transform = _entManager.System(); @@ -198,9 +197,11 @@ protected override void Draw(DrawingHandleScreen handle) var shown = new HashSet(); + _grids.Clear(); + _mapManager.FindGridsIntersecting(xform.MapID, new Box2(pos - MaxRadarRangeVector, pos + MaxRadarRangeVector), ref _grids); + // Draw other grids... differently - foreach (var grid in _mapManager.FindGridsIntersecting(xform.MapID, - new Box2(pos - MaxRadarRangeVector, pos + MaxRadarRangeVector))) + foreach (var grid in _grids) { var gUid = grid.Owner; if (gUid == ourGridId || !fixturesQuery.HasComponent(gUid)) @@ -240,7 +241,7 @@ protected override void Draw(DrawingHandleScreen handle) (iff == null && IFFComponent.ShowIFFDefault || (iff.Flags & IFFFlags.HideLabel) == 0x0)) { - var gridBounds = grid.LocalAABB; + var gridBounds = grid.Comp.LocalAABB; Label label; if (!_iffControls.TryGetValue(gUid, out var control)) diff --git a/Content.Client/Sprite/SpriteFadeSystem.cs b/Content.Client/Sprite/SpriteFadeSystem.cs index f6a94e6db1b6a2..d4ed1285a893cf 100644 --- a/Content.Client/Sprite/SpriteFadeSystem.cs +++ b/Content.Client/Sprite/SpriteFadeSystem.cs @@ -77,12 +77,13 @@ _stateManager.CurrentState is GameplayState state && } } - foreach (var comp in EntityQuery(true)) + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out var comp)) { if (_comps.Contains(comp)) continue; - if (!spriteQuery.TryGetComponent(comp.Owner, out var sprite)) + if (!spriteQuery.TryGetComponent(uid, out var sprite)) continue; var newColor = Math.Min(sprite.Color.A + change, comp.OriginalAlpha); @@ -93,7 +94,7 @@ _stateManager.CurrentState is GameplayState state && } else { - RemCompDeferred(comp.Owner); + RemCompDeferred(uid); } } diff --git a/Content.Client/Storage/Systems/ItemMapperSystem.cs b/Content.Client/Storage/Systems/ItemMapperSystem.cs index 71c1c5b3be55d9..79fbc96491cc05 100644 --- a/Content.Client/Storage/Systems/ItemMapperSystem.cs +++ b/Content.Client/Storage/Systems/ItemMapperSystem.cs @@ -21,26 +21,27 @@ private void OnStartup(EntityUid uid, ItemMapperComponent component, ComponentSt { if (TryComp(uid, out var sprite)) { - component.RSIPath ??= sprite.BaseRSI!.Path!; + component.RSIPath ??= sprite.BaseRSI!.Path; } } private void OnAppearance(EntityUid uid, ItemMapperComponent component, ref AppearanceChangeEvent args) { - if (TryComp(component.Owner, out var spriteComponent)) + if (TryComp(uid, out var spriteComponent)) { if (component.SpriteLayers.Count == 0) { - InitLayers(component, spriteComponent, args.Component); + InitLayers((uid, component, spriteComponent, args.Component)); } - EnableLayers(component, spriteComponent, args.Component); + EnableLayers((uid, component, spriteComponent, args.Component)); } } - private void InitLayers(ItemMapperComponent component, SpriteComponent spriteComponent, AppearanceComponent appearance) + private void InitLayers(Entity ent) { - if (!_appearance.TryGetData(appearance.Owner, StorageMapVisuals.InitLayers, out var wrapper, appearance)) + var (owner, component, spriteComponent, appearance) = ent; + if (!_appearance.TryGetData(owner, StorageMapVisuals.InitLayers, out var wrapper, appearance)) return; component.SpriteLayers.AddRange(wrapper.QueuedEntities); @@ -53,9 +54,10 @@ private void InitLayers(ItemMapperComponent component, SpriteComponent spriteCom } } - private void EnableLayers(ItemMapperComponent component, SpriteComponent spriteComponent, AppearanceComponent appearance) + private void EnableLayers(Entity ent) { - if (!_appearance.TryGetData(appearance.Owner, StorageMapVisuals.LayerChanged, out var wrapper, appearance)) + var (owner, component, spriteComponent, appearance) = ent; + if (!_appearance.TryGetData(owner, StorageMapVisuals.LayerChanged, out var wrapper, appearance)) return; foreach (var layerName in component.SpriteLayers) diff --git a/Content.Client/SubFloor/TrayScannerSystem.cs b/Content.Client/SubFloor/TrayScannerSystem.cs index 312a513e32fa58..6497ba1d688b34 100644 --- a/Content.Client/SubFloor/TrayScannerSystem.cs +++ b/Content.Client/SubFloor/TrayScannerSystem.cs @@ -1,4 +1,3 @@ -using Content.Client.Hands; using Content.Shared.Hands.EntitySystems; using Content.Shared.Inventory; using Content.Shared.SubFloor; @@ -41,7 +40,7 @@ public override void Update(float frameTime) var playerPos = _transform.GetWorldPosition(playerXform, xformQuery); var playerMap = playerXform.MapID; var range = 0f; - HashSet inRange; + HashSet> inRange; var scannerQuery = GetEntityQuery(); // TODO: Should probably sub to player attached changes / inventory changes but inventory's @@ -73,23 +72,20 @@ public override void Update(float frameTime) canSee = true; } + inRange = new HashSet>(); + if (canSee) { - inRange = _lookup.GetComponentsInRange(playerMap, playerPos, range); + _lookup.GetEntitiesInRange(playerMap, playerPos, range, inRange); - foreach (var comp in inRange) + foreach (var (uid, comp) in inRange) { - var uid = comp.Owner; if (!comp.IsUnderCover || !comp.BlockAmbience | !comp.BlockInteractions) continue; EnsureComp(uid); } } - else - { - inRange = new HashSet(); - } var revealedQuery = AllEntityQuery(); var subfloorQuery = GetEntityQuery(); @@ -102,7 +98,7 @@ public override void Update(float frameTime) xform.MapID != MapId.Nullspace && xform.MapID == playerMap && xform.Anchored && - inRange.Contains(subfloor)) + inRange.Contains((uid, subfloor))) { // Due to the fact client is predicting this server states will reset it constantly if ((!_appearance.TryGetData(uid, SubFloorVisuals.ScannerRevealed, out bool value) || !value) && diff --git a/Content.Client/UserInterface/Controls/SlotControl.cs b/Content.Client/UserInterface/Controls/SlotControl.cs index b0a2198443b56c..37f8de88d6d2c8 100644 --- a/Content.Client/UserInterface/Controls/SlotControl.cs +++ b/Content.Client/UserInterface/Controls/SlotControl.cs @@ -188,10 +188,10 @@ public void ClearHover() if (!EntityHover) return; - var tempQualifier = HoverSpriteView.Sprite; + var tempQualifier = HoverSpriteView.Ent; if (tempQualifier != null) { - IoCManager.Resolve().QueueDeleteEntity(tempQualifier.Owner); + IoCManager.Resolve().QueueDeleteEntity(tempQualifier); } HoverSpriteView.SetEntity(null); diff --git a/Content.Client/Weather/WeatherOverlay.cs b/Content.Client/Weather/WeatherOverlay.cs index bd5627292accee..12af31b8631b6f 100644 --- a/Content.Client/Weather/WeatherOverlay.cs +++ b/Content.Client/Weather/WeatherOverlay.cs @@ -7,9 +7,9 @@ using Robust.Client.ResourceManagement; using Robust.Client.Utility; using Robust.Shared.Enums; -using Robust.Shared.Graphics; using Robust.Shared.Graphics.RSI; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; using Robust.Shared.Prototypes; using Robust.Shared.Timing; @@ -99,13 +99,17 @@ private void DrawWorld(in OverlayDrawArgs args, WeatherPrototype weatherProto, f var xformQuery = _entManager.GetEntityQuery(); var weatherIgnoreQuery = _entManager.GetEntityQuery(); - foreach (var grid in _mapManager.FindGridsIntersecting(mapId, worldAABB)) + // idk if this is safe to cache in a field and clear sloth help + var grids = new List>(); + _mapManager.FindGridsIntersecting(mapId, worldAABB, ref grids); + + foreach (var grid in grids) { - var matrix = _transform.GetWorldMatrix(grid.Owner, xformQuery); + var matrix = _transform.GetWorldMatrix(grid, xformQuery); Matrix3.Multiply(in matrix, in invMatrix, out var matty); worldHandle.SetTransform(matty); - foreach (var tile in grid.GetTilesIntersecting(worldAABB)) + foreach (var tile in grid.Comp.GetTilesIntersecting(worldAABB)) { // Ignored tiles for stencil if (_weather.CanWeatherAffect(grid, tile, weatherIgnoreQuery, bodyQuery)) @@ -113,8 +117,8 @@ private void DrawWorld(in OverlayDrawArgs args, WeatherPrototype weatherProto, f continue; } - var gridTile = new Box2(tile.GridIndices * grid.TileSize, - (tile.GridIndices + Vector2i.One) * grid.TileSize); + var gridTile = new Box2(tile.GridIndices * grid.Comp.TileSize, + (tile.GridIndices + Vector2i.One) * grid.Comp.TileSize); worldHandle.DrawRect(gridTile, Color.White); } diff --git a/Content.Client/Weather/WeatherSystem.cs b/Content.Client/Weather/WeatherSystem.cs index 43ad41ceaad9fe..e1742f47900048 100644 --- a/Content.Client/Weather/WeatherSystem.cs +++ b/Content.Client/Weather/WeatherSystem.cs @@ -18,6 +18,7 @@ public sealed class WeatherSystem : SharedWeatherSystem [Dependency] private readonly IOverlayManager _overlayManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly AudioSystem _audio = default!; + [Dependency] private readonly MapSystem _mapSystem = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; @@ -76,8 +77,9 @@ protected override void Run(EntityUid uid, WeatherData weather, WeatherPrototype // Work out tiles nearby to determine volume. if (TryComp(entXform.GridUid, out var grid)) { + var gridId = entXform.GridUid.Value; // Floodfill to the nearest tile and use that for audio. - var seed = grid.GetTileRef(entXform.Coordinates); + 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. @@ -107,7 +109,7 @@ protected override void Run(EntityUid uid, WeatherData weather, WeatherPrototype continue; } - frontier.Enqueue(grid.GetTileRef(new Vector2i(x, y) + node.GridIndices)); + frontier.Enqueue(_mapSystem.GetTileRef(gridId, grid, new Vector2i(x, y) + node.GridIndices)); } } diff --git a/Content.IntegrationTests/Pair/TestPair.Helpers.cs b/Content.IntegrationTests/Pair/TestPair.Helpers.cs index 510dc0b854a4f5..574644f67ee20f 100644 --- a/Content.IntegrationTests/Pair/TestPair.Helpers.cs +++ b/Content.IntegrationTests/Pair/TestPair.Helpers.cs @@ -23,8 +23,9 @@ await Server.WaitPost(() => { mapData.MapId = Server.MapMan.CreateMap(); mapData.MapUid = Server.MapMan.GetMapEntityId(mapData.MapId); - mapData.MapGrid = Server.MapMan.CreateGrid(mapData.MapId); - mapData.GridUid = mapData.MapGrid.Owner; // Fixing this requires an engine PR. + var mapGrid = Server.MapMan.CreateGridEntity(mapData.MapId); + mapData.MapGrid = mapGrid; + mapData.GridUid = mapGrid.Owner; // Fixing this requires an engine PR. mapData.GridCoords = new EntityCoordinates(mapData.GridUid, 0, 0); var plating = tileDefinitionManager["Plating"]; var platingTile = new Tile(plating.TileId); diff --git a/Content.IntegrationTests/Tests/Fluids/FluidSpillTest.cs b/Content.IntegrationTests/Tests/Fluids/FluidSpillTest.cs index da806aa10a5097..0d852bf2f0ef50 100644 --- a/Content.IntegrationTests/Tests/Fluids/FluidSpillTest.cs +++ b/Content.IntegrationTests/Tests/Fluids/FluidSpillTest.cs @@ -17,11 +17,16 @@ namespace Content.IntegrationTests.Tests.Fluids; public sealed class FluidSpill { private static PuddleComponent? GetPuddle(IEntityManager entityManager, MapGridComponent mapGrid, Vector2i pos) + { + return GetPuddleEntity(entityManager, mapGrid, pos)?.Comp; + } + + private static Entity? GetPuddleEntity(IEntityManager entityManager, MapGridComponent mapGrid, Vector2i pos) { foreach (var uid in mapGrid.GetAnchoredEntities(pos)) { if (entityManager.TryGetComponent(uid, out PuddleComponent? puddleComponent)) - return puddleComponent; + return (uid, puddleComponent); } return null; @@ -48,19 +53,19 @@ . . . await server.WaitPost(() => { mapId = mapManager.CreateMap(); - var grid = mapManager.CreateGrid(mapId); + var grid = mapManager.CreateGridEntity(mapId); gridId = grid.Owner; for (var x = 0; x < 3; x++) { for (var y = 0; y < 3; y++) { - grid.SetTile(new Vector2i(x, y), new Tile(1)); + grid.Comp.SetTile(new Vector2i(x, y), new Tile(1)); } } - entityManager.SpawnEntity("WallReinforced", grid.GridTileToLocal(new Vector2i(0, 1))); - entityManager.SpawnEntity("WallReinforced", grid.GridTileToLocal(new Vector2i(1, 0))); + entityManager.SpawnEntity("WallReinforced", grid.Comp.GridTileToLocal(new Vector2i(0, 1))); + entityManager.SpawnEntity("WallReinforced", grid.Comp.GridTileToLocal(new Vector2i(1, 0))); }); @@ -82,12 +87,11 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { var grid = mapManager.GetGrid(gridId); - var puddle = GetPuddle(entityManager, grid, puddleOrigin); - + var puddle = GetPuddleEntity(entityManager, grid, puddleOrigin); #pragma warning disable NUnit2045 // Interdependent tests Assert.That(puddle, Is.Not.Null); - Assert.That(puddleSystem.CurrentVolume(puddle!.Owner, puddle), Is.EqualTo(FixedPoint2.New(100))); + Assert.That(puddleSystem.CurrentVolume(puddle!.Value.Owner, puddle), Is.EqualTo(FixedPoint2.New(100))); #pragma warning restore NUnit2045 for (var x = 0; x < 3; x++) diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs index 453ad6b5ea16de..25171e1ea2ed19 100644 --- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs +++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs @@ -13,9 +13,7 @@ using Content.Server.Power.Components; using Content.Server.Tools.Components; using Content.Shared.Atmos; -using Content.Shared.Construction; using Content.Shared.Construction.Prototypes; -using Content.Shared.DoAfter; using Content.Shared.Gravity; using Content.Shared.Item; using Robust.Client.UserInterface; @@ -708,8 +706,9 @@ await Server.WaitPost(() => if (proto == null) return; - grid = MapMan.CreateGrid(MapData.MapId); - gridUid = grid.Owner; + var gridEnt = MapMan.CreateGridEntity(MapData.MapId); + grid = gridEnt; + gridUid = gridEnt; var gridXform = SEntMan.GetComponent(gridUid); Transform.SetWorldPosition(gridXform, pos.Position); grid.SetTile(SEntMan.GetCoordinates(coords ?? TargetCoords), tile); diff --git a/Content.IntegrationTests/Tests/PostMapInitTest.cs b/Content.IntegrationTests/Tests/PostMapInitTest.cs index c65095819980e0..45bff2f030dd68 100644 --- a/Content.IntegrationTests/Tests/PostMapInitTest.cs +++ b/Content.IntegrationTests/Tests/PostMapInitTest.cs @@ -1,10 +1,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using System.Threading; using Content.Server.GameTicking; using Content.Server.Maps; using Content.Server.Shuttles.Components; +using Content.Server.Shuttles.Systems; using Content.Server.Spawners.Components; using Content.Server.Station.Components; using Content.Shared.CCVar; @@ -13,12 +13,11 @@ using Robust.Shared.Configuration; using Robust.Shared.ContentPack; using Robust.Shared.GameObjects; -using Robust.Shared.Utility; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; using YamlDotNet.RepresentationModel; -using ShuttleSystem = Content.Server.Shuttles.Systems.ShuttleSystem; namespace Content.IntegrationTests.Tests { @@ -184,7 +183,7 @@ await server.WaitPost(() => EntityUid? targetGrid = null; var memberQuery = entManager.GetEntityQuery(); - var grids = mapManager.GetAllMapGrids(mapId).ToList(); + var grids = mapManager.GetAllGrids(mapId).ToList(); var gridUids = grids.Select(o => o.Owner).ToList(); targetGrid = gridUids.First(); @@ -194,7 +193,7 @@ await server.WaitPost(() => if (!memberQuery.HasComponent(gridEnt)) continue; - var area = grid.LocalAABB.Width * grid.LocalAABB.Height; + var area = grid.Comp.LocalAABB.Width * grid.Comp.LocalAABB.Height; if (area > largest) { diff --git a/Content.Server/Access/Systems/IdCardSystem.cs b/Content.Server/Access/Systems/IdCardSystem.cs index 82a6c455556c9d..3bf00d34c73d16 100644 --- a/Content.Server/Access/Systems/IdCardSystem.cs +++ b/Content.Server/Access/Systems/IdCardSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Server.Administration.Logs; using Content.Server.Kitchen.Components; using Content.Server.Popups; @@ -9,7 +10,6 @@ using Content.Shared.StatusIcon; using Robust.Shared.Prototypes; using Robust.Shared.Random; -using System.Linq; namespace Content.Server.Access.Systems { @@ -132,12 +132,12 @@ public bool TryChangeJobIcon(EntityUid uid, StatusIconPrototype jobIcon, IdCardC } id.JobIcon = jobIcon.ID; - Dirty(id); + Dirty(uid, id); if (player != null) { _adminLogger.Add(LogType.Identity, LogImpact.Low, - $"{ToPrettyString(player.Value):player} has changed the job icon of {ToPrettyString(id.Owner):entity} to {jobIcon} "); + $"{ToPrettyString(player.Value):player} has changed the job icon of {ToPrettyString(uid):entity} to {jobIcon} "); } return true; @@ -181,7 +181,7 @@ public bool TryChangeFullName(EntityUid uid, string? fullName, IdCardComponent? } /// - /// Changes the of . + /// Changes the name of the id's owner. /// /// /// If either or is empty, it's replaced by placeholders. diff --git a/Content.Server/Administration/Commands/RemoveEntityStorageCommand.cs b/Content.Server/Administration/Commands/RemoveEntityStorageCommand.cs index 48663f579d62a4..858e48a71e6587 100644 --- a/Content.Server/Administration/Commands/RemoveEntityStorageCommand.cs +++ b/Content.Server/Administration/Commands/RemoveEntityStorageCommand.cs @@ -38,7 +38,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) if (_entManager.TryGetComponent(parent, out var storage)) { - entstorage.Remove(entityUid.Value, storage.Owner, storage); + entstorage.Remove(entityUid.Value, parent, storage); } else { diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index e7b028cb9409ed..c2f07320b5bb6b 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -337,7 +337,7 @@ private void AddSmiteVerbs(GetVerbsEvent args) Act = () => { var baseXform = Transform(args.Target); - foreach (var part in _bodySystem.GetBodyChildrenOfType(body.Owner, BodyPartType.Hand, body)) + foreach (var part in _bodySystem.GetBodyChildrenOfType(args.Target, BodyPartType.Hand, body)) { _transformSystem.AttachToGridOrMap(part.Id); break; diff --git a/Content.Server/Administration/Systems/BufferingSystem.cs b/Content.Server/Administration/Systems/BufferingSystem.cs index a8d1f88d725984..f3df34e7d2e0b3 100644 --- a/Content.Server/Administration/Systems/BufferingSystem.cs +++ b/Content.Server/Administration/Systems/BufferingSystem.cs @@ -12,7 +12,8 @@ public sealed class BufferingSystem : EntitySystem public override void Update(float frameTime) { - foreach (var buffering in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var buffering)) { if (buffering.BufferingIcon is not null) { @@ -21,7 +22,7 @@ public override void Update(float frameTime) continue; Del(buffering.BufferingIcon.Value); - RemComp(buffering.Owner); + RemComp(uid); buffering.TimeTilNextBuffer = _random.NextFloat(buffering.MinimumTimeTilNextBuffer, buffering.MaximumTimeTilNextBuffer); buffering.BufferingIcon = null; } @@ -32,8 +33,8 @@ public override void Update(float frameTime) continue; buffering.BufferingTimer = _random.NextFloat(buffering.MinimumBufferTime, buffering.MaximumBufferTime); - buffering.BufferingIcon = Spawn("BufferingIcon", new EntityCoordinates(buffering.Owner, Vector2.Zero)); - EnsureComp(buffering.Owner); + buffering.BufferingIcon = Spawn("BufferingIcon", new EntityCoordinates(uid, Vector2.Zero)); + EnsureComp(uid); } } } diff --git a/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs b/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs index 043f69e420c64f..4f2108748b8850 100644 --- a/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs +++ b/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs @@ -1,7 +1,6 @@ using Content.Server.Power.Components; using Content.Server.Station.Systems; using Content.Shared.AlertLevel; -using Robust.Server.GameObjects; namespace Content.Server.AlertLevel; @@ -19,9 +18,10 @@ public override void Initialize() private void OnAlertChanged(AlertLevelChangedEvent args) { - foreach (var (_, appearance) in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out var appearance)) { - _appearance.SetData(appearance.Owner, AlertLevelDisplay.CurrentLevel, args.AlertLevel, appearance); + _appearance.SetData(uid, AlertLevelDisplay.CurrentLevel, args.AlertLevel, appearance); } } diff --git a/Content.Server/AlertLevel/AlertLevelSystem.cs b/Content.Server/AlertLevel/AlertLevelSystem.cs index 121f6f4c1b43d8..66e09d34e0f36c 100644 --- a/Content.Server/AlertLevel/AlertLevelSystem.cs +++ b/Content.Server/AlertLevel/AlertLevelSystem.cs @@ -2,7 +2,6 @@ using Content.Server.Chat.Systems; using Content.Server.Station.Systems; using Content.Shared.CCVar; -using Content.Shared.PDA; using Robust.Shared.Audio; using Robust.Shared.Configuration; using Robust.Shared.Prototypes; @@ -83,7 +82,8 @@ private void OnPrototypeReload(PrototypesReloadedEventArgs args) return; } - foreach (var comp in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) { comp.AlertLevels = alerts; @@ -95,7 +95,7 @@ private void OnPrototypeReload(PrototypesReloadedEventArgs args) defaultLevel = comp.AlertLevels.Levels.Keys.First(); } - SetLevel(comp.Owner, defaultLevel, true, true, true); + SetLevel(uid, defaultLevel, true, true, true); } } diff --git a/Content.Server/Animals/Systems/UdderSystem.cs b/Content.Server/Animals/Systems/UdderSystem.cs index 4a90c3c3d8532c..4164aedfd18476 100644 --- a/Content.Server/Animals/Systems/UdderSystem.cs +++ b/Content.Server/Animals/Systems/UdderSystem.cs @@ -1,9 +1,6 @@ using Content.Server.Animals.Components; -using Content.Server.DoAfter; -using Content.Server.Nutrition.Components; using Content.Server.Popups; using Content.Shared.Chemistry.Components; -using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.DoAfter; using Content.Shared.IdentityManagement; @@ -32,9 +29,11 @@ public override void Initialize() SubscribeLocalEvent>(AddMilkVerb); SubscribeLocalEvent(OnDoAfter); } + public override void Update(float frameTime) { - foreach (var udder in EntityManager.EntityQuery(false)) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var udder)) { udder.AccumulatedFrameTime += frameTime; @@ -43,19 +42,19 @@ public override void Update(float frameTime) udder.AccumulatedFrameTime -= udder.UpdateRate; // Actually there is food digestion so no problem with instant reagent generation "OnFeed" - if (EntityManager.TryGetComponent(udder.Owner, out HungerComponent? hunger)) + if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) { // Is there enough nutrition to produce reagent? if (_hunger.GetHungerThreshold(hunger) < HungerThreshold.Peckish) continue; } - if (!_solutionContainerSystem.TryGetSolution(udder.Owner, udder.TargetSolutionName, + if (!_solutionContainerSystem.TryGetSolution(uid, udder.TargetSolutionName, out var solution)) continue; //TODO: toxins from bloodstream !? - _solutionContainerSystem.TryAddReagent(udder.Owner, solution, udder.ReagentId, + _solutionContainerSystem.TryAddReagent(uid, solution, udder.ReagentId, udder.QuantityPerUpdate, out var accepted); } } diff --git a/Content.Server/Anomaly/Effects/BluespaceAnomalySystem.cs b/Content.Server/Anomaly/Effects/BluespaceAnomalySystem.cs index cd7adbd3e4717a..964a42234d3a0d 100644 --- a/Content.Server/Anomaly/Effects/BluespaceAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/BluespaceAnomalySystem.cs @@ -28,9 +28,9 @@ private void OnPulse(EntityUid uid, BluespaceAnomalyComponent component, ref Ano var xformQuery = GetEntityQuery(); var xform = xformQuery.GetComponent(uid); var range = component.MaxShuffleRadius * args.Severity; - var allEnts = _lookup.GetComponentsInRange(xform.Coordinates, range) - .Select(x => x.Owner).ToList(); - allEnts.Add(uid); + var mobs = new HashSet>(); + _lookup.GetEntitiesInRange(xform.Coordinates, range, mobs); + var allEnts = new List(mobs.Select(m => m.Owner)) { uid }; var coords = new List(); foreach (var ent in allEnts) { @@ -51,7 +51,9 @@ private void OnSupercritical(EntityUid uid, BluespaceAnomalyComponent component, var mapPos = _xform.GetWorldPosition(xform); var radius = component.SupercriticalTeleportRadius; var gridBounds = new Box2(mapPos - new Vector2(radius, radius), mapPos + new Vector2(radius, radius)); - foreach (var comp in _lookup.GetComponentsInRange(xform.Coordinates, component.MaxShuffleRadius)) + var mobs = new HashSet>(); + _lookup.GetEntitiesInRange(xform.Coordinates, component.MaxShuffleRadius, mobs); + foreach (var comp in mobs) { var ent = comp.Owner; var randomX = _random.NextFloat(gridBounds.Left, gridBounds.Right); diff --git a/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs b/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs index 688218d6ca1d46..bc6aa3bb1fb5b5 100644 --- a/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs @@ -1,5 +1,5 @@ using Content.Server.Electrocution; -using Content.Server.Emp; +using Content.Server.Emp; using Content.Server.Lightning; using Content.Server.Power.Components; using Content.Shared.Anomaly.Components; @@ -31,9 +31,8 @@ private void OnPulse(EntityUid uid, ElectricityAnomalyComponent component, ref A { var range = component.MaxElectrocuteRange * args.Stability; var xform = Transform(uid); - foreach (var comp in _lookup.GetComponentsInRange(xform.MapPosition, range)) + foreach (var (ent, comp) in _lookup.GetEntitiesInRange(xform.MapPosition, range)) { - var ent = comp.Owner; _lightning.ShootLightning(uid, ent); } } @@ -66,14 +65,13 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var (elec, anom, xform) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var elec, out var anom, out var xform)) { if (_timing.CurTime < elec.NextSecond) continue; elec.NextSecond = _timing.CurTime + TimeSpan.FromSeconds(1); - var owner = xform.Owner; - if (!_random.Prob(elec.PassiveElectrocutionChance * anom.Stability)) continue; @@ -81,11 +79,9 @@ public override void Update(float frameTime) var damage = (int) (elec.MaxElectrocuteDamage * anom.Severity); var duration = elec.MaxElectrocuteDuration * anom.Severity; - foreach (var comp in _lookup.GetComponentsInRange(xform.MapPosition, range)) + foreach (var (ent, comp) in _lookup.GetEntitiesInRange(xform.MapPosition, range)) { - var ent = comp.Owner; - - _electrocution.TryDoElectrocution(ent, owner, damage, duration, true, statusEffects: comp, ignoreInsulation: true); + _electrocution.TryDoElectrocution(ent, uid, damage, duration, true, statusEffects: comp, ignoreInsulation: true); } } } diff --git a/Content.Server/Anomaly/Effects/InjectionAnomalySystem.cs b/Content.Server/Anomaly/Effects/InjectionAnomalySystem.cs index 0cc7883808ade1..05f1c5c61c64f5 100644 --- a/Content.Server/Anomaly/Effects/InjectionAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/InjectionAnomalySystem.cs @@ -1,8 +1,8 @@ using System.Linq; using Content.Server.Anomaly.Components; +using Content.Shared.Anomaly.Components; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; -using Content.Shared.Anomaly.Components; namespace Content.Server.Anomaly.Effects; /// @@ -44,7 +44,7 @@ private void PulseScalableEffect(EntityUid uid, InjectionAnomalyComponent compon //We get all the entity in the radius into which the reagent will be injected. var xformQuery = GetEntityQuery(); var xform = xformQuery.GetComponent(uid); - var allEnts = _lookup.GetComponentsInRange(xform.MapPosition, injectRadius) + var allEnts = _lookup.GetEntitiesInRange(xform.MapPosition, injectRadius) .Select(x => x.Owner).ToList(); //for each matching entity found diff --git a/Content.Server/Anomaly/Effects/PyroclasticAnomalySystem.cs b/Content.Server/Anomaly/Effects/PyroclasticAnomalySystem.cs index 7ee6f12d0534fe..6bd8be002e0adc 100644 --- a/Content.Server/Anomaly/Effects/PyroclasticAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/PyroclasticAnomalySystem.cs @@ -36,7 +36,10 @@ private void OnSupercritical(EntityUid uid, PyroclasticAnomalyComponent componen public void IgniteNearby(EntityUid uid, EntityCoordinates coordinates, float severity, float radius) { - foreach (var flammable in _lookup.GetComponentsInRange(coordinates, radius)) + var flammables = new HashSet>(); + _lookup.GetEntitiesInRange(coordinates, radius, flammables); + + foreach (var flammable in flammables) { var ent = flammable.Owner; var stackAmount = 1 + (int) (severity / 0.15f); diff --git a/Content.Server/Atmos/Commands/FillGasCommand.cs b/Content.Server/Atmos/Commands/FillGasCommand.cs index b6db46abed4575..7eb34d90662c10 100644 --- a/Content.Server/Atmos/Commands/FillGasCommand.cs +++ b/Content.Server/Atmos/Commands/FillGasCommand.cs @@ -3,7 +3,7 @@ using Content.Shared.Administration; using Content.Shared.Atmos; using Robust.Shared.Console; -using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Server.Atmos.Commands { @@ -11,7 +11,6 @@ namespace Content.Server.Atmos.Commands public sealed class FillGas : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly IMapManager _mapManager = default!; public string Command => "fillgas"; public string Description => "Adds gas to all tiles in a grid."; @@ -30,7 +29,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (!_mapManager.TryGetGrid(gridId, out var grid)) + if (!_entManager.HasComponent(gridId)) { shell.WriteLine("Invalid grid ID."); return; @@ -38,7 +37,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var atmosphereSystem = _entManager.System(); - foreach (var tile in atmosphereSystem.GetAllMixtures(grid.Owner, true)) + foreach (var tile in atmosphereSystem.GetAllMixtures(gridId.Value, true)) { tile.AdjustMoles(gasId, moles); } diff --git a/Content.Server/Atmos/Commands/SetAtmosTemperatureCommand.cs b/Content.Server/Atmos/Commands/SetAtmosTemperatureCommand.cs index 1d7e306d5491d3..a3ec0f03fd3890 100644 --- a/Content.Server/Atmos/Commands/SetAtmosTemperatureCommand.cs +++ b/Content.Server/Atmos/Commands/SetAtmosTemperatureCommand.cs @@ -3,7 +3,7 @@ using Content.Shared.Administration; using Content.Shared.Atmos; using Robust.Shared.Console; -using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Server.Atmos.Commands { @@ -11,7 +11,6 @@ namespace Content.Server.Atmos.Commands public sealed class SetAtmosTemperatureCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly IMapManager _mapManager = default!; public string Command => "setatmostemp"; public string Description => "Sets a grid's temperature (in kelvin)."; @@ -34,7 +33,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (!gridId.Value.IsValid() || !_mapManager.TryGetGrid(gridId, out var gridComp)) + if (!gridId.Value.IsValid() || !_entManager.HasComponent(gridId)) { shell.WriteLine("Invalid grid ID."); return; @@ -43,7 +42,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var atmosphereSystem = _entManager.System(); var tiles = 0; - foreach (var tile in atmosphereSystem.GetAllMixtures(gridComp.Owner, true)) + foreach (var tile in atmosphereSystem.GetAllMixtures(gridId.Value, true)) { tiles++; tile.Temperature = temperature; diff --git a/Content.Server/Atmos/Commands/SetTemperatureCommand.cs b/Content.Server/Atmos/Commands/SetTemperatureCommand.cs index e6dcbdb4cfa979..75d358dfd6df30 100644 --- a/Content.Server/Atmos/Commands/SetTemperatureCommand.cs +++ b/Content.Server/Atmos/Commands/SetTemperatureCommand.cs @@ -2,11 +2,8 @@ using Content.Server.Atmos.EntitySystems; using Content.Shared.Administration; using Content.Shared.Atmos; -using Robust.Server.GameObjects; using Robust.Shared.Console; -using Robust.Shared.GameObjects; -using Robust.Shared.Map; -using Robust.Shared.Maths; +using Robust.Shared.Map.Components; namespace Content.Server.Atmos.Commands { @@ -14,7 +11,6 @@ namespace Content.Server.Atmos.Commands public sealed class SetTemperatureCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entities = default!; - [Dependency] private readonly IMapManager _mapManager = default!; public string Command => "settemp"; public string Description => "Sets a tile's temperature (in kelvin)."; @@ -40,7 +36,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (!_mapManager.TryGetGrid(gridId, out var grid)) + if (!_entities.HasComponent(gridId)) { shell.WriteError("Invalid grid."); return; @@ -49,7 +45,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var atmospheres = _entities.EntitySysManager.GetEntitySystem(); var indices = new Vector2i(x, y); - var tile = atmospheres.GetTileMixture(grid.Owner, null, indices, true); + var tile = atmospheres.GetTileMixture(gridId, null, indices, true); if (tile == null) { diff --git a/Content.Server/Atmos/Components/GridAtmosphereComponent.cs b/Content.Server/Atmos/Components/GridAtmosphereComponent.cs index ab24daa7164b4c..f9301d7029e8b5 100644 --- a/Content.Server/Atmos/Components/GridAtmosphereComponent.cs +++ b/Content.Server/Atmos/Components/GridAtmosphereComponent.cs @@ -62,7 +62,7 @@ public sealed partial class GridAtmosphereComponent : Component public readonly HashSet PipeNets = new(); [ViewVariables] - public readonly HashSet AtmosDevices = new(); + public readonly HashSet> AtmosDevices = new(); [ViewVariables] public Queue CurrentRunTiles = new(); @@ -74,7 +74,7 @@ public sealed partial class GridAtmosphereComponent : Component public Queue CurrentRunPipeNet = new(); [ViewVariables] - public Queue CurrentRunAtmosDevices = new(); + public Queue> CurrentRunAtmosDevices = new(); [ViewVariables] public readonly HashSet InvalidatedCoords = new(1000); diff --git a/Content.Server/Atmos/EntitySystems/AirtightSystem.cs b/Content.Server/Atmos/EntitySystems/AirtightSystem.cs index f899ffb2e82e03..97dccbaabb7317 100644 --- a/Content.Server/Atmos/EntitySystems/AirtightSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AirtightSystem.cs @@ -4,7 +4,6 @@ using JetBrains.Annotations; using Robust.Shared.Map; using Robust.Shared.Map.Components; -using Content.Shared.Destructible; namespace Content.Server.Atmos.EntitySystems { @@ -24,31 +23,32 @@ public override void Initialize() SubscribeLocalEvent(OnAirtightMoved); } - private void OnAirtightInit(EntityUid uid, AirtightComponent airtight, ComponentInit args) + private void OnAirtightInit(Entity airtight, ref ComponentInit args) { - var xform = EntityManager.GetComponent(uid); + var xform = EntityManager.GetComponent(airtight); - if (airtight.FixAirBlockedDirectionInitialize) + if (airtight.Comp.FixAirBlockedDirectionInitialize) { - var moveEvent = new MoveEvent(uid, default, default, Angle.Zero, xform.LocalRotation, xform, false); - if (AirtightMove(uid, airtight, ref moveEvent)) + var moveEvent = new MoveEvent(airtight, default, default, Angle.Zero, xform.LocalRotation, xform, false); + if (AirtightMove(airtight, ref moveEvent)) return; } UpdatePosition(airtight); } - private void OnAirtightShutdown(EntityUid uid, AirtightComponent airtight, ComponentShutdown args) + private void OnAirtightShutdown(Entity airtight, ref ComponentShutdown args) { - var xform = Transform(uid); + var xform = Transform(airtight); // If the grid is deleting no point updating atmos. - if (_mapManager.TryGetGrid(xform.GridUid, out var grid)) + if (HasComp(xform.GridUid) && + MetaData(xform.GridUid.Value).EntityLifeStage > EntityLifeStage.MapInitialized) { - if (MetaData(grid.Owner).EntityLifeStage > EntityLifeStage.MapInitialized) return; + return; } - SetAirblocked(uid, airtight, false, xform); + SetAirblocked(airtight, false, xform); } private void OnAirtightPositionChanged(EntityUid uid, AirtightComponent airtight, ref AnchorStateChangedEvent args) @@ -78,44 +78,47 @@ private void OnAirtightReAnchor(EntityUid uid, AirtightComponent airtight, ref R } } - private void OnAirtightMoved(EntityUid uid, AirtightComponent airtight, ref MoveEvent ev) + private void OnAirtightMoved(Entity airtight, ref MoveEvent ev) { - AirtightMove(uid, airtight, ref ev); + AirtightMove(airtight, ref ev); } - private bool AirtightMove(EntityUid uid, AirtightComponent airtight, ref MoveEvent ev) + private bool AirtightMove(Entity ent, ref MoveEvent ev) { + var (owner, airtight) = ent; if (!airtight.RotateAirBlocked || airtight.InitialAirBlockedDirection == (int)AtmosDirection.Invalid) return false; airtight.CurrentAirBlockedDirection = (int) Rotate((AtmosDirection)airtight.InitialAirBlockedDirection, ev.NewRotation); var pos = airtight.LastPosition; - UpdatePosition(airtight, ev.Component); - var airtightEv = new AirtightChanged(uid, airtight, pos); - RaiseLocalEvent(uid, ref airtightEv, true); + UpdatePosition(ent, ev.Component); + var airtightEv = new AirtightChanged(owner, airtight, pos); + RaiseLocalEvent(owner, ref airtightEv, true); return true; } - public void SetAirblocked(EntityUid uid, AirtightComponent airtight, bool airblocked, TransformComponent? xform = null) + public void SetAirblocked(Entity airtight, bool airblocked, TransformComponent? xform = null) { - if (airtight.AirBlocked == airblocked) + if (airtight.Comp.AirBlocked == airblocked) return; - if (!Resolve(uid, ref xform)) + if (!Resolve(airtight, ref xform)) return; - var pos = airtight.LastPosition; - airtight.AirBlocked = airblocked; + var pos = airtight.Comp.LastPosition; + airtight.Comp.AirBlocked = airblocked; UpdatePosition(airtight, xform); - var airtightEv = new AirtightChanged(uid, airtight, pos); - RaiseLocalEvent(uid, ref airtightEv, true); + var airtightEv = new AirtightChanged(airtight, airtight, pos); + RaiseLocalEvent(airtight, ref airtightEv, true); } - public void UpdatePosition(AirtightComponent airtight, TransformComponent? xform = null) + public void UpdatePosition(Entity ent, TransformComponent? xform = null) { - if (!Resolve(airtight.Owner, ref xform)) return; + var (owner, airtight) = ent; + if (!Resolve(owner, ref xform)) + return; - if (!xform.Anchored || !_mapManager.TryGetGrid(xform.GridUid, out var grid)) + if (!xform.Anchored || !TryComp(xform.GridUid, out MapGridComponent? grid)) return; airtight.LastPosition = (xform.GridUid.Value, grid.TileIndicesFor(xform.Coordinates)); @@ -124,15 +127,13 @@ public void UpdatePosition(AirtightComponent airtight, TransformComponent? xform public void InvalidatePosition(EntityUid gridId, Vector2i pos, bool fixVacuum = false) { - if (!_mapManager.TryGetGrid(gridId, out var grid)) + if (!TryComp(gridId, out MapGridComponent? grid)) return; - var gridUid = grid.Owner; - var query = EntityManager.GetEntityQuery(); _explosionSystem.UpdateAirtightMap(gridId, pos, grid, query); // TODO make atmos system use query - _atmosphereSystem.InvalidateTile(gridUid, pos); + _atmosphereSystem.InvalidateTile(gridId, pos); } private AtmosDirection Rotate(AtmosDirection myDirection, Angle myAngle) @@ -146,7 +147,8 @@ private AtmosDirection Rotate(AtmosDirection myDirection, Angle myAngle) for (var i = 0; i < Atmospherics.Directions; i++) { var direction = (AtmosDirection) (1 << i); - if (!myDirection.IsFlagSet(direction)) continue; + if (!myDirection.IsFlagSet(direction)) + continue; var angle = direction.ToAngle(); angle += myAngle; newAirBlockedDirs |= angle.ToAtmosDirectionCardinal(); diff --git a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs index 8b1c425d89ad14..34f558a2521c55 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs @@ -4,10 +4,12 @@ using Content.Shared.Atmos.EntitySystems; using Content.Shared.CCVar; using JetBrains.Annotations; +using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Server.Atmos.EntitySystems { @@ -18,6 +20,7 @@ public sealed class AtmosDebugOverlaySystem : SharedAtmosDebugOverlaySystem [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IConfigurationManager _configManager = default!; [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; + [Dependency] private readonly MapSystem _mapSystem = default!; /// /// Players allowed to see the atmos debug overlay. @@ -31,6 +34,8 @@ public sealed class AtmosDebugOverlaySystem : SharedAtmosDebugOverlaySystem /// private float _updateCooldown; + private List> _grids = new(); + public override void Initialize() { base.Initialize(); @@ -137,7 +142,10 @@ public override void Update(float frameTime) var worldBounds = Box2.CenteredAround(transform.WorldPosition, new Vector2(LocalViewRange, LocalViewRange)); - foreach (var grid in _mapManager.FindGridsIntersecting(transform.MapID, worldBounds)) + _grids.Clear(); + _mapManager.FindGridsIntersecting(transform.MapID, worldBounds, ref _grids); + + foreach (var grid in _grids) { var uid = grid.Owner; @@ -147,7 +155,7 @@ public override void Update(float frameTime) if (!TryComp(uid, out GridAtmosphereComponent? gridAtmos)) continue; - var entityTile = grid.GetTileRef(transform.Coordinates).GridIndices; + var entityTile = _mapSystem.GetTileRef(grid, grid, transform.Coordinates).GridIndices; var baseTile = new Vector2i(entityTile.X - (LocalViewRange / 2), entityTile.Y - (LocalViewRange / 2)); var debugOverlayContent = new AtmosDebugOverlayData[LocalViewRange * LocalViewRange]; @@ -161,7 +169,7 @@ public override void Update(float frameTime) } } - RaiseNetworkEvent(new AtmosDebugOverlayMessage(GetNetEntity(grid.Owner), baseTile, debugOverlayContent), session.ConnectedClient); + RaiseNetworkEvent(new AtmosDebugOverlayMessage(GetNetEntity(grid), baseTile, debugOverlayContent), session.ConnectedClient); } } } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.BreathTool.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.BreathTool.cs index 22270cb541de18..741a9341e79ed5 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.BreathTool.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.BreathTool.cs @@ -22,7 +22,7 @@ public void DisconnectInternals(BreathToolComponent component) if (TryComp(old, out var internalsComponent)) { - _internals.DisconnectBreathTool(internalsComponent); + _internals.DisconnectBreathTool((old.Value, internalsComponent)); } component.IsFunctional = false; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs index 75caab93f054e2..6fbd638844b60a 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Commands.cs @@ -3,7 +3,6 @@ using Content.Server.Atmos.Components; using Content.Shared.Administration; using Content.Shared.Atmos; -using Content.Shared.Maps; using Robust.Shared.Console; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -128,12 +127,13 @@ private CompletionResult FixGridAtmosCommandCompletions(IConsoleShell shell, str if (playerMap == null) return CompletionResult.FromOptions(options); - foreach (var grid in _mapManager.GetAllMapGrids(playerMap.Value).OrderBy(o => o.Owner)) + foreach (var grid in _mapManager.GetAllGrids(playerMap.Value).OrderBy(o => o.Owner)) { - if (!TryComp(grid.Owner, out var gridXform)) + var uid = grid.Owner; + if (!TryComp(uid, out var gridXform)) continue; - options.Add(new CompletionOption(grid.Owner.ToString(), $"{MetaData(grid.Owner).EntityName} - Map {gridXform.MapID}")); + options.Add(new CompletionOption(uid.ToString(), $"{MetaData(uid).EntityName} - Map {gridXform.MapID}")); } return CompletionResult.FromOptions(options); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs index 935abb29fc495f..036b64cad944b1 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs @@ -3,7 +3,6 @@ using Content.Server.Atmos.Reactions; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; -using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Utility; @@ -57,7 +56,7 @@ private void OnGridAtmosphereInit(EntityUid uid, GridAtmosphereComponent gridAtm tile.GridIndex = uid; } - GridRepopulateTiles(mapGrid, gridAtmosphere); + GridRepopulateTiles((uid, mapGrid, gridAtmosphere)); } private void OnGridSplit(EntityUid uid, GridAtmosphereComponent originalGridAtmos, ref GridSplitEvent args) @@ -65,14 +64,12 @@ private void OnGridSplit(EntityUid uid, GridAtmosphereComponent originalGridAtmo foreach (var newGrid in args.NewGrids) { // Make extra sure this is a valid grid. - if (!_mapManager.TryGetGrid(newGrid, out var mapGrid)) + if (!TryComp(newGrid, out MapGridComponent? mapGrid)) continue; - var entity = mapGrid.Owner; - // If the new split grid has an atmosphere already somehow, use that. Otherwise, add a new one. - if (!TryComp(entity, out GridAtmosphereComponent? newGridAtmos)) - newGridAtmos = AddComp(entity); + if (!TryComp(newGrid, out GridAtmosphereComponent? newGridAtmos)) + newGridAtmos = AddComp(newGrid); // We assume the tiles on the new grid have the same coordinates as they did on the old grid... var enumerator = mapGrid.GetAllTilesEnumerator(); @@ -505,16 +502,15 @@ private void GridRemovePipeNet(EntityUid uid, GridAtmosphereComponent component, args.Handled = component.PipeNets.Remove(args.PipeNet); } - private void GridAddAtmosDevice(EntityUid uid, GridAtmosphereComponent component, - ref AddAtmosDeviceMethodEvent args) + private void GridAddAtmosDevice(Entity grid, ref AddAtmosDeviceMethodEvent args) { if (args.Handled) return; - if (!component.AtmosDevices.Add(args.Device)) + if (!grid.Comp.AtmosDevices.Add((args.Device.Owner, args.Device))) return; - args.Device.JoinedGrid = uid; + args.Device.JoinedGrid = grid; args.Handled = true; args.Result = true; } @@ -525,7 +521,7 @@ private void GridRemoveAtmosDevice(EntityUid uid, GridAtmosphereComponent compon if (args.Handled) return; - if (!component.AtmosDevices.Remove(args.Device)) + if (!component.AtmosDevices.Remove((args.Device.Owner, args.Device))) return; args.Device.JoinedGrid = null; @@ -538,8 +534,9 @@ private void GridRemoveAtmosDevice(EntityUid uid, GridAtmosphereComponent compon /// /// The grid where to get all valid tiles from. /// The grid atmosphere where the tiles will be repopulated. - private void GridRepopulateTiles(MapGridComponent mapGrid, GridAtmosphereComponent gridAtmosphere) + private void GridRepopulateTiles(Entity grid) { + var (uid, mapGrid, gridAtmosphere) = grid; var volume = GetVolumeForTiles(mapGrid, 1); foreach (var tile in mapGrid.GetAllTiles()) @@ -551,16 +548,14 @@ private void GridRepopulateTiles(MapGridComponent mapGrid, GridAtmosphereCompone gridAtmosphere.InvalidatedCoords.Add(tile.GridIndices); } - var uid = gridAtmosphere.Owner; - - TryComp(gridAtmosphere.Owner, out GasTileOverlayComponent? overlay); + TryComp(uid, out GasTileOverlayComponent? overlay); // Gotta do this afterwards so we can properly update adjacent tiles. foreach (var (position, _) in gridAtmosphere.Tiles.ToArray()) { var ev = new UpdateAdjacentMethodEvent(uid, position); GridUpdateAdjacent(uid, gridAtmosphere, ref ev); - InvalidateVisuals(mapGrid.Owner, position, overlay); + InvalidateVisuals(uid, position, overlay); } } } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index a06bf3504c7e73..020684aa3b9757 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -22,32 +22,34 @@ public sealed partial class AtmosphereSystem [ViewVariables(VVAccess.ReadWrite)] public string? SpaceWindSound { get; private set; } = "/Audio/Effects/space_wind.ogg"; - private HashSet _activePressures = new(8); + private readonly HashSet> _activePressures = new(8); private void UpdateHighPressure(float frameTime) { - var toRemove = new RemQueue(); + var toRemove = new RemQueue>(); - foreach (var comp in _activePressures) + foreach (var ent in _activePressures) { - var uid = comp.Owner; + var (uid, comp) = ent; MetaDataComponent? metadata = null; if (Deleted(uid, metadata)) { - toRemove.Add(comp); + toRemove.Add((uid, comp)); continue; } - if (Paused(uid, metadata)) continue; + if (Paused(uid, metadata)) + continue; comp.Accumulator += frameTime; - if (comp.Accumulator < 2f) continue; + if (comp.Accumulator < 2f) + continue; // Reset it just for VV reasons even though it doesn't matter comp.Accumulator = 0f; - toRemove.Add(comp); + toRemove.Add(ent); if (HasComp(uid) && TryComp(uid, out var body)) @@ -86,10 +88,10 @@ private void AddMobMovedByPressure(EntityUid uid, MovedByPressureComponent compo // idk it's hard. component.Accumulator = 0f; - _activePressures.Add(component); + _activePressures.Add((uid, component)); } - private void HighPressureMovements(GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile, EntityQuery bodies, EntityQuery xforms, EntityQuery pressureQuery, EntityQuery metas) + private void HighPressureMovements(Entity gridAtmosphere, TileAtmosphere tile, EntityQuery bodies, EntityQuery xforms, EntityQuery pressureQuery, EntityQuery metas) { // TODO ATMOS finish this @@ -118,7 +120,7 @@ private void HighPressureMovements(GridAtmosphereComponent gridAtmosphere, TileA return; // Used by ExperiencePressureDifference to correct push/throw directions from tile-relative to physics world. - var gridWorldRotation = xforms.GetComponent(gridAtmosphere.Owner).WorldRotation; + var gridWorldRotation = xforms.GetComponent(gridAtmosphere).WorldRotation; // If we're using monstermos, smooth out the yeet direction to follow the flow if (MonstermosEqualization) @@ -151,12 +153,12 @@ private void HighPressureMovements(GridAtmosphereComponent gridAtmosphere, TileA if (_containers.IsEntityInContainer(entity, metas.GetComponent(entity))) continue; var pressureMovements = EnsureComp(entity); - if (pressure.LastHighPressureMovementAirCycle < gridAtmosphere.UpdateCounter) + if (pressure.LastHighPressureMovementAirCycle < gridAtmosphere.Comp.UpdateCounter) { // tl;dr YEET ExperiencePressureDifference( - pressureMovements, - gridAtmosphere.UpdateCounter, + (entity, pressureMovements), + gridAtmosphere.Comp.UpdateCounter, tile.PressureDifference, tile.PressureDirection, 0, tile.PressureSpecificTarget?.GridIndices.ToEntityCoordinates(tile.GridIndex, _mapManager) ?? EntityCoordinates.Invalid, @@ -180,7 +182,7 @@ private void ConsiderPressureDifference(GridAtmosphereComponent gridAtmosphere, } public void ExperiencePressureDifference( - MovedByPressureComponent component, + Entity ent, int cycle, float pressureDifference, AtmosDirection direction, @@ -190,12 +192,12 @@ public void ExperiencePressureDifference( TransformComponent? xform = null, PhysicsComponent? physics = null) { - var uid = component.Owner; - + var (uid, component) = ent; if (!Resolve(uid, ref physics, false)) return; - if (!Resolve(uid, ref xform)) return; + if (!Resolve(uid, ref xform)) + return; // TODO ATMOS stuns? diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs index c7191b27792921..aceda3cd332391 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs @@ -1,16 +1,15 @@ +using System.Linq; +using System.Numerics; using Content.Server.Atmos.Components; using Content.Server.Doors.Systems; -using Content.Shared.Doors.Components; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.Database; -using Robust.Shared.Map; +using Content.Shared.Doors.Components; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; using Robust.Shared.Random; using Robust.Shared.Utility; -using System.Linq; -using System.Numerics; namespace Content.Server.Atmos.EntitySystems { @@ -28,7 +27,7 @@ public sealed partial class AtmosphereSystem private readonly TileAtmosphere[] _depressurizeSpaceTiles = new TileAtmosphere[Atmospherics.MonstermosHardTileLimit]; private readonly TileAtmosphere[] _depressurizeProgressionOrder = new TileAtmosphere[Atmospherics.MonstermosHardTileLimit * 2]; - private void EqualizePressureInZone(MapGridComponent mapGrid, GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile, int cycleNum, GasTileOverlayComponent? visuals) + private void EqualizePressureInZone(Entity ent, TileAtmosphere tile, int cycleNum, GasTileOverlayComponent? visuals) { if (tile.Air == null || (tile.MonstermosInfo.LastCycle >= cycleNum)) return; // Already done. @@ -57,6 +56,7 @@ private void EqualizePressureInZone(MapGridComponent mapGrid, GridAtmosphereComp return; } + var (_, mapGrid, gridAtmosphere) = ent; var queueCycle = ++gridAtmosphere.EqualizationQueueCycleControl; var totalMoles = 0f; _equalizeTiles[0] = tile; @@ -91,7 +91,7 @@ private void EqualizePressureInZone(MapGridComponent mapGrid, GridAtmosphereComp { // Looks like someone opened an airlock to space! - ExplosivelyDepressurize(mapGrid, gridAtmosphere, tile, cycleNum, visuals); + ExplosivelyDepressurize(ent, tile, cycleNum, visuals); return; } } @@ -359,7 +359,7 @@ private void EqualizePressureInZone(MapGridComponent mapGrid, GridAtmosphereComp Array.Clear(_equalizeQueue, 0, Atmospherics.MonstermosTileLimit); } - private void ExplosivelyDepressurize(MapGridComponent mapGrid, GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile, int cycleNum, GasTileOverlayComponent? visuals) + private void ExplosivelyDepressurize(Entity ent, TileAtmosphere tile, int cycleNum, GasTileOverlayComponent? visuals) { // Check if explosive depressurization is enabled and if the tile is valid. if (!MonstermosDepressurization || tile.Air == null) @@ -368,6 +368,7 @@ private void ExplosivelyDepressurize(MapGridComponent mapGrid, GridAtmosphereCom const int limit = Atmospherics.MonstermosHardTileLimit; var totalMolesRemoved = 0f; + var (owner, mapGrid, gridAtmosphere) = ent; var queueCycle = ++gridAtmosphere.EqualizationQueueCycleControl; var tileCount = 0; @@ -394,7 +395,7 @@ private void ExplosivelyDepressurize(MapGridComponent mapGrid, GridAtmosphereCom DebugTools.Assert(otherTile2.AdjacentBits.IsFlagSet(direction.GetOpposite())); if (otherTile2.MonstermosInfo.LastQueueCycle == queueCycle) continue; - ConsiderFirelocks(gridAtmosphere, otherTile, otherTile2, visuals, mapGrid); + ConsiderFirelocks((owner, gridAtmosphere), otherTile, otherTile2, visuals, mapGrid); // The firelocks might have closed on us. if (!otherTile.AdjacentBits.IsFlagSet(direction)) continue; @@ -527,11 +528,11 @@ private void ExplosivelyDepressurize(MapGridComponent mapGrid, GridAtmosphereCom { var direction = ((Vector2)_depressurizeTiles[tileCount - 1].GridIndices - tile.GridIndices).Normalized(); - var gridPhysics = Comp(mapGrid.Owner); + var gridPhysics = Comp(owner); // TODO ATMOS: Come up with better values for these. - _physics.ApplyLinearImpulse(mapGrid.Owner, direction * totalMolesRemoved * gridPhysics.Mass, body: gridPhysics); - _physics.ApplyAngularImpulse(mapGrid.Owner, Vector2Helpers.Cross(tile.GridIndices - gridPhysics.LocalCenter, direction) * totalMolesRemoved, body: gridPhysics); + _physics.ApplyLinearImpulse(owner, direction * totalMolesRemoved * gridPhysics.Mass, body: gridPhysics); + _physics.ApplyAngularImpulse(owner, Vector2Helpers.Cross(tile.GridIndices - gridPhysics.LocalCenter, direction) * totalMolesRemoved, body: gridPhysics); } if(tileCount > 10 && (totalMolesRemoved / tileCount) > 10) @@ -543,7 +544,7 @@ private void ExplosivelyDepressurize(MapGridComponent mapGrid, GridAtmosphereCom Array.Clear(_depressurizeProgressionOrder, 0, Atmospherics.MonstermosHardTileLimit * 2); } - private void ConsiderFirelocks(GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile, TileAtmosphere other, GasTileOverlayComponent? visuals, MapGridComponent mapGrid) + private void ConsiderFirelocks(Entity ent, TileAtmosphere tile, TileAtmosphere other, GasTileOverlayComponent? visuals, MapGridComponent mapGrid) { var reconsiderAdjacent = false; @@ -566,10 +567,11 @@ private void ConsiderFirelocks(GridAtmosphereComponent gridAtmosphere, TileAtmos if (!reconsiderAdjacent) return; - var tileEv = new UpdateAdjacentMethodEvent(mapGrid.Owner, tile.GridIndices); - var otherEv = new UpdateAdjacentMethodEvent(mapGrid.Owner, other.GridIndices); - GridUpdateAdjacent(mapGrid.Owner, gridAtmosphere, ref tileEv); - GridUpdateAdjacent(mapGrid.Owner, gridAtmosphere, ref otherEv); + var (owner, gridAtmosphere) = ent; + var tileEv = new UpdateAdjacentMethodEvent(owner, tile.GridIndices); + var otherEv = new UpdateAdjacentMethodEvent(owner, other.GridIndices); + GridUpdateAdjacent(owner, gridAtmosphere, ref tileEv); + GridUpdateAdjacent(owner, gridAtmosphere, ref otherEv); InvalidateVisuals(tile.GridIndex, tile.GridIndices, visuals); InvalidateVisuals(other.GridIndex, other.GridIndices, visuals); } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs index 38b66a73fafa9a..6499291495b618 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs @@ -26,50 +26,49 @@ public sealed partial class AtmosphereSystem ///
private const int InvalidCoordinatesLagCheckIterations = 50; - private int _currentRunAtmosphereIndex = 0; - private bool _simulationPaused = false; + private int _currentRunAtmosphereIndex; + private bool _simulationPaused; - private readonly List _currentRunAtmosphere = new(); + private readonly List> _currentRunAtmosphere = new(); /// /// Revalidates all invalid coordinates in a grid atmosphere. /// - /// The grid atmosphere in question. + /// The grid atmosphere in question. /// Whether the process succeeded or got paused due to time constrains. - private bool ProcessRevalidate(GridAtmosphereComponent atmosphere, GasTileOverlayComponent? visuals) + private bool ProcessRevalidate(Entity ent, GasTileOverlayComponent? visuals) { + var (owner, atmosphere) = ent; if (!atmosphere.ProcessingPaused) { atmosphere.CurrentRunInvalidatedCoordinates = new Queue(atmosphere.InvalidatedCoords); atmosphere.InvalidatedCoords.Clear(); } - var uid = atmosphere.Owner; - - if (!TryComp(uid, out MapGridComponent? mapGridComp)) + if (!TryComp(owner, out MapGridComponent? mapGridComp)) return true; - var mapUid = _mapManager.GetMapEntityIdOrThrow(Transform(mapGridComp.Owner).MapID); + var mapUid = _mapManager.GetMapEntityIdOrThrow(Transform(owner).MapID); - var volume = GetVolumeForTiles(mapGridComp, 1); + var volume = GetVolumeForTiles(mapGridComp); var number = 0; while (atmosphere.CurrentRunInvalidatedCoordinates.TryDequeue(out var indices)) { if (!atmosphere.Tiles.TryGetValue(indices, out var tile)) { - tile = new TileAtmosphere(mapGridComp.Owner, indices, + tile = new TileAtmosphere(owner, indices, new GasMixture(volume) { Temperature = Atmospherics.T20C }); atmosphere.Tiles[indices] = tile; } - var airBlockedEv = new IsTileAirBlockedMethodEvent(uid, indices, MapGridComponent:mapGridComp); - GridIsTileAirBlocked(uid, atmosphere, ref airBlockedEv); + var airBlockedEv = new IsTileAirBlockedMethodEvent(owner, indices, MapGridComponent:mapGridComp); + GridIsTileAirBlocked(owner, atmosphere, ref airBlockedEv); var isAirBlocked = airBlockedEv.Result; var oldBlocked = tile.BlockedAirflow; - var updateAdjacentEv = new UpdateAdjacentMethodEvent(uid, indices, mapGridComp); - GridUpdateAdjacent(uid, atmosphere, ref updateAdjacentEv); + var updateAdjacentEv = new UpdateAdjacentMethodEvent(owner, indices, mapGridComp); + GridUpdateAdjacent(owner, atmosphere, ref updateAdjacentEv); // Blocked airflow changed, rebuild excited groups! if (tile.Excited && tile.BlockedAirflow != oldBlocked) @@ -99,8 +98,8 @@ private bool ProcessRevalidate(GridAtmosphereComponent atmosphere, GasTileOverla { if (tile.Air == null && NeedsVacuumFixing(mapGridComp, indices)) { - var vacuumEv = new FixTileVacuumMethodEvent(uid, indices); - GridFixTileVacuum(uid, atmosphere, ref vacuumEv); + var vacuumEv = new FixTileVacuumMethodEvent(owner, indices); + GridFixTileVacuum(owner, atmosphere, ref vacuumEv); } // Tile used to be space, but isn't anymore. @@ -122,11 +121,12 @@ private bool ProcessRevalidate(GridAtmosphereComponent atmosphere, GasTileOverla // TODO ATMOS: Query all the contents of this tile (like walls) and calculate the correct thermal conductivity and heat capacity var tileDef = mapGridComp.TryGetTileRef(indices, out var tileRef) - ? tileRef.GetContentTileDefinition(_tileDefinitionManager) : null; + ? tileRef.GetContentTileDefinition(_tileDefinitionManager) + : null; tile.ThermalConductivity = tileDef?.ThermalConductivity ?? 0.5f; tile.HeatCapacity = tileDef?.HeatCapacity ?? float.PositiveInfinity; - InvalidateVisuals(mapGridComp.Owner, indices, visuals); + InvalidateVisuals(owner, indices, visuals); for (var i = 0; i < Atmospherics.Directions; i++) { @@ -137,7 +137,9 @@ private bool ProcessRevalidate(GridAtmosphereComponent atmosphere, GasTileOverla AddActiveTile(atmosphere, otherTile); } - if (number++ < InvalidCoordinatesLagCheckIterations) continue; + if (number++ < InvalidCoordinatesLagCheckIterations) + continue; + number = 0; // Process the rest next time. if (_simulationStopwatch.Elapsed.TotalMilliseconds >= AtmosMaxProcessTime) @@ -149,22 +151,23 @@ private bool ProcessRevalidate(GridAtmosphereComponent atmosphere, GasTileOverla return true; } - private bool ProcessTileEqualize(GridAtmosphereComponent atmosphere, GasTileOverlayComponent? visuals) + private bool ProcessTileEqualize(Entity ent, GasTileOverlayComponent? visuals) { - if(!atmosphere.ProcessingPaused) + var (uid, atmosphere) = ent; + if (!atmosphere.ProcessingPaused) atmosphere.CurrentRunTiles = new Queue(atmosphere.ActiveTiles); - var uid = atmosphere.Owner; - if (!TryComp(uid, out MapGridComponent? mapGridComp)) throw new Exception("Tried to process a grid atmosphere on an entity that isn't a grid!"); var number = 0; while (atmosphere.CurrentRunTiles.TryDequeue(out var tile)) { - EqualizePressureInZone(mapGridComp, atmosphere, tile, atmosphere.UpdateCounter, visuals); + EqualizePressureInZone((uid, mapGridComp, atmosphere), tile, atmosphere.UpdateCounter, visuals); + + if (number++ < LagCheckIterations) + continue; - if (number++ < LagCheckIterations) continue; number = 0; // Process the rest next time. if (_simulationStopwatch.Elapsed.TotalMilliseconds >= AtmosMaxProcessTime) @@ -186,7 +189,9 @@ private bool ProcessActiveTiles(GridAtmosphereComponent atmosphere, GasTileOverl { ProcessCell(atmosphere, tile, atmosphere.UpdateCounter, visuals); - if (number++ < LagCheckIterations) continue; + if (number++ < LagCheckIterations) + continue; + number = 0; // Process the rest next time. if (_simulationStopwatch.Elapsed.TotalMilliseconds >= AtmosMaxProcessTime) @@ -215,7 +220,9 @@ private bool ProcessExcitedGroups(GridAtmosphereComponent gridAtmosphere) else if(excitedGroup.DismantleCooldown > Atmospherics.ExcitedGroupsDismantleCycles) ExcitedGroupDismantle(gridAtmosphere, excitedGroup); - if (number++ < LagCheckIterations) continue; + if (number++ < LagCheckIterations) + continue; + number = 0; // Process the rest next time. if (_simulationStopwatch.Elapsed.TotalMilliseconds >= AtmosMaxProcessTime) @@ -227,9 +234,10 @@ private bool ProcessExcitedGroups(GridAtmosphereComponent gridAtmosphere) return true; } - private bool ProcessHighPressureDelta(GridAtmosphereComponent atmosphere) + private bool ProcessHighPressureDelta(Entity ent) { - if(!atmosphere.ProcessingPaused) + var atmosphere = ent.Comp; + if (!atmosphere.ProcessingPaused) atmosphere.CurrentRunTiles = new Queue(atmosphere.HighPressureDelta); // Note: This is still processed even if space wind is turned off since this handles playing the sounds. @@ -242,14 +250,15 @@ private bool ProcessHighPressureDelta(GridAtmosphereComponent atmosphere) while (atmosphere.CurrentRunTiles.TryDequeue(out var tile)) { - HighPressureMovements(atmosphere, tile, bodies, xforms, pressureQuery, metas); + HighPressureMovements(ent, tile, bodies, xforms, pressureQuery, metas); tile.PressureDifference = 0f; tile.LastPressureDirection = tile.PressureDirection; tile.PressureDirection = AtmosDirection.Invalid; tile.PressureSpecificTarget = null; atmosphere.HighPressureDelta.Remove(tile); - if (number++ < LagCheckIterations) continue; + if (number++ < LagCheckIterations) + continue; number = 0; // Process the rest next time. if (_simulationStopwatch.Elapsed.TotalMilliseconds >= AtmosMaxProcessTime) @@ -271,7 +280,9 @@ private bool ProcessHotspots(GridAtmosphereComponent atmosphere) { ProcessHotspot(atmosphere, hotspot); - if (number++ < LagCheckIterations) continue; + if (number++ < LagCheckIterations) + continue; + number = 0; // Process the rest next time. if (_simulationStopwatch.Elapsed.TotalMilliseconds >= AtmosMaxProcessTime) @@ -293,7 +304,9 @@ private bool ProcessSuperconductivity(GridAtmosphereComponent atmosphere) { Superconduct(atmosphere, superconductivity); - if (number++ < LagCheckIterations) continue; + if (number++ < LagCheckIterations) + continue; + number = 0; // Process the rest next time. if (_simulationStopwatch.Elapsed.TotalMilliseconds >= AtmosMaxProcessTime) @@ -315,7 +328,9 @@ private bool ProcessPipeNets(GridAtmosphereComponent atmosphere) { pipenet.Update(); - if (number++ < LagCheckIterations) continue; + if (number++ < LagCheckIterations) + continue; + number = 0; // Process the rest next time. if (_simulationStopwatch.Elapsed.TotalMilliseconds >= AtmosMaxProcessTime) @@ -346,17 +361,19 @@ public float RealAtmosTime() private bool ProcessAtmosDevices(GridAtmosphereComponent atmosphere) { - if(!atmosphere.ProcessingPaused) - atmosphere.CurrentRunAtmosDevices = new Queue(atmosphere.AtmosDevices); + if (!atmosphere.ProcessingPaused) + atmosphere.CurrentRunAtmosDevices = new Queue>(atmosphere.AtmosDevices); var time = _gameTiming.CurTime; var number = 0; while (atmosphere.CurrentRunAtmosDevices.TryDequeue(out var device)) { - RaiseLocalEvent(device.Owner, new AtmosDeviceUpdateEvent(RealAtmosTime()), false); - device.LastProcess = time; + RaiseLocalEvent(device, new AtmosDeviceUpdateEvent(RealAtmosTime())); + device.Comp.LastProcess = time; + + if (number++ < LagCheckIterations) + continue; - if (number++ < LagCheckIterations) continue; number = 0; // Process the rest next time. if (_simulationStopwatch.Elapsed.TotalMilliseconds >= AtmosMaxProcessTime) @@ -376,7 +393,12 @@ private void UpdateProcessing(float frameTime) { _currentRunAtmosphereIndex = 0; _currentRunAtmosphere.Clear(); - _currentRunAtmosphere.AddRange(EntityManager.EntityQuery()); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var grid)) + { + _currentRunAtmosphere.Add((uid, grid)); + } } // We set this to true just in case we have to stop processing due to time constraints. @@ -384,10 +406,11 @@ private void UpdateProcessing(float frameTime) for (; _currentRunAtmosphereIndex < _currentRunAtmosphere.Count; _currentRunAtmosphereIndex++) { - var atmosphere = _currentRunAtmosphere[_currentRunAtmosphereIndex]; - TryComp(atmosphere.Owner, out GasTileOverlayComponent? visuals); + var ent = _currentRunAtmosphere[_currentRunAtmosphereIndex]; + var (owner, atmosphere) = ent; + TryComp(owner, out GasTileOverlayComponent? visuals); - if (atmosphere.LifeStage >= ComponentLifeStage.Stopping || Paused(atmosphere.Owner) || !atmosphere.Simulated) + if (atmosphere.LifeStage >= ComponentLifeStage.Stopping || Paused(owner) || !atmosphere.Simulated) continue; atmosphere.Timer += frameTime; @@ -401,7 +424,7 @@ private void UpdateProcessing(float frameTime) switch (atmosphere.State) { case AtmosphereProcessingState.Revalidate: - if (!ProcessRevalidate(atmosphere, visuals)) + if (!ProcessRevalidate(ent, visuals)) { atmosphere.ProcessingPaused = true; return; @@ -416,7 +439,7 @@ private void UpdateProcessing(float frameTime) : AtmosphereProcessingState.ActiveTiles; continue; case AtmosphereProcessingState.TileEqualize: - if (!ProcessTileEqualize(atmosphere, visuals)) + if (!ProcessTileEqualize(ent, visuals)) { atmosphere.ProcessingPaused = true; return; @@ -447,7 +470,7 @@ private void UpdateProcessing(float frameTime) atmosphere.State = AtmosphereProcessingState.HighPressureDelta; continue; case AtmosphereProcessingState.HighPressureDelta: - if (!ProcessHighPressureDelta(atmosphere)) + if (!ProcessHighPressureDelta(ent)) { atmosphere.ProcessingPaused = true; return; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs index 5d3e989e415d03..91634de8d7afc4 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs @@ -4,7 +4,6 @@ using Content.Server.Maps; using Content.Server.NodeContainer.EntitySystems; using Content.Shared.Atmos.EntitySystems; -using Content.Shared.Maps; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Containers; @@ -76,15 +75,16 @@ public override void Update(float frameTime) if (_exposedTimer < ExposedUpdateDelay) return; - foreach (var (exposed, transform) in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var exposed, out var transform)) { - var air = GetContainingMixture(exposed.Owner, transform:transform); + var air = GetContainingMixture(uid, transform:transform); if (air == null) continue; var updateEvent = new AtmosExposedUpdateEvent(transform.Coordinates, air, transform); - RaiseLocalEvent(exposed.Owner, ref updateEvent); + RaiseLocalEvent(uid, ref updateEvent); } _exposedTimer -= ExposedUpdateDelay; diff --git a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs index b2f62572bffb68..be3e5cd9341cfd 100644 --- a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs +++ b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs @@ -16,9 +16,7 @@ using Content.Shared.Throwing; using Content.Shared.Weapons.Melee.Events; using Robust.Server.GameObjects; -using Robust.Shared.Physics; using Robust.Shared.Physics.Components; -using Robust.Shared.Physics.Dynamics; using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; @@ -48,7 +46,7 @@ public sealed class FlammableSystem : EntitySystem private float _timer; - private Dictionary _fireEvents = new(); + private readonly Dictionary, float> _fireEvents = new(); public override void Initialize() { @@ -188,14 +186,14 @@ private void OnIsHot(EntityUid uid, FlammableComponent flammable, IsHotEvent arg args.IsHot = flammable.OnFire; } - private void OnTileFire(EntityUid uid, FlammableComponent flammable, ref TileFireEvent args) + private void OnTileFire(Entity ent, ref TileFireEvent args) { var tempDelta = args.Temperature - MinIgnitionTemperature; - _fireEvents.TryGetValue(flammable, out var maxTemp); + _fireEvents.TryGetValue(ent, out var maxTemp); if (tempDelta > maxTemp) - _fireEvents[flammable] = tempDelta; + _fireEvents[ent] = tempDelta; } private void OnRejuvenate(EntityUid uid, FlammableComponent component, RejuvenateEvent args) @@ -295,7 +293,7 @@ public override void Update(float frameTime) { // 100 -> 1, 200 -> 2, 400 -> 3... var fireStackMod = Math.Max(MathF.Log2(deltaTemp / 100) + 1, 0); - var fireStackDelta = fireStackMod - flammable.FireStacks; + var fireStackDelta = fireStackMod - flammable.Comp.FireStacks; var flammableEntity = flammable.Owner; if (fireStackDelta > 0) { @@ -313,10 +311,9 @@ public override void Update(float frameTime) _timer -= UpdateTime; // TODO: This needs cleanup to take off the crust from TemperatureComponent and shit. - foreach (var (flammable, transform) in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var flammable, out var transform)) { - var uid = flammable.Owner; - // Slowly dry ourselves off if wet. if (flammable.FireStacks < 0) { diff --git a/Content.Server/Atmos/EntitySystems/GasTankSystem.cs b/Content.Server/Atmos/EntitySystems/GasTankSystem.cs index 03286f08abcb78..df867d351638ac 100644 --- a/Content.Server/Atmos/EntitySystems/GasTankSystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTankSystem.cs @@ -53,31 +53,35 @@ public override void Initialize() SubscribeLocalEvent>(OnGetAlternativeVerb); } - private void OnGasShutdown(EntityUid uid, GasTankComponent component, ComponentShutdown args) + private void OnGasShutdown(Entity gasTank, ref ComponentShutdown args) { - DisconnectFromInternals(component); + DisconnectFromInternals(gasTank); } - private void OnGasTankToggleInternals(EntityUid uid, GasTankComponent component, GasTankToggleInternalsMessage args) + private void OnGasTankToggleInternals(Entity ent, ref GasTankToggleInternalsMessage args) { if (args.Session is not IPlayerSession playerSession || - playerSession.AttachedEntity is not {} player) return; + playerSession.AttachedEntity == null) + { + return; + } - ToggleInternals(component); + ToggleInternals(ent); } - private void OnGasTankSetPressure(EntityUid uid, GasTankComponent component, GasTankSetPressureMessage args) + private void OnGasTankSetPressure(Entity ent, ref GasTankSetPressureMessage args) { - var pressure = Math.Min(args.Pressure, component.MaxOutputPressure); + var pressure = Math.Min(args.Pressure, ent.Comp.MaxOutputPressure); - component.OutputPressure = pressure; + ent.Comp.OutputPressure = pressure; - UpdateUserInterface(component, true); + UpdateUserInterface(ent, true); } - public void UpdateUserInterface(GasTankComponent component, bool initialUpdate = false) + public void UpdateUserInterface(Entity ent, bool initialUpdate = false) { - _ui.TrySetUiState(component.Owner, SharedGasTankUiKey.Key, + var (owner, component) = ent; + _ui.TrySetUiState(owner, SharedGasTankUiKey.Key, new GasTankBoundUserInterfaceState { TankPressure = component.Air?.Pressure ?? 0, @@ -87,10 +91,10 @@ public void UpdateUserInterface(GasTankComponent component, bool initialUpdate = }); } - private void BeforeUiOpen(EntityUid uid, GasTankComponent component, BeforeActivatableUIOpenEvent args) + private void BeforeUiOpen(Entity ent, ref BeforeActivatableUIOpenEvent args) { // Only initial update includes output pressure information, to avoid overwriting client-input as the updates come in. - UpdateUserInterface(component, true); + UpdateUserInterface(ent, true); } private void OnParentChange(EntityUid uid, GasTankComponent component, ref EntParentChangedMessage args) @@ -115,12 +119,12 @@ private void OnExamined(EntityUid uid, GasTankComponent component, ExaminedEvent args.PushMarkup(Loc.GetString(component.IsValveOpen ? "comp-gas-tank-examine-open-valve" : "comp-gas-tank-examine-closed-valve")); } - private void OnActionToggle(EntityUid uid, GasTankComponent component, ToggleActionEvent args) + private void OnActionToggle(Entity gasTank, ref ToggleActionEvent args) { if (args.Handled) return; - ToggleInternals(component); + ToggleInternals(gasTank); args.Handled = true; } @@ -130,30 +134,33 @@ public override void Update(float frameTime) _timer += frameTime; - if (_timer < TimerDelay) return; + if (_timer < TimerDelay) + return; + _timer -= TimerDelay; var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var gasTank)) + while (query.MoveNext(out var uid, out var comp)) { - if (gasTank.IsValveOpen && !gasTank.IsLowPressure) + var gasTank = (uid, comp); + if (comp.IsValveOpen && !comp.IsLowPressure) { - ReleaseGas(uid, gasTank); + ReleaseGas(gasTank); } - if (gasTank.CheckUser) + if (comp.CheckUser) { - gasTank.CheckUser = false; - if (Transform(uid).ParentUid != gasTank.User) + comp.CheckUser = false; + if (Transform(uid).ParentUid != comp.User) { DisconnectFromInternals(gasTank); continue; } } - if (gasTank.Air != null) + if (comp.Air != null) { - _atmosphereSystem.React(gasTank.Air, gasTank); + _atmosphereSystem.React(comp.Air, comp); } CheckStatus(gasTank); if (_ui.IsUiOpen(uid, SharedGasTankUiKey.Key)) @@ -163,47 +170,48 @@ public override void Update(float frameTime) } } - private void ReleaseGas(EntityUid uid, GasTankComponent component) + private void ReleaseGas(Entity gasTank) { - var removed = RemoveAirVolume(component, component.ValveOutputRate * TimerDelay); - var environment = _atmosphereSystem.GetContainingMixture(uid, false, true); + var removed = RemoveAirVolume(gasTank, gasTank.Comp.ValveOutputRate * TimerDelay); + var environment = _atmosphereSystem.GetContainingMixture(gasTank, false, true); if (environment != null) { _atmosphereSystem.Merge(environment, removed); } var impulse = removed.TotalMoles * removed.Temperature; - _physics.ApplyLinearImpulse(uid, _random.NextAngle().ToWorldVec() * impulse); - _physics.ApplyAngularImpulse(uid, _random.NextFloat(-3f, 3f)); - _audioSys.PlayPvs(component.RuptureSound, uid); + _physics.ApplyLinearImpulse(gasTank, _random.NextAngle().ToWorldVec() * impulse); + _physics.ApplyAngularImpulse(gasTank, _random.NextFloat(-3f, 3f)); + _audioSys.PlayPvs(gasTank.Comp.RuptureSound, gasTank); } - private void ToggleInternals(GasTankComponent component) + private void ToggleInternals(Entity ent) { - if (component.IsConnected) + if (ent.Comp.IsConnected) { - DisconnectFromInternals(component); + DisconnectFromInternals(ent); } else { - ConnectToInternals(component); + ConnectToInternals(ent); } } - public GasMixture? RemoveAir(GasTankComponent component, float amount) + public GasMixture? RemoveAir(Entity gasTank, float amount) { - var gas = component.Air?.Remove(amount); - CheckStatus(component); + var gas = gasTank.Comp.Air?.Remove(amount); + CheckStatus(gasTank); return gas; } - public GasMixture RemoveAirVolume(GasTankComponent component, float volume) + public GasMixture RemoveAirVolume(Entity gasTank, float volume) { + var component = gasTank.Comp; if (component.Air == null) return new GasMixture(volume); var molesNeeded = component.OutputPressure * volume / (Atmospherics.R * component.Air.Temperature); - var air = RemoveAir(component, molesNeeded); + var air = RemoveAir(gasTank, molesNeeded); if (air != null) air.Volume = volume; @@ -215,12 +223,13 @@ public GasMixture RemoveAirVolume(GasTankComponent component, float volume) public bool CanConnectToInternals(GasTankComponent component) { - var internals = GetInternalsComponent(component); + var internals = GetInternalsComponent(component, component.User); return internals != null && internals.BreathToolEntity != null && !component.IsValveOpen; } - public void ConnectToInternals(GasTankComponent component) + public void ConnectToInternals(Entity ent) { + var (owner, component) = ent; if (component.IsConnected || !CanConnectToInternals(component)) return; @@ -228,7 +237,7 @@ public void ConnectToInternals(GasTankComponent component) if (internals == null) return; - if (_internals.TryConnectTank(internals, component.Owner)) + if (_internals.TryConnectTank((internals.Owner, internals), owner)) component.User = internals.Owner; _actions.SetToggled(component.ToggleActionEntity, component.IsConnected); @@ -240,13 +249,14 @@ public void ConnectToInternals(GasTankComponent component) component.ConnectStream?.Stop(); if (component.ConnectSound != null) - component.ConnectStream = _audioSys.PlayPvs(component.ConnectSound, component.Owner); + component.ConnectStream = _audioSys.PlayPvs(component.ConnectSound, owner); - UpdateUserInterface(component); + UpdateUserInterface(ent); } - public void DisconnectFromInternals(GasTankComponent component) + public void DisconnectFromInternals(Entity ent) { + var (owner, component) = ent; if (component.User == null) return; @@ -259,29 +269,30 @@ public void DisconnectFromInternals(GasTankComponent component) component.DisconnectStream?.Stop(); if (component.DisconnectSound != null) - component.DisconnectStream = _audioSys.PlayPvs(component.DisconnectSound, component.Owner); + component.DisconnectStream = _audioSys.PlayPvs(component.DisconnectSound, owner); - UpdateUserInterface(component); + UpdateUserInterface(ent); } private InternalsComponent? GetInternalsComponent(GasTankComponent component, EntityUid? owner = null) { owner ??= component.User; - if (Deleted(component.Owner)) return null; + if (Deleted(component.Owner))return null; if (owner != null) return CompOrNull(owner.Value); return _containers.TryGetContainingContainer(component.Owner, out var container) ? CompOrNull(container.Owner) : null; } - public void AssumeAir(GasTankComponent component, GasMixture giver) + public void AssumeAir(Entity ent, GasMixture giver) { - _atmosphereSystem.Merge(component.Air, giver); - CheckStatus(component); + _atmosphereSystem.Merge(ent.Comp.Air, giver); + CheckStatus(ent); } - public void CheckStatus(GasTankComponent component) + public void CheckStatus(Entity ent) { + var (owner, component) = ent; if (component.Air == null) return; @@ -305,7 +316,7 @@ public void CheckStatus(GasTankComponent component) range = GasTankComponent.MaxExplosionRange; } - _explosions.TriggerExplosive(component.Owner, radius: range); + _explosions.TriggerExplosive(owner, radius: range); return; } @@ -314,13 +325,13 @@ public void CheckStatus(GasTankComponent component) { if (component.Integrity <= 0) { - var environment = _atmosphereSystem.GetContainingMixture(component.Owner, false, true); + var environment = _atmosphereSystem.GetContainingMixture(owner, false, true); if(environment != null) _atmosphereSystem.Merge(environment, component.Air); - _audioSys.Play(component.RuptureSound, Filter.Pvs(component.Owner), Transform(component.Owner).Coordinates, true, AudioParams.Default.WithVariation(0.125f)); + _audioSys.Play(component.RuptureSound, Filter.Pvs(owner), Transform(owner).Coordinates, true, AudioParams.Default.WithVariation(0.125f)); - QueueDel(component.Owner); + QueueDel(owner); return; } @@ -332,7 +343,7 @@ public void CheckStatus(GasTankComponent component) { if (component.Integrity <= 0) { - var environment = _atmosphereSystem.GetContainingMixture(component.Owner, false, true); + var environment = _atmosphereSystem.GetContainingMixture(owner, false, true); if (environment == null) return; diff --git a/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs b/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs index c7995f4ae6c684..efd67550ba1a9b 100644 --- a/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs @@ -1,8 +1,7 @@ -using System.Linq; -using Content.Server.Atmos.Monitor.Components; using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.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.Power.Components; @@ -87,7 +86,7 @@ private void OnAtmosMonitorStartup(EntityUid uid, AtmosMonitorComponent componen if (!HasComp(uid) && TryComp(uid, out var atmosDeviceComponent)) { - _atmosDeviceSystem.LeaveAtmosphere(atmosDeviceComponent); + _atmosDeviceSystem.LeaveAtmosphere((uid, atmosDeviceComponent)); } } @@ -155,18 +154,18 @@ private void OnPacketRecv(EntityUid uid, AtmosMonitorComponent component, Device } } - private void OnPowerChangedEvent(EntityUid uid, AtmosMonitorComponent component, ref PowerChangedEvent args) + private void OnPowerChangedEvent(Entity ent, ref PowerChangedEvent args) { - if (TryComp(uid, out var atmosDeviceComponent)) + if (TryComp(ent, out var atmosDeviceComponent)) { if (!args.Powered) { - _atmosDeviceSystem.LeaveAtmosphere(atmosDeviceComponent); + _atmosDeviceSystem.LeaveAtmosphere((ent, atmosDeviceComponent)); } else { - _atmosDeviceSystem.JoinAtmosphere(atmosDeviceComponent); - Alert(uid, component.LastAlarmState); + _atmosDeviceSystem.JoinAtmosphere((ent, atmosDeviceComponent)); + Alert(ent, ent.Comp.LastAlarmState); } } } @@ -305,12 +304,13 @@ private void UpdateState(EntityUid uid, GasMixture? air, AtmosMonitorComponent? /// The alarms that caused this alarm state. public void Alert(EntityUid uid, AtmosAlarmType state, HashSet? alarms = null, AtmosMonitorComponent? monitor = null) { - if (!Resolve(uid, ref monitor)) return; + if (!Resolve(uid, ref monitor)) + return; monitor.LastAlarmState = state; monitor.TrippedThresholds = alarms ?? monitor.TrippedThresholds; - BroadcastAlertPacket(monitor); + BroadcastAlertPacket((uid, monitor)); // TODO: Central system that grabs *all* alarms from wired network } @@ -336,11 +336,13 @@ private void Reset(EntityUid uid) /// is synced between monitors the moment a monitor sends out an alarm, /// or if it is explicitly synced (see ResetAll/Sync). /// - private void BroadcastAlertPacket(AtmosMonitorComponent monitor, TagComponent? tags = null) + private void BroadcastAlertPacket(Entity ent, TagComponent? tags = null) { - if (!monitor.NetEnabled) return; + var (owner, monitor) = ent; + if (!monitor.NetEnabled) + return; - if (!Resolve(monitor.Owner, ref tags, false)) + if (!Resolve(owner, ref tags, false)) { return; } @@ -355,7 +357,7 @@ private void BroadcastAlertPacket(AtmosMonitorComponent monitor, TagComponent? t foreach (var addr in monitor.RegisteredDevices) { - _deviceNetSystem.QueuePacket(monitor.Owner, addr, payload); + _deviceNetSystem.QueuePacket(owner, addr, payload); } } @@ -367,7 +369,8 @@ private void BroadcastAlertPacket(AtmosMonitorComponent monitor, TagComponent? t /// Gas, if applicable. public void SetThreshold(EntityUid uid, AtmosMonitorThresholdType type, AtmosAlarmThreshold threshold, Gas? gas = null, AtmosMonitorComponent? monitor = null) { - if (!Resolve(uid, ref monitor)) return; + if (!Resolve(uid, ref monitor)) + return; switch (type) { @@ -378,7 +381,8 @@ public void SetThreshold(EntityUid uid, AtmosMonitorThresholdType type, AtmosAla monitor.TemperatureThreshold = threshold; break; case AtmosMonitorThresholdType.Gas: - if (gas == null || monitor.GasThresholds == null) return; + if (gas == null || monitor.GasThresholds == null) + return; monitor.GasThresholds[(Gas) gas] = threshold; break; } diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs index d2326b2b560a24..9b37aaaf3e1016 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs @@ -79,12 +79,12 @@ private void OnPassiveGateUpdated(EntityUid uid, GasPassiveGateComponent gate, A gate.FlowRate = a*dV/tau + (1-a)*gate.FlowRate; // in L/sec } - private void OnExamined(EntityUid uid, GasPassiveGateComponent gate, ExaminedEvent args) + private void OnExamined(Entity gate, ref ExaminedEvent args) { - if (!EntityManager.GetComponent(gate.Owner).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. + if (!Comp(gate).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. return; - var str = Loc.GetString("gas-passive-gate-examined", ("flowRate", $"{gate.FlowRate:0.#}")); + var str = Loc.GetString("gas-passive-gate-examined", ("flowRate", $"{gate.Comp.FlowRate:0.#}")); args.PushMarkup(str); } } diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs index 26000d50cf5778..359123aabf2162 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Atmos.EntitySystems; -using Content.Shared.Atmos.Piping; using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Components; using Content.Server.Construction; @@ -7,6 +6,7 @@ using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; +using Content.Shared.Atmos.Piping; using Content.Shared.Audio; using Content.Shared.Examine; using JetBrains.Annotations; @@ -38,12 +38,13 @@ private void OnEnabled(EntityUid uid, GasRecyclerComponent comp, AtmosDeviceEnab UpdateAppearance(uid, comp); } - private void OnExamined(EntityUid uid, GasRecyclerComponent comp, ExaminedEvent args) + private void OnExamined(Entity ent, ref ExaminedEvent args) { - if (!EntityManager.GetComponent(comp.Owner).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. + var comp = ent.Comp; + if (!EntityManager.GetComponent(ent).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. return; - if (!EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer) + if (!EntityManager.TryGetComponent(ent, out NodeContainerComponent? nodeContainer) || !_nodeContainer.TryGetNode(nodeContainer, comp.InletName, out PipeNode? inlet) || !_nodeContainer.TryGetNode(nodeContainer, comp.OutletName, out PipeNode? _)) { @@ -68,13 +69,14 @@ private void OnExamined(EntityUid uid, GasRecyclerComponent comp, ExaminedEvent } } - private void OnUpdate(EntityUid uid, GasRecyclerComponent comp, AtmosDeviceUpdateEvent args) + private void OnUpdate(Entity ent, ref AtmosDeviceUpdateEvent args) { - if (!EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer) + var comp = ent.Comp; + if (!EntityManager.TryGetComponent(ent, out NodeContainerComponent? nodeContainer) || !_nodeContainer.TryGetNode(nodeContainer, comp.InletName, out PipeNode? inlet) || !_nodeContainer.TryGetNode(nodeContainer, comp.OutletName, out PipeNode? outlet)) { - _ambientSoundSystem.SetAmbience(comp.Owner, false); + _ambientSoundSystem.SetAmbience(ent, false); return; } @@ -92,8 +94,8 @@ private void OnUpdate(EntityUid uid, GasRecyclerComponent comp, AtmosDeviceUpdat } _atmosphereSystem.Merge(outlet.Air, removed); - UpdateAppearance(uid, comp); - _ambientSoundSystem.SetAmbience(comp.Owner, true); + UpdateAppearance(ent, comp); + _ambientSoundSystem.SetAmbience(ent, true); } public float PassiveTransferVol(GasMixture inlet, GasMixture outlet) diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasValveSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasValveSystem.cs index ceabee689db87d..914e732991127f 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasValveSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasValveSystem.cs @@ -7,7 +7,6 @@ using Content.Shared.Examine; using Content.Shared.Interaction; using JetBrains.Annotations; -using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Player; @@ -29,9 +28,10 @@ public override void Initialize() SubscribeLocalEvent(OnExamined); } - private void OnExamined(EntityUid uid, GasValveComponent valve, ExaminedEvent args) + private void OnExamined(Entity ent, ref ExaminedEvent args) { - if (!Comp(valve.Owner).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. + var valve = ent.Comp; + if (!Comp(ent).Anchored || !args.IsInDetailsRange) // Not anchored? Out of range? No status. return; if (Loc.TryGetString("gas-valve-system-examined", out var str, @@ -50,7 +50,7 @@ private void OnStartup(EntityUid uid, GasValveComponent component, ComponentStar private void OnActivate(EntityUid uid, GasValveComponent component, ActivateInWorldEvent args) { Toggle(uid, component); - SoundSystem.Play(component.ValveSound.GetSound(), Filter.Pvs(component.Owner), component.Owner, AudioHelpers.WithVariation(0.25f)); + SoundSystem.Play(component.ValveSound.GetSound(), Filter.Pvs(uid), uid, AudioHelpers.WithVariation(0.25f)); } public void Set(EntityUid uid, GasValveComponent component, bool value) @@ -60,7 +60,7 @@ public void Set(EntityUid uid, GasValveComponent component, bool value) && _nodeContainer.TryGetNode(nodeContainer, component.InletName, out PipeNode? inlet) && _nodeContainer.TryGetNode(nodeContainer, component.OutletName, out PipeNode? outlet)) { - if (TryComp(component.Owner,out var appearance)) + if (TryComp(uid, out var appearance)) { _appearance.SetData(uid, FilterVisuals.Enabled, component.Open, appearance); } @@ -68,13 +68,13 @@ public void Set(EntityUid uid, GasValveComponent component, bool value) { inlet.AddAlwaysReachable(outlet); outlet.AddAlwaysReachable(inlet); - _ambientSoundSystem.SetAmbience(component.Owner, true); + _ambientSoundSystem.SetAmbience(uid, true); } else { inlet.RemoveAlwaysReachable(outlet); outlet.RemoveAlwaysReachable(inlet); - _ambientSoundSystem.SetAmbience(component.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); } } } diff --git a/Content.Server/Atmos/Piping/EntitySystems/AtmosDeviceSystem.cs b/Content.Server/Atmos/Piping/EntitySystems/AtmosDeviceSystem.cs index a3f5f2113f2ff5..ee7cf370968121 100644 --- a/Content.Server/Atmos/Piping/EntitySystems/AtmosDeviceSystem.cs +++ b/Content.Server/Atmos/Piping/EntitySystems/AtmosDeviceSystem.cs @@ -11,10 +11,10 @@ public sealed class AtmosDeviceSystem : EntitySystem [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; - private float _timer = 0f; + private float _timer; // Set of atmos devices that are off-grid but have JoinSystem set. - private readonly HashSet _joinedDevices = new(); + private readonly HashSet> _joinedDevices = new(); public override void Initialize() { @@ -27,9 +27,10 @@ public override void Initialize() SubscribeLocalEvent(OnDeviceAnchorChanged); } - public void JoinAtmosphere(AtmosDeviceComponent component) + public void JoinAtmosphere(Entity ent) { - var transform = Transform(component.Owner); + var component = ent.Comp; + var transform = Transform(ent); if (component.RequireAnchored && !transform.Anchored) return; @@ -39,16 +40,17 @@ public void JoinAtmosphere(AtmosDeviceComponent component) if (!onGrid && component.JoinSystem) { - _joinedDevices.Add(component); + _joinedDevices.Add(ent); component.JoinedSystem = true; } component.LastProcess = _gameTiming.CurTime; - RaiseLocalEvent(component.Owner, new AtmosDeviceEnabledEvent(), false); + RaiseLocalEvent(ent, new AtmosDeviceEnabledEvent()); } - public void LeaveAtmosphere(AtmosDeviceComponent component) + public void LeaveAtmosphere(Entity ent) { + var component = ent.Comp; // Try to remove the component from an atmosphere, and if not if (component.JoinedGrid != null && !_atmosphereSystem.RemoveAtmosDevice(component.JoinedGrid.Value, component)) { @@ -59,45 +61,45 @@ public void LeaveAtmosphere(AtmosDeviceComponent component) if (component.JoinedSystem) { - _joinedDevices.Remove(component); + _joinedDevices.Remove(ent); component.JoinedSystem = false; } component.LastProcess = TimeSpan.Zero; - RaiseLocalEvent(component.Owner, new AtmosDeviceDisabledEvent(), false); + RaiseLocalEvent(ent, new AtmosDeviceDisabledEvent()); } - public void RejoinAtmosphere(AtmosDeviceComponent component) + public void RejoinAtmosphere(Entity component) { LeaveAtmosphere(component); JoinAtmosphere(component); } - private void OnDeviceInitialize(EntityUid uid, AtmosDeviceComponent component, ComponentInit args) + private void OnDeviceInitialize(Entity ent, ref ComponentInit args) { - JoinAtmosphere(component); + JoinAtmosphere(ent); } - private void OnDeviceShutdown(EntityUid uid, AtmosDeviceComponent component, ComponentShutdown args) + private void OnDeviceShutdown(Entity ent, ref ComponentShutdown args) { - LeaveAtmosphere(component); + LeaveAtmosphere(ent); } - private void OnDeviceAnchorChanged(EntityUid uid, AtmosDeviceComponent component, ref AnchorStateChangedEvent args) + private void OnDeviceAnchorChanged(Entity ent, ref AnchorStateChangedEvent args) { // Do nothing if the component doesn't require being anchored to function. - if (!component.RequireAnchored) + if (!ent.Comp.RequireAnchored) return; if (args.Anchored) - JoinAtmosphere(component); + JoinAtmosphere(ent); else - LeaveAtmosphere(component); + LeaveAtmosphere(ent); } - private void OnDeviceParentChanged(EntityUid uid, AtmosDeviceComponent component, ref EntParentChangedMessage args) + private void OnDeviceParentChanged(Entity ent, ref EntParentChangedMessage args) { - RejoinAtmosphere(component); + RejoinAtmosphere(ent); } /// @@ -116,8 +118,8 @@ public override void Update(float frameTime) var time = _gameTiming.CurTime; foreach (var device in _joinedDevices) { - RaiseLocalEvent(device.Owner, new AtmosDeviceUpdateEvent(_atmosphereSystem.AtmosTime), false); - device.LastProcess = time; + RaiseLocalEvent(device, new AtmosDeviceUpdateEvent(_atmosphereSystem.AtmosTime)); + device.Comp.LastProcess = time; } } } diff --git a/Content.Server/Atmos/Piping/Other/EntitySystems/GasMinerSystem.cs b/Content.Server/Atmos/Piping/Other/EntitySystems/GasMinerSystem.cs index 9cdee72b68e35d..9853a17f829a9a 100644 --- a/Content.Server/Atmos/Piping/Other/EntitySystems/GasMinerSystem.cs +++ b/Content.Server/Atmos/Piping/Other/EntitySystems/GasMinerSystem.cs @@ -1,13 +1,10 @@ using System.Diagnostics.CodeAnalysis; -using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Other.Components; using Content.Shared.Atmos; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; namespace Content.Server.Atmos.Piping.Other.EntitySystems { @@ -24,9 +21,10 @@ public override void Initialize() SubscribeLocalEvent(OnMinerUpdated); } - private void OnMinerUpdated(EntityUid uid, GasMinerComponent miner, AtmosDeviceUpdateEvent args) + private void OnMinerUpdated(Entity ent, ref AtmosDeviceUpdateEvent args) { - if (!CheckMinerOperation(miner, out var environment) || !miner.Enabled || !miner.SpawnGas.HasValue || miner.SpawnAmount <= 0f) + var miner = ent.Comp; + if (!CheckMinerOperation(ent, out var environment) || !miner.Enabled || !miner.SpawnGas.HasValue || miner.SpawnAmount <= 0f) return; // Time to mine some gas. @@ -37,9 +35,9 @@ private void OnMinerUpdated(EntityUid uid, GasMinerComponent miner, AtmosDeviceU _atmosphereSystem.Merge(environment, merger); } - private bool CheckMinerOperation(GasMinerComponent miner, [NotNullWhen(true)] out GasMixture? environment) + private bool CheckMinerOperation(Entity ent, [NotNullWhen(true)] out GasMixture? environment) { - var uid = miner.Owner; + var (uid, miner) = ent; environment = _atmosphereSystem.GetContainingMixture(uid, true, true); var transform = Transform(uid); diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs index 9f41671bca41a9..69a0178a018b88 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs @@ -14,7 +14,6 @@ using Content.Shared.Popups; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Shared.Player; namespace Content.Server.Atmos.Piping.Trinary.EntitySystems { @@ -60,16 +59,16 @@ private void OnFilterUpdated(EntityUid uid, GasFilterComponent filter, AtmosDevi || !_nodeContainer.TryGetNode(nodeContainer, filter.OutletName, out PipeNode? outletNode) || outletNode.Air.Pressure >= Atmospherics.MaxOutputPressure) // No need to transfer if target is full. { - _ambientSoundSystem.SetAmbience(filter.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); return; } // We multiply the transfer rate in L/s by the seconds passed since the last process to get the liters. - var transferVol = (float)(filter.TransferRate * args.dt); + var transferVol = filter.TransferRate * args.dt; if (transferVol <= 0) { - _ambientSoundSystem.SetAmbience(filter.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); return; } @@ -84,7 +83,7 @@ private void OnFilterUpdated(EntityUid uid, GasFilterComponent filter, AtmosDevi var target = filterNode.Air.Pressure < Atmospherics.MaxOutputPressure ? filterNode : inletNode; _atmosphereSystem.Merge(target.Air, filteredOut); - _ambientSoundSystem.SetAmbience(filter.Owner, filteredOut.TotalMoles > 0f); + _ambientSoundSystem.SetAmbience(uid, filteredOut.TotalMoles > 0f); } _atmosphereSystem.Merge(outletNode.Air, removed); @@ -95,7 +94,7 @@ private void OnFilterLeaveAtmosphere(EntityUid uid, GasFilterComponent filter, A filter.Enabled = false; UpdateAppearance(uid, filter); - _ambientSoundSystem.SetAmbience(filter.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); DirtyUI(uid, filter); _userInterfaceSystem.TryCloseAll(uid, GasFilterUiKey.Key); @@ -106,7 +105,7 @@ private void OnFilterInteractHand(EntityUid uid, GasFilterComponent filter, Inte if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) return; - if (EntityManager.GetComponent(filter.Owner).Anchored) + if (EntityManager.GetComponent(uid).Anchored) { _userInterfaceSystem.TryOpen(uid, GasFilterUiKey.Key, actor.PlayerSession); DirtyUI(uid, filter); @@ -125,7 +124,7 @@ private void DirtyUI(EntityUid uid, GasFilterComponent? filter) return; _userInterfaceSystem.TrySetUiState(uid, GasFilterUiKey.Key, - new GasFilterBoundUserInterfaceState(EntityManager.GetComponent(filter.Owner).EntityName, filter.TransferRate, filter.Enabled, filter.FilteredGas)); + new GasFilterBoundUserInterfaceState(MetaData(uid).EntityName, filter.TransferRate, filter.Enabled, filter.FilteredGas)); } private void UpdateAppearance(EntityUid uid, GasFilterComponent? filter = null) diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs index cbb1b33eefb581..ceea449a31212c 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs @@ -7,7 +7,6 @@ using Content.Shared.Atmos.Piping; using Content.Shared.Audio; using JetBrains.Annotations; -using Robust.Server.GameObjects; namespace Content.Server.Atmos.Piping.Trinary.EntitySystems { @@ -40,7 +39,7 @@ private void OnUpdate(EntityUid uid, PressureControlledValveComponent comp, Atmo || !_nodeContainer.TryGetNode(nodeContainer, comp.ControlName, out PipeNode? controlNode) || !_nodeContainer.TryGetNode(nodeContainer, comp.OutletName, out PipeNode? outletNode)) { - _ambientSoundSystem.SetAmbience(comp.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); comp.Enabled = false; return; } @@ -68,14 +67,14 @@ private void OnUpdate(EntityUid uid, PressureControlledValveComponent comp, Atmo UpdateAppearance(uid, comp); // We multiply the transfer rate in L/s by the seconds passed since the last process to get the liters. - var transferVolume = (float)(transferRate * args.dt); + var transferVolume = transferRate * args.dt; if (transferVolume <= 0) { - _ambientSoundSystem.SetAmbience(comp.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); return; } - _ambientSoundSystem.SetAmbience(comp.Owner, true); + _ambientSoundSystem.SetAmbience(uid, true); var removed = inletNode.Air.RemoveVolume(transferVolume); _atmosphereSystem.Merge(outletNode.Air, removed); } @@ -84,7 +83,7 @@ private void OnFilterLeaveAtmosphere(EntityUid uid, PressureControlledValveCompo { comp.Enabled = false; UpdateAppearance(uid, comp); - _ambientSoundSystem.SetAmbience(comp.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); } private void UpdateAppearance(EntityUid uid, PressureControlledValveComponent? comp = null, AppearanceComponent? appearance = null) diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs index 49241b43ddedba..adde584cc39078 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs @@ -7,7 +7,6 @@ using Content.Shared.Atmos.Piping; using Content.Shared.Interaction; using JetBrains.Annotations; -using Robust.Server.GameObjects; namespace Content.Server.Atmos.Piping.Unary.EntitySystems { @@ -40,7 +39,7 @@ private void OnActivate(EntityUid uid, GasOutletInjectorComponent component, Act public void UpdateAppearance(EntityUid uid, GasOutletInjectorComponent component, AppearanceComponent? appearance = null) { - if (!Resolve(component.Owner, ref appearance, false)) + if (!Resolve(uid, ref appearance, false)) return; _appearance.SetData(uid, OutletInjectorVisuals.Enabled, component.Enabled, appearance); diff --git a/Content.Server/Bed/BedSystem.cs b/Content.Server/Bed/BedSystem.cs index 12eda65f84e1d7..e7d1e3be3c394e 100644 --- a/Content.Server/Bed/BedSystem.cs +++ b/Content.Server/Bed/BedSystem.cs @@ -57,14 +57,16 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var (_, bedComponent, strapComponent) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out var bedComponent, out var strapComponent)) { if (_timing.CurTime < bedComponent.NextHealTime) continue; bedComponent.NextHealTime += TimeSpan.FromSeconds(bedComponent.HealTime); - if (strapComponent.BuckledEntities.Count == 0) continue; + if (strapComponent.BuckledEntities.Count == 0) + continue; foreach (var healedEntity in strapComponent.BuckledEntities) { @@ -76,7 +78,7 @@ public override void Update(float frameTime) if (HasComp(healedEntity)) damage *= bedComponent.SleepMultiplier; - _damageableSystem.TryChangeDamage(healedEntity, damage, true, origin: bedComponent.Owner); + _damageableSystem.TryChangeDamage(healedEntity, damage, true, origin: uid); } } } diff --git a/Content.Server/Bible/BibleSystem.cs b/Content.Server/Bible/BibleSystem.cs index e2cdc8c7440a7a..b3b41e2f32eca0 100644 --- a/Content.Server/Bible/BibleSystem.cs +++ b/Content.Server/Bible/BibleSystem.cs @@ -65,7 +65,8 @@ public override void Update(float frameTime) } _remQueue.Clear(); - foreach (var (respawning, summonableComp) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var respawning, out var summonableComp)) { summonableComp.Accumulator += frameTime; if (summonableComp.Accumulator < summonableComp.RespawnTime) @@ -79,11 +80,11 @@ public override void Update(float frameTime) summonableComp.Summon = null; } summonableComp.AlreadySummoned = false; - _popupSystem.PopupEntity(Loc.GetString("bible-summon-respawn-ready", ("book", summonableComp.Owner)), summonableComp.Owner, PopupType.Medium); - SoundSystem.Play("/Audio/Effects/radpulse9.ogg", Filter.Pvs(summonableComp.Owner), summonableComp.Owner, AudioParams.Default.WithVolume(-4f)); + _popupSystem.PopupEntity(Loc.GetString("bible-summon-respawn-ready", ("book", uid)), uid, PopupType.Medium); + SoundSystem.Play("/Audio/Effects/radpulse9.ogg", Filter.Pvs(uid), uid, AudioParams.Default.WithVolume(-4f)); // Clean up the accumulator and respawn tracking component summonableComp.Accumulator = 0; - _remQueue.Enqueue(respawning.Owner); + _remQueue.Enqueue(uid); } } @@ -167,7 +168,7 @@ private void AddSummonVerb(EntityUid uid, SummonableComponent component, GetVerb { if (!TryComp(args.User, out var userXform)) return; - AttemptSummon(component, args.User, userXform); + AttemptSummon((uid, component), args.User, userXform); }, Text = Loc.GetString("bible-summon-verb"), Priority = 2 @@ -183,9 +184,9 @@ private void GetSummonAction(EntityUid uid, SummonableComponent component, GetIt args.AddAction(ref component.SummonActionEntity, component.SummonAction); } - private void OnSummon(EntityUid uid, SummonableComponent component, SummonActionEvent args) + private void OnSummon(Entity ent, ref SummonActionEvent args) { - AttemptSummon(component, args.Performer, Transform(args.Performer)); + AttemptSummon(ent, args.Performer, Transform(args.Performer)); } /// @@ -198,9 +199,9 @@ private void OnFamiliarDeath(EntityUid uid, FamiliarComponent component, MobStat return; var source = component.Source; - if (source != null && TryComp(source, out var summonable)) + if (source != null && HasComp(source)) { - _addQueue.Enqueue(summonable.Owner); + _addQueue.Enqueue(source.Value); } } @@ -209,24 +210,26 @@ private void OnFamiliarDeath(EntityUid uid, FamiliarComponent component, MobStat /// private void OnSpawned(EntityUid uid, FamiliarComponent component, GhostRoleSpawnerUsedEvent args) { - if (!TryComp(Transform(args.Spawner).ParentUid, out var summonable)) + var parent = Transform(args.Spawner).ParentUid; + if (!TryComp(parent, out var summonable)) return; - component.Source = summonable.Owner; + component.Source = parent; summonable.Summon = uid; } - private void AttemptSummon(SummonableComponent component, EntityUid user, TransformComponent? position) + private void AttemptSummon(Entity ent, EntityUid user, TransformComponent? position) { + var (uid, component) = ent; if (component.AlreadySummoned || component.SpecialItemPrototype == null) return; if (component.RequiresBibleUser && !HasComp(user)) return; if (!Resolve(user, ref position)) return; - if (component.Deleted || Deleted(component.Owner)) + if (component.Deleted || Deleted(uid)) return; - if (!_blocker.CanInteract(user, component.Owner)) + if (!_blocker.CanInteract(user, uid)) return; // Make this familiar the component's summon @@ -237,7 +240,7 @@ private void AttemptSummon(SummonableComponent component, EntityUid user, Transf if (HasComp(familiar)) { _popupSystem.PopupEntity(Loc.GetString("bible-summon-requested"), user, PopupType.Medium); - Transform(familiar).AttachParent(component.Owner); + Transform(familiar).AttachParent(uid); } component.AlreadySummoned = true; _actionsSystem.RemoveAction(user, component.SummonActionEntity); diff --git a/Content.Server/Body/Commands/DestroyMechanismCommand.cs b/Content.Server/Body/Commands/DestroyMechanismCommand.cs index f4e299fac93199..6ad0631150a3d8 100644 --- a/Content.Server/Body/Commands/DestroyMechanismCommand.cs +++ b/Content.Server/Body/Commands/DestroyMechanismCommand.cs @@ -51,7 +51,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var mechanismName = string.Join(" ", args).ToLowerInvariant(); var bodySystem = entityManager.System(); - foreach (var organ in bodySystem.GetBodyOrgans(body.Owner, body)) + foreach (var organ in bodySystem.GetBodyOrgans(attached, body)) { if (fac.GetComponentName(organ.Component.GetType()).ToLowerInvariant() == mechanismName) { diff --git a/Content.Server/Body/Systems/InternalsSystem.cs b/Content.Server/Body/Systems/InternalsSystem.cs index 3e8e2307e3d8c2..ec4faa345cdde1 100644 --- a/Content.Server/Body/Systems/InternalsSystem.cs +++ b/Content.Server/Body/Systems/InternalsSystem.cs @@ -81,7 +81,7 @@ public void ToggleInternals(EntityUid uid, EntityUid user, bool force, Internals return; } - var tank = FindBestGasTank(uid ,internals); + var tank = FindBestGasTank(uid, internals); if (tank == null) { @@ -95,7 +95,7 @@ public void ToggleInternals(EntityUid uid, EntityUid user, bool force, Internals return; } - _gasTank.ConnectToInternals(tank); + _gasTank.ConnectToInternals(tank.Value); } private void StartToggleInternalsDoAfter(EntityUid user, EntityUid target, InternalsComponent internals) @@ -139,34 +139,36 @@ private void OnInhaleLocation(EntityUid uid, InternalsComponent component, Inhal if (AreInternalsWorking(component)) { var gasTank = Comp(component.GasTankEntity!.Value); - args.Gas = _gasTank.RemoveAirVolume(gasTank, Atmospherics.BreathVolume); + args.Gas = _gasTank.RemoveAirVolume((component.GasTankEntity.Value, gasTank), Atmospherics.BreathVolume); // TODO: Should listen to gas tank updates instead I guess? _alerts.ShowAlert(uid, AlertType.Internals, GetSeverity(component)); } } - public void DisconnectBreathTool(InternalsComponent component) + public void DisconnectBreathTool(Entity ent) { + var (owner, component) = ent; var old = component.BreathToolEntity; component.BreathToolEntity = null; if (TryComp(old, out BreathToolComponent? breathTool) ) { _atmos.DisconnectInternals(breathTool); - DisconnectTank(component); + DisconnectTank(ent); } - _alerts.ShowAlert(component.Owner, AlertType.Internals, GetSeverity(component)); + _alerts.ShowAlert(owner, AlertType.Internals, GetSeverity(component)); } - public void ConnectBreathTool(InternalsComponent component, EntityUid toolEntity) + public void ConnectBreathTool(Entity ent, EntityUid toolEntity) { + var (owner, component) = ent; if (TryComp(component.BreathToolEntity, out BreathToolComponent? tool)) { _atmos.DisconnectInternals(tool); } component.BreathToolEntity = toolEntity; - _alerts.ShowAlert(component.Owner, AlertType.Internals, GetSeverity(component)); + _alerts.ShowAlert(owner, AlertType.Internals, GetSeverity(component)); } public void DisconnectTank(InternalsComponent? component) @@ -175,22 +177,23 @@ public void DisconnectTank(InternalsComponent? component) return; if (TryComp(component.GasTankEntity, out GasTankComponent? tank)) - _gasTank.DisconnectFromInternals(tank); + _gasTank.DisconnectFromInternals((component.GasTankEntity.Value, tank)); component.GasTankEntity = null; _alerts.ShowAlert(component.Owner, AlertType.Internals, GetSeverity(component)); } - public bool TryConnectTank(InternalsComponent component, EntityUid tankEntity) + public bool TryConnectTank(Entity ent, EntityUid tankEntity) { + var component = ent.Comp; if (component.BreathToolEntity == null) return false; if (TryComp(component.GasTankEntity, out GasTankComponent? tank)) - _gasTank.DisconnectFromInternals(tank); + _gasTank.DisconnectFromInternals((component.GasTankEntity.Value, tank)); component.GasTankEntity = tankEntity; - _alerts.ShowAlert(component.Owner, AlertType.Internals, GetSeverity(component)); + _alerts.ShowAlert(ent, AlertType.Internals, GetSeverity(component)); return true; } @@ -213,7 +216,7 @@ private short GetSeverity(InternalsComponent component) return 1; } - public GasTankComponent? FindBestGasTank(EntityUid internalsOwner, InternalsComponent component) + public Entity? FindBestGasTank(EntityUid internalsOwner, InternalsComponent component) { // Prioritise // 1. back equipped tanks @@ -227,27 +230,27 @@ private short GetSeverity(InternalsComponent component) TryComp(backEntity, out var backGasTank) && _gasTank.CanConnectToInternals(backGasTank)) { - return backGasTank; + return (backEntity.Value, backGasTank); } if (_inventory.TryGetSlotEntity(internalsOwner, "suitstorage", out var entity, inventory, containerManager) && TryComp(entity, out var gasTank) && _gasTank.CanConnectToInternals(gasTank)) { - return gasTank; + return (entity.Value, gasTank); } - var tanks = new List(); + var tanks = new List>(); foreach (var hand in _hands.EnumerateHands(internalsOwner)) { if (TryComp(hand.HeldEntity, out gasTank) && _gasTank.CanConnectToInternals(gasTank)) - tanks.Add(gasTank); + tanks.Add((hand.HeldEntity.Value, gasTank)); } if (tanks.Count > 0) { - tanks.Sort((x, y) => y.Air.TotalMoles.CompareTo(x.Air.TotalMoles)); + tanks.Sort((x, y) => y.Comp.Air.TotalMoles.CompareTo(x.Comp.Air.TotalMoles)); return tanks[0]; } @@ -258,12 +261,12 @@ private short GetSeverity(InternalsComponent component) while (enumerator.MoveNext(out var container)) { if (TryComp(container.ContainedEntity, out gasTank) && _gasTank.CanConnectToInternals(gasTank)) - tanks.Add(gasTank); + tanks.Add((container.ContainedEntity.Value, gasTank)); } if (tanks.Count > 0) { - tanks.Sort((x, y) => y.Air.TotalMoles.CompareTo(x.Air.TotalMoles)); + tanks.Sort((x, y) => y.Comp.Air.TotalMoles.CompareTo(x.Comp.Air.TotalMoles)); return tanks[0]; } } diff --git a/Content.Server/Body/Systems/LungSystem.cs b/Content.Server/Body/Systems/LungSystem.cs index a66efbac089151..301cf1431167d2 100644 --- a/Content.Server/Body/Systems/LungSystem.cs +++ b/Content.Server/Body/Systems/LungSystem.cs @@ -37,7 +37,7 @@ private void OnGotEquipped(EntityUid uid, BreathToolComponent component, GotEqui if (TryComp(args.Equipee, out InternalsComponent? internals)) { component.ConnectedInternalsEntity = args.Equipee; - _internals.ConnectBreathTool(internals, uid); + _internals.ConnectBreathTool((args.Equipee, internals), uid); } } diff --git a/Content.Server/Body/Systems/RespiratorSystem.cs b/Content.Server/Body/Systems/RespiratorSystem.cs index 5bde141b54a7d4..58f803acdc6e14 100644 --- a/Content.Server/Body/Systems/RespiratorSystem.cs +++ b/Content.Server/Body/Systems/RespiratorSystem.cs @@ -10,7 +10,6 @@ using Content.Shared.Database; using Content.Shared.Mobs.Systems; using JetBrains.Annotations; -using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Body.Systems @@ -41,10 +40,9 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var (respirator, body) in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var respirator, out var body)) { - var uid = respirator.Owner; - if (_mobState.IsDead(uid)) { continue; @@ -55,7 +53,7 @@ public override void Update(float frameTime) if (respirator.AccumulatedFrametime < respirator.CycleDelay) continue; respirator.AccumulatedFrametime -= respirator.CycleDelay; - UpdateSaturation(respirator.Owner, -respirator.CycleDelay, respirator); + UpdateSaturation(uid, -respirator.CycleDelay, respirator); if (!_mobState.IsIncapacitated(uid)) // cannot breathe in crit. { @@ -99,7 +97,7 @@ public void Inhale(EntityUid uid, BodyComponent? body = null) // Inhale gas var ev = new InhaleLocationEvent(); - RaiseLocalEvent(uid, ev, false); + RaiseLocalEvent(uid, ev); ev.Gas ??= _atmosSys.GetContainingMixture(uid, false, true); diff --git a/Content.Server/Body/Systems/StomachSystem.cs b/Content.Server/Body/Systems/StomachSystem.cs index 1d793887eef48c..5a3f6cf31a9aec 100644 --- a/Content.Server/Body/Systems/StomachSystem.cs +++ b/Content.Server/Body/Systems/StomachSystem.cs @@ -20,7 +20,8 @@ public override void Initialize() public override void Update(float frameTime) { - foreach (var (stomach, organ, sol)in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var stomach, out var organ, out var sol)) { stomach.AccumulatedFrameTime += frameTime; @@ -30,7 +31,7 @@ public override void Update(float frameTime) stomach.AccumulatedFrameTime -= stomach.UpdateInterval; // Get our solutions - if (!_solutionContainerSystem.TryGetSolution(stomach.Owner, DefaultSolutionName, + if (!_solutionContainerSystem.TryGetSolution(uid, DefaultSolutionName, out var stomachSolution, sol)) continue; @@ -50,7 +51,7 @@ public override void Update(float frameTime) if (reagent.Quantity > delta.ReagentQuantity.Quantity) reagent = new(reagent.Reagent, delta.ReagentQuantity.Quantity); - _solutionContainerSystem.RemoveReagent((stomach).Owner, stomachSolution, reagent); + _solutionContainerSystem.RemoveReagent(uid, stomachSolution, reagent); transferSolution.AddReagent(reagent); } diff --git a/Content.Server/Body/Systems/ThermalRegulatorSystem.cs b/Content.Server/Body/Systems/ThermalRegulatorSystem.cs index 9bfba759a21ace..60d2e389da32b2 100644 --- a/Content.Server/Body/Systems/ThermalRegulatorSystem.cs +++ b/Content.Server/Body/Systems/ThermalRegulatorSystem.cs @@ -12,14 +12,15 @@ public sealed class ThermalRegulatorSystem : EntitySystem public override void Update(float frameTime) { - foreach (var regulator in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var regulator)) { regulator.AccumulatedFrametime += frameTime; if (regulator.AccumulatedFrametime < 1) continue; regulator.AccumulatedFrametime -= 1; - ProcessThermalRegulation(regulator.Owner, regulator); + ProcessThermalRegulation(uid, regulator); } } diff --git a/Content.Server/Botany/Systems/LogSystem.cs b/Content.Server/Botany/Systems/LogSystem.cs index b6cb0dedaf4c94..a0639e3708cc1b 100644 --- a/Content.Server/Botany/Systems/LogSystem.cs +++ b/Content.Server/Botany/Systems/LogSystem.cs @@ -3,7 +3,6 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Random; -using Content.Shared.Random.Helpers; using Robust.Shared.Containers; namespace Content.Server.Botany.Systems; @@ -39,7 +38,7 @@ private void OnInteractUsing(EntityUid uid, LogComponent component, InteractUsin else { var xform = Transform(plank); - _containerSystem.AttachParentToContainerOrGrid(xform); + _containerSystem.AttachParentToContainerOrGrid((plank, xform)); xform.LocalRotation = 0; _randomHelper.RandomOffset(plank, 0.25f); } diff --git a/Content.Server/Botany/Systems/PlantHolderSystem.cs b/Content.Server/Botany/Systems/PlantHolderSystem.cs index c3d57c4ad8537d..9991edd230e6da 100644 --- a/Content.Server/Botany/Systems/PlantHolderSystem.cs +++ b/Content.Server/Botany/Systems/PlantHolderSystem.cs @@ -58,13 +58,14 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var plantHolder in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var plantHolder)) { if (plantHolder.NextUpdate > _gameTiming.CurTime) continue; plantHolder.NextUpdate = _gameTiming.CurTime + plantHolder.UpdateDelay; - Update(plantHolder.Owner, plantHolder); + Update(uid, plantHolder); } } diff --git a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs index 9ea054b6283243..d9327b51505c15 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs @@ -1,14 +1,12 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Cargo.Components; using Content.Server.Labels.Components; +using Content.Server.Paper; using Content.Shared.Cargo; using Content.Shared.Cargo.BUI; using Content.Shared.Cargo.Events; using Content.Shared.Cargo.Prototypes; using Content.Shared.Database; -using Content.Shared.GameTicking; -using Content.Server.Paper; -using Robust.Server.GameObjects; using Robust.Shared.Map; using Robust.Shared.Players; using Robust.Shared.Prototypes; @@ -146,7 +144,8 @@ private void OnApproveOrderMessage(EntityUid uid, CargoOrderConsoleComponent com } _idCardSystem.TryFindIdCard(player, out var idCard); - order.SetApproverData(idCard?.FullName, idCard?.JobTitle); + // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract + order.SetApproverData(idCard.Comp?.FullName, idCard.Comp?.JobTitle); _audio.PlayPvs(_audio.GetSound(component.ConfirmSound), uid); // Log order approval diff --git a/Content.Server/Cargo/Systems/PricingSystem.cs b/Content.Server/Cargo/Systems/PricingSystem.cs index 289f383d29cfef..509e99a28aacdb 100644 --- a/Content.Server/Cargo/Systems/PricingSystem.cs +++ b/Content.Server/Cargo/Systems/PricingSystem.cs @@ -13,6 +13,7 @@ using Robust.Shared.Console; using Robust.Shared.Containers; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -57,7 +58,7 @@ private void AppraiseGridCommand(IConsoleShell shell, string argstr, string[] ar continue; } - if (!_mapManager.TryGetGrid(gridId, out var mapGrid)) + if (!TryComp(gridId, out MapGridComponent? mapGrid)) { shell.WriteError($"Grid \"{gridId}\" doesn't exist."); continue; @@ -65,7 +66,7 @@ private void AppraiseGridCommand(IConsoleShell shell, string argstr, string[] ar List<(double, EntityUid)> mostValuable = new(); - var value = AppraiseGrid(mapGrid.Owner, null, (uid, price) => + var value = AppraiseGrid(gridId.Value, null, (uid, price) => { mostValuable.Add((price, uid)); mostValuable.Sort((i1, i2) => i2.Item1.CompareTo(i1.Item1)); diff --git a/Content.Server/Chat/Systems/AutoEmoteSystem.cs b/Content.Server/Chat/Systems/AutoEmoteSystem.cs index d8d7f952d5035d..3d6bd5354011c5 100644 --- a/Content.Server/Chat/Systems/AutoEmoteSystem.cs +++ b/Content.Server/Chat/Systems/AutoEmoteSystem.cs @@ -1,5 +1,3 @@ -namespace Content.Server.Chat.Systems; - using System.Linq; using Content.Shared.Chat.Prototypes; using Robust.Shared.Prototypes; @@ -7,6 +5,8 @@ namespace Content.Server.Chat.Systems; using Robust.Shared.Timing; using Robust.Shared.Utility; +namespace Content.Server.Chat.Systems; + public sealed class AutoEmoteSystem : EntitySystem { [Dependency] private readonly IGameTiming _gameTiming = default!; @@ -27,14 +27,13 @@ public override void Update(float frameTime) base.Update(frameTime); var curTime = _gameTiming.CurTime; - foreach (var autoEmote in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var autoEmote)) { - var uid = autoEmote.Owner; - if (autoEmote.NextEmoteTime > curTime) continue; - foreach ((var key, var time) in autoEmote.EmoteTimers) + foreach (var (key, time) in autoEmote.EmoteTimers) { if (time > curTime) continue; diff --git a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs index c22e36c993c179..a831165e688eec 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs @@ -45,11 +45,11 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); + SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); SubscribeLocalEvent(OnSetModeMessage); SubscribeLocalEvent(OnSetPillTypeMessage); @@ -58,12 +58,18 @@ public override void Initialize() SubscribeLocalEvent(OnOutputToBottleMessage); } - private void UpdateUiState(ChemMasterComponent chemMaster, bool updateLabel = false) + private void SubscribeUpdateUiState(Entity ent, ref T ev) { - if (!_solutionContainerSystem.TryGetSolution(chemMaster.Owner, SharedChemMaster.BufferSolutionName, out var bufferSolution)) + UpdateUiState(ent); + } + + private void UpdateUiState(Entity ent, bool updateLabel = false) + { + var (owner, chemMaster) = ent; + if (!_solutionContainerSystem.TryGetSolution(owner, SharedChemMaster.BufferSolutionName, out var bufferSolution)) return; - var inputContainer = _itemSlotsSystem.GetItemOrNull(chemMaster.Owner, SharedChemMaster.InputSlotName); - var outputContainer = _itemSlotsSystem.GetItemOrNull(chemMaster.Owner, SharedChemMaster.OutputSlotName); + var inputContainer = _itemSlotsSystem.GetItemOrNull(owner, SharedChemMaster.InputSlotName); + var outputContainer = _itemSlotsSystem.GetItemOrNull(owner, SharedChemMaster.OutputSlotName); var bufferReagents = bufferSolution.Contents; var bufferCurrentVolume = bufferSolution.Volume; @@ -72,38 +78,38 @@ private void UpdateUiState(ChemMasterComponent chemMaster, bool updateLabel = fa chemMaster.Mode, BuildInputContainerInfo(inputContainer), BuildOutputContainerInfo(outputContainer), bufferReagents, bufferCurrentVolume, chemMaster.PillType, chemMaster.PillDosageLimit, updateLabel); - _userInterfaceSystem.TrySetUiState(chemMaster.Owner, ChemMasterUiKey.Key, state); + _userInterfaceSystem.TrySetUiState(owner, ChemMasterUiKey.Key, state); } - private void OnSetModeMessage(EntityUid uid, ChemMasterComponent chemMaster, ChemMasterSetModeMessage message) + private void OnSetModeMessage(Entity chemMaster, ref ChemMasterSetModeMessage message) { // Ensure the mode is valid, either Transfer or Discard. if (!Enum.IsDefined(typeof(ChemMasterMode), message.ChemMasterMode)) return; - chemMaster.Mode = message.ChemMasterMode; + chemMaster.Comp.Mode = message.ChemMasterMode; UpdateUiState(chemMaster); ClickSound(chemMaster); } - private void OnSetPillTypeMessage(EntityUid uid, ChemMasterComponent chemMaster, ChemMasterSetPillTypeMessage message) + private void OnSetPillTypeMessage(Entity chemMaster, ref ChemMasterSetPillTypeMessage message) { // Ensure valid pill type. There are 20 pills selectable, 0-19. if (message.PillType > SharedChemMaster.PillTypes - 1) return; - chemMaster.PillType = message.PillType; + chemMaster.Comp.PillType = message.PillType; UpdateUiState(chemMaster); ClickSound(chemMaster); } - private void OnReagentButtonMessage(EntityUid uid, ChemMasterComponent chemMaster, ChemMasterReagentAmountButtonMessage message) + private void OnReagentButtonMessage(Entity chemMaster, ref ChemMasterReagentAmountButtonMessage message) { // Ensure the amount corresponds to one of the reagent amount buttons. if (!Enum.IsDefined(typeof(ChemMasterReagentAmount), message.Amount)) return; - switch (chemMaster.Mode) + switch (chemMaster.Comp.Mode) { case ChemMasterMode.Transfer: TransferReagents(chemMaster, message.ReagentId, message.Amount.GetFixedPoint(), message.FromBuffer); @@ -119,12 +125,12 @@ private void OnReagentButtonMessage(EntityUid uid, ChemMasterComponent chemMaste ClickSound(chemMaster); } - private void TransferReagents(ChemMasterComponent chemMaster, ReagentId id, FixedPoint2 amount, bool fromBuffer) + private void TransferReagents(Entity chemMaster, ReagentId id, FixedPoint2 amount, bool fromBuffer) { - var container = _itemSlotsSystem.GetItemOrNull(chemMaster.Owner, SharedChemMaster.InputSlotName); + var container = _itemSlotsSystem.GetItemOrNull(chemMaster, SharedChemMaster.InputSlotName); if (container is null || !_solutionContainerSystem.TryGetFitsInDispenser(container.Value, out var containerSolution) || - !_solutionContainerSystem.TryGetSolution(chemMaster.Owner, SharedChemMaster.BufferSolutionName, out var bufferSolution)) + !_solutionContainerSystem.TryGetSolution(chemMaster, SharedChemMaster.BufferSolutionName, out var bufferSolution)) { return; } @@ -145,19 +151,18 @@ private void TransferReagents(ChemMasterComponent chemMaster, ReagentId id, Fixe UpdateUiState(chemMaster, updateLabel: true); } - private void DiscardReagents(ChemMasterComponent chemMaster, ReagentId id, FixedPoint2 amount, bool fromBuffer) + private void DiscardReagents(Entity chemMaster, ReagentId id, FixedPoint2 amount, bool fromBuffer) { - if (fromBuffer) { - if (_solutionContainerSystem.TryGetSolution(chemMaster.Owner, SharedChemMaster.BufferSolutionName, out var bufferSolution)) + if (_solutionContainerSystem.TryGetSolution(chemMaster, SharedChemMaster.BufferSolutionName, out var bufferSolution)) bufferSolution.RemoveReagent(id, amount); else return; } else { - var container = _itemSlotsSystem.GetItemOrNull(chemMaster.Owner, SharedChemMaster.InputSlotName); + var container = _itemSlotsSystem.GetItemOrNull(chemMaster, SharedChemMaster.InputSlotName); if (container is not null && _solutionContainerSystem.TryGetFitsInDispenser(container.Value, out var containerSolution)) { @@ -170,10 +175,10 @@ private void DiscardReagents(ChemMasterComponent chemMaster, ReagentId id, Fixed UpdateUiState(chemMaster, updateLabel: fromBuffer); } - private void OnCreatePillsMessage(EntityUid uid, ChemMasterComponent chemMaster, ChemMasterCreatePillsMessage message) + private void OnCreatePillsMessage(Entity chemMaster, ref ChemMasterCreatePillsMessage message) { var user = message.Session.AttachedEntity; - var maybeContainer = _itemSlotsSystem.GetItemOrNull(chemMaster.Owner, SharedChemMaster.OutputSlotName); + var maybeContainer = _itemSlotsSystem.GetItemOrNull(chemMaster, SharedChemMaster.OutputSlotName); if (maybeContainer is not { Valid: true } container || !TryComp(container, out StorageComponent? storage) || storage.Container is null) @@ -186,7 +191,7 @@ private void OnCreatePillsMessage(EntityUid uid, ChemMasterComponent chemMaster, return; // Ensure the amount is valid. - if (message.Dosage == 0 || message.Dosage > chemMaster.PillDosageLimit) + if (message.Dosage == 0 || message.Dosage > chemMaster.Comp.PillDosageLimit) return; // Ensure label length is within the character limit. @@ -211,8 +216,8 @@ private void OnCreatePillsMessage(EntityUid uid, ChemMasterComponent chemMaster, item, itemSolution, withdrawal.SplitSolution(message.Dosage)); var pill = EnsureComp(item); - pill.PillType = chemMaster.PillType; - Dirty(pill); + pill.PillType = chemMaster.Comp.PillType; + Dirty(item, pill); if (user.HasValue) { @@ -232,11 +237,10 @@ private void OnCreatePillsMessage(EntityUid uid, ChemMasterComponent chemMaster, ClickSound(chemMaster); } - private void OnOutputToBottleMessage( - EntityUid uid, ChemMasterComponent chemMaster, ChemMasterOutputToBottleMessage message) + private void OnOutputToBottleMessage(Entity chemMaster, ref ChemMasterOutputToBottleMessage message) { var user = message.Session.AttachedEntity; - var maybeContainer = _itemSlotsSystem.GetItemOrNull(chemMaster.Owner, SharedChemMaster.OutputSlotName); + var maybeContainer = _itemSlotsSystem.GetItemOrNull(chemMaster, SharedChemMaster.OutputSlotName); if (maybeContainer is not { Valid: true } container || !_solutionContainerSystem.TryGetSolution( container, SharedChemMaster.BottleSolutionName, out var solution)) @@ -277,14 +281,14 @@ private void OnOutputToBottleMessage( } private bool WithdrawFromBuffer( - IComponent chemMaster, + Entity chemMaster, FixedPoint2 neededVolume, EntityUid? user, [NotNullWhen(returnValue: true)] out Solution? outputSolution) { outputSolution = null; if (!_solutionContainerSystem.TryGetSolution( - chemMaster.Owner, SharedChemMaster.BufferSolutionName, out var solution)) + chemMaster, SharedChemMaster.BufferSolutionName, out var solution)) { return false; } @@ -308,9 +312,9 @@ private bool WithdrawFromBuffer( return true; } - private void ClickSound(ChemMasterComponent chemMaster) + private void ClickSound(Entity chemMaster) { - _audioSystem.PlayPvs(chemMaster.ClickSound, chemMaster.Owner, AudioParams.Default.WithVolume(-2f)); + _audioSystem.PlayPvs(chemMaster.Comp.ClickSound, chemMaster, AudioParams.Default.WithVolume(-2f)); } private ContainerInfo? BuildInputContainerInfo(EntityUid? container) diff --git a/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs b/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs index ee3b038acc93aa..daa2ac80b7de14 100644 --- a/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs @@ -34,11 +34,11 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); - SubscribeLocalEvent((_, comp, _) => UpdateUiState(comp)); + SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); SubscribeLocalEvent(OnEmagged); SubscribeLocalEvent(OnSetDispenseAmountMessage); @@ -46,15 +46,20 @@ public override void Initialize() SubscribeLocalEvent(OnClearContainerSolutionMessage); } - private void UpdateUiState(ReagentDispenserComponent reagentDispenser) + private void SubscribeUpdateUiState(Entity ent, ref T ev) { - var outputContainer = _itemSlotsSystem.GetItemOrNull(reagentDispenser.Owner, SharedReagentDispenser.OutputSlotName); + UpdateUiState(ent); + } + + private void UpdateUiState(Entity reagentDispenser) + { + var outputContainer = _itemSlotsSystem.GetItemOrNull(reagentDispenser, SharedReagentDispenser.OutputSlotName); var outputContainerInfo = BuildOutputContainerInfo(outputContainer); var inventory = GetInventory(reagentDispenser); - var state = new ReagentDispenserBoundUserInterfaceState(outputContainerInfo, inventory, reagentDispenser.DispenseAmount); - _userInterfaceSystem.TrySetUiState(reagentDispenser.Owner, ReagentDispenserUiKey.Key, state); + var state = new ReagentDispenserBoundUserInterfaceState(outputContainerInfo, inventory, reagentDispenser.Comp.DispenseAmount); + _userInterfaceSystem.TrySetUiState(reagentDispenser, ReagentDispenserUiKey.Key, state); } private ContainerInfo? BuildOutputContainerInfo(EntityUid? container) @@ -73,8 +78,9 @@ private void UpdateUiState(ReagentDispenserComponent reagentDispenser) return null; } - private List GetInventory(ReagentDispenserComponent reagentDispenser) + private List GetInventory(Entity ent) { + var reagentDispenser = ent.Comp; var inventory = new List(); if (reagentDispenser.PackPrototypeId is not null @@ -83,7 +89,7 @@ private List GetInventory(ReagentDispenserComponent reagentDispenser) inventory.AddRange(packPrototype.Inventory.Select(x => new ReagentId(x, null))); } - if (HasComp(reagentDispenser.Owner) + if (HasComp(ent) && reagentDispenser.EmagPackPrototypeId is not null && _prototypeManager.TryIndex(reagentDispenser.EmagPackPrototypeId, out ReagentDispenserInventoryPrototype? emagPackPrototype)) { @@ -93,32 +99,32 @@ private List GetInventory(ReagentDispenserComponent reagentDispenser) return inventory; } - private void OnEmagged(EntityUid uid, ReagentDispenserComponent reagentDispenser, ref GotEmaggedEvent args) + private void OnEmagged(Entity reagentDispenser, ref GotEmaggedEvent args) { // adding component manually to have correct state - EntityManager.AddComponent(uid); + EntityManager.AddComponent(reagentDispenser); UpdateUiState(reagentDispenser); args.Handled = true; } - private void OnSetDispenseAmountMessage(EntityUid uid, ReagentDispenserComponent reagentDispenser, ReagentDispenserSetDispenseAmountMessage message) + private void OnSetDispenseAmountMessage(Entity reagentDispenser, ref ReagentDispenserSetDispenseAmountMessage message) { - reagentDispenser.DispenseAmount = message.ReagentDispenserDispenseAmount; + reagentDispenser.Comp.DispenseAmount = message.ReagentDispenserDispenseAmount; UpdateUiState(reagentDispenser); ClickSound(reagentDispenser); } - private void OnDispenseReagentMessage(EntityUid uid, ReagentDispenserComponent reagentDispenser, ReagentDispenserDispenseReagentMessage message) + private void OnDispenseReagentMessage(Entity reagentDispenser, ref ReagentDispenserDispenseReagentMessage message) { // Ensure that the reagent is something this reagent dispenser can dispense. if (!GetInventory(reagentDispenser).Contains(message.ReagentId)) return; - var outputContainer = _itemSlotsSystem.GetItemOrNull(reagentDispenser.Owner, SharedReagentDispenser.OutputSlotName); + var outputContainer = _itemSlotsSystem.GetItemOrNull(reagentDispenser, SharedReagentDispenser.OutputSlotName); if (outputContainer is not {Valid: true} || !_solutionContainerSystem.TryGetFitsInDispenser(outputContainer.Value, out var solution)) return; - if (_solutionContainerSystem.TryAddReagent(outputContainer.Value, solution, message.ReagentId, (int)reagentDispenser.DispenseAmount, out var dispensedAmount) + if (_solutionContainerSystem.TryAddReagent(outputContainer.Value, solution, message.ReagentId, (int)reagentDispenser.Comp.DispenseAmount, out var dispensedAmount) && message.Session.AttachedEntity is not null) { _adminLogger.Add(LogType.ChemicalReaction, LogImpact.Medium, @@ -129,9 +135,9 @@ private void OnDispenseReagentMessage(EntityUid uid, ReagentDispenserComponent r ClickSound(reagentDispenser); } - private void OnClearContainerSolutionMessage(EntityUid uid, ReagentDispenserComponent reagentDispenser, ReagentDispenserClearContainerSolutionMessage message) + private void OnClearContainerSolutionMessage(Entity reagentDispenser, ref ReagentDispenserClearContainerSolutionMessage message) { - var outputContainer = _itemSlotsSystem.GetItemOrNull(reagentDispenser.Owner, SharedReagentDispenser.OutputSlotName); + var outputContainer = _itemSlotsSystem.GetItemOrNull(reagentDispenser, SharedReagentDispenser.OutputSlotName); if (outputContainer is not {Valid: true} || !_solutionContainerSystem.TryGetFitsInDispenser(outputContainer.Value, out var solution)) return; @@ -140,9 +146,9 @@ private void OnClearContainerSolutionMessage(EntityUid uid, ReagentDispenserComp ClickSound(reagentDispenser); } - private void ClickSound(ReagentDispenserComponent reagentDispenser) + private void ClickSound(Entity reagentDispenser) { - _audioSystem.PlayPvs(reagentDispenser.ClickSound, reagentDispenser.Owner, AudioParams.Default.WithVolume(-2f)); + _audioSystem.PlayPvs(reagentDispenser.Comp.ClickSound, reagentDispenser, AudioParams.Default.WithVolume(-2f)); } } } diff --git a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs index 20d9246739d794..dcfc57a9b25263 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs @@ -1,15 +1,12 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Server.Chemistry.Components; -using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Inventory; using JetBrains.Annotations; -using Robust.Shared.Physics.Dynamics; using Robust.Shared.Physics.Events; using Robust.Shared.Prototypes; - namespace Content.Server.Chemistry.EntitySystems { [UsedImplicitly] @@ -26,13 +23,17 @@ public override void Initialize() SubscribeLocalEvent(HandleInjection); } - private void HandleInjection(EntityUid uid, SolutionInjectOnCollideComponent component, ref StartCollideEvent args) + private void HandleInjection(Entity ent, ref StartCollideEvent args) { + var component = ent.Comp; var target = args.OtherEntity; if (!args.OtherBody.Hard || !EntityManager.TryGetComponent(target, out var bloodstream) || - !_solutionsSystem.TryGetInjectableSolution(component.Owner, out var solution)) return; + !_solutionsSystem.TryGetInjectableSolution(ent, out var solution)) + { + return; + } if (component.BlockSlots != 0x0 && TryComp(target, out var inventory)) { diff --git a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs index f9256c8ce7a656..02788d5a47d38f 100644 --- a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs @@ -7,7 +7,6 @@ using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Content.Shared.Physics; -using Robust.Shared.Spawners; using Content.Shared.Throwing; using JetBrains.Annotations; using Robust.Shared.Map; @@ -16,7 +15,7 @@ using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; using Robust.Shared.Prototypes; -using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; +using Robust.Shared.Spawners; namespace Content.Server.Chemistry.EntitySystems { @@ -57,19 +56,19 @@ private void HandleCollide(EntityUid uid, VaporComponent component, ref StartCol } } - public void Start(VaporComponent vapor, TransformComponent vaporXform, Vector2 dir, float speed, MapCoordinates target, float aliveTime, EntityUid? user = null) + public void Start(Entity vapor, TransformComponent vaporXform, Vector2 dir, float speed, MapCoordinates target, float aliveTime, EntityUid? user = null) { - vapor.Active = true; - var despawn = EnsureComp(vapor.Owner); + vapor.Comp.Active = true; + var despawn = EnsureComp(vapor); despawn.Lifetime = aliveTime; // Set Move - if (EntityManager.TryGetComponent(vapor.Owner, out PhysicsComponent? physics)) + if (EntityManager.TryGetComponent(vapor, out PhysicsComponent? physics)) { _physics.SetLinearDamping(physics, 0f); _physics.SetAngularDamping(physics, 0f); - _throwing.TryThrow(vapor.Owner, dir, speed, user: user); + _throwing.TryThrow(vapor, dir, speed, user: user); var distance = (target.Position - vaporXform.WorldPosition).Length(); var time = (distance / physics.LinearVelocity.Length()); @@ -77,41 +76,40 @@ public void Start(VaporComponent vapor, TransformComponent vaporXform, Vector2 d } } - internal bool TryAddSolution(VaporComponent vapor, Solution solution) + internal bool TryAddSolution(Entity vapor, Solution solution) { if (solution.Volume == 0) { return false; } - if (!_solutionContainerSystem.TryGetSolution(vapor.Owner, VaporComponent.SolutionName, + if (!_solutionContainerSystem.TryGetSolution(vapor, VaporComponent.SolutionName, out var vaporSolution)) { return false; } - return _solutionContainerSystem.TryAddSolution(vapor.Owner, vaporSolution, solution); + return _solutionContainerSystem.TryAddSolution(vapor, vaporSolution, solution); } public override void Update(float frameTime) { - foreach (var (vaporComp, solution, xform) in EntityManager - .EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var vaporComp, out var solution, out var xform)) { foreach (var (_, value) in solution.Solutions) { - Update(frameTime, vaporComp, value, xform); + Update(frameTime, (uid, vaporComp), value, xform); } } } - private void Update(float frameTime, VaporComponent vapor, Solution contents, TransformComponent xform) + private void Update(float frameTime, Entity ent, Solution contents, TransformComponent xform) { + var (entity, vapor) = ent; if (!vapor.Active) return; - var entity = vapor.Owner; - vapor.ReactTimer += frameTime; if (vapor.ReactTimer >= ReactTime && TryComp(xform.GridUid, out MapGridComponent? gridComp)) @@ -133,7 +131,7 @@ private void Update(float frameTime, VaporComponent vapor, Solution contents, Tr reaction = reagentQuantity.Quantity; } - _solutionContainerSystem.RemoveReagent(vapor.Owner, contents, reagentQuantity.Reagent, reaction); + _solutionContainerSystem.RemoveReagent(entity, contents, reagentQuantity.Reagent, reaction); } } diff --git a/Content.Server/Chemistry/ReagentEffects/Oxygenate.cs b/Content.Server/Chemistry/ReagentEffects/Oxygenate.cs index 00ac03181d74d8..28356bbd307748 100644 --- a/Content.Server/Chemistry/ReagentEffects/Oxygenate.cs +++ b/Content.Server/Chemistry/ReagentEffects/Oxygenate.cs @@ -19,7 +19,7 @@ public override void Effect(ReagentEffectArgs args) if (args.EntityManager.TryGetComponent(args.SolutionEntity, out var resp)) { var respSys = EntitySystem.Get(); - respSys.UpdateSaturation(resp.Owner, args.Quantity.Float() * Factor, resp); + respSys.UpdateSaturation(args.SolutionEntity, args.Quantity.Float() * Factor, resp); } } } diff --git a/Content.Server/Chunking/ChunkingSystem.cs b/Content.Server/Chunking/ChunkingSystem.cs index f204b5cf7290d4..4ef44d1678d4bc 100644 --- a/Content.Server/Chunking/ChunkingSystem.cs +++ b/Content.Server/Chunking/ChunkingSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Shared.Decals; using Microsoft.Extensions.ObjectPool; using Robust.Server.Player; @@ -5,8 +6,8 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Utility; -using System.Linq; namespace Content.Shared.Chunking; @@ -87,10 +88,12 @@ private Dictionary> GetChunksForViewers( var pos = _transform.GetWorldPosition(xform); var bounds = _baseViewBounds.Translated(pos).Enlarged(viewEnlargement); + var grids = new List>(); + _mapManager.FindGridsIntersecting(xform.MapID, bounds, ref grids, true); - foreach (var grid in _mapManager.FindGridsIntersecting(xform.MapID, bounds, true)) + foreach (var grid in grids) { - var netGrid = GetNetEntity(grid.Owner); + var netGrid = GetNetEntity(grid); if (!chunks.TryGetValue(netGrid, out var set)) { @@ -98,7 +101,7 @@ private Dictionary> GetChunksForViewers( DebugTools.Assert(set.Count == 0); } - var enumerator = new ChunkIndicesEnumerator(_transform.GetInvWorldMatrix(grid.Owner).TransformBox(bounds), chunkSize); + var enumerator = new ChunkIndicesEnumerator(_transform.GetInvWorldMatrix(grid).TransformBox(bounds), chunkSize); while (enumerator.MoveNext(out var indices)) { diff --git a/Content.Server/Cloning/CloningConsoleSystem.cs b/Content.Server/Cloning/CloningConsoleSystem.cs index 29f42bf6c216cd..0be9b641345145 100644 --- a/Content.Server/Cloning/CloningConsoleSystem.cs +++ b/Content.Server/Cloning/CloningConsoleSystem.cs @@ -170,7 +170,7 @@ public void TryClone(EntityUid uid, EntityUid cloningPodUid, EntityUid scannerUi if (mind.UserId.HasValue == false || mind.Session == null) return; - if (_cloningSystem.TryCloning(cloningPodUid, body.Value, mind, cloningPod, scannerComp.CloningFailChanceMultiplier)) + if (_cloningSystem.TryCloning(cloningPodUid, body.Value, (mindId, mind), cloningPod, scannerComp.CloningFailChanceMultiplier)) _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(uid)} successfully cloned {ToPrettyString(body.Value)}."); } diff --git a/Content.Server/Cloning/CloningSystem.cs b/Content.Server/Cloning/CloningSystem.cs index e94f0d11839d83..c81651c512b639 100644 --- a/Content.Server/Cloning/CloningSystem.cs +++ b/Content.Server/Cloning/CloningSystem.cs @@ -22,7 +22,6 @@ using Content.Shared.Examine; using Content.Shared.GameTicking; using Content.Shared.Humanoid; -using Content.Shared.Humanoid.Prototypes; using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Mobs.Systems; @@ -154,7 +153,7 @@ private void OnExamined(EntityUid uid, CloningPodComponent component, ExaminedEv args.PushMarkup(Loc.GetString("cloning-pod-biomass", ("number", _material.GetMaterialAmount(uid, component.RequiredMaterial)))); } - public bool TryCloning(EntityUid uid, EntityUid bodyToClone, MindComponent mind, CloningPodComponent? clonePod, float failChanceModifier = 1) + public bool TryCloning(EntityUid uid, EntityUid bodyToClone, Entity mindEnt, CloningPodComponent? clonePod, float failChanceModifier = 1) { if (!Resolve(uid, ref clonePod)) return false; @@ -162,12 +161,13 @@ public bool TryCloning(EntityUid uid, EntityUid bodyToClone, MindComponent mind, if (HasComp(uid)) return false; + var mind = mindEnt.Comp; if (ClonesWaitingForMind.TryGetValue(mind, out var clone)) { if (EntityManager.EntityExists(clone) && !_mobStateSystem.IsDead(clone) && TryComp(clone, out var cloneMindComp) && - (cloneMindComp.Mind == null || cloneMindComp.Mind == mind.Owner)) + (cloneMindComp.Mind == null || cloneMindComp.Mind == mindEnt)) return false; // Mind already has clone ClonesWaitingForMind.Remove(mind); @@ -183,7 +183,7 @@ public bool TryCloning(EntityUid uid, EntityUid bodyToClone, MindComponent mind, if (!TryComp(bodyToClone, out var humanoid)) return false; // whatever body was to be cloned, was not a humanoid - if (!_prototype.TryIndex(humanoid.Species, out var speciesPrototype)) + if (!_prototype.TryIndex(humanoid.Species, out var speciesPrototype)) return false; if (!TryComp(bodyToClone, out var physics)) @@ -198,9 +198,12 @@ public bool TryCloning(EntityUid uid, EntityUid bodyToClone, MindComponent mind, if (TryComp(bodyToClone, out _)) { if (clonePod.ConnectedConsole != null) + { _chatSystem.TrySendInGameICMessage(clonePod.ConnectedConsole.Value, Loc.GetString("cloning-console-uncloneable-trait-error"), InGameICChatType.Speak, false); + } + return false; } @@ -253,14 +256,13 @@ public bool TryCloning(EntityUid uid, EntityUid bodyToClone, MindComponent mind, clonePod.BodyContainer.Insert(mob); ClonesWaitingForMind.Add(mind, mob); UpdateStatus(uid, CloningPodStatus.NoMind, clonePod); - var mindId = mind.Owner; - _euiManager.OpenEui(new AcceptCloningEui(mindId, mind, this), client); + _euiManager.OpenEui(new AcceptCloningEui(mindEnt, mind, this), client); AddComp(uid); // TODO: Ideally, components like this should be components on the mind entity so this isn't necessary. // Add on special job components to the mob. - if (_jobs.MindTryGetJob(mindId, out _, out var prototype)) + if (_jobs.MindTryGetJob(mindEnt, out _, out var prototype)) { foreach (var special in prototype.Special) { diff --git a/Content.Server/Clothing/MaskSystem.cs b/Content.Server/Clothing/MaskSystem.cs index fbf6ac607730c9..776979106f388f 100644 --- a/Content.Server/Clothing/MaskSystem.cs +++ b/Content.Server/Clothing/MaskSystem.cs @@ -43,12 +43,13 @@ private void OnGetActions(EntityUid uid, MaskComponent component, GetItemActions args.AddAction(ref component.ToggleActionEntity, component.ToggleAction); } - private void OnToggleMask(EntityUid uid, MaskComponent mask, ToggleMaskEvent args) + private void OnToggleMask(Entity ent, ref ToggleMaskEvent args) { + var (uid, mask) = ent; if (mask.ToggleActionEntity == null) return; - if (!_inventorySystem.TryGetSlotEntity(args.Performer, "mask", out var existing) || !mask.Owner.Equals(existing)) + if (!_inventorySystem.TryGetSlotEntity(args.Performer, "mask", out var existing) || !uid.Equals(existing)) return; mask.IsToggled ^= true; @@ -58,9 +59,9 @@ private void OnToggleMask(EntityUid uid, MaskComponent mask, ToggleMaskEvent arg _identity.QueueIdentityUpdate(args.Performer); if (mask.IsToggled) - _popupSystem.PopupEntity(Loc.GetString("action-mask-pull-down-popup-message", ("mask", mask.Owner)), args.Performer, args.Performer); + _popupSystem.PopupEntity(Loc.GetString("action-mask-pull-down-popup-message", ("mask", uid)), args.Performer, args.Performer); else - _popupSystem.PopupEntity(Loc.GetString("action-mask-pull-up-popup-message", ("mask", mask.Owner)), args.Performer, args.Performer); + _popupSystem.PopupEntity(Loc.GetString("action-mask-pull-up-popup-message", ("mask", uid)), args.Performer, args.Performer); ToggleMaskComponents(uid, mask, args.Performer); } @@ -115,7 +116,7 @@ private void ToggleMaskComponents(EntityUid uid, MaskComponent mask, EntityUid w if (TryComp(wearer, out InternalsComponent? internals)) { breathTool.ConnectedInternalsEntity = wearer; - _internals.ConnectBreathTool(internals, uid); + _internals.ConnectBreathTool((wearer, internals), uid); } } } diff --git a/Content.Server/Communications/CommunicationsConsoleSystem.cs b/Content.Server/Communications/CommunicationsConsoleSystem.cs index b5c93854929105..b2945c2a11950d 100644 --- a/Content.Server/Communications/CommunicationsConsoleSystem.cs +++ b/Content.Server/Communications/CommunicationsConsoleSystem.cs @@ -255,7 +255,7 @@ private void OnAnnounceMessage(EntityUid uid, CommunicationsConsoleComponent com if (_idCardSystem.TryFindIdCard(mob, out var id)) { - author = $"{id.FullName} ({CultureInfo.CurrentCulture.TextInfo.ToTitleCase(id.JobTitle ?? string.Empty)})".Trim(); + author = $"{id.Comp.FullName} ({CultureInfo.CurrentCulture.TextInfo.ToTitleCase(id.Comp.JobTitle ?? string.Empty)})".Trim(); } } diff --git a/Content.Server/Construction/Commands/FixRotationsCommand.cs b/Content.Server/Construction/Commands/FixRotationsCommand.cs index 02429fcaa621de..d23fa0a31b1910 100644 --- a/Content.Server/Construction/Commands/FixRotationsCommand.cs +++ b/Content.Server/Construction/Commands/FixRotationsCommand.cs @@ -5,7 +5,7 @@ using Content.Shared.Tag; using Robust.Server.Player; using Robust.Shared.Console; -using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Server.Construction.Commands { @@ -13,7 +13,6 @@ namespace Content.Server.Construction.Commands public sealed class FixRotationsCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly IMapManager _mapManager = default!; // ReSharper disable once StringLiteralTypo public string Command => "fixrotations"; @@ -51,13 +50,13 @@ public void Execute(IConsoleShell shell, string argsOther, string[] args) return; } - if (!_mapManager.TryGetGrid(gridId, out var grid)) + if (!_entManager.TryGetComponent(gridId, out MapGridComponent? grid)) { shell.WriteError($"No grid exists with id {gridId}"); return; } - if (!_entManager.EntityExists(grid.Owner)) + if (!_entManager.EntityExists(gridId)) { shell.WriteError($"Grid {gridId} doesn't have an associated grid entity."); return; @@ -66,7 +65,7 @@ public void Execute(IConsoleShell shell, string argsOther, string[] args) var changed = 0; var tagSystem = _entManager.EntitySysManager.GetEntitySystem(); - foreach (var child in xformQuery.GetComponent(grid.Owner).ChildEntities) + foreach (var child in xformQuery.GetComponent(gridId.Value).ChildEntities) { if (!_entManager.EntityExists(child)) { diff --git a/Content.Server/Construction/Commands/TileReplaceCommand.cs b/Content.Server/Construction/Commands/TileReplaceCommand.cs index 7de6c510d499bf..ed1fba2424ae22 100644 --- a/Content.Server/Construction/Commands/TileReplaceCommand.cs +++ b/Content.Server/Construction/Commands/TileReplaceCommand.cs @@ -3,6 +3,7 @@ using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Server.Construction.Commands; @@ -10,7 +11,6 @@ namespace Content.Server.Construction.Commands; sealed class TileReplaceCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly ITileDefinitionManager _tileDef = default!; // ReSharper disable once StringLiteralTypo @@ -58,13 +58,13 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var tileA = _tileDef[tileIdA]; var tileB = _tileDef[tileIdB]; - if (!_mapManager.TryGetGrid(gridId, out var grid)) + if (!_entManager.TryGetComponent(gridId, out MapGridComponent? grid)) { shell.WriteLine($"No grid exists with id {gridId}"); return; } - if (!_entManager.EntityExists(grid.Owner)) + if (!_entManager.EntityExists(gridId)) { shell.WriteLine($"Grid {gridId} doesn't have an associated grid entity."); return; diff --git a/Content.Server/Construction/Commands/TileWallsCommand.cs b/Content.Server/Construction/Commands/TileWallsCommand.cs index e9193503648769..55389e41cc7490 100644 --- a/Content.Server/Construction/Commands/TileWallsCommand.cs +++ b/Content.Server/Construction/Commands/TileWallsCommand.cs @@ -2,9 +2,11 @@ using Content.Shared.Administration; using Content.Shared.Maps; using Content.Shared.Tag; +using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Server.Construction.Commands { @@ -12,7 +14,6 @@ namespace Content.Server.Construction.Commands sealed class TileWallsCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly ITileDefinitionManager _tileDefManager = default!; // ReSharper disable once StringLiteralTypo @@ -56,13 +57,13 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (!_mapManager.TryGetGrid(gridId, out var grid)) + if (!_entManager.TryGetComponent(gridId, out MapGridComponent? grid)) { shell.WriteLine($"No grid exists with id {gridId}"); return; } - if (!_entManager.EntityExists(grid.Owner)) + if (!_entManager.EntityExists(gridId)) { shell.WriteLine($"Grid {gridId} doesn't have an associated grid entity."); return; @@ -72,7 +73,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var underplating = _tileDefManager[TilePrototypeId]; var underplatingTile = new Tile(underplating.TileId); var changed = 0; - foreach (var child in _entManager.GetComponent(grid.Owner).ChildEntities) + foreach (var child in _entManager.GetComponent(gridId.Value).ChildEntities) { if (!_entManager.EntityExists(child)) { @@ -91,7 +92,8 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) continue; } - var tile = grid.GetTileRef(childTransform.Coordinates); + var mapSystem = _entManager.System(); + var tile = mapSystem.GetTileRef(gridId.Value, grid, childTransform.Coordinates); var tileDef = (ContentTileDefinition) _tileDefManager[tile.Tile.TypeId]; if (tileDef.ID == TilePrototypeId) diff --git a/Content.Server/Construction/ConstructionSystem.Computer.cs b/Content.Server/Construction/ConstructionSystem.Computer.cs index df96c0a6f8c5e5..edc1d26b6d497a 100644 --- a/Content.Server/Construction/ConstructionSystem.Computer.cs +++ b/Content.Server/Construction/ConstructionSystem.Computer.cs @@ -27,7 +27,7 @@ private void OnCompInit(EntityUid uid, ComputerComponent component, ComponentIni } } - private void OnCompMapInit(EntityUid uid, ComputerComponent component, MapInitEvent args) + private void OnCompMapInit(Entity component, ref MapInitEvent args) { CreateComputerBoard(component); } @@ -42,25 +42,26 @@ private void OnCompPowerChange(EntityUid uid, ComputerComponent component, ref P /// This exists so when you deconstruct computers that were serialized with the map, /// you can retrieve the computer board. /// - private void CreateComputerBoard(ComputerComponent component) + private void CreateComputerBoard(Entity ent) { + var component = ent.Comp; // Ensure that the construction component is aware of the board container. - if (TryComp(component.Owner, out var construction)) - AddContainer(component.Owner, "board", construction); + if (TryComp(ent, out var construction)) + AddContainer(ent, "board", construction); // We don't do anything if this is null or empty. if (string.IsNullOrEmpty(component.BoardPrototype)) return; - var container = _container.EnsureContainer(component.Owner, "board"); + var container = _container.EnsureContainer(ent, "board"); // We already contain a board. Note: We don't check if it's the right one! if (container.ContainedEntities.Count != 0) return; - var board = EntityManager.SpawnEntity(component.BoardPrototype, Transform(component.Owner).Coordinates); + var board = EntityManager.SpawnEntity(component.BoardPrototype, Transform(ent).Coordinates); - if(!container.Insert(board)) - Logger.Warning($"Couldn't insert board {board} to computer {component.Owner}!"); + if (!container.Insert(board)) + Log.Warning($"Couldn't insert board {board} to computer {ent}!"); } } diff --git a/Content.Server/Construction/ConstructionSystem.cs b/Content.Server/Construction/ConstructionSystem.cs index 237540f9feda21..76d37432cb5674 100644 --- a/Content.Server/Construction/ConstructionSystem.cs +++ b/Content.Server/Construction/ConstructionSystem.cs @@ -44,17 +44,18 @@ public override void Initialize() SubscribeLocalEvent(OnConstructionStartup); } - private void OnConstructionInit(EntityUid uid, ConstructionComponent construction, ComponentInit args) + private void OnConstructionInit(Entity ent, ref ComponentInit args) { - if (GetCurrentGraph(uid, construction) is not {} graph) + var construction = ent.Comp; + if (GetCurrentGraph(ent, construction) is not {} graph) { - _sawmill.Warning($"Prototype {EntityManager.GetComponent(construction.Owner).EntityPrototype?.ID}'s construction component has an invalid graph specified."); + _sawmill.Warning($"Prototype {EntityManager.GetComponent(ent).EntityPrototype?.ID}'s construction component has an invalid graph specified."); return; } if (GetNodeFromGraph(graph, construction.Node) is not {} node) { - _sawmill.Warning($"Prototype {EntityManager.GetComponent(construction.Owner).EntityPrototype?.ID}'s construction component has an invalid node specified."); + _sawmill.Warning($"Prototype {EntityManager.GetComponent(ent).EntityPrototype?.ID}'s construction component has an invalid node specified."); return; } @@ -63,7 +64,7 @@ private void OnConstructionInit(EntityUid uid, ConstructionComponent constructio { if (GetEdgeFromNode(node, edgeIndex) is not {} currentEdge) { - _sawmill.Warning($"Prototype {EntityManager.GetComponent(construction.Owner).EntityPrototype?.ID}'s construction component has an invalid edge index specified."); + _sawmill.Warning($"Prototype {EntityManager.GetComponent(ent).EntityPrototype?.ID}'s construction component has an invalid edge index specified."); return; } @@ -74,11 +75,11 @@ private void OnConstructionInit(EntityUid uid, ConstructionComponent constructio { if (GetNodeFromGraph(graph, targetNodeId) is not { } targetNode) { - _sawmill.Warning($"Prototype {EntityManager.GetComponent(construction.Owner).EntityPrototype?.ID}'s construction component has an invalid target node specified."); + _sawmill.Warning($"Prototype {EntityManager.GetComponent(ent).EntityPrototype?.ID}'s construction component has an invalid target node specified."); return; } - UpdatePathfinding(uid, graph, node, targetNode, edge, construction); + UpdatePathfinding(ent, graph, node, targetNode, edge, construction); } } diff --git a/Content.Server/CrewManifest/CrewManifestSystem.cs b/Content.Server/CrewManifest/CrewManifestSystem.cs index fa00648c555371..aed0575324f5ff 100644 --- a/Content.Server/CrewManifest/CrewManifestSystem.cs +++ b/Content.Server/CrewManifest/CrewManifestSystem.cs @@ -270,14 +270,13 @@ public CompletionResult GetCompletion(IConsoleShell shell, string[] args) return CompletionResult.Empty; } - var stations = _entityManager - .EntityQuery() - .Select(stationData => - { - var meta = _entityManager.GetComponent(stationData.Owner); - - return new CompletionOption(stationData.Owner.ToString(), meta.EntityName); - }); + var stations = new List(); + var query = _entityManager.EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) + { + var meta = _entityManager.GetComponent(uid); + stations.Add(new CompletionOption(uid.ToString(), meta.EntityName)); + } return CompletionResult.FromHintOptions(stations, null); } diff --git a/Content.Server/Decals/Commands/AddDecalCommand.cs b/Content.Server/Decals/Commands/AddDecalCommand.cs index b780f0686ddafd..2d9c5a1b254b0f 100644 --- a/Content.Server/Decals/Commands/AddDecalCommand.cs +++ b/Content.Server/Decals/Commands/AddDecalCommand.cs @@ -3,8 +3,10 @@ using Content.Shared.Administration; using Content.Shared.Decals; using Content.Shared.Maps; +using Robust.Server.GameObjects; using Robust.Shared.Console; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; namespace Content.Server.Decals.Commands @@ -13,7 +15,6 @@ namespace Content.Server.Decals.Commands public sealed class AddDecalCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IPrototypeManager _protoManager = default!; public string Command => "adddecal"; @@ -46,14 +47,15 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) if (!NetEntity.TryParse(args[3], out var gridIdNet) || !_entManager.TryGetEntity(gridIdNet, out var gridIdRaw) || - !_mapManager.TryGetGrid(gridIdRaw, out var grid)) + !_entManager.TryGetComponent(gridIdRaw, out MapGridComponent? grid)) { shell.WriteError($"Failed parsing gridId '{args[3]}'."); return; } - var coordinates = new EntityCoordinates(grid.Owner, new Vector2(x, y)); - if (grid.GetTileRef(coordinates).IsSpace()) + var mapSystem = _entManager.System(); + var coordinates = new EntityCoordinates(gridIdRaw.Value, new Vector2(x, y)); + if (mapSystem.GetTileRef(gridIdRaw.Value, grid, coordinates).IsSpace()) { shell.WriteError($"Cannot create decal on space tile at {coordinates}."); return; diff --git a/Content.Server/Decals/DecalSystem.cs b/Content.Server/Decals/DecalSystem.cs index 6f40ebae3a3d17..d5a5bf9affa8bc 100644 --- a/Content.Server/Decals/DecalSystem.cs +++ b/Content.Server/Decals/DecalSystem.cs @@ -9,11 +9,13 @@ using Content.Shared.Decals; using Content.Shared.Maps; using Microsoft.Extensions.ObjectPool; +using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared; using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Threading; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -31,6 +33,7 @@ public sealed class DecalSystem : SharedDecalSystem [Dependency] private readonly IConfigurationManager _conf = default!; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; + [Dependency] private readonly MapSystem _mapSystem = default!; private readonly Dictionary> _dirtyChunks = new(); private readonly Dictionary>> _previousSentChunks = new(); @@ -283,10 +286,10 @@ public bool TryAddDecal(Decal decal, EntityCoordinates coordinates, out uint dec return false; var gridId = coordinates.GetGridUid(EntityManager); - if (!MapManager.TryGetGrid(gridId, out var grid)) + if (!TryComp(gridId, out MapGridComponent? grid)) return false; - if (grid.GetTileRef(coordinates).IsSpace(_tileDefMan)) + if (_mapSystem.GetTileRef(gridId.Value, grid, coordinates).IsSpace(_tileDefMan)) return false; if (!TryComp(gridId, out DecalGridComponent? comp)) diff --git a/Content.Server/DeviceLinking/Systems/AutoLinkSystem.cs b/Content.Server/DeviceLinking/Systems/AutoLinkSystem.cs index d6169479f84e8c..875f29785d698e 100644 --- a/Content.Server/DeviceLinking/Systems/AutoLinkSystem.cs +++ b/Content.Server/DeviceLinking/Systems/AutoLinkSystem.cs @@ -19,17 +19,18 @@ private void OnAutoLinkMapInit(EntityUid uid, AutoLinkTransmitterComponent compo { var xform = Transform(uid); - foreach (var receiver in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var receiverUid, out var receiver)) { if (receiver.AutoLinkChannel != component.AutoLinkChannel) continue; // Not ours. - var rxXform = Transform(receiver.Owner); + var rxXform = Transform(receiverUid); if (rxXform.GridUid != xform.GridUid) continue; - _deviceLinkSystem.LinkDefaults(null, uid, receiver.Owner); + _deviceLinkSystem.LinkDefaults(null, uid, receiverUid); } } } diff --git a/Content.Server/Doors/Systems/DoorSystem.cs b/Content.Server/Doors/Systems/DoorSystem.cs index 5899baf2fcd720..560149f2289af8 100644 --- a/Content.Server/Doors/Systems/DoorSystem.cs +++ b/Content.Server/Doors/Systems/DoorSystem.cs @@ -59,7 +59,7 @@ protected override void SetCollidable( return; if (door.ChangeAirtight && TryComp(uid, out AirtightComponent? airtight)) - _airtightSystem.SetAirblocked(uid, airtight, collidable); + _airtightSystem.SetAirblocked((uid, airtight), collidable); // Pathfinding / AI stuff. RaiseLocalEvent(new AccessReaderChangeEvent(uid, collidable)); @@ -201,14 +201,14 @@ private void OnAfterPry(EntityUid uid, DoorComponent door, ref PriedEvent args) } } - protected override void CheckDoorBump(DoorComponent component, PhysicsComponent body) + protected override void CheckDoorBump(Entity ent) { - var uid = body.Owner; - if (component.BumpOpen) + var (uid, door, physics) = ent; + if (door.BumpOpen) { - foreach (var other in PhysicsSystem.GetContactingEntities(uid, body, approximate: true)) + foreach (var other in PhysicsSystem.GetContactingEntities(uid, physics, approximate: true)) { - if (Tags.HasTag(other, "DoorBumpOpener") && TryOpen(uid, component, other, false, quiet: true)) + if (Tags.HasTag(other, "DoorBumpOpener") && TryOpen(uid, door, other, quiet: true)) break; } } diff --git a/Content.Server/Doors/Systems/FirelockSystem.cs b/Content.Server/Doors/Systems/FirelockSystem.cs index e2f25c63ab48b1..3d4c8a4ec59e04 100644 --- a/Content.Server/Doors/Systems/FirelockSystem.cs +++ b/Content.Server/Doors/Systems/FirelockSystem.cs @@ -4,9 +4,7 @@ using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; -using Content.Server.Remotes; using Content.Server.Shuttles.Components; -using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Atmos; using Content.Shared.Atmos.Monitor; @@ -14,11 +12,8 @@ using Content.Shared.Doors.Components; using Content.Shared.Doors.Systems; using Content.Shared.Popups; -using Microsoft.Extensions.Options; -using Robust.Server.GameObjects; -using Robust.Shared.Map.Components; -using Robust.Shared.Player; using Content.Shared.Prying.Components; +using Robust.Shared.Map.Components; namespace Content.Server.Doors.Systems { @@ -72,7 +67,8 @@ public override void Update(float frameTime) var appearanceQuery = GetEntityQuery(); var xformQuery = GetEntityQuery(); - foreach (var (firelock, door) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var firelock, out var door)) { // only bother to check pressure on doors that are some variation of closed. if (door.State != DoorState.Closed @@ -82,7 +78,6 @@ public override void Update(float frameTime) continue; } - var uid = door.Owner; if (airtightQuery.TryGetComponent(uid, out var airtight) && xformQuery.TryGetComponent(uid, out var xform) && appearanceQuery.TryGetComponent(uid, out var appearance)) @@ -128,9 +123,9 @@ public bool EmergencyPressureStop(EntityUid uid, FirelockComponent? firelock = n if (door.State == DoorState.Open) { - if (_doorSystem.TryClose(door.Owner, door)) + if (_doorSystem.TryClose(uid, door)) { - return _doorSystem.OnPartialClose(door.Owner, door); + return _doorSystem.OnPartialClose(uid, door); } } return false; @@ -275,7 +270,7 @@ public bool IsHoldingPressureOrFire(EntityUid uid, FirelockComponent firelock) if (airtight.AirBlockedDirection != AtmosDirection.All) tiles.Add(pos); - var gasses = _atmosSystem.GetTileMixtures(gridAtmosphere.Owner, xform.MapUid, tiles); + var gasses = _atmosSystem.GetTileMixtures(xform.ParentUid, xform.MapUid, tiles); if (gasses == null) return (false, false); diff --git a/Content.Server/Engineering/EntitySystems/DisassembleOnAltVerbSystem.cs b/Content.Server/Engineering/EntitySystems/DisassembleOnAltVerbSystem.cs index 3085af0cdce96d..08bf68c4d290c4 100644 --- a/Content.Server/Engineering/EntitySystems/DisassembleOnAltVerbSystem.cs +++ b/Content.Server/Engineering/EntitySystems/DisassembleOnAltVerbSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.Verbs; using JetBrains.Annotations; + namespace Content.Server.Engineering.EntitySystems { [UsedImplicitly] @@ -52,17 +53,17 @@ public async void AttemptDisassemble(EntityUid uid, EntityUid user, EntityUid ta return; } - if (component.Deleted || Deleted(component.Owner)) + if (component.Deleted || Deleted(uid)) return; - if (!TryComp(component.Owner, out var transformComp)) + if (!TryComp(uid, out var transformComp)) return; var entity = EntityManager.SpawnEntity(component.Prototype, transformComp.Coordinates); _handsSystem.TryPickup(user, entity); - EntityManager.DeleteEntity(component.Owner); + EntityManager.DeleteEntity(uid); } } } diff --git a/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs b/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs index 4893552c2c0cbc..61c4937a271a35 100644 --- a/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs +++ b/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs @@ -1,6 +1,6 @@ -using Content.Shared.Coordinates.Helpers; using Content.Server.Engineering.Components; using Content.Server.Stack; +using Content.Shared.Coordinates.Helpers; using Content.Shared.DoAfter; using Content.Shared.Interaction; using Content.Shared.Maps; @@ -58,7 +58,7 @@ bool IsTileClear() if (component.Deleted || !IsTileClear()) return; - if (EntityManager.TryGetComponent(component.Owner, out StackComponent? stackComp) + if (EntityManager.TryGetComponent(uid, out StackComponent? stackComp) && component.RemoveOnInteract && !_stackSystem.Use(uid, 1, stackComp)) { return; @@ -66,8 +66,8 @@ bool IsTileClear() EntityManager.SpawnEntity(component.Prototype, args.ClickLocation.SnapToGrid(grid)); - if (component.RemoveOnInteract && stackComp == null && !((!EntityManager.EntityExists(component.Owner) ? EntityLifeStage.Deleted : EntityManager.GetComponent(component.Owner).EntityLifeStage) >= EntityLifeStage.Deleted)) - EntityManager.DeleteEntity(component.Owner); + if (component.RemoveOnInteract && stackComp == null && !((!EntityManager.EntityExists(uid) ? EntityLifeStage.Deleted : EntityManager.GetComponent(component.Owner).EntityLifeStage) >= EntityLifeStage.Deleted)) + EntityManager.DeleteEntity(uid); } } } diff --git a/Content.Server/Explosion/EntitySystems/ClusterGrenadeSystem.cs b/Content.Server/Explosion/EntitySystems/ClusterGrenadeSystem.cs index e05056a68c1934..9467966cb6c9f9 100644 --- a/Content.Server/Explosion/EntitySystems/ClusterGrenadeSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ClusterGrenadeSystem.cs @@ -4,7 +4,6 @@ using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Throwing; -using Robust.Server.GameObjects; using Robust.Shared.Containers; using Robust.Shared.Random; @@ -32,18 +31,22 @@ private void OnClugInit(EntityUid uid, ClusterGrenadeComponent component, Compon component.GrenadesContainer = _container.EnsureContainer(uid, "cluster-flash"); } - private void OnClugStartup(EntityUid uid, ClusterGrenadeComponent component, ComponentStartup args) + private void OnClugStartup(Entity clug, ref ComponentStartup args) { + var component = clug.Comp; if (component.FillPrototype != null) { component.UnspawnedCount = Math.Max(0, component.MaxGrenades - component.GrenadesContainer.ContainedEntities.Count); - UpdateAppearance(uid, component); + UpdateAppearance(clug); } } - private void OnClugUsing(EntityUid uid, ClusterGrenadeComponent component, InteractUsingEvent args) + private void OnClugUsing(Entity clug, ref InteractUsingEvent args) { - if (args.Handled) return; + if (args.Handled) + return; + + var component = clug.Comp; // TODO: Should use whitelist. if (component.GrenadesContainer.ContainedEntities.Count >= component.MaxGrenades || @@ -51,7 +54,7 @@ private void OnClugUsing(EntityUid uid, ClusterGrenadeComponent component, Inter return; component.GrenadesContainer.Insert(args.Used); - UpdateAppearance(uid, component); + UpdateAppearance(clug); args.Handled = true; } @@ -63,7 +66,7 @@ private void OnClugUse(EntityUid uid, ClusterGrenadeComponent component, UseInHa // TODO: Should be an Update loop uid.SpawnTimer((int) (component.Delay * 1000), () => { - if (Deleted(component.Owner)) + if (Deleted(uid)) return; component.CountDown = true; @@ -71,7 +74,7 @@ private void OnClugUse(EntityUid uid, ClusterGrenadeComponent component, UseInHa var grenadesInserted = component.GrenadesContainer.ContainedEntities.Count + component.UnspawnedCount; var thrownCount = 0; var segmentAngle = 360 / grenadesInserted; - while (TryGetGrenade(component, out var grenade)) + while (TryGetGrenade((uid, component), out var grenade)) { var angleMin = segmentAngle * thrownCount; var angleMax = segmentAngle * (thrownCount + 1); @@ -99,14 +102,15 @@ private void OnClugUse(EntityUid uid, ClusterGrenadeComponent component, UseInHa args.Handled = true; } - private bool TryGetGrenade(ClusterGrenadeComponent component, out EntityUid grenade) + private bool TryGetGrenade(Entity ent, out EntityUid grenade) { grenade = default; + var component = ent.Comp; if (component.UnspawnedCount > 0) { component.UnspawnedCount--; - grenade = EntityManager.SpawnEntity(component.FillPrototype, Transform(component.Owner).MapPosition); + grenade = EntityManager.SpawnEntity(component.FillPrototype, Transform(ent).MapPosition); return true; } @@ -124,10 +128,12 @@ private bool TryGetGrenade(ClusterGrenadeComponent component, out EntityUid gren return false; } - private void UpdateAppearance(EntityUid uid, ClusterGrenadeComponent component) + private void UpdateAppearance(Entity ent) { - if (!TryComp(component.Owner, out var appearance)) return; + var component = ent.Comp; + if (!TryComp(ent, out var appearance)) + return; - _appearance.SetData(uid, ClusterGrenadeVisuals.GrenadesCounter, component.GrenadesContainer.ContainedEntities.Count + component.UnspawnedCount, appearance); + _appearance.SetData(ent, ClusterGrenadeVisuals.GrenadesCounter, component.GrenadesContainer.ContainedEntities.Count + component.UnspawnedCount, appearance); } } diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs index 79985d233b71ce..34028ab4350245 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs @@ -59,8 +59,8 @@ private void OnGridRemoved(GridRemovalEvent ev) // if the explosion is centered on some grid (and not just space), get the transforms. if (referenceGrid != null) { - var targetGrid = _mapManager.GetGrid(referenceGrid.Value); - var xform = Transform(targetGrid.Owner); + var targetGrid = Comp(referenceGrid.Value); + var xform = Transform(referenceGrid.Value); targetAngle = xform.WorldRotation; targetMatrix = xform.InvWorldMatrix; tileSize = targetGrid.TileSize; @@ -84,17 +84,17 @@ private void OnGridRemoved(GridRemovalEvent ev) if (!_gridEdges.TryGetValue(gridToTransform, out var edges)) continue; - if (!_mapManager.TryGetGrid(gridToTransform, out var grid)) + if (!TryComp(gridToTransform, out MapGridComponent? grid)) continue; if (grid.TileSize != tileSize) { - Logger.Error($"Explosions do not support grids with different grid sizes. GridIds: {gridToTransform} and {referenceGrid}"); + Log.Error($"Explosions do not support grids with different grid sizes. GridIds: {gridToTransform} and {referenceGrid}"); continue; } var xforms = EntityManager.GetEntityQuery(); - var xform = xforms.GetComponent(grid.Owner); + var xform = xforms.GetComponent(gridToTransform); var (_, gridWorldRotation, gridWorldMatrix, invGridWorldMatrid) = xform.GetWorldPositionRotationMatrixWithInv(xforms); var localEpicentre = (Vector2i) invGridWorldMatrid.Transform(epicentre.Position); @@ -228,7 +228,7 @@ private void OnTileChanged(ref TileChangedEvent ev) if (!ev.NewTile.Tile.IsEmpty && !ev.OldTile.IsEmpty) return; - if (!_mapManager.TryGetGrid(ev.Entity, out var grid)) + if (!TryComp(ev.Entity, out MapGridComponent? grid)) return; var tileRef = ev.NewTile; diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs index 28c627e14347eb..c00f591d92bf83 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs @@ -4,7 +4,6 @@ using Content.Shared.Database; using Content.Shared.Examine; using Content.Shared.Verbs; -using Robust.Shared.Player; namespace Content.Server.Explosion.EntitySystems { @@ -26,39 +25,43 @@ private void OnVoiceInit(EntityUid uid, TriggerOnVoiceComponent component, Compo RemCompDeferred(uid); } - private void OnListen(EntityUid uid, TriggerOnVoiceComponent component, ListenEvent args) + private void OnListen(Entity ent, ref ListenEvent args) { + var component = ent.Comp; var message = args.Message.Trim(); if (component.IsRecording) { if (message.Length >= component.MinLength || message.Length <= component.MaxLength) - FinishRecording(component, args.Source, args.Message); + FinishRecording(ent, args.Source, args.Message); return; } if (!string.IsNullOrWhiteSpace(component.KeyPhrase) && message.Contains(component.KeyPhrase, StringComparison.InvariantCultureIgnoreCase)) { _adminLogger.Add(LogType.Trigger, LogImpact.High, - $"A voice-trigger on {ToPrettyString(uid):entity} was triggered by {ToPrettyString(args.Source):speaker} speaking the key-phrase {component.KeyPhrase}."); - Trigger(uid, args.Source); + $"A voice-trigger on {ToPrettyString(ent):entity} was triggered by {ToPrettyString(args.Source):speaker} speaking the key-phrase {component.KeyPhrase}."); + Trigger(ent, args.Source); } } - private void OnVoiceGetAltVerbs(EntityUid uid, TriggerOnVoiceComponent component, GetVerbsEvent args) + private void OnVoiceGetAltVerbs(Entity ent, ref GetVerbsEvent args) { if (!args.CanInteract || !args.CanAccess) return; + var component = ent.Comp; + + var @event = args; args.Verbs.Add(new AlternativeVerb() { Text = Loc.GetString(component.IsRecording ? "verb-trigger-voice-record-stop" : "verb-trigger-voice-record"), Act = () => { if (component.IsRecording) - StopRecording(component); + StopRecording(ent); else - StartRecording(component, args.User); + StartRecording(ent, @event.User); }, Priority = 1 }); @@ -73,40 +76,43 @@ private void OnVoiceGetAltVerbs(EntityUid uid, TriggerOnVoiceComponent component { component.KeyPhrase = null; component.IsRecording = false; - RemComp(uid); + RemComp(ent); } }); } - public void StartRecording(TriggerOnVoiceComponent component, EntityUid user) + public void StartRecording(Entity ent, EntityUid user) { + var component = ent.Comp; component.IsRecording = true; - EnsureComp(component.Owner).Range = component.ListenRange; + EnsureComp(ent).Range = component.ListenRange; _adminLogger.Add(LogType.Trigger, LogImpact.Low, - $"A voice-trigger on {ToPrettyString(component.Owner):entity} has started recording. User: {ToPrettyString(user):user}"); + $"A voice-trigger on {ToPrettyString(ent):entity} has started recording. User: {ToPrettyString(user):user}"); - _popupSystem.PopupEntity(Loc.GetString("popup-trigger-voice-start-recording"), component.Owner); + _popupSystem.PopupEntity(Loc.GetString("popup-trigger-voice-start-recording"), ent); } - public void StopRecording(TriggerOnVoiceComponent component) + public void StopRecording(Entity ent) { + var component = ent.Comp; component.IsRecording = false; if (string.IsNullOrWhiteSpace(component.KeyPhrase)) - RemComp(component.Owner); + RemComp(ent); - _popupSystem.PopupEntity(Loc.GetString("popup-trigger-voice-stop-recording"), component.Owner); + _popupSystem.PopupEntity(Loc.GetString("popup-trigger-voice-stop-recording"), ent); } - public void FinishRecording(TriggerOnVoiceComponent component, EntityUid source, string message) + public void FinishRecording(Entity ent, EntityUid source, string message) { + var component = ent.Comp; component.KeyPhrase = message; component.IsRecording = false; _adminLogger.Add(LogType.Trigger, LogImpact.Low, - $"A voice-trigger on {ToPrettyString(component.Owner):entity} has recorded a new keyphrase: '{component.KeyPhrase}'. Recorded from {ToPrettyString(source):speaker}"); + $"A voice-trigger on {ToPrettyString(ent):entity} has recorded a new keyphrase: '{component.KeyPhrase}'. Recorded from {ToPrettyString(source):speaker}"); - _popupSystem.PopupEntity(Loc.GetString("popup-trigger-voice-recorded", ("keyphrase", component.KeyPhrase!)), component.Owner); + _popupSystem.PopupEntity(Loc.GetString("popup-trigger-voice-recorded", ("keyphrase", component.KeyPhrase!)), ent); } private void OnVoiceExamine(EntityUid uid, TriggerOnVoiceComponent component, ExaminedEvent args) diff --git a/Content.Server/Fluids/EntitySystems/DrainSystem.cs b/Content.Server/Fluids/EntitySystems/DrainSystem.cs index cefc918b17b1cd..ea3df2f8c4685f 100644 --- a/Content.Server/Fluids/EntitySystems/DrainSystem.cs +++ b/Content.Server/Fluids/EntitySystems/DrainSystem.cs @@ -1,19 +1,18 @@ -using Content.Server.Fluids.Components; -using Content.Server.Chemistry.EntitySystems; using Content.Server.DoAfter; +using Content.Server.Fluids.Components; using Content.Server.Popups; -using Content.Shared.FixedPoint; using Content.Shared.Audio; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.DoAfter; using Content.Shared.Examine; +using Content.Shared.FixedPoint; using Content.Shared.Fluids; +using Content.Shared.Fluids.Components; using Content.Shared.Interaction; using Content.Shared.Tag; using Content.Shared.Verbs; -using Content.Shared.Fluids.Components; using Robust.Shared.Collections; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -96,7 +95,7 @@ private void Empty(EntityUid container, SpillableComponent spillable, EntityUid if (drainSolution.MaxVolume == drainSolution.Volume) { - _puddleSystem.TrySpillAt(Transform(target).Coordinates, containerSolution, out var puddle); + _puddleSystem.TrySpillAt(Transform(target).Coordinates, containerSolution, out _); _popupSystem.PopupEntity( Loc.GetString("drain-component-empty-verb-target-is-full-message", ("object", target)), container); @@ -111,7 +110,8 @@ public override void Update(float frameTime) var puddleQuery = GetEntityQuery(); var puddles = new ValueList<(EntityUid Entity, string Solution)>(); - foreach (var drain in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var drain)) { drain.Accumulator += frameTime; if (drain.Accumulator < drain.DrainFrequency) @@ -123,32 +123,32 @@ public override void Update(float frameTime) // Disable ambient sound from emptying manually if (!drain.AutoDrain) { - _ambientSoundSystem.SetAmbience(drain.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); continue; } - if (!managerQuery.TryGetComponent(drain.Owner, out var manager)) + if (!managerQuery.TryGetComponent(uid, out var manager)) continue; // Best to do this one every second rather than once every tick... - _solutionSystem.TryGetSolution(drain.Owner, DrainComponent.SolutionName, out var drainSolution, manager); + _solutionSystem.TryGetSolution(uid, DrainComponent.SolutionName, out var drainSolution, manager); if (drainSolution is null) continue; if (drainSolution.AvailableVolume <= 0) { - _ambientSoundSystem.SetAmbience(drain.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); continue; } // Remove a bit from the buffer - _solutionSystem.SplitSolution(drain.Owner, drainSolution, (drain.UnitsDestroyedPerSecond * drain.DrainFrequency)); + _solutionSystem.SplitSolution(uid, drainSolution, (drain.UnitsDestroyedPerSecond * drain.DrainFrequency)); // This will ensure that UnitsPerSecond is per second... var amount = drain.UnitsPerSecond * drain.DrainFrequency; - if (!xformQuery.TryGetComponent(drain.Owner, out var xform)) + if (!xformQuery.TryGetComponent(uid, out var xform)) continue; puddles.Clear(); @@ -165,11 +165,11 @@ public override void Update(float frameTime) if (puddles.Count == 0) { - _ambientSoundSystem.SetAmbience(drain.Owner, false); + _ambientSoundSystem.SetAmbience(uid, false); continue; } - _ambientSoundSystem.SetAmbience(drain.Owner, true); + _ambientSoundSystem.SetAmbience(uid, true); amount /= puddles.Count; @@ -190,7 +190,7 @@ public override void Update(float frameTime) var transferSolution = _solutionSystem.SplitSolution(puddle, puddleSolution, FixedPoint2.Min(FixedPoint2.New(amount), puddleSolution.Volume, drainSolution.AvailableVolume)); - _solutionSystem.TryAddSolution(drain.Owner, drainSolution, transferSolution); + _solutionSystem.TryAddSolution(uid, drainSolution, transferSolution); if (puddleSolution.Volume <= 0) { @@ -203,13 +203,15 @@ public override void Update(float frameTime) private void OnExamined(EntityUid uid, DrainComponent component, ExaminedEvent args) { if (!args.IsInDetailsRange || - !TryComp(uid, out SolutionContainerManagerComponent? solutionComp) || + !HasComp(uid) || !_solutionSystem.TryGetSolution(uid, DrainComponent.SolutionName, out var drainSolution)) - { return; } + { + return; + } - var text = drainSolution.AvailableVolume != 0 ? - Loc.GetString("drain-component-examine-volume", ("volume", drainSolution.AvailableVolume)) : - Loc.GetString("drain-component-examine-hint-full"); + var text = drainSolution.AvailableVolume != 0 + ? Loc.GetString("drain-component-examine-volume", ("volume", drainSolution.AvailableVolume)) + : Loc.GetString("drain-component-examine-hint-full"); args.Message.AddMarkup($"\n\n{text}"); } @@ -218,7 +220,9 @@ private void OnInteract(EntityUid uid, DrainComponent component, InteractEvent a if (!args.CanReach || args.Target == null || !_tagSystem.HasTag(args.Used, DrainComponent.PlungerTag) || !_solutionSystem.TryGetSolution(args.Target.Value, DrainComponent.SolutionName, out var drainSolution)) - { return; } + { + return; + } if (drainSolution.AvailableVolume > 0) { diff --git a/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs b/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs index ec4fb3b399f9e6..59f0a13695eb92 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleDebugDebugOverlaySystem.cs @@ -1,9 +1,9 @@ using System.Numerics; -using Content.Server.Fluids.Components; using Content.Shared.Fluids; using Content.Shared.Fluids.Components; using Robust.Server.Player; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Timing; namespace Content.Server.Fluids.EntitySystems; @@ -15,7 +15,7 @@ public sealed class PuddleDebugDebugOverlaySystem : SharedPuddleDebugOverlaySyst [Dependency] private readonly PuddleSystem _puddle = default!; private readonly HashSet _playerObservers = new(); - + private List> _grids = new(); public bool ToggleObserver(IPlayerSession observer) { @@ -58,8 +58,10 @@ public override void Update(float frameTime) var worldBounds = Box2.CenteredAround(transform.WorldPosition, new Vector2(LocalViewRange, LocalViewRange)); + _grids.Clear(); + _mapManager.FindGridsIntersecting(transform.MapID, worldBounds, ref _grids); - foreach (var grid in _mapManager.FindGridsIntersecting(transform.MapID, worldBounds)) + foreach (var grid in _grids) { var data = new List(); var gridUid = grid.Owner; @@ -67,7 +69,7 @@ public override void Update(float frameTime) if (!Exists(gridUid)) continue; - foreach (var uid in grid.GetAnchoredEntities(worldBounds)) + foreach (var uid in grid.Comp.GetAnchoredEntities(worldBounds)) { PuddleComponent? puddle = null; TransformComponent? xform = null; diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs index 4870f4286fd4e7..886cb9eff14f91 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs @@ -1,20 +1,25 @@ using Content.Server.Administration.Logs; using Content.Server.DoAfter; using Content.Server.Fluids.Components; -using Content.Shared.Chemistry; -using Content.Shared.Chemistry.Reaction; using Content.Server.Spreader; +using Content.Shared.Chemistry; +using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Chemistry.Reaction; using Content.Shared.Chemistry.Reagent; using Content.Shared.Database; +using Content.Shared.Effects; using Content.Shared.Examine; using Content.Shared.FixedPoint; using Content.Shared.Fluids; -using Content.Shared.Popups; -using Content.Shared.Slippery; using Content.Shared.Fluids.Components; using Content.Shared.Friction; using Content.Shared.IdentityManagement; +using Content.Shared.Maps; +using Content.Shared.Movement.Components; +using Content.Shared.Movement.Systems; +using Content.Shared.Popups; +using Content.Shared.Slippery; using Content.Shared.StepTrigger.Components; using Content.Shared.StepTrigger.Systems; using Robust.Server.GameObjects; @@ -22,14 +27,9 @@ using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Player; -using Solution = Content.Shared.Chemistry.Components.Solution; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; -using Content.Shared.Movement.Components; -using Content.Shared.Movement.Systems; -using Content.Shared.Maps; -using Content.Shared.Effects; namespace Content.Server.Fluids.EntitySystems; @@ -509,8 +509,11 @@ public bool TrySplashSpillAt(EntityUid uid, return false; var targets = new List(); + var reactive = new HashSet>(); + _lookup.GetEntitiesInRange(coordinates, 1.0f, reactive); + // Get reactive entities nearby--if there are some, it'll spill a bit on them instead. - foreach (var ent in _lookup.GetComponentsInRange(coordinates, 1.0f)) + foreach (var ent in reactive) { // sorry! no overload for returning uid, so .owner must be used var owner = ent.Owner; diff --git a/Content.Server/Fluids/EntitySystems/SpraySystem.cs b/Content.Server/Fluids/EntitySystems/SpraySystem.cs index 8ae9b4b3da2fc4..f0afd43dd2fb4d 100644 --- a/Content.Server/Fluids/EntitySystems/SpraySystem.cs +++ b/Content.Server/Fluids/EntitySystems/SpraySystem.cs @@ -130,14 +130,15 @@ private void OnAfterInteract(EntityUid uid, SprayComponent component, AfterInter // Add the solution to the vapor and actually send the thing var vaporComponent = Comp(vapor); - _vapor.TryAddSolution(vaporComponent, newSolution); + var ent = (vapor, vaporComponent); + _vapor.TryAddSolution(ent, newSolution); // impulse direction is defined in world-coordinates, not local coordinates var impulseDirection = rotation.ToVec(); var time = diffLength / component.SprayVelocity; cooldownTime = MathF.Max(time, cooldownTime); - _vapor.Start(vaporComponent, vaporXform, impulseDirection * diffLength, component.SprayVelocity, target, time, args.User); + _vapor.Start(ent, vaporXform, impulseDirection * diffLength, component.SprayVelocity, target, time, args.User); if (TryComp(args.User, out var body)) { diff --git a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs index 117717fca46f1f..69704ddb562bfa 100644 --- a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs @@ -1,8 +1,5 @@ using System.Linq; -using System.Text; // todo: remove this stinky LINQy -using Robust.Server.GameObjects; -using Robust.Shared.Audio; -using Robust.Shared.Timing; +using System.Text; using Content.Server.Paper; using Content.Server.Popups; using Content.Server.UserInterface; @@ -11,6 +8,10 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Verbs; +using Robust.Server.GameObjects; +using Robust.Shared.Audio; +using Robust.Shared.Timing; +// todo: remove this stinky LINQy namespace Content.Server.Forensics { @@ -83,7 +84,7 @@ private void OnDoAfter(EntityUid uid, ForensicScannerComponent component, DoAfte scanner.LastScannedName = MetaData(args.Args.Target.Value).EntityName; } - OpenUserInterface(args.Args.User, scanner); + OpenUserInterface(args.Args.User, (uid, scanner)); } /// @@ -160,14 +161,14 @@ private void OnBeforeActivatableUIOpen(EntityUid uid, ForensicScannerComponent c UpdateUserInterface(uid, component); } - private void OpenUserInterface(EntityUid user, ForensicScannerComponent component) + private void OpenUserInterface(EntityUid user, Entity scanner) { if (!TryComp(user, out var actor)) return; - UpdateUserInterface(component.Owner, component); + UpdateUserInterface(scanner, scanner.Comp); - _uiSystem.TryOpen(component.Owner, ForensicScannerUiKey.Key, actor.PlayerSession); + _uiSystem.TryOpen(scanner, ForensicScannerUiKey.Key, actor.PlayerSession); } private void OnPrint(EntityUid uid, ForensicScannerComponent component, ForensicScannerPrintMessage args) @@ -192,7 +193,7 @@ private void OnPrint(EntityUid uid, ForensicScannerComponent component, Forensic var printed = EntityManager.SpawnEntity(component.MachineOutput, Transform(uid).Coordinates); _handsSystem.PickupOrDrop(args.Session.AttachedEntity, printed, checkActionBlocker: false); - if (!TryComp(printed, out var paper)) + if (!HasComp(printed)) { _sawmill.Error("Printed paper did not have PaperComponent."); return; diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index 1c784641e35754..0c59f93bb021fa 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -15,6 +15,7 @@ using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -34,11 +35,23 @@ public sealed partial class GameTicker /// How many players have joined the round through normal methods. /// Useful for game rules to look at. Doesn't count observers, people in lobby, etc. ///
/// Chance that an interaction attempt will succeed. /// 1 = always play "success" popup and sound. diff --git a/Content.Server/Interaction/InteractionPopupSystem.cs b/Content.Server/Interaction/InteractionPopupSystem.cs index 286919b64fc881..86158fb7a89f5a 100644 --- a/Content.Server/Interaction/InteractionPopupSystem.cs +++ b/Content.Server/Interaction/InteractionPopupSystem.cs @@ -58,6 +58,9 @@ private void OnInteractHand(EntityUid uid, InteractionPopupComponent component, if (component.InteractSuccessSound != null) sfx = component.InteractSuccessSound.GetSound(); + + if (component.InteractSuccessSpawn != null) + Spawn(component.InteractSuccessSpawn, Transform(uid).MapPosition); } else { @@ -66,6 +69,9 @@ private void OnInteractHand(EntityUid uid, InteractionPopupComponent component, if (component.InteractFailureSound != null) sfx = component.InteractFailureSound.GetSound(); + + if (component.InteractFailureSpawn != null) + Spawn(component.InteractFailureSpawn, Transform(uid).MapPosition); } if (component.MessagePerceivedByOthers != null) diff --git a/Resources/Prototypes/Entities/Effects/hearts.yml b/Resources/Prototypes/Entities/Effects/hearts.yml new file mode 100644 index 00000000000000..042fdb5e8ab117 --- /dev/null +++ b/Resources/Prototypes/Entities/Effects/hearts.yml @@ -0,0 +1,16 @@ +- type: entity + id: EffectHearts + noSpawn: true + components: + - type: TimedDespawn + lifetime: 0.85 + - type: Sprite + noRot: true + drawdepth: Effects + sprite: Effects/hearts.rsi + state: hearts + - type: EffectVisuals + - type: Tag + tags: + - HideContextMenu + - type: AnimationPlayer \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index a79a0e0a99b031..0077fddcfc4002 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -41,6 +41,7 @@ successChance: 0.2 interactSuccessString: petting-success-soft-floofy interactFailureString: petting-failure-bat + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/fox_squeak.ogg - type: SentienceTarget @@ -204,6 +205,7 @@ successChance: 0.8 interactSuccessString: petting-success-bird interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/chicken_cluck_happy.ogg - type: Bloodstream @@ -290,6 +292,7 @@ successChance: 0.9 interactSuccessString: petting-success-bird interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/duck_quack_happy.ogg - type: Bloodstream @@ -469,6 +472,7 @@ interactDelay: 2 # Avoids overlapping SFX due to spam - these SFX are a little longer than the typical 1 second. interactSuccessString: petting-success-soft-floofy interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/cow_moo.ogg - type: Perishable @@ -523,6 +527,7 @@ successChance: 0.5 interactSuccessString: petting-success-crab interactFailureString: petting-failure-crab + interactSuccessSpawn: EffectHearts - type: Bloodstream bloodMaxVolume: 50 - type: Tag @@ -598,6 +603,7 @@ successChance: 0.2 interactSuccessString: petting-success-goat interactFailureString: petting-failure-goat + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/goat_bah.ogg - type: NpcFactionMember @@ -650,6 +656,7 @@ successChance: 0.1 # Yeah, good luck with that. interactSuccessString: petting-success-goose interactFailureString: petting-failure-goose + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/goose_honk.ogg - type: Bloodstream @@ -1160,6 +1167,7 @@ successChance: 0.3 interactSuccessString: petting-success-reptile interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/lizard_happy.ogg - type: Bloodstream @@ -1215,6 +1223,7 @@ successChance: 0.3 interactSuccessString: petting-success-generic interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts - type: Bloodstream bloodMaxVolume: 50 @@ -1259,6 +1268,7 @@ successChance: 0.6 interactSuccessString: petting-success-frog interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/frog_ribbit.ogg - type: Bloodstream @@ -1310,6 +1320,7 @@ successChance: 0.6 interactSuccessString: petting-success-bird interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/parrot_raught.ogg - type: Bloodstream @@ -1353,6 +1364,7 @@ successChance: 0.5 interactSuccessString: petting-success-bird interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/penguin_squawk.ogg - type: Tag @@ -1578,6 +1590,7 @@ successChance: 0.6 interactSuccessString: petting-success-reptile interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts - type: Bloodstream bloodMaxVolume: 50 - type: Damageable @@ -1655,6 +1668,7 @@ successChance: 0.5 interactSuccessString: petting-success-tarantula interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts - type: NoSlip - type: Spider - type: IgnoreSpiderWeb @@ -1834,6 +1848,7 @@ successChance: 0.2 # Low when undomesticated. interactSuccessString: petting-success-soft-floofy interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/raccoon_chatter.ogg - type: Grammar @@ -1890,6 +1905,7 @@ successChance: 0.5 interactSuccessString: petting-success-soft-floofy interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/fox_squeak.ogg - type: Grammar @@ -1951,6 +1967,7 @@ - type: InteractionPopup interactSuccessString: petting-success-dog interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/small_dog_bark_happy.ogg - type: Grammar @@ -2100,6 +2117,7 @@ successChance: 0.7 interactSuccessString: petting-success-cat interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/cat_meow.ogg - type: Grammar @@ -2152,6 +2170,7 @@ successChance: 0.7 interactSuccessString: petting-success-space-cat interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/cat_meow.ogg - type: Respirator #It just works? @@ -2225,6 +2244,7 @@ successChance: 0.9 interactSuccessString: petting-success-sloth interactFailureString: petting-failure-sloth + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/sloth_squeak.ogg - type: Grammar @@ -2282,6 +2302,7 @@ interactDelay: 1.5 # Avoids overlapping SFX due to spam - these SFX are a little longer than the typical 1 second. interactSuccessString: petting-success-soft-floofy interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/ferret_happy.ogg - type: Grammar @@ -2412,6 +2433,7 @@ successChance: 0.4 interactSuccessString: petting-success-hamster interactFailureString: petting-failure-hamster + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/fox_squeak.ogg - type: Bloodstream @@ -2482,6 +2504,7 @@ successChance: 0.7 interactSuccessString: petting-success-pig interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/pig_oink.ogg - type: ReplacementAccent diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index 1efa767af1bc74..21cc305acdebac 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -211,6 +211,7 @@ successChance: 0.9 interactSuccessString: petting-success-bingus interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/cat_meow.ogg - type: Grammar @@ -273,6 +274,7 @@ successChance: 0.5 interactSuccessString: petting-success-dog interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/small_dog_bark_happy.ogg - type: Grammar @@ -312,6 +314,7 @@ successChance: 1 interactSuccessString: petting-success-sloth interactFailureString: petting-failure-sloth + interactSuccessSpawn: EffectHearts - type: Grammar attributes: proper: true @@ -368,6 +371,7 @@ successChance: 0.7 interactSuccessString: petting-success-dog interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/small_dog_bark_happy.ogg - type: Grammar @@ -389,6 +393,7 @@ successChance: 1.0 # Hey, c'mon, this is Morty we're talking about here. interactSuccessString: petting-success-possum interactFailureString: petting-failure-possum + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/snake_hiss.ogg - type: Grammar @@ -410,6 +415,7 @@ successChance: 0.7 interactSuccessString: petting-success-raccoon interactFailureString: petting-failure-raccoon + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/raccoon_chatter.ogg - type: Grammar @@ -431,6 +437,7 @@ successChance: 1 interactSuccessString: petting-success-pig interactFailureString: petting-failure-pig + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/pig_oink.ogg - type: Grammar @@ -452,6 +459,7 @@ successChance: 1 interactSuccessString: petting-success-soft-floofy interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/fox_squeak.ogg - type: Butcherable @@ -492,6 +500,7 @@ successChance: 1 interactSuccessString: petting-success-hamster interactFailureString: petting-failure-hamster + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/fox_squeak.ogg - type: Butcherable @@ -518,6 +527,7 @@ successChance: 0.5 # spider is mean interactSuccessString: petting-success-tarantula interactFailureString: petting-failure-hamster + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/snake_hiss.ogg - type: NpcFactionMember @@ -592,7 +602,8 @@ - type: InteractionPopup successChance: 0.8 interactSuccessString: petting-success-kangaroo - interactFailureString: petting-failure-kangaroo + interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/kangaroo_grunt.ogg - type: Grammar diff --git a/Resources/Textures/Effects/hearts.rsi/hearts.png b/Resources/Textures/Effects/hearts.rsi/hearts.png new file mode 100644 index 0000000000000000000000000000000000000000..25bf0a8b5a8d082603679b14adf3447ab45e9853 GIT binary patch literal 734 zcmV<40wMj0P)Px%m`OxIRCt{2o4sz^FcgI^RkcGicdP-sbC&F`-@>yOFMXvhp8WvXZy9AQswkiz0!QQ zQs#B`3Xm*>bK+y>iZ|Uzx(Tyk6s4hkT<}VrWv-~ zGo58*x~%Ce3vyb%reR+ns4VKEIAu{gn~mTK;3x!F>l!Nl6u!=BzFVo==ZZ>|6A@9V za=Lx4oE^`}3h?OzISRq`EesXkhOcdG?k`nNzIOB7jlO*#(SL_C`TUixbk!*nwlrPR z^0}9j^=P4epa1UW^=P55^Dl4zT|Zzr3c*KE7x9Co>xUD(evhCqLGrkmnak)i2Z*bg z!Ga7^d{--d(Ji2hrS3Dni!)?x0a9;YL+DyWXndCsI<^)d{q{A4exGoE5aK&J|v$nim!O-al@C8{6<+3^J(^7$Bk4^;j~tO zkDxxqcNsTQK84e|HPKa2-{QLrnkk>cIavWdf;hx?*_$cpbXca%ecTJ24ii3tE>1iE z00000kRr87u@tc$K<;C2Ca}{w88?K*l#f6X$3H(bm|_3`000000Dyk^2Qi9x)|JuV Qn*aa+07*qoM6N<$f`MgOzW@LL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Effects/hearts.rsi/meta.json b/Resources/Textures/Effects/hearts.rsi/meta.json new file mode 100644 index 00000000000000..0c90d63d886b07 --- /dev/null +++ b/Resources/Textures/Effects/hearts.rsi/meta.json @@ -0,0 +1,24 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Created by TheShuEd (github) for ss14", + "states": [ + { + "name": "hearts", + "delays": [ + [ + 0.15, + 0.15, + 0.15, + 0.15, + 0.15, + 0.15 + ] + ] + } + ] +} \ No newline at end of file From 2ff8e149fbbfa3f9e12f1a1189d4c5c20193a440 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 13 Oct 2023 13:35:23 -0400 Subject: [PATCH 072/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0bcb9cadbc9385..20101b3ae9a141 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,14 +1,4 @@ Entries: -- author: Doru991 - changes: - - {message: 'Emagging the NutriMax will give a bottle of left-4-zed, for when you - need kudzu ASAP.', type: Add} - - {message: 'Since it got lost in translation last time, the NutriMax also has EZ - nutrient to satisfy increased nutrient demand.', type: Add} - - {message: New and improved formulas have increased the effectiveness of EZ nutrient - and Left-4-Zed., type: Tweak} - id: 4499 - time: '2023-08-10T01:43:07.0000000+00:00' - author: crazybrain changes: - {message: Admin ghosts can now analyse solutions easier., type: Tweak} @@ -2955,3 +2945,8 @@ Entries: - {message: Reptilians can now choose to have floppy kobold ears., type: Add} id: 4998 time: '2023-10-13T01:30:31.0000000+00:00' +- author: TheShuEd + changes: + - {message: Animals now give cute hearts when you pet them., type: Add} + id: 4999 + time: '2023-10-13T17:34:18.0000000+00:00' From e972ce7984ebd96eb0a962a5edc6a9d210922cb4 Mon Sep 17 00:00:00 2001 From: coolmankid12345 <55817627+coolmankid12345@users.noreply.github.com> Date: Fri, 13 Oct 2023 13:36:41 -0400 Subject: [PATCH 073/245] Add guidebook for revolutionaries (#20957) --- Resources/Locale/en-US/guidebook/guides.ftl | 1 + Resources/Prototypes/Guidebook/antagonist.yml | 6 +++ .../Guidebook/Antagonist/Revolutionaries.xml | 54 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 Resources/ServerInfo/Guidebook/Antagonist/Revolutionaries.xml diff --git a/Resources/Locale/en-US/guidebook/guides.ftl b/Resources/Locale/en-US/guidebook/guides.ftl index c03f1a8c575a53..9fc69839c08d37 100644 --- a/Resources/Locale/en-US/guidebook/guides.ftl +++ b/Resources/Locale/en-US/guidebook/guides.ftl @@ -50,6 +50,7 @@ guide-entry-antagonists = Antagonists guide-entry-nuclear-operatives = Nuclear Operatives guide-entry-traitors = Traitors guide-entry-zombies = Zombies +guide-entry-revolutionaries = Revolutionaries guide-entry-minor-antagonists = Minor Antagonists guide-entry-space-ninja = Space Ninja diff --git a/Resources/Prototypes/Guidebook/antagonist.yml b/Resources/Prototypes/Guidebook/antagonist.yml index e6e9afa01728cf..081ff7ef0aba73 100644 --- a/Resources/Prototypes/Guidebook/antagonist.yml +++ b/Resources/Prototypes/Guidebook/antagonist.yml @@ -6,6 +6,7 @@ - Traitors - NuclearOperatives - Zombies + - Revolutionaries - MinorAntagonists - SpaceNinja @@ -24,6 +25,11 @@ name: guide-entry-zombies text: "/ServerInfo/Guidebook/Antagonist/Zombies.xml" +- type: guideEntry + id: Revolutionaries + name: guide-entry-revolutionaries + text: "/ServerInfo/Guidebook/Antagonist/Revolutionaries.xml" + - type: guideEntry id: MinorAntagonists name: guide-entry-minor-antagonists diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Revolutionaries.xml b/Resources/ServerInfo/Guidebook/Antagonist/Revolutionaries.xml new file mode 100644 index 00000000000000..5f6d4ea9376aaa --- /dev/null +++ b/Resources/ServerInfo/Guidebook/Antagonist/Revolutionaries.xml @@ -0,0 +1,54 @@ + + # Revolutionaries + + - Revolutionaries are antagonists that are sponsored by the Syndicate to take over the station. + + ## Head Revolutionaries + + + + + + + [color=#5e9cff]Head Revolutionaries[/color] are chosen at the start of the shift and are tasked with taking over the station by killing or exiling all of the Command staff. Head Revolutionaries will be given a [color=#a4885c]Flash[/color] and a pair of [color=#a4885c]Sunglasses[/color] to aid them. + + ## Conversion + + + + + + You can convert crew members by using a [color=#a4885c]Flash[/color] in [color=#ff0000]harm mode[/color] and attacking someone with it. Any flash can be used for conversion, but remember that flashes have limited charges. + + + + + + + + However, things such as [color=#a4885c]Sunglasses[/color] and [color=#a4885c]Welding Masks[/color] offer flash protection and people wearing these will not be able to be converted. + + + + + + While not flash protection, a [color=#a4885c]MindShield Implant[/color] will prevent the implanted person from being converted into a revolutionary. Assume all of [color=#a4885c]Security[/color] and [color=#a4885c]Command[/color] are implanted already. + + ## Revolutionary + + A [color=#ff0000]Revolutionary[/color] is the result of being converted by a [color=#5e9cff]Head Revolutionary[/color]. Revolutionaries are underlings of the Head Revolutionaries and should follow orders given by them and prioritize their well-being over anything else because if they die you will lose. + Keep in mind that you can't convert others as a regular revolutionary, only your boss can do that. + + ## Objectives + + You must eliminate or exile all of the following Command staff on station in no particular order. + - Captain + - Head of Personnel + - Chief Engineer + - Research Director + - Quartermaster + - Head of Security + - Chief Medical Officer + + Remember, your objective is to take over the station and not to destroy it so try to minimize damage where possible. Viva la revolución! + From db4ad40430242e957ba14f95cf6dbf53857fc1cb Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Fri, 13 Oct 2023 11:56:12 -0700 Subject: [PATCH 074/245] Add panic bunker UI and automatic panic bunker (#20954) --- .../Administration/UI/AdminMenuWindow.xaml | 4 +- .../Administration/UI/AdminMenuWindow.xaml.cs | 7 +- .../PanicBunkerStatusWindow.xaml | 6 + .../PanicBunkerStatusWindow.xaml.cs | 14 ++ .../Tabs/PanicBunkerTab/PanicBunkerTab.xaml | 43 +++++ .../PanicBunkerTab/PanicBunkerTab.xaml.cs | 54 ++++++ .../Administration/UI/Tabs/ServerTab.xaml | 1 - .../Administration/UI/Tabs/ServerTab.xaml.cs | 7 - .../Systems/Admin/AdminUIController.cs | 24 +++ .../Commands/PanicBunkerCommand.cs | 175 ++++++++++++++++-- .../Administration/Systems/AdminSystem.cs | 111 ++++++++++- .../Events/PanicBunkerChangedEvent.cs | 26 +++ Content.Shared/CCVar/CCVars.cs | 20 ++ Resources/Changelog/Admin.yml | 7 + .../administration/commands/panicbunker.ftl | 32 ++++ .../administration/ui/admin-menu-window.ftl | 1 + .../ui/tabs/panicbunker-tab.ftl | 24 +++ .../administration/ui/tabs/server-tab.ftl | 1 - Resources/Locale/en-US/generic.ftl | 2 + SpaceStation14.sln.DotSettings | 1 + 20 files changed, 531 insertions(+), 29 deletions(-) create mode 100644 Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml create mode 100644 Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml.cs create mode 100644 Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml create mode 100644 Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs create mode 100644 Content.Shared/Administration/Events/PanicBunkerChangedEvent.cs create mode 100644 Resources/Locale/en-US/administration/ui/tabs/panicbunker-tab.ftl diff --git a/Content.Client/Administration/UI/AdminMenuWindow.xaml b/Content.Client/Administration/UI/AdminMenuWindow.xaml index 49eb9c0de60375..311d67b826c7a2 100644 --- a/Content.Client/Administration/UI/AdminMenuWindow.xaml +++ b/Content.Client/Administration/UI/AdminMenuWindow.xaml @@ -5,13 +5,15 @@ xmlns:atmosTab="clr-namespace:Content.Client.Administration.UI.Tabs.AtmosTab" xmlns:tabs="clr-namespace:Content.Client.Administration.UI.Tabs" xmlns:playerTab="clr-namespace:Content.Client.Administration.UI.Tabs.PlayerTab" - xmlns:objectsTab="clr-namespace:Content.Client.Administration.UI.Tabs.ObjectsTab"> + xmlns:objectsTab="clr-namespace:Content.Client.Administration.UI.Tabs.ObjectsTab" + xmlns:panic="clr-namespace:Content.Client.Administration.UI.Tabs.PanicBunkerTab"> + diff --git a/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs b/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs index d4dfcc2042e143..c3ea67a3edb91d 100644 --- a/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs +++ b/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs @@ -12,7 +12,7 @@ public sealed partial class AdminMenuWindow : DefaultWindow public AdminMenuWindow() { - MinSize = new Vector2(500, 250); + MinSize = new Vector2(650, 250); Title = Loc.GetString("admin-menu-title"); RobustXamlLoader.Load(this); MasterTabContainer.SetTabTitle(0, Loc.GetString("admin-menu-admin-tab")); @@ -20,8 +20,9 @@ public AdminMenuWindow() MasterTabContainer.SetTabTitle(2, Loc.GetString("admin-menu-atmos-tab")); MasterTabContainer.SetTabTitle(3, Loc.GetString("admin-menu-round-tab")); MasterTabContainer.SetTabTitle(4, Loc.GetString("admin-menu-server-tab")); - MasterTabContainer.SetTabTitle(5, Loc.GetString("admin-menu-players-tab")); - MasterTabContainer.SetTabTitle(6, Loc.GetString("admin-menu-objects-tab")); + MasterTabContainer.SetTabTitle(5, Loc.GetString("admin-menu-panic-bunker-tab")); + MasterTabContainer.SetTabTitle(6, Loc.GetString("admin-menu-players-tab")); + MasterTabContainer.SetTabTitle(7, Loc.GetString("admin-menu-objects-tab")); } protected override void Dispose(bool disposing) diff --git a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml new file mode 100644 index 00000000000000..633bef05148927 --- /dev/null +++ b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml @@ -0,0 +1,6 @@ + + diff --git a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml.cs b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml.cs new file mode 100644 index 00000000000000..ec16bf6aea7d60 --- /dev/null +++ b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml.cs @@ -0,0 +1,14 @@ +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.CustomControls; +using Robust.Client.UserInterface.XAML; + +namespace Content.Client.Administration.UI.Tabs.PanicBunkerTab; + +[GenerateTypedNameReferences] +public sealed partial class PanicBunkerStatusWindow : DefaultWindow +{ + public PanicBunkerStatusWindow() + { + RobustXamlLoader.Load(this); + } +} diff --git a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml new file mode 100644 index 00000000000000..89827d06424680 --- /dev/null +++ b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + diff --git a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs new file mode 100644 index 00000000000000..e9d3b95c5d8d97 --- /dev/null +++ b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs @@ -0,0 +1,54 @@ +using Content.Shared.Administration.Events; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Console; + +namespace Content.Client.Administration.UI.Tabs.PanicBunkerTab; + +[GenerateTypedNameReferences] +public sealed partial class PanicBunkerTab : Control +{ + [Dependency] private readonly IConsoleHost _console = default!; + + public PanicBunkerTab() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + DisableAutomaticallyButton.ToolTip = Loc.GetString("admin-ui-panic-bunker-disable-automatically-tooltip"); + + MinAccountAge.OnTextEntered += args => + { + if (string.IsNullOrWhiteSpace(args.Text) || !int.TryParse(args.Text, out var minutes)) + return; + + _console.ExecuteCommand($"panicbunker_min_account_age {minutes}"); + }; + + MinOverallHours.OnTextEntered += args => + { + if (string.IsNullOrWhiteSpace(args.Text) || !int.TryParse(args.Text, out var hours)) + return; + + _console.ExecuteCommand($"panicbunker_min_overall_hours {hours}"); + }; + } + + public void UpdateStatus(PanicBunkerStatus status) + { + EnabledButton.Pressed = status.Enabled; + EnabledButton.Text = Loc.GetString(status.Enabled + ? "admin-ui-panic-bunker-enabled" + : "admin-ui-panic-bunker-disabled" + ); + EnabledButton.ModulateSelfOverride = status.Enabled ? Color.Red : null; + + DisableAutomaticallyButton.Pressed = status.DisableWithAdmins; + EnableAutomaticallyButton.Pressed = status.EnableWithoutAdmins; + CountDeadminnedButton.Pressed = status.CountDeadminnedAdmins; + ShowReasonButton.Pressed = status.ShowReason; + MinAccountAge.Text = status.MinAccountAgeHours.ToString(); + MinOverallHours.Text = status.MinOverallHours.ToString(); + } +} diff --git a/Content.Client/Administration/UI/Tabs/ServerTab.xaml b/Content.Client/Administration/UI/Tabs/ServerTab.xaml index 7e15bc27539a16..b9984058358c4b 100644 --- a/Content.Client/Administration/UI/Tabs/ServerTab.xaml +++ b/Content.Client/Administration/UI/Tabs/ServerTab.xaml @@ -8,6 +8,5 @@ - diff --git a/Content.Client/Administration/UI/Tabs/ServerTab.xaml.cs b/Content.Client/Administration/UI/Tabs/ServerTab.xaml.cs index b83a3d1ec03018..24b92e42ce784d 100644 --- a/Content.Client/Administration/UI/Tabs/ServerTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/ServerTab.xaml.cs @@ -18,7 +18,6 @@ public ServerTab() _config.OnValueChanged(CCVars.OocEnabled, OocEnabledChanged, true); _config.OnValueChanged(CCVars.LoocEnabled, LoocEnabledChanged, true); - _config.OnValueChanged(CCVars.PanicBunkerEnabled, BunkerEnabledChanged, true); } private void OocEnabledChanged(bool value) @@ -31,11 +30,6 @@ private void LoocEnabledChanged(bool value) SetLoocButton.Pressed = value; } - private void BunkerEnabledChanged(bool value) - { - SetPanicbunkerButton.Pressed = value; - } - protected override void Dispose(bool disposing) { base.Dispose(disposing); @@ -44,7 +38,6 @@ protected override void Dispose(bool disposing) { _config.UnsubValueChanged(CCVars.OocEnabled, OocEnabledChanged); _config.UnsubValueChanged(CCVars.LoocEnabled, LoocEnabledChanged); - _config.UnsubValueChanged(CCVars.PanicBunkerEnabled, BunkerEnabledChanged); } } } diff --git a/Content.Client/UserInterface/Systems/Admin/AdminUIController.cs b/Content.Client/UserInterface/Systems/Admin/AdminUIController.cs index 47b93fdb09a34b..4a7a57e5272f2c 100644 --- a/Content.Client/UserInterface/Systems/Admin/AdminUIController.cs +++ b/Content.Client/UserInterface/Systems/Admin/AdminUIController.cs @@ -2,11 +2,13 @@ using Content.Client.Administration.Systems; using Content.Client.Administration.UI; using Content.Client.Administration.UI.Tabs.ObjectsTab; +using Content.Client.Administration.UI.Tabs.PanicBunkerTab; using Content.Client.Administration.UI.Tabs.PlayerTab; using Content.Client.Gameplay; using Content.Client.Lobby; using Content.Client.UserInterface.Controls; using Content.Client.Verbs.UI; +using Content.Shared.Administration.Events; using Content.Shared.Input; using JetBrains.Annotations; using Robust.Client.Console; @@ -30,6 +32,25 @@ public sealed class AdminUIController : UIController, IOnStateEntered UIManager.GetActiveUIWidgetOrNull()?.AdminButton; + private PanicBunkerStatus? _panicBunker; + + public override void Initialize() + { + base.Initialize(); + SubscribeNetworkEvent(OnPanicBunkerUpdated); + } + + private void OnPanicBunkerUpdated(PanicBunkerChangedEvent msg, EntitySessionEventArgs args) + { + var showDialog = _panicBunker == null && msg.Status.Enabled; + _panicBunker = msg.Status; + _window?.PanicBunkerControl.UpdateStatus(msg.Status); + + if (showDialog) + { + UIManager.CreateWindow().OpenCentered(); + } + } public void OnStateEntered(GameplayState state) { @@ -73,6 +94,9 @@ private void EnsureWindow() _window = UIManager.CreateWindow(); LayoutContainer.SetAnchorPreset(_window, LayoutContainer.LayoutPreset.Center); + if (_panicBunker != null) + _window.PanicBunkerControl.UpdateStatus(_panicBunker); + _window.PlayerTabControl.OnEntryPressed += PlayerTabEntryPressed; _window.ObjectsTabControl.OnEntryPressed += ObjectsTabEntryPressed; _window.OnOpen += OnWindowOpen; diff --git a/Content.Server/Administration/Commands/PanicBunkerCommand.cs b/Content.Server/Administration/Commands/PanicBunkerCommand.cs index 0273ac313d688a..de3f3cbaea2b6b 100644 --- a/Content.Server/Administration/Commands/PanicBunkerCommand.cs +++ b/Content.Server/Administration/Commands/PanicBunkerCommand.cs @@ -6,36 +6,187 @@ namespace Content.Server.Administration.Commands; [AdminCommand(AdminFlags.Server)] -public sealed class PanicBunkerCommand : IConsoleCommand +public sealed class PanicBunkerCommand : LocalizedCommands { [Dependency] private readonly IConfigurationManager _cfg = default!; - public string Command => "panicbunker"; - public string Description => "Enables or disables the panic bunker functionality."; - public string Help => "panicbunker"; - public void Execute(IConsoleShell shell, string argStr, string[] args) + public override string Command => "panicbunker"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + var toggle = Toggle(CCVars.PanicBunkerEnabled, shell, args, _cfg); + if (toggle == null) + return; + + shell.WriteLine(Loc.GetString(toggle.Value ? "panicbunker-command-enabled" : "panicbunker-command-disabled")); + } + + public static bool? Toggle(CVarDef cvar, IConsoleShell shell, string[] args, IConfigurationManager config) { if (args.Length > 1) { shell.WriteError(Loc.GetString("shell-need-between-arguments",("lower", 0), ("upper", 1))); - return; + return null; } - var enabled = _cfg.GetCVar(CCVars.PanicBunkerEnabled); - + var enabled = config.GetCVar(cvar); + if (args.Length == 0) { enabled = !enabled; } - + if (args.Length == 1 && !bool.TryParse(args[0], out enabled)) { shell.WriteError(Loc.GetString("shell-argument-must-be-boolean")); + return null; + } + + config.SetCVar(cvar, enabled); + return enabled; + } +} + +[AdminCommand(AdminFlags.Server)] +public sealed class PanicBunkerDisableWithAdminsCommand : LocalizedCommands +{ + [Dependency] private readonly IConfigurationManager _cfg = default!; + + public override string Command => "panicbunker_disable_with_admins"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + var toggle = PanicBunkerCommand.Toggle(CCVars.PanicBunkerDisableWithAdmins, shell, args, _cfg); + if (toggle == null) + return; + + shell.WriteLine(Loc.GetString(toggle.Value + ? "panicbunker-command-disable-with-admins-enabled" + : "panicbunker-command-disable-with-admins-disabled" + )); + } +} + +[AdminCommand(AdminFlags.Server)] +public sealed class PanicBunkerEnableWithoutAdminsCommand : LocalizedCommands +{ + [Dependency] private readonly IConfigurationManager _cfg = default!; + + public override string Command => "panicbunker_enable_without_admins"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + var toggle = PanicBunkerCommand.Toggle(CCVars.PanicBunkerEnableWithoutAdmins, shell, args, _cfg); + if (toggle == null) + return; + + shell.WriteLine(Loc.GetString(toggle.Value + ? "panicbunker-command-enable-without-admins-enabled" + : "panicbunker-command-enable-without-admins-disabled" + )); + } +} + +[AdminCommand(AdminFlags.Server)] +public sealed class PanicBunkerCountDeadminnedCommand : LocalizedCommands +{ + [Dependency] private readonly IConfigurationManager _cfg = default!; + + public override string Command => "panicbunker_count_deadminned_admins"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + var toggle = PanicBunkerCommand.Toggle(CCVars.PanicBunkerCountDeadminnedAdmins, shell, args, _cfg); + if (toggle == null) + return; + + shell.WriteLine(Loc.GetString(toggle.Value + ? "panicbunker-command-count-deadminned-admins-enabled" + : "panicbunker-command-count-deadminned-admins-disabled" + )); + } +} + +[AdminCommand(AdminFlags.Server)] +public sealed class PanicBunkerShowReasonCommand : LocalizedCommands +{ + [Dependency] private readonly IConfigurationManager _cfg = default!; + + public override string Command => "panicbunker_show_reason"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + var toggle = PanicBunkerCommand.Toggle(CCVars.PanicBunkerShowReason, shell, args, _cfg); + if (toggle == null) + return; + + shell.WriteLine(Loc.GetString(toggle.Value + ? "panicbunker-command-show-reason-enabled" + : "panicbunker-command-show-reason-disabled" + )); + } +} + +[AdminCommand(AdminFlags.Server)] +public sealed class PanicBunkerMinAccountAgeCommand : LocalizedCommands +{ + [Dependency] private readonly IConfigurationManager _cfg = default!; + + public override string Command => "panicbunker_min_account_age"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + if (args.Length == 0) + { + var current = _cfg.GetCVar(CCVars.PanicBunkerMinAccountAge); + shell.WriteLine(Loc.GetString("panicbunker-command-min-account-age-is", ("hours", current / 60))); + } + + if (args.Length > 1) + { + shell.WriteError(Loc.GetString("shell-need-between-arguments",("lower", 0), ("upper", 1))); + return; + } + + if (!int.TryParse(args[0], out var hours)) + { + shell.WriteError(Loc.GetString("shell-argument-must-be-number")); + return; + } + + _cfg.SetCVar(CCVars.PanicBunkerMinAccountAge, hours * 60); + shell.WriteLine(Loc.GetString("panicbunker-command-min-account-age-set", ("hours", hours))); + } +} + +[AdminCommand(AdminFlags.Server)] +public sealed class PanicBunkerMinOverallHoursCommand : LocalizedCommands +{ + [Dependency] private readonly IConfigurationManager _cfg = default!; + + public override string Command => "panicbunker_min_overall_hours"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + if (args.Length == 0) + { + var current = _cfg.GetCVar(CCVars.PanicBunkerMinOverallHours); + shell.WriteLine(Loc.GetString("panicbunker-command-min-overall-hours-is", ("minutes", current))); + } + + if (args.Length > 1) + { + shell.WriteError(Loc.GetString("shell-need-between-arguments",("lower", 0), ("upper", 1))); + return; + } + + if (!int.TryParse(args[0], out var hours)) + { + shell.WriteError(Loc.GetString("shell-argument-must-be-number")); return; } - _cfg.SetCVar(CCVars.PanicBunkerEnabled, enabled); - - shell.WriteLine(Loc.GetString(enabled ? "panicbunker-command-enabled" : "panicbunker-command-disabled")); + _cfg.SetCVar(CCVars.PanicBunkerMinOverallHours, hours); + shell.WriteLine(Loc.GetString("panicbunker-command-overall-hours-age-set", ("hours", hours))); } } diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index d54a7a2092a630..8851680aea6336 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -1,15 +1,18 @@ using System.Linq; using Content.Server.Administration.Managers; +using Content.Server.Chat.Managers; using Content.Server.IdentityManagement; using Content.Server.Mind; using Content.Shared.Administration; using Content.Shared.Administration.Events; +using Content.Shared.CCVar; using Content.Shared.GameTicking; using Content.Shared.IdentityManagement; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; using Robust.Server.GameObjects; using Robust.Server.Player; +using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Network; using Robust.Shared.Player; @@ -18,8 +21,10 @@ namespace Content.Server.Administration.Systems { public sealed class AdminSystem : EntitySystem { - [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IAdminManager _adminManager = default!; + [Dependency] private readonly IChatManager _chat = default!; + [Dependency] private readonly IConfigurationManager _config = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly SharedJobSystem _jobs = default!; [Dependency] private readonly MindSystem _minds = default!; [Dependency] private readonly SharedRoleSystem _role = default!; @@ -32,6 +37,7 @@ public sealed class AdminSystem : EntitySystem public IReadOnlySet RoundActivePlayers => _roundActivePlayers; private readonly HashSet _roundActivePlayers = new(); + private readonly PanicBunkerStatus _panicBunker = new(); public override void Initialize() { @@ -39,6 +45,15 @@ public override void Initialize() _playerManager.PlayerStatusChanged += OnPlayerStatusChanged; _adminManager.OnPermsChanged += OnAdminPermsChanged; + + _config.OnValueChanged(CCVars.PanicBunkerEnabled, OnPanicBunkerChanged, true); + _config.OnValueChanged(CCVars.PanicBunkerDisableWithAdmins, OnPanicBunkerDisableWithAdminsChanged, true); + _config.OnValueChanged(CCVars.PanicBunkerEnableWithoutAdmins, OnPanicBunkerEnableWithoutAdminsChanged, true); + _config.OnValueChanged(CCVars.PanicBunkerCountDeadminnedAdmins, OnPanicBunkerCountDeadminnedAdminsChanged, true); + _config.OnValueChanged(CCVars.PanicBunkerShowReason, OnShowReasonChanged, true); + _config.OnValueChanged(CCVars.PanicBunkerMinAccountAge, OnPanicBunkerMinAccountAgeChanged, true); + _config.OnValueChanged(CCVars.PanicBunkerMinOverallHours, OnPanicBunkerMinOverallHoursChanged, true); + SubscribeLocalEvent(OnIdentityChanged); SubscribeLocalEvent(OnPlayerAttached); SubscribeLocalEvent(OnPlayerDetached); @@ -114,7 +129,9 @@ private void OnRoleEvent(RoleEvent ev) private void OnAdminPermsChanged(AdminPermsChangedEventArgs obj) { - if(!obj.IsAdmin) + UpdatePanicBunker(); + + if (!obj.IsAdmin) { RaiseNetworkEvent(new FullPlayerListEvent(), obj.Player.ConnectedClient); return; @@ -127,14 +144,16 @@ private void OnPlayerDetached(PlayerDetachedEvent ev) { // If disconnected then the player won't have a connected entity to get character name from. // The disconnected state gets sent by OnPlayerStatusChanged. - if(ev.Player.Status == SessionStatus.Disconnected) return; + if (ev.Player.Status == SessionStatus.Disconnected) + return; UpdatePlayerList(ev.Player); } private void OnPlayerAttached(PlayerAttachedEvent ev) { - if(ev.Player.Status == SessionStatus.Disconnected) return; + if (ev.Player.Status == SessionStatus.Disconnected) + return; _roundActivePlayers.Add(ev.Player.UserId); UpdatePlayerList(ev.Player); @@ -145,11 +164,20 @@ public override void Shutdown() base.Shutdown(); _playerManager.PlayerStatusChanged -= OnPlayerStatusChanged; _adminManager.OnPermsChanged -= OnAdminPermsChanged; + + _config.UnsubValueChanged(CCVars.PanicBunkerEnabled, OnPanicBunkerChanged); + _config.UnsubValueChanged(CCVars.PanicBunkerDisableWithAdmins, OnPanicBunkerDisableWithAdminsChanged); + _config.UnsubValueChanged(CCVars.PanicBunkerEnableWithoutAdmins, OnPanicBunkerEnableWithoutAdminsChanged); + _config.UnsubValueChanged(CCVars.PanicBunkerCountDeadminnedAdmins, OnPanicBunkerCountDeadminnedAdminsChanged); + _config.UnsubValueChanged(CCVars.PanicBunkerShowReason, OnShowReasonChanged); + _config.UnsubValueChanged(CCVars.PanicBunkerMinAccountAge, OnPanicBunkerMinAccountAgeChanged); + _config.UnsubValueChanged(CCVars.PanicBunkerMinOverallHours, OnPanicBunkerMinOverallHoursChanged); } private void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs e) { UpdatePlayerList(e.Session); + UpdatePanicBunker(); } private void SendFullPlayerList(IPlayerSession playerSession) @@ -186,5 +214,80 @@ private PlayerInfo GetPlayerInfo(IPlayerData data, IPlayerSession? session) return new PlayerInfo(name, entityName, identityName, startingRole, antag, GetNetEntity(session?.AttachedEntity), data.UserId, connected, _roundActivePlayers.Contains(data.UserId)); } + + private void OnPanicBunkerChanged(bool enabled) + { + _panicBunker.Enabled = enabled; + _chat.SendAdminAlert(Loc.GetString(enabled + ? "admin-ui-panic-bunker-enabled-admin-alert" + : "admin-ui-panic-bunker-disabled-admin-alert" + )); + + SendPanicBunkerStatusAll(); + } + + private void OnPanicBunkerDisableWithAdminsChanged(bool enabled) + { + _panicBunker.DisableWithAdmins = enabled; + UpdatePanicBunker(); + } + + private void OnPanicBunkerEnableWithoutAdminsChanged(bool enabled) + { + _panicBunker.EnableWithoutAdmins = enabled; + UpdatePanicBunker(); + } + + private void OnPanicBunkerCountDeadminnedAdminsChanged(bool enabled) + { + _panicBunker.CountDeadminnedAdmins = enabled; + UpdatePanicBunker(); + } + + private void OnShowReasonChanged(bool enabled) + { + _panicBunker.ShowReason = enabled; + SendPanicBunkerStatusAll(); + } + + private void OnPanicBunkerMinAccountAgeChanged(int minutes) + { + _panicBunker.MinAccountAgeHours = minutes / 60; + SendPanicBunkerStatusAll(); + } + + private void OnPanicBunkerMinOverallHoursChanged(int hours) + { + _panicBunker.MinOverallHours = hours; + SendPanicBunkerStatusAll(); + } + + private void UpdatePanicBunker() + { + var admins = _panicBunker.CountDeadminnedAdmins + ? _adminManager.AllAdmins + : _adminManager.ActiveAdmins; + var hasAdmins = admins.Any(); + + if (hasAdmins && _panicBunker.DisableWithAdmins) + { + _config.SetCVar(CCVars.PanicBunkerEnabled, false); + } + else if (!hasAdmins && _panicBunker.EnableWithoutAdmins) + { + _config.SetCVar(CCVars.PanicBunkerEnabled, true); + } + + SendPanicBunkerStatusAll(); + } + + private void SendPanicBunkerStatusAll() + { + var ev = new PanicBunkerChangedEvent(_panicBunker); + foreach (var admin in _adminManager.AllAdmins) + { + RaiseNetworkEvent(ev, admin); + } + } } } diff --git a/Content.Shared/Administration/Events/PanicBunkerChangedEvent.cs b/Content.Shared/Administration/Events/PanicBunkerChangedEvent.cs new file mode 100644 index 00000000000000..f809b67bc8d20d --- /dev/null +++ b/Content.Shared/Administration/Events/PanicBunkerChangedEvent.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Administration.Events; + +[Serializable, NetSerializable] +public sealed class PanicBunkerStatus +{ + public bool Enabled; + public bool DisableWithAdmins; + public bool EnableWithoutAdmins; + public bool CountDeadminnedAdmins; + public bool ShowReason; + public int MinAccountAgeHours; + public int MinOverallHours; +} + +[Serializable, NetSerializable] +public sealed class PanicBunkerChangedEvent : EntityEventArgs +{ + public PanicBunkerStatus Status; + + public PanicBunkerChangedEvent(PanicBunkerStatus status) + { + Status = status; + } +} diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index ccc8b6d51dc6a4..0cf374fe4dea80 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -248,6 +248,26 @@ public static readonly CVarDef public static readonly CVarDef PanicBunkerEnabled = CVarDef.Create("game.panic_bunker.enabled", false, CVar.NOTIFY | CVar.REPLICATED); + /// + /// Whether or not the panic bunker will disable when an admin comes online. + /// + public static readonly CVarDef PanicBunkerDisableWithAdmins = + CVarDef.Create("game.panic_bunker.disable_with_admins", false, CVar.SERVERONLY); + + /// + /// Whether or not the panic bunker will enable when no admins are online. + /// + public static readonly CVarDef PanicBunkerEnableWithoutAdmins = + CVarDef.Create("game.panic_bunker.enable_without_admins", false, CVar.SERVERONLY); + + /// + /// Whether or not the panic bunker will count deadminned admins for + /// and + /// + /// + public static readonly CVarDef PanicBunkerCountDeadminnedAdmins = + CVarDef.Create("game.panic_bunker.count_deadminned_admins", false, CVar.SERVERONLY); + /// /// Show reason of disconnect for user or not. /// diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 81bc934176c7ef..aafb784ddc1ca9 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -7,3 +7,10 @@ Entries: - {message: 'Created the admin changelog.', type: Add} id: 1 time: '2023-10-08T04:26:00.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: 'Added a new panic bunker UI in the F7 admin panel.', type: Add} + - {message: 'Added being able to toggle the panic bunker automatically depending on + if admins are online or not.', type: Add} + id: 2 + time: '2023-10-12T22:46:00.0000000+00:00' diff --git a/Resources/Locale/en-US/administration/commands/panicbunker.ftl b/Resources/Locale/en-US/administration/commands/panicbunker.ftl index 46896500b8e8f4..c16748c9926a91 100644 --- a/Resources/Locale/en-US/administration/commands/panicbunker.ftl +++ b/Resources/Locale/en-US/administration/commands/panicbunker.ftl @@ -1,2 +1,34 @@ +cmd-panicbunker-desc = Toggles the panic bunker, which enables stricter restrictions on who's allowed to join the server. +cmd-panicbunker-help = Usage: panicbunker panicbunker-command-enabled = Panic bunker has been enabled. panicbunker-command-disabled = Panic bunker has been disabled. + +cmd-panicbunker_disable_with_admins-desc = Toggles whether or not the panic bunker will disable when an admin connects. +cmd-panicbunker_disable_with_admins-help = Usage: panicbunker_disable_with_admins +panicbunker-command-disable-with-admins-enabled = The panic bunker will automatically disable with admins online. +panicbunker-command-disable-with-admins-disabled = The panic bunker will not automatically disable with admins online. + +cmd-panicbunker_enable_without_admins-desc = Toggles whether or not the panic bunker will enable when the last admin disconnects. +cmd-panicbunker_enable_without_admins-help = Usage: panicbunker_enable_without_admins +panicbunker-command-enable-without-admins-enabled = The panic bunker will automatically enable without admins online. +panicbunker-command-enable-without-admins-disabled = The panic bunker will not automatically enable without admins online. + +cmd-panicbunker_count_deadminned_admins-desc = Toggles whether or not to count deadminned admins when automatically enabling and disabling the panic bunker. +cmd-panicbunker_count_deadminned_admins-help = Usage: panicbunker_count_deadminned_admins +panicbunker-command-count-deadminned-admins-enabled = The panic bunker will count deadminned admins when made to automatically enable and disable. +panicbunker-command-count-deadminned-admins-disabled = The panic bunker will not count deadminned admins when made to automatically enable and disable. + +cmd-panicbunker_show_reason-desc = Toggles whether or not to show connecting clients the reason why the panic bunker blocked them from joining. +cmd-panicbunker_show_reason-help = Usage: panicbunker_show_reason +panicbunker-command-show-reason-enabled = The panic bunker will now show a reason to users it blocks from connecting. +panicbunker-command-show-reason-disabled = The panic bunker will no longer show a reason to users it blocks from connecting. + +cmd-panicbunker_min_account_age-desc = Gets or sets the minimum account age in hours that an account must have to be allowed to connect with the panic bunker enabled. +cmd-panicbunker_min_account_age-help = Usage: panicbunker_min_account_age +panicbunker-command-min-account-age-is = The minimum account age for the panic bunker is {$hours} hours. +panicbunker-command-min-account-age-set = Set the minimum account age for the panic bunker to {$hours} hours. + +cmd-panicbunker_min_overall_hours-desc = Gets or sets the minimum overall playtime in hours that an account must have to be allowed to connect with the panic bunker enabled. +cmd-panicbunker_min_overall_hours-help = Usage: panicbunker_min_overall_hours +panicbunker-command-min-overall-hours-is = The minimum overall playtime for the panic bunker is {$hours} hours. +panicbunker-command-min-overall-hours-set = Set the minimum overall playtime for the panic bunker to {$hours} hours. diff --git a/Resources/Locale/en-US/administration/ui/admin-menu-window.ftl b/Resources/Locale/en-US/administration/ui/admin-menu-window.ftl index ce256a2cd532a8..c759e4c2cb16f2 100644 --- a/Resources/Locale/en-US/administration/ui/admin-menu-window.ftl +++ b/Resources/Locale/en-US/administration/ui/admin-menu-window.ftl @@ -6,5 +6,6 @@ admin-menu-adminbus-tab = Adminbus admin-menu-atmos-tab = Atmos admin-menu-round-tab = Round admin-menu-server-tab = Server +admin-menu-panic-bunker-tab = Panic Bunker admin-menu-players-tab = Players admin-menu-objects-tab = Objects diff --git a/Resources/Locale/en-US/administration/ui/tabs/panicbunker-tab.ftl b/Resources/Locale/en-US/administration/ui/tabs/panicbunker-tab.ftl new file mode 100644 index 00000000000000..730d0c2e3b3412 --- /dev/null +++ b/Resources/Locale/en-US/administration/ui/tabs/panicbunker-tab.ftl @@ -0,0 +1,24 @@ +admin-ui-panic-bunker-window-title = Panic Bunker + +admin-ui-panic-bunker-enabled = Panic Bunker Enabled +admin-ui-panic-bunker-disabled = Panic Bunker Disabled +admin-ui-panic-bunker-tooltip = The panic bunker restricts players from joining if their account is too new or they do not have enough overall playtime on this server. + +admin-ui-panic-bunker-disable-automatically = Disable Automatically +admin-ui-panic-bunker-disable-automatically-tooltip = Disables the panic bunker automatically when an admin connects. +admin-ui-panic-bunker-enable-automatically = Enable Automatically +admin-ui-panic-bunker-enable-automatically-tooltip = Enables the panic bunker automatically when no admins are online. + +admin-ui-panic-bunker-count-deadminned-admins = Count Deadmins +admin-ui-panic-bunker-count-deadminned-admins-tooltip = Count deadminned admins when automatically enabling and disabling the panic bunker. + +admin-ui-panic-bunker-show-reason = Show Reason +admin-ui-panic-bunker-show-reason-tooltip = Show the user why they were blocked from connecting by the panic bunker. + +admin-ui-panic-bunker-min-account-age = Min. Account Age +admin-ui-panic-bunker-min-overall-hours = Min. Overall Playtime + +admin-ui-panic-bunker-is-enabled = The panic bunker is currently enabled. + +admin-ui-panic-bunker-enabled-admin-alert = The panic bunker has been enabled. +admin-ui-panic-bunker-disabled-admin-alert = The panic bunker has been disabled. diff --git a/Resources/Locale/en-US/administration/ui/tabs/server-tab.ftl b/Resources/Locale/en-US/administration/ui/tabs/server-tab.ftl index 713af85fa5bc98..7a41cbe2c751d7 100644 --- a/Resources/Locale/en-US/administration/ui/tabs/server-tab.ftl +++ b/Resources/Locale/en-US/administration/ui/tabs/server-tab.ftl @@ -1,4 +1,3 @@ server-shutdown = Shutdown server-ooc-toggle = Toggle OOC server-looc-toggle = Toggle LOOC -server-panicbunker-toggle = Toggle Panic bunker diff --git a/Resources/Locale/en-US/generic.ftl b/Resources/Locale/en-US/generic.ftl index 0ecfefdd1cbb29..7b3e0d3684ef8e 100644 --- a/Resources/Locale/en-US/generic.ftl +++ b/Resources/Locale/en-US/generic.ftl @@ -8,3 +8,5 @@ generic-unknown = unknown generic-unknown-title = Unknown generic-error = error generic-invalid = invalid + +generic-hours = hours diff --git a/SpaceStation14.sln.DotSettings b/SpaceStation14.sln.DotSettings index 1d141ba58a467b..57f0e3c4db6acb 100644 --- a/SpaceStation14.sln.DotSettings +++ b/SpaceStation14.sln.DotSettings @@ -584,6 +584,7 @@ public sealed partial class $CLASS$ : Shared$CLASS$ { True True True + True True True True From dd6b7b337ff27408d575aff72d67379cd7b55168 Mon Sep 17 00:00:00 2001 From: daerSeebaer <61566539+daerSeebaer@users.noreply.github.com> Date: Sat, 14 Oct 2023 00:07:23 +0200 Subject: [PATCH 075/245] Fix sprite alignment (#20975) --- .../pump.rsi/pumpVolumeBlocked.png | Bin 5060 -> 5051 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Structures/Piping/Atmospherics/pump.rsi/pumpVolumeBlocked.png b/Resources/Textures/Structures/Piping/Atmospherics/pump.rsi/pumpVolumeBlocked.png index 27bb092f470b0b30826c979c9a6c701b8bbe641a..797a3b987adc6c89f3e530cb728bf625a6a0f0ea 100644 GIT binary patch delta 1765 zcmVu?fewx!Mu#I3Dqg5B;F^{LgNY$!zG18|C z>ns#;fBiAykEUV9ATws zGQcMi$C-a_Si~E|vzwOAd7n7KDw0BcPCRMQ1&JTIF1!53x$LmOGb2VWGfx~L7Rx;> z_b{s%D)9_)R8cj`7xFGEoVPfuwFc|llfN)j)K;=wr#XfsmXJakB4jjBMGY2Wv}&Z7 z$k2Ym!$0cy)8vxLRRtr*0_sp9Iezdz_}#5pnx21hlR^og|HZaH#(}^t&~DoH_pxoa zPXPZjaHVzq^%gMqNqV!ZMUQ~NZQ$a%tI2!7A(Ki)rXHD)w5Ic690EOG^Ldra<#2X?c7~;+ zBkgg#!=copl!8)<13^Tl2q8kBgRDsfd!A>R-0>*${cU*hyomkx%~071onXgt008Uj z>o`0-#KFM)=ip{KZ6r6DOu=;vf|WU+i{cUjVI%Sij$cZI|$@Sj6{M3+;A0(v3EqKgk#1 z*hhfpd6w%oaNh6XxP6S%)1PqNMr7~Bn9lb(j)PjQhHABH=FkyBsLHE8 z5fKp)5k)=|o>YJQtka$evp=4Q44e56L`+@-{Qh_r!9W29`{OGWhee380Dgb`y<`f7 zd;!_)9BjM9B52a;3rZ$`Q;<@^bsGSpSs*b^fv3@;GOheXn2l4YkPpC5F}9XCHV1sL^W-yhid!T&!xIkEo7{8$vg^E^vRY3wd&n)$Ig z0;2AIjw(OY0*%|SKq8hCG5>rx_*DUvW7B_`dYZ!&*cZZu~7tB+j>p(+&z+3Xy)wzdPGv|6oR{k+JyOy?Uf zKqiy9wgTQ?4LLtQk3zlxAh<{0@1@rHl3co#%OL_|bHL_|bHv*9-sf#(^DOg72R00000NkvXX Hu0mjfE^-}I delta 1747 zcmV;^1}yozC&VX^Bmu&aB_Ds=5yK!1`)7)d0G0tW4r$W6ZqV^-2PYSrDu?_Krx=Ir z^L~Ygff5JKRZ1%*D!6f@u8G8fzH^Ga^N!+@)>A*60%;2xF-mbE9sP6~jL|d8UZ$u<*OStHv$bIxk2y#lqU81gk_5}WSn5cGLL<$t8OfB&H5h@ZAgg9 z0FMD+2LWA^rVQ9c`z)`@8O6mh%|4=REd5mCrco$R6_ zj-`r4uu$3xtvZ-o`UOoIk`xz5!L{Jv$70pN#aUMeS3wZ`0C9D3Qgo3L|Cbb6#CUMr zk9YSTckck9US_J<5dl=qGLo^Vn8~h+U9afD7=|zaL1LyJPc5e5Ilk`UE-VLyD?VzL0TQ;k?CJEmv9dp8SP@oVJqUI?YkUu!J}g5Fw+A63Va; zrd1=wM3VNS9{v%>pCFe^t`ZnI7Epl-$?=2#!S8O({Pcg6n-quwoiDciF%ER?0*#t& ze;?a+;{@OcW@4-Q(Te?Y;ebrrF;QgST?69(72a000ekX;fHr zSWQeiV{fyG0zCpGFga#3V`O7uEn_xiGc7bRH#IF`G&DFZWMwxuFkvw@WHn?slj;N? zBs4KIVK-$nW-T>1V`D8eVP-ikIWsdhEoCt|Ib%3DGG$>hW|J)iCnPyHG&wmjGGr|| zF*Y_WG%#W|EjTncIW0IiW-wx9H8Nr|VK1d ze+eBHCJD-4i0c3V193@2K~#9!?cK3!8c`ev@b9$_)!|Ms5D=n}(k4U5(7Cjh7SE}< zI%aPEhqi-5{tYu{a0t&WCn>e1a|@)N295JEr*0RZqPBuYB-P1BUNT?7E+b9r1`{DEy3;ku2$MF{mae{^ka zP3!TuX<6E`lgSiZw}E%>KcHIOLNb|BdLCW}gcSBg$O34_0ipfRcK>u66K* zZa4M?P`VK7_j|DIB3={<_}OZq-EK!ZXx;gfd=UoT13b?&T(^O&No41fYDyKCS%N6kug#1;FqXDfN0C4;L4aNZiN2)r+!LtD#gX8J1;*x`*uN z4_g*h=yn6=$EE<=+uN6ue>}{mW)o-q9zK8h3eWS5QmF(0=yW=v3gG9DI@|`$k4*u_ zJ<<0EHh%E`PmYg`+n67V0(hQh2qCn+3z}wrZ1w;h-Oo|vhh8Cb7Zypx@qaTX`_^V>ZfBm5XAp|Dfqpvf6 zTCO!_-PFf!nx-t59b__ds8+W|K53;=x%_#NpmgVJFF-n-zOwq=UkN!sKaYGa4`6hU zzTZo)Vx0U@J^EqtwHKh%>0Frr&-0AEk4<@get}l&*X1M+W=^b002ovPDHLkV1ip~4krKr From 4c630d0b17f8d39c4bf1e8f4888e0d15d81eec28 Mon Sep 17 00:00:00 2001 From: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Date: Fri, 13 Oct 2023 18:08:00 -0500 Subject: [PATCH 076/245] Radiation collector sprite update (#20956) --- .../EntitySystems/RadiationCollectorSystem.cs | 62 +++++++++++++++--- .../SharedRadiationCollectorComponent.cs | 8 ++- .../power/components/radiation-collector.ftl | 5 +- .../Generation/Singularity/collector.yml | 13 +++- .../Singularity/collector.rsi/ca-o0.png | Bin 0 -> 1477 bytes .../Singularity/collector.rsi/ca-o1.png | Bin 0 -> 1415 bytes .../Singularity/collector.rsi/ca-o2.png | Bin 0 -> 1383 bytes .../Singularity/collector.rsi/ca-o3.png | Bin 0 -> 1421 bytes .../Singularity/collector.rsi/ca-tank.png | Bin 0 -> 2071 bytes .../Singularity/collector.rsi/ca_active.png | Bin 1021 -> 10749 bytes .../Singularity/collector.rsi/ca_deactive.png | Bin 986 -> 10791 bytes .../Singularity/collector.rsi/ca_off.png | Bin 563 -> 2755 bytes .../Singularity/collector.rsi/ca_on.png | Bin 712 -> 3212 bytes .../Singularity/collector.rsi/meta.json | 23 ++++++- 14 files changed, 93 insertions(+), 18 deletions(-) create mode 100644 Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o0.png create mode 100644 Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o1.png create mode 100644 Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o2.png create mode 100644 Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o3.png create mode 100644 Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-tank.png diff --git a/Content.Server/Singularity/EntitySystems/RadiationCollectorSystem.cs b/Content.Server/Singularity/EntitySystems/RadiationCollectorSystem.cs index 19d9b98f4abbbf..27219bb1837c6f 100644 --- a/Content.Server/Singularity/EntitySystems/RadiationCollectorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/RadiationCollectorSystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Examine; using Content.Server.Atmos; using System.Diagnostics.CodeAnalysis; +using Content.Shared.Atmos; namespace Content.Server.Singularity.EntitySystems; @@ -27,6 +28,9 @@ public override void Initialize() SubscribeLocalEvent(OnRadiation); SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnAnalyzed); + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnTankChanged); + SubscribeLocalEvent(OnTankChanged); } private bool TryGetLoadedGasTank(EntityUid uid, [NotNullWhen(true)] out GasTankComponent? gasTankComponent) @@ -43,6 +47,18 @@ private bool TryGetLoadedGasTank(EntityUid uid, [NotNullWhen(true)] out GasTankC return true; } + private void OnMapInit(EntityUid uid, RadiationCollectorComponent component, MapInitEvent args) + { + TryGetLoadedGasTank(uid, out var gasTank); + UpdateTankAppearance(uid, component, gasTank); + } + + private void OnTankChanged(EntityUid uid, RadiationCollectorComponent component, ContainerModifiedMessage args) + { + TryGetLoadedGasTank(uid, out var gasTank); + UpdateTankAppearance(uid, component, gasTank); + } + private void OnInteractHand(EntityUid uid, RadiationCollectorComponent component, InteractHandEvent args) { var curTime = _gameTiming.CurTime; @@ -97,22 +113,20 @@ private void OnRadiation(EntityUid uid, RadiationCollectorComponent component, O { batteryComponent.CurrentCharge += charge; } + + // Update appearance + UpdatePressureIndicatorAppearance(uid, component, gasTankComponent); } private void OnExamined(EntityUid uid, RadiationCollectorComponent component, ExaminedEvent args) { - if (!TryGetLoadedGasTank(uid, out var gasTankComponent)) + if (!TryGetLoadedGasTank(uid, out var gasTank)) { args.PushMarkup(Loc.GetString("power-radiation-collector-gas-tank-missing")); return; } args.PushMarkup(Loc.GetString("power-radiation-collector-gas-tank-present")); - - if (gasTankComponent.IsLowPressure) - { - args.PushMarkup(Loc.GetString("power-radiation-collector-gas-tank-low-pressure")); - } } private void OnAnalyzed(EntityUid uid, RadiationCollectorComponent component, GasAnalyzerScanEvent args) @@ -133,7 +147,7 @@ public void ToggleCollector(EntityUid uid, EntityUid? user = null, RadiationColl public void SetCollectorEnabled(EntityUid uid, bool enabled, EntityUid? user = null, RadiationCollectorComponent? component = null) { - if (!Resolve(uid, ref component)) + if (!Resolve(uid, ref component, false)) return; component.Enabled = enabled; @@ -146,15 +160,43 @@ public void SetCollectorEnabled(EntityUid uid, bool enabled, EntityUid? user = n } // Update appearance - UpdateAppearance(uid, component); + UpdateMachineAppearance(uid, component); } - private void UpdateAppearance(EntityUid uid, RadiationCollectorComponent? component, AppearanceComponent? appearance = null) + private void UpdateMachineAppearance(EntityUid uid, RadiationCollectorComponent component, AppearanceComponent? appearance = null) { - if (!Resolve(uid, ref component, ref appearance)) + if (!Resolve(uid, ref appearance)) return; var state = component.Enabled ? RadiationCollectorVisualState.Active : RadiationCollectorVisualState.Deactive; _appearance.SetData(uid, RadiationCollectorVisuals.VisualState, state, appearance); } + + private void UpdatePressureIndicatorAppearance(EntityUid uid, RadiationCollectorComponent component, GasTankComponent? gasTank = null, AppearanceComponent? appearance = null) + { + if (!Resolve(uid, ref appearance, false)) + return; + + if (gasTank == null || gasTank.Air.Pressure < 10) + _appearance.SetData(uid, RadiationCollectorVisuals.PressureState, 0, appearance); + + else if (gasTank.Air.Pressure < Atmospherics.OneAtmosphere) + _appearance.SetData(uid, RadiationCollectorVisuals.PressureState, 1, appearance); + + else if (gasTank.Air.Pressure < 3f * Atmospherics.OneAtmosphere) + _appearance.SetData(uid, RadiationCollectorVisuals.PressureState, 2, appearance); + + else + _appearance.SetData(uid, RadiationCollectorVisuals.PressureState, 3, appearance); + } + + private void UpdateTankAppearance(EntityUid uid, RadiationCollectorComponent component, GasTankComponent? gasTank = null, AppearanceComponent? appearance = null) + { + if (!Resolve(uid, ref appearance, false)) + return; + + _appearance.SetData(uid, RadiationCollectorVisuals.TankInserted, gasTank != null, appearance); + + UpdatePressureIndicatorAppearance(uid, component, gasTank, appearance); + } } diff --git a/Content.Shared/Singularity/Components/SharedRadiationCollectorComponent.cs b/Content.Shared/Singularity/Components/SharedRadiationCollectorComponent.cs index 44cdea4fb69171..0b5fbea6489076 100644 --- a/Content.Shared/Singularity/Components/SharedRadiationCollectorComponent.cs +++ b/Content.Shared/Singularity/Components/SharedRadiationCollectorComponent.cs @@ -1,16 +1,18 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Singularity.Components { [NetSerializable, Serializable] public enum RadiationCollectorVisuals { - VisualState + VisualState, + TankInserted, + PressureState, } [NetSerializable, Serializable] public enum RadiationCollectorVisualState - { + { Active = (1<<0), Activating = (1<<1) | Active, Deactivating = (1<<1), diff --git a/Resources/Locale/en-US/power/components/radiation-collector.ftl b/Resources/Locale/en-US/power/components/radiation-collector.ftl index d68296fbeaccd6..c38050f1e0ac29 100644 --- a/Resources/Locale/en-US/power/components/radiation-collector.ftl +++ b/Resources/Locale/en-US/power/components/radiation-collector.ftl @@ -1,3 +1,2 @@ -power-radiation-collector-gas-tank-missing = [color=red]No gas tank attached.[/color] -power-radiation-collector-gas-tank-present = A gas tank is [color=darkgreen]connected[/color]. -power-radiation-collector-gas-tank-low-pressure = The gas tank [color=orange]low pressure[/color] light is on. \ No newline at end of file +power-radiation-collector-gas-tank-missing = [color=darkred]No plasma tank attached.[/color] +power-radiation-collector-gas-tank-present = A plasma tank is [color=darkgreen]connected[/color]. \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/collector.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/collector.yml index ecdc3b3fbcb5eb..d83e8b21fe1ea6 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/collector.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/collector.yml @@ -31,6 +31,18 @@ - state: ca_off map: ["enum.RadiationCollectorVisualLayers.Main"] - type: Appearance + - type: GenericVisualizer + visuals: + enum.RadiationCollectorVisuals.TankInserted: + tankInserted: + False: { state: ca-tank, visible: false } + True: { state: ca-tank, visible: true } + enum.RadiationCollectorVisuals.PressureState: + pressureLight: + 0: { state: ca-o0, shader: "unshaded" } + 1: { state: ca-o1, shader: "unshaded" } + 2: { state: ca-o2, shader: "unshaded" } + 3: { state: ca-o3, shader: "unshaded" } - type: AnimationPlayer - type: NodeContainer examinable: true @@ -44,7 +56,6 @@ - reactantPrototype: Plasma powerGenerationEfficiency: 1 reactantBreakdownRate: 0.0002 - byproductPrototype: Tritium # Note that this doesn't matter too much (see next comment) # However it does act as a cap on power receivable via the collector. - type: Battery diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o0.png b/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o0.png new file mode 100644 index 0000000000000000000000000000000000000000..5eefb01db6a9d02c26a92a0504afb413f4dd4dc9 GIT binary patch literal 1477 zcmV;$1v>hPP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-_f(5ex`{j-#J5y+MxOhwX3o+s!7~ zr0GnjQ)_HwgaE&XvD5nU=T3j%AXQFT%}Xuiz>#aN+%WOuI_i0)BcIpv$oCTN-{=!R z78ojll&9*bv<3n z1&EfrqK@=HC-%Uw19CaH6%50vnA&a&`JE_BANXS_j<$dh2o1ZN=p+arB%@n=Tb zdjv!jVETm>^5Q5_q!G-;6;_~t_RX7~06)e}|M658pz67Q9qU)HPlozt7=hGPg=DVDYA7n!-MaVM+d%n@Jam*{!$%!$@|1}- zG0U{+v(C0CEp&>Nm#(sG`KqgJ)Y_Jvx9+lS`>wmauy(Wh)%Xe4=w^*irozr%Sc5j1 zJzP+<6AjM57-s_G77RoO3(gLwoH>{a&W;*gP8msRaFZqlW1uiEV%_w@-79mS;w`Cv ziZ}idb1A6%9n2+A_cd=Hur}j6H%`W`w=gh01aBYKm$$^;;-l97uKW)=TD7Ac?~Tf4 zptaA=Uz=|-+oRX$cRSQY+tS^}UU3J0`m)WvE{MXR8z{eBlACOhx#wCsPh*+BN;zY$ zCg}I=OyKywOg}RCto+~6zs(VfZZ9H=;%J5%8LnqlRW&rXDJZ?fI`_^?Vxf}l-3b*q z^6rK{;d`J3%)Cudc5Cz<7FnY5$m)duUC}i}@Sjci)mHqBc+BD_^_OJ&)s6q8BVdU4 zHT?yjTG!~IK3Nt300D++LqkwWLqi~Na&Km7Y-Iodc$|HaJxIe)6opSyMJX)~b`WvM zP{qNbsEDIfu?QAQTcK44lb8NMlZGV4#ZhoAIQX+zb#QUk)xlK|1b;wWU7QqMq{RD@ zLW>wLJl@B7_Z;544-gs^rkY(7fT~$WDjpNFxmB^}6#<0c!#GAIX6lLbVg{b|bx)mC zcTt|@-S=mOl)T9RpGZ8%bi*RvAfDN@bk6(4VOEk9;&b9LgDyz?$aUG}H_ki6e@tQNECMS>e3JS*_Gq>z@3D!MwJT<~pq*#Ib|~k`N)I zhB7L!5T#us#YBqEV;=rN$DbsZOs+B*ITlcb3d!+<|H1FsnuV!JHz^ncx?gPjV;Jb! z1)6o+{yw(t<_X|`2ClTWzuEw1KS{5*wa5|Bw+&oew>5bWxZD8-o^;8O9LY~hC=`JA zGy0|+(0>aA*4(+Z&T;wxWN22)H^9LmFjA!Kb&q%VcFyhJp4R++0H*kIyuMxHF8}}l z24YJ`L;(K){{a7>y{D4^000SaNLh0L01mb60s$mh z(?A#i001>fL_t(&-tE`14FDhv1Hp*>cXk>EK%#=&NuI#fR{;RPvF!a|xf1{YfU87K f9;{?J3@}*(yT}FqG&W=c00000NkvXXu0mjfZ-2WV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o1.png b/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o1.png new file mode 100644 index 0000000000000000000000000000000000000000..1902bbd8b96f0cc2ef2b28c27b2314a8cb4c3697 GIT binary patch literal 1415 zcmV;21$g?2P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHlH@21MgLjFECERf!E$&;^bUIYbHQX*W>xj0 zy60;mP1wQ$B%y<`?Z)?S)BS^kJ+TXFDdreGj*vsQsxcQ*^tas_Oa5{!g!_A;9&&ykX3=(?2^c0SvJg!R2$sR+kC)9R2 z?oiGd$=fk@jm5otR0Knoy26n#4)fm|6Y5Sd@e^X?{XPWj!^luf%Nm_?-V~cmU~3}+)(sp>SL1U>}k$%&8~!q zjK;H~yt`#*jX}qXl*=9#Q4FV|Zo6cZ{H69K?gYZ2T+J5u)*C@erCv;_kF#!K@aX)MPN^x_x zl_K)#o-4$~Yl$L^MQ&Zu3qWWdZn_hED+j-SSU*^*AgDXd2@@>7UM8y2+uD-NScJ`m%^^VQGu<3{so%KRcfeOW3`%UuBBo5w9vH0W-YbcO6M*e z+eDAudg{5CL2h8D7-8s$!$ul;l!>)AWrnFUPMc}wS?<&h)eq$h)aX#-O=|VCJ2hyX z+06v4?L-$d5aU1~Zi~R$!4@;0CQ7BipME~ktjb+K`s7BL_UgIFis*}akbEpATJ zZ*k*ak#h^(e?iUx-A8VpQ0wbG*EX^1DO@@Af~ODdBNfM~te0B(Tlq5dGW0U^GW0U^ zGV~^AXoYKQbKqlYj5%cP55HOQsjVV&)b%BcuaRg$3BP|OT9dS@>(A-S(*4;$ z8acyx&YkdLwHeLXv^xC?GO_h$vkY5zVa8MjFvjaeK300D++LqkwWLqi~Na&Km7Y-Iodc$|HaJxIe)6opSyMJX)~ zb`WvMP{qNbsEDIfu?QAQTcK44lb8NMlZGV4#ZhoAIQX+zb#QUk)xlK|1b;wWU7QqM zq{RD@LW>wLJl@B7_Z;544-gs^rkY(7fT~$WDjpNFxmB^}6#<0c!#GAIX6lLbVg{b| zbx)mCcTt|@-S=mOl)T9RpGZ8%bi*RvAfDN@bk6(4VOEk9;&b9LgDyz?$aUG}H_ki6e@tQNECMS>e3JS*_Gq>z@3D!MwJT<~pq*#Ib|~ zk`N)IhB7L!5T#us#YBqEV;=rN$DbsZOs+B*ITlcb3d!+<|H1FsnuV!JHz^ncx?gPj zV;Jb!1)6o+{yw(t<_X|`2ClTWzuEw1KS{5*wa5|Bw+&oew>5bWxZD8-o^;8O9LY~h zC=`JAGy0|+(0>aA*4(+Z&T;wxWN22)H^9LmFjA!Kb&q%VcFyhJp4R++0H*kIyuMxH zF8}}l24YJ`L;(K){{a7>y{D4^000SaNLh0L01mb6 z0s zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=H2lH@21h4-9dj({YD#BunI=o`%O=V3duGOMa* zs=I43i!@<_g)HRv0d|;w|5)KK92{c|NzHS~8SR)#DqPXKGpddJ_583h&jwx88}*^|H%5E%T)j8lQHMelGqY@x#D!&xoHpO1*{pDDqmv*P7?s z)s&%VzGhSmH+A+iaBPrVj>j^J;Z(HkC2>gs zfo)>sVZ%ombyAqvDQ22F^R(%+%(^hwmaMdNrPS@llsqWYoy0yVm*@j+_)*_|4! z!R!`-_I9G18HjNr5VuWW?_ir*bV`Xgxy>w=y~`;hN!@J1piK-2(w0;G81$qT~1$qVg z{{&hMUxvEe*3yn&+tO{#H1=1awACmqk;!rUbDI<2iQmjB{PyeIQgl8N#Xn?>DuP^h z3)!|^k4DHhudnACzDMd;pzjK_FzZVA2T{7WL?rb=O8@`?hG|1XP)S2WAaHVTW@&6? z004NLeUUv#!%!53Pg6xHEe>`NamY}`!J?>$qg1g77D`*8RR@!o{y~$5B*n#1a4k6a zvsiU-an{wrRS*P!KwMp%6kVjm`;tP77%x2D$9eZ0-n$PF8WpCRT@!$+Sw<=z6SKKh zvF8;5gy6$CMkQwIiS%Lyp7nK4om6*Gp5@*5XN8o!$pD{7JjZmyBHkdL*|c=d`@~^Z zk`&@|;xU6RNc_lk+2uFRMTZ5R88$MhdEzj!SnOcAgIUQ?iKmGpimFk*kabz%yv13q z)L84D{Dr~1wvy&Lts%s*ganchA)|&eDzFfxT_eRriq2ym{z1o|B$rICG8j1)P=yM~ z@q_=t@7bD#sYy2}7z4UrZ2Myv=-CCDb=&?vw(aH#;C}|Lw6?$60A@c)ueY_x5zw~{ zTwJ#`c@MbU0S2CQ$&eh$PfI8ifcG={rX0|J3k25OxwX!5`T%5TR?9cQ!67hGr0jK% zclUPA?cbi({C)tY_;S3yUE(hQ000JJOGiWi{{a60|De66lK=n!32;bRa{vGi!T^@R9M69(4i3kFbo4RU-zFk)SaQU pk@%BO004krOw(!l+8yg)y$c`T1?x#(Myvn;002ovPDHLkV1h9klt2Ig literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o3.png b/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-o3.png new file mode 100644 index 0000000000000000000000000000000000000000..3522af81e5c10f2a19cf15e3bd4f3d47b42b13e1 GIT binary patch literal 1421 zcmV;81# zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-_tlH4c^{m&_K1SBCOj)VEA+8gBfd0=->_sr~W zCdr>vwJ9SkK$71BK^Wivnc*8Aj+8@E^IUR{cv4A)D;gfpr|gcaPvKHNKC zHVUMipH{E&6?%P}aPvXOvp)FM!+sgMI&KDKd0yW7W027Esi$-qD&uVA;`SKoafRBh zfjgAz%@pl2cFx6jcvK_bG`KP4$FLDgvO^Gq@RPoA%1Wy_lWqpqt=_Lk08(4ea>H? z=4(a8a6@O!!N3EM%bu1|46mYXyA%|UH8xP*V~Yn$qe2YyXP`u#Doq+&Hfjhl@nC~w zZY*2pVqCa^Ba*ZVO*Sdg#lc+T5kOfIzQ;n_Z`uADIXrj5P$n1y;s0L3e|3JPggM)S zh@#)ILR`F-D8g9Gts0|12+fN(-2mUpMSpx)KUk_@P&dquAFS~>O&m&ZYfCoIf^iCY zZXpWRF9U!Gz7@fcfB|eEQCho**@%FngP@AYSrQ*$fK<67NKPV|gR%4SjX6epEGuVT zYUCymp_0YGO_2(+Qc|oROO7>ERWzw;R#OjJv}VaEYtGs7N^;f2lBs1gb1PO|Jh^&y zbNAx4a1rD{ExB0nQcA5HDjZeVsu*9PIrxwx9eU)$4nN9K8ivcj-tI zJ$LKgORs~%K&BXJ=*Yu{k231STAMP{)S0JEpJmoNYZt2@$`@Fpi#6U%t#Ni|4ccIK zGeIkz=;92FaUw8oi-DEF7H82ZC0@)e&SF_vP8mV!;wE%jjDf;5h;`DPyEo>3inpNt zQ@rv2F&7qfe}cIH>OS)J32S|wb8Rzr?!tv>6zo3q53hl}u0yTd)TbI4q&7xzpEt*aiT;ntb@YWG^Eq)tgmXL6)^+*$B}lkq`@_ljSY zpBkcxvk2~29H4YFfA|+=@L!zx zGW2&F!oHZe*8Bj?$-5dWh-n}I00D++LqkwWLqi~Na&Km7Y-Iodc$|HaJxIe)6opSy zMJX)~b`WvMP{qNbsEDIfu?QAQTcK44lb8NMlZGV4#ZhoAIQX+zb#QUk)xlK|1b;wW zU7QqMq{RD@LW>wLJl@B7_Z;544-gs^rkY(7fT~$WDjpNFxmB^}6#<0c!#GAIX6lLb zVg{b|bx)mCcTt|@-S=mOl)T9RpGZ8%bi*RvAfDN@bk6(4VOEk9;&b9LgDyz?$aUG} zH_ki6e@tQNECMS>e3JS*_Gq>z@3D!MwJT<~pq* z#Ib|~k`N)IhB7L!5T#us#YBqEV;=rN$DbsZOs+B*ITlcb3d!+<|H1FsnuV!JHz^nc zx?gPjV;Jb!1)6o+{yw(t<_X|`2ClTWzuEw1KS{5*wa5|Bw+&oew>5bWxZD8-o^;8O z9LY~hC=`JAGy0|+(0>aA*4(+Z&T;wxWN22)H^9LmFjA!Kb&q%VcFyhJp4R++0H*kI zyuMxHF8}}l24YJ`L;(K){{a7>y{D4^000SaNLh0L01mb60XZV2Y3Gjs001dTL_t(o!|l+a5dbg@12JDg_TSi@p|p|slTQEu;2WK$)7R`c b2dsAiJzoS1;lkUK00000NkvXXu0mjf7g(FY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-tank.png b/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca-tank.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5049f7b4ee366690c43580e5345c5caa549154 GIT binary patch literal 2071 zcmV+y2 zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|cmgFW3{bva<{=C3;AA2h_L?p)59P5amp65sFhku#4p!exuIk6`qgu%n9u$E_@2V^%XoNB zFoqJ^bUkXjrqI=?@FzuE1YV*C380Tx8@~x<@t5d4!dsF*u z>bM1uDffS&sJF7~T|9^P16hI66fBgOSE3Zp-7cB5|5Ivv{M?zZ(Uv5|fF>rrEdd}e zpZ92Ed=JnI$d6w5i2k$p0eo)vc=~{4xiLcLyAvee2me6)ZsGK_h+ikXTtL2j&i(H` z&3#>8*Kz@(<@Tr;9_Sn;K06>!=d}{I$^u_8wEL>KEVej6`HUlWT!Shx(Dy)@CN*+e zryVq4V&=t)mU(bGW0sUF4-i8s?~9x@)ijfVxxp)d(46>b3!QcAS#OYG7q!kOCp(H*azPeq1;G@tyy`Rl%Sfm<=D;V!u>$ zp*P=3hvx)2L3@P|1)aA7K!mjg#!vzS2%sdiqlj6FfTMw+2FsCsxPt)_;Rz!-r&Ks7 z8}GI8j?$53;lg_uxd}u_DoMdjO$}t_Ebt%A1|MpYB#TH96$?_Ol~i((Qi_(H-oC@y-22=(j9pQOLETtkTBQcLl7W-o7ZTHq4UXdye zCBg?q2*QJ(fGyfcqBufr@jw;TPu-CarsDLeD2`BeINnMiw4kCvSD~1O+8m@CUp@Hx z#+Q1Mg&OM3yAUFmdnq}}tZnahF9hExpYp2k>RxTYLR9>MBe5pJ8O`|$S&`LI`yoae zN<8Un`uS3nQAKM5{iwGdK2xA!R78Ly#C(SsP}o7X<1ODAz;=s@3;gg=jQ}0p1D3lq zU$U3vw{pj-3+#vJi`pLYF8$zL2_2M*ILe^(8*@kODr936ME3@I2e;3BIS^8kw7M0004oX+uL$Nkc;*aB^>EX>4Tx0C=2zkv&MmP!xqv zQ$;B)4t5Z6$WX<>qNs?YRIvyaN?V~-2a}inL6e3g#l=x@EjakISaoo5*44pP5Cnff zTwRt63RCiIH<=yvZg_OL>0G~)a$8^IY-XNaYv~yF6ykH@F@r8h{K$3L z|nWrS;tqs!_g>by?xO#aXS?SnHnrg~7bGlIA+C zA;htS1dga5(r*_wr^NjE7N z1G-;q`(qgB*#(+)+x|Yb?dA#Ke+I6!w!hi{WoO54hX`2A*`u zkQ~WRODGh8_cQvY9MFFY1lHWSwa#(+0Ay%Z%QwKmAuv*;>~)WK_jb;x7OI00v@9M??Vs0RI60puMM)00009a7bBm000ic000ic0Tn1pfB*mh2XskI zMF-~!4FNI<>LJGj0002qNklRAJ9WdgONKa1sPe}93 zx$_YE>-qiOP!qjqM$bl!O3Q2dK!3Gcf2d zFz7Jc#H~|Doq^#Xf*bdZtN_670DNFNYbk_rlYxPO;T1zYo=~W-tbnr{+dHV^fR`^` z!PzffA=sj8FxBF+l%NCdJbuZ*aOEb}G!Oy}WF3|N41O0488&a*M*TFvz`($88`n!tJGYHuUxKBA5*+_5COq1q=)f3;@!OI}V_ia-RSI002ovPDHLkV1f(9 B zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3>vavV93tpDQ_a|G{?76A>jUp=xbgM4sjpXjeVxdCocR6;y0U&>pBKq-{~UL( zm6*0)OK!D%Ug~(AXug+RfBhdnmi7G5-_4f;1uLz@g@X4xxM1)1`m7-6{}8&4-|t@U z<7emZ+1wxRm0*xBxA*>O?PmjhG4lI2^SkwX|K9k%zupmkv*pW;hF`vY!KL4hhmY&~ z&le6KEAn4osLO{xZs+y?Ijf$tpS$ZZW6}JIsB3KZJ`Haim^|E%WxfjkCw?#YtMOHB zw-c8yJMG|Wy5>CAKgLD3TzALq`*XU<5~JU~@YDN=TXd|3;+vm1#)YUacYFygtWfdX z^xNRj82rat+`VqQ*PE_#<>h#*cbp7||NLeC_Tqo}GUrU0$jO-faWU)iiffi3&*?kw z!XfUw{FbhP-(N5H+fRW-sN%tN&0M*`ZpU+qk=(D?3fIqp_a%NlDdbF9uM=P*uANwn z3wXe07m~})7VnF5*soC}aBT~qr z;F}gY&WbS+KP6UTsHc!(N-3w3s!1*N9CFMl=UlQtu9r|^NhOz3YH6j{P-9Is*HUY3 zwKv}a7?@garPbD2@7{DS)Hzq@{hcGjk1*m$BabrbXroWUXU3Uko@LhAW?z1V1x&2G z%BriazMa`1#g04eyvwe;?S6>06HYwoEwWRh>pa`G51jNAEi+=uUedG25N z&7}IT{O143b4ITF|KT}<>;ClHH(pzU;CVgvWT9+o1KG#xyLKa-IFSply!YCxueLq6 zRp+dc|0-A#?Vk2@E`Ipn^y92l4wvQATYA4AI5V|!*3su@ zQLQ01<)Zz7>vDfpdW?1n~zV>}Tyj?n5XAH;Xq$6dGqMra`Io~dZPq7;FX*uu3 zd|8TW?Olwu_fqMe{Ypk<49Vnt4nsyiOCKN9h zKUV0gW+{B3bZXRpFdZ|`CO^Y*lOz4ke;uD$9eizF~}B$8#56S>a8)S$2==nBOX9nAF_` zyEqB+c>QubrH=IdICKQwT*`)FyTLOq>#Bp8W?jdJ12qILzB^G`<9e}?3H_quDiiRh zKni2#9Er?3HnB*UC8qBf=H9BxTO}Mg0c`eS#Icq4jnz5-a*Mdgcr6@QE`iWao`jn_ zBbG4EY^#j`p{VoVN|!?U!&Q@b!(L*uByT9c}tpZJEG3qSra=y&$w(va$Y-xH=;<=hIzJ;#u#k71U) zdxcGKS1Pp>#&#BPezOMa*miR>_qdl1aQ6O>9#E{SCXY(FIMw6>@9Ws@EMMV?7ix1$6TaB%glu*qeC$pB zWdf2I0Od+;*QtGC%&9Ooiv5joP9Sf|KVKn^7$#vS-;2_d;N1m&PgwM3^MDD|1?h`B zKsC2OI}=CEO?!>q3n0uI1~@>$1yJ0qj!+4l=O+1xp%8*OtWFpS?BWCh#th3F;EwYX zIYc4%m1-AnL>4&WpU6Ff(hdgmc_hxlV@S^0wF*!!Z}9{WW0~wO67SZ_ZtzyFGZjso zW_cFj01Lt(4rJ9uB4SBPE)hLH6eDhTF2m{+}A=r zV@@rkkS1X`u9Zmzius|`Vm>;oFaJveoWm0wR3jdeCdD&=OScaTuIi zsjfrac|+p`=OH@5Qjpf>gn89N?tvSLXeee@=nH58d%4W5Noge56xs+EY*fos%sTfl z%hUFFQmQPDtK`{I<2IamS#A;q5gq19FE+_FQ4|Nw_HdCd8rS1Pia)>fdf`n*hfst? zZIl+_8;cb#)~B3X{Uls>K8*w&aJn_2ewd%+ByYGQ^YfB#Ol}pqOTcbTlT$v_!29KU z#PIs_>U}M#D$F?p90bp8J`6X_?dC6R@fu%802#B&q@|{Lv<#I?YjDf5!!0D8Jm=6jKxX8MU zt)NEY9swzODceRuz9?9RZ4rY4!=Kh96$~Th+8$d#iU9zVyL2_YrbCM{wD@A{a|0A@ z3BMO5yd^8N+BW3?HWA)}y=!D5S?F2}wSiawOeZUb&1`TT@O0QXLp2~#tppoe@H1Ku zuY|B;+}aT2`XqA4qU|6v@5U=T66CLGCmmzrrL) z!9Fs^5GXz#H^^`hwq!f`)a)R1sCXVEO+EZQeLZ}*nSO?E1Oz4BIV=SWxl3;dHLA`; zvIOX)u+9hA_+=Omzj(0=mJGizZ-ODN_?cp;$q&f@g^--~C14B2yDJ5p%;Mfi&{QeIwgMfT7T8zlduu}7mf$8i z+FxP_0fWxUtckF!t3xY*DmBx5AKs(8OarI8g+g4%|JA68@*lCh<)a0x2n*4+v%BeJ zzRRcoo@ud}f6g?C*G^rl--Y-S!$j~s5kVaOeChSd*YN%b?pFwZyk!0i{qMs2Cnx+$ za`Rua{HG*0yz-cU3UolrhGk};%>*<@=?1%844G1J;4d-3hk=vGKo1#f;pc_ z&ckr3sJ`n{VC_-IS?#GnwHg(MW@DWN7CB(NGc`|)t5TcU)J{kFZmDrZ99)1ut;6gH zKIDh3FR3HN*rfr^!*2#Mfpzj3_=s^CYoWq@@R2G-85@#wUZl$9%i!TRu=|#YkMR(A zqys5C+Qa(2YbzUceBQDguG@h;K2QKLH^tg4+F4u~$`0uxA#1IvQI;oFC}LXb7Gx-r z_2vv&eG&I+er$E12KUnT4a~Z0M>CCbIpgh9xFw4LQk))+#qZtbybZSml0XamP@@Pu z3lOs9-0{d)cM3WbCnb2{Xror@2j!d+7hHqs+au9HAvJ~Ka!^{3LZ|LB6f|YWy^Tjk zK$@q77kAy@dmhSPQ4`Xt2Tke4r8+J)s5y1EVYF2oGNgjDD57v>zbjyq6XXePaXXKG zJ?**;J=f+}Nt9D$$w>x&RiNA*30w0d+(GWfofM~iPeLXVyjc5)Cu+Q@{<6@8*bHNSK08a`{3u9BBf*N!EG1T3o$pjAZ8{=% zfJ2NQDT1g9FfQ?qvRCZVc15HVvJOuzqQ}ciRFaYs-D%GNWn|S^r9@f*XDAl`ltju=CA~IX6d(a% z=YZN6qz%;@P!kUE>A5s;l31xz19zZ0k-CUZ(tU4EM&3%B653A*E9HUOrQeAO_^?1{ zKE0dKUlJb=5#a0dQIs~A9)h}Zs7RFXQb!AzayRowcTTP4MLxz2x0}Afb5S8`BqSM% z7=_&`Ja&Dx$Z?j{zDQWmLp5&%U)?p53LV>PSokjX7|;ScKb!wpRoI|l_Tx8jF$;kD z4ckCt2{fe9D-viirE zEM&?^f!4GQ3rywDRgekLH9&upl`S>#vKT@IbMQ?I6%7RHNMzL;DN7n7?33cfo~!V? z3f%LdKR?5XM%sF{*{g2Iw5h02FPrmpuOQVX3FtP@6QR?UTlT~{e-*wP*{XdKw8>TB ze2f!_E8amV2f#{hsOcgwgnOc-GIxqF9~Cm@P=pJKhK=yNT7t=*h2gTOR=m(Qf_mMF zBDF!tv_1OOy9t%8<>FAugOq-t$$TIm$Lmb+68s4ap$*rdvTV%ji#YuO0CPX2@W!E_ z6?m?|r1TtL4T!^PQsbSm+Z8hf1S$=bkZLhIN013F4>r>d5vL%{7vM+@d1@pThU|CLV%`ViAwh}yx{DUv zJvns1L(k17JnyOYGp0m6M0Lg-av%lm?Mluzj2zoOnmYZpH>xJVtzUQx;8hy{>Dn$M zAPZD_Z+TSThflS+QAhUXch}9}qtq(Q4w8X72|@uhsGFD(1&XPXvcaw)$NwaeAh^JZ`c83Vh!TLX?q%j z$EXr>d$K#hV$p`&-Y~ycOtnEM;e9vAsux{`#=&oAa#k%}HEqC_2_BI%eivS#sBmk? z&NUQV2r)ie=cYV}iDjiH;k&4H%V+L%r#d^4r41h{UF=P>JQNb}-87g{@Dmi`e2xpY zhU7g(9a-Nq>^;J|A&484E7m2={dA!Wc#W1kZE^>xnt=psS0Dlu*?BITWfoSO&Saw5R1%sEDwt0t*zur=VyxyV^Y10)rd7BnnR~SwI0v zDUG@n%Z;>;0%=1+inNzR&VrA=#V9%kCOaV{xaWP$I&B2TTam%TB-&nzdTe6vLa)Bn z5S5$X`&9N(+f&=bPO^rYF`$>?63BxJV1x`LlrW6d=44S1x}gk<&?x6@HO;{%Cdt69 z^`RLa3K7UA^#$kLI` z7k;SA66ZdFxnyTr_#Hsvf+cm$pV>7bVYxbBQ}aebqH=kw!5a`fJP)5zuqI8jpp?B5 z5V{E1j&dS+Q5XC(buQsr(;N)NTTt2ySa%@o0o9^LDGW+DVl{D6b4g9Lk)qq~A;b%L z5df&9DHW@N9zq6@k@vjKP=^VjnQQJhRlVIShfi=vZ0vll0c!~_qJFdodchF9Q#g6S zNK&^Nk&T4NWv8^SmQgyk3?HwMbhPK#+O!r=bsF=LPCL>BT(j9%ffOSmZJ!kZ3GHrq zQCCTS?dffGc~~-Z6a;}Pq&t*El!AB^4L&-}w;u-|pdaEV3F-nJ%nhtZc4?E3`iG0f zU@jdC>f`TX_G_Q9U$#tL?TF_9AcOTJB*k*uI1oYFM?>wY0oFGGT>+&sDQenZt;0}2 zr?gyQK?_@Ei(k7BY1) zs62Fui*Ya1dc5+!*zlk3&Afo%b#K}qp(eL@@ds%io;{G(`fD!$E!ti?k%D$<;7c2f zs+o^>hkw3kd3>V9-c`Ph`NfuBuBYxw8N#FY1>cu@U5x9$FE?I#?$`BRSNnA>^IYs- z-P{1j#Uv1edMl_R#Y7r-%xlPm1pV1kr<9eW2`+21TE=(StE(q6`gB&4UgR#ccGX^- znsXcOyTu?+RElT=OA`|f(p(O7q>WNp^`m`oD)f^2-S6CnihX-`+(3v%NkV6Ll2+J4 z*rg704mQFqAQsB?c1LA8_e4fvr-TlRFo)80+(G2qZK(Ab5Pl6JPwB9`wCtq{l6s6> z-4T3IlL#z?x<1FN=LY;x!hjP>UAAJe(7gfA)&`a4Zi~|A!oO{Zj5|IwKlism5sF@? zemmQQ|H6}bR}~4!t_GW?d?1O>EC{?~a{Xb))Z9`Om%R%b^7i|%CPUvZuu^N_603#h zQfUOL1`v#v2+sK;+i1_aVkS&-_opUU9pM+hT8O=KX0t*3*JAEc%8%FVHB-4ev~-b^ zGM`5~XLYndZX+dw03+sv3RtOAx!|s->+TVMOC{{2%Dqod0b|)znXyrj$df&l1t3B+ zupLs|b>uV^Z^AIt$mp$Q9K^~3#T10MGeI^{wHYd3w8ek$Ip-t7Aypw5(Qx$ziB{lj zQn?otxW|H)p+-}1kQH_k%2al338Um(fZAVtsTUh_xF|C(=XbqD%WgUBO*jBBgG zSE;PTSF7OxIXJY2D681%b23SGqppkk_h)Eyn<^3K>?xu>x2*`6g=OK=(kf`qDaDv< zZj0B--IEHKSDOd$gr#|%^Il~;FUtNbvOVYM{{$rFjat8egbJXB!j%Bc-SMPLkHm)7 z^oBm#c(RnvOzBU1a}SlUZ+w;P)#L~{7Afxvz}3jvA3SBW~BDIbBrCu0XeX`xm)m>6dnJG;M*s2O-m+m2i38K}}M zL9r08%`LiBH2bwW)%ls=Fe-$aj*03)f&h*4t~Ue1DT%UI^<2|+w$F)Jdom6dhu()| zG~zR;9Nj)$ioxHfK;(;$w`ShDK(remEcxgVDO5EMz(onJXDDo&g=fG!67milXKck? z0rK!!3K%@MIIOPumIDQMSOo+nDMK}2g#PF)jC?!tRepms+>Tgab!D_AM#q^f5r<{tCWT21k9yR$+zvo46y`F*rk-^`taOB2tWz5-jWmU$ z-|4&=o-WA|w}3^8BeCA2xVdK-At`BY?oA9WJD?#{f`;@}7g_gDr1PpKQPn zBoi0mPESL}X>WI-wYZ33H7SpWH-EkB_f03r*;3uj6iL2|I{E2=a#EyvRNPkfJFxet zXAVt7xfTsV<<$lJ891FVf6=lMK(_BjVcwH4<{5=S`dUcnB&H}ggT*?{sUu*~@2OR2 z_*|O3OaktvPRCrz_A_D1`?O}n#PXf9?p>3fo?;jRMCAq-z=hdRUb#9=(rXHL*8nlU zrd=PdZszf{^w0IRwlOC`4I%cq$Pkp81gFRpUJ~_y)2g=Gd@mHlh#v7V;eMOFhJ}bS zlKXdi+iUU9LDqh|u!0PY3S%P_hz#E6G?5u8-QYcW1wQ+#8OSaxBDek2qgL^$V>@i96#1V>^rz2Ijwj5p6|13D9tw!-r`zApfzUXW{r>934 zVtMv&ob3{u&zNAj#QduDL3xr)6eDo^LD1U|0n3jXXJBqO8h9Yqf$1ax2KwF;DGYB% zsKLo0grYv->A`av4WQVQpB?4fZ6J=Q4pTIu!krb=iu!=R4niU*_$q+~4R9>C*kX{-nDD@#iM~~(422BjWt~C)8 z)NMNwz=$;R3ID+;HR?&Ir1Y0v5cRYwY)5+~nvcMD4V^HurjB7bu|@U0y@{Ip*D&`v zUxG*dv?qKpyWe`$5GW-(TM5vbsr@YeU+Q1z;Z_4f>j~4``GV((3@mP6YV}h@yyD?1 z#@}K{A!Me1TB*NB9`V5~YcMEPWi2IEgRpvtkR@%(K^WRu>Cg0CHGif8yl8C!jh<1~ zw7dE#P4g&I_=4Zm%sgpgM?|Itd`5>K;a-Tz)?A&QBYZtyg_x}>g{^CDe`p4ofS~ed zPN)Pz!FqLBi;ddLvQ!a@1Ogpq&hoh$)!IX?{jGq+VNAr=Yu5e=F@z;{Pa%pkL`}AM zZo%m7Fi|}m>a~-zf}YevXiuqg=ZA+)c9>>|BU9TnZe%^7ozxv6kY>=f0ok9Np4@Sg zwQ50F#H&KNMh`Kaw-63A;^0$%Y->QfyZ&haFwnez`ODAOAoCA%QGIE9CYs=%y%y~$ zYZf6vuK&81Ojb}(rY7Z=n-VHT+bX6|6D}$&jR3W-Ms|=U@;Gig1nSA1IL@~tF}(%@ zp21JfItX_p(_B%Q?YFv3dv(7MT#ZaxyHU8(gCt6wxYfLiE@z;b{YR<8BlN6Fy6ur@u1x3sN)sC2firQzUC%{P>Dr=dY~7N>6T zE)IKmp0-%w`c(92HK#EHOjvsn1O?K{Z$;|VD0vzIQA0qoZp}<$Zb%Bz1d&fIP87A* zGdP%XO-EtY4!d>+i07)a0z>F@L@U{{%tBCG;&XF~MvO|>4&T(-0B#dncM*zB2BTU= zM;Tj)Z_}3 zoNM|=DS9`@LvLVm8mUhG_S@Wh!0NUCOx1=F=;V;>A3_p$YrH}fwWTNC zn`ROv2#n}9m<1IrYDQ4J!OynFn)n6VENtj~gmh?1Dqb?84H0xCvU~Ym=;4UG5p(l&WuL$mYrBpQ^*ZDGrDL7#kTmc88OoKRKRZr0oX;rg9E2$kc?v9Js(^~okq1m05A+A*dbr&Za ziU?>{sUP_ck~xV{oUTV(HB(&G1U{M5B4nY$6nN)ySGSG3c6!2FLpt}_EFvo$chu0d zt#{2$xq2I_ck4`zv05W=3YXLX%_LGLHT=K?S}9m#7I-#{#;Z+)uFh!FQl6m_A0Kg} z8?{+|5sas&?mTG=)=@54Y$}C3cCAdRh}YB!_axehpP>1WvVmbhc-Wxuafb}|QY*qO zaOU>gVCfBFrTOkWVl=hs^nAWe4NGcUZ-6}#SVcR{ckWpuDctGN6Y+O)3(V2u3G?n- z3{9(=qY)YpDxfJTXIQ@IUzQG0T{{)riKGlIDjG>1})d{AsyASvV{wKVsJK(zo{S9?M`?^<;R4Y3`- zm-W;ru>#X8P!)Ja*Bl3&yMuU|)1?TF9^49$O+0Mw?&w}{Z>pSb4QOqe=~kNaNBi3m5OK&*#lfPeh@(`o2o_3Pp;ZTym;OPMh9t$sQE)9d__J7b zaBPxnq3oss#!)V9uu>WTDX2A=hGPn}eEQJ&@9_h*HayvYEcNIb`M!y?`wp4qf?&ilk+R+1Fr zbK)_BE=c^yb=l=N&P9g>o*6bWsd?fsu~_V2xr15BP>H9BBZ{g~zL0fU;k?CJt<+fS zp8SQuytb0&I;|nZv4jMY5Fw+6GAghTrClS%M2gO19{xecpCp$|t}+-o7Epx>$?=2# z!SC6cg{et5DHsE~Uu^qh80gsrnswX$KDO=V3E+PQuC%tl+5l!hNw2rH$Pv)D4P0Ee zHF*!X+yMrjbjgq$$xllt6oB_L`lcMve+vZG+_|;RaryvcXjaQNz`-FfQl#v4k9YTW z&h6ix*8F||rucHazFp!k00006VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkV znw%H_000McNliru=L!u11_fIC#(@9;1ExttK~#9!?OQ=>6G0SyDG9|x+e;*1X&aJ* z7!S6dWc6Ze5yVFP1A0jy7V)46&2JFBs8DDx-UTrcwP2HrhMa73u(>o#HZ?*Zm!!}% zr+6`GlHHx1?PhkSzWE?z-|WnOyZg z0M^7-Cn6GmJdt3+xv{>kOYg2DPj~W;zN}m#+278pS-(rm52?=3%j#((wr?0BbL>LaY7eo)O9Hhl9=}e2)z!yb zhaYVG0|FdWsxUJ<&6JR|(8I{@b#n@81&sXO{)exkD6Wv^ayi5KKSqAtGoV(hK`b6~ zM)3UyC^xR_$~QMQArJ@<+hXH4oCWRu+JlLSsZ)_39ySb*(JiL|CjK#_!qbxXw;eu) zonvC+H+>nmyZaMrwVEkWAP|80`Kvv9>D^5L0N8$*HB{a1MPcFhlE%VPspM!Zj9iXT zP5&_S6JJNG>b~i|a5y|*KRD9YdHecJZ##PLzWtRW0)D371AbT8eqH+?_=y56FW;sn zJOBRQ#-q_)00w?j0i2G1PJxA==mCnNz)EyQSDsF#b*src+gV*br!TfJ@Q;xe6Wyox z@UI_RTVDqLyKRRT9(EQ&nD})b&^|tfY$ii>qN$G`4F8<~8^4$IlB%LuJ&N4`C zF!Gy*CN3;ovHUEwvr}Le+K7c;xY$s)V>5X}M#hOIfCxQM#2e+R2VjcL6jA_8v6;M~ z%MW1P14F?%!=b33|5G~%o=JaiU#D3o+B9`K%{ts2FPriU;Q{eP0+MS(dw*W@%-w=$VLwA;(w|Nw zglI0#&lCEsCmT#B60n=g3lXo<6OYvxQm@atcUpL9RPTwjp{VWkV)5 z30+rixOK(ss%M#}O)gZlxaA!9&F-*g zAdSjF0S*I{d4KyrJE=uo0hn6=K)5rIMoVWmbaY=l?hD{q=4o>X08q9FEvf^sw}3Eb zAhtf?02#Ib*WdtU-Zrx7Q&+%L+Xlea#&Ja(c$azFv;mmD=KSa3Widwr(~?i0a6mFS zBSf4R)%0r|u$#+6Pdp}6(CeV5qJE77ME?Z!Lq&bp0e_}tgJBq8m+Mx!u1eBINS(y!ls_A*gLpXmU{ zabSCU+kbZeQK+Kt`8wJ(x0v?^1_pcwf6@COxJ8QT3;P~$?)x_wURZF;xp-WZ)S1@z zbinxd-KLDl?(e&QpKqYQ3i?b3@a}&-@tAvrKh5vSs_1*J0K+g~Vse70PcNt4(_CsU z1<)8rf+AXF&7DRqPYAz*o2KvS4r{+>Z zV>83ZK?nkM3sNaI6C0`n!i)}sZO+OH0KkjS@9*n{ ztCAApR`4?sre2Oy*K1CY`A0m$h50AzH205Up102!ShfXqMD WEExArV|*9@0000 zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3>fmL0dUWdAXW8bY84hJ$vkn!y`>Z37~cOfpI7 z-g=^>Bu^6ocw=tn@Ss`$^MAMbKm1c;b|%DJQcdaMpHM?}jo*~#{!`EY?Gw)b&p+vX zi$8yP-Gq-f94~o(`uoS+-p@B)k3YWfaSz+SzHZ9_!UGI`>$v-c(zZV)GOD;eD3!lrnKlEqw<%NuuX5>cRx#g{Y&i~6@f!BZDH@$xT z@ANr-HvSw8KZ39C#W2X1?S1@wo}Uf$#mFDOGrwBDweOAZ+WQIri!EO_8h-Qb8#ey( zy8pbt`}xNHb4Bj!8*aJq+jidn_MT<$b$8c7!lLPosAFvVaTz|?F}XiqOZ>|G7x{fY zzbe1V)1HCL=QEzpuVJfoSbrNE?6l2pyUx#H2TKgBEA!L2fm`%i@!3^3@Q=kg{Ic6+ zU;Xq2&keT>4h`OYuEn1F)^opM3wNHDk2=f6aQL5pnZLdHpZqd=51GiynC-flbveZ~ z%aG^ve?El^?0)?gkAXjaz3zX03M@hu55{BW!Uo&Z?yoWoxlx!9k6cJ0D!f12#rCS)>czCug!NPWR?J*`Ck3=#taR zU=xmrKKYDqs&644P>7)xeGDeGWP1lyfe*=2mqj5yNBql`M* zbkk2@Vy2mAnRT{h%>pS_SaGG5S6OwnO{{Id!;U-cyvwe;eR}Qn>TkdP1FzZFYwmbT zpUalr|-C9j^fsK+saZP^b~Ll~=#Ju5)iX6|-Xg2#rD_Y86Gt(`=x zpFdt?L%f)s2N2u&jPYY;Y{GBZXw2Qu1nQR1N{D{@lw00AuFl2Tr{7EPw1_@6@*dWaZIkH#iZaM{bpt@?rb9N7t7cjytR1#a;3yn)jNa z>b?6(rHmnKvFjmhD|?UG+nFMMC^7FQ ztiz&}{ckzkh?C9ZX51vhA2-)sIyUHQ>Wh{1pyKwSOjk}=(zL5Chcd{C(Ml#D>)46x zY`uGInj--go<+i@5}<3#T3rlV;H1_=&7j;;R&<*Kkhh5Ns0)RTmm+RB(c`yGEGkdp zbwe142-i0;zrhAagsm;lEtmS#pR7;kO_Kq(Qdut`qRWvoJqJby6XzqQ`3e&lFc9kBzfHdQi*ATJ@Urs$8M?d8j)fY>^Q1$U?# z6~?4ZlLixW?(J9-mowb5f>Y^_T>=2lQiPF{x64T(hM&>uYu+#fE6eA*Q(iLugH((?U-i*iYQ%%#|OO8qyeH z1>ma_-jp3rBrfuoib^o17=T2UoLcM+YGc*|q9X&IA}g%TCJNAHGj|MGWrWm_04sq| z_H~pDf5!U2mC(H@(106rUAj-!Q$uiUBy6aHk<6Q~3+#zU0UStltTl6ZuOQbP%qEKW z@yst*IPvr23JO`S@#P9XFTwoxYxueZ^KpejCb?bUA*%To5U?`0}wq^RADVt5h8*Qu1#fRt>6QK zaOl>MAabc63$;X6&j4fqu$Aw1&vj<70C3+8BrxTg1mul^@bRL)u0Hl}XCayHGvGDAX?X1-9=hT?v|yYU|vC&+fHY z-XbbYjLlb6Sx}05SWIaF2KhkS=Vpo4Qe8U|oKWVaH~@(rf@X zoa5Yv^d@@2RW`g~iXamX-g!OBwM><`wSUb^Y>LY3*zsAx<^fZPVr;#Pe1aOIW2kNk zJBTCIFhPjcOdINERHQmN!3IZ#0aAN#EJUe7WWc$MO!c@fFKiDZ>o+3actGl6ve1_2 zLV$tIROG#C%d3V_aL;xHZp=%uM|S#jP_?k_1=M@E4rYlhhkC+_bZmxD=Oq|%u6{e1 z`JRhV4qVt}{jm**?&PM>`cyoZ!oCC~-%?roNOM!us-mr@{E&p`W^yF9QNAvWec3i; z`TLD5v+?w@ED;@!$Ypa7R#L`HB(*-DBG1MdbW^7M*6h!}L)3eGxK zA^m1RAOU7|#!W7CkOl7OAwiIadU#xkkPErLDQV7q5|B_AJQ1)$@!os41r3czn(9v? zli0(x7>bXhtU+0(FxzV2U(~DJMLnq~85TEvi&{yXwF9gbMYkY2l`I1gI=7ihg8 zSOYN-T5?<4>B4`?E(oJ!q-a+kDW->2&*gvJhYd zL;`LocD9J@PsH(Y4i0}TY_56iB|dHm0zl1si8g?r1O_0NlZj7FvAFYyh-1&kP*cRE z916HXoQdmzSjZp*LU8}B6rr!m@@5PR4h0u@(Q25|o68fEZ*N zr2*RgB=~p6W?NT7YY)Hfki;~@8?W11a7=R6z3QET5L+YK#CZ9tn|LMwGi{bzOvq;=MeGVy{-xSbvHi z77BOhlS~Nq|4d3asB9ypW=~7bRiDZ?@!!STtEOoLJoq?cL9Zr`91b2il6@RWp5)i;B+L$jX^rDB+ za5eBSsvsXcbm>av^h)KLT3hWl#j&G2e*P5D8-dD=zLhGnqBW!V+pKFs3jOrlvaS1x z+eo}0X%|YkHCDm~z$56HVZX)T2;?I{szPB2uPLw2*Z(YC5g`8~#S)y@15L4_dAKxx zRx;)KHho<<_nAs~GAoLkFPIdsNJ*IUJW^+()2*H8_Zs3&FG_rb)53uDfj0D@;;?U(zJW_;6cI2XoJxKnD zs3GTq>^(D#zl1GPN$T!ge^M)~PdOR{SW?Zrjx;8YnoSv~7$L8H*EQb*1ge@}m5Y## z-QV!IYu9-KK*i>F{&?M7ZG+UYn`A&9nMndWV-A@DJ^Moc$ zYgI*7aKw;Pto1kk1yDE^hx?=Y4_*Rpesjl$)2OamDbM5be zd4h*H3bzH--}o`e$=KAKa;S8Ipl$_h$gcI%K2#<8?P9@0k%{e6;TRLr)P{lOOe`9R z#!B6hZ@pVrM2I0it*5M~sSb@Md<8-|IsXjt9^`Y?{`@2}aC1LTH>%jrgIqr<1VLa-n zb6t#`l#S-WNtWW76)(HjA5{(R$Uft`T^nHv4y-3I`3_3q%XiGjm&zlV98@LU)gJ`- z4a1{^!Ss6TS-nAcIt@2C_Y;AUKh!Hcl_&a`NQ%}w^)*W>RBEiQ4(4sZsB4mRxZ4dI zF4Zk$b)e|`1YA4l;&{}Gh2xXT(v1}Td%Q7DBH5@WJ-eXhl(2wk13DzDb{L!(I&!O^ zzxhTLR3v!||3s^JSXE6hFy}mm4t40XVmY$CPXjkEz?le@E5y4jp&Mx zwnn%XXbbnC0+Dv0_{d!zSM{{r0FGJ;p$o4YYOksTS-TxDW(q1Vgl1cbgtdB2B*Nn2 z@B;5`e4I2M_im<;pE~q_Hq}CQlgLX&)t9kWirm`5bE)GkIna%dL5vF}9*)ZDNmSsL za5GdVAQ6RXsn2Pa(z<|hB?|A5Dkcck5{=%LG(bsEsK$sc*0@*EiK;9Ujg6$h_XSWC z3|5s+x!31ZXZz_Rscee-2X`8(`;;SGnFPJmVBQ_-(baom0A326&t;=}?Vle|sXiY$ z9}otaB>aQLV-lhb2=2&vKpatJg-s7$?Yy{j;0N>`^hx=iN&*JRpt2Hpw9yk3uicji zGt^t>>rmjr?NRAFM|dxSi`dvIAzg%JcQ^;^focoE@WMi){9Udwa3GFu zc1dL^>umnBiZ2RwI$jG826ZI2G(@x2V8bP&jg^pI7-qb z7z$FUj4?Df=b#d0b#~|twnt2|Buc0i`JH?{>74nI5>fAgsqyPG3d&Aq+avyypg-&hY^&09wT=h!;wvp2+-mj4)sceQL|=y zwU&l_NGixlkAzf34!Aku11sQG1SFZBl<^j#Y!;Mv+fK;#Kz;MxxdsazI@ODaSsiEb z2cTbvBWO^v-df1@BVmNhmzH$R8k;GbR9-61IsA$4X{kEaMw$%-V_HNLVN_<{YONqc zyAH=vQVWI4+1!8+lY(+S=)io!7Dz8!8nkN?khXBEr18C~bA^@Kn3TML^pr}e0LOy| zx6VKfO0?CX^ZfxcwpQ&BDCLDzkTWH96+va8Bh|;fjqs@YUNreh8O?%`%U6+XVj2{Q z$XzJI8Z(U4=q+lO7Xc%6C3O4o<`e!HrYr5gNJO ze)73cIBj4JvOEZ+vdsW)V9l6$#UIV_dQ}kY{^k~ebQy|r9xxETEomh+Yq{0Tkcd#! zB?3D%zVQ$DR;L1~KW{_&9c^lo02;2Kn4cqomwwl09+K?T(0wj^z+rcMyUS|j7YN<5 zryKI#)$Bt)-y1(4w|?4uuvpsh=>abk2Wac$eB}q~3GfQRM#qQ(5#l(EJWY7^2-nGygh@KKTTQLn})2kdPz zO4x&O+yFl2bk1$hcyJvWE7I}(KY1-mqX8|w6lX{Y?83VgBL?K=BUTbVQC$tr0Rno15&`BYt5=_Baz}QjFh06-q}AH6i0l9_n{K4&=-5 zl$>1=(*XwIw~-Ys2(MZas7{@>#H#a7^qL)9n?eSVBes`V6=|@a{icp8=R7;5%&2=8 zmj>E^X4};$RHcOB8i;C2B*mjyJ6CgpxdCDD9O&UBONb1jhr5^U?>RsqvhVSsZa2#5 zz8*4qve*jBwhm&{Mm&8{a%G)HS<$c}!FLX_TDa^E8bPGQ-R9)mCaV?js5YmgTbiZ- z)F7^GUUE&`Rpqq(c{N&$`O9i9z)*(OC^}m0%znZ1CY;k%C_M6H-th~-zp5W9*N-nJ zXf%0n~w7bG77zg3>{URFgJN0ID}(U)Aw~(hwW)dG@$#-a_+_Jt`S9tuRu-2qGs!% zvnrfz;KZphYEfPZC^B~k)DRj2a}bbG!$)fBf=FWAa3)*fyWWEZc4|x*HNz$CZQARQ zGLzf>`8qOVewmrk5cnBQYjOIciqktm=Fr~f{1&2kPmI?c5`je$A|~GnUV>m=;f}|P z#uTZA_ZT5GwL?h9sICQXOQ5pA^5uRey^|=v-0zWJ4F26?Y)=8`^VkXiTHOn z{KpNN{dvp(zYUrnH~iRO416uN4DWA6ifx>eEKSFxt~&7TMNRbZ=OV(MQJgyWq8@oY z?A4%)L8Rv$jaw(vtUB&02A0gxQyaSZaKo%Z3Rma*<23M(t{9o^w>~uDUiulkdC&2v zmOq{30Vo=z4uWkM+sALd|7od@S8wk-7IBWH+x%!$4pyVaDeI!zkiY1@sz zjpu3d$&!}rfsALNI>d&SirW64hoMVT_pBIzlN>n2(*%- zp*)lry0TDd)g(c{YG|fg_VEr(M1fhMwjcMS<^ZNsGGjSIw=C2OM4M)Haj1DuX-UJC z4n{sYo!Q*<4DN*;;1p1_pVpB(24@>3pQ_uA5sf=&tmDBcxLNNM!kH+3kWz%5nyf?y ztOlvYs(-$t6(%{9Ia@;%BS190qOrOP2K%OCi1?=s`A-|X7Enf-V}y#LshbYeXc=FwHS4vL+zmek!}&o zlt;LXwNM8S3O1>UZe!BiK772UoQ445njZ_5EOAX!LaqD=dLyt_WtM@05<^Obh}M8g;t0{`u)Z z^$fPB)!)JPE>*vDDk}0vRGUBf>TdxGZ+*5JpJ%j6T`hYjG`)IZ>-LJDz_y`19V2MC zJ;Ey%G|Yp@S#!DK76liN5E5b=Zd4q)*tiecBn|5v?-M<4k%8#Wg+i;c8TGubF$8qDOW#AUJQ?`5elG zjhwN}jQGzP-H45WXo^*d!}IwZ^-Pd`g0WaXh+dqY$SRMXBspUA?>{~FdCrs`Ci6Z} z`-#LkbfSixNJ2K1D%5&w95M$F&&TL_>5&$6gZ|rkN@h7~n?1)?%3Gtx?mZ)e)r$wa zlJxYBwHgTcanb-~xCo_zD7>51h|+-dtG11MCu5;>ca{h99N)I2{H~})P+FbJ@{u;` zMoI{wbTZb~!FJz9-1T|RN%(W8FzY(q;k>D2cNh;rBER?fK3Q@D;vs?k(m0gZtZ7BF zlRCt*!eb$Z0+GuiN2Pt>*<)w}QA5fFB%jc}QM#VuS?pbh!vlV_GzuFi1>)0yvDHC7 zao+h?VK zxGQoCa`K#qvq-MDDWvU~cR%lLS|Kw8P$XB<+_fIf47(=ir%ts!m%%ZbDy!6E0N26v zNEvSc6|7vwBW%p4G!7k1g`tP<1f)f?T%ac53h4RT!g#FyihwTKi`n%|nlqZYM#{r0 zxLf5uTMg5#^M5_$@5X%$rl;5ZdY%-92Nyv?x`6MjOFNSy7GnKWJ;2P>S0#t_JO@-& zv-+?z7i;LqHrV)iFr~GSolcY|Jkze`b0%Whl25P}Fv z@FN|LItgCI>vP1_9UY#jEuHyKFoX++PE=~_8^x5eOH%eNdCC>xorXE-@OII_h#lsg zn=3bEPTNuk;ucY)2TO#4t<@Flu=p_nRxBxI)45sIabwe1VblDUh8)v`Vvh6-mvfF| zBf2!A5VF-Y33UwK7CdEsRG`zl#{jfj56Nq$Ud3(=Es3DQjJ=(~apjp#(cpev4>9^s z_?f`s;$~A*ww6xz*Pc*i5zzLJIAwsLFe_HX{vXYN=@7|OqJF-5B{;P#V%5w(~P&qx^oM8(i`)=--RP^H0r=bDT zqhXnhRFV{0jM0DIvsijutyDGs3~iJf{L0LIxN-SaWE<_Azt|Mqk>2x zY|XWtXW})$Ky(nzXP#aIc8G&~j_KJ9DBAS&OdV=<)~UZXpaSpv?S?|0AVO>jG(iHD zs>dlbLKVdZAUI?gB^x8?0ix3tD`AR!C;bfrOV8dU<%!Pc5LThv^C14b4+)n7HK)2K zVUF{ftb?d~DU)n3OXQCH3y+HG^XQQuM8T?6L;kyip-ThupB^Qj{*WS+N3sv3e+~so+ARp-(GfVr!}%pKj-|ucYx%=;Rah*DdI=Dl`KA znvDfF&-V0?e@@U(z)%l`L87dlQEnildz7F0PSjwA1AK;<{CV;YJ+uQNOykr_4R2>I z?alz{u_gNykw1jJHORT4r^+yj3!wAD3*~_1& z45(93%2~4BYw|ncEcRWN*Oa&`hRTFFw7#rI&BzyteLdj5rR4S35^VkTBg!&8tPAB0Umdf^u;XN)qEk%m8VdQRY&`NamY}`!J?>$qg1g77D`*8RR@!o{y~$5B*n#1a4k6avsiU-an{wrRS*P! zKwMp%6kVjm`;tP77%x2D$9eZ0-n$PF8WpCRT@!$+Sw<=z6SKKhvF8;5gy6$CMkQwI ziS%Lyp7nK4om6*Gp5@*5XN8o!$pD{7JjZmyBHkdL*|c=d`@~^Zk`&@|;xU6RNc_lk z+2uFRMTZ5R88$MhdEzj!SnOcAgIUQ?iKmGpimFk*kabz%yv13q)L84D{Dr~1wvy&L zts%s*ganchA)|&eDzFfxT_eRriq2ym{z1o|B$rICG8j1)P=yM~@q_=t@7bD#sYy2} z7z4UrZ2Myv=-CCDb=&?vw(aH#;C}|Lw6?$60A@c)ueY_x5zw~{TwJ#`c@MbU0S2CQ z$&eh$PfI8ifcG={rX0|J3k25OxwX!5`T%5TR?9cQ!67hGr0jK%clUPA?cbi({C)tY z_;S3yUE(hQ000JJOGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQ zO+^Ri3Jn4TF-dt)wg3PFrAb6VRCwC$TTN>dK^T5hwiFL-FO`6yAEXDd9&A0y>c!R~ zh>iFIqL&0>5f6%Be}m|yS_0|CyC9~b7HoRakdti=wwER(sSyIXB!#v)#e?Q+KW1l> z&b}Moc_1V+nb~JE&%QJJX6NyM2G5^8t%E?keD&G`5=|&ZmElN42w5x|l_Sn00OmkZ zi$I+K*<2nHz5t9~y4I|#?5CJzo;H>J6wDXnTqi{-0u3YJr2Ge9KgC_ziv zF*rANp>_2FFv~n`P5=OEIS5B0rdN1_Ut|PY@yDW3p%JL%H=Kg%)$+dq<1F*`fg!$= z#N>B+4Kx%$WCZX4o8QSbP(}bUzl;E6e$xmzu9iFMtjb(%WCU0X;Gdd=nZ!3CcL4tR z1@5+Wjd)gN-ZpOIH_U`@*%&B0$ma4~?Ven$3*raY@#_RwUVe<4np5NN5a6&-gz*WV zP{PAPk@+1p{tf}Ye%?U6`Y7@%?env$s*aE*lS#w%fg-9@Or(>zSQ^)^MJiydoVma+78 zyXooaj`D+J0huEKenq6Z!C(;ezP=y$nF1^>-sUDd|Nj4nN3FV<%QIXVC}nAz}}x9 z8cYKmq+1n(z%KK&83f4oLj+Lw2cQZ--5-E10Cj%=ssPme0j^mCsQUw4aTi40AK)aU zKftYt7pDFlpdLwXPevGpXYr)u$H zd-6YM10fao2^eFEazZ^q2E_sTtU<&s>6<^~(Pn zCRi5j1A}6d#MBS^8ORKP%nT3#TR+HWAY}luK4k#1zH0{jtyengyvjmtLih{B)^`LT zl^lngg|A{W^+{^_fpFVqSMa>bqHV&a&)f+=^l_v7pnn^tP`hW>0?qrUN)$_s- zx2dxFt^u$t3l0trxB@a!Mc*|5006qa@A}=u#DwSI@6Oiz&qy(SZUFk_*8IHv*?2F$ z2CJmc4ZzIIqrN6ktXA#MK9^u+^j!lWy8exhC4cNKJa3!t7ghAR8K7wz%+Ad^>NnOm z?A=^$DF@l?qJ3@WY^}dFSOtA%0NOVVUQxZ4NOW9VeH)Eh&l@3?^c?{>Jvo7Ig@VvT z*FSz>Ui(2c{f+>1|4CIcO(>b}FHwG%{jYhvJ}T2OvZK0A$D?fDHKqkUk-Q05aqcK!*GQ$dEq(8S)1pL;e6{$RB_V n`2&z4e*iM%4?u?e0m%FVr=$ouKCC3`00000NkvXXu0mjfKef^L diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca_off.png b/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca_off.png index fa2741995e7fc5ef59d4996c3d17c953462db377..a3cac04acb3b5f649436c9c04811396ee7ab9eb9 100644 GIT binary patch delta 2748 zcmV;t3Pbg?1j7}OBYy_pdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+TB=LmLn?; z{bv=u1dss1a+q|^+re9YUlG`8J6&0sRsGeDlffiF($y5{*1!L#`wxC36kSYGa?RP} z7i+B4&?)}<)%^}W?)U!DS;F{f-rW}nQ;e3cp|nHaFrPj)+<)!}{dwM%vqI$@bQW$0 zvfXUA%||9NPuF~i=b*Z-POe2BS?!0_aR@gn=Pw5@=df!p#_n+<3bZs6E@Gm^f&G4$ zi-zrwx!L@F6J4{76K978zrzU>@+97^_5M*oPfEV^+^hEQy%*(EJM;Xa%Y1Z%&fA5M z-Yb8r_~Bx{bALq73whmv`J`mkSyb00U5gnS&Bvm=yJ^SvfUra5ytidMg1>~m?5E-> zzWD*jrysuK8KDM(_SJ%MPR?uNHsuIMrb)3V*)bbp^i2OcZPwa`pxl010|< zOIyLW=fLkD><6X_1k+Y?fq>2T>xiDhhi&o3nL(G(UM>`z%yR%#gu4@%2@C|_K%9bk z5s`!dJr)4ez&UZG4g^9P)fBd-tWlF@6)jq|-BCNJetLd@S~#fDMt{oajw z8Mim6P0Mp*BX)VA>C`j459_NmN2OU(Yk%AR9~`8@=zAXgJaE5W`q{w!^$BO-o|m2k zv40iKpbxTJz#nXdYC!;u$qJEs>s}}RtPS1Gv`EvM!P;27`mt|CVm&R-vHEP(N7^lB zyz$8i{a(VV@Hc^rOdLAA#%8n=B(zYkrG%q%$9;mMsD0Y`veEtV&XaNWFT5)GbsZsOYMZMFhqh=@RN0oD_Us$e5ZL`A)5rOMj4B zR??2>DLTT%v;%E_WxD7ZQME~ZBn2fa0=aff?`r5GgA0JrZAuQ*kpY?_)kI;o`+`wh zn5HF_m1TAv(1@=Yx;N5f>&Op4K`$K@)clG(rjy4ZE;Y?C6CiHHwIUs$poJ=+3E@#q ziBng&X*edgY4wR^;s-P?(h)C^p?|v73$kx1YN*o8JW*Z(H9__fs7QE~XJcBK+xT5D zfKMWb#FU-xa8elkzv{X_+voA!*{6BF1qC3Y?k($O>!LS{t_USPxAMELD?cFqs_VX> z=p~tF(r2FIW_N{rxCS~dCqRVB)j$D+sr&8O@arFS-P`HqSC6@~9p1rEM}JM#yCsVW zb>s77chlmOCal(D$%UqA&=g75;4{7E*Hp8b9C~Zu6$s#sr_`}q`_e`h37YDrE@}aO zr0)!{X_mxyt$7m-E(zX?!L4(mhTQ=x!cF?kZDI7eAlNXteGNw ztyr2tX3TJDhW?}M7Rr(vFn?$)uk=sRH?hHF@VW~wB1F8^$J(uJLJyT9N4M=*RseA94`;;gm&VflPV$*UrQ@a}2!cHm!*xqmc`&y^w&do)Y^ zNZBwnq#r?yWYIp4*vpFa8{R4?cFf={YM3f;6HFapzMmoo(z-9i{*lz~CU!6}j_(%p zev7=ecZs|mDck>c?8ps-yD)k}oFKJE%eqL6NT&6x=hZm`pyO@ zUXXusFYDcD-y68^(B1i0d~*I5IlF`Nt+B`P0004oX+uL$Nq<8_AaHVTW@&6?004NL zeUUv#!%!53Pg6xHEe>`NamY}`!J?>$qg1g77D`*8RR@!o{y~$5B*n#1a4k6avsiU- zan{wrRS*P!KwMp%6kVjm`;tP77%x2D$9eZ0-n$PF8WpCRT@!$+Sw<=z6SKKhvF8;5 zgy6$CMkQwIiGTEB2A=hGPn}eEQJ&@9_h*HayvYEcNIb`M!y?`wp4qf?&ilk+R+1Fr zbK)_BE=c^yb=l=N&P9g>o*6bWsd?fsu~_V2xr15BP>H9BBZ{g~zL0fU;k?CJt<+fS zp8SQuytb0&I;|nZv4jMY5Fw+6GAghTrClS%M2gO19)JEp$DbsZOs+B*ITlcb3d!+< z|H1FsnuV!JHz^ncx?gPjV;Jb!1)6o+{yw(t<_X|`2ClTWzuEw1KS{5*wa5|Bw+&oe zw>5bWxZD8-o^;8O9LY~hC=`JAGy0|+(0>aA*4(+Z&T;wxWN22)H^9LmFjA!Kb&q%V zcFyhJo`2T-egLNUa=gA>;x7OI00v@9M??Vs0RI60puMM)00009a7bBm000ic000ic z0Tn1pfB*mh2XskIMF-~!4FNbJymHpg0005gNkl(*iE`@%jn8d}7pmynceg>FFloLLi0pA_K#n ziwFT$2K;e>K^3R_?Vl@LM zPE=h$uI0#j(apeRCJQcuE?hXr@bcwLoEC|Ti!&G)7{U3@3mq947#JA##_xxVO`A4_ zVD`r8fR`^{GTgm;m;OaDO0j(J4o*2`Wq)N9e%v=2IDk?R8yicR16*C*iMC914V00I z5Yy7u!dU_mbO1Htf9hmJBJ}eQBs~PItgIM({d_URH*eaEQkpR^Ffe%S-H)LTm!$;D z0pvpC@uR007#Zx`xgCXu=|wMia1}%tA@K9Z4~G5w_7N4tn>Mb;N|T)n(1Z2S!!?Ht zj~+h6srkuM()$qTdKhsjG&IyF*i$-x{vso#2^9bZ%(y5yv8)mR0000v2E`o@<_zA=o#HlV?oYW3l5gSdk!@1ZJ2VK-DXVcszX=8NpSuXFJ_r2$r z9JwUGzy9^d3YiCs3-h19X}r3&9s+>&`eZtj!J}RY)Ho)I*nipDqH$ZGZXWdK0PT&5 zqr+UFhUrYk8Gu#vQ>tHkM*vn~P_hB24;u2~G@|{(G*>H~ImTXUYNa!bRkH2?0FVk7 zfxF^&A`Iu)OHCM18D2I3MVVtU1ttr?qh3Kw5(71C+~_O-K|g{lQ2_NpgDlIxVp=E^ z>;R?+AxNcD{(lTkP9cwu*z&tOyATAyl4Cvv*H_nwM4~O38%B*ehna5_6QEUdv$y*4 zf=DC^B{xI!o5?-z003}#c@9Dd*GLcqBoaf8Fvjz%8!sP#5Q1{K>^gy8aRC58Rqwdx z;_@h*GsmkAFKkHCzC%>mQRux`ns$J?VG{ zWLZXXI%&)2vN^h&tt_uVQRe7q>Z7+0?@LQG?&$3U?(e+;)NdMYSJf?wmeK4rj2gPe zCz*3P0=&Py;W(dnG&Pky*k_K-$O2IRk^lf*)1Ye_xB02k{F*oRggA8=92{`{Q@Xe) da{ImN3lxo?xpm**R=@xN002ovPDHLkV1f{9{Luga diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca_on.png b/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/ca_on.png index 122c0ce45fba16f8503c1e86a73b5a1c409fe45b..b9a49e1ec9892b4a4beb9175fc56754b5d90d413 100644 GIT binary patch delta 3189 zcmV-*42tu}1&kSxBYy~2dQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+O1gGkpwFa z{Ktwl0R%$G9L|XK;F-TEiaus~uHJZ4(Z!_#ktqo=ZvOM%<^F@e=*hdpQnKdk@s~6y zRaA<<{&c^CPy4<9=nSF#q2JvH2wf3nyqZ#vd__M$KDezB+JDD>SI!8PGtn8iO&D!u zTWvfmiGI5JLpl@byee6XJgeG{s{IIVRn9L5FK4prTeRJCM-rek7z;(B83RDHce!Mu z{bH=vzu!bxZ;c$up`aL!CIIBa_HL#3&j5V@`BrnE(ZAO|flu}H$4^-1gApoU4g~%h z{0;Hb!tt&VeSaL#?CZ;R&Tp+z)|%JuYRW(~AB*zthK_v$!3N0V{w(7W{1|oFkK!p< zri1d~yKi`U&_Fh{e zs+g-nzM`j5i!C*7xk)QcTkSBPo;vs3rI)U~4jOSFOpH8al%b=};3gu)Op|AxGRxFi z7i?|Cl@_nOWR<0>-dQ`WzC3TR77lB)nKC)KvwwzOCvux2SU6$h42)3Ueq+uVb^iu)4%EH!_62Lh z!d>5tU0!II`UvmC_$<{?sdlK*m+)c(o$BCN^Kmu*M|Fk=)H#fdZE$9dlOBUtD0LCze-*PTOJuS2QF>ZHh}o(qk)djfyY=w;~KEhh$BF! z2)+S)v90a|UBSR;f&1i?8lhMXD9h@BX3!2}!12+yXcHI?v;qE&WWn-rQb5uLimPR7 zP91B;wWDBNTYL&3s%REMOh0;v?=xzfU4Jg&qp%As9~BPxMoc12dn3vg&vNZ9VK2#g zOEM>Cxv9_l8q7e5Li)}f;un^`!iTM~1S+m2CmRr;2NoCEk z_gh7tM2qqWBP9WF`3X1yaJ25g0b>V{0f$ZTS?Tn|$(@p(;6<$;a#tWa~Zym@R$bU^P^Ra0pNM?Va;0n3U-2~l7KSNjAbl~b>Yaqj1dIre7)x9l~SakWE74p0MQ z)*_rILJ!h9@iD<0`*fJ4sj=iMl7EOEYZH!$Y=~q5r_rSx_YS-Z%GygEQdf+j&ea<# zLwi$ph&EugD)>gq-4yG0;Gr35wWV!Iz%i6p|T@GjJB zNcvoy=EV#c@j7hQBnlM~fq!UqgtE&#Ec7F9%eZD?JkH)akhKj}tb`OA$X0w`bwi9C zJmHKK4d02npJb_dgrI1h&>P1ujd7V+Kn5{8yaW2y&4Md972?WJEUjN;zYu+Rv5W12 zaeg1;JH+l8W2@;Lc5)4*Tt0R?`4=3*toG-I`=i{i4fi_KhOc%uPJi>Af*~XXTLdMN z%WvY8y9FxcMCOmpk}YIH;mxZ1Kfimax)TN9R~@{6r#gs>3+V_b$+&=UfRAXFd48Cebu=lJ%+x5%>Gi_4iXwt&?gKDWUa91xF=iuQ`P+{v8%Xb^A!y-xw%WP zFj`?y4Rd*k{~A>6{*=c`3-^^XOE1=-hyyY6dGXy zOEXHqHN-+aoR#3X+L6J>R@{&sjVmiQ$GAU($Mwu!xXQh&>*;4-pH`$%@WYnPmP zF&PZ(>+pZn-N%7h+Q)g$o;z+F6B>^UKyV6mKS? zbLKt&*wIZd>(l!}R-&ga?v8Fd`_5!vEcPI0rG0~%LIOwjwI^)f^5dTy{?jxU)DgB8 z9gc~~mT3A06Mvgoc9J}_tuapuzY-3FJKIQU%Qkik`tUz1?Oz)A5RR^QDSu|%eN8#F zw68-Z?hWV>!tD(Hs)bOSBR;e_kCs+GZGPrtgyULEc23o0n@3()Hvs)Ib&ox}+tw2j z9%CKKAk*XvLbjNnaeY?9`Ny5RU$%aBZt{BBtX)r@41WSfcV#2-p33=(+jeWa&=1?q z1H7=ES(g5oyr-LX<+8VetQO|fFH&NyQ00D++LqkwW zLqi~Na({1TX>4Tx0C=2zkv&MmP!xqvQ$;B)4t5Z6$WX<>qNs?YRIvyaN?V~-2a}in zL6e3g#l=x@EjakISaoo5*44pP5CnffTwR$?=2#!SC6cg{et5DHsE~Uu^qh80gsrnswX$KDO=V3E+PQuC%tl z+5l!hNw2rH$Pv)D4P0EeHF*!X+yMrjbjgq$$xllt6oB_L`lcMve+vZG+_|;Raryvc zXjaQNz`-FfQl#v4k9YTW&h6ix*8F||rWyEhyuMxHF8}}l24YJ`L;(K){{a7>y{D6r zJ{Nxg2XskIMF-~!4FNP3F>`Hq0006cNklv{ehxdOwJ$Q(ZpFVT?n71P(l1WdBAMEd2ay%>1 zD_8_bH5vK2IDF5Z_j8R(X<*F4X;eyxC~3A1wACA+Qeuvo*9_`_Wq!;MZ@6FIFu1!-GQzg5W#{E-x-I zHRT(r`0Z`Ob`LFY#)MsR)Z+TJ<~@ICd-Al6&d&aT5JD{^2m(T(<$fIf_7VV)dt0#m z)I$p(grHijy7EGBF-ZOTISK#(NxGuG7YGCl@kYza+57Ufe;=%GXQvPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!T0y8${2Q_Fvdbqt$}+q``yO>LnKw+G>PAA*ltWP=APgw=7_JbV7aHz#XgW_DJo?y|VB5YK?>CW6&Kp-^b8r6;NX z!Znp4+AV*K)W9|ddaSlgj^o%3yzae9rv}fe4AGyRpOG5a#z5cQ|0EmGOJCjGqF4J_ z>N!2==0WS%PJg5ZwlUE6dN*k}n{l=N6enDz&_5q;gnJz}&E+@^f;`yt5MLp}9{s*uQ<-EqKa}q@m*T3n)3DrGl-wy&>WT{#+id%M(ZH0aF0fbSW| zW8$Czwh(nXInei_eUQCxLV6}^0Bmf0rq$IqV&J-sM!9K1LNtI+QK?kK!1Zn*8UWSm zH!^HT diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/meta.json index f03f3b29a6b9f2..f111c8a64adb97 100644 --- a/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/meta.json +++ b/Resources/Textures/Structures/Power/Generation/Singularity/collector.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from goonstation at https://github.com/goonstation/goonstation/commit/cbe076402ed43b1cd861295bbcb95608c453de7a", + "copyright": "Taken from goonstation at https://github.com/goonstation/goonstation/commit/cbe076402ed43b1cd861295bbcb95608c453de7a. Edited by chromiumboy", "size": { "x": 32, "y": 32 @@ -39,6 +39,27 @@ }, { "name": "cu" + }, + { + "name": "ca-o0", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "ca-o1" + }, + { + "name": "ca-o2" + }, + { + "name": "ca-o3" + }, + { + "name": "ca-tank" } ] } From 4c4f24422cefa7bbca4255772cc7ff86401de922 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 13 Oct 2023 19:09:05 -0400 Subject: [PATCH 077/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 20101b3ae9a141..478dc6cfaba721 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: crazybrain - changes: - - {message: Admin ghosts can now analyse solutions easier., type: Tweak} - id: 4500 - time: '2023-08-10T02:03:21.0000000+00:00' - author: metalgearsloth changes: - {message: Potentially fix invalid moth markings leading to issues spawning., type: Fix} @@ -2950,3 +2945,9 @@ Entries: - {message: Animals now give cute hearts when you pet them., type: Add} id: 4999 time: '2023-10-13T17:34:18.0000000+00:00' +- author: chromiumboy + changes: + - {message: The radiation collector has been updated to provide better visual feedback + on its status., type: Tweak} + id: 5000 + time: '2023-10-13T23:08:00.0000000+00:00' From d5e5b80c97c133cb79ba4e3294ea8d2673c40a06 Mon Sep 17 00:00:00 2001 From: liltenhead <104418166+liltenhead@users.noreply.github.com> Date: Fri, 13 Oct 2023 16:41:43 -0700 Subject: [PATCH 078/245] Increase containment field connection duration (#20965) --- .../Components/ContainmentFieldGeneratorComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Singularity/Components/ContainmentFieldGeneratorComponent.cs b/Content.Shared/Singularity/Components/ContainmentFieldGeneratorComponent.cs index b8f5d1a1894dc5..d9fc044dceaef9 100644 --- a/Content.Shared/Singularity/Components/ContainmentFieldGeneratorComponent.cs +++ b/Content.Shared/Singularity/Components/ContainmentFieldGeneratorComponent.cs @@ -53,7 +53,7 @@ public int PowerBuffer /// How many seconds should the generators wait before losing power? ///
- public int PlayersJoinedRoundNormally = 0; + public int PlayersJoinedRoundNormally; // Mainly to avoid allocations. private readonly List _possiblePositions = new(); + private List GetSpawnableStations() + { + var spawnableStations = new List(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out _)) + { + spawnableStations.Add(uid); + } + + return spawnableStations; + } + private void SpawnPlayers(List readyPlayers, Dictionary profiles, bool force) { // Allow game rules to spawn players by themselves if needed. (For example, nuke ops or wizard) @@ -66,8 +79,7 @@ private void SpawnPlayers(List readyPlayers, Dictionary().Select(x => x.Item1.Owner).ToList(); - + var spawnableStations = GetSpawnableStations(); var assignedJobs = _stationJobs.AssignJobs(profiles, spawnableStations); _stationJobs.AssignOverflowJobs(ref assignedJobs, playerNetIds, profiles, spawnableStations); @@ -125,7 +137,7 @@ private void SpawnPlayer(IPlayerSession player, HumanoidCharacterProfile charact if (station == EntityUid.Invalid) { - var stations = EntityQuery().Select(x => x.Item1.Owner).ToList(); + var stations = GetSpawnableStations(); _robustRandom.Shuffle(stations); if (stations.Count == 0) station = EntityUid.Invalid; @@ -161,7 +173,8 @@ private void SpawnPlayer(IPlayerSession player, HumanoidCharacterProfile charact restrictedRoles.UnionWith(getDisallowed); var jobBans = _banManager.GetJobBans(player.UserId); - if(jobBans != null) restrictedRoles.UnionWith(jobBans); + if (jobBans != null) + restrictedRoles.UnionWith(jobBans); // Pick best job best on prefs. jobId ??= _stationJobs.PickBestAvailableJobWithPriority(station, character.JobPriorities, true, @@ -350,15 +363,16 @@ public EntityCoordinates GetObserverSpawnPoint() // Fallback to a random grid. if (_possiblePositions.Count == 0) { - foreach (var grid in _mapManager.GetAllGrids()) + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out var grid)) { - if (!metaQuery.TryGetComponent(grid.Owner, out var meta) || + if (!metaQuery.TryGetComponent(uid, out var meta) || meta.EntityPaused) { continue; } - _possiblePositions.Add(new EntityCoordinates(grid.Owner, Vector2.Zero)); + _possiblePositions.Add(new EntityCoordinates(uid, Vector2.Zero)); } } diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs index 3bd3d13d277892..13d4ed71c8e0b3 100644 --- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs @@ -330,13 +330,17 @@ private void OnRoundStart(EntityUid uid, NukeopsRuleComponent? component = null) // we can only currently guarantee that NT stations are the only station to // exist in the base game. - var eligible = EntityQuery() - .Where(x => - _npcFaction.IsFactionHostile(component.Faction, x.Item2.Owner, x.Item2)) - .Select(x => x.Item1.Owner) - .ToList(); + var eligible = new List>(); + var eligibleQuery = EntityQueryEnumerator(); + while (eligibleQuery.MoveNext(out var eligibleUid, out var eligibleComp, out var member)) + { + if (!_npcFaction.IsFactionFriendly(component.Faction, eligibleUid, member)) + continue; + + eligible.Add((eligibleUid, eligibleComp, member)); + } - if (!eligible.Any()) + if (eligible.Count == 0) return; component.TargetStation = _random.Pick(eligible); diff --git a/Content.Server/Ghost/Roles/GhostRoleSystem.cs b/Content.Server/Ghost/Roles/GhostRoleSystem.cs index 671b91392c4080..5a4cc176f2a549 100644 --- a/Content.Server/Ghost/Roles/GhostRoleSystem.cs +++ b/Content.Server/Ghost/Roles/GhostRoleSystem.cs @@ -40,12 +40,12 @@ public sealed class GhostRoleSystem : EntitySystem private uint _nextRoleIdentifier; private bool _needsUpdateGhostRoleCount = true; - private readonly Dictionary _ghostRoles = new(); + private readonly Dictionary> _ghostRoles = new(); private readonly Dictionary _openUis = new(); private readonly Dictionary _openMakeGhostRoleUis = new(); [ViewVariables] - public IReadOnlyCollection GhostRoles => _ghostRoles.Values; + public IReadOnlyCollection> GhostRoles => _ghostRoles.Values; public override void Initialize() { @@ -65,9 +65,9 @@ public override void Initialize() _playerManager.PlayerStatusChanged += PlayerStatusChanged; } - private void OnMobStateChanged(EntityUid uid, GhostTakeoverAvailableComponent component, MobStateChangedEvent args) + private void OnMobStateChanged(Entity component, ref MobStateChangedEvent args) { - if (!TryComp(uid, out GhostRoleComponent? ghostRole)) + if (!TryComp(component, out GhostRoleComponent? ghostRole)) return; switch (args.NewMobState) @@ -75,12 +75,12 @@ private void OnMobStateChanged(EntityUid uid, GhostTakeoverAvailableComponent co case MobState.Alive: { if (!ghostRole.Taken) - RegisterGhostRole(ghostRole); + RegisterGhostRole((component, ghostRole)); break; } case MobState.Critical: case MobState.Dead: - UnregisterGhostRole(ghostRole); + UnregisterGhostRole((component, ghostRole)); break; } } @@ -126,7 +126,8 @@ public void OpenMakeGhostRoleEui(IPlayerSession session, EntityUid uid) public void CloseEui(ICommonSession session) { - if (!_openUis.ContainsKey(session)) return; + if (!_openUis.ContainsKey(session)) + return; _openUis.Remove(session, out var eui); @@ -176,47 +177,57 @@ private void PlayerStatusChanged(object? blah, SessionStatusEventArgs args) } } - public void RegisterGhostRole(GhostRoleComponent role) + public void RegisterGhostRole(Entity role) { - if (_ghostRoles.ContainsValue(role)) return; - _ghostRoles[role.Identifier = GetNextRoleIdentifier()] = role; - UpdateAllEui(); + if (_ghostRoles.ContainsValue(role)) + return; + _ghostRoles[role.Comp.Identifier = GetNextRoleIdentifier()] = role; + UpdateAllEui(); } - public void UnregisterGhostRole(GhostRoleComponent role) + public void UnregisterGhostRole(Entity role) { - if (!_ghostRoles.ContainsKey(role.Identifier) || _ghostRoles[role.Identifier] != role) return; - _ghostRoles.Remove(role.Identifier); + var comp = role.Comp; + if (!_ghostRoles.ContainsKey(comp.Identifier) || _ghostRoles[comp.Identifier] != role) + return; + + _ghostRoles.Remove(comp.Identifier); UpdateAllEui(); } public void Takeover(ICommonSession player, uint identifier) { - if (!_ghostRoles.TryGetValue(identifier, out var role)) return; + if (!_ghostRoles.TryGetValue(identifier, out var role)) + return; var ev = new TakeGhostRoleEvent(player); - RaiseLocalEvent(role.Owner, ref ev); + RaiseLocalEvent(role, ref ev); - if (!ev.TookRole) return; + if (!ev.TookRole) + return; if (player.AttachedEntity != null) - _adminLogger.Add(LogType.GhostRoleTaken, LogImpact.Low, $"{player:player} took the {role.RoleName:roleName} ghost role {ToPrettyString(player.AttachedEntity.Value):entity}"); + _adminLogger.Add(LogType.GhostRoleTaken, LogImpact.Low, $"{player:player} took the {role.Comp.RoleName:roleName} ghost role {ToPrettyString(player.AttachedEntity.Value):entity}"); CloseEui(player); } public void Follow(ICommonSession player, uint identifier) { - if (!_ghostRoles.TryGetValue(identifier, out var role)) return; - if (player.AttachedEntity == null) return; + if (!_ghostRoles.TryGetValue(identifier, out var role)) + return; + + if (player.AttachedEntity == null) + return; - _followerSystem.StartFollowingEntity(player.AttachedEntity.Value, role.Owner); + _followerSystem.StartFollowingEntity(player.AttachedEntity.Value, role); } public void GhostRoleInternalCreateMindAndTransfer(ICommonSession player, EntityUid roleUid, EntityUid mob, GhostRoleComponent? role = null) { - if (!Resolve(roleUid, ref role)) return; + if (!Resolve(roleUid, ref role)) + return; DebugTools.AssertNotNull(player.ContentData()); @@ -233,10 +244,8 @@ public GhostRoleInfo[] GetGhostRolesInfo() var roles = new List(); var metaQuery = GetEntityQuery(); - foreach (var (id, role) in _ghostRoles) + foreach (var (id, (uid, role)) in _ghostRoles) { - var uid = role.Owner; - if (metaQuery.GetComponent(uid).EntityPaused) continue; @@ -249,8 +258,12 @@ public GhostRoleInfo[] GetGhostRolesInfo() private void OnPlayerAttached(PlayerAttachedEvent message) { // Close the session of any player that has a ghost roles window open and isn't a ghost anymore. - if (!_openUis.ContainsKey(message.Player)) return; - if (EntityManager.HasComponent(message.Entity)) return; + if (!_openUis.ContainsKey(message.Player)) + return; + + if (HasComp(message.Entity)) + return; + CloseEui(message.Player); } @@ -260,7 +273,7 @@ private void OnMindAdded(EntityUid uid, GhostTakeoverAvailableComponent componen return; ghostRole.Taken = true; - UnregisterGhostRole(ghostRole); + UnregisterGhostRole((uid, ghostRole)); } private void OnMindRemoved(EntityUid uid, GhostTakeoverAvailableComponent component, MindRemovedMessage args) @@ -273,7 +286,7 @@ private void OnMindRemoved(EntityUid uid, GhostTakeoverAvailableComponent compon return; ghostRole.Taken = false; - RegisterGhostRole(ghostRole); + RegisterGhostRole((uid, ghostRole)); } public void Reset(RoundRestartCleanupEvent ev) @@ -304,20 +317,21 @@ private void OnUnpaused(EntityUid uid, GhostRoleComponent component, ref EntityU UpdateAllEui(); } - private void OnInit(EntityUid uid, GhostRoleComponent role, ComponentInit args) + private void OnInit(Entity ent, ref ComponentInit args) { + var role = ent.Comp; if (role.Probability < 1f && !_random.Prob(role.Probability)) { - RemComp(uid); + RemComp(ent); return; } if (role.RoleRules == "") role.RoleRules = Loc.GetString("ghost-role-component-default-rules"); - RegisterGhostRole(role); + RegisterGhostRole(ent); } - private void OnShutdown(EntityUid uid, GhostRoleComponent role, ComponentShutdown args) + private void OnShutdown(Entity role, ref ComponentShutdown args) { UnregisterGhostRole(role); } @@ -391,7 +405,7 @@ private void OnTakeoverTakeRole(EntityUid uid, GhostTakeoverAvailableComponent c MakeSentientCommand.MakeSentient(uid, EntityManager, ghostRole.AllowMovement, ghostRole.AllowSpeech); GhostRoleInternalCreateMindAndTransfer(args.Player, uid, uid, ghostRole); - UnregisterGhostRole(ghostRole); + UnregisterGhostRole((uid, ghostRole)); args.TookRole = true; } diff --git a/Content.Server/Gravity/GravityGeneratorSystem.cs b/Content.Server/Gravity/GravityGeneratorSystem.cs index 1a9b2ad6e9972f..48002fb823de6c 100644 --- a/Content.Server/Gravity/GravityGeneratorSystem.cs +++ b/Content.Server/Gravity/GravityGeneratorSystem.cs @@ -1,13 +1,12 @@ using Content.Server.Administration.Logs; using Content.Server.Audio; +using Content.Server.Construction; using Content.Server.Power.Components; using Content.Shared.Database; using Content.Shared.Gravity; using Content.Shared.Interaction; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Players; -using Content.Server.Construction; namespace Content.Server.Gravity { @@ -56,9 +55,10 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var (gravGen, powerReceiver) in EntityManager - .EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var gravGen, out var powerReceiver)) { + var ent = (uid, gravGen, powerReceiver); if (!gravGen.Intact) continue; @@ -108,15 +108,15 @@ public override void Update(float frameTime) var updateUI = gravGen.NeedUIUpdate; if (!MathHelper.CloseTo(lastCharge, gravGen.Charge)) { - UpdateState(gravGen, powerReceiver); + UpdateState(ent); updateUI = true; } if (updateUI) - UpdateUI(gravGen, powerReceiver, chargeRate); + UpdateUI(ent, chargeRate); if (active != gravGen.GravityActive && - TryComp(gravGen.Owner, out var xform) && + TryComp(uid, out var xform) && TryComp(xform.ParentUid, out var gravity)) { // Force it on in the faster path. @@ -153,12 +153,10 @@ private static void UpdatePowerState( powerReceiver.Load = component.SwitchedOn ? component.ActivePowerUse : component.IdlePowerUse; } - private void UpdateUI( - GravityGeneratorComponent component, - ApcPowerReceiverComponent powerReceiver, - float chargeRate) + private void UpdateUI(Entity ent, float chargeRate) { - if (!_uiSystem.IsUiOpen(component.Owner, SharedGravityGeneratorComponent.GravityGeneratorUiKey.Key)) + var (_, component, powerReceiver) = ent; + if (!_uiSystem.IsUiOpen(ent, SharedGravityGeneratorComponent.GravityGeneratorUiKey.Key)) return; var chargeTarget = chargeRate < 0 ? 0 : component.MaxCharge; @@ -194,21 +192,21 @@ private void UpdateUI( ); _uiSystem.TrySetUiState( - component.Owner, + ent, SharedGravityGeneratorComponent.GravityGeneratorUiKey.Key, state); component.NeedUIUpdate = false; } - private void OnCompInit(EntityUid uid, GravityGeneratorComponent component, ComponentInit args) + private void OnCompInit(Entity ent, ref ComponentInit args) { ApcPowerReceiverComponent? powerReceiver = null; - if (!Resolve(uid, ref powerReceiver, false)) + if (!Resolve(ent, ref powerReceiver, false)) return; - UpdatePowerState(component, powerReceiver); - UpdateState(component, powerReceiver); + UpdatePowerState(ent, powerReceiver); + UpdateState((ent, ent.Comp, powerReceiver)); } private void OnInteractHand(EntityUid uid, GravityGeneratorComponent component, InteractHandEvent args) @@ -228,9 +226,9 @@ private void OnInteractHand(EntityUid uid, GravityGeneratorComponent component, component.NeedUIUpdate = true; } - public void UpdateState(GravityGeneratorComponent grav, ApcPowerReceiverComponent powerReceiver) + public void UpdateState(Entity ent) { - var uid = grav.Owner; + var (uid, grav, powerReceiver) = ent; var appearance = EntityManager.GetComponentOrNull(uid); _appearance.SetData(uid, GravityGeneratorVisuals.Charge, grav.Charge, appearance); @@ -242,19 +240,19 @@ public void UpdateState(GravityGeneratorComponent grav, ApcPowerReceiverComponen if (!grav.Intact) { - MakeBroken(uid, grav, appearance); + MakeBroken((uid, grav), appearance); } else if (powerReceiver.PowerReceived < grav.IdlePowerUse) { - MakeUnpowered(uid, grav, appearance); + MakeUnpowered((uid, grav), appearance); } else if (!grav.SwitchedOn) { - MakeOff(uid, grav, appearance); + MakeOff((uid, grav), appearance); } else { - MakeOn(uid, grav, appearance); + MakeOn((uid, grav), appearance); } } @@ -264,32 +262,32 @@ private void OnRefreshParts(EntityUid uid, GravityGeneratorComponent component, component.MaxCharge = maxChargeMultipler * 1; } - private void MakeBroken(EntityUid uid, GravityGeneratorComponent component, AppearanceComponent? appearance) + private void MakeBroken(Entity ent, AppearanceComponent? appearance) { - _ambientSoundSystem.SetAmbience(component.Owner, false); + _ambientSoundSystem.SetAmbience(ent, false); - _appearance.SetData(uid, GravityGeneratorVisuals.State, GravityGeneratorStatus.Broken); + _appearance.SetData(ent, GravityGeneratorVisuals.State, GravityGeneratorStatus.Broken); } - private void MakeUnpowered(EntityUid uid, GravityGeneratorComponent component, AppearanceComponent? appearance) + private void MakeUnpowered(Entity ent, AppearanceComponent? appearance) { - _ambientSoundSystem.SetAmbience(component.Owner, false); + _ambientSoundSystem.SetAmbience(ent, false); - _appearance.SetData(uid, GravityGeneratorVisuals.State, GravityGeneratorStatus.Unpowered, appearance); + _appearance.SetData(ent, GravityGeneratorVisuals.State, GravityGeneratorStatus.Unpowered, appearance); } - private void MakeOff(EntityUid uid, GravityGeneratorComponent component, AppearanceComponent? appearance) + private void MakeOff(Entity ent, AppearanceComponent? appearance) { - _ambientSoundSystem.SetAmbience(component.Owner, false); + _ambientSoundSystem.SetAmbience(ent, false); - _appearance.SetData(uid, GravityGeneratorVisuals.State, GravityGeneratorStatus.Off, appearance); + _appearance.SetData(ent, GravityGeneratorVisuals.State, GravityGeneratorStatus.Off, appearance); } - private void MakeOn(EntityUid uid, GravityGeneratorComponent component, AppearanceComponent? appearance) + private void MakeOn(Entity ent, AppearanceComponent? appearance) { - _ambientSoundSystem.SetAmbience(component.Owner, true); + _ambientSoundSystem.SetAmbience(ent, true); - _appearance.SetData(uid, GravityGeneratorVisuals.State, GravityGeneratorStatus.On, appearance); + _appearance.SetData(ent, GravityGeneratorVisuals.State, GravityGeneratorStatus.On, appearance); } private void OnSwitchGenerator( diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index 298aa57ccf212c..b5b01ac001de4e 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -18,14 +18,11 @@ using Content.Shared.Stacks; using Content.Shared.Storage; using Content.Shared.Throwing; -using JetBrains.Annotations; using Robust.Server.Player; -using Robust.Shared.Configuration; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Player; using Robust.Shared.Players; using Robust.Shared.Utility; @@ -97,7 +94,7 @@ protected override void HandleEntityRemoved(EntityUid uid, HandsComponent hands, base.HandleEntityRemoved(uid, hands, args); if (!Deleted(args.Entity) && TryComp(args.Entity, out HandVirtualItemComponent? @virtual)) - _virtualSystem.Delete(@virtual, uid); + _virtualSystem.Delete((args.Entity, @virtual), uid); } private void HandleBodyPartAdded(EntityUid uid, HandsComponent component, ref BodyPartAddedEvent args) diff --git a/Content.Server/Holiday/Christmas/RandomGiftSystem.cs b/Content.Server/Holiday/Christmas/RandomGiftSystem.cs index 29ec823aa76db9..4581d378f69c08 100644 --- a/Content.Server/Holiday/Christmas/RandomGiftSystem.cs +++ b/Content.Server/Holiday/Christmas/RandomGiftSystem.cs @@ -57,7 +57,7 @@ private void OnUseInHand(EntityUid uid, RandomGiftComponent component, UseInHand var coords = Transform(args.User).Coordinates; var handsEnt = Spawn(component.SelectedEntity, coords); - _adminLogger.Add(LogType.EntitySpawn, LogImpact.Low, $"{ToPrettyString(args.User)} used {ToPrettyString(component.Owner)} which spawned {ToPrettyString(handsEnt)}"); + _adminLogger.Add(LogType.EntitySpawn, LogImpact.Low, $"{ToPrettyString(args.User)} used {ToPrettyString(uid)} which spawned {ToPrettyString(handsEnt)}"); EnsureComp(handsEnt); // For insane mode. if (component.Wrapper is not null) Spawn(component.Wrapper, coords); diff --git a/Content.Server/IdentityManagement/IdentitySystem.cs b/Content.Server/IdentityManagement/IdentitySystem.cs index 3d4be31435e466..cdb4dc7c6c9481 100644 --- a/Content.Server/IdentityManagement/IdentitySystem.cs +++ b/Content.Server/IdentityManagement/IdentitySystem.cs @@ -4,14 +4,12 @@ using Content.Shared.Database; using Content.Shared.Hands; using Content.Shared.Humanoid; -using Content.Shared.Humanoid.Prototypes; using Content.Shared.IdentityManagement; using Content.Shared.IdentityManagement.Components; using Content.Shared.Inventory; using Content.Shared.Inventory.Events; using Robust.Shared.Enums; using Robust.Shared.GameObjects.Components.Localization; -using Robust.Shared.Prototypes; namespace Content.Server.IdentityManagement; @@ -147,8 +145,8 @@ private IdentityRepresentation GetIdentityRepresentation(EntityUid target, // Get their name and job from their ID for their presumed name. if (_idCard.TryFindIdCard(target, out var id)) { - presumedName = string.IsNullOrWhiteSpace(id.FullName) ? null : id.FullName; - presumedJob = id.JobTitle?.ToLowerInvariant(); + presumedName = string.IsNullOrWhiteSpace(id.Comp.FullName) ? null : id.Comp.FullName; + presumedJob = id.Comp.JobTitle?.ToLowerInvariant(); } // If it didn't find a job, that's fine. diff --git a/Content.Server/IgnitionSource/IgnitionSourceSystem.cs b/Content.Server/IgnitionSource/IgnitionSourceSystem.cs index 6984dbf56bcd46..b70cf7a9a7c8d0 100644 --- a/Content.Server/IgnitionSource/IgnitionSourceSystem.cs +++ b/Content.Server/IgnitionSource/IgnitionSourceSystem.cs @@ -41,9 +41,9 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var (component,transform) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var source, out var component, out var transform)) { - var source = component.Owner; if (!component.Ignited) continue; diff --git a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs index d50ce8df1fdabc..6ce53dc53021c8 100644 --- a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs @@ -12,7 +12,6 @@ using Content.Shared.Kitchen; using Content.Shared.Popups; using Content.Shared.Random; -using Content.Shared.Random.Helpers; using Content.Shared.Stacks; using JetBrains.Annotations; using Robust.Server.GameObjects; @@ -59,10 +58,9 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var (active, reagentGrinder) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var active, out var reagentGrinder)) { - var uid = reagentGrinder.Owner; - if (active.EndTime > _timing.CurTime) continue; diff --git a/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs b/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs index 29f5dd7f41d0ad..f4db4216cfe1f6 100644 --- a/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs +++ b/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs @@ -9,8 +9,6 @@ using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Shared.Audio; -using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.Light.EntitySystems @@ -36,15 +34,18 @@ public override void Initialize() public override void Update(float frameTime) { - foreach (var light in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var light)) { - UpdateLight(light, frameTime); + UpdateLight((uid, light), frameTime); } } - private void UpdateLight(ExpendableLightComponent component, float frameTime) + private void UpdateLight(Entity ent, float frameTime) { - if (!component.Activated) return; + var component = ent.Comp; + if (!component.Activated) + return; component.StateExpiryTime -= frameTime; @@ -56,25 +57,25 @@ private void UpdateLight(ExpendableLightComponent component, float frameTime) component.CurrentState = ExpendableLightState.Fading; component.StateExpiryTime = component.FadeOutDuration; - UpdateVisualizer(component); + UpdateVisualizer(ent); break; default: case ExpendableLightState.Fading: component.CurrentState = ExpendableLightState.Dead; - var meta = MetaData(component.Owner); - _metaData.SetEntityName(component.Owner, Loc.GetString(component.SpentName), meta); - _metaData.SetEntityDescription(component.Owner, Loc.GetString(component.SpentDesc), meta); + var meta = MetaData(ent); + _metaData.SetEntityName(ent, Loc.GetString(component.SpentName), meta); + _metaData.SetEntityDescription(ent, Loc.GetString(component.SpentDesc), meta); - _tagSystem.AddTag(component.Owner, "Trash"); + _tagSystem.AddTag(ent, "Trash"); - UpdateSounds(component); - UpdateVisualizer(component); + UpdateSounds(ent); + UpdateVisualizer(ent); - if (TryComp(component.Owner, out var item)) + if (TryComp(ent, out var item)) { - _item.SetHeldPrefix(component.Owner, "unlit", item); + _item.SetHeldPrefix(ent, "unlit", item); } break; @@ -85,20 +86,21 @@ private void UpdateLight(ExpendableLightComponent component, float frameTime) /// /// Enables the light if it is not active. Once active it cannot be turned off. /// - public bool TryActivate(ExpendableLightComponent component) + public bool TryActivate(Entity ent) { + var component = ent.Comp; if (!component.Activated && component.CurrentState == ExpendableLightState.BrandNew) { - if (TryComp(component.Owner, out var item)) + if (TryComp(ent, out var item)) { - _item.SetHeldPrefix(component.Owner, "lit", item); + _item.SetHeldPrefix(ent, "lit", item); } component.CurrentState = ExpendableLightState.Lit; component.StateExpiryTime = component.GlowDuration; - UpdateSounds(component); - UpdateVisualizer(component); + UpdateSounds(ent); + UpdateVisualizer(ent); return true; } @@ -106,49 +108,51 @@ public bool TryActivate(ExpendableLightComponent component) return false; } - private void UpdateVisualizer(ExpendableLightComponent component, AppearanceComponent? appearance = null) + private void UpdateVisualizer(Entity ent, AppearanceComponent? appearance = null) { - if (!Resolve(component.Owner, ref appearance, false)) return; + var component = ent.Comp; + if (!Resolve(ent, ref appearance, false)) + return; - _appearance.SetData(appearance.Owner, ExpendableLightVisuals.State, component.CurrentState, appearance); + _appearance.SetData(ent, ExpendableLightVisuals.State, component.CurrentState, appearance); switch (component.CurrentState) { case ExpendableLightState.Lit: - _appearance.SetData(appearance.Owner, ExpendableLightVisuals.Behavior, component.TurnOnBehaviourID, appearance); + _appearance.SetData(ent, ExpendableLightVisuals.Behavior, component.TurnOnBehaviourID, appearance); break; case ExpendableLightState.Fading: - _appearance.SetData(appearance.Owner, ExpendableLightVisuals.Behavior, component.FadeOutBehaviourID, appearance); + _appearance.SetData(ent, ExpendableLightVisuals.Behavior, component.FadeOutBehaviourID, appearance); break; case ExpendableLightState.Dead: - _appearance.SetData(appearance.Owner, ExpendableLightVisuals.Behavior, string.Empty, appearance); + _appearance.SetData(ent, ExpendableLightVisuals.Behavior, string.Empty, appearance); var isHotEvent = new IsHotEvent() {IsHot = true}; - RaiseLocalEvent(component.Owner, isHotEvent); + RaiseLocalEvent(ent, isHotEvent); break; } } - private void UpdateSounds(ExpendableLightComponent component) + private void UpdateSounds(Entity ent) { - var uid = component.Owner; + var component = ent.Comp; switch (component.CurrentState) { case ExpendableLightState.Lit: - _audio.PlayPvs(component.LitSound, uid); + _audio.PlayPvs(component.LitSound, ent); break; case ExpendableLightState.Fading: break; default: - _audio.PlayPvs(component.DieSound, uid); + _audio.PlayPvs(component.DieSound, ent); break; } - if (TryComp(uid, out var clothing)) + if (TryComp(ent, out var clothing)) { - _clothing.SetEquippedPrefix(uid, component.Activated ? "Activated" : string.Empty, clothing); + _clothing.SetEquippedPrefix(ent, component.Activated ? "Activated" : string.Empty, clothing); } } @@ -163,21 +167,23 @@ private void OnExpLightInit(EntityUid uid, ExpendableLightComponent component, C EntityManager.EnsureComponent(uid); } - private void OnExpLightUse(EntityUid uid, ExpendableLightComponent component, UseInHandEvent args) + private void OnExpLightUse(Entity ent, ref UseInHandEvent args) { - if (args.Handled) return; + if (args.Handled) + return; + var isHotEvent = new IsHotEvent() {IsHot = true}; - RaiseLocalEvent(uid, isHotEvent); - if (TryActivate(component)) + RaiseLocalEvent(ent, isHotEvent); + if (TryActivate(ent)) args.Handled = true; } - private void AddIgniteVerb(EntityUid uid, ExpendableLightComponent component, GetVerbsEvent args) + private void AddIgniteVerb(Entity ent, ref GetVerbsEvent args) { if (!args.CanAccess || !args.CanInteract) return; - if (component.CurrentState != ExpendableLightState.BrandNew) + if (ent.Comp.CurrentState != ExpendableLightState.BrandNew) return; // Ignite the flare or make the glowstick glow. @@ -186,7 +192,7 @@ private void AddIgniteVerb(EntityUid uid, ExpendableLightComponent component, Ge { Text = Loc.GetString("expendable-light-start-verb"), Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/light.svg.192dpi.png")), - Act = () => TryActivate(component) + Act = () => TryActivate(ent) }; args.Verbs.Add(verb); } diff --git a/Content.Server/Light/EntitySystems/HandheldLightSystem.cs b/Content.Server/Light/EntitySystems/HandheldLightSystem.cs index ff3c61bc6110cb..f3e7eaca0eab6b 100644 --- a/Content.Server/Light/EntitySystems/HandheldLightSystem.cs +++ b/Content.Server/Light/EntitySystems/HandheldLightSystem.cs @@ -9,18 +9,14 @@ using Content.Shared.Rounding; using Content.Shared.Toggleable; using Content.Shared.Verbs; -using JetBrains.Annotations; -using Robust.Server.GameObjects; using Robust.Shared.Containers; using Robust.Shared.GameStates; -using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Server.Light.EntitySystems { public sealed class HandheldLightSystem : SharedHandheldLightSystem { - [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly ActionsSystem _actions = default!; [Dependency] private readonly ActionContainerSystem _actionContainer = default!; [Dependency] private readonly PopupSystem _popup = default!; @@ -31,7 +27,7 @@ public sealed class HandheldLightSystem : SharedHandheldLightSystem // TODO: Ideally you'd be able to subscribe to power stuff to get events at certain percentages.. or something? // But for now this will be better anyway. - private readonly HashSet _activeLights = new(); + private readonly HashSet> _activeLights = new(); public override void Initialize() { @@ -55,22 +51,16 @@ public override void Initialize() SubscribeLocalEvent(OnEntRemoved); } - private void OnEntInserted( - EntityUid uid, - HandheldLightComponent component, - EntInsertedIntoContainerMessage args) + private void OnEntInserted(Entity ent, ref EntInsertedIntoContainerMessage args) { // Not guaranteed to be the correct container for our slot, I don't care. - UpdateLevel(uid, component); + UpdateLevel(ent); } - private void OnEntRemoved( - EntityUid uid, - HandheldLightComponent component, - EntRemovedFromContainerMessage args) + private void OnEntRemoved(Entity ent, ref EntRemovedFromContainerMessage args) { // Ditto above - UpdateLevel(uid, component); + UpdateLevel(ent); } private void OnGetActions(EntityUid uid, HandheldLightComponent component, GetItemActionsEvent args) @@ -78,28 +68,29 @@ private void OnGetActions(EntityUid uid, HandheldLightComponent component, GetIt args.AddAction(ref component.ToggleActionEntity, component.ToggleAction); } - private void OnToggleAction(EntityUid uid, HandheldLightComponent component, ToggleActionEvent args) + private void OnToggleAction(Entity ent, ref ToggleActionEvent args) { if (args.Handled) return; - if (component.Activated) - TurnOff(uid, component); + if (ent.Comp.Activated) + TurnOff(ent); else - TurnOn(args.Performer, uid, component); + TurnOn(args.Performer, ent); args.Handled = true; } - private void OnGetState(EntityUid uid, HandheldLightComponent component, ref ComponentGetState args) + private void OnGetState(Entity ent, ref ComponentGetState args) { - args.State = new HandheldLightComponent.HandheldLightComponentState(component.Activated, GetLevel(uid, component)); + args.State = new HandheldLightComponent.HandheldLightComponentState(ent.Comp.Activated, GetLevel(ent)); } - private void OnMapInit(EntityUid uid, HandheldLightComponent component, MapInitEvent args) + private void OnMapInit(Entity ent, ref MapInitEvent args) { - _actionContainer.EnsureAction(uid, ref component.ToggleActionEntity, component.ToggleAction); - _actions.AddAction(uid, ref component.SelfToggleActionEntity, component.ToggleAction); + var component = ent.Comp; + _actionContainer.EnsureAction(ent, ref component.ToggleActionEntity, component.ToggleAction); + _actions.AddAction(ent, ref component.SelfToggleActionEntity, component.ToggleAction); } private void OnShutdown(EntityUid uid, HandheldLightComponent component, ComponentShutdown args) @@ -108,31 +99,31 @@ private void OnShutdown(EntityUid uid, HandheldLightComponent component, Compone _actions.RemoveAction(uid, component.SelfToggleActionEntity); } - private byte? GetLevel(EntityUid uid, HandheldLightComponent component) + private byte? GetLevel(Entity ent) { // Curently every single flashlight has the same number of levels for status and that's all it uses the charge for // Thus we'll just check if the level changes. - if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery)) + if (!_powerCell.TryGetBatteryFromSlot(ent, out var battery)) return null; - if (MathHelper.CloseToPercent(battery.CurrentCharge, 0) || component.Wattage > battery.CurrentCharge) + if (MathHelper.CloseToPercent(battery.CurrentCharge, 0) || ent.Comp.Wattage > battery.CurrentCharge) return 0; return (byte?) ContentHelpers.RoundToNearestLevels(battery.CurrentCharge / battery.MaxCharge * 255, 255, HandheldLightComponent.StatusLevels); } - private void OnRemove(EntityUid uid, HandheldLightComponent component, ComponentRemove args) + private void OnRemove(Entity ent, ref ComponentRemove args) { - _activeLights.Remove(component); + _activeLights.Remove(ent); } - private void OnActivate(EntityUid uid, HandheldLightComponent component, ActivateInWorldEvent args) + private void OnActivate(Entity ent, ref ActivateInWorldEvent args) { - if (args.Handled || !component.ToggleOnInteract) + if (args.Handled || !ent.Comp.ToggleOnInteract) return; - if (ToggleStatus(args.User, uid, component)) + if (ToggleStatus(args.User, ent)) args.Handled = true; } @@ -140,9 +131,9 @@ private void OnActivate(EntityUid uid, HandheldLightComponent component, Activat /// Illuminates the light if it is not active, extinguishes it if it is active. ///
/// True if the light's status was toggled, false otherwise. - public bool ToggleStatus(EntityUid user, EntityUid uid, HandheldLightComponent component) + public bool ToggleStatus(EntityUid user, Entity ent) { - return component.Activated ? TurnOff(uid, component) : TurnOn(user, uid, component); + return ent.Comp.Activated ? TurnOff(ent) : TurnOn(user, ent); } private void OnExamine(EntityUid uid, HandheldLightComponent component, ExaminedEvent args) @@ -160,20 +151,20 @@ public override void Shutdown() public override void Update(float frameTime) { - var toRemove = new RemQueue(); + var toRemove = new RemQueue>(); foreach (var handheld in _activeLights) { - var uid = handheld.Owner; - - if (handheld.Deleted) + if (handheld.Comp.Deleted) { toRemove.Add(handheld); continue; } - if (Paused(uid)) continue; - TryUpdate(uid, handheld, frameTime); + if (Paused(handheld)) + continue; + + TryUpdate(handheld, frameTime); } foreach (var light in toRemove) @@ -182,39 +173,41 @@ public override void Update(float frameTime) } } - private void AddToggleLightVerb(EntityUid uid, HandheldLightComponent component, GetVerbsEvent args) + private void AddToggleLightVerb(Entity ent, ref GetVerbsEvent args) { - if (!args.CanAccess || !args.CanInteract || !component.ToggleOnInteract) + if (!args.CanAccess || !args.CanInteract || !ent.Comp.ToggleOnInteract) return; + var @event = args; ActivationVerb verb = new() { Text = Loc.GetString("verb-common-toggle-light"), Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/light.svg.192dpi.png")), - Act = component.Activated - ? () => TurnOff(uid, component) - : () => TurnOn(args.User, uid, component) + Act = ent.Comp.Activated + ? () => TurnOff(ent) + : () => TurnOn(@event.User, ent) }; args.Verbs.Add(verb); } - public bool TurnOff(EntityUid uid, HandheldLightComponent component, bool makeNoise = true) + public bool TurnOff(Entity ent, bool makeNoise = true) { - if (!component.Activated || !_lights.TryGetLight(uid, out var pointLightComponent)) + if (!ent.Comp.Activated || !_lights.TryGetLight(ent, out var pointLightComponent)) { return false; } - _lights.SetEnabled(uid, false, pointLightComponent); - SetActivated(uid, false, component, makeNoise); - component.Level = null; - _activeLights.Remove(component); + _lights.SetEnabled(ent, false, pointLightComponent); + SetActivated(ent, false, ent, makeNoise); + ent.Comp.Level = null; + _activeLights.Remove(ent); return true; } - public bool TurnOn(EntityUid user, EntityUid uid, HandheldLightComponent component) + public bool TurnOn(EntityUid user, Entity uid) { + var component = uid.Comp; if (component.Activated || !_lights.TryGetLight(uid, out var pointLightComponent)) { return false; @@ -240,17 +233,18 @@ public bool TurnOn(EntityUid user, EntityUid uid, HandheldLightComponent compone _lights.SetEnabled(uid, true, pointLightComponent); SetActivated(uid, true, component, true); - _activeLights.Add(component); + _activeLights.Add(uid); return true; } - public void TryUpdate(EntityUid uid, HandheldLightComponent component, float frameTime) + public void TryUpdate(Entity uid, float frameTime) { + var component = uid.Comp; if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery) && !TryComp(uid, out battery)) { - TurnOff(uid, component, false); + TurnOff(uid, false); return; } @@ -271,20 +265,20 @@ public void TryUpdate(EntityUid uid, HandheldLightComponent component, float fra } if (component.Activated && !battery.TryUseCharge(component.Wattage * frameTime)) - TurnOff(uid, component, false); + TurnOff(uid, false); - UpdateLevel(uid, component); + UpdateLevel(uid); } - private void UpdateLevel(EntityUid uid, HandheldLightComponent comp) + private void UpdateLevel(Entity ent) { - var level = GetLevel(uid, comp); + var level = GetLevel(ent); - if (level == comp.Level) + if (level == ent.Comp.Level) return; - comp.Level = level; - Dirty(comp); + ent.Comp.Level = level; + Dirty(ent); } } } diff --git a/Content.Server/Light/EntitySystems/MatchboxSystem.cs b/Content.Server/Light/EntitySystems/MatchboxSystem.cs index 606b2c00220f71..9a73e44f8783af 100644 --- a/Content.Server/Light/EntitySystems/MatchboxSystem.cs +++ b/Content.Server/Light/EntitySystems/MatchboxSystem.cs @@ -21,7 +21,7 @@ private void OnInteractUsing(EntityUid uid, MatchboxComponent component, Interac && EntityManager.TryGetComponent(args.Used, out MatchstickComponent? matchstick) && matchstick.CurrentState == SmokableState.Unlit) { - _stickSystem.Ignite(args.Used, matchstick, args.User); + _stickSystem.Ignite((args.Used, matchstick), args.User); args.Handled = true; } } diff --git a/Content.Server/Light/EntitySystems/MatchstickSystem.cs b/Content.Server/Light/EntitySystems/MatchstickSystem.cs index 7fe8aa92376601..88f416ce9d46e5 100644 --- a/Content.Server/Light/EntitySystems/MatchstickSystem.cs +++ b/Content.Server/Light/EntitySystems/MatchstickSystem.cs @@ -19,7 +19,7 @@ public sealed class MatchstickSystem : EntitySystem [Dependency] private readonly SharedPointLightSystem _lights = default!; [Dependency] private readonly TransformSystem _transformSystem = default!; - private HashSet _litMatches = new(); + private readonly HashSet> _litMatches = new(); public override void Initialize() { @@ -29,42 +29,43 @@ public override void Initialize() SubscribeLocalEvent(OnShutdown); } - private void OnShutdown(EntityUid uid, MatchstickComponent component, ComponentShutdown args) + private void OnShutdown(Entity ent, ref ComponentShutdown args) { - _litMatches.Remove(component); + _litMatches.Remove(ent); } public override void Update(float frameTime) { base.Update(frameTime); + foreach (var match in _litMatches) { - if (match.CurrentState != SmokableState.Lit || Paused(match.Owner) || match.Deleted) + if (match.Comp.CurrentState != SmokableState.Lit || Paused(match) || match.Comp.Deleted) continue; - var xform = Transform(match.Owner); + var xform = Transform(match); if (xform.GridUid is not {} gridUid) return; - var position = _transformSystem.GetGridOrMapTilePosition(match.Owner, xform); + var position = _transformSystem.GetGridOrMapTilePosition(match, xform); - _atmosphereSystem.HotspotExpose(gridUid, position, 400, 50, match.Owner, true); + _atmosphereSystem.HotspotExpose(gridUid, position, 400, 50, match, true); } } - private void OnInteractUsing(EntityUid uid, MatchstickComponent component, InteractUsingEvent args) + private void OnInteractUsing(Entity ent, ref InteractUsingEvent args) { - if (args.Handled || component.CurrentState != SmokableState.Unlit) + if (args.Handled || ent.Comp.CurrentState != SmokableState.Unlit) return; var isHotEvent = new IsHotEvent(); - RaiseLocalEvent(args.Used, isHotEvent, false); + RaiseLocalEvent(args.Used, isHotEvent); if (!isHotEvent.IsHot) return; - Ignite(uid, component, args.User); + Ignite(ent, args.User); args.Handled = true; } @@ -73,19 +74,21 @@ private void OnIsHotEvent(EntityUid uid, MatchstickComponent component, IsHotEve args.IsHot = component.CurrentState == SmokableState.Lit; } - public void Ignite(EntityUid uid, MatchstickComponent component, EntityUid user) + public void Ignite(Entity matchstick, EntityUid user) { + var component = matchstick.Comp; + // Play Sound - SoundSystem.Play(component.IgniteSound.GetSound(), Filter.Pvs(component.Owner), - component.Owner, AudioHelpers.WithVariation(0.125f).WithVolume(-0.125f)); + SoundSystem.Play(component.IgniteSound.GetSound(), Filter.Pvs(matchstick), + matchstick, AudioHelpers.WithVariation(0.125f).WithVolume(-0.125f)); // Change state - SetState(uid, component, SmokableState.Lit); - _litMatches.Add(component); - component.Owner.SpawnTimer(component.Duration * 1000, delegate + SetState(matchstick, component, SmokableState.Lit); + _litMatches.Add(matchstick); + matchstick.Owner.SpawnTimer(component.Duration * 1000, delegate { - SetState(uid, component, SmokableState.Burnt); - _litMatches.Remove(component); + SetState(matchstick, component, SmokableState.Burnt); + _litMatches.Remove(matchstick); }); } diff --git a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs index 69d9b669557bf2..cd4322aa26720c 100644 --- a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs +++ b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs @@ -1,16 +1,20 @@ using Content.Server.Administration.Logs; using Content.Server.Clothing.Components; +using Content.Server.DeviceLinking.Events; +using Content.Server.DeviceLinking.Systems; using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; +using Content.Server.Emp; using Content.Server.Ghost; using Content.Server.Light.Components; using Content.Server.Power.Components; -using Content.Server.Temperature.Components; using Content.Shared.Audio; using Content.Shared.Damage; using Content.Shared.Database; +using Content.Shared.DoAfter; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; +using Content.Shared.Inventory; using Content.Shared.Light; using Content.Shared.Light.Components; using Content.Shared.Popups; @@ -19,11 +23,6 @@ using Robust.Shared.Containers; using Robust.Shared.Player; using Robust.Shared.Timing; -using Content.Shared.DoAfter; -using Content.Server.Emp; -using Content.Server.DeviceLinking.Events; -using Content.Server.DeviceLinking.Systems; -using Content.Shared.Inventory; namespace Content.Server.Light.EntitySystems { @@ -333,7 +332,7 @@ private void OnGhostBoo(EntityUid uid, PoweredLightComponent light, GhostBooEven light.LastGhostBlink = time; ToggleBlinkingLight(uid, light, true); - light.Owner.SpawnTimer(light.GhostBlinkingTime, () => + uid.SpawnTimer(light.GhostBlinkingTime, () => { ToggleBlinkingLight(uid, light, false); }); diff --git a/Content.Server/Magic/MagicSystem.cs b/Content.Server/Magic/MagicSystem.cs index 9cca5fa32cc2c4..4fbd9e3ec78de5 100644 --- a/Content.Server/Magic/MagicSystem.cs +++ b/Content.Server/Magic/MagicSystem.cs @@ -16,13 +16,13 @@ using Content.Shared.Magic.Events; using Content.Shared.Maps; using Content.Shared.Physics; -using Robust.Shared.Spawners; using Content.Shared.Storage; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Random; using Robust.Shared.Serialization.Manager; +using Robust.Shared.Spawners; namespace Content.Server.Magic; @@ -309,7 +309,7 @@ private void OnKnockSpell(KnockSpellEvent args) _boltsSystem.SetBoltsDown(entity, bolts, false); if (TryComp(entity, out var doorComp) && doorComp.State is not DoorState.Open) - _doorSystem.StartOpening(doorComp.Owner); + _doorSystem.StartOpening(entity); } } diff --git a/Content.Server/MassMedia/Systems/NewsSystem.cs b/Content.Server/MassMedia/Systems/NewsSystem.cs index f5b17fefb89844..98bfe702b6aa4b 100644 --- a/Content.Server/MassMedia/Systems/NewsSystem.cs +++ b/Content.Server/MassMedia/Systems/NewsSystem.cs @@ -1,25 +1,24 @@ +using System.Linq; +using Content.Server.Administration.Logs; +using Content.Server.CartridgeLoader; +using Content.Server.CartridgeLoader.Cartridges; +using Content.Server.GameTicking; using Content.Server.MassMedia.Components; using Content.Server.PDA.Ringer; +using Content.Server.Popups; +using Content.Server.StationRecords.Systems; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; +using Content.Shared.CartridgeLoader; +using Content.Shared.CartridgeLoader.Cartridges; +using Content.Shared.Database; using Content.Shared.GameTicking; using Content.Shared.MassMedia.Components; using Content.Shared.MassMedia.Systems; using Content.Shared.PDA; using Robust.Server.GameObjects; -using System.Linq; -using Content.Server.Administration.Logs; -using Content.Server.CartridgeLoader.Cartridges; -using Content.Shared.CartridgeLoader; -using Content.Shared.CartridgeLoader.Cartridges; -using Content.Server.CartridgeLoader; -using Content.Server.GameTicking; -using Robust.Shared.Timing; -using Content.Server.Popups; -using Content.Server.StationRecords.Systems; -using Content.Shared.Database; using Robust.Shared.Containers; -using Robust.Shared.Utility; +using Robust.Shared.Timing; namespace Content.Server.MassMedia.Systems; @@ -222,7 +221,7 @@ private void UpdateReadDevices() while (query.MoveNext(out var owner, out var comp)) { if (EntityManager.TryGetComponent(comp.ActiveProgram, out var cartridge)) - UpdateReadUi(cartridge.Owner, comp.Owner, cartridge); + UpdateReadUi(comp.ActiveProgram.Value, owner, cartridge); } } @@ -267,14 +266,14 @@ public override void Update(float frameTime) base.Update(frameTime); var query = EntityQueryEnumerator(); - while (query.MoveNext(out var comp)) + while (query.MoveNext(out var uid, out var comp)) { if (comp.ShareAvalible || _timing.CurTime < comp.NextShare) continue; comp.ShareAvalible = true; - UpdateWriteUi(comp.Owner, comp); + UpdateWriteUi(uid, comp); } } } diff --git a/Content.Server/Mech/Systems/MechSystem.Filtering.cs b/Content.Server/Mech/Systems/MechSystem.Filtering.cs index 930a2afbd1582a..3de151ba705f52 100644 --- a/Content.Server/Mech/Systems/MechSystem.Filtering.cs +++ b/Content.Server/Mech/Systems/MechSystem.Filtering.cs @@ -3,7 +3,6 @@ using Content.Server.Mech.Components; using Content.Shared.Atmos; using Content.Shared.Mech.Components; -using Robust.Shared.GameObjects; namespace Content.Server.Mech.Systems; @@ -58,9 +57,9 @@ private void OnFilterUpdate(EntityUid uid, MechAirFilterComponent filter, AtmosD var coordinates = Transform(uid).MapPosition; GasMixture? destination = null; - if (_map.TryFindGridAt(coordinates, out _, out var grid)) + if (_map.TryFindGridAt(coordinates, out var gridId, out var grid)) { - var tile = grid.GetTileRef(coordinates); + var tile = _mapSystem.GetTileRef(gridId, grid, coordinates); destination = _atmosphere.GetTileMixture(tile.GridUid, null, tile.GridIndices, true); } diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index 8c34f875bfe003..fd8f8fd76790e5 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -32,6 +32,7 @@ public sealed partial class MechSystem : SharedMechSystem [Dependency] private readonly ContainerSystem _container = default!; [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly IMapManager _map = default!; + [Dependency] private readonly MapSystem _mapSystem = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly UserInterfaceSystem _ui = default!; diff --git a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs index 45f8d2ed98325d..f16d13c23cbac8 100644 --- a/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs +++ b/Content.Server/Medical/BiomassReclaimer/BiomassReclaimerSystem.cs @@ -51,7 +51,8 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var (_, reclaimer) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var _, out var reclaimer)) { reclaimer.ProcessingTimer -= frameTime; reclaimer.RandomMessTimer -= frameTime; @@ -62,11 +63,11 @@ public override void Update(float frameTime) { Solution blood = new(); blood.AddReagent(reclaimer.BloodReagent, 50); - _puddleSystem.TrySpillAt(reclaimer.Owner, blood, out _); + _puddleSystem.TrySpillAt(uid, blood, out _); } if (_robustRandom.Prob(0.03f) && reclaimer.SpawnedEntities.Count > 0) { - var thrown = Spawn(_robustRandom.Pick(reclaimer.SpawnedEntities).PrototypeId, Transform(reclaimer.Owner).Coordinates); + var thrown = Spawn(_robustRandom.Pick(reclaimer.SpawnedEntities).PrototypeId, Transform(uid).Coordinates); var direction = new Vector2(_robustRandom.Next(-30, 30), _robustRandom.Next(-30, 30)); _throwing.TryThrow(thrown, direction, _robustRandom.Next(1, 10)); } @@ -78,11 +79,11 @@ public override void Update(float frameTime) continue; } - _material.SpawnMultipleFromMaterial(reclaimer.CurrentExpectedYield, "Biomass", Transform(reclaimer.Owner).Coordinates); + _material.SpawnMultipleFromMaterial(reclaimer.CurrentExpectedYield, "Biomass", Transform(uid).Coordinates); reclaimer.BloodReagent = null; reclaimer.SpawnedEntities.Clear(); - RemCompDeferred(reclaimer.Owner); + RemCompDeferred(uid); } } public override void Initialize() @@ -100,19 +101,19 @@ public override void Initialize() SubscribeLocalEvent(OnDoAfter); } - private void OnSuicide(EntityUid uid, BiomassReclaimerComponent component, SuicideEvent args) + private void OnSuicide(Entity ent, ref SuicideEvent args) { if (args.Handled) return; - if (HasComp(uid)) + if (HasComp(ent)) return; - if (TryComp(uid, out var power) && !power.Powered) + if (TryComp(ent, out var power) && !power.Powered) return; - _popup.PopupEntity(Loc.GetString("biomass-reclaimer-suicide-others", ("victim", args.Victim)), uid, PopupType.LargeCaution); - StartProcessing(args.Victim, component); + _popup.PopupEntity(Loc.GetString("biomass-reclaimer-suicide-others", ("victim", args.Victim)), ent, PopupType.LargeCaution); + StartProcessing(args.Victim, ent); args.SetHandled(SuicideKind.Blunt); } @@ -137,22 +138,22 @@ private void OnPowerChanged(EntityUid uid, BiomassReclaimerComponent component, EnsureComp(uid); } else - RemComp(component.Owner); + RemComp(uid); } private void OnUnanchorAttempt(EntityUid uid, ActiveBiomassReclaimerComponent component, UnanchorAttemptEvent args) { args.Cancel(); } - private void OnAfterInteractUsing(EntityUid uid, BiomassReclaimerComponent component, AfterInteractUsingEvent args) + private void OnAfterInteractUsing(Entity reclaimer, ref AfterInteractUsingEvent args) { if (!args.CanReach || args.Target == null) return; - if (!HasComp(args.Used) || !CanGib(uid, args.Used, component)) + if (!HasComp(args.Used) || !CanGib(reclaimer, args.Used)) return; - _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, 7f, new ReclaimerDoAfterEvent(), uid, target: args.Target, used: args.Used) + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, 7f, new ReclaimerDoAfterEvent(), reclaimer, target: args.Target, used: args.Used) { BreakOnTargetMove = true, BreakOnUserMove = true, @@ -160,17 +161,17 @@ private void OnAfterInteractUsing(EntityUid uid, BiomassReclaimerComponent compo }); } - private void OnClimbedOn(EntityUid uid, BiomassReclaimerComponent component, ref ClimbedOnEvent args) + private void OnClimbedOn(Entity reclaimer, ref ClimbedOnEvent args) { - if (!CanGib(uid, args.Climber, component)) + if (!CanGib(reclaimer, args.Climber)) { var direction = new Vector2(_robustRandom.Next(-2, 2), _robustRandom.Next(-2, 2)); _throwing.TryThrow(args.Climber, direction, 0.5f); return; } - _adminLogger.Add(LogType.Action, LogImpact.Extreme, $"{ToPrettyString(args.Instigator):player} used a biomass reclaimer to gib {ToPrettyString(args.Climber):target} in {ToPrettyString(uid):reclaimer}"); + _adminLogger.Add(LogType.Action, LogImpact.Extreme, $"{ToPrettyString(args.Instigator):player} used a biomass reclaimer to gib {ToPrettyString(args.Climber):target} in {ToPrettyString(reclaimer):reclaimer}"); - StartProcessing(args.Climber, component); + StartProcessing(args.Climber, reclaimer); } private void OnRefreshParts(EntityUid uid, BiomassReclaimerComponent component, RefreshPartsEvent args) @@ -193,23 +194,24 @@ private void OnUpgradeExamine(EntityUid uid, BiomassReclaimerComponent component args.AddPercentageUpgrade("biomass-reclaimer-component-upgrade-biomass-yield", component.YieldPerUnitMass / component.BaseYieldPerUnitMass); } - private void OnDoAfter(EntityUid uid, BiomassReclaimerComponent component, DoAfterEvent args) + private void OnDoAfter(Entity reclaimer, ref ReclaimerDoAfterEvent args) { if (args.Handled || args.Cancelled || args.Args.Target == null || HasComp(args.Args.Target.Value)) return; - _adminLogger.Add(LogType.Action, LogImpact.Extreme, $"{ToPrettyString(args.Args.User):player} used a biomass reclaimer to gib {ToPrettyString(args.Args.Target.Value):target} in {ToPrettyString(uid):reclaimer}"); - StartProcessing(args.Args.Target.Value, component); + _adminLogger.Add(LogType.Action, LogImpact.Extreme, $"{ToPrettyString(args.Args.User):player} used a biomass reclaimer to gib {ToPrettyString(args.Args.Target.Value):target} in {ToPrettyString(reclaimer):reclaimer}"); + StartProcessing(args.Args.Target.Value, reclaimer); args.Handled = true; } - private void StartProcessing(EntityUid toProcess, BiomassReclaimerComponent component, PhysicsComponent? physics = null) + private void StartProcessing(EntityUid toProcess, Entity ent, PhysicsComponent? physics = null) { if (!Resolve(toProcess, ref physics)) return; - AddComp(component.Owner); + var component = ent.Comp; + AddComp(ent); if (TryComp(toProcess, out var stream)) { @@ -225,21 +227,21 @@ private void StartProcessing(EntityUid toProcess, BiomassReclaimerComponent comp QueueDel(toProcess); } - private bool CanGib(EntityUid uid, EntityUid dragged, BiomassReclaimerComponent component) + private bool CanGib(Entity reclaimer, EntityUid dragged) { - if (HasComp(uid)) + if (HasComp(reclaimer)) return false; if (!HasComp(dragged)) return false; - if (!Transform(uid).Anchored) + if (!Transform(reclaimer).Anchored) return false; - if (TryComp(uid, out var power) && !power.Powered) + if (TryComp(reclaimer, out var power) && !power.Powered) return false; - if (component.SafetyEnabled && !_mobState.IsDead(dragged)) + if (reclaimer.Comp.SafetyEnabled && !_mobState.IsDead(dragged)) return false; // Reject souled bodies in easy mode. diff --git a/Content.Server/Medical/CryoPodSystem.cs b/Content.Server/Medical/CryoPodSystem.cs index 7dbaf03a2e0a80..b94d6de6de022a 100644 --- a/Content.Server/Medical/CryoPodSystem.cs +++ b/Content.Server/Medical/CryoPodSystem.cs @@ -11,12 +11,14 @@ using Content.Server.NodeContainer.NodeGroups; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; +using Content.Server.Temperature.Components; using Content.Server.UserInterface; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; +using Content.Shared.Climbing.Systems; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; using Content.Shared.DoAfter; @@ -30,8 +32,6 @@ using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.Timing; -using Content.Server.Temperature.Components; -using Content.Shared.Climbing.Systems; namespace Content.Server.Medical; @@ -83,18 +83,20 @@ public override void Update(float frameTime) var itemSlotsQuery = GetEntityQuery(); var fitsInDispenserQuery = GetEntityQuery(); var solutionContainerManagerQuery = GetEntityQuery(); - foreach (var (_, cryoPod) in EntityQuery()) + var query = EntityQueryEnumerator(); + + while (query.MoveNext(out var uid, out _, out var cryoPod)) { - metaDataQuery.TryGetComponent(cryoPod.Owner, out var metaDataComponent); - if (curTime < cryoPod.NextInjectionTime + _metaDataSystem.GetPauseTime(cryoPod.Owner, metaDataComponent)) + metaDataQuery.TryGetComponent(uid, out var metaDataComponent); + if (curTime < cryoPod.NextInjectionTime + _metaDataSystem.GetPauseTime(uid, metaDataComponent)) continue; cryoPod.NextInjectionTime = curTime + TimeSpan.FromSeconds(cryoPod.BeakerTransferTime); - if (!itemSlotsQuery.TryGetComponent(cryoPod.Owner, out var itemSlotsComponent)) + if (!itemSlotsQuery.TryGetComponent(uid, out var itemSlotsComponent)) { continue; } - var container = _itemSlotsSystem.GetItemOrNull(cryoPod.Owner, cryoPod.SolutionContainerName, itemSlotsComponent); + var container = _itemSlotsSystem.GetItemOrNull(uid, cryoPod.SolutionContainerName, itemSlotsComponent); var patient = cryoPod.BodyContainer.ContainedEntity; if (container != null && container.Value.Valid diff --git a/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs b/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs index ae28db3f29a3df..f382d520ffe248 100644 --- a/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs +++ b/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs @@ -304,10 +304,10 @@ public void SetSensor(EntityUid uid, SuitSensorMode mode, EntityUid? userUid = n var userJob = Loc.GetString("suit-sensor-component-unknown-job"); if (_idCardSystem.TryFindIdCard(sensor.User.Value, out var card)) { - if (card.FullName != null) - userName = card.FullName; - if (card.JobTitle != null) - userJob = card.JobTitle; + if (card.Comp.FullName != null) + userName = card.Comp.FullName; + if (card.Comp.JobTitle != null) + userJob = card.Comp.JobTitle; } // get health mob state diff --git a/Content.Server/Mind/Commands/RenameCommand.cs b/Content.Server/Mind/Commands/RenameCommand.cs index afdd1caf9b8888..5674da4ffd3405 100644 --- a/Content.Server/Mind/Commands/RenameCommand.cs +++ b/Content.Server/Mind/Commands/RenameCommand.cs @@ -61,12 +61,12 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) { if (idCardSystem.TryFindIdCard(entityUid.Value, out var idCard)) { - idCardSystem.TryChangeFullName(idCard.Owner, name, idCard); + idCardSystem.TryChangeFullName(idCard, name, idCard); // Records // This is done here because ID cards are linked to station records if (_entManager.TrySystem(out var recordsSystem) - && _entManager.TryGetComponent(idCard.Owner, out StationRecordKeyStorageComponent? keyStorage) + && _entManager.TryGetComponent(idCard, out StationRecordKeyStorageComponent? keyStorage) && keyStorage.Key != null) { var origin = keyStorage.Key.Value.OriginStation; diff --git a/Content.Server/Morgue/CrematoriumSystem.cs b/Content.Server/Morgue/CrematoriumSystem.cs index d713b43f27aa2a..8d05d0abd14657 100644 --- a/Content.Server/Morgue/CrematoriumSystem.cs +++ b/Content.Server/Morgue/CrematoriumSystem.cs @@ -174,12 +174,13 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var (act, crem) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var act, out var crem)) { act.Accumulator += frameTime; if (act.Accumulator >= crem.CookTime) - FinishCooking(act.Owner, crem); + FinishCooking(uid, crem); } } } diff --git a/Content.Server/Morgue/MorgueSystem.cs b/Content.Server/Morgue/MorgueSystem.cs index 131689a139e9fa..b300336cd2ecb6 100644 --- a/Content.Server/Morgue/MorgueSystem.cs +++ b/Content.Server/Morgue/MorgueSystem.cs @@ -1,4 +1,3 @@ -using Content.Server.Morgue.Components; using Content.Server.Storage.Components; using Content.Shared.Body.Components; using Content.Shared.Examine; @@ -79,20 +78,21 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var (comp, storage, appearance) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var storage, out var appearance)) { comp.AccumulatedFrameTime += frameTime; - CheckContents(comp.Owner, comp, storage); + CheckContents(uid, comp, storage); if (comp.AccumulatedFrameTime < comp.BeepTime) continue; comp.AccumulatedFrameTime -= comp.BeepTime; - if (comp.DoSoulBeep && _appearance.TryGetData(appearance.Owner, MorgueVisuals.Contents, out var contents, appearance) && contents == MorgueContents.HasSoul) + if (comp.DoSoulBeep && _appearance.TryGetData(uid, MorgueVisuals.Contents, out var contents, appearance) && contents == MorgueContents.HasSoul) { - _audio.PlayPvs(comp.OccupantHasSoulAlarmSound, comp.Owner); + _audio.PlayPvs(comp.OccupantHasSoulAlarmSound, uid); } } } diff --git a/Content.Server/Movement/Systems/JetpackSystem.cs b/Content.Server/Movement/Systems/JetpackSystem.cs index 79b365be41238c..546336890fde2f 100644 --- a/Content.Server/Movement/Systems/JetpackSystem.cs +++ b/Content.Server/Movement/Systems/JetpackSystem.cs @@ -26,11 +26,12 @@ public override void Update(float frameTime) var toDisable = new ValueList<(EntityUid Uid, JetpackComponent Component)>(); var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var active, out var comp, out var gasTank)) + while (query.MoveNext(out var uid, out var active, out var comp, out var gasTankComp)) { if (_timing.CurTime < active.TargetTime) continue; + var gasTank = (uid, gasTankComp); active.TargetTime = _timing.CurTime + TimeSpan.FromSeconds(active.EffectCooldown); var usedAir = _gasTank.RemoveAir(gasTank, comp.MoleUsage); diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs index 72d6606c910920..c430c71958615b 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs @@ -1,24 +1,20 @@ using System.Diagnostics.CodeAnalysis; -using System.Linq; using System.Numerics; using System.Threading; using System.Threading.Tasks; using Content.Server.Destructible; using Content.Shared.Access.Components; -using Content.Shared.Climbing; +using Content.Shared.Climbing.Components; using Content.Shared.Doors.Components; using Content.Shared.NPC; using Content.Shared.Physics; -using Microsoft.Extensions.ObjectPool; using Robust.Shared.Collections; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Timing; using Robust.Shared.Utility; -using ClimbableComponent = Content.Shared.Climbing.Components.ClimbableComponent; namespace Content.Server.NPC.Pathfinding; @@ -102,6 +98,7 @@ private void UpdateGrid(ParallelOptions options) while (query.MoveNext(out var uid, out var comp)) { + var pathfinding = new Entity(uid, comp); // TODO: Dump all this shit and just do it live it's probably fast enough. if (comp.DirtyChunks.Count == 0 || curTime < comp.NextUpdate || @@ -120,7 +117,7 @@ private void UpdateGrid(ParallelOptions options) foreach (var origin in comp.DirtyChunks) { - var chunk = GetChunk(origin, uid, comp); + var chunk = GetChunk(origin, uid, pathfinding); dirt[idx] = chunk; idx++; } @@ -155,7 +152,7 @@ private void UpdateGrid(ParallelOptions options) var climbableQuery = GetEntityQuery(); var fixturesQuery = GetEntityQuery(); var xformQuery = GetEntityQuery(); - BuildBreadcrumbs(dirt[i], mapGridComp, accessQuery, destructibleQuery, doorQuery, climbableQuery, + BuildBreadcrumbs(dirt[i], (uid, mapGridComp), accessQuery, destructibleQuery, doorQuery, climbableQuery, fixturesQuery, xformQuery); }); @@ -204,7 +201,7 @@ private void UpdateGrid(ParallelOptions options) if (index != it1) return; - BuildNavmesh(chunk, comp); + BuildNavmesh(chunk, pathfinding); #if DEBUG Interlocked.Increment(ref updateCount); #endif @@ -254,24 +251,24 @@ private bool IsBodyRelevant(FixturesComponent fixtures) private void OnCollisionChange(ref CollisionChangeEvent ev) { - var xform = Transform(ev.Body.Owner); + var xform = Transform(ev.BodyUid); if (xform.GridUid == null) return; // This will also rebuild on door open / closes which I think is good? - var aabb = _lookup.GetAABBNoContainer(ev.Body.Owner, xform.Coordinates.Position, xform.LocalRotation); + var aabb = _lookup.GetAABBNoContainer(ev.BodyUid, xform.Coordinates.Position, xform.LocalRotation); DirtyChunkArea(xform.GridUid.Value, aabb); } private void OnCollisionLayerChange(ref CollisionLayerChangeEvent ev) { - var xform = Transform(ev.Body.Owner); + var xform = Transform(ev.Body); if (xform.GridUid == null) return; - var aabb = _lookup.GetAABBNoContainer(ev.Body.Owner, xform.Coordinates.Position, xform.LocalRotation); + var aabb = _lookup.GetAABBNoContainer(ev.Body, xform.Coordinates.Position, xform.LocalRotation); DirtyChunkArea(xform.GridUid.Value, aabb); } @@ -417,7 +414,7 @@ private Vector2i GetOrigin(EntityCoordinates coordinates, EntityUid gridUid) } private void BuildBreadcrumbs(GridPathfindingChunk chunk, - MapGridComponent grid, + Entity grid, EntityQuery accessQuery, EntityQuery destructibleQuery, EntityQuery doorQuery, @@ -450,7 +447,7 @@ private void BuildBreadcrumbs(GridPathfindingChunk chunk, var tilePos = new Vector2i(x, y) + gridOrigin; tilePolys.Clear(); - var tile = grid.GetTileRef(tilePos); + var tile = grid.Comp.GetTileRef(tilePos); var flags = tile.Tile.IsEmpty ? PathfindingBreadcrumbFlag.Space : PathfindingBreadcrumbFlag.None; // var isBorder = x < 0 || y < 0 || x == ChunkSize - 1 || y == ChunkSize - 1; @@ -469,7 +466,7 @@ private void BuildBreadcrumbs(GridPathfindingChunk chunk, var xform = xformQuery.GetComponent(ent); if (xform.ParentUid != grid.Owner || - grid.LocalToTile(xform.Coordinates) != tilePos) + grid.Comp.LocalToTile(xform.Coordinates) != tilePos) { continue; } @@ -648,13 +645,13 @@ to just get tiles at runtime. var polyData = points[x * SubStep + poly.Left, y * SubStep + poly.Bottom].Data; var neighbors = new HashSet(); - tilePoly.Add(new PathPoly(grid.Owner, chunk.Origin, GetIndex(x, y), box, polyData, neighbors)); + tilePoly.Add(new PathPoly(grid, chunk.Origin, GetIndex(x, y), box, polyData, neighbors)); } } } // Log.Debug($"Built breadcrumbs in {sw.Elapsed.TotalMilliseconds}ms"); - SendBreadcrumbs(chunk, grid.Owner); + SendBreadcrumbs(chunk, grid); } /// @@ -729,12 +726,13 @@ private void ClearOldPolys(GridPathfindingChunk chunk) } } - private void BuildNavmesh(GridPathfindingChunk chunk, GridPathfindingComponent component) + private void BuildNavmesh(GridPathfindingChunk chunk, Entity pathfinding) { var sw = new Stopwatch(); sw.Start(); var chunkPolys = chunk.Polygons; + var component = pathfinding.Comp; component.Chunks.TryGetValue(chunk.Origin + new Vector2i(-1, 0), out var leftChunk); component.Chunks.TryGetValue(chunk.Origin + new Vector2i(0, -1), out var bottomChunk); component.Chunks.TryGetValue(chunk.Origin + new Vector2i(1, 0), out var rightChunk); @@ -840,7 +838,7 @@ private void BuildNavmesh(GridPathfindingChunk chunk, GridPathfindingComponent c } // Log.Debug($"Built navmesh in {sw.Elapsed.TotalMilliseconds}ms"); - SendPolys(chunk, component.Owner, chunkPolys); + SendPolys(chunk, pathfinding, chunkPolys); } private void AddNeighbors(PathPoly polyA, PathPoly polyB) diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs index d8ecebc12cab09..bb0eff7b39116c 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using Content.Server.Administration.Managers; using Content.Server.Destructible; -using Content.Server.NPC.HTN; using Content.Server.NPC.Systems; using Content.Shared.Administration; using Content.Shared.NPC; @@ -577,9 +576,10 @@ private void SendBreadcrumbs(ICommonSession pSession) { var msg = new PathBreadcrumbsMessage(); - foreach (var comp in EntityQuery(true)) + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out var comp)) { - var netGrid = GetNetEntity(comp.Owner); + var netGrid = GetNetEntity(uid); msg.Breadcrumbs.Add(netGrid, new Dictionary>(comp.Chunks.Count)); @@ -626,9 +626,10 @@ private void SendPolys(ICommonSession pSession) { var msg = new PathPolysMessage(); - foreach (var comp in EntityQuery(true)) + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out var comp)) { - var netGrid = GetNetEntity(comp.Owner); + var netGrid = GetNetEntity(uid); msg.Polys.Add(netGrid, new Dictionary>>(comp.Chunks.Count)); diff --git a/Content.Server/NPC/Systems/NPCPerceptionSystem.RecentlyInjected.cs b/Content.Server/NPC/Systems/NPCPerceptionSystem.RecentlyInjected.cs index 5b0955a206f575..dd4ff6c65f19fd 100644 --- a/Content.Server/NPC/Systems/NPCPerceptionSystem.RecentlyInjected.cs +++ b/Content.Server/NPC/Systems/NPCPerceptionSystem.RecentlyInjected.cs @@ -10,14 +10,15 @@ public sealed partial class NPCPerceptionSystem /// private void UpdateRecentlyInjected(float frameTime) { - foreach (var entity in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var entity)) { entity.Accumulator += frameTime; if (entity.Accumulator < entity.RemoveTime.TotalSeconds) continue; entity.Accumulator = 0; - RemComp(entity.Owner); + RemComp(uid); } } } diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index d8ba19d2388a88..4a9df0e663b478 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -365,7 +365,7 @@ private void Add(NPCBlackboard blackboard, HashSet entities, UtilityQ var compZero = comps[0]; comps.RemoveAt(0); - foreach (var comp in _lookup.GetComponentsInRange(compZero.Component.GetType(), mapPos, vision)) + foreach (var comp in _lookup.GetEntitiesInRange(compZero.Component.GetType(), mapPos, vision)) { var ent = comp.Owner; diff --git a/Content.Server/NPC/Systems/NpcFactionSystem.cs b/Content.Server/NPC/Systems/NpcFactionSystem.cs index d6c23ca6afcf88..08c9353411d046 100644 --- a/Content.Server/NPC/Systems/NpcFactionSystem.cs +++ b/Content.Server/NPC/Systems/NpcFactionSystem.cs @@ -1,7 +1,7 @@ -using Content.Server.NPC.Components; -using Robust.Shared.Prototypes; using System.Linq; +using Content.Server.NPC.Components; using JetBrains.Annotations; +using Robust.Shared.Prototypes; namespace Content.Server.NPC.Systems; @@ -160,15 +160,15 @@ private IEnumerable GetNearbyFactions(EntityUid entity, float range, if (!xformQuery.TryGetComponent(entity, out var entityXform)) yield break; - foreach (var comp in _lookup.GetComponentsInRange(entityXform.MapPosition, range)) + foreach (var ent in _lookup.GetEntitiesInRange(entityXform.MapPosition, range)) { - if (comp.Owner == entity) + if (ent.Owner == entity) continue; - if (!factions.Overlaps(comp.Factions)) + if (!factions.Overlaps(ent.Comp.Factions)) continue; - yield return comp.Owner; + yield return ent.Owner; } } diff --git a/Content.Server/NodeContainer/EntitySystems/NodeContainerSystem.cs b/Content.Server/NodeContainer/EntitySystems/NodeContainerSystem.cs index d207f99422f511..99d18aeb3f9940 100644 --- a/Content.Server/NodeContainer/EntitySystems/NodeContainerSystem.cs +++ b/Content.Server/NodeContainer/EntitySystems/NodeContainerSystem.cs @@ -1,8 +1,8 @@ -using Content.Server.NodeContainer.Nodes; +using System.Diagnostics.CodeAnalysis; using Content.Server.NodeContainer.NodeGroups; +using Content.Server.NodeContainer.Nodes; using Content.Shared.Examine; using JetBrains.Annotations; -using System.Diagnostics.CodeAnalysis; namespace Content.Server.NodeContainer.EntitySystems { @@ -51,7 +51,7 @@ private void OnInitEvent(EntityUid uid, NodeContainerComponent component, Compon foreach (var (key, node) in component.Nodes) { node.Name = key; - node.Initialize(component.Owner, EntityManager); + node.Initialize(uid, EntityManager); } } diff --git a/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs b/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs index 55dca4f70d895f..d0e83e4f75e1a5 100644 --- a/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs +++ b/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs @@ -1,7 +1,5 @@ -using System.Linq; -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Station.Components; -using Content.Server.Station.Systems; using Content.Shared.Administration; using JetBrains.Annotations; using Robust.Shared.Console; @@ -42,14 +40,14 @@ public CompletionResult GetCompletion(IConsoleShell shell, string[] args) return CompletionResult.Empty; } - var stations = _entityManager - .EntityQuery() - .Select(stationData => - { - var meta = _entityManager.GetComponent(stationData.Owner); + var stations = new List(); + var query = _entityManager.EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var stationData)) + { + var meta = _entityManager.GetComponent(uid); - return new CompletionOption(stationData.Owner.ToString(), meta.EntityName); - }); + stations.Add(new CompletionOption(uid.ToString(), meta.EntityName)); + } return CompletionResult.FromHintOptions(stations, null); } diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs index 85e388e6007e04..8df25feebfabca 100644 --- a/Content.Server/Nuke/NukeCodePaperSystem.cs +++ b/Content.Server/Nuke/NukeCodePaperSystem.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using System.Linq; using Content.Server.Chat.Systems; using Content.Server.Fax; using Content.Server.Paper; @@ -103,9 +102,16 @@ private bool TryGetRelativeNukeCode( var codesMessage = new FormattedMessage(); // Find the first nuke that matches the passed location. - var query = EntityQuery().ToList(); - _random.Shuffle(query); - foreach (var nuke in query) + var nukes = new List>(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var nukeUid, out var nuke)) + { + nukes.Add((nukeUid, nuke)); + } + + _random.Shuffle(nukes); + + foreach (var (nukeUid, nuke) in nukes) { if (!onlyCurrentStation && (owningStation == null && @@ -116,7 +122,7 @@ private bool TryGetRelativeNukeCode( } codesMessage.PushNewline(); - codesMessage.AddMarkup(Loc.GetString("nuke-codes-list", ("name", MetaData(nuke.Owner).EntityName), ("code", nuke.Code))); + codesMessage.AddMarkup(Loc.GetString("nuke-codes-list", ("name", MetaData(nukeUid).EntityName), ("code", nuke.Code))); break; } diff --git a/Content.Server/Nutrition/EntitySystems/AnimalHusbandrySystem.cs b/Content.Server/Nutrition/EntitySystems/AnimalHusbandrySystem.cs index 94a80c4bd5e322..875c328bcb950b 100644 --- a/Content.Server/Nutrition/EntitySystems/AnimalHusbandrySystem.cs +++ b/Content.Server/Nutrition/EntitySystems/AnimalHusbandrySystem.cs @@ -1,6 +1,5 @@ using Content.Server.Administration.Logs; using Content.Server.Interaction.Components; -using Content.Server.Nutrition.Components; using Content.Server.Popups; using Content.Shared.Database; using Content.Shared.IdentityManagement; @@ -84,7 +83,8 @@ public bool TryReproduceNearby(EntityUid uid, ReproductiveComponent? component = var xform = Transform(uid); - var partners = _entityLookup.GetComponentsInRange(xform.Coordinates, component.BreedRange); + var partners = new HashSet>(); + _entityLookup.GetEntitiesInRange(xform.Coordinates, component.BreedRange, partners); if (partners.Count >= component.Capacity) return false; diff --git a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs index 81bba0eb79dc7b..88916e4cf2c31a 100644 --- a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs @@ -1,5 +1,3 @@ -using Content.Server.Chemistry.EntitySystems; -using Content.Server.Nutrition; using Content.Server.Nutrition.Components; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; @@ -8,7 +6,6 @@ using Content.Shared.FixedPoint; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; -using Content.Shared.Item; using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.Player; @@ -74,7 +71,7 @@ private bool TrySliceFood(EntityUid uid, EntityUid user, EntityUid usedItem, else { var xform = Transform(sliceUid); - _containerSystem.AttachParentToContainerOrGrid(xform); + _containerSystem.AttachParentToContainerOrGrid((sliceUid, xform)); xform.LocalRotation = 0; } @@ -113,7 +110,7 @@ private bool TrySliceFood(EntityUid uid, EntityUid user, EntityUid usedItem, else { var xform = Transform(sliceUid); - _containerSystem.AttachParentToContainerOrGrid(xform); + _containerSystem.AttachParentToContainerOrGrid((sliceUid, xform)); xform.LocalRotation = 0; } diff --git a/Content.Server/Payload/EntitySystems/PayloadSystem.cs b/Content.Server/Payload/EntitySystems/PayloadSystem.cs index 6e0b5cc51579df..f57024087d595c 100644 --- a/Content.Server/Payload/EntitySystems/PayloadSystem.cs +++ b/Content.Server/Payload/EntitySystems/PayloadSystem.cs @@ -96,8 +96,6 @@ private void OnEntityInserted(EntityUid uid, PayloadCaseComponent _, EntInserted if (_componentFactory.GetComponent(registration.Type) is not Component component) continue; - component.Owner = uid; - var temp = (object) component; _serializationManager.CopyTo(data.Component, ref temp); EntityManager.AddComponent(uid, (Component)temp!); diff --git a/Content.Server/Physics/Controllers/RandomWalkController.cs b/Content.Server/Physics/Controllers/RandomWalkController.cs index 8cffa32dbaed76..dc5608887e95a6 100644 --- a/Content.Server/Physics/Controllers/RandomWalkController.cs +++ b/Content.Server/Physics/Controllers/RandomWalkController.cs @@ -1,13 +1,12 @@ +using Content.Server.Physics.Components; +using Content.Shared.Follower.Components; +using Content.Shared.Throwing; using Robust.Server.GameObjects; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Controllers; using Robust.Shared.Random; using Robust.Shared.Timing; -using Content.Server.Physics.Components; -using Content.Shared.Follower.Components; -using Content.Shared.Throwing; - namespace Content.Server.Physics.Controllers; /// @@ -39,16 +38,17 @@ public override void UpdateBeforeSolve(bool prediction, float frameTime) { base.UpdateBeforeSolve(prediction, frameTime); - foreach(var (randomWalk, physics) in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var randomWalk, out var physics)) { - if (EntityManager.HasComponent(randomWalk.Owner) - || EntityManager.HasComponent(randomWalk.Owner) - || EntityManager.HasComponent(randomWalk.Owner)) + if (EntityManager.HasComponent(uid) + || EntityManager.HasComponent(uid) + || EntityManager.HasComponent(uid)) continue; var curTime = _timing.CurTime; if (randomWalk.NextStepTime <= curTime) - Update(randomWalk.Owner, randomWalk, physics); + Update(uid, randomWalk, physics); } } @@ -65,7 +65,7 @@ public void Update(EntityUid uid, RandomWalkComponent? randomWalk = null, Physic var curTime = _timing.CurTime; randomWalk.NextStepTime = curTime + TimeSpan.FromSeconds(_random.NextDouble(randomWalk.MinStepCooldown.TotalSeconds, randomWalk.MaxStepCooldown.TotalSeconds)); - if(!Resolve(randomWalk.Owner, ref physics)) + if(!Resolve(uid, ref physics)) return; var pushAngle = _random.NextAngle(); diff --git a/Content.Server/Pinpointer/ProximityBeeperSystem.cs b/Content.Server/Pinpointer/ProximityBeeperSystem.cs index 2083a3d98532bf..b473d973724e76 100644 --- a/Content.Server/Pinpointer/ProximityBeeperSystem.cs +++ b/Content.Server/Pinpointer/ProximityBeeperSystem.cs @@ -64,11 +64,8 @@ public void UpdateBeep(EntityUid uid, ProximityBeeperComponent? component = null var xform = xformQuery.GetComponent(uid); var compType = EntityManager.ComponentFactory.GetRegistration(component.Component).Type; float? closestDistance = null; - foreach (var comp in _entityLookup.GetComponentsInRange(compType, xform.MapPosition, component.MaximumDistance)) + foreach (var ent in _entityLookup.GetEntitiesInRange(compType, xform.MapPosition, component.MaximumDistance)) { - // forgive me father, for i have sinned. - var ent = comp.Owner; - var dist = (_transform.GetWorldPosition(xform, xformQuery) - _transform.GetWorldPosition(ent, xformQuery)).Length(); if (dist >= (closestDistance ?? float.MaxValue)) continue; diff --git a/Content.Server/PneumaticCannon/PneumaticCannonSystem.cs b/Content.Server/PneumaticCannon/PneumaticCannonSystem.cs index cbfc263018495f..f16a327e6bfd25 100644 --- a/Content.Server/PneumaticCannon/PneumaticCannonSystem.cs +++ b/Content.Server/PneumaticCannon/PneumaticCannonSystem.cs @@ -70,10 +70,11 @@ private void OnContainerInserting(EntityUid uid, PneumaticCannonComponent compon args.Cancel(); } - private void OnShoot(EntityUid uid, PneumaticCannonComponent component, ref GunShotEvent args) + private void OnShoot(Entity cannon, ref GunShotEvent args) { + var (uid, component) = cannon; // require a gas tank if it uses gas - var gas = GetGas(uid); + var gas = GetGas(cannon); if (gas == null && component.GasUsage > 0f) return; @@ -82,7 +83,7 @@ private void OnShoot(EntityUid uid, PneumaticCannonComponent component, ref GunS { _stun.TryParalyze(args.User, TimeSpan.FromSeconds(component.HighPowerStunTime), true, status); Popup.PopupEntity(Loc.GetString("pneumatic-cannon-component-power-stun", - ("cannon", component.Owner)), uid, args.User); + ("cannon", uid)), cannon, args.User); } // ignore gas stuff if the cannon doesn't use any @@ -90,14 +91,14 @@ private void OnShoot(EntityUid uid, PneumaticCannonComponent component, ref GunS return; // this should always be possible, as we'll eject the gas tank when it no longer is - var environment = _atmos.GetContainingMixture(component.Owner, false, true); - var removed = _gasTank.RemoveAir(gas, component.GasUsage); + var environment = _atmos.GetContainingMixture(cannon, false, true); + var removed = _gasTank.RemoveAir(gas.Value, component.GasUsage); if (environment != null && removed != null) { _atmos.Merge(environment, removed); } - if (gas.Air.TotalMoles >= component.GasUsage) + if (gas.Value.Comp.Air.TotalMoles >= component.GasUsage) return; // eject gas tank @@ -107,13 +108,13 @@ private void OnShoot(EntityUid uid, PneumaticCannonComponent component, ref GunS /// /// Returns whether the pneumatic cannon has enough gas to shoot an item, as well as the tank itself. /// - private GasTankComponent? GetGas(EntityUid uid) + private Entity? GetGas(EntityUid uid) { if (!Container.TryGetContainer(uid, PneumaticCannonComponent.TankSlotId, out var container) || container is not ContainerSlot slot || slot.ContainedEntity is not {} contained) return null; - return TryComp(contained, out var gasTank) ? gasTank : null; + return TryComp(contained, out var gasTank) ? (contained, gasTank) : null; } private float GetProjectileSpeedFromPower(PneumaticCannonComponent component) diff --git a/Content.Server/Pointing/EntitySystems/PointingSystem.cs b/Content.Server/Pointing/EntitySystems/PointingSystem.cs index 8f00125ea396e4..b253e32e3713f2 100644 --- a/Content.Server/Pointing/EntitySystems/PointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/PointingSystem.cs @@ -166,7 +166,7 @@ public bool TryPoint(ICommonSession? session, EntityCoordinates coords, EntityUi { var arrowVisibility = EntityManager.EnsureComponent(arrow); layer = playerVisibility.Layer; - _visibilitySystem.SetLayer(arrowVisibility, layer); + _visibilitySystem.SetLayer(arrow, arrowVisibility, layer); } // Get players that are in range and whose visibility layer matches the arrow's. @@ -274,26 +274,28 @@ public override void Update(float frameTime) { var currentTime = _gameTiming.CurTime; - foreach (var component in EntityQuery(true)) + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out var component)) { - Update(component, currentTime); + Update((uid, component), currentTime); } } - private void Update(PointingArrowComponent component, TimeSpan currentTime) + private void Update(Entity pointing, TimeSpan currentTime) { // TODO: That pause PR + var component = pointing.Comp; if (component.EndTime > currentTime) return; if (component.Rogue) { - RemComp(component.Owner); - EnsureComp(component.Owner); + RemComp(pointing); + EnsureComp(pointing); return; } - Del(component.Owner); + Del(pointing); } } } diff --git a/Content.Server/Pointing/EntitySystems/RoguePointingSystem.cs b/Content.Server/Pointing/EntitySystems/RoguePointingSystem.cs index 160dc80fc35a55..be3ceb3b08625a 100644 --- a/Content.Server/Pointing/EntitySystems/RoguePointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/RoguePointingSystem.cs @@ -1,12 +1,8 @@ -using System.Linq; using Content.Server.Explosion.EntitySystems; using Content.Server.Pointing.Components; using Content.Shared.Pointing.Components; using JetBrains.Annotations; -using Robust.Server.GameObjects; -using Robust.Shared.Player; using Robust.Shared.Random; -using DrawDepth = Content.Shared.DrawDepth.DrawDepth; namespace Content.Server.Pointing.EntitySystems { @@ -22,14 +18,19 @@ internal sealed class RoguePointingSystem : EntitySystem if (!Resolve(uid, ref component, ref transform)) return null; - var targets = EntityQuery().ToList(); + var targets = new List>(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var angeringUid, out var angeringComp)) + { + targets.Add((angeringUid, angeringComp)); + } if (targets.Count == 0) return null; var angering = _random.Pick(targets); - angering.RemainingAnger -= 1; - if (angering.RemainingAnger <= 0) + angering.Comp.RemainingAnger -= 1; + if (angering.Comp.RemainingAnger <= 0) RemComp(uid); return angering.Owner; @@ -53,9 +54,9 @@ public void SetTarget(EntityUid arrow, EntityUid target, RoguePointingArrowCompo public override void Update(float frameTime) { - foreach (var (component, transform) in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var component, out var transform)) { - var uid = component.Owner; component.Chasing ??= RandomNearbyPlayer(uid, component, transform); if (component.Chasing is not {Valid: true} chasing || Deleted(chasing)) @@ -68,7 +69,7 @@ public override void Update(float frameTime) if (component.TurningDelay > 0) { - var difference = EntityManager.GetComponent(chasing).WorldPosition - transform.WorldPosition; + var difference = Comp(chasing).WorldPosition - transform.WorldPosition; var angle = difference.ToAngle(); var adjusted = angle.Degrees + 90; var newAngle = Angle.FromDegrees(adjusted); @@ -83,7 +84,7 @@ public override void Update(float frameTime) UpdateAppearance(uid, component, transform); - var toChased = EntityManager.GetComponent(chasing).WorldPosition - transform.WorldPosition; + var toChased = Comp(chasing).WorldPosition - transform.WorldPosition; transform.WorldPosition += toChased * frameTime * component.ChasingSpeed; diff --git a/Content.Server/Polymorph/Systems/PolymorphSystem.cs b/Content.Server/Polymorph/Systems/PolymorphSystem.cs index 6a90928a44e4ef..fbf4961f4fd760 100644 --- a/Content.Server/Polymorph/Systems/PolymorphSystem.cs +++ b/Content.Server/Polymorph/Systems/PolymorphSystem.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Server.Actions; using Content.Server.Humanoid; using Content.Server.Inventory; @@ -173,10 +172,9 @@ private void OnBeforeFullySliced(EntityUid uid, PolymorphedEntityComponent comp, MakeSentientCommand.MakeSentient(child, EntityManager); var comp = _compFact.GetComponent(); - comp.Owner = child; comp.Parent = uid; comp.Prototype = proto.ID; - EntityManager.AddComponent(child, comp); + AddComp(child, comp); var childXform = Transform(child); childXform.LocalRotation = targetTransformComp.LocalRotation; diff --git a/Content.Server/Power/EntitySystems/CableSystem.Placer.cs b/Content.Server/Power/EntitySystems/CableSystem.Placer.cs index f4a38e7e65b3ba..c5ca36c3a158ec 100644 --- a/Content.Server/Power/EntitySystems/CableSystem.Placer.cs +++ b/Content.Server/Power/EntitySystems/CableSystem.Placer.cs @@ -1,11 +1,9 @@ using Content.Server.Administration.Logs; using Content.Server.Power.Components; -using Content.Server.Stack; using Content.Shared.Database; using Content.Shared.Interaction; using Content.Shared.Maps; using Content.Shared.Stacks; -using Robust.Shared.Map; namespace Content.Server.Power.EntitySystems; @@ -18,11 +16,14 @@ private void InitializeCablePlacer() SubscribeLocalEvent(OnCablePlacerAfterInteract); } - private void OnCablePlacerAfterInteract(EntityUid uid, CablePlacerComponent component, AfterInteractEvent args) + private void OnCablePlacerAfterInteract(Entity placer, ref AfterInteractEvent args) { - if (args.Handled || !args.CanReach) return; + if (args.Handled || !args.CanReach) + return; - if (component.CablePrototypeId == null) return; + var component = placer.Comp; + if (component.CablePrototypeId == null) + return; if(!_mapManager.TryGetGrid(args.ClickLocation.GetGridUid(EntityManager), out var grid)) return; @@ -39,7 +40,7 @@ private void OnCablePlacerAfterInteract(EntityUid uid, CablePlacerComponent comp return; } - if (TryComp(component.Owner, out var stack) && !_stack.Use(component.Owner, 1, stack)) + if (TryComp(placer, out var stack) && !_stack.Use(placer, 1, stack)) return; var newCable = EntityManager.SpawnEntity(component.CablePrototypeId, grid.GridTileToLocal(snapPos)); diff --git a/Content.Server/Power/EntitySystems/ExtensionCableSystem.cs b/Content.Server/Power/EntitySystems/ExtensionCableSystem.cs index 0d88b442d33997..9d68b60418bb66 100644 --- a/Content.Server/Power/EntitySystems/ExtensionCableSystem.cs +++ b/Content.Server/Power/EntitySystems/ExtensionCableSystem.cs @@ -1,7 +1,7 @@ using System.Diagnostics.CodeAnalysis; -using System.Linq; using Content.Server.Power.Components; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; @@ -50,9 +50,10 @@ private void OnProviderShutdown(EntityUid uid, ExtensionCableProviderComponent p var xform = Transform(uid); // If grid deleting no need to update power. - if (_mapManager.TryGetGrid(xform.GridUid, out var grid)) + if (HasComp(xform.GridUid) && + MetaData(xform.GridUid.Value).EntityLifeStage > EntityLifeStage.MapInitialized) { - if (MetaData(grid.Owner).EntityLifeStage > EntityLifeStage.MapInitialized) return; + return; } Disconnect(uid, provider); @@ -72,10 +73,10 @@ private void Connect(EntityUid uid, ExtensionCableProviderComponent provider) foreach (var receiver in FindAvailableReceivers(uid, provider.TransferRange)) { - receiver.Provider?.LinkedReceivers.Remove(receiver); - receiver.Provider = provider; + receiver.Comp.Provider?.LinkedReceivers.Remove(receiver); + receiver.Comp.Provider = provider; provider.LinkedReceivers.Add(receiver); - RaiseLocalEvent(receiver.Owner, new ProviderConnectedEvent(provider), broadcast: false); + RaiseLocalEvent(receiver, new ProviderConnectedEvent(provider), broadcast: false); RaiseLocalEvent(uid, new ReceiverConnectedEvent(receiver), broadcast: false); } } @@ -95,34 +96,37 @@ private void OnProviderReAnchor(EntityUid uid, ExtensionCableProviderComponent c private void ResetReceivers(ExtensionCableProviderComponent provider) { + var providerId = provider.Owner; var receivers = provider.LinkedReceivers.ToArray(); provider.LinkedReceivers.Clear(); foreach (var receiver in receivers) { + var receiverId = receiver.Owner; receiver.Provider = null; - RaiseLocalEvent(receiver.Owner, new ProviderDisconnectedEvent(provider), broadcast: false); - RaiseLocalEvent(provider.Owner, new ReceiverDisconnectedEvent(receiver), broadcast: false); + RaiseLocalEvent(receiverId, new ProviderDisconnectedEvent(provider), broadcast: false); + RaiseLocalEvent(providerId, new ReceiverDisconnectedEvent((receiverId, receiver)), broadcast: false); } foreach (var receiver in receivers) { // No point resetting what the receiver is doing if it's deleting, plus significant perf savings // in not doing needless lookups - if (!EntityManager.IsQueuedForDeletion(receiver.Owner) - && MetaData(receiver.Owner).EntityLifeStage <= EntityLifeStage.MapInitialized) + var receiverId = receiver.Owner; + if (!EntityManager.IsQueuedForDeletion(receiverId) + && MetaData(receiverId).EntityLifeStage <= EntityLifeStage.MapInitialized) { TryFindAndSetProvider(receiver); } } } - private IEnumerable FindAvailableReceivers(EntityUid owner, float range) + private IEnumerable> FindAvailableReceivers(EntityUid owner, float range) { var xform = Transform(owner); var coordinates = xform.Coordinates; - if (!_mapManager.TryGetGrid(xform.GridUid, out var grid)) + if (!TryComp(xform.GridUid, out MapGridComponent? grid)) yield break; var nearbyEntities = grid.GetCellsInSquareArea(coordinates, (int) Math.Ceiling(range / grid.TileSize)); @@ -142,7 +146,7 @@ private IEnumerable FindAvailableReceivers(Enti continue; if ((Transform(entity).LocalPosition - xform.LocalPosition).Length() < Math.Min(range, receiver.ReceptionRange)) - yield return receiver; + yield return (entity, receiver); } } @@ -161,7 +165,7 @@ public void SetReceiverReceptionRange(EntityUid uid, int range, ExtensionCableRe if (provider != null) { - RaiseLocalEvent(provider.Owner, new ReceiverDisconnectedEvent(receiver), broadcast: false); + RaiseLocalEvent(provider.Owner, new ReceiverDisconnectedEvent((uid, receiver)), broadcast: false); provider.LinkedReceivers.Remove(receiver); } @@ -220,7 +224,7 @@ private void Disconnect(EntityUid uid, ExtensionCableReceiverComponent receiver) RaiseLocalEvent(uid, new ProviderDisconnectedEvent(receiver.Provider), broadcast: false); if (receiver.Provider != null) { - RaiseLocalEvent(receiver.Provider.Owner, new ReceiverDisconnectedEvent(receiver), broadcast: false); + RaiseLocalEvent(receiver.Provider.Owner, new ReceiverDisconnectedEvent((uid, receiver)), broadcast: false); receiver.Provider.LinkedReceivers.Remove(receiver); } @@ -229,19 +233,22 @@ private void Disconnect(EntityUid uid, ExtensionCableReceiverComponent receiver) private void TryFindAndSetProvider(ExtensionCableReceiverComponent receiver, TransformComponent? xform = null) { - if (!receiver.Connectable) return; + var uid = receiver.Owner; + if (!receiver.Connectable) + return; - if (!TryFindAvailableProvider(receiver.Owner, receiver.ReceptionRange, out var provider, xform)) return; + if (!TryFindAvailableProvider(uid, receiver.ReceptionRange, out var provider, xform)) + return; receiver.Provider = provider; provider.LinkedReceivers.Add(receiver); - RaiseLocalEvent(receiver.Owner, new ProviderConnectedEvent(provider), broadcast: false); - RaiseLocalEvent(provider.Owner, new ReceiverConnectedEvent(receiver), broadcast: false); + RaiseLocalEvent(uid, new ProviderConnectedEvent(provider), broadcast: false); + RaiseLocalEvent(provider.Owner, new ReceiverConnectedEvent((uid, receiver)), broadcast: false); } private bool TryFindAvailableProvider(EntityUid owner, float range, [NotNullWhen(true)] out ExtensionCableProviderComponent? foundProvider, TransformComponent? xform = null) { - if (!Resolve(owner, ref xform) || !_mapManager.TryGetGrid(xform.GridUid, out var grid)) + if (!Resolve(owner, ref xform) || !TryComp(xform.GridUid, out MapGridComponent? grid)) { foundProvider = null; return false; @@ -330,9 +337,9 @@ public sealed class ReceiverConnectedEvent : EntityEventArgs /// /// The that connected. /// - public ExtensionCableReceiverComponent Receiver; + public Entity Receiver; - public ReceiverConnectedEvent(ExtensionCableReceiverComponent receiver) + public ReceiverConnectedEvent(Entity receiver) { Receiver = receiver; } @@ -345,9 +352,9 @@ public sealed class ReceiverDisconnectedEvent : EntityEventArgs /// /// The that disconnected. /// - public ExtensionCableReceiverComponent Receiver; + public Entity Receiver; - public ReceiverDisconnectedEvent(ExtensionCableReceiverComponent receiver) + public ReceiverDisconnectedEvent(Entity receiver) { Receiver = receiver; } diff --git a/Content.Server/Power/EntitySystems/PowerNetSystem.cs b/Content.Server/Power/EntitySystems/PowerNetSystem.cs index 425f4637afff49..c39fc7e5fe04e3 100644 --- a/Content.Server/Power/EntitySystems/PowerNetSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerNetSystem.cs @@ -312,7 +312,7 @@ private void UpdateApcPowerReceiver() apcReceiver.PoweredLastUpdate = powered; var ev = new PowerChangedEvent(apcReceiver.Powered, apcReceiver.NetworkLoad.ReceivingPower); - RaiseLocalEvent(apcReceiver.Owner, ref ev); + RaiseLocalEvent(uid, ref ev); if (appearanceQuery.TryGetComponent(uid, out var appearance)) _appearance.SetData(uid, PowerDeviceVisuals.Powered, powered, appearance); @@ -342,7 +342,7 @@ private void UpdatePowerConsumer() private void UpdateNetworkBattery() { var enumerator = EntityQueryEnumerator(); - while (enumerator.MoveNext(out var powerNetBattery)) + while (enumerator.MoveNext(out var uid, out var powerNetBattery)) { var lastSupply = powerNetBattery.LastSupply; var currentSupply = powerNetBattery.CurrentSupply; @@ -350,12 +350,12 @@ private void UpdateNetworkBattery() if (lastSupply == 0f && currentSupply != 0f) { var ev = new PowerNetBatterySupplyEvent(true); - RaiseLocalEvent(powerNetBattery.Owner, ref ev); + RaiseLocalEvent(uid, ref ev); } else if (lastSupply > 0f && currentSupply == 0f) { var ev = new PowerNetBatterySupplyEvent(false); - RaiseLocalEvent(powerNetBattery.Owner, ref ev); + RaiseLocalEvent(uid, ref ev); } powerNetBattery.LastSupply = currentSupply; diff --git a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs index 35412d174283c1..f1f8bf06168db4 100644 --- a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs @@ -73,35 +73,35 @@ private void OnProviderShutdown(EntityUid uid, ApcPowerProviderComponent compone component.LinkedReceivers.Clear(); } - private void OnProviderConnected(EntityUid uid, ApcPowerReceiverComponent receiver, ExtensionCableSystem.ProviderConnectedEvent args) + private void OnProviderConnected(Entity receiver, ref ExtensionCableSystem.ProviderConnectedEvent args) { var providerUid = args.Provider.Owner; if (!EntityManager.TryGetComponent(providerUid, out var provider)) return; - receiver.Provider = provider; + receiver.Comp.Provider = provider; ProviderChanged(receiver); } - private void OnProviderDisconnected(EntityUid uid, ApcPowerReceiverComponent receiver, ExtensionCableSystem.ProviderDisconnectedEvent args) + private void OnProviderDisconnected(Entity receiver, ref ExtensionCableSystem.ProviderDisconnectedEvent args) { - receiver.Provider = null; + receiver.Comp.Provider = null; ProviderChanged(receiver); } - private void OnReceiverConnected(EntityUid uid, ApcPowerProviderComponent provider, ExtensionCableSystem.ReceiverConnectedEvent args) + private void OnReceiverConnected(Entity provider, ref ExtensionCableSystem.ReceiverConnectedEvent args) { - if (EntityManager.TryGetComponent(args.Receiver.Owner, out ApcPowerReceiverComponent? receiver)) + if (EntityManager.TryGetComponent(args.Receiver, out ApcPowerReceiverComponent? receiver)) { - provider.AddReceiver(receiver); + provider.Comp.AddReceiver(receiver); } } private void OnReceiverDisconnected(EntityUid uid, ApcPowerProviderComponent provider, ExtensionCableSystem.ReceiverDisconnectedEvent args) { - if (EntityManager.TryGetComponent(args.Receiver.Owner, out ApcPowerReceiverComponent? receiver)) + if (EntityManager.TryGetComponent(args.Receiver, out ApcPowerReceiverComponent? receiver)) { provider.RemoveReceiver(receiver); } @@ -134,13 +134,14 @@ private void AddSwitchPowerVerb(EntityUid uid, PowerSwitchComponent component, G args.Verbs.Add(verb); } - private void ProviderChanged(ApcPowerReceiverComponent receiver) + private void ProviderChanged(Entity receiver) { - receiver.NetworkLoad.LinkedNetwork = default; - var ev = new PowerChangedEvent(receiver.Powered, receiver.NetworkLoad.ReceivingPower); + var comp = receiver.Comp; + comp.NetworkLoad.LinkedNetwork = default; + var ev = new PowerChangedEvent(comp.Powered, comp.NetworkLoad.ReceivingPower); - RaiseLocalEvent(receiver.Owner, ref ev); - _appearance.SetData(receiver.Owner, PowerDeviceVisuals.Powered, receiver.Powered); + RaiseLocalEvent(receiver, ref ev); + _appearance.SetData(receiver, PowerDeviceVisuals.Powered, comp.Powered); } /// diff --git a/Content.Server/Radiation/Systems/GeigerSystem.cs b/Content.Server/Radiation/Systems/GeigerSystem.cs index 640a257694df83..3a2fe1254927f0 100644 --- a/Content.Server/Radiation/Systems/GeigerSystem.cs +++ b/Content.Server/Radiation/Systems/GeigerSystem.cs @@ -32,54 +32,54 @@ public override void Initialize() SubscribeLocalEvent(OnUpdate); } - private void OnActivate(EntityUid uid, GeigerComponent component, ActivateInWorldEvent args) + private void OnActivate(Entity geiger, ref ActivateInWorldEvent args) { - if (args.Handled || component.AttachedToSuit) + if (args.Handled || geiger.Comp.AttachedToSuit) return; args.Handled = true; - SetEnabled(uid, component, !component.IsEnabled); + SetEnabled(geiger, !geiger.Comp.IsEnabled); } - private void OnEquipped(EntityUid uid, GeigerComponent component, GotEquippedEvent args) + private void OnEquipped(Entity geiger, ref GotEquippedEvent args) { - if (component.AttachedToSuit) - SetEnabled(uid, component, true); - SetUser(component, args.Equipee); + if (geiger.Comp.AttachedToSuit) + SetEnabled(geiger, true); + SetUser(geiger, args.Equipee); } - private void OnEquippedHand(EntityUid uid, GeigerComponent component, GotEquippedHandEvent args) + private void OnEquippedHand(Entity geiger, ref GotEquippedHandEvent args) { - if (component.AttachedToSuit) + if (geiger.Comp.AttachedToSuit) return; - SetUser(component, args.User); + SetUser(geiger, args.User); } - private void OnUnequipped(EntityUid uid, GeigerComponent component, GotUnequippedEvent args) + private void OnUnequipped(Entity geiger, ref GotUnequippedEvent args) { - if (component.AttachedToSuit) - SetEnabled(uid, component, false); - SetUser(component, null); + if (geiger.Comp.AttachedToSuit) + SetEnabled(geiger, false); + SetUser(geiger, null); } - private void OnUnequippedHand(EntityUid uid, GeigerComponent component, GotUnequippedHandEvent args) + private void OnUnequippedHand(Entity geiger, ref GotUnequippedHandEvent args) { - if (component.AttachedToSuit) + if (geiger.Comp.AttachedToSuit) return; - SetUser(component, null); + SetUser(geiger, null); } private void OnUpdate(RadiationSystemUpdatedEvent ev) { // update only active geiger counters // deactivated shouldn't have rad receiver component - var query = EntityQuery(); - foreach (var (geiger, receiver) in query) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var geiger, out var receiver)) { var rads = receiver.CurrentRadiation; - SetCurrentRadiation(geiger.Owner, geiger, rads); + SetCurrentRadiation(uid, geiger, rads); } } @@ -101,21 +101,22 @@ private void SetCurrentRadiation(EntityUid uid, GeigerComponent component, float UpdateSound(uid, component); } - Dirty(component); + Dirty(uid, component); } - private void SetUser(GeigerComponent component, EntityUid? user) + private void SetUser(Entity component, EntityUid? user) { - if (component.User == user) + if (component.Comp.User == user) return; - component.User = user; + component.Comp.User = user; Dirty(component); - UpdateSound(component.Owner, component); + UpdateSound(component, component); } - private void SetEnabled(EntityUid uid, GeigerComponent component, bool isEnabled) + private void SetEnabled(Entity geiger, bool isEnabled) { + var component = geiger.Comp; if (component.IsEnabled == isEnabled) return; @@ -126,11 +127,11 @@ private void SetEnabled(EntityUid uid, GeigerComponent component, bool isEnabled component.DangerLevel = GeigerDangerLevel.None; } - _radiation.SetCanReceive(uid, isEnabled); + _radiation.SetCanReceive(geiger, isEnabled); - UpdateAppearance(uid, component); - UpdateSound(uid, component); - Dirty(component); + UpdateAppearance(geiger, component); + UpdateSound(geiger, component); + Dirty(geiger, component); } private void UpdateAppearance(EntityUid uid, GeigerComponent? component = null, diff --git a/Content.Server/Radiation/Systems/RadiationSystem.GridCast.cs b/Content.Server/Radiation/Systems/RadiationSystem.GridCast.cs index fa132186a97854..1be8f0fb0400f0 100644 --- a/Content.Server/Radiation/Systems/RadiationSystem.GridCast.cs +++ b/Content.Server/Radiation/Systems/RadiationSystem.GridCast.cs @@ -1,3 +1,4 @@ +using System.Linq; using System.Numerics; using Content.Server.Radiation.Components; using Content.Server.Radiation.Events; @@ -9,7 +10,6 @@ using Robust.Shared.Map.Components; using Robust.Shared.Timing; using Robust.Shared.Utility; -using System.Linq; namespace Content.Server.Radiation.Systems; @@ -31,7 +31,7 @@ private void UpdateGridcast() stopwatch.Start(); var sources = EntityQueryEnumerator(); - var destinations = EntityQuery(); + var destinations = EntityQueryEnumerator(); var resistanceQuery = GetEntityQuery(); var transformQuery = GetEntityQuery(); var gridQuery = GetEntityQuery(); @@ -51,8 +51,8 @@ private void UpdateGridcast() // trace all rays from rad source to rad receivers var rays = new List(); - var receiversTotalRads = new ValueList<(RadiationReceiverComponent, float)>(); - foreach (var (dest, destTrs) in destinations) + var receiversTotalRads = new ValueList<(Entity, float)>(); + while (destinations.MoveNext(out var destUid, out var dest, out var destTrs)) { var destWorld = _transform.GetWorldPosition(destTrs, transformQuery); @@ -64,7 +64,7 @@ private void UpdateGridcast() // send ray towards destination entity var ray = Irradiate(uid, sourceTrs, sourceWorld, - destTrs.Owner, destTrs, destWorld, + destUid, destTrs, destWorld, intensity, source.Slope, saveVisitedTiles, resistanceQuery, transformQuery, gridQuery); if (ray == null) continue; @@ -78,9 +78,9 @@ private void UpdateGridcast() } // Apply modifier if the destination entity is hidden within a radiation blocking container - rads = GetAdjustedRadiationIntensity(dest.Owner, rads); + rads = GetAdjustedRadiationIntensity(destUid, rads); - receiversTotalRads.Add((dest, rads)); + receiversTotalRads.Add(((destUid, dest), rads)); } // update information for debug overlay @@ -94,11 +94,11 @@ private void UpdateGridcast() { // update radiation value of receiver // if no radiation rays reached target, that will set it to 0 - receiver.CurrentRadiation = rads; + receiver.Comp.CurrentRadiation = rads; // also send an event with combination of total rad if (rads > 0) - IrradiateEntity(receiver.Owner, rads, GridcastUpdateRate); + IrradiateEntity(receiver, rads, GridcastUpdateRate); } // raise broadcast event that radiation system has updated @@ -145,20 +145,21 @@ private void UpdateGridcast() { if (!gridQuery.TryGetComponent(sourceTrs.GridUid.Value, out var gridComponent)) return ray; - return Gridcast(gridComponent, ray, saveVisitedTiles, resistanceQuery, sourceTrs, destTrs, transformQuery.GetComponent(sourceTrs.GridUid.Value)); + return Gridcast((sourceTrs.GridUid.Value, gridComponent), ray, saveVisitedTiles, resistanceQuery, sourceTrs, destTrs, transformQuery.GetComponent(sourceTrs.GridUid.Value)); } // lets check how many grids are between source and destination // do a box intersection test between target and destination // it's not very precise, but really cheap var box = Box2.FromTwoPoints(sourceWorld, destWorld); - var grids = _mapManager.FindGridsIntersecting(mapId, box, true); + var grids = new List>(); + _mapManager.FindGridsIntersecting(mapId, box, ref grids, true); // gridcast through each grid and try to hit some radiation blockers // the ray will be updated with each grid that has some blockers foreach (var grid in grids) { - ray = Gridcast(grid, ray, saveVisitedTiles, resistanceQuery, sourceTrs, destTrs, transformQuery.GetComponent(grid.Owner)); + ray = Gridcast(grid, ray, saveVisitedTiles, resistanceQuery, sourceTrs, destTrs, transformQuery.GetComponent(grid)); // looks like last grid blocked all radiation // we can return right now @@ -169,7 +170,7 @@ private void UpdateGridcast() return ray; } - private RadiationRay Gridcast(MapGridComponent grid, RadiationRay ray, bool saveVisitedTiles, + private RadiationRay Gridcast(Entity grid, RadiationRay ray, bool saveVisitedTiles, EntityQuery resistanceQuery, TransformComponent sourceTrs, TransformComponent destTrs, @@ -198,12 +199,12 @@ private RadiationRay Gridcast(MapGridComponent grid, RadiationRay ray, bool save : gridTrs.InvLocalMatrix.Transform(ray.Destination); Vector2i sourceGrid = new( - (int) Math.Floor(srcLocal.X / grid.TileSize), - (int) Math.Floor(srcLocal.Y / grid.TileSize)); + (int) Math.Floor(srcLocal.X / grid.Comp.TileSize), + (int) Math.Floor(srcLocal.Y / grid.Comp.TileSize)); Vector2i destGrid = new( - (int) Math.Floor(dstLocal.X / grid.TileSize), - (int) Math.Floor(dstLocal.Y / grid.TileSize)); + (int) Math.Floor(dstLocal.X / grid.Comp.TileSize), + (int) Math.Floor(dstLocal.Y / grid.Comp.TileSize)); // iterate tiles in grid line from source to destination var line = new GridLineEnumerator(sourceGrid, destGrid); diff --git a/Content.Server/Research/Systems/ResearchSystem.Client.cs b/Content.Server/Research/Systems/ResearchSystem.Client.cs index 1bb188251672ee..e813f09ff9f060 100644 --- a/Content.Server/Research/Systems/ResearchSystem.Client.cs +++ b/Content.Server/Research/Systems/ResearchSystem.Client.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using System.Linq; using Content.Server.Power.EntitySystems; using Content.Shared.Research.Components; using Robust.Server.Player; @@ -58,9 +57,15 @@ private void OnClientRegistrationChanged(EntityUid uid, ResearchClientComponent private void OnClientMapInit(EntityUid uid, ResearchClientComponent component, MapInitEvent args) { - var allServers = EntityQuery(true).ToArray(); - if (allServers.Length > 0) - RegisterClient(uid, allServers[0].Owner, component, allServers[0]); + var allServers = new List>(); + var query = AllEntityQuery(); + while (query.MoveNext(out var serverUid, out var serverComp)) + { + allServers.Add((serverUid, serverComp)); + } + + if (allServers.Count > 0) + RegisterClient(uid, allServers[0], component, allServers[0]); } private void OnClientShutdown(EntityUid uid, ResearchClientComponent component, ComponentShutdown args) diff --git a/Content.Server/Research/Systems/ResearchSystem.PointSource.cs b/Content.Server/Research/Systems/ResearchSystem.PointSource.cs index ed8e2eb0a80ce2..f069b1c80f7d23 100644 --- a/Content.Server/Research/Systems/ResearchSystem.PointSource.cs +++ b/Content.Server/Research/Systems/ResearchSystem.PointSource.cs @@ -11,14 +11,14 @@ private void InitializeSource() SubscribeLocalEvent(OnGetPointsPerSecond); } - private void OnGetPointsPerSecond(EntityUid uid, ResearchPointSourceComponent component, ref ResearchServerGetPointsPerSecondEvent args) + private void OnGetPointsPerSecond(Entity source, ref ResearchServerGetPointsPerSecondEvent args) { - if (CanProduce(component)) - args.Points += component.PointsPerSecond; + if (CanProduce(source)) + args.Points += source.Comp.PointsPerSecond; } - public bool CanProduce(ResearchPointSourceComponent component) + public bool CanProduce(Entity source) { - return component.Active && this.IsPowered(component.Owner, EntityManager); + return source.Comp.Active && this.IsPowered(source, EntityManager); } } diff --git a/Content.Server/Research/Systems/ResearchSystem.cs b/Content.Server/Research/Systems/ResearchSystem.cs index 7adc30ea2984d8..e89b435800f083 100644 --- a/Content.Server/Research/Systems/ResearchSystem.cs +++ b/Content.Server/Research/Systems/ResearchSystem.cs @@ -42,11 +42,13 @@ public bool TryGetServerById(int id, [NotNullWhen(true)] out EntityUid? serverUi { serverUid = null; serverComponent = null; - foreach (var server in EntityQuery()) + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var server)) { if (server.Id != id) continue; - serverUid = server.Owner; + serverUid = uid; serverComponent = server; return true; } @@ -89,13 +91,14 @@ public int[] GetServerIds() public override void Update(float frameTime) { - foreach (var server in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var server)) { if (server.NextUpdateTime > _timing.CurTime) continue; server.NextUpdateTime = _timing.CurTime + server.ResearchConsoleUpdateTime; - UpdateServer(server.Owner, (int) server.ResearchConsoleUpdateTime.TotalSeconds, server); + UpdateServer(uid, (int) server.ResearchConsoleUpdateTime.TotalSeconds, server); } } } diff --git a/Content.Server/Resist/EscapeInventorySystem.cs b/Content.Server/Resist/EscapeInventorySystem.cs index ea603084b55c74..1249269de56256 100644 --- a/Content.Server/Resist/EscapeInventorySystem.cs +++ b/Content.Server/Resist/EscapeInventorySystem.cs @@ -1,15 +1,15 @@ using Content.Server.Contests; -using Robust.Shared.Containers; using Content.Server.Popups; -using Content.Shared.Storage; -using Content.Shared.Inventory; -using Content.Shared.Hands.EntitySystems; +using Content.Server.Storage.Components; using Content.Shared.ActionBlocker; using Content.Shared.DoAfter; -using Content.Shared.Movement.Events; +using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction.Events; +using Content.Shared.Inventory; +using Content.Shared.Movement.Events; using Content.Shared.Resist; -using Content.Server.Storage.Components; +using Content.Shared.Storage; +using Robust.Shared.Containers; namespace Content.Server.Resist; @@ -93,7 +93,7 @@ private void OnEscape(EntityUid uid, CanEscapeInventoryComponent component, Esca if (args.Handled || args.Cancelled) return; - _containerSystem.AttachParentToContainerOrGrid(Transform(uid)); + _containerSystem.AttachParentToContainerOrGrid((uid, Transform(uid))); args.Handled = true; } diff --git a/Content.Server/Revenant/EntitySystems/CorporealSystem.cs b/Content.Server/Revenant/EntitySystems/CorporealSystem.cs index 350d0827565769..1d43cb3ac85134 100644 --- a/Content.Server/Revenant/EntitySystems/CorporealSystem.cs +++ b/Content.Server/Revenant/EntitySystems/CorporealSystem.cs @@ -17,9 +17,9 @@ public override void OnStartup(EntityUid uid, CorporealComponent component, Comp if (TryComp(uid, out var visibility)) { - _visibilitySystem.RemoveLayer(visibility, (int) VisibilityFlags.Ghost, false); - _visibilitySystem.AddLayer(visibility, (int) VisibilityFlags.Normal, false); - _visibilitySystem.RefreshVisibility(visibility); + _visibilitySystem.RemoveLayer(uid, visibility, (int) VisibilityFlags.Ghost, false); + _visibilitySystem.AddLayer(uid, visibility, (int) VisibilityFlags.Normal, false); + _visibilitySystem.RefreshVisibility(uid, visibility); } } @@ -29,9 +29,9 @@ public override void OnShutdown(EntityUid uid, CorporealComponent component, Com if (TryComp(uid, out var visibility) && _ticker.RunLevel != GameRunLevel.PostRound) { - _visibilitySystem.AddLayer(visibility, (int) VisibilityFlags.Ghost, false); - _visibilitySystem.RemoveLayer(visibility, (int) VisibilityFlags.Normal, false); - _visibilitySystem.RefreshVisibility(visibility); + _visibilitySystem.AddLayer(uid, visibility, (int) VisibilityFlags.Ghost, false); + _visibilitySystem.RemoveLayer(uid, visibility, (int) VisibilityFlags.Normal, false); + _visibilitySystem.RefreshVisibility(uid, visibility); } } } diff --git a/Content.Server/Revenant/EntitySystems/RevenantOverloadedLightsSystem.cs b/Content.Server/Revenant/EntitySystems/RevenantOverloadedLightsSystem.cs index dadf1cfa6b1011..2a45b312341a7b 100644 --- a/Content.Server/Revenant/EntitySystems/RevenantOverloadedLightsSystem.cs +++ b/Content.Server/Revenant/EntitySystems/RevenantOverloadedLightsSystem.cs @@ -11,12 +11,13 @@ public sealed class RevenantOverloadedLightsSystem : SharedRevenantOverloadedLig { [Dependency] private readonly BeamSystem _beam = default!; - protected override void OnZap(RevenantOverloadedLightsComponent component) + protected override void OnZap(Entity lights) { + var component = lights.Comp; if (component.Target == null) return; - var lxform = Transform(component.Owner); + var lxform = Transform(lights); var txform = Transform(component.Target.Value); if (!lxform.Coordinates.TryDistance(EntityManager, txform.Coordinates, out var distance)) @@ -24,6 +25,6 @@ protected override void OnZap(RevenantOverloadedLightsComponent component) if (distance > component.ZapRange) return; - _beam.TryCreateBeam(component.Owner, component.Target.Value, component.ZapBeamEntityId); + _beam.TryCreateBeam(lights, component.Target.Value, component.ZapBeamEntityId); } } diff --git a/Content.Server/Revenant/EntitySystems/RevenantSystem.cs b/Content.Server/Revenant/EntitySystems/RevenantSystem.cs index 0026533c4a1833..d5e1ae1af899b4 100644 --- a/Content.Server/Revenant/EntitySystems/RevenantSystem.cs +++ b/Content.Server/Revenant/EntitySystems/RevenantSystem.cs @@ -77,9 +77,9 @@ private void OnStartup(EntityUid uid, RevenantComponent component, ComponentStar if (_ticker.RunLevel == GameRunLevel.PostRound && TryComp(uid, out var visibility)) { - _visibility.AddLayer(visibility, (int) VisibilityFlags.Ghost, false); - _visibility.RemoveLayer(visibility, (int) VisibilityFlags.Normal, false); - _visibility.RefreshVisibility(visibility); + _visibility.AddLayer(uid, visibility, (int) VisibilityFlags.Ghost, false); + _visibility.RemoveLayer(uid, visibility, (int) VisibilityFlags.Normal, false); + _visibility.RefreshVisibility(uid, visibility); } //ghost vision @@ -185,19 +185,20 @@ private void OnShop(EntityUid uid, RevenantComponent component, RevenantShopActi public void MakeVisible(bool visible) { - foreach (var (_, vis) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out var vis)) { if (visible) { - _visibility.AddLayer(vis, (int) VisibilityFlags.Normal, false); - _visibility.RemoveLayer(vis, (int) VisibilityFlags.Ghost, false); + _visibility.AddLayer(uid, vis, (int) VisibilityFlags.Normal, false); + _visibility.RemoveLayer(uid, vis, (int) VisibilityFlags.Ghost, false); } else { - _visibility.AddLayer(vis, (int) VisibilityFlags.Ghost, false); - _visibility.RemoveLayer(vis, (int) VisibilityFlags.Normal, false); + _visibility.AddLayer(uid, vis, (int) VisibilityFlags.Ghost, false); + _visibility.RemoveLayer(uid, vis, (int) VisibilityFlags.Normal, false); } - _visibility.RefreshVisibility(vis); + _visibility.RefreshVisibility(uid, vis); } } @@ -205,7 +206,8 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var rev in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var rev)) { rev.Accumulator += frameTime; @@ -215,7 +217,7 @@ public override void Update(float frameTime) if (rev.Essence < rev.EssenceRegenCap) { - ChangeEssenceAmount(rev.Owner, rev.EssencePerSecond, rev, regenCap: true); + ChangeEssenceAmount(uid, rev.EssencePerSecond, rev, regenCap: true); } } } diff --git a/Content.Server/Salvage/SalvageRulerCommand.cs b/Content.Server/Salvage/SalvageRulerCommand.cs index 9dcf7fc36ee12b..b0a64508c563cf 100644 --- a/Content.Server/Salvage/SalvageRulerCommand.cs +++ b/Content.Server/Salvage/SalvageRulerCommand.cs @@ -1,13 +1,8 @@ -using Content.Server.Preferences.Managers; using Content.Server.Administration; using Content.Shared.Administration; -using Content.Shared.Preferences; -using Content.Shared.Roles; -using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; -using Robust.Shared.IoC; namespace Content.Server.Salvage; @@ -48,9 +43,9 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) var entityTransform = _entities.GetComponent(entity.Value); var total = Box2.UnitCentered; var first = true; - foreach (var mapGrid in _maps.GetAllMapGrids(entityTransform.MapID)) + foreach (var mapGrid in _maps.GetAllGrids(entityTransform.MapID)) { - var aabb = _entities.GetComponent(mapGrid.Owner).WorldMatrix.TransformBox(mapGrid.LocalAABB); + var aabb = _entities.GetComponent(mapGrid).WorldMatrix.TransformBox(mapGrid.Comp.LocalAABB); if (first) { total = aabb; diff --git a/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs b/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs index d4241b2baf25a4..237645dadf9947 100644 --- a/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs +++ b/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs @@ -1,5 +1,4 @@ using Content.Shared.Procedural; -using Content.Shared.Salvage; using Content.Shared.Salvage.Expeditions; namespace Content.Server.Salvage; @@ -24,34 +23,35 @@ private void OnSalvageClaimMessage(EntityUid uid, SalvageExpeditionConsoleCompon UpdateConsoles(data); } - private void OnSalvageConsoleInit(EntityUid uid, SalvageExpeditionConsoleComponent component, ComponentInit args) + private void OnSalvageConsoleInit(Entity console, ref ComponentInit args) { - UpdateConsole(component); + UpdateConsole(console); } - private void OnSalvageConsoleParent(EntityUid uid, SalvageExpeditionConsoleComponent component, ref EntParentChangedMessage args) + private void OnSalvageConsoleParent(Entity console, ref EntParentChangedMessage args) { - UpdateConsole(component); + UpdateConsole(console); } private void UpdateConsoles(SalvageExpeditionDataComponent component) { var state = GetState(component); - foreach (var (console, xform, uiComp) in EntityQuery(true)) + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out _, out var uiComp, out var xform)) { - var station = _station.GetOwningStation(console.Owner, xform); + var station = _station.GetOwningStation(uid, xform); - if (station != component.Owner) + if (station != uid) continue; - _ui.TrySetUiState(console.Owner, SalvageConsoleUiKey.Expedition, state, ui: uiComp); + _ui.TrySetUiState(uid, SalvageConsoleUiKey.Expedition, state, ui: uiComp); } } - private void UpdateConsole(SalvageExpeditionConsoleComponent component) + private void UpdateConsole(Entity component) { - var station = _station.GetOwningStation(component.Owner); + var station = _station.GetOwningStation(component); SalvageExpeditionConsoleState state; if (TryComp(station, out var dataComponent)) @@ -63,6 +63,6 @@ private void UpdateConsole(SalvageExpeditionConsoleComponent component) state = new SalvageExpeditionConsoleState(TimeSpan.Zero, false, true, 0, new List()); } - _ui.TrySetUiState(component.Owner, SalvageConsoleUiKey.Expedition, state); + _ui.TrySetUiState(component, SalvageConsoleUiKey.Expedition, state); } } diff --git a/Content.Server/Shuttles/Components/ThrusterComponent.cs b/Content.Server/Shuttles/Components/ThrusterComponent.cs index c50feb959a930b..e7cfbf8f8e7ee2 100644 --- a/Content.Server/Shuttles/Components/ThrusterComponent.cs +++ b/Content.Server/Shuttles/Components/ThrusterComponent.cs @@ -15,31 +15,8 @@ public sealed partial class ThrusterComponent : Component /// /// Whether the thruster has been force to be enabled / disabled (e.g. VV, interaction, etc.) /// - [ViewVariables(VVAccess.ReadWrite)] - public bool Enabled - { - get => _enabled; - [Obsolete("Use the system method")] - set - { - if (_enabled == value) return; - _enabled = value; - - var system = EntitySystem.Get(); - - if (!_enabled) - { - system.DisableThruster(Owner, this); - } - else if (system.CanEnable(Owner, this)) - { - system.EnableThruster(Owner, this); - } - } - } - - [DataField("enabled")] - private bool _enabled = true; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Enabled { get; set; } /// /// This determines whether the thruster is actually enabled for the purposes of thrust diff --git a/Content.Server/Shuttles/Systems/DockingSystem.AutoDock.cs b/Content.Server/Shuttles/Systems/DockingSystem.AutoDock.cs index 439367a0805a56..a09fff5189c7a1 100644 --- a/Content.Server/Shuttles/Systems/DockingSystem.AutoDock.cs +++ b/Content.Server/Shuttles/Systems/DockingSystem.AutoDock.cs @@ -1,9 +1,6 @@ using Content.Server.Shuttles.Components; using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Events; -using Robust.Shared.Physics.Components; -using Robust.Shared.Players; -using Robust.Shared.Utility; namespace Content.Server.Shuttles.Systems; @@ -35,7 +32,7 @@ private void UpdateAutodock() if (dockable == null) continue; - TryDock(dockUid, dock, dockable.Owner, dockable); + TryDock(dockUid, dock, dockable.Value); } // Work out recent docks that have gone past their designated threshold. @@ -114,7 +111,8 @@ private void OnRequestStopAutodock(EntityUid uid, ShuttleConsoleComponent compon var player = args.Session.AttachedEntity; // TODO: Validation - if (player == null || !TryComp(dork, out var comp)) return; + if (player == null || !TryComp(dork, out var comp)) + return; comp.Requesters.Remove(player.Value); diff --git a/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs b/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs index 6ad113f3da49c3..fd9cf67c5a08fc 100644 --- a/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs +++ b/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs @@ -1,4 +1,3 @@ -using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Numerics; using Content.Server.Shuttles.Components; @@ -140,6 +139,7 @@ public bool CanDock( var isMap = HasComp(targetGrid); var validDockConfigs = new List(); + var grids = new List>(); if (shuttleDocks.Count > 0) { // We'll try all combinations of shuttle docks and see which one is most suitable @@ -174,8 +174,9 @@ public bool CanDock( var dockedBounds = new Box2Rotated(shuttleAABB.Translated(spawnPosition.Position), targetAngle, spawnPosition.Position); // Check if there's no intersecting grids (AKA oh god it's docking at cargo). - if (_mapManager.FindGridsIntersecting(targetGridXform.MapID, - dockedBounds).Any(o => o.Owner != targetGrid)) + grids.Clear(); + _mapManager.FindGridsIntersecting(targetGridXform.MapID, dockedBounds, ref grids); + if (grids.Any(o => o.Owner != targetGrid)) { continue; } diff --git a/Content.Server/Shuttles/Systems/DockingSystem.cs b/Content.Server/Shuttles/Systems/DockingSystem.cs index ba75ef32841165..f765ed69769d31 100644 --- a/Content.Server/Shuttles/Systems/DockingSystem.cs +++ b/Content.Server/Shuttles/Systems/DockingSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Doors.Components; using Content.Shared.Shuttles.Events; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Physics; using Robust.Shared.Physics.Collision.Shapes; using Robust.Shared.Physics.Components; @@ -66,7 +67,7 @@ private void OnAutoClose(EntityUid uid, DockingComponent component, BeforeDoorAu args.Cancel(); } - private DockingComponent? GetDockable(EntityUid uid, TransformComponent dockingXform) + private Entity? GetDockable(EntityUid uid, TransformComponent dockingXform) { // Did you know Saltern is the most dockable station? @@ -96,12 +97,14 @@ private void OnAutoClose(EntityUid uid, DockingComponent component, BeforeDoorAu var enlargedAABB = aabb.Value.Enlarged(DockingRadius * 1.5f); // Get any docking ports in range on other grids. - foreach (var otherGrid in _mapManager.FindGridsIntersecting(dockingXform.MapID, enlargedAABB)) + var grids = new List>(); + _mapManager.FindGridsIntersecting(dockingXform.MapID, enlargedAABB, ref grids); + foreach (var otherGrid in grids) { if (otherGrid.Owner == dockingXform.GridUid) continue; - foreach (var ent in otherGrid.GetAnchoredEntities(enlargedAABB)) + foreach (var ent in otherGrid.Comp.GetAnchoredEntities(enlargedAABB)) { if (!TryComp(ent, out DockingComponent? otherDocking) || !otherDocking.Enabled || @@ -129,7 +132,7 @@ private void OnAutoClose(EntityUid uid, DockingComponent component, BeforeDoorAu // TODO: Need CollisionManager's GJK for accurate bounds // Realistically I want 2 fixtures anyway but I'll deal with that later. - return otherDocking; + return (ent, otherDocking); } } } @@ -443,12 +446,12 @@ private bool CanDock(EntityUid dockAUid, EntityUid dockBUid, DockingComponent do /// /// Attempts to dock 2 ports together and will return early if it's not possible. /// - private void TryDock(EntityUid dockAUid, DockingComponent dockA, EntityUid dockBUid, DockingComponent dockB) + private void TryDock(EntityUid dockAUid, DockingComponent dockA, Entity dockB) { - if (!CanDock(dockAUid, dockBUid, dockA, dockB)) + if (!CanDock(dockAUid, dockB, dockA, dockB)) return; - Dock(dockAUid, dockA, dockBUid, dockB); + Dock(dockAUid, dockA, dockB, dockB); } public void Undock(EntityUid dockUid, DockingComponent dock) diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs index 0603ff75022fe8..62478082d88a4a 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs @@ -9,7 +9,6 @@ using Content.Shared.Shuttles.BUIStates; using Content.Shared.Shuttles.Events; using Content.Shared.Shuttles.Systems; -using Robust.Server.GameObjects; using Robust.Shared.Map; using Robust.Shared.Player; using Timer = Robust.Shared.Timing.Timer; @@ -258,16 +257,17 @@ private void OnEmergencyRepealAll(EntityUid uid, EmergencyShuttleConsoleComponen private void OnEmergencyRepeal(EntityUid uid, EmergencyShuttleConsoleComponent component, EmergencyShuttleRepealMessage args) { var player = args.Session.AttachedEntity; - if (player == null) return; + if (player == null) + return; - if (!_idSystem.TryFindIdCard(player.Value, out var idCard) || !_reader.IsAllowed(idCard.Owner, uid)) + if (!_idSystem.TryFindIdCard(player.Value, out var idCard) || !_reader.IsAllowed(idCard, uid)) { _popup.PopupCursor(Loc.GetString("emergency-shuttle-console-denied"), player.Value, PopupType.Medium); return; } // TODO: This is fucking bad - if (!component.AuthorizedEntities.Remove(MetaData(idCard.Owner).EntityName)) + if (!component.AuthorizedEntities.Remove(MetaData(idCard).EntityName)) return; _logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle early launch REPEAL by {args.Session:user}"); @@ -283,14 +283,14 @@ private void OnEmergencyAuthorize(EntityUid uid, EmergencyShuttleConsoleComponen if (player == null) return; - if (!_idSystem.TryFindIdCard(player.Value, out var idCard) || !_reader.IsAllowed(idCard.Owner, uid)) + if (!_idSystem.TryFindIdCard(player.Value, out var idCard) || !_reader.IsAllowed(idCard, uid)) { _popup.PopupCursor(Loc.GetString("emergency-shuttle-console-denied"), args.Session, PopupType.Medium); return; } // TODO: This is fucking bad - if (!component.AuthorizedEntities.Add(MetaData(idCard.Owner).EntityName)) + if (!component.AuthorizedEntities.Add(MetaData(idCard).EntityName)) return; _logger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Emergency shuttle early launch AUTH by {args.Session:user}"); diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs index 49e1b1cb84d82b..e19d88b1c29589 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs @@ -1,29 +1,26 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Numerics; using Content.Server.Shuttles.Components; +using Content.Server.Shuttles.Events; using Content.Server.Station.Systems; using Content.Shared.Body.Components; +using Content.Shared.Buckle.Components; +using Content.Shared.Doors.Components; using Content.Shared.Maps; using Content.Shared.Parallax; +using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Systems; using Content.Shared.StatusEffect; +using JetBrains.Annotations; using Robust.Shared.Audio; using Robust.Shared.Collections; using Robust.Shared.Map; -using Robust.Shared.Player; -using Robust.Shared.Utility; -using System.Diagnostics.CodeAnalysis; -using System.Numerics; -using System.Linq; -using Content.Server.Shuttles.Events; -using Content.Shared.Body.Components; -using Content.Shared.Buckle.Components; -using Content.Shared.Doors.Components; -using Content.Shared.Mobs.Components; -using Content.Shared.Shuttles.Components; -using Content.Shared.Throwing; -using JetBrains.Annotations; using Robust.Shared.Map.Components; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; +using Robust.Shared.Player; +using Robust.Shared.Utility; namespace Content.Server.Shuttles.Systems; @@ -231,7 +228,7 @@ private bool TrySetupFTL(EntityUid uid, ShuttleComponent shuttle, [NotNullWhen(t component = AddComp(uid); component.State = FTLState.Starting; // TODO: Need BroadcastGrid to not be bad. - SoundSystem.Play(_startupSound.GetSound(), Filter.Empty().AddInRange(Transform(uid).MapPosition, GetSoundRange(component.Owner)), _startupSound.Params); + SoundSystem.Play(_startupSound.GetSound(), Filter.Empty().AddInRange(Transform(uid).MapPosition, GetSoundRange(uid)), _startupSound.Params); // Make sure the map is setup before we leave to avoid pop-in (e.g. parallax). SetupHyperspace(); return true; @@ -608,16 +605,20 @@ public bool TryFTLProximity(EntityUid shuttleUid, ShuttleComponent component, En var iteration = 0; var lastCount = nearbyGrids.Count; var mapId = targetXform.MapID; + var grids = new List>(); while (iteration < FTLProximityIterations) { - foreach (var grid in _mapManager.FindGridsIntersecting(mapId, targetAABB)) + grids.Clear(); + _mapManager.FindGridsIntersecting(mapId, targetAABB, ref grids); + + foreach (var grid in grids) { - if (!nearbyGrids.Add(grid.Owner)) + if (!nearbyGrids.Add(grid)) continue; - targetAABB = targetAABB.Union(_transform.GetWorldMatrix(grid.Owner, xformQuery) - .TransformBox(Comp(grid.Owner).LocalAABB)); + targetAABB = targetAABB.Union(_transform.GetWorldMatrix(grid, xformQuery) + .TransformBox(Comp(grid).LocalAABB)); } // Can do proximity @@ -634,14 +635,15 @@ public bool TryFTLProximity(EntityUid shuttleUid, ShuttleComponent component, En if (iteration != FTLProximityIterations) continue; - foreach (var grid in _mapManager.GetAllGrids()) + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out var grid)) { // Don't add anymore as it is irrelevant, but that doesn't mean we need to re-do existing work. - if (nearbyGrids.Contains(grid.Owner)) + if (nearbyGrids.Contains(uid)) continue; - targetAABB = targetAABB.Union(_transform.GetWorldMatrix(grid.Owner, xformQuery) - .TransformBox(Comp(grid.Owner).LocalAABB)); + targetAABB = targetAABB.Union(_transform.GetWorldMatrix(uid, xformQuery) + .TransformBox(Comp(uid).LocalAABB)); } break; diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.IFF.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.IFF.cs index 15c89b2134a2c9..bf265da2e64422 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.IFF.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.IFF.cs @@ -76,12 +76,14 @@ private void OnIFFConsoleAnchor(EntityUid uid, IFFConsoleComponent component, re protected override void UpdateIFFInterfaces(EntityUid gridUid, IFFComponent component) { base.UpdateIFFInterfaces(gridUid, component); - foreach (var (comp, xform) in EntityQuery(true)) + + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out var comp, out var xform)) { if (xform.GridUid != gridUid) continue; - _uiSystem.TrySetUiState(comp.Owner, IFFConsoleUiKey.Key, new IFFConsoleBoundUserInterfaceState() + _uiSystem.TrySetUiState(uid, IFFConsoleUiKey.Key, new IFFConsoleBoundUserInterfaceState() { AllowedFlags = comp.AllowedFlags, Flags = component.Flags, diff --git a/Content.Server/Shuttles/Systems/ThrusterSystem.cs b/Content.Server/Shuttles/Systems/ThrusterSystem.cs index 1fd9fabb803288..ed7208ab470b35 100644 --- a/Content.Server/Shuttles/Systems/ThrusterSystem.cs +++ b/Content.Server/Shuttles/Systems/ThrusterSystem.cs @@ -130,6 +130,15 @@ private void OnShuttleTileChange(EntityUid uid, ShuttleComponent component, ref private void OnActivateThruster(EntityUid uid, ThrusterComponent component, ActivateInWorldEvent args) { component.Enabled ^= true; + + if (!component.Enabled) + { + DisableThruster(uid, component); + } + else if (CanEnable(uid, component)) + { + EnableThruster(uid, component); + } } /// diff --git a/Content.Server/Singularity/EntitySystems/ContainmentFieldGeneratorSystem.cs b/Content.Server/Singularity/EntitySystems/ContainmentFieldGeneratorSystem.cs index 171f27752f9d2b..d58458527f6f48 100644 --- a/Content.Server/Singularity/EntitySystems/ContainmentFieldGeneratorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/ContainmentFieldGeneratorSystem.cs @@ -1,15 +1,15 @@ using Content.Server.Administration.Logs; -using Content.Server.Singularity.Events; -using Content.Shared.Singularity.Components; -using Content.Shared.Tag; -using Robust.Server.GameObjects; -using Robust.Shared.Physics; using Content.Server.Popups; +using Content.Server.Singularity.Events; using Content.Shared.Construction.Components; using Content.Shared.Database; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Popups; +using Content.Shared.Singularity.Components; +using Content.Shared.Tag; +using Robust.Server.GameObjects; +using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; @@ -52,7 +52,7 @@ public override void Update(float frameTime) if (generator.Accumulator >= generator.Threshold) { - LosePower(uid, generator.PowerLoss, generator); + LosePower((uid, generator), generator.PowerLoss); generator.Accumulator -= generator.Threshold; } } @@ -63,12 +63,12 @@ public override void Update(float frameTime) /// /// A generator receives power from a source colliding with it. /// - private void HandleGeneratorCollide(EntityUid uid, ContainmentFieldGeneratorComponent component, ref StartCollideEvent args) + private void HandleGeneratorCollide(Entity generator, ref StartCollideEvent args) { - if (_tags.HasTag(args.OtherEntity, component.IDTag)) + if (_tags.HasTag(args.OtherEntity, generator.Comp.IDTag)) { - ReceivePower(component.PowerReceived, component); - component.Accumulator = 0f; + ReceivePower(generator.Comp.PowerReceived, generator); + generator.Comp.Accumulator = 0f; } } @@ -81,35 +81,35 @@ private void OnExamine(EntityUid uid, ContainmentFieldGeneratorComponent compone args.PushMarkup(Loc.GetString("comp-containment-off")); } - private void OnInteract(EntityUid uid, ContainmentFieldGeneratorComponent component, InteractHandEvent args) + private void OnInteract(Entity generator, ref InteractHandEvent args) { if (args.Handled) return; - if (TryComp(component.Owner, out TransformComponent? transformComp) && transformComp.Anchored) + if (TryComp(generator, out TransformComponent? transformComp) && transformComp.Anchored) { - if (!component.Enabled) - TurnOn(component); - else if (component.Enabled && component.IsConnected) + if (!generator.Comp.Enabled) + TurnOn(generator); + else if (generator.Comp.Enabled && generator.Comp.IsConnected) { _popupSystem.PopupEntity(Loc.GetString("comp-containment-toggle-warning"), args.User, args.User, PopupType.LargeCaution); return; } else - TurnOff(component); + TurnOff(generator); } args.Handled = true; } - private void OnAnchorChanged(EntityUid uid, ContainmentFieldGeneratorComponent component, ref AnchorStateChangedEvent args) + private void OnAnchorChanged(Entity generator, ref AnchorStateChangedEvent args) { if (!args.Anchored) - RemoveConnections(uid, component); + RemoveConnections(generator); } - private void OnReanchorEvent(EntityUid uid, ContainmentFieldGeneratorComponent component, ref ReAnchorEvent args) + private void OnReanchorEvent(Entity generator, ref ReAnchorEvent args) { - GridCheck(uid, component); + GridCheck(generator); } private void OnUnanchorAttempt(EntityUid uid, ContainmentFieldGeneratorComponent component, @@ -122,41 +122,42 @@ private void OnUnanchorAttempt(EntityUid uid, ContainmentFieldGeneratorComponent } } - private void TurnOn(ContainmentFieldGeneratorComponent component) + private void TurnOn(Entity generator) { - component.Enabled = true; - ChangeFieldVisualizer(component); - _popupSystem.PopupEntity(Loc.GetString("comp-containment-turned-on"), component.Owner); + generator.Comp.Enabled = true; + ChangeFieldVisualizer(generator); + _popupSystem.PopupEntity(Loc.GetString("comp-containment-turned-on"), generator); } - private void TurnOff(ContainmentFieldGeneratorComponent component) + private void TurnOff(Entity generator) { - component.Enabled = false; - ChangeFieldVisualizer(component); - _popupSystem.PopupEntity(Loc.GetString("comp-containment-turned-off"), component.Owner); + generator.Comp.Enabled = false; + ChangeFieldVisualizer(generator); + _popupSystem.PopupEntity(Loc.GetString("comp-containment-turned-off"), generator); } - private void OnComponentRemoved(EntityUid uid, ContainmentFieldGeneratorComponent component, ComponentRemove args) + private void OnComponentRemoved(Entity generator, ref ComponentRemove args) { - RemoveConnections(uid, component); + RemoveConnections(generator); } /// /// Deletes the fields and removes the respective connections for the generators. /// - private void RemoveConnections(EntityUid uid, ContainmentFieldGeneratorComponent component) + private void RemoveConnections(Entity generator) { + var (uid, component) = generator; foreach (var (direction, value) in component.Connections) { foreach (var field in value.Item2) { QueueDel(field); } - value.Item1.Connections.Remove(direction.GetOpposite()); + value.Item1.Comp.Connections.Remove(direction.GetOpposite()); - if (value.Item1.Connections.Count == 0) //Change isconnected only if there's no more connections + if (value.Item1.Comp.Connections.Count == 0) //Change isconnected only if there's no more connections { - value.Item1.IsConnected = false; + value.Item1.Comp.IsConnected = false; ChangeOnLightVisualizer(value.Item1); } @@ -164,10 +165,10 @@ private void RemoveConnections(EntityUid uid, ContainmentFieldGeneratorComponent } component.Connections.Clear(); component.IsConnected = false; - ChangeOnLightVisualizer(component); - ChangeFieldVisualizer(component); + 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 - _popupSystem.PopupEntity(Loc.GetString("comp-containment-disconnected"), component.Owner, PopupType.LargeCaution); + _popupSystem.PopupEntity(Loc.GetString("comp-containment-disconnected"), uid, PopupType.LargeCaution); } #endregion @@ -178,11 +179,12 @@ private void RemoveConnections(EntityUid uid, ContainmentFieldGeneratorComponent /// Stores power in the generator. If it hits the threshold, it tries to establish a connection. /// /// The power that this generator received from the collision in - public void ReceivePower(int power, ContainmentFieldGeneratorComponent component) + public void ReceivePower(int power, Entity generator) { + var component = generator.Comp; component.PowerBuffer += power; - var genXForm = Transform(component.Owner); + var genXForm = Transform(generator); if (component.PowerBuffer >= component.PowerMinimum) { @@ -194,23 +196,24 @@ public void ReceivePower(int power, ContainmentFieldGeneratorComponent component if (component.Connections.ContainsKey(dir)) continue; // This direction already has an active connection - TryGenerateFieldConnection(dir, component, genXForm); + TryGenerateFieldConnection(dir, generator, genXForm); } } - ChangePowerVisualizer(power, component); + ChangePowerVisualizer(power, generator); } - public void LosePower(EntityUid uid, int power, ContainmentFieldGeneratorComponent component) + public void LosePower(Entity generator, int power) { + var component = generator.Comp; component.PowerBuffer -= power; if (component.PowerBuffer < component.PowerMinimum && component.Connections.Count != 0) { - RemoveConnections(uid, component); + RemoveConnections(generator); } - ChangePowerVisualizer(power, component); + ChangePowerVisualizer(power, generator); } /// @@ -218,11 +221,12 @@ public void LosePower(EntityUid uid, int power, ContainmentFieldGeneratorCompone /// If all the checks pass and fields spawn, it will store this connection on each respective generator. /// /// The field generator establishes a connection in this direction. - /// The field generator component + /// The field generator component /// The transform component for the first generator /// - private bool TryGenerateFieldConnection(Direction dir, ContainmentFieldGeneratorComponent component, TransformComponent gen1XForm) + private bool TryGenerateFieldConnection(Direction dir, Entity generator, TransformComponent gen1XForm) { + var component = generator.Comp; if (!component.Enabled) return false; @@ -233,7 +237,7 @@ private bool TryGenerateFieldConnection(Direction dir, ContainmentFieldGenerator var dirRad = dir.ToAngle() + genWorldPosRot.WorldRotation; //needs to be like this for the raycast to work properly var ray = new CollisionRay(genWorldPosRot.WorldPosition, dirRad.ToVec(), component.CollisionMask); - var rayCastResults = _physics.IntersectRay(gen1XForm.MapID, ray, component.MaxLength, component.Owner, false); + var rayCastResults = _physics.IntersectRay(gen1XForm.MapID, ray, component.MaxLength, generator, false); var genQuery = GetEntityQuery(); RayCastResults? closestResult = null; @@ -254,46 +258,47 @@ private bool TryGenerateFieldConnection(Direction dir, ContainmentFieldGenerator otherFieldGeneratorComponent == component || !TryComp(ent, out var collidableComponent) || collidableComponent.BodyType != BodyType.Static || - gen1XForm.ParentUid != Transform(otherFieldGeneratorComponent.Owner).ParentUid) + gen1XForm.ParentUid != Transform(ent).ParentUid) { return false; } - var fields = GenerateFieldConnection(component, otherFieldGeneratorComponent); + var otherFieldGenerator = (ent, otherFieldGeneratorComponent); + var fields = GenerateFieldConnection(generator, otherFieldGenerator); - component.Connections[dir] = (otherFieldGeneratorComponent, fields); - otherFieldGeneratorComponent.Connections[dir.GetOpposite()] = (component, fields); - ChangeFieldVisualizer(otherFieldGeneratorComponent); + component.Connections[dir] = (otherFieldGenerator, fields); + otherFieldGeneratorComponent.Connections[dir.GetOpposite()] = (generator, fields); + ChangeFieldVisualizer(otherFieldGenerator); if (!component.IsConnected) { component.IsConnected = true; - ChangeOnLightVisualizer(component); + ChangeOnLightVisualizer(generator); } if (!otherFieldGeneratorComponent.IsConnected) { otherFieldGeneratorComponent.IsConnected = true; - ChangeOnLightVisualizer(otherFieldGeneratorComponent); + ChangeOnLightVisualizer(otherFieldGenerator); } - ChangeFieldVisualizer(component); - UpdateConnectionLights(component); - _popupSystem.PopupEntity(Loc.GetString("comp-containment-connected"), component.Owner); + ChangeFieldVisualizer(generator); + UpdateConnectionLights(generator); + _popupSystem.PopupEntity(Loc.GetString("comp-containment-connected"), generator); return true; } /// /// Spawns fields between two generators if the finds two generators to connect. /// - /// The source field generator - /// The second generator that the source is connected to + /// The source field generator + /// The second generator that the source is connected to /// - private List GenerateFieldConnection(ContainmentFieldGeneratorComponent firstGenComp, ContainmentFieldGeneratorComponent secondGenComp) + private List GenerateFieldConnection(Entity firstGen, Entity secondGen) { var fieldList = new List(); - var gen1Coords = Transform(firstGenComp.Owner).Coordinates; - var gen2Coords = Transform(secondGenComp.Owner).Coordinates; + var gen1Coords = Transform(firstGen).Coordinates; + var gen2Coords = Transform(secondGen).Coordinates; var delta = (gen2Coords - gen1Coords).Position; var dirVec = delta.Normalized(); @@ -302,10 +307,10 @@ private List GenerateFieldConnection(ContainmentFieldGeneratorCompone while (currentOffset.Length() < stopDist) { var currentCoords = gen1Coords.Offset(currentOffset); - var newField = Spawn(firstGenComp.CreatedField, currentCoords); + var newField = Spawn(firstGen.Comp.CreatedField, currentCoords); var fieldXForm = Transform(newField); - fieldXForm.AttachParent(firstGenComp.Owner); + fieldXForm.AttachParent(firstGen); if (dirVec.GetDir() == Direction.East || dirVec.GetDir() == Direction.West) { var angle = fieldXForm.LocalPosition.ToAngle(); @@ -324,28 +329,28 @@ private List GenerateFieldConnection(ContainmentFieldGeneratorCompone /// /// Creates a light component for the spawned fields. /// - public void UpdateConnectionLights(ContainmentFieldGeneratorComponent component) + public void UpdateConnectionLights(Entity generator) { - if (_light.TryGetLight(component.Owner, out var pointLightComponent)) + if (_light.TryGetLight(generator, out var pointLightComponent)) { - _light.SetEnabled(component.Owner, component.Connections.Count > 0, pointLightComponent); + _light.SetEnabled(generator, generator.Comp.Connections.Count > 0, pointLightComponent); } } /// /// Checks to see if this or the other gens connected to a new grid. If they did, remove connection. /// - public void GridCheck(EntityUid uid, ContainmentFieldGeneratorComponent component) + public void GridCheck(Entity generator) { var xFormQuery = GetEntityQuery(); - foreach (var (_, generators) in component.Connections) + foreach (var (_, generators) in generator.Comp.Connections) { - var gen1ParentGrid = xFormQuery.GetComponent(component.Owner).ParentUid; - var gent2ParentGrid = xFormQuery.GetComponent(generators.Item1.Owner).ParentUid; + var gen1ParentGrid = xFormQuery.GetComponent(generator).ParentUid; + var gent2ParentGrid = xFormQuery.GetComponent(generators.Item1).ParentUid; if (gen1ParentGrid != gent2ParentGrid) - RemoveConnections(uid, component); + RemoveConnections(generator); } } @@ -356,32 +361,37 @@ public void GridCheck(EntityUid uid, ContainmentFieldGeneratorComponent componen /// Check if a fields power falls between certain ranges to update the field gen visual for power. /// /// - /// - private void ChangePowerVisualizer(int power, ContainmentFieldGeneratorComponent component) + /// + private void ChangePowerVisualizer(int power, Entity generator) { - _visualizer.SetData(component.Owner, ContainmentFieldGeneratorVisuals.PowerLight, component.PowerBuffer switch { - <=0 => PowerLevelVisuals.NoPower, - >=25 => PowerLevelVisuals.HighPower, - _ => (component.PowerBuffer < component.PowerMinimum) ? PowerLevelVisuals.LowPower : PowerLevelVisuals.MediumPower + var component = generator.Comp; + _visualizer.SetData(generator, ContainmentFieldGeneratorVisuals.PowerLight, component.PowerBuffer switch + { + <= 0 => PowerLevelVisuals.NoPower, + >= 25 => PowerLevelVisuals.HighPower, + _ => (component.PowerBuffer < component.PowerMinimum) + ? PowerLevelVisuals.LowPower + : PowerLevelVisuals.MediumPower }); } /// /// Check if a field has any or no connections and if it's enabled to toggle the field level light /// - /// - private void ChangeFieldVisualizer(ContainmentFieldGeneratorComponent component) + /// + private void ChangeFieldVisualizer(Entity generator) { - _visualizer.SetData(component.Owner, ContainmentFieldGeneratorVisuals.FieldLight, component.Connections.Count switch { + _visualizer.SetData(generator, ContainmentFieldGeneratorVisuals.FieldLight, generator.Comp.Connections.Count switch + { >1 => FieldLevelVisuals.MultipleFields, 1 => FieldLevelVisuals.OneField, - _ => component.Enabled ? FieldLevelVisuals.On : FieldLevelVisuals.NoLevel + _ => generator.Comp.Enabled ? FieldLevelVisuals.On : FieldLevelVisuals.NoLevel }); } - private void ChangeOnLightVisualizer(ContainmentFieldGeneratorComponent component) + private void ChangeOnLightVisualizer(Entity generator) { - _visualizer.SetData(component.Owner, ContainmentFieldGeneratorVisuals.OnLight, component.IsConnected); + _visualizer.SetData(generator, ContainmentFieldGeneratorVisuals.OnLight, generator.Comp.IsConnected); } #endregion diff --git a/Content.Server/Singularity/EntitySystems/ContainmentFieldSystem.cs b/Content.Server/Singularity/EntitySystems/ContainmentFieldSystem.cs index 70cc992dc3c26d..561db76a470f0b 100644 --- a/Content.Server/Singularity/EntitySystems/ContainmentFieldSystem.cs +++ b/Content.Server/Singularity/EntitySystems/ContainmentFieldSystem.cs @@ -26,15 +26,15 @@ private void HandleFieldCollide(EntityUid uid, ContainmentFieldComponent compone { var otherBody = args.OtherEntity; - if (TryComp(otherBody, out var garbage)) + if (HasComp(otherBody)) { - _popupSystem.PopupEntity(Loc.GetString("comp-field-vaporized", ("entity", otherBody)), component.Owner, PopupType.LargeCaution); - QueueDel(garbage.Owner); + _popupSystem.PopupEntity(Loc.GetString("comp-field-vaporized", ("entity", otherBody)), uid, PopupType.LargeCaution); + QueueDel(otherBody); } if (TryComp(otherBody, out var physics) && physics.Mass <= component.MaxMass && physics.Hard) { - var fieldDir = Transform(component.Owner).WorldPosition; + var fieldDir = Transform(uid).WorldPosition; var playerDir = Transform(otherBody).WorldPosition; _throwing.TryThrow(otherBody, playerDir-fieldDir, strength: component.ThrowForce); diff --git a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs index fd9eb3e8c62aa3..a15dad8507e031 100644 --- a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs @@ -304,9 +304,13 @@ public void ConsumeTilesInRange(EntityUid uid, float range, TransformComponent? var mapPos = xform.MapPosition; var box = Box2.CenteredAround(mapPos.Position, new Vector2(range, range)); var circle = new Circle(mapPos.Position, range); - foreach (var grid in _mapMan.FindGridsIntersecting(mapPos.MapId, box)) - { // TODO: Remover grid.Owner when this iterator returns entityuids as well. - AttemptConsumeTiles(uid, grid.GetTilesIntersecting(circle), grid.Owner, grid, eventHorizon); + var grids = new List>(); + _mapMan.FindGridsIntersecting(mapPos.MapId, box, ref grids); + + foreach (var grid in grids) + { + // TODO: Remover grid.Owner when this iterator returns entityuids as well. + AttemptConsumeTiles(uid, grid.Comp.GetTilesIntersecting(circle), grid, grid, eventHorizon); } } diff --git a/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs b/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs index b10685ed27789f..2ba4dbd41cbb03 100644 --- a/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs +++ b/Content.Server/Singularity/EntitySystems/GravityWellSystem.cs @@ -1,3 +1,6 @@ +using Content.Server.Singularity.Components; +using Content.Shared.Ghost; +using Content.Shared.Singularity.EntitySystems; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Physics; @@ -5,10 +8,6 @@ using Robust.Shared.Physics.Systems; using Robust.Shared.Timing; -using Content.Shared.Singularity.EntitySystems; -using Content.Server.Singularity.Components; -using Content.Shared.Ghost; - namespace Content.Server.Singularity.EntitySystems; /// @@ -58,11 +57,12 @@ public override void Update(float frameTime) if(!_timing.IsFirstTimePredicted) return; - foreach(var (gravWell, xform) in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var gravWell, out var xform)) { var curTime = _timing.CurTime; if (gravWell.NextPulseTime <= curTime) - Update(gravWell.Owner, curTime - gravWell.LastPulseTime, gravWell, xform); + Update(uid, curTime - gravWell.LastPulseTime, gravWell, xform); } } diff --git a/Content.Server/Singularity/EntitySystems/SingularitySystem.cs b/Content.Server/Singularity/EntitySystems/SingularitySystem.cs index 37e26b9cc0302c..ddc63156bf0525 100644 --- a/Content.Server/Singularity/EntitySystems/SingularitySystem.cs +++ b/Content.Server/Singularity/EntitySystems/SingularitySystem.cs @@ -1,15 +1,13 @@ -using Robust.Shared.GameStates; -using Robust.Shared.Player; -using Robust.Shared.Timing; -using Robust.Server.GameStates; - -using Content.Shared.Singularity.Components; -using Content.Shared.Singularity.EntitySystems; -using Content.Shared.Singularity.Events; - using Content.Server.Physics.Components; using Content.Server.Singularity.Components; using Content.Server.Singularity.Events; +using Content.Shared.Singularity.Components; +using Content.Shared.Singularity.EntitySystems; +using Content.Shared.Singularity.Events; +using Robust.Server.GameStates; +using Robust.Shared.GameStates; +using Robust.Shared.Player; +using Robust.Shared.Timing; namespace Content.Server.Singularity.EntitySystems; @@ -75,11 +73,12 @@ public override void Update(float frameTime) if(!_timing.IsFirstTimePredicted) return; - foreach(var singularity in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var singularity)) { var curTime = _timing.CurTime; if (singularity.NextUpdateTime <= curTime) - Update(singularity.Owner, curTime - singularity.LastUpdateTime, singularity); + Update(uid, curTime - singularity.LastUpdateTime, singularity); } } @@ -129,14 +128,15 @@ public void SetEnergy(EntityUid uid, float value, SingularityComponent? singular return; singularity.Energy = value; - SetLevel(uid, value switch { - >= 2400 => 6, - >= 1600 => 5, - >= 900 => 4, - >= 300 => 3, - >= 200 => 2, - > 0 => 1, - _ => 0 + SetLevel(uid, value switch + { + >= 2400 => 6, + >= 1600 => 5, + >= 900 => 4, + >= 300 => 3, + >= 200 => 2, + > 0 => 1, + _ => 0 }, singularity); } @@ -204,9 +204,9 @@ protected override void OnSingularityStartup(EntityUid uid, SingularityComponent MetaDataComponent? metaData = null; if (Resolve(uid, ref metaData) && metaData.EntityLifeStage <= EntityLifeStage.Initializing) - _audio.Play(comp.FormationSound, Filter.Pvs(comp.Owner), comp.Owner, true); + _audio.Play(comp.FormationSound, Filter.Pvs(uid), uid, true); - comp.AmbientSoundStream = _audio.Play(comp.AmbientSound, Filter.Pvs(comp.Owner), comp.Owner, true); + comp.AmbientSoundStream = _audio.Play(comp.AmbientSound, Filter.Pvs(uid), uid, true); UpdateSingularityLevel(uid, comp); } @@ -236,7 +236,7 @@ public void OnSingularityShutdown(EntityUid uid, SingularityComponent comp, Comp MetaDataComponent? metaData = null; if (Resolve(uid, ref metaData) && metaData.EntityLifeStage >= EntityLifeStage.Terminating) - _audio.Play(comp.DissipationSound, Filter.Pvs(comp.Owner), comp.Owner, true); + _audio.Play(comp.DissipationSound, Filter.Pvs(uid), uid, true); } /// @@ -283,7 +283,7 @@ private void OnConsumed(EntityUid uid, SingularityComponent comp, ref EventHoriz // Should be slightly more efficient than checking literally everything we consume for a singularity component and doing the reverse. if (EntityManager.TryGetComponent(args.EventHorizonUid, out var singulo)) { - AdjustEnergy(singulo.Owner, comp.Energy, singularity: singulo); + AdjustEnergy(uid, comp.Energy, singularity: singulo); SetEnergy(uid, 0.0f, comp); } } diff --git a/Content.Server/Solar/EntitySystems/PowerSolarSystem.cs b/Content.Server/Solar/EntitySystems/PowerSolarSystem.cs index cead16b76d326e..6a8fc68d976bd7 100644 --- a/Content.Server/Solar/EntitySystems/PowerSolarSystem.cs +++ b/Content.Server/Solar/EntitySystems/PowerSolarSystem.cs @@ -61,8 +61,7 @@ internal sealed class PowerSolarSystem : EntitySystem /// /// Queue of panels to update each cycle. /// - private readonly Queue _updateQueue = new(); - + private readonly Queue> _updateQueue = new(); public override void Initialize() { @@ -102,24 +101,26 @@ public override void Update(float frameTime) if (_updateQueue.Count > 0) { var panel = _updateQueue.Dequeue(); - if (panel.Running) + if (panel.Comp.Running) UpdatePanelCoverage(panel); } else { TotalPanelPower = 0; - foreach (var (panel, xform) in EntityManager.EntityQuery()) + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var panel, out var xform)) { TotalPanelPower += panel.MaxSupply * panel.Coverage; xform.WorldRotation = TargetPanelRotation; - _updateQueue.Enqueue(panel); + _updateQueue.Enqueue((uid, panel)); } } } - private void UpdatePanelCoverage(SolarPanelComponent panel) + private void UpdatePanelCoverage(Entity panel) { - EntityUid entity = panel.Owner; + var entity = panel.Owner; var xform = EntityManager.GetComponent(entity); // So apparently, and yes, I *did* only find this out later, @@ -163,8 +164,8 @@ private void UpdatePanelCoverage(SolarPanelComponent panel) } // Total coverage calculated; apply it to the panel. - panel.Coverage = coverage; - UpdateSupply((panel).Owner, panel); + panel.Comp.Coverage = coverage; + UpdateSupply(panel, panel); } public void UpdateSupply( diff --git a/Content.Server/Speech/EntitySystems/AddAccentClothingSystem.cs b/Content.Server/Speech/EntitySystems/AddAccentClothingSystem.cs index 23dfaef923124f..1f707c2249c3a6 100644 --- a/Content.Server/Speech/EntitySystems/AddAccentClothingSystem.cs +++ b/Content.Server/Speech/EntitySystems/AddAccentClothingSystem.cs @@ -23,16 +23,17 @@ private void OnGotEquipped(EntityUid uid, AddAccentClothingComponent component, // check if entity was actually used as clothing // not just taken in pockets or something var isCorrectSlot = clothing.Slots.HasFlag(args.SlotFlags); - if (!isCorrectSlot) return; + if (!isCorrectSlot) + return; // does the user already has this accent? var componentType = _componentFactory.GetRegistration(component.Accent).Type; - if (EntityManager.HasComponent(args.Equipee, componentType)) return; + if (HasComp(args.Equipee, componentType)) + return; // add accent to the user var accentComponent = (Component) _componentFactory.GetComponent(componentType); - accentComponent.Owner = args.Equipee; - EntityManager.AddComponent(args.Equipee, accentComponent); + AddComp(args.Equipee, accentComponent); // snowflake case for replacement accent if (accentComponent is ReplacementAccentComponent rep) diff --git a/Content.Server/Station/Systems/StationSystem.cs b/Content.Server/Station/Systems/StationSystem.cs index 8fdf103cd70648..65eabd819006e1 100644 --- a/Content.Server/Station/Systems/StationSystem.cs +++ b/Content.Server/Station/Systems/StationSystem.cs @@ -239,7 +239,7 @@ public Filter GetInStation(StationDataComponent dataComponent, float range = 32f foreach (var gridUid in dataComponent.Grids) { - if (!_mapManager.TryGetGrid(gridUid, out var grid) || + if (!TryComp(gridUid, out MapGridComponent? grid) || !xformQuery.TryGetComponent(gridUid, out var xform)) continue; @@ -429,7 +429,7 @@ public void DeleteStation(EntityUid station, StationDataComponent? stationData = if (xform.GridUid == EntityUid.Invalid) { - Logger.Debug("A"); + Log.Debug("A"); return null; } @@ -438,12 +438,26 @@ public void DeleteStation(EntityUid station, StationDataComponent? stationData = public List GetStations() { - return EntityQuery().Select(x => x.Owner).ToList(); + var stations = new List(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) + { + stations.Add(uid); + } + + return stations; } public HashSet GetStationsSet() { - return EntityQuery().Select(x => x.Owner).ToHashSet(); + var stations = new HashSet(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) + { + stations.Add(uid); + } + + return stations; } /// diff --git a/Content.Server/StationEvents/Events/BluespaceLockerRule.cs b/Content.Server/StationEvents/Events/BluespaceLockerRule.cs index ddf1ba784cb3a0..709b750334e9b4 100644 --- a/Content.Server/StationEvents/Events/BluespaceLockerRule.cs +++ b/Content.Server/StationEvents/Events/BluespaceLockerRule.cs @@ -1,5 +1,4 @@ -using System.Linq; -using Content.Server.GameTicking.Rules.Components; +using Content.Server.GameTicking.Rules.Components; using Content.Server.Resist; using Content.Server.Station.Components; using Content.Server.StationEvents.Components; @@ -18,13 +17,17 @@ protected override void Started(EntityUid uid, BluespaceLockerRuleComponent comp { base.Started(uid, component, gameRule, args); - var targets = EntityQuery().ToList(); + var targets = new List(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var storageUid, out _, out _)) + { + targets.Add(storageUid); + } + RobustRandom.Shuffle(targets); - foreach (var target in targets) + foreach (var potentialLink in targets) { - var potentialLink = target.Item1.Owner; - if (HasComp(potentialLink) || HasComp(potentialLink) || !HasComp(potentialLink.ToCoordinates().GetGridUid(EntityManager))) diff --git a/Content.Server/StationEvents/Events/BreakerFlipRule.cs b/Content.Server/StationEvents/Events/BreakerFlipRule.cs index c53f3c57501419..494779fe350316 100644 --- a/Content.Server/StationEvents/Events/BreakerFlipRule.cs +++ b/Content.Server/StationEvents/Events/BreakerFlipRule.cs @@ -1,11 +1,9 @@ -using System.Linq; -using Content.Server.GameTicking.Rules.Components; +using Content.Server.GameTicking.Rules.Components; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Station.Components; using Content.Server.StationEvents.Components; using JetBrains.Annotations; -using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; @@ -29,12 +27,13 @@ protected override void Started(EntityUid uid, BreakerFlipRuleComponent componen if (!TryGetRandomStation(out var chosenStation)) return; - var stationApcs = new List(); - foreach (var (apc, transform) in EntityQuery()) + var stationApcs = new List>(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var apcUid, out var apc, out var xform)) { - if (apc.MainBreakerEnabled && CompOrNull(transform.GridUid)?.Station == chosenStation) + if (apc.MainBreakerEnabled && CompOrNull(xform.GridUid)?.Station == chosenStation) { - stationApcs.Add(apc); + stationApcs.Add((apcUid, apc)); } } @@ -46,7 +45,7 @@ protected override void Started(EntityUid uid, BreakerFlipRuleComponent componen for (var i = 0; i < toDisable; i++) { - _apcSystem.ApcToggleBreaker(stationApcs[i].Owner, stationApcs[i]); + _apcSystem.ApcToggleBreaker(stationApcs[i], stationApcs[i]); } } } diff --git a/Content.Server/StationEvents/Events/MeteorSwarmRule.cs b/Content.Server/StationEvents/Events/MeteorSwarmRule.cs index 5192eef69b1bb5..ef84d0a9aefa9a 100644 --- a/Content.Server/StationEvents/Events/MeteorSwarmRule.cs +++ b/Content.Server/StationEvents/Events/MeteorSwarmRule.cs @@ -1,11 +1,11 @@ using System.Numerics; using Content.Server.GameTicking.Rules.Components; using Content.Server.StationEvents.Components; -using Robust.Shared.Spawners; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; -using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; +using Robust.Shared.Spawners; namespace Content.Server.StationEvents.Events { @@ -43,9 +43,13 @@ protected override void ActiveTick(EntityUid uid, MeteorSwarmRuleComponent compo Box2? playableArea = null; var mapId = GameTicker.DefaultMap; - foreach (var grid in MapManager.GetAllMapGrids(mapId)) + var query = AllEntityQuery(); + while (query.MoveNext(out var gridId, out _, out var xform)) { - var aabb = _physics.GetWorldAABB(grid.Owner); + if (xform.MapID != mapId) + continue; + + var aabb = _physics.GetWorldAABB(gridId); playableArea = playableArea?.Union(aabb) ?? aabb; } diff --git a/Content.Server/StationEvents/Events/PowerGridCheckRule.cs b/Content.Server/StationEvents/Events/PowerGridCheckRule.cs index d24f04d8000355..fdd3e30d437ad5 100644 --- a/Content.Server/StationEvents/Events/PowerGridCheckRule.cs +++ b/Content.Server/StationEvents/Events/PowerGridCheckRule.cs @@ -1,16 +1,14 @@ +using System.Threading; +using Content.Server.GameTicking.Rules.Components; using Content.Server.Power.Components; +using Content.Server.Power.EntitySystems; +using Content.Server.Station.Components; +using Content.Server.StationEvents.Components; using JetBrains.Annotations; using Robust.Shared.Audio; using Robust.Shared.Player; using Robust.Shared.Utility; -using System.Threading; -using Content.Server.Power.EntitySystems; using Timer = Robust.Shared.Timing.Timer; -using System.Linq; -using Content.Server.GameTicking.Rules.Components; -using Robust.Shared.Random; -using Content.Server.Station.Components; -using Content.Server.StationEvents.Components; namespace Content.Server.StationEvents.Events { @@ -26,10 +24,11 @@ protected override void Started(EntityUid uid, PowerGridCheckRuleComponent compo if (!TryGetRandomStation(out var chosenStation)) return; - foreach (var (apc, transform) in EntityQuery(true)) + var query = AllEntityQuery(); + while (query.MoveNext(out var apcUid ,out var apc, out var transform)) { if (apc.MainBreakerEnabled && CompOrNull(transform.GridUid)?.Station == chosenStation) - component.Powered.Add(apc.Owner); + component.Powered.Add(apcUid); } RobustRandom.Shuffle(component.Powered); diff --git a/Content.Server/StationEvents/Events/RandomSentienceRule.cs b/Content.Server/StationEvents/Events/RandomSentienceRule.cs index 8b2128178adf2d..d90361fe9629f1 100644 --- a/Content.Server/StationEvents/Events/RandomSentienceRule.cs +++ b/Content.Server/StationEvents/Events/RandomSentienceRule.cs @@ -1,8 +1,6 @@ using System.Linq; -using Content.Server.Chat.Systems; using Content.Server.GameTicking.Rules.Components; using Content.Server.Ghost.Roles.Components; -using Content.Server.Station.Systems; using Content.Server.StationEvents.Components; namespace Content.Server.StationEvents.Events; @@ -14,7 +12,13 @@ protected override void Started(EntityUid uid, RandomSentienceRuleComponent comp HashSet stationsToNotify = new(); var mod = GetSeverityModifier(); - var targetList = EntityQuery().ToList(); + var targetList = new List>(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var targetUid, out var target)) + { + targetList.Add((targetUid, target)); + } + RobustRandom.Shuffle(targetList); var toMakeSentient = (int) (RobustRandom.Next(2, 5) * Math.Sqrt(mod)); @@ -25,12 +29,12 @@ protected override void Started(EntityUid uid, RandomSentienceRuleComponent comp if (toMakeSentient-- == 0) break; - RemComp(target.Owner); - var ghostRole = EnsureComp(target.Owner); - EnsureComp(target.Owner); - ghostRole.RoleName = MetaData(target.Owner).EntityName; + RemComp(target); + var ghostRole = EnsureComp(target); + EnsureComp(target); + ghostRole.RoleName = MetaData(target).EntityName; ghostRole.RoleDescription = Loc.GetString("station-event-random-sentience-role-description", ("name", ghostRole.RoleName)); - groups.Add(Loc.GetString(target.FlavorKind)); + groups.Add(Loc.GetString(target.Comp.FlavorKind)); } if (groups.Count == 0) @@ -43,8 +47,9 @@ protected override void Started(EntityUid uid, RandomSentienceRuleComponent comp foreach (var target in targetList) { - var station = StationSystem.GetOwningStation(target.Owner); - if(station == null) continue; + var station = StationSystem.GetOwningStation(target); + if(station == null) + continue; stationsToNotify.Add((EntityUid) station); } foreach (var station in stationsToNotify) diff --git a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs index 805eabb3573c23..4333465f27d9a6 100644 --- a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs +++ b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs @@ -196,7 +196,13 @@ private bool ValidAutolink(EntityUid locker, EntityUid link, BluespaceLockerComp if (component.BluespaceLinks.Count < component.MinBluespaceLinks) { // Get an shuffle the list of all EntityStorages - var storages = EntityQuery().ToArray(); + var storages = new List>(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var storage)) + { + storages.Add((uid, storage)); + } + _robustRandom.Shuffle(storages); // Add valid candidates till MinBluespaceLinks is met diff --git a/Content.Server/Storage/EntitySystems/CursedEntityStorageSystem.cs b/Content.Server/Storage/EntitySystems/CursedEntityStorageSystem.cs index 1492a3f481b96f..f51c215c6e43a3 100644 --- a/Content.Server/Storage/EntitySystems/CursedEntityStorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/CursedEntityStorageSystem.cs @@ -1,10 +1,10 @@ +using System.Linq; using Content.Server.Storage.Components; using Content.Shared.Audio; +using Content.Shared.Storage.Components; using Robust.Shared.Audio; using Robust.Shared.Player; using Robust.Shared.Random; -using System.Linq; -using Content.Shared.Storage.Components; namespace Content.Server.Storage.EntitySystems; @@ -28,13 +28,19 @@ private void OnClose(EntityUid uid, CursedEntityStorageComponent component, ref if (storage.Open || storage.Contents.ContainedEntities.Count <= 0) return; - var lockerQuery = EntityQuery().ToList(); - lockerQuery.Remove(storage); + var lockers = new List>(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var storageUid, out var storageComp)) + { + lockers.Add((storageUid, storageComp)); + } + + lockers.RemoveAll(e => e.Owner == uid); - if (lockerQuery.Count == 0) + if (lockers.Count == 0) return; - var lockerEnt = _random.Pick(lockerQuery).Owner; + var lockerEnt = _random.Pick(lockers).Owner; foreach (var entity in storage.Contents.ContainedEntities.ToArray()) { diff --git a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs index cbd4883b4cdf73..4bcad622c720d6 100644 --- a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs @@ -12,6 +12,7 @@ using Content.Shared.Storage.EntitySystems; using Content.Shared.Tools.Systems; using Content.Shared.Verbs; +using Robust.Server.GameObjects; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Map; @@ -23,6 +24,7 @@ public sealed class EntityStorageSystem : SharedEntityStorageSystem [Dependency] private readonly ConstructionSystem _construction = default!; [Dependency] private readonly AtmosphereSystem _atmos = default!; [Dependency] private readonly IMapManager _map = default!; + [Dependency] private readonly MapSystem _mapSystem = default!; public override void Initialize() { @@ -130,9 +132,9 @@ public override void ReleaseGas(EntityUid uid, SharedEntityStorageComponent comp { var targetCoordinates = new EntityCoordinates(uid, component.EnteringOffset).ToMap(EntityManager, TransformSystem); - if (_map.TryFindGridAt(targetCoordinates, out _, out var grid)) + if (_map.TryFindGridAt(targetCoordinates, out var gridId, out var grid)) { - return grid.GetTileRef(targetCoordinates); + return _mapSystem.GetTileRef(gridId, grid, targetCoordinates); } return null; diff --git a/Content.Server/Storage/EntitySystems/PickRandomSystem.cs b/Content.Server/Storage/EntitySystems/PickRandomSystem.cs index 50f6db459c163f..dbbe1dd7785f76 100644 --- a/Content.Server/Storage/EntitySystems/PickRandomSystem.cs +++ b/Content.Server/Storage/EntitySystems/PickRandomSystem.cs @@ -1,11 +1,11 @@ +using System.Linq; using Content.Server.Storage.Components; using Content.Shared.Database; using Content.Shared.Hands.EntitySystems; +using Content.Shared.Storage; using Content.Shared.Verbs; using Robust.Shared.Containers; using Robust.Shared.Random; -using System.Linq; -using Content.Shared.Storage; namespace Content.Server.Storage.EntitySystems; @@ -55,7 +55,7 @@ private void TryPick(EntityUid uid, PickRandomComponent comp, StorageComponent s var picked = _random.Pick(entities); // if it fails to go into a hand of the user, will be on the storage - _container.AttachParentToContainerOrGrid(Transform(picked)); + _container.AttachParentToContainerOrGrid((picked, Transform(picked))); // TODO: try to put in hands, failing that put it on the storage _hands.TryPickupAnyHand(user, picked); diff --git a/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs b/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs index 061ddee824f415..25c31e48ca65bb 100644 --- a/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs +++ b/Content.Server/Storage/EntitySystems/SpawnItemsOnUseSystem.cs @@ -4,7 +4,6 @@ using Content.Shared.Database; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction.Events; -using Content.Shared.Storage; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Player; @@ -76,7 +75,7 @@ private void OnUseInHand(EntityUid uid, SpawnItemsOnUseComponent component, UseI foreach (var proto in spawnEntities) { entityToPlaceInHands = Spawn(proto, coords); - _adminLogger.Add(LogType.EntitySpawn, LogImpact.Low, $"{ToPrettyString(args.User)} used {ToPrettyString(component.Owner)} which spawned {ToPrettyString(entityToPlaceInHands.Value)}"); + _adminLogger.Add(LogType.EntitySpawn, LogImpact.Low, $"{ToPrettyString(args.User)} used {ToPrettyString(uid)} which spawned {ToPrettyString(entityToPlaceInHands.Value)}"); } if (component.Sound != null) diff --git a/Content.Server/Strip/StrippableSystem.cs b/Content.Server/Strip/StrippableSystem.cs index 8f723ab97d4634..a8ddf1a986bdbe 100644 --- a/Content.Server/Strip/StrippableSystem.cs +++ b/Content.Server/Strip/StrippableSystem.cs @@ -63,7 +63,7 @@ private void OnStripEnsnareMessage(EntityUid uid, EnsnareableComponent component } } - private void OnStripButtonPressed(EntityUid target, StrippableComponent component, StrippingSlotButtonPressed args) + private void OnStripButtonPressed(Entity strippable, ref StrippingSlotButtonPressed args) { if (args.Session.AttachedEntity is not {Valid: true} user || !TryComp(user, out var userHands)) @@ -71,22 +71,22 @@ private void OnStripButtonPressed(EntityUid target, StrippableComponent componen if (args.IsHand) { - StripHand(target, user, args.Slot, component, userHands); + StripHand(user, args.Slot, strippable, userHands); return; } - if (!TryComp(target, out var inventory)) + if (!TryComp(strippable, out var inventory)) return; - var hasEnt = _inventorySystem.TryGetSlotEntity(target, args.Slot, out var held, inventory); + var hasEnt = _inventorySystem.TryGetSlotEntity(strippable, args.Slot, out var held, inventory); if (userHands.ActiveHandEntity != null && !hasEnt) - PlaceActiveHandItemInInventory(user, target, userHands.ActiveHandEntity.Value, args.Slot, component); + PlaceActiveHandItemInInventory(user, strippable, userHands.ActiveHandEntity.Value, args.Slot, strippable); else if (userHands.ActiveHandEntity == null && hasEnt) - TakeItemFromInventory(user, target, held!.Value, args.Slot, component); + TakeItemFromInventory(user, strippable, held!.Value, args.Slot, strippable); } - private void StripHand(EntityUid target, EntityUid user, string handId, StrippableComponent component, HandsComponent userHands) + private void StripHand(EntityUid user, string handId, Entity target, HandsComponent userHands) { if (!_handsSystem.TryGetHand(target, handId, out var hand)) return; @@ -101,23 +101,23 @@ private void StripHand(EntityUid target, EntityUid user, string handId, Strippab } if (userHands.ActiveHandEntity != null && hand.HeldEntity == null) - PlaceActiveHandItemInHands(user, target, userHands.ActiveHandEntity.Value, handId, component); + PlaceActiveHandItemInHands(user, target, userHands.ActiveHandEntity.Value, handId, target); else if (userHands.ActiveHandEntity == null && hand.HeldEntity != null) - TakeItemFromHands(user,target, hand.HeldEntity.Value, handId, component); + TakeItemFromHands(user, target, hand.HeldEntity.Value, handId, target); } - public override void StartOpeningStripper(EntityUid user, StrippableComponent component, bool openInCombat = false) + public override void StartOpeningStripper(EntityUid user, Entity strippable, bool openInCombat = false) { - base.StartOpeningStripper(user, component, openInCombat); + base.StartOpeningStripper(user, strippable, openInCombat); if (TryComp(user, out var mode) && mode.IsInCombatMode && !openInCombat) return; if (TryComp(user, out var actor)) { - if (_userInterfaceSystem.SessionHasOpenUi(component.Owner, StrippingUiKey.Key, actor.PlayerSession)) + if (_userInterfaceSystem.SessionHasOpenUi(strippable, StrippingUiKey.Key, actor.PlayerSession)) return; - _userInterfaceSystem.TryOpen(component.Owner, StrippingUiKey.Key, actor.PlayerSession); + _userInterfaceSystem.TryOpen(strippable, StrippingUiKey.Key, actor.PlayerSession); } } @@ -126,14 +126,14 @@ private void AddStripVerb(EntityUid uid, StrippableComponent component, GetVerbs if (args.Hands == null || !args.CanAccess || !args.CanInteract || args.Target == args.User) return; - if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) + if (!HasComp(args.User)) return; Verb verb = new() { Text = Loc.GetString("strip-verb-get-data-text"), Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")), - Act = () => StartOpeningStripper(args.User, component, true), + Act = () => StartOpeningStripper(args.User, (uid, component), true), }; args.Verbs.Add(verb); } @@ -150,7 +150,7 @@ private void AddStripExamineVerb(EntityUid uid, StrippableComponent component, G { Text = Loc.GetString("strip-verb-get-data-text"), Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")), - Act = () => StartOpeningStripper(args.User, component, true), + Act = () => StartOpeningStripper(args.User, (uid, component), true), Category = VerbCategory.Examine, }; @@ -162,10 +162,10 @@ private void OnActivateInWorld(EntityUid uid, StrippableComponent component, Act if (args.Target == args.User) return; - if (!TryComp(args.User, out var actor)) + if (!HasComp(args.User)) return; - StartOpeningStripper(args.User, component); + StartOpeningStripper(args.User, (uid, component)); } /// @@ -238,7 +238,8 @@ bool Check() _adminLogger.Add(LogType.Stripping, LogImpact.Low, $"{ToPrettyString(user):user} is trying to place the item {ToPrettyString(held):item} in {ToPrettyString(target):target}'s {slot} slot"); var result = await _doAfter.WaitDoAfter(doAfterArgs); - if (result != DoAfterStatus.Finished) return; + if (result != DoAfterStatus.Finished) + return; DebugTools.Assert(userHands.ActiveHand?.HeldEntity == held); @@ -319,7 +320,7 @@ private async void TakeItemFromInventory( EntityUid target, EntityUid item, string slot, - StrippableComponent component) + Entity strippable) { bool Check() { @@ -368,7 +369,7 @@ bool Check() _popup.PopupEntity(Loc.GetString("strippable-component-alert-owner-hidden", ("slot", slot)), target, target, PopupType.Large); } - else if (_inventorySystem.TryGetSlotEntity(component.Owner, slot, out var slotItem)) + else if (_inventorySystem.TryGetSlotEntity(strippable, slot, out var slotItem)) { _popup.PopupEntity(Loc.GetString("strippable-component-alert-owner", ("user", Identity.Entity(user, EntityManager)), ("item", slotItem)), target, target, PopupType.Large); @@ -378,9 +379,10 @@ bool Check() _adminLogger.Add(LogType.Stripping, LogImpact.Low, $"{ToPrettyString(user):user} is trying to strip the item {ToPrettyString(item):item} from {ToPrettyString(target):target}"); var result = await _doAfter.WaitDoAfter(doAfterArgs); - if (result != DoAfterStatus.Finished) return; + if (result != DoAfterStatus.Finished) + return; - if (!_inventorySystem.TryUnequip(user, component.Owner, slot)) + if (!_inventorySystem.TryUnequip(user, strippable, slot)) return; // Raise a dropped event, so that things like gas tank internals properly deactivate when stripping @@ -394,7 +396,7 @@ bool Check() /// /// Takes an item from a hand and places it in the user's active hand. /// - private async void TakeItemFromHands(EntityUid user, EntityUid target, EntityUid item, string handName, StrippableComponent component) + private async void TakeItemFromHands(EntityUid user, EntityUid target, EntityUid item, string handName, Entity strippable) { var hands = Comp(target); var userHands = Comp(user); @@ -419,7 +421,7 @@ bool Check() return true; } - var userEv = new BeforeStripEvent(component.HandStripDelay); + var userEv = new BeforeStripEvent(strippable.Comp.HandStripDelay); RaiseLocalEvent(user, userEv); var ev = new BeforeGettingStrippedEvent(userEv.Time, userEv.Stealth); RaiseLocalEvent(target, ev); @@ -441,15 +443,16 @@ bool Check() _popup.PopupEntity( Loc.GetString("strippable-component-alert-owner", ("user", Identity.Entity(user, EntityManager)), ("item", item)), - component.Owner, - component.Owner); + strippable.Owner, + strippable.Owner); } _adminLogger.Add(LogType.Stripping, LogImpact.Low, $"{ToPrettyString(user):user} is trying to strip the item {ToPrettyString(item):item} from {ToPrettyString(target):target}"); var result = await _doAfter.WaitDoAfter(doAfterArgs); - if (result != DoAfterStatus.Finished) return; + if (result != DoAfterStatus.Finished) + return; _handsSystem.TryDrop(target, item, checkActionBlocker: false, handsComp: hands); _handsSystem.PickupOrDrop(user, item, handsComp: userHands); diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs index 2d691602f731f2..17eee198b8fb21 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs @@ -1,18 +1,10 @@ using System.Linq; -using Content.Server.Chat.Systems; using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; using Content.Server.Power.Components; using Content.Server.UserInterface; -using Content.Server.Wires; -using Content.Shared.Interaction; -using Content.Shared.Speech; using Content.Shared.SurveillanceCamera; using Robust.Server.GameObjects; -using Robust.Server.Player; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; -using Robust.Shared.Timing; namespace Content.Server.SurveillanceCamera; @@ -42,21 +34,22 @@ public override void Initialize() public override void Update(float frameTime) { - foreach (var (_, monitor) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out var monitor)) { - if (Paused(monitor.Owner)) + if (Paused(uid)) { continue; } monitor.LastHeartbeatSent += frameTime; - SendHeartbeat(monitor.Owner, monitor); + SendHeartbeat(uid, monitor); monitor.LastHeartbeat += frameTime; if (monitor.LastHeartbeat > _maxHeartbeatTime) { - DisconnectCamera(monitor.Owner, true, monitor); - EntityManager.RemoveComponent(monitor.Owner); + DisconnectCamera(uid, true, monitor); + EntityManager.RemoveComponent(uid); } } } diff --git a/Content.Server/Tabletop/TabletopSystem.cs b/Content.Server/Tabletop/TabletopSystem.cs index 3b817c2c61baea..2e271080d07f5c 100644 --- a/Content.Server/Tabletop/TabletopSystem.cs +++ b/Content.Server/Tabletop/TabletopSystem.cs @@ -1,6 +1,5 @@ using Content.Server.Popups; using Content.Server.Tabletop.Components; -using Content.Shared.Examine; using Content.Shared.Hands.Components; using Content.Shared.Interaction; using Content.Shared.Item; @@ -178,20 +177,19 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var gamer in EntityManager.EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var gamer)) { - if (!EntityManager.EntityExists(gamer.Tabletop)) + if (!Exists(gamer.Tabletop)) continue; - if (!EntityManager.TryGetComponent(gamer.Owner, out ActorComponent? actor)) + if (!TryComp(uid, out ActorComponent? actor)) { - EntityManager.RemoveComponent(gamer.Owner); + EntityManager.RemoveComponent(uid); return; } - var gamerUid = (gamer).Owner; - - if (actor.PlayerSession.Status != SessionStatus.InGame || !CanSeeTable(gamerUid, gamer.Tabletop)) + if (actor.PlayerSession.Status != SessionStatus.InGame || !CanSeeTable(uid, gamer.Tabletop)) CloseSessionFor(actor.PlayerSession, gamer.Tabletop); } } diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs index 0dc5e9391af8da..27521cadf63377 100644 --- a/Content.Server/Temperature/Systems/TemperatureSystem.cs +++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Server.Administration.Logs; using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; @@ -11,7 +12,6 @@ using Content.Shared.Rejuvenate; using Content.Shared.Temperature; using Robust.Server.GameObjects; -using System.Linq; namespace Content.Server.Temperature.Systems; @@ -28,7 +28,7 @@ public sealed class TemperatureSystem : EntitySystem /// This is done because both AtmosExposed and Flammable call ChangeHeat in the same tick, meaning /// that we need some mechanism to ensure it doesn't double dip on damage for both calls. /// - public HashSet ShouldUpdateDamage = new(); + public HashSet> ShouldUpdateDamage = new(); public float UpdateInterval = 1.0f; @@ -99,7 +99,7 @@ public void ChangeHeat(EntityUid uid, float heatAmount, bool ignoreHeatResistanc if (!ignoreHeatResistance) { var ev = new ModifyChangedTemperatureEvent(heatAmount); - RaiseLocalEvent(uid, ev, false); + RaiseLocalEvent(uid, ev); heatAmount = ev.TemperatureDelta; } @@ -189,9 +189,9 @@ private void ServerAlert(EntityUid uid, AlertsComponent status, OnTemperatureCha } } - private void EnqueueDamage(EntityUid uid, TemperatureComponent component, OnTemperatureChangeEvent args) + private void EnqueueDamage(Entity temperature, ref OnTemperatureChangeEvent args) { - ShouldUpdateDamage.Add(component); + ShouldUpdateDamage.Add(temperature); } private void ChangeDamage(EntityUid uid, TemperatureComponent temperature) diff --git a/Content.Server/Tools/ToolSystem.Welder.cs b/Content.Server/Tools/ToolSystem.Welder.cs index 8a4b881f9f4310..e0dc341a167a83 100644 --- a/Content.Server/Tools/ToolSystem.Welder.cs +++ b/Content.Server/Tools/ToolSystem.Welder.cs @@ -15,7 +15,6 @@ using Content.Shared.Weapons.Melee.Events; using Robust.Shared.Audio; using Robust.Shared.GameStates; -using Robust.Shared.Utility; namespace Content.Server.Tools { @@ -24,7 +23,7 @@ public sealed partial class ToolSystem private readonly HashSet _activeWelders = new(); private const float WelderUpdateTimer = 1f; - private float _welderTimer = 0f; + private float _welderTimer; public void InitializeWelders() { @@ -112,7 +111,7 @@ public bool TryTurnWelderOn(EntityUid uid, EntityUid? user, _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(uid):welder} toggled on"); var ev = new WelderToggledEvent(true); - RaiseLocalEvent(welder.Owner, ev, false); + RaiseLocalEvent(uid, ev); var hotEvent = new IsHotEvent() {IsHot = true}; RaiseLocalEvent(uid, hotEvent); @@ -162,7 +161,7 @@ public bool TryTurnWelderOff(EntityUid uid, EntityUid? user, _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(uid):welder} toggled off"); var ev = new WelderToggledEvent(false); - RaiseLocalEvent(uid, ev, false); + RaiseLocalEvent(uid, ev); var hotEvent = new IsHotEvent() {IsHot = false}; RaiseLocalEvent(uid, hotEvent); @@ -187,7 +186,7 @@ public bool TryTurnWelderOff(EntityUid uid, EntityUid? user, private void OnWelderStartup(EntityUid uid, WelderComponent welder, ComponentStartup args) { // TODO: Delete this shit what - Dirty(welder); + Dirty(uid, welder); } private void OnWelderIsHotEvent(EntityUid uid, WelderComponent welder, IsHotEvent args) @@ -222,7 +221,7 @@ private void OnWelderSolutionChange(EntityUid uid, WelderComponent welder, Solut { // TODO what // ???? - Dirty(welder); + Dirty(uid, welder); } private void OnWelderActivate(EntityUid uid, WelderComponent welder, ActivateInWorldEvent args) @@ -315,7 +314,7 @@ private void UpdateWelders(float frameTime) if (solution.GetTotalPrototypeQuantity(welder.FuelReagent) <= FixedPoint2.Zero) TryTurnWelderOff(tool, null, welder); - Dirty(welder); + Dirty(tool, welder); } _welderTimer -= WelderUpdateTimer; diff --git a/Content.Server/Traitor/Uplink/SurplusBundle/SurplusBundleSystem.cs b/Content.Server/Traitor/Uplink/SurplusBundle/SurplusBundleSystem.cs index 11187e969f17d6..5c0a56d346c43f 100644 --- a/Content.Server/Traitor/Uplink/SurplusBundle/SurplusBundleSystem.cs +++ b/Content.Server/Traitor/Uplink/SurplusBundle/SurplusBundleSystem.cs @@ -1,8 +1,8 @@ using System.Linq; -using Content.Server.Store.Systems; using Content.Server.Storage.EntitySystems; -using Content.Shared.Store; +using Content.Server.Store.Systems; using Content.Shared.FixedPoint; +using Content.Shared.Store; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -50,7 +50,7 @@ private void FillStorage(EntityUid uid, SurplusBundleComponent? component = null foreach (var item in content) { var ent = EntityManager.SpawnEntity(item.ProductEntity, cords); - _entityStorage.Insert(ent, component.Owner); + _entityStorage.Insert(ent, uid); } } diff --git a/Content.Server/Traits/Assorted/NarcolepsySystem.cs b/Content.Server/Traits/Assorted/NarcolepsySystem.cs index c1fdde4ed3901c..e4fa1ccbc73c0a 100644 --- a/Content.Server/Traits/Assorted/NarcolepsySystem.cs +++ b/Content.Server/Traits/Assorted/NarcolepsySystem.cs @@ -39,7 +39,8 @@ public override void Update(float frameTime) { base.Update(frameTime); - foreach (var narcolepsy in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var narcolepsy)) { narcolepsy.NextIncidentTime -= frameTime; @@ -55,7 +56,7 @@ public override void Update(float frameTime) // Make sure the sleep time doesn't cut into the time to next incident. narcolepsy.NextIncidentTime += duration; - _statusEffects.TryAddStatusEffect(narcolepsy.Owner, StatusEffectKey, + _statusEffects.TryAddStatusEffect(uid, StatusEffectKey, TimeSpan.FromSeconds(duration), false); } } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyArtifactSystem.cs index d192e928d8f1f8..ba2786f32d33d2 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyArtifactSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyArtifactSystem.cs @@ -1,9 +1,8 @@ +using Content.Server.Polymorph.Systems; using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; using Content.Server.Xenoarchaeology.XenoArtifacts.Events; using Content.Shared.Humanoid; -using Content.Server.Polymorph.Systems; using Content.Shared.Mobs.Systems; -using Content.Shared.Polymorph; namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; @@ -28,7 +27,10 @@ public override void Initialize() private void OnActivate(EntityUid uid, PolyArtifactComponent component, ArtifactActivatedEvent args) { var xform = Transform(uid); - foreach (var comp in _lookup.GetComponentsInRange(xform.Coordinates, component.Range)) + var humanoids = new HashSet>(); + _lookup.GetEntitiesInRange(xform.Coordinates, component.Range, humanoids); + + foreach (var comp in humanoids) { var target = comp.Owner; if (_mob.IsAlive(target)) diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs index 675d3e9387dd2e..b977cb038c982c 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs @@ -23,7 +23,7 @@ private void OnActivated(EntityUid uid, ShuffleArtifactComponent component, Arti var mobState = GetEntityQuery(); List allCoords = new(); - List toShuffle = new(); + List> toShuffle = new(); foreach (var ent in _lookup.GetEntitiesInRange(uid, component.Radius, LookupFlags.Dynamic | LookupFlags.Sundries)) { @@ -32,7 +32,7 @@ private void OnActivated(EntityUid uid, ShuffleArtifactComponent component, Arti var xform = Transform(ent); - toShuffle.Add(xform); + toShuffle.Add((ent, xform)); allCoords.Add(xform.Coordinates); } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteSystem.cs index c3af6a11e2aa57..091441df21a79e 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteSystem.cs @@ -24,8 +24,9 @@ public override void Initialize() public override void Update(float frameTime) { base.Update(frameTime); - var query = EntityManager.EntityQuery(); - foreach (var (component, appearance) in query) + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var component, out var appearance)) { if (component.ActivationStart == null) continue; @@ -33,7 +34,7 @@ public override void Update(float frameTime) var timeDif = _time.CurTime - component.ActivationStart.Value; if (timeDif.Seconds >= component.ActivationTime) { - _appearance.SetData(appearance.Owner, SharedArtifactsVisuals.IsActivated, false, appearance); + _appearance.SetData(uid, SharedArtifactsVisuals.IsActivated, false, appearance); component.ActivationStart = null; } } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDeathTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDeathTriggerSystem.cs index 4fa21535a4ae02..a92412073408d1 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDeathTriggerSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDeathTriggerSystem.cs @@ -20,8 +20,9 @@ private void OnMobStateChanged(MobStateChangedEvent ev) var deathXform = Transform(ev.Target); - var toActivate = new List(); - foreach (var (trigger, xform) in EntityQuery()) + var toActivate = new List>(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var trigger, out var xform)) { if (!deathXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) continue; @@ -29,12 +30,12 @@ private void OnMobStateChanged(MobStateChangedEvent ev) if (distance > trigger.Range) continue; - toActivate.Add(trigger); + toActivate.Add((uid, trigger)); } foreach (var a in toActivate) { - _artifact.TryActivateArtifact(a.Owner); + _artifact.TryActivateArtifact(a); } } } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactElectricityTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactElectricityTriggerSystem.cs index 59889971019ba9..aa2a16aa1b2ee0 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactElectricityTriggerSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactElectricityTriggerSystem.cs @@ -20,18 +20,20 @@ public override void Initialize() public override void Update(float frameTime) { base.Update(frameTime); - List toUpdate = new(); - foreach (var (trigger, power, artifact) in EntityQuery()) + + List> toUpdate = new(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var trigger, out var power, out var artifact)) { if (power.ReceivedPower <= trigger.MinPower) continue; - toUpdate.Add(artifact); + toUpdate.Add((uid, artifact)); } foreach (var a in toUpdate) { - _artifactSystem.TryActivateArtifact(a.Owner, null, a); + _artifactSystem.TryActivateArtifact(a, null, a); } } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactGasTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactGasTriggerSystem.cs index 9a889689233fa8..a0c4971d8eb0bf 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactGasTriggerSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactGasTriggerSystem.cs @@ -30,11 +30,10 @@ public override void Update(float frameTime) { base.Update(frameTime); - List toUpdate = new(); - foreach (var (trigger, artifact, transform) in EntityQuery()) + List> toUpdate = new(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var trigger, out var artifact, out var transform)) { - var uid = trigger.Owner; - if (trigger.ActivationGas == null) continue; @@ -49,12 +48,12 @@ public override void Update(float frameTime) if (moles < trigger.ActivationMoles) continue; - toUpdate.Add(artifact); + toUpdate.Add((uid, artifact)); } foreach (var a in toUpdate) { - _artifactSystem.TryActivateArtifact(a.Owner, null, a); + _artifactSystem.TryActivateArtifact(a, null, a); } } } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactHeatTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactHeatTriggerSystem.cs index e54dc9a3532082..6c62f5d3424eef 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactHeatTriggerSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactHeatTriggerSystem.cs @@ -24,10 +24,10 @@ public override void Update(float frameTime) { base.Update(frameTime); - List toUpdate = new(); - foreach (var (trigger, transform, artifact) in EntityQuery()) + List> toUpdate = new(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var trigger, out var transform, out var artifact)) { - var uid = trigger.Owner; var environment = _atmosphereSystem.GetTileMixture(transform.GridUid, transform.MapUid, _transformSystem.GetGridOrMapTilePosition(uid, transform)); if (environment == null) @@ -36,12 +36,12 @@ public override void Update(float frameTime) if (environment.Temperature < trigger.ActivationTemperature) continue; - toUpdate.Add(artifact); + toUpdate.Add((uid, artifact)); } foreach (var a in toUpdate) { - _artifactSystem.TryActivateArtifact(a.Owner, null, a); + _artifactSystem.TryActivateArtifact(a, null, a); } } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs index 1960982841722c..0220c2ce1aeb0b 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs @@ -29,13 +29,12 @@ public override void Update(float frameTime) List toActivate = new(); //assume that there's more instruments than artifacts - foreach (var magboot in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var magboot, out var magXform)) { if (!magboot.On) continue; - var magXform = Transform(magboot.Owner); - foreach (var (trigger, xform) in artifactQuery) { if (!magXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) @@ -44,7 +43,7 @@ public override void Update(float frameTime) if (distance > trigger.Range) continue; - toActivate.Add(trigger.Owner); + toActivate.Add(uid); } } @@ -59,7 +58,8 @@ private void OnMagnetActivated(SalvageMagnetActivatedEvent ev) var magXform = Transform(ev.Magnet); var toActivate = new List(); - foreach (var (artifact, xform) in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var artifact, out var xform)) { if (!magXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) continue; @@ -67,7 +67,7 @@ private void OnMagnetActivated(SalvageMagnetActivatedEvent ev) if (distance > artifact.Range) continue; - toActivate.Add(artifact.Owner); + toActivate.Add(uid); } foreach (var a in toActivate) diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMusicTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMusicTriggerSystem.cs index 1f2718da2b5cc2..c62ed587527e47 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMusicTriggerSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMusicTriggerSystem.cs @@ -11,22 +11,29 @@ public sealed class ArtifactMusicTriggerSystem : EntitySystem { [Dependency] private readonly ArtifactSystem _artifact = default!; + private readonly List> _artifacts = new(); + public override void Update(float frameTime) { base.Update(frameTime); - var artifactQuery = EntityQuery().ToArray(); - if (!artifactQuery.Any()) + _artifacts.Clear(); + var artifactQuery = EntityQueryEnumerator(); + while (artifactQuery.MoveNext(out var uid, out var trigger, out var xform)) + { + _artifacts.Add((uid, trigger, xform)); + } + + if (!_artifacts.Any()) return; List toActivate = new(); + var query = EntityQueryEnumerator(); //assume that there's more instruments than artifacts - foreach (var activeinstrument in EntityQuery()) + while (query.MoveNext(out _, out var instXform)) { - var instXform = Transform(activeinstrument.Owner); - - foreach (var (trigger, xform) in artifactQuery) + foreach (var (uid, trigger, xform) in _artifacts) { if (!instXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) continue; @@ -34,7 +41,7 @@ public override void Update(float frameTime) if (distance > trigger.Range) continue; - toActivate.Add(trigger.Owner); + toActivate.Add(uid); } } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactPressureTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactPressureTriggerSystem.cs index aa1d40c5fb2d34..cf730d8b49fe4c 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactPressureTriggerSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactPressureTriggerSystem.cs @@ -17,10 +17,10 @@ public override void Update(float frameTime) { base.Update(frameTime); - List toUpdate = new(); - foreach (var (trigger, artifact, transform) in EntityQuery()) + List> toUpdate = new(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var trigger, out var artifact, out var transform)) { - var uid = trigger.Owner; var environment = _atmosphereSystem.GetTileMixture(transform.GridUid, transform.MapUid, _transformSystem.GetGridOrMapTilePosition(uid, transform)); @@ -29,12 +29,12 @@ public override void Update(float frameTime) var pressure = environment.Pressure; if (pressure >= trigger.MaxPressureThreshold || pressure <= trigger.MinPressureThreshold) - toUpdate.Add(artifact); + toUpdate.Add((uid, artifact)); } foreach (var a in toUpdate) { - _artifactSystem.TryActivateArtifact(a.Owner, null, a); + _artifactSystem.TryActivateArtifact(a, null, a); } } } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactTimerTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactTimerTriggerSystem.cs index d8c500c3b189c6..c6ea745e1c79ef 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactTimerTriggerSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactTimerTriggerSystem.cs @@ -24,20 +24,21 @@ public override void Update(float frameTime) { base.Update(frameTime); - List toUpdate = new(); - foreach (var (trigger, artifact) in EntityQuery()) + List> toUpdate = new(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var trigger, out var artifact)) { var timeDif = _time.CurTime - trigger.LastActivation; if (timeDif <= trigger.ActivationRate) continue; - toUpdate.Add(artifact); + toUpdate.Add((uid, artifact)); trigger.LastActivation = _time.CurTime; } foreach (var a in toUpdate) { - _artifactSystem.TryActivateArtifact(a.Owner, null, a); + _artifactSystem.TryActivateArtifact(a, null, a); } } } diff --git a/Content.Shared/Access/Systems/SharedIdCardSystem.cs b/Content.Shared/Access/Systems/SharedIdCardSystem.cs index 3ef57827e57cc7..842e7e7e6ac9ee 100644 --- a/Content.Shared/Access/Systems/SharedIdCardSystem.cs +++ b/Content.Shared/Access/Systems/SharedIdCardSystem.cs @@ -1,4 +1,3 @@ -using System.Diagnostics.CodeAnalysis; using Content.Shared.Access.Components; using Content.Shared.Hands.Components; using Content.Shared.Inventory; @@ -14,7 +13,7 @@ public abstract class SharedIdCardSystem : EntitySystem /// 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. /// - public bool TryFindIdCard(EntityUid uid, [NotNullWhen(true)] out IdCardComponent? idCard) + public bool TryFindIdCard(EntityUid uid, out Entity idCard) { // check held item? if (TryComp(uid, out HandsComponent? hands) && @@ -39,17 +38,22 @@ hands.ActiveHandEntity is EntityUid heldItem && /// Attempt to get an id card component from an entity, either by getting it directly from the entity, or by /// getting the contained id from a . /// - public bool TryGetIdCard(EntityUid uid, [NotNullWhen(true)] out IdCardComponent? idCard) + public bool TryGetIdCard(EntityUid uid, out Entity idCard) { - if (TryComp(uid, out idCard)) + if (TryComp(uid, out IdCardComponent? idCardComp)) + { + idCard = (uid, idCardComp); return true; + } if (TryComp(uid, out PdaComponent? pda) - && TryComp(pda.ContainedId, out idCard)) + && TryComp(pda.ContainedId, out idCardComp)) { + idCard = (pda.ContainedId.Value, idCardComp); return true; } + idCard = default; return false; } } diff --git a/Content.Shared/Actions/ActionContainerSystem.cs b/Content.Shared/Actions/ActionContainerSystem.cs index bce0836efb6283..86d50e3989a943 100644 --- a/Content.Shared/Actions/ActionContainerSystem.cs +++ b/Content.Shared/Actions/ActionContainerSystem.cs @@ -60,7 +60,7 @@ public bool EnsureAction(EntityUid uid, { action = null; - DebugTools.Assert(comp == null || comp.Owner == uid); + DebugTools.AssertOwner(uid, comp); comp ??= EnsureComp(uid); if (Exists(actionId)) @@ -162,7 +162,7 @@ public bool AddAction(EntityUid uid, EntityUid actionId, BaseActionComponent? ac if (action.Container != null) RemoveAction(actionId, action); - DebugTools.Assert(comp == null || comp.Owner == uid); + DebugTools.AssertOwner(uid, comp); comp ??= EnsureComp(uid); if (!comp.Container.Insert(actionId)) { diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 8d2c8c28e3e44d..9ad155081acc84 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -96,7 +96,7 @@ public bool ResolveActionData( { if (result != null) { - DebugTools.Assert(result.Owner == uid); + DebugTools.AssertOwner(uid, result); return true; } @@ -494,7 +494,7 @@ public bool AddActionDirect(EntityUid performer, (TryComp(action.Container, out ActionsContainerComponent? containerComp) && containerComp.Container.Contains(actionId))); - DebugTools.Assert(comp == null || comp.Owner == performer); + DebugTools.AssertOwner(performer, comp); comp ??= EnsureComp(performer); action.AttachedEntity = performer; comp.Actions.Add(actionId); @@ -523,7 +523,7 @@ public void GrantActions(EntityUid performer, IEnumerable actions, En if (!Resolve(container, ref containerComp)) return; - DebugTools.Assert(comp == null || comp.Owner == performer); + DebugTools.AssertOwner(performer, comp); comp ??= EnsureComp(performer); foreach (var actionId in actions) diff --git a/Content.Shared/Alert/AlertsSystem.cs b/Content.Shared/Alert/AlertsSystem.cs index db6911f12b23dd..1a2d8a05bf2f23 100644 --- a/Content.Shared/Alert/AlertsSystem.cs +++ b/Content.Shared/Alert/AlertsSystem.cs @@ -73,7 +73,7 @@ public bool TryGetAlertState(EntityUid euid, AlertKey key, out AlertState alertS /// be erased if there is currently a cooldown for the alert) public void ShowAlert(EntityUid euid, AlertType alertType, short? severity = null, (TimeSpan, TimeSpan)? cooldown = null) { - if (!EntityManager.TryGetComponent(euid, out AlertsComponent? alertsComponent)) + if (!TryComp(euid, out AlertsComponent? alertsComponent)) return; if (TryGet(alertType, out var alert)) @@ -94,9 +94,9 @@ public void ShowAlert(EntityUid euid, AlertType alertType, short? severity = nul alertsComponent.Alerts[alert.AlertKey] = new AlertState { Cooldown = cooldown, Severity = severity, Type = alertType }; - AfterShowAlert(alertsComponent); + AfterShowAlert((euid, alertsComponent)); - Dirty(alertsComponent); + Dirty(euid, alertsComponent); } else { @@ -111,7 +111,7 @@ public void ShowAlert(EntityUid euid, AlertType alertType, short? severity = nul /// public void ClearAlertCategory(EntityUid euid, AlertCategory category) { - if(!EntityManager.TryGetComponent(euid, out AlertsComponent? alertsComponent)) + if(!TryComp(euid, out AlertsComponent? alertsComponent)) return; var key = AlertKey.ForCategory(category); @@ -120,9 +120,9 @@ public void ClearAlertCategory(EntityUid euid, AlertCategory category) return; } - AfterClearAlert(alertsComponent); + AfterClearAlert((euid, alertsComponent)); - Dirty(alertsComponent); + Dirty(euid, alertsComponent); } /// @@ -140,9 +140,9 @@ public void ClearAlert(EntityUid euid, AlertType alertType) return; } - AfterClearAlert(alertsComponent); + AfterClearAlert((euid, alertsComponent)); - Dirty(alertsComponent); + Dirty(euid, alertsComponent); } else { @@ -153,14 +153,12 @@ public void ClearAlert(EntityUid euid, AlertType alertType) /// /// Invoked after showing an alert prior to dirtying the component /// - /// - protected virtual void AfterShowAlert(AlertsComponent alertsComponent) { } + protected virtual void AfterShowAlert(Entity alerts) { } /// /// Invoked after clearing an alert prior to dirtying the component /// - /// - protected virtual void AfterClearAlert(AlertsComponent alertsComponent) { } + protected virtual void AfterClearAlert(Entity alerts) { } public override void Initialize() { diff --git a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs index 020b47f7081919..6add0661339df0 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs @@ -457,7 +457,7 @@ public bool TryUnbuckle(EntityUid buckleUid, EntityUid userUid, bool force = fal if (buckleXform.ParentUid == strapUid && !Terminating(buckleXform.ParentUid)) { - _container.AttachParentToContainerOrGrid(buckleXform); + _container.AttachParentToContainerOrGrid((buckleUid, buckleXform)); var oldBuckledToWorldRot = _transform.GetWorldRotation(strapUid); _transform.SetWorldRotation(buckleXform, oldBuckledToWorldRot); diff --git a/Content.Shared/Chemistry/MetabolismMovespeedModifierSystem.cs b/Content.Shared/Chemistry/MetabolismMovespeedModifierSystem.cs index 6b7c75514fc1b9..e9d3b7de53d4fe 100644 --- a/Content.Shared/Chemistry/MetabolismMovespeedModifierSystem.cs +++ b/Content.Shared/Chemistry/MetabolismMovespeedModifierSystem.cs @@ -10,7 +10,7 @@ public sealed class MetabolismMovespeedModifierSystem : EntitySystem [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly MovementSpeedModifierSystem _movespeed = default!; - private readonly List _components = new(); + private readonly List> _components = new(); public override void Initialize() { @@ -27,9 +27,9 @@ private void OnRefreshMovespeed(EntityUid uid, MovespeedModifierMetabolismCompon args.ModifySpeed(component.WalkSpeedModifier, component.SprintSpeedModifier); } - private void AddComponent(EntityUid uid, MovespeedModifierMetabolismComponent component, ComponentStartup args) + private void AddComponent(Entity metabolism, ref ComponentStartup args) { - _components.Add(component); + _components.Add(metabolism); } public override void Update(float frameTime) @@ -40,20 +40,21 @@ public override void Update(float frameTime) for (var i = _components.Count - 1; i >= 0; i--) { - var component = _components[i]; + var metabolism = _components[i]; - if (component.Deleted) + if (metabolism.Comp.Deleted) { _components.RemoveAt(i); continue; } - if (component.ModifierTimer > currentTime) continue; + if (metabolism.Comp.ModifierTimer > currentTime) + continue; _components.RemoveAt(i); - EntityManager.RemoveComponent(component.Owner); + EntityManager.RemoveComponent(metabolism); - _movespeed.RefreshMovementSpeedModifiers(component.Owner); + _movespeed.RefreshMovementSpeedModifiers(metabolism); } } } diff --git a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs index cb92892305c4ea..902b56427afefc 100644 --- a/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs +++ b/Content.Shared/Containers/ItemSlot/ItemSlotsSystem.cs @@ -88,7 +88,7 @@ private void Oninitialize(EntityUid uid, ItemSlotsComponent itemSlots, Component public void AddItemSlot(EntityUid uid, string id, ItemSlot slot, ItemSlotsComponent? itemSlots = null) { itemSlots ??= EntityManager.EnsureComponent(uid); - DebugTools.Assert(itemSlots.Owner == uid); + DebugTools.AssertOwner(uid, itemSlots); if (itemSlots.Slots.TryGetValue(id, out var existing)) { diff --git a/Content.Shared/Coordinates/EntityCoordinatesExtensions.cs b/Content.Shared/Coordinates/EntityCoordinatesExtensions.cs index f660ee5eb09697..2aadbf8a81c8d1 100644 --- a/Content.Shared/Coordinates/EntityCoordinatesExtensions.cs +++ b/Content.Shared/Coordinates/EntityCoordinatesExtensions.cs @@ -21,11 +21,6 @@ public static EntityCoordinates ToCoordinates(this EntityUid id, float x, float return new EntityCoordinates(id, x, y); } - public static EntityCoordinates ToCoordinates(this MapGridComponent grid, Vector2 offset) - { - return ToCoordinates(grid.Owner, offset); - } - public static EntityCoordinates ToCoordinates(this MapGridComponent grid, float x, float y) { return ToCoordinates(grid.Owner, x, y); diff --git a/Content.Shared/Doors/Systems/SharedDoorSystem.cs b/Content.Shared/Doors/Systems/SharedDoorSystem.cs index 4a241ba37636cf..084c3b4ea2cb70 100644 --- a/Content.Shared/Doors/Systems/SharedDoorSystem.cs +++ b/Content.Shared/Doors/Systems/SharedDoorSystem.cs @@ -2,24 +2,22 @@ using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Damage; -using Content.Shared.DoAfter; using Content.Shared.Doors.Components; using Content.Shared.Hands.Components; using Content.Shared.Interaction; using Content.Shared.Physics; +using Content.Shared.Prying.Components; using Content.Shared.Stunnable; using Content.Shared.Tag; using Robust.Shared.Audio; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; -using Robust.Shared.Serialization; using Robust.Shared.Timing; -using Content.Shared.Prying.Components; namespace Content.Shared.Doors.Systems; -public abstract partial class SharedDoorSystem : EntitySystem +public abstract class SharedDoorSystem : EntitySystem { [Dependency] protected readonly IGameTiming GameTiming = default!; [Dependency] protected readonly SharedPhysicsSystem PhysicsSystem = default!; @@ -45,7 +43,7 @@ public abstract partial class SharedDoorSystem : EntitySystem /// /// A set of doors that are currently opening, closing, or just queued to open/close after some delay. /// - private readonly HashSet _activeDoors = new(); + private readonly HashSet> _activeDoors = new(); public override void Initialize() { @@ -64,10 +62,11 @@ public override void Initialize() } - protected virtual void OnComponentInit(EntityUid uid, DoorComponent door, ComponentInit args) + protected virtual void OnComponentInit(Entity ent, ref ComponentInit args) { + var door = ent.Comp; if (door.NextStateChange != null) - _activeDoors.Add(door); + _activeDoors.Add(ent); else { // Make sure doors are not perpetually stuck opening or closing. @@ -90,25 +89,26 @@ protected virtual void OnComponentInit(EntityUid uid, DoorComponent door, Compon || door.State == DoorState.Closing && door.Partial || door.State == DoorState.Opening && !door.Partial; - SetCollidable(uid, collidable, door); - AppearanceSystem.SetData(uid, DoorVisuals.State, door.State); + SetCollidable(ent, collidable, door); + AppearanceSystem.SetData(ent, DoorVisuals.State, door.State); } - private void OnRemove(EntityUid uid, DoorComponent door, ComponentRemove args) + private void OnRemove(Entity door, ref ComponentRemove args) { _activeDoors.Remove(door); } #region StateManagement - private void OnHandleState(EntityUid uid, DoorComponent door, ref AfterAutoHandleStateEvent args) + private void OnHandleState(Entity ent, ref AfterAutoHandleStateEvent args) { + var door = ent.Comp; if (door.NextStateChange == null) - _activeDoors.Remove(door); + _activeDoors.Remove(ent); else - _activeDoors.Add(door); + _activeDoors.Add(ent); - RaiseLocalEvent(uid, new DoorStateChangedEvent(door.State)); - AppearanceSystem.SetData(uid, DoorVisuals.State, door.State); + RaiseLocalEvent(ent, new DoorStateChangedEvent(door.State)); + AppearanceSystem.SetData(ent, DoorVisuals.State, door.State); } protected void SetState(EntityUid uid, DoorState state, DoorComponent? door = null) @@ -123,29 +123,29 @@ protected void SetState(EntityUid uid, DoorState state, DoorComponent? door = nu switch (state) { case DoorState.Opening: - _activeDoors.Add(door); + _activeDoors.Add((uid, door)); door.NextStateChange = GameTiming.CurTime + door.OpenTimeOne; break; case DoorState.Closing: - _activeDoors.Add(door); + _activeDoors.Add((uid, door)); door.NextStateChange = GameTiming.CurTime + door.CloseTimeOne; break; case DoorState.Denying: - _activeDoors.Add(door); + _activeDoors.Add((uid, door)); door.NextStateChange = GameTiming.CurTime + door.DenyDuration; break; case DoorState.Emagging: - _activeDoors.Add(door); + _activeDoors.Add((uid, door)); door.NextStateChange = GameTiming.CurTime + door.EmagDuration; break; case DoorState.Open: door.Partial = false; if (door.NextStateChange == null) - _activeDoors.Remove(door); + _activeDoors.Remove((uid, door)); break; case DoorState.Closed: // May want to keep the door around to re-check for opening if we got a contact during closing. @@ -154,8 +154,8 @@ protected void SetState(EntityUid uid, DoorState state, DoorComponent? door = nu } door.State = state; - Dirty(door); - RaiseLocalEvent(uid, new DoorStateChangedEvent(state), false); + Dirty(uid, door); + RaiseLocalEvent(uid, new DoorStateChangedEvent(state)); AppearanceSystem.SetData(uid, DoorVisuals.State, door.State); } @@ -187,7 +187,7 @@ public void Deny(EntityUid uid, DoorComponent? door = null, EntityUid? user = nu // might not be able to deny without power or some other blocker. var ev = new BeforeDoorDeniedEvent(); - RaiseLocalEvent(uid, ev, false); + RaiseLocalEvent(uid, ev); if (ev.Cancelled) return; @@ -239,7 +239,7 @@ public bool CanOpen(EntityUid uid, DoorComponent? door = null, EntityUid? user = return false; var ev = new BeforeDoorOpenedEvent() { User = user }; - RaiseLocalEvent(uid, ev, false); + RaiseLocalEvent(uid, ev); if (ev.Cancelled) return false; @@ -290,8 +290,8 @@ public void OnPartialOpen(EntityUid uid, DoorComponent? door = null) SetCollidable(uid, false, door); door.Partial = true; door.NextStateChange = GameTiming.CurTime + door.CloseTimeTwo; - _activeDoors.Add(door); - Dirty(door); + _activeDoors.Add((uid, door)); + Dirty(uid, door); } #endregion @@ -359,7 +359,7 @@ public bool OnPartialClose(EntityUid uid, DoorComponent? door = null, PhysicsCom return false; door.Partial = true; - Dirty(door); + Dirty(uid, door); // Make sure no entity waled into the airlock when it started closing. if (!CanClose(uid, door)) @@ -372,7 +372,7 @@ public bool OnPartialClose(EntityUid uid, DoorComponent? door = null, PhysicsCom SetCollidable(uid, true, door, physics); door.NextStateChange = GameTiming.CurTime + door.CloseTimeTwo; - _activeDoors.Add(door); + _activeDoors.Add((uid, door)); // Crush any entities. Note that we don't check airlock safety here. This should have been checked before // the door closed. @@ -567,12 +567,12 @@ public void SetNextStateChange(EntityUid uid, TimeSpan? delay, DoorComponent? do if (delay == null || delay.Value <= TimeSpan.Zero) { door.NextStateChange = null; - _activeDoors.Remove(door); + _activeDoors.Remove((uid, door)); return; } door.NextStateChange = GameTiming.CurTime + delay.Value; - _activeDoors.Add(door); + _activeDoors.Add((uid, door)); } /// @@ -582,76 +582,78 @@ public override void Update(float frameTime) { var time = GameTiming.CurTime; - foreach (var door in _activeDoors.ToList()) + foreach (var ent in _activeDoors.ToList()) { + var door = ent.Comp; if (door.Deleted || door.NextStateChange == null) { - _activeDoors.Remove(door); + _activeDoors.Remove(ent); continue; } - if (Paused(door.Owner)) + if (Paused(ent)) continue; if (door.NextStateChange.Value < time) - NextState(door, time); + NextState(ent, time); if (door.State == DoorState.Closed && - TryComp(door.Owner, out var doorBody)) + TryComp(ent, out var doorBody)) { // If something bumped into us during closing then start to re-open, otherwise, remove it from active. - _activeDoors.Remove(door); - CheckDoorBump(door, doorBody); + _activeDoors.Remove(ent); + CheckDoorBump((ent, door, doorBody)); } } } - protected virtual void CheckDoorBump(DoorComponent component, PhysicsComponent body) { } + protected virtual void CheckDoorBump(Entity ent) { } /// /// Makes a door proceed to the next state (if applicable). /// - private void NextState(DoorComponent door, TimeSpan time) + private void NextState(Entity ent, TimeSpan time) { + var door = ent.Comp; door.NextStateChange = null; if (door.CurrentlyCrushing.Count > 0) // This is a closed door that is crushing people and needs to auto-open. Note that we don't check "can open" // here. The door never actually finished closing and we don't want people to get stuck inside of doors. - StartOpening(door.Owner, door, predicted: true); + StartOpening(ent, door, predicted: true); switch (door.State) { case DoorState.Opening: // Either fully or partially open this door. if (door.Partial) - SetState(door.Owner, DoorState.Open, door); + SetState(ent, DoorState.Open, door); else - OnPartialOpen(door.Owner, door); + OnPartialOpen(ent, door); break; case DoorState.Closing: // Either fully or partially close this door. if (door.Partial) - SetState(door.Owner, DoorState.Closed, door); + SetState(ent, DoorState.Closed, door); else - OnPartialClose(door.Owner, door); + OnPartialClose(ent, door); break; case DoorState.Denying: // Finish denying entry and return to the closed state. - SetState(door.Owner, DoorState.Closed, door); + SetState(ent, DoorState.Closed, door); break; case DoorState.Emagging: - StartOpening(door.Owner, door); + StartOpening(ent, door); break; case DoorState.Open: // This door is open, and queued for an auto-close. - if (!TryClose(door.Owner, door, predicted: true)) + if (!TryClose(ent, door, predicted: true)) { // The door failed to close (blocked?). Try again in one second. door.NextStateChange = time + TimeSpan.FromSeconds(1); @@ -660,7 +662,7 @@ private void NextState(DoorComponent door, TimeSpan time) case DoorState.Welded: // A welded door? This should never have been active in the first place. - Log.Error($"Welded door was in the list of active doors. Door: {ToPrettyString(door.Owner)}"); + Log.Error($"Welded door was in the list of active doors. Door: {ToPrettyString(ent)}"); break; } } diff --git a/Content.Shared/Examine/ExamineSystemShared.cs b/Content.Shared/Examine/ExamineSystemShared.cs index 2e0cffd7d27729..1e6f121aaecb26 100644 --- a/Content.Shared/Examine/ExamineSystemShared.cs +++ b/Content.Shared/Examine/ExamineSystemShared.cs @@ -1,14 +1,11 @@ using System.Linq; -using Content.Shared.DragDrop; -using Content.Shared.Interaction; -using Content.Shared.Eye.Blinding; using Content.Shared.Eye.Blinding.Components; +using Content.Shared.Interaction; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using JetBrains.Annotations; using Robust.Shared.Containers; using Robust.Shared.Map; -using Robust.Shared.Network; using Robust.Shared.Physics; using Robust.Shared.Utility; using static Content.Shared.Interaction.SharedInteractionSystem; @@ -191,7 +188,7 @@ public static bool InRangeUnOccluded(MapCoordinates origin, MapCoordinat } var bBox = o.BoundingBox; - bBox = bBox.Translated(entMan.GetComponent(o.Owner).WorldPosition); + bBox = bBox.Translated(entMan.GetComponent(result.HitEntity).WorldPosition); if (bBox.Contains(origin.Position) || bBox.Contains(other.Position)) { @@ -213,15 +210,6 @@ public static bool InRangeUnOccluded(EntityUid origin, EntityUid other, float ra return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); } - public static bool InRangeUnOccluded(EntityUid origin, IComponent other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) - { - var entMan = IoCManager.Resolve(); - var originPos = entMan.GetComponent(origin).MapPosition; - var otherPos = entMan.GetComponent(other.Owner).MapPosition; - - return InRangeUnOccluded(originPos, otherPos, range, predicate, ignoreInsideBlocker); - } - public static bool InRangeUnOccluded(EntityUid origin, EntityCoordinates other, float range = ExamineRange, Ignored? predicate = null, bool ignoreInsideBlocker = true) { var entMan = IoCManager.Resolve(); diff --git a/Content.Shared/Follower/FollowerSystem.cs b/Content.Shared/Follower/FollowerSystem.cs index e4a0488dfb5b6f..58a94d1723a2c7 100644 --- a/Content.Shared/Follower/FollowerSystem.cs +++ b/Content.Shared/Follower/FollowerSystem.cs @@ -151,7 +151,7 @@ public void StartFollowingEntity(EntityUid follower, EntityUid entity) { followerComp = AddComp(follower); } - + followerComp.Following = entity; var followedComp = EnsureComp(entity); @@ -165,7 +165,7 @@ public void StartFollowingEntity(EntityUid follower, EntityUid entity) _physicsSystem.SetLinearVelocity(follower, Vector2.Zero); var xform = Transform(follower); - _containerSystem.AttachParentToContainerOrGrid(xform); + _containerSystem.AttachParentToContainerOrGrid((follower, xform)); // If we didn't get to parent's container. if (xform.ParentUid != Transform(xform.ParentUid).ParentUid) diff --git a/Content.Shared/Friction/TileFrictionController.cs b/Content.Shared/Friction/TileFrictionController.cs index c0af2f4ed4ac19..472f5b574b2a52 100644 --- a/Content.Shared/Friction/TileFrictionController.cs +++ b/Content.Shared/Friction/TileFrictionController.cs @@ -6,16 +6,12 @@ using Content.Shared.Pulling.Components; using JetBrains.Annotations; using Robust.Shared.Configuration; -using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Controllers; using Robust.Shared.Physics.Dynamics; using Robust.Shared.Physics.Systems; -using Robust.Shared.Serialization; -using Robust.Shared.Utility; - namespace Content.Shared.Friction { @@ -68,7 +64,7 @@ public override void UpdateBeforeMapSolve(bool prediction, PhysicsMapComponent m // Only apply friction when it's not a mob (or the mob doesn't have control) if (prediction && !body.Predict || body.BodyStatus == BodyStatus.InAir || - _mover.UseMobMovement(body.Owner)) + _mover.UseMobMovement(uid)) { continue; } @@ -78,7 +74,7 @@ public override void UpdateBeforeMapSolve(bool prediction, PhysicsMapComponent m if (!xformQuery.TryGetComponent(uid, out var xform)) { - Log.Error($"Unable to get transform for {ToPrettyString(body.Owner)} in tilefrictioncontroller"); + Log.Error($"Unable to get transform for {ToPrettyString(uid)} in tilefrictioncontroller"); continue; } diff --git a/Content.Shared/Gravity/SharedFloatingVisualizerSystem.cs b/Content.Shared/Gravity/SharedFloatingVisualizerSystem.cs index 0f06d72192e183..57136116caae78 100644 --- a/Content.Shared/Gravity/SharedFloatingVisualizerSystem.cs +++ b/Content.Shared/Gravity/SharedFloatingVisualizerSystem.cs @@ -45,7 +45,8 @@ private void OnComponentStartup(EntityUid uid, FloatingVisualsComponent componen private void OnGravityChanged(ref GravityChangedEvent args) { - foreach (var (floating, transform) in EntityQuery(true)) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var floating, out var transform)) { if (transform.MapID == MapId.Nullspace) continue; @@ -54,9 +55,8 @@ private void OnGravityChanged(ref GravityChangedEvent args) continue; floating.CanFloat = !args.HasGravity; - Dirty(floating); + Dirty(uid, floating); - var uid = floating.Owner; if (!args.HasGravity) FloatAnimation(uid, floating.Offset, floating.AnimationKey, floating.AnimationTime); } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs index 0171b9f70c9dac..edba1f98c46337 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs @@ -1,4 +1,3 @@ -using System.Numerics; using Content.Shared.Database; using Content.Shared.Hands.Components; using Content.Shared.Item; @@ -202,7 +201,7 @@ public void PickupOrDrop( { // TODO make this check upwards for any container, and parent to that. // Currently this just checks the direct parent, so items can still teleport through containers. - ContainerSystem.AttachParentToContainerOrGrid(Transform(entity)); + ContainerSystem.AttachParentToContainerOrGrid((entity, Transform(entity))); } } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs index 9f7623329e4082..e1de636969b833 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs @@ -21,7 +21,7 @@ public abstract partial class SharedHandsSystem [Dependency] private readonly SharedStorageSystem _storage = default!; [Dependency] protected readonly SharedTransformSystem TransformSystem = default!; - protected event Action? OnHandSetActive; + protected event Action?>? OnHandSetActive; public override void Initialize() { @@ -216,7 +216,7 @@ public bool SetActiveHand(EntityUid uid, Hand? hand, HandsComponent? handComp = } handComp.ActiveHand = hand; - OnHandSetActive?.Invoke(handComp); + OnHandSetActive?.Invoke((uid, handComp)); if (hand.HeldEntity != null) RaiseLocalEvent(hand.HeldEntity.Value, new HandSelectedEvent(uid)); diff --git a/Content.Shared/Hands/SharedHandVirtualItemSystem.cs b/Content.Shared/Hands/SharedHandVirtualItemSystem.cs index 7fb4a4c1275968..2e426020cad08e 100644 --- a/Content.Shared/Hands/SharedHandVirtualItemSystem.cs +++ b/Content.Shared/Hands/SharedHandVirtualItemSystem.cs @@ -58,7 +58,7 @@ public void DeleteInHandsMatching(EntityUid user, EntityUid matching) { if (TryComp(hand.HeldEntity, out HandVirtualItemComponent? virt) && virt.BlockingEntity == matching) { - Delete(virt, user); + Delete((hand.HeldEntity.Value, virt), user); } } } @@ -80,16 +80,16 @@ private static void HandleBeforeInteract( /// /// Queues a deletion for a virtual item and notifies the blocking entity and user. /// - public void Delete(HandVirtualItemComponent comp, EntityUid user) + public void Delete(Entity item, EntityUid user) { if (_net.IsClient) return; - var userEv = new VirtualItemDeletedEvent(comp.BlockingEntity, user); + var userEv = new VirtualItemDeletedEvent(item.Comp.BlockingEntity, user); RaiseLocalEvent(user, userEv); - var targEv = new VirtualItemDeletedEvent(comp.BlockingEntity, user); - RaiseLocalEvent(comp.BlockingEntity, targEv); + var targEv = new VirtualItemDeletedEvent(item.Comp.BlockingEntity, user); + RaiseLocalEvent(item.Comp.BlockingEntity, targEv); - QueueDel(comp.Owner); + QueueDel(item); } } diff --git a/Content.Shared/Lathe/SharedLatheSystem.cs b/Content.Shared/Lathe/SharedLatheSystem.cs index e9482d24d15a27..9debaa77190ddd 100644 --- a/Content.Shared/Lathe/SharedLatheSystem.cs +++ b/Content.Shared/Lathe/SharedLatheSystem.cs @@ -38,7 +38,7 @@ public bool CanProduce(EntityUid uid, LatheRecipePrototype recipe, int amount = { var adjustedAmount = AdjustMaterial(needed, recipe.ApplyMaterialDiscount, component.MaterialUseMultiplier); - if (_materialStorage.GetMaterialAmount(component.Owner, material) < adjustedAmount * amount) + if (_materialStorage.GetMaterialAmount(uid, material) < adjustedAmount * amount) return false; } return true; diff --git a/Content.Shared/Light/SharedHandheldLightSystem.cs b/Content.Shared/Light/SharedHandheldLightSystem.cs index ad209c95f8e06f..d530b07b18636b 100644 --- a/Content.Shared/Light/SharedHandheldLightSystem.cs +++ b/Content.Shared/Light/SharedHandheldLightSystem.cs @@ -52,10 +52,10 @@ public void SetActivated(EntityUid uid, bool activated, HandheldLightComponent? if (makeNoise) { var sound = component.Activated ? component.TurnOnSound : component.TurnOffSound; - _audio.PlayPvs(sound, component.Owner); + _audio.PlayPvs(sound, uid); } - Dirty(component); + Dirty(uid, component); UpdateVisuals(uid, component); } diff --git a/Content.Shared/Maps/TurfHelpers.cs b/Content.Shared/Maps/TurfHelpers.cs index 6b9d7dbbf9c00a..857244d658ced6 100644 --- a/Content.Shared/Maps/TurfHelpers.cs +++ b/Content.Shared/Maps/TurfHelpers.cs @@ -1,11 +1,8 @@ +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Runtime.CompilerServices; -using System.Diagnostics.CodeAnalysis; -using Content.Shared.Decals; using Content.Shared.Physics; using Robust.Shared.Map; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; using Robust.Shared.Random; namespace Content.Shared.Maps @@ -175,7 +172,7 @@ private static bool GetWorldTileBox(TileRef turf, out Box2Rotated res) if (map.TryGetGrid(turf.GridUid, out var tileGrid)) { - var gridRot = entManager.GetComponent(tileGrid.Owner).WorldRotation; + var gridRot = entManager.GetComponent(turf.GridUid).WorldRotation; // This is scaled to 90 % so it doesn't encompass walls on other tiles. var tileBox = Box2.UnitCentered.Scale(0.9f); diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs b/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs index b07087cafa5812..25b63d5b80bbf9 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs @@ -111,8 +111,8 @@ private void ChangeState(EntityUid target, MobStateComponent component, MobState OnStateChanged(target, component, oldState, newState); RaiseLocalEvent(target, ev, true); _adminLogger.Add(LogType.Damaged, oldState == MobState.Alive ? LogImpact.Low : LogImpact.Medium, - $"{ToPrettyString(component.Owner):user} state changed from {oldState} to {newState}"); - Dirty(component); + $"{ToPrettyString(target):user} state changed from {oldState} to {newState}"); + Dirty(target, component); } #endregion diff --git a/Content.Shared/Physics/Controllers/SharedConveyorController.cs b/Content.Shared/Physics/Controllers/SharedConveyorController.cs index 8ec6ddbefe5cbf..ec17df7a24f8c5 100644 --- a/Content.Shared/Physics/Controllers/SharedConveyorController.cs +++ b/Content.Shared/Physics/Controllers/SharedConveyorController.cs @@ -152,7 +152,7 @@ private static Vector2 Convey(Vector2 direction, float speed, float frameTime, V foreach (var entity in comp.Intersecting) { - if (!xformQuery.TryGetComponent(entity, out var entityXform) || entityXform.ParentUid != grid.Owner) + if (!xformQuery.TryGetComponent(entity, out var entityXform) || entityXform.ParentUid != xform.GridUid!.Value) continue; if (!bodyQuery.TryGetComponent(entity, out var physics) || physics.BodyType == BodyType.Static || physics.BodyStatus == BodyStatus.InAir || _gravity.IsWeightless(entity, physics, entityXform)) diff --git a/Content.Shared/Random/RulesSystem.cs b/Content.Shared/Random/RulesSystem.cs index 8e9ccadc717985..f8711fb63e01d8 100644 --- a/Content.Shared/Random/RulesSystem.cs +++ b/Content.Shared/Random/RulesSystem.cs @@ -17,6 +17,7 @@ public sealed class RulesSystem : EntitySystem public bool IsTrue(EntityUid uid, RulesPrototype rules) { + var inRange = new HashSet>(); foreach (var rule in rules.Rules) { switch (rule) @@ -72,12 +73,13 @@ public bool IsTrue(EntityUid uid, RulesPrototype rules) var count = 0; // TODO: Update this when we get the callback version - foreach (var comp in _lookup.GetComponentsInRange(xform.MapID, - worldPos, access.Range)) + var entities = new HashSet>(); + _lookup.GetEntitiesInRange(xform.MapID, worldPos, access.Range, entities); + foreach (var comp in entities) { if (!_reader.AreAccessTagsAllowed(access.Access, comp) || access.Anchored && - (!xformQuery.TryGetComponent(comp.Owner, out var compXform) || + (!xformQuery.TryGetComponent(comp, out var compXform) || !compXform.Anchored)) { continue; @@ -113,12 +115,12 @@ public bool IsTrue(EntityUid uid, RulesPrototype rules) foreach (var compType in nearbyComps.Components.Values) { - // TODO: Update this when we get the callback version - foreach (var comp in _lookup.GetComponentsInRange(compType.Component.GetType(), xform.MapID, - worldPos, nearbyComps.Range)) + inRange.Clear(); + _lookup.GetEntitiesInRange(compType.Component.GetType(), xform.MapID, worldPos, nearbyComps.Range, inRange); + foreach (var comp in inRange) { if (nearbyComps.Anchored && - (!xformQuery.TryGetComponent(comp.Owner, out var compXform) || + (!xformQuery.TryGetComponent(comp, out var compXform) || !compXform.Anchored)) { continue; diff --git a/Content.Shared/Revenant/EntitySystems/SharedRevenantOverloadedLightsSystem.cs b/Content.Shared/Revenant/EntitySystems/SharedRevenantOverloadedLightsSystem.cs index 40e6a53a00d473..7fa2ef51e8aeda 100644 --- a/Content.Shared/Revenant/EntitySystems/SharedRevenantOverloadedLightsSystem.cs +++ b/Content.Shared/Revenant/EntitySystems/SharedRevenantOverloadedLightsSystem.cs @@ -20,10 +20,10 @@ public override void Update(float frameTime) if (comp.Accumulator < comp.ZapDelay) continue; - OnZap(comp); + OnZap((uid, comp)); RemCompDeferred(uid, comp); } } - protected abstract void OnZap(RevenantOverloadedLightsComponent component); + protected abstract void OnZap(Entity component); } diff --git a/Content.Shared/Singularity/Components/ContainmentFieldGeneratorComponent.cs b/Content.Shared/Singularity/Components/ContainmentFieldGeneratorComponent.cs index d9fc044dceaef9..c704c8bf77b469 100644 --- a/Content.Shared/Singularity/Components/ContainmentFieldGeneratorComponent.cs +++ b/Content.Shared/Singularity/Components/ContainmentFieldGeneratorComponent.cs @@ -92,7 +92,7 @@ public int PowerBuffer /// Stores a list of fields connected between generators in this direction. /// [ViewVariables] - public Dictionary)> Connections = new(); + public Dictionary, List)> Connections = new(); /// /// What fields should this spawn? diff --git a/Content.Shared/Singularity/EntitySystems/SharedSingularitySystem.cs b/Content.Shared/Singularity/EntitySystems/SharedSingularitySystem.cs index 2ea40308b9448d..acac1dfd84558a 100644 --- a/Content.Shared/Singularity/EntitySystems/SharedSingularitySystem.cs +++ b/Content.Shared/Singularity/EntitySystems/SharedSingularitySystem.cs @@ -1,13 +1,12 @@ using System.Numerics; +using Content.Shared.Radiation.Components; +using Content.Shared.Singularity.Components; +using Content.Shared.Singularity.Events; using Robust.Shared.Containers; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; using Robust.Shared.Serialization; -using Content.Shared.Radiation.Components; -using Content.Shared.Singularity.Components; -using Content.Shared.Singularity.Events; - namespace Content.Shared.Singularity.EntitySystems; /// @@ -89,8 +88,8 @@ public void SetLevel(EntityUid uid, byte value, SingularityComponent? singularit singularity.Level = value; UpdateSingularityLevel(uid, oldValue, singularity); - if(!EntityManager.Deleted(singularity.Owner)) - EntityManager.Dirty(singularity); + if (!Deleted(uid)) + Dirty(uid, singularity); } /// diff --git a/Content.Shared/Stacks/SharedStackSystem.cs b/Content.Shared/Stacks/SharedStackSystem.cs index 99e3f7c6de4b20..d70dfc52f95119 100644 --- a/Content.Shared/Stacks/SharedStackSystem.cs +++ b/Content.Shared/Stacks/SharedStackSystem.cs @@ -1,6 +1,5 @@ using System.Numerics; using Content.Shared.Examine; -using Content.Shared.Hands; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; @@ -217,8 +216,8 @@ public bool TryMergeToContacts(EntityUid uid, StackComponent? stack = null, Tran var map = xform.MapID; var bounds = _physics.GetWorldAABB(uid); - var intersecting = _entityLookup.GetComponentsIntersecting(map, bounds, - LookupFlags.Dynamic | LookupFlags.Sundries); + var intersecting = new HashSet>(); + _entityLookup.GetEntitiesIntersecting(map, bounds, intersecting, LookupFlags.Dynamic | LookupFlags.Sundries); var merged = false; foreach (var otherStack in intersecting) diff --git a/Content.Shared/StatusEffect/StatusEffectsSystem.cs b/Content.Shared/StatusEffect/StatusEffectsSystem.cs index 17b886449301f1..6aec3a8b3b4a0f 100644 --- a/Content.Shared/StatusEffect/StatusEffectsSystem.cs +++ b/Content.Shared/StatusEffect/StatusEffectsSystem.cs @@ -33,14 +33,14 @@ public override void Update(float frameTime) var curTime = _gameTiming.CurTime; var enumerator = EntityQueryEnumerator(); - while (enumerator.MoveNext(out _, out var status)) + while (enumerator.MoveNext(out var uid, out _, out var status)) { foreach (var state in status.ActiveEffects.ToArray()) { // if we're past the end point of the effect if (curTime > state.Value.Cooldown.Item2) { - TryRemoveStatusEffect(status.Owner, state.Key, status); + TryRemoveStatusEffect(uid, state.Key, status); } } } @@ -134,10 +134,7 @@ public bool TryAddStatusEffect(EntityUid uid, string key, TimeSpan time, bool re // If they already have the comp, we just won't bother updating anything. if (!EntityManager.HasComponent(uid, _componentFactory.GetRegistration(component).Type)) { - // Fuck this shit I hate it var newComponent = (Component) _componentFactory.GetComponent(component); - newComponent.Owner = uid; - EntityManager.AddComponent(uid, newComponent); status.ActiveEffects[key].RelevantComponent = component; } diff --git a/Content.Shared/Storage/EntitySystems/DumpableSystem.cs b/Content.Shared/Storage/EntitySystems/DumpableSystem.cs index cb53ea829852a0..ad86a52665d93d 100644 --- a/Content.Shared/Storage/EntitySystems/DumpableSystem.cs +++ b/Content.Shared/Storage/EntitySystems/DumpableSystem.cs @@ -133,7 +133,7 @@ private void OnDoAfter(EntityUid uid, DumpableComponent component, DoAfterEvent foreach (var entity in dumpQueue) { var transform = Transform(entity); - _container.AttachParentToContainerOrGrid(transform); + _container.AttachParentToContainerOrGrid((entity, transform)); _transformSystem.SetLocalPositionRotation(transform, transform.LocalPosition + _random.NextVector2Box() / 2, _random.NextAngle()); } diff --git a/Content.Shared/Strip/SharedStrippableSystem.cs b/Content.Shared/Strip/SharedStrippableSystem.cs index 47e1f02ad8faaa..a698ae5035a986 100644 --- a/Content.Shared/Strip/SharedStrippableSystem.cs +++ b/Content.Shared/Strip/SharedStrippableSystem.cs @@ -29,11 +29,11 @@ private void OnDragDrop(EntityUid uid, StrippableComponent component, ref DragDr if (args.Handled || args.Target != args.User) return; - StartOpeningStripper(args.User, component); + StartOpeningStripper(args.User, (uid, component)); args.Handled = true; } - public virtual void StartOpeningStripper(EntityUid user, StrippableComponent component, bool openInCombat = false) + public virtual void StartOpeningStripper(EntityUid user, Entity component, bool openInCombat = false) { } diff --git a/Content.Shared/Weather/SharedWeatherSystem.cs b/Content.Shared/Weather/SharedWeatherSystem.cs index 3aba97e92dfcef..c7040515c8e05d 100644 --- a/Content.Shared/Weather/SharedWeatherSystem.cs +++ b/Content.Shared/Weather/SharedWeatherSystem.cs @@ -101,13 +101,12 @@ public override void Update(float frameTime) var curTime = Timing.CurTime; - foreach (var comp in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) { if (comp.Weather.Count == 0) continue; - var uid = comp.Owner; - foreach (var (proto, weather) in comp.Weather) { var endTime = weather.EndTime; diff --git a/SpaceStation14.sln.DotSettings b/SpaceStation14.sln.DotSettings index 72e550ac6e3078..7d681e02b1d43d 100644 --- a/SpaceStation14.sln.DotSettings +++ b/SpaceStation14.sln.DotSettings @@ -51,6 +51,7 @@ NEXT_LINE NEXT_LINE NEXT_LINE + AABB AL BB CC @@ -96,7 +97,7 @@ True Entity Component 1 - + 9 @@ -106,7 +107,7 @@ 6 True XAML Control - + True Client/Server Net Entity System 8 @@ -608,7 +609,7 @@ public sealed partial class $CLASS$ : Shared$CLASS$ { True True True - + True True True From aeaabc56871d48d1bdad743dcdb13e1fb337b968 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Thu, 19 Oct 2023 12:34:46 -0700 Subject: [PATCH 178/245] Update RobustToolbox to v169.0.0 (#21105) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 904ddea27497ca..56d850f389c49a 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 904ddea27497caa6e652eec1b9d3ff2743a79e5c +Subproject commit 56d850f389c49a09df87c3a48be1fbd24dac7fc4 From 69b38efaec743ffaad361fdd03f0207b26c451c3 Mon Sep 17 00:00:00 2001 From: coolmankid12345 <55817627+coolmankid12345@users.noreply.github.com> Date: Thu, 19 Oct 2023 20:50:44 -0400 Subject: [PATCH 179/245] Yeah (#21112) Co-authored-by: coolmankid12345 --- Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs index 54b45f59e94093..78568820e96cf3 100644 --- a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs @@ -144,8 +144,8 @@ private void OnPlayerJobAssigned(RulePlayerJobsAssignedEvent ev) { _antagSelection.EligiblePlayers(comp.HeadRevPrototypeId, comp.MaxHeadRevs, comp.PlayersPerHeadRev, comp.HeadRevStartSound, "head-rev-role-greeting", "#5e9cff", out var chosen); - if (!chosen.Any()) - GiveHeadRev(chosen, comp.RevPrototypeId, comp); + if (chosen.Any()) + GiveHeadRev(chosen, comp.HeadRevPrototypeId, comp); else { _chatManager.SendAdminAnnouncement(Loc.GetString("rev-no-heads")); From 2cb47e59163c12e750e3d10c223a59f955e9395d Mon Sep 17 00:00:00 2001 From: "I.K" <45953835+notquitehadouken@users.noreply.github.com> Date: Thu, 19 Oct 2023 19:52:34 -0500 Subject: [PATCH 180/245] fix botany tools and air tank wide swing animations (#21103) * change rotations of botany tools * change gas tank wide swing rotation --- .../Entities/Objects/Specific/Hydroponics/tools.yml | 7 +++++++ Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml | 1 + 2 files changed, 8 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml index bdc8c2ee6325d3..c939cc9ca1cfd4 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml @@ -13,6 +13,8 @@ state: icon - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: 135 + swingLeft: true damage: types: Slash: 10 @@ -33,6 +35,7 @@ state: icon - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: 90 damage: types: Slash: 7 @@ -51,6 +54,7 @@ state: icon - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: 135 damage: types: Slash: 10 @@ -78,6 +82,8 @@ state: icon - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: 135 + swingLeft: true damage: types: Slash: 10 @@ -100,6 +106,7 @@ state: icon - type: ItemCooldown - type: MeleeWeapon + wideAnimationRotation: 45 damage: types: Blunt: 10 diff --git a/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml b/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml index 0fde43be318473..09d99452137fe0 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml @@ -31,6 +31,7 @@ explosionType: Default maxIntensity: 20 - type: MeleeWeapon + wideAnimationRotation: 45 attackRate: 0.8 damage: types: From d4aeba84d18a177dd60e4219c9710576fdadd80a Mon Sep 17 00:00:00 2001 From: IntegerTempest <30300017+IntegerTempest@users.noreply.github.com> Date: Fri, 20 Oct 2023 08:46:32 +0300 Subject: [PATCH 181/245] add craft rollerbed & wheelchair (#21110) --- .../Entities/Structures/Machines/lathe.yml | 8 +++++ .../Prototypes/Recipes/Lathes/medical.yml | 33 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 37932f87cafeea..e492c08b5d3060 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -114,6 +114,10 @@ - FoodPlateSmallPlastic - SprayBottle - PowerCellSmall + - VehicleWheelchairFolded + - RollerBedSpawnFolded + - CheapRollerBedSpawnFolded + - EmergencyRollerBedSpawnFolded - MicroManipulatorStockPart - MatterBinStockPart - CapacitorStockPart @@ -664,6 +668,10 @@ - PillCanister - BodyBag - ChemistryEmptyBottle01 + - VehicleWheelchairFolded + - RollerBedSpawnFolded + - CheapRollerBedSpawnFolded + - EmergencyRollerBedSpawnFolded - Medkit - MedkitBurn - MedkitToxin diff --git a/Resources/Prototypes/Recipes/Lathes/medical.yml b/Resources/Prototypes/Recipes/Lathes/medical.yml index 1de2e7290c21e6..c09b4bbd3e9afa 100644 --- a/Resources/Prototypes/Recipes/Lathes/medical.yml +++ b/Resources/Prototypes/Recipes/Lathes/medical.yml @@ -203,3 +203,36 @@ completetime: 4 materials: Plastic: 400 + +- type: latheRecipe + id: VehicleWheelchairFolded + result: VehicleWheelchairFolded + completetime: 1 + materials: + Steel: 500 + Plastic: 300 + +- type: latheRecipe + id: RollerBedSpawnFolded + result: RollerBedSpawnFolded + completetime: 1 + materials: + Steel: 600 + Plastic: 300 + +- type: latheRecipe + id: CheapRollerBedSpawnFolded + result: CheapRollerBedSpawnFolded + completetime: 1 + materials: + Steel: 600 + Plastic: 300 + +- type: latheRecipe + id: EmergencyRollerBedSpawnFolded + result: EmergencyRollerBedSpawnFolded + completetime: 1 + materials: + Steel: 600 + Plastic: 300 + From 5ae3a02ed52fd21e0ba64a17a475fab0896fa62b Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 20 Oct 2023 01:47:37 -0400 Subject: [PATCH 182/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 411594cd144e8d..834fb62867e676 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: deltanedas - changes: - - {message: The Vim exosuit is now smaller and lighter for better maneuverability., - type: Tweak} - id: 4529 - time: '2023-08-12T19:03:08.0000000+00:00' - author: Potato1234_x changes: - {message: Added trash carts. Expect these to be mapped into maintenance soon., @@ -2924,3 +2918,8 @@ Entries: 20TC', type: Tweak} id: 5028 time: '2023-10-19T15:19:33.0000000+00:00' +- author: IntegerTempest + changes: + - {message: Added lathe printing for rollerbed & wheelchairs., type: Add} + id: 5029 + time: '2023-10-20T05:46:33.0000000+00:00' From 5734f02de596d24e88bd4d07cb22d64a885bc437 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Fri, 20 Oct 2023 00:05:33 -0700 Subject: [PATCH 183/245] Fix ghost actions disappearing when toggling visibility of other ghosts (#21033) --- Content.Client/Ghost/GhostSystem.cs | 13 ++++++++----- Content.Server/Ghost/GhostSystem.cs | 27 --------------------------- 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/Content.Client/Ghost/GhostSystem.cs b/Content.Client/Ghost/GhostSystem.cs index 3ace889f278740..5727534109efdd 100644 --- a/Content.Client/Ghost/GhostSystem.cs +++ b/Content.Client/Ghost/GhostSystem.cs @@ -1,7 +1,6 @@ using Content.Client.Movement.Systems; using Content.Shared.Actions; using Content.Shared.Ghost; -using Content.Shared.Popups; using Robust.Client.Console; using Robust.Client.GameObjects; using Robust.Client.Graphics; @@ -33,9 +32,10 @@ private bool GhostVisibility _ghostVisibility = value; - foreach (var ghost in EntityQuery(true)) + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out _, out var sprite)) { - ghost.Item2.Visible = true; + sprite.Visible = value || uid == _playerManager.LocalPlayer?.ControlledEntity; } } } @@ -103,7 +103,10 @@ private void OnToggleGhosts(EntityUid uid, GhostComponent component, ToggleGhost return; Popup.PopupEntity(Loc.GetString("ghost-gui-toggle-ghost-visibility-popup"), args.Performer); - ToggleGhostVisibility(); + + if (uid == _playerManager.LocalPlayer?.ControlledEntity) + ToggleGhostVisibility(); + args.Handled = true; } @@ -204,7 +207,7 @@ public void OpenGhostRoles() public void ToggleGhostVisibility() { - _console.RemoteExecuteCommand(null, "toggleghosts"); + GhostVisibility = !GhostVisibility; } } } diff --git a/Content.Server/Ghost/GhostSystem.cs b/Content.Server/Ghost/GhostSystem.cs index 064e25957a16ef..6789be390eb668 100644 --- a/Content.Server/Ghost/GhostSystem.cs +++ b/Content.Server/Ghost/GhostSystem.cs @@ -6,7 +6,6 @@ using Content.Server.Roles.Jobs; using Content.Server.Warps; using Content.Shared.Actions; -using Content.Shared.Administration; using Content.Shared.Examine; using Content.Shared.Eye; using Content.Shared.Follower; @@ -16,11 +15,9 @@ using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Movement.Events; -using Content.Shared.Popups; using Content.Shared.Storage.Components; using Robust.Server.GameObjects; using Robust.Server.Player; -using Robust.Shared.Console; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; using Robust.Shared.Timing; @@ -357,28 +354,4 @@ public bool DoGhostBooEvent(EntityUid target) return ghostBoo.Handled; } } - - [AnyCommand] - public sealed class ToggleGhostVisibility : IConsoleCommand - { - public string Command => "toggleghosts"; - public string Description => "Toggles ghost visibility"; - public string Help => $"{Command}"; - - public void Execute(IConsoleShell shell, string argStr, string[] args) - { - if (shell.Player == null) - shell.WriteLine("You can only toggle ghost visibility on a client."); - - var entityManager = IoCManager.Resolve(); - - var uid = shell.Player?.AttachedEntity; - if (uid == null - || !entityManager.HasComponent(uid) - || !entityManager.TryGetComponent(uid, out var eyeComponent)) - return; - - entityManager.System().SetVisibilityMask(uid.Value, eyeComponent.VisibilityMask ^ (int) VisibilityFlags.Ghost, eyeComponent); - } - } } From 3a561ed993a0f3992355a48ee043153f380ee751 Mon Sep 17 00:00:00 2001 From: Sirionaut <148076704+Sirionaut@users.noreply.github.com> Date: Fri, 20 Oct 2023 19:06:56 +0200 Subject: [PATCH 184/245] fixed localization for guardian (#21101) --- Content.Server/Guardian/GuardianSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Guardian/GuardianSystem.cs b/Content.Server/Guardian/GuardianSystem.cs index 118574db3f75bc..b6121a7fbda42c 100644 --- a/Content.Server/Guardian/GuardianSystem.cs +++ b/Content.Server/Guardian/GuardianSystem.cs @@ -218,7 +218,7 @@ private void OnHostStateChange(EntityUid uid, GuardianHostComponent component, M if (args.NewMobState == MobState.Critical) { - _popupSystem.PopupEntity(Loc.GetString("guardian-critical-warn"), component.HostedGuardian.Value, component.HostedGuardian.Value); + _popupSystem.PopupEntity(Loc.GetString("guardian-host-critical-warn"), component.HostedGuardian.Value, component.HostedGuardian.Value); _audio.Play("/Audio/Effects/guardian_warn.ogg", Filter.Pvs(component.HostedGuardian.Value), component.HostedGuardian.Value, true); } else if (args.NewMobState == MobState.Dead) From 68aa295a385e99ad9f8ba1a26f9f74b6726fe81c Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Fri, 20 Oct 2023 21:21:49 +0100 Subject: [PATCH 185/245] Add internal temperatures for cooking meats (#20659) --- .../Body/Systems/ThermalRegulatorSystem.cs | 5 +- .../ConstructionSystem.Interactions.cs | 26 +++++--- .../InternalTemperatureComponent.cs | 48 +++++++++++++++ .../Components/TemperatureComponent.cs | 16 +++-- .../Temperature/Systems/TemperatureSystem.cs | 59 +++++++++++++++++-- .../Entities/Objects/Consumable/Food/meat.yml | 26 ++++++++ 6 files changed, 158 insertions(+), 22 deletions(-) create mode 100644 Content.Server/Temperature/Components/InternalTemperatureComponent.cs diff --git a/Content.Server/Body/Systems/ThermalRegulatorSystem.cs b/Content.Server/Body/Systems/ThermalRegulatorSystem.cs index 60d2e389da32b2..a9556be7738ef9 100644 --- a/Content.Server/Body/Systems/ThermalRegulatorSystem.cs +++ b/Content.Server/Body/Systems/ThermalRegulatorSystem.cs @@ -35,7 +35,8 @@ private void ProcessThermalRegulation(EntityUid uid, ThermalRegulatorComponent c // implicit heat regulation var tempDiff = Math.Abs(temperatureComponent.CurrentTemperature - comp.NormalBodyTemperature); - var targetHeat = tempDiff * temperatureComponent.HeatCapacity; + var heatCapacity = _tempSys.GetHeatCapacity(uid, temperatureComponent); + var targetHeat = tempDiff * heatCapacity; if (temperatureComponent.CurrentTemperature > comp.NormalBodyTemperature) { totalMetabolismTempChange -= Math.Min(targetHeat, comp.ImplicitHeatRegulation); @@ -49,7 +50,7 @@ private void ProcessThermalRegulation(EntityUid uid, ThermalRegulatorComponent c // recalc difference and target heat tempDiff = Math.Abs(temperatureComponent.CurrentTemperature - comp.NormalBodyTemperature); - targetHeat = tempDiff * temperatureComponent.HeatCapacity; + targetHeat = tempDiff * heatCapacity; // if body temperature is not within comfortable, thermal regulation // processes starts diff --git a/Content.Server/Construction/ConstructionSystem.Interactions.cs b/Content.Server/Construction/ConstructionSystem.Interactions.cs index 21daabdb5da6ca..11dd0b2bf04614 100644 --- a/Content.Server/Construction/ConstructionSystem.Interactions.cs +++ b/Content.Server/Construction/ConstructionSystem.Interactions.cs @@ -380,16 +380,28 @@ private HandleResult HandleInteraction(EntityUid uid, object ev, ConstructionGra if (ev is not OnTemperatureChangeEvent) break; - if (TryComp(uid, out var tempComp)) + // prefer using InternalTemperature since that's more accurate for cooking. + float temp; + if (TryComp(uid, out var internalTemp)) { - if ((!temperatureChangeStep.MinTemperature.HasValue || tempComp.CurrentTemperature >= temperatureChangeStep.MinTemperature.Value) && - (!temperatureChangeStep.MaxTemperature.HasValue || tempComp.CurrentTemperature <= temperatureChangeStep.MaxTemperature.Value)) - { - return HandleResult.True; - } + temp = internalTemp.Temperature; + } + else if (TryComp(uid, out var tempComp)) + { + temp = tempComp.CurrentTemperature; + } + else + { + return HandleResult.False; } - return HandleResult.False; + if ((!temperatureChangeStep.MinTemperature.HasValue || temp >= temperatureChangeStep.MinTemperature.Value) && + (!temperatureChangeStep.MaxTemperature.HasValue || temp <= temperatureChangeStep.MaxTemperature.Value)) + { + return HandleResult.True; + } + + return HandleResult.False; } case PartAssemblyConstructionGraphStep partAssemblyStep: diff --git a/Content.Server/Temperature/Components/InternalTemperatureComponent.cs b/Content.Server/Temperature/Components/InternalTemperatureComponent.cs new file mode 100644 index 00000000000000..1e456d4410b7fa --- /dev/null +++ b/Content.Server/Temperature/Components/InternalTemperatureComponent.cs @@ -0,0 +1,48 @@ +using Content.Server.Temperature.Systems; + +namespace Content.Server.Temperature.Components; + +/// +/// Entity has an internal temperature which conducts heat from its surface. +/// Requires to function. +/// +/// +/// Currently this is only used for cooking but animal metabolism could use it too. +/// Too hot? Suffering heatstroke, start sweating to cool off and increase thirst. +/// Too cold? Suffering hypothermia, start shivering to warm up and increase hunger. +/// +[RegisterComponent, Access(typeof(TemperatureSystem))] +public sealed partial class InternalTemperatureComponent : Component +{ + /// + /// Internal temperature which is modified by surface temperature. + /// This gets set to on mapinit. + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public float Temperature; + + /// + /// Thermal conductivity of the material in W/m/K. + /// Higher conductivity means its insides will heat up faster. + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public float Conductivity = 0.5f; + + /// + /// Average thickness between the surface and the inside. + /// For meats and such this is constant. + /// Thicker materials take longer for heat to dissipate. + /// + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public float Thickness; + + /// + /// Surface area in m^2 for the purpose of conducting surface temperature to the inside. + /// Larger surface area means it takes longer to heat up/cool down + /// + /// + /// For meats etc this should just be the area of the cooked surface not the whole thing as it's only getting heat from one side usually. + /// + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public float Area; +} diff --git a/Content.Server/Temperature/Components/TemperatureComponent.cs b/Content.Server/Temperature/Components/TemperatureComponent.cs index 7330ebf9ba5b3d..ec00a570f96478 100644 --- a/Content.Server/Temperature/Components/TemperatureComponent.cs +++ b/Content.Server/Temperature/Components/TemperatureComponent.cs @@ -1,8 +1,7 @@ +using Content.Server.Temperature.Systems; using Content.Shared.Atmos; using Content.Shared.Damage; using Content.Shared.FixedPoint; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; namespace Content.Server.Temperature.Components; @@ -14,6 +13,9 @@ namespace Content.Server.Temperature.Components; [RegisterComponent] public sealed partial class TemperatureComponent : Component { + /// + /// Surface temperature which is modified by the environment. + /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float CurrentTemperature = Atmospherics.T20C; @@ -47,16 +49,12 @@ public sealed partial class TemperatureComponent : Component [DataField, ViewVariables(VVAccess.ReadWrite)] public float AtmosTemperatureTransferEfficiency = 0.1f; - [ViewVariables] public float HeatCapacity + [Obsolete("Use system method")] + public float HeatCapacity { get { - if (IoCManager.Resolve().TryGetComponent(Owner, out var physics) && physics.FixturesMass != 0) - { - return SpecificHeat * physics.FixturesMass; - } - - return Atmospherics.MinimumHeatCapacity; + return IoCManager.Resolve().System().GetHeatCapacity(Owner, this); } } diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs index 27521cadf63377..646f60eb636c0e 100644 --- a/Content.Server/Temperature/Systems/TemperatureSystem.cs +++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs @@ -12,6 +12,7 @@ using Content.Shared.Rejuvenate; using Content.Shared.Temperature; using Robust.Server.GameObjects; +using Robust.Shared.Physics.Components; namespace Content.Server.Temperature.Systems; @@ -19,8 +20,8 @@ public sealed class TemperatureSystem : EntitySystem { [Dependency] private readonly AlertsSystem _alerts = default!; [Dependency] private readonly AtmosphereSystem _atmosphere = default!; - [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly TransformSystem _transform = default!; /// @@ -43,6 +44,8 @@ public override void Initialize() SubscribeLocalEvent>( OnTemperatureChangeAttempt); + SubscribeLocalEvent(OnInit); + // Allows overriding thresholds based on the parent's thresholds. SubscribeLocalEvent(OnParentChange); SubscribeLocalEvent( @@ -55,6 +58,34 @@ public override void Update(float frameTime) { base.Update(frameTime); + // conduct heat from the surface to the inside of entities with internal temperatures + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var temp)) + { + // don't do anything if they equalised + var diff = Math.Abs(temp.CurrentTemperature - comp.Temperature); + if (diff < 0.1f) + continue; + + // heat flow in W/m^2 as per fourier's law in 1D. + var q = comp.Conductivity * diff / comp.Thickness; + + // convert to J then K + var joules = q * comp.Area * frameTime; + var degrees = joules / GetHeatCapacity(uid, temp); + if (temp.CurrentTemperature < comp.Temperature) + degrees *= -1; + + // exchange heat between inside and surface + comp.Temperature += degrees; + ForceChangeTemperature(uid, temp.CurrentTemperature - degrees, temp); + } + + UpdateDamage(frameTime); + } + + private void UpdateDamage(float frameTime) + { _accumulatedFrametime += frameTime; if (_accumulatedFrametime < UpdateInterval) @@ -104,7 +135,7 @@ public void ChangeHeat(EntityUid uid, float heatAmount, bool ignoreHeatResistanc } float lastTemp = temperature.CurrentTemperature; - temperature.CurrentTemperature += heatAmount / temperature.HeatCapacity; + temperature.CurrentTemperature += heatAmount / GetHeatCapacity(uid, temperature); float delta = temperature.CurrentTemperature - lastTemp; RaiseLocalEvent(uid, new OnTemperatureChangeEvent(temperature.CurrentTemperature, lastTemp, delta), true); @@ -114,6 +145,7 @@ private void OnAtmosExposedUpdate(EntityUid uid, TemperatureComponent temperatur ref AtmosExposedUpdateEvent args) { var transform = args.Transform; + if (transform.MapUid == null) return; @@ -122,11 +154,30 @@ private void OnAtmosExposedUpdate(EntityUid uid, TemperatureComponent temperatur var temperatureDelta = args.GasMixture.Temperature - temperature.CurrentTemperature; var tileHeatCapacity = _atmosphere.GetTileHeatCapacity(transform.GridUid, transform.MapUid.Value, position); - var heat = temperatureDelta * (tileHeatCapacity * temperature.HeatCapacity / - (tileHeatCapacity + temperature.HeatCapacity)); + var heatCapacity = GetHeatCapacity(uid, temperature); + var heat = temperatureDelta * (tileHeatCapacity * heatCapacity / + (tileHeatCapacity + heatCapacity)); ChangeHeat(uid, heat * temperature.AtmosTemperatureTransferEfficiency, temperature: temperature); } + public float GetHeatCapacity(EntityUid uid, TemperatureComponent? comp = null, PhysicsComponent? physics = null) + { + if (!Resolve(uid, ref comp) || !Resolve(uid, ref physics, false) || physics.FixturesMass <= 0) + { + return Atmospherics.MinimumHeatCapacity; + } + + return comp.SpecificHeat * physics.FixturesMass; + } + + private void OnInit(EntityUid uid, InternalTemperatureComponent comp, MapInitEvent args) + { + if (!TryComp(uid, out var temp)) + return; + + comp.Temperature = temp.CurrentTemperature; + } + private void OnRejuvenate(EntityUid uid, TemperatureComponent comp, RejuvenateEvent args) { ForceChangeTemperature(uid, Atmospherics.T20C, comp); diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index 21a100841dbb17..35057aeacd95da 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -25,10 +25,26 @@ Quantity: 5 - type: Item size: 5 + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + # less mass so it can cook faster, a single strip of bacon isnt 5kg + density: 1 + mask: + - ItemMask + restitution: 0.3 # fite me + friction: 0.2 # let air cook and freeze meat for cooking and preservation - type: AtmosExposed - type: Temperature currentTemperature: 290 + # required for cooking to work + - type: InternalTemperature + thickness: 0.02 + area: 0.02 # arbitrary number that sounds right for a slab of meat - type: Material - type: PhysicalComposition materialComposition: @@ -84,6 +100,8 @@ - type: SliceableFood count: 3 slice: FoodMeatCutlet + - type: InternalTemperature + conductivity: 0.43 - type: Construction graph: MeatSteak node: start @@ -159,6 +177,10 @@ Quantity: 2 - ReagentId: Fat Quantity: 9 + - type: InternalTemperature + conductivity: 0.44 + thickness: 0.004 # bacon is thin so faster to cook than a steak + area: 0.0075 # ~5x15cm - type: Construction graph: Bacon node: start @@ -232,6 +254,8 @@ - type: SliceableFood count: 3 slice: FoodMeatChickenCutlet + - type: InternalTemperature + conductivity: 0.41 - type: Construction graph: ChickenSteak node: start @@ -324,6 +348,8 @@ Quantity: 5 - ReagentId: Fat Quantity: 3 + - type: InternalTemperature + thickness: 0.1 # very big, do cook it in lava - type: Construction graph: GoliathSteak node: start From f7108af8b00150ffb48d89c63bd6060ba5da5dbc Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 20 Oct 2023 16:22:53 -0400 Subject: [PATCH 186/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 834fb62867e676..2757000f83ca98 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: Potato1234_x - changes: - - {message: Added trash carts. Expect these to be mapped into maintenance soon., - type: Add} - - {message: Added janitorial trash carts that can be locked and unlocked by janitors. - These are for janitors to store trash bags instead of lugging them around., - type: Add} - id: 4530 - time: '2023-08-12T19:05:33.0000000+00:00' - author: PJB3005 changes: - {message: 'Nanotrasen finally decided to give engineering departments something @@ -2923,3 +2914,10 @@ Entries: - {message: Added lathe printing for rollerbed & wheelchairs., type: Add} id: 5029 time: '2023-10-20T05:46:33.0000000+00:00' +- author: deltanedas + changes: + - {message: Meats now cook based on internal temperature. Don't make steak in a + plasma fire unless you want to scorch the outside before the inside can even + cook., type: Tweak} + id: 5030 + time: '2023-10-20T20:21:49.0000000+00:00' From 82627cab15a7980138c437052d2e6b52efe4ce73 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sat, 21 Oct 2023 00:00:24 +0300 Subject: [PATCH 187/245] Orewall and cobblestone wall pack (#21034) * start work * remove crafting things * remove * fix yml * remove all pebbles add sand stone add sand cobblestone wall add asteroid cobblestone wall resprite basaltand snow walls * add new walls * :trollface: --- .../Entities/Structures/Walls/asteroid.yml | 586 ++++++++++++++++++ .../Entities/Structures/Walls/walls.yml | 105 ++++ .../Reagents/Materials/materials.yml | 2 +- .../Recipes/Construction/structures.yml | 2 +- .../Walls/cobblebrick.rsi/cobblebrick0.png | Bin 0 -> 1237 bytes .../Walls/cobblebrick.rsi/cobblebrick1.png | Bin 0 -> 941 bytes .../Walls/cobblebrick.rsi/cobblebrick2.png | Bin 0 -> 1237 bytes .../Walls/cobblebrick.rsi/cobblebrick3.png | Bin 0 -> 941 bytes .../Walls/cobblebrick.rsi/cobblebrick4.png | Bin 0 -> 965 bytes .../Walls/cobblebrick.rsi/cobblebrick5.png | Bin 0 -> 1065 bytes .../Walls/cobblebrick.rsi/cobblebrick6.png | Bin 0 -> 965 bytes .../Walls/cobblebrick.rsi/cobblebrick7.png | Bin 0 -> 257 bytes .../Structures/Walls/cobblebrick.rsi/full.png | Bin 0 -> 815 bytes .../Walls/cobblebrick.rsi/meta.json | 47 ++ .../cobblebrick_andesite.rsi/cobblebrick0.png | Bin 0 -> 1241 bytes .../cobblebrick_andesite.rsi/cobblebrick1.png | Bin 0 -> 973 bytes .../cobblebrick_andesite.rsi/cobblebrick2.png | Bin 0 -> 1241 bytes .../cobblebrick_andesite.rsi/cobblebrick3.png | Bin 0 -> 973 bytes .../cobblebrick_andesite.rsi/cobblebrick4.png | Bin 0 -> 999 bytes .../cobblebrick_andesite.rsi/cobblebrick5.png | Bin 0 -> 1075 bytes .../cobblebrick_andesite.rsi/cobblebrick6.png | Bin 0 -> 999 bytes .../cobblebrick_andesite.rsi/cobblebrick7.png | Bin 0 -> 257 bytes .../Walls/cobblebrick_andesite.rsi/full.png | Bin 0 -> 828 bytes .../Walls/cobblebrick_andesite.rsi/meta.json | 47 ++ .../cobblebrick_asteroid.rsi/cobblebrick0.png | Bin 0 -> 1162 bytes .../cobblebrick_asteroid.rsi/cobblebrick1.png | Bin 0 -> 910 bytes .../cobblebrick_asteroid.rsi/cobblebrick2.png | Bin 0 -> 1162 bytes .../cobblebrick_asteroid.rsi/cobblebrick3.png | Bin 0 -> 910 bytes .../cobblebrick_asteroid.rsi/cobblebrick4.png | Bin 0 -> 935 bytes .../cobblebrick_asteroid.rsi/cobblebrick5.png | Bin 0 -> 1023 bytes .../cobblebrick_asteroid.rsi/cobblebrick6.png | Bin 0 -> 935 bytes .../cobblebrick_asteroid.rsi/cobblebrick7.png | Bin 0 -> 251 bytes .../Walls/cobblebrick_asteroid.rsi/full.png | Bin 0 -> 796 bytes .../Walls/cobblebrick_asteroid.rsi/meta.json | 47 ++ .../cobblebrick_basalt.rsi/cobblebrick0.png | Bin 0 -> 1269 bytes .../cobblebrick_basalt.rsi/cobblebrick1.png | Bin 0 -> 1112 bytes .../cobblebrick_basalt.rsi/cobblebrick2.png | Bin 0 -> 1269 bytes .../cobblebrick_basalt.rsi/cobblebrick3.png | Bin 0 -> 1112 bytes .../cobblebrick_basalt.rsi/cobblebrick4.png | Bin 0 -> 1111 bytes .../cobblebrick_basalt.rsi/cobblebrick5.png | Bin 0 -> 1160 bytes .../cobblebrick_basalt.rsi/cobblebrick6.png | Bin 0 -> 1111 bytes .../cobblebrick_basalt.rsi/cobblebrick7.png | Bin 0 -> 255 bytes .../Walls/cobblebrick_basalt.rsi/full.png | Bin 0 -> 884 bytes .../Walls/cobblebrick_basalt.rsi/meta.json | 47 ++ .../cobblebrick_chromite.rsi/cobblebrick0.png | Bin 0 -> 1472 bytes .../cobblebrick_chromite.rsi/cobblebrick1.png | Bin 0 -> 1024 bytes .../cobblebrick_chromite.rsi/cobblebrick2.png | Bin 0 -> 1477 bytes .../cobblebrick_chromite.rsi/cobblebrick3.png | Bin 0 -> 1024 bytes .../cobblebrick_chromite.rsi/cobblebrick4.png | Bin 0 -> 1055 bytes .../cobblebrick_chromite.rsi/cobblebrick5.png | Bin 0 -> 1146 bytes .../cobblebrick_chromite.rsi/cobblebrick6.png | Bin 0 -> 1055 bytes .../cobblebrick_chromite.rsi/cobblebrick7.png | Bin 0 -> 258 bytes .../Walls/cobblebrick_chromite.rsi/full.png | Bin 0 -> 980 bytes .../Walls/cobblebrick_chromite.rsi/meta.json | 47 ++ .../cobblebrick_sand.rsi/cobblebrick0.png | Bin 0 -> 1294 bytes .../cobblebrick_sand.rsi/cobblebrick1.png | Bin 0 -> 1126 bytes .../cobblebrick_sand.rsi/cobblebrick2.png | Bin 0 -> 1294 bytes .../cobblebrick_sand.rsi/cobblebrick3.png | Bin 0 -> 1126 bytes .../cobblebrick_sand.rsi/cobblebrick4.png | Bin 0 -> 1140 bytes .../cobblebrick_sand.rsi/cobblebrick5.png | Bin 0 -> 1111 bytes .../cobblebrick_sand.rsi/cobblebrick6.png | Bin 0 -> 1140 bytes .../cobblebrick_sand.rsi/cobblebrick7.png | Bin 0 -> 258 bytes .../Walls/cobblebrick_sand.rsi/full.png | Bin 0 -> 904 bytes .../Walls/cobblebrick_sand.rsi/meta.json | 47 ++ .../cobblebrick_snow.rsi/cobblebrick0.png | Bin 0 -> 1484 bytes .../cobblebrick_snow.rsi/cobblebrick1.png | Bin 0 -> 1024 bytes .../cobblebrick_snow.rsi/cobblebrick2.png | Bin 0 -> 1484 bytes .../cobblebrick_snow.rsi/cobblebrick3.png | Bin 0 -> 1024 bytes .../cobblebrick_snow.rsi/cobblebrick4.png | Bin 0 -> 1043 bytes .../cobblebrick_snow.rsi/cobblebrick5.png | Bin 0 -> 1196 bytes .../cobblebrick_snow.rsi/cobblebrick6.png | Bin 0 -> 1043 bytes .../cobblebrick_snow.rsi/cobblebrick7.png | Bin 0 -> 255 bytes .../Walls/cobblebrick_snow.rsi/full.png | Bin 0 -> 1083 bytes .../Walls/cobblebrick_snow.rsi/meta.json | 47 ++ .../Structures/Walls/rock.rsi/meta.json | 47 +- .../Walls/rock.rsi/rock_andesite.png | Bin 0 -> 930 bytes .../Walls/rock.rsi/rock_andesite_east.png | Bin 0 -> 254 bytes .../Walls/rock.rsi/rock_andesite_north.png | Bin 0 -> 223 bytes .../Walls/rock.rsi/rock_andesite_south.png | Bin 0 -> 189 bytes .../Walls/rock.rsi/rock_andesite_west.png | Bin 0 -> 241 bytes .../Walls/rock.rsi/rock_chromite.png | Bin 0 -> 724 bytes .../Walls/rock.rsi/rock_chromite_east.png | Bin 0 -> 265 bytes .../Walls/rock.rsi/rock_chromite_north.png | Bin 0 -> 225 bytes .../Walls/rock.rsi/rock_chromite_south.png | Bin 0 -> 193 bytes .../Walls/rock.rsi/rock_chromite_west.png | Bin 0 -> 257 bytes .../Structures/Walls/rock.rsi/rock_sand.png | Bin 0 -> 737 bytes .../Walls/rock.rsi/rock_sand_east.png | Bin 0 -> 236 bytes .../Walls/rock.rsi/rock_sand_north.png | Bin 0 -> 228 bytes .../Walls/rock.rsi/rock_sand_south.png | Bin 0 -> 225 bytes .../Walls/rock.rsi/rock_sand_west.png | Bin 0 -> 238 bytes 90 files changed, 1068 insertions(+), 3 deletions(-) create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick0.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick1.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick2.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick3.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick4.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick5.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick6.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick7.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick0.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick1.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick2.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick3.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick4.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick5.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick6.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick7.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick0.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick1.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick2.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick3.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick4.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick5.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick6.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick7.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick0.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick1.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick2.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick3.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick4.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick5.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick6.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick7.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick0.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick1.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick2.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick3.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick4.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick5.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick6.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick7.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick0.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick1.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick2.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick3.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick4.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick5.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick6.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick7.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick0.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick1.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick2.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick3.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick4.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick5.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick6.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick7.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_andesite.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_east.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_north.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_south.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_west.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_chromite.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_chromite_east.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_chromite_north.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_chromite_south.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_chromite_west.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_sand.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_sand_east.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_sand_north.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_sand_south.png create mode 100644 Resources/Textures/Structures/Walls/rock.rsi/rock_sand_west.png diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml index 5ecbb8214c94ad..e64af7cbaec4fa 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml @@ -766,3 +766,589 @@ - map: [ "enum.EdgeLayer.West" ] state: rock_snow_west - state: rock_artifact_fragment + + +# Sand variants +- type: entity + id: WallRockSand + parent: WallRock + components: + - type: Sprite + sprite: Structures/Walls/rock.rsi + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + +- type: entity + id: WallRockSandGold + parent: WallRockSand + description: An ore vein rich with gold. + suffix: Gold + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreGold + - type: Sprite + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + - state: rock_gold + +- type: entity + id: WallRockSandPlasma + parent: WallRockSand + description: An ore vein rich with plasma. + suffix: Plasma + components: + - type: OreVein + oreChance: 1.0 + currentOre: OrePlasma + - type: Sprite + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + - state: rock_phoron + +- type: entity + id: WallRockSandQuartz + parent: WallRockSand + description: An ore vein rich with quartz. + suffix: Quartz + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreSpaceQuartz + - type: Sprite + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + - state: rock_quartz + +- type: entity + id: WallRockSandSilver + parent: WallRockSand + description: An ore vein rich with silver. + suffix: Silver + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreSilver + - type: Sprite + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + - state: rock_silver + +- type: entity + id: WallRockSandTin + parent: WallRockSand + description: An ore vein rich with steel. + suffix: Steel + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreSteel + - type: Sprite + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + - state: rock_tin + +- type: entity + id: WallRockSandUranium + parent: WallRockSand + description: An ore vein rich with uranium. + suffix: Uranium + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreUranium + - type: Sprite + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + - state: rock_uranium + + +- type: entity + id: WallRockSandBananium + parent: WallRockSand + description: An ore vein rich with bananium. + suffix: Bananium + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreBananium + - type: Sprite + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + - state: rock_bananium + +- type: entity + id: WallRockSandArtifactFragment + parent: WallRockSand + description: A rock wall. What's that sticking out of it? + suffix: Artifact Fragment + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreArtifactFragment + - type: Sprite + layers: + - state: rock_sand + - map: [ "enum.EdgeLayer.South" ] + state: rock_sand_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_sand_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_sand_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_sand_west + - state: rock_artifact_fragment + +# Chromite variants +- type: entity + id: WallRockChromite + parent: WallRock + components: + - type: Sprite + sprite: Structures/Walls/rock.rsi + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + +- type: entity + id: WallRockChromiteGold + parent: WallRockChromite + description: An ore vein rich with gold. + suffix: Gold + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreGold + - type: Sprite + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + - state: rock_chromite + +- type: entity + id: WallRockChromitePlasma + parent: WallRockChromite + description: An ore vein rich with plasma. + suffix: Plasma + components: + - type: OreVein + oreChance: 1.0 + currentOre: OrePlasma + - type: Sprite + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + - state: rock_phoron + +- type: entity + id: WallRockChromiteQuartz + parent: WallRockChromite + description: An ore vein rich with quartz. + suffix: Quartz + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreSpaceQuartz + - type: Sprite + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + - state: rock_quartz + +- type: entity + id: WallRockChromiteSilver + parent: WallRockChromite + description: An ore vein rich with silver. + suffix: Silver + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreSilver + - type: Sprite + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + - state: rock_silver + +- type: entity + id: WallRockChromiteTin + parent: WallRockChromite + description: An ore vein rich with steel. + suffix: Steel + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreSteel + - type: Sprite + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + - state: rock_tin + +- type: entity + id: WallRockChromiteUranium + parent: WallRockChromite + description: An ore vein rich with uranium. + suffix: Uranium + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreUranium + - type: Sprite + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + - state: rock_uranium + + +- type: entity + id: WallRockChromiteBananium + parent: WallRockChromite + description: An ore vein rich with bananium. + suffix: Bananium + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreBananium + - type: Sprite + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + - state: rock_bananium + +- type: entity + id: WallRockChromiteArtifactFragment + parent: WallRockChromite + description: A rock wall. What's that sticking out of it? + suffix: Artifact Fragment + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreArtifactFragment + - type: Sprite + layers: + - state: rock_chromite + - map: [ "enum.EdgeLayer.South" ] + state: rock_chromite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_chromite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_chromite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_chromite_west + - state: rock_artifact_fragment + +# Andesite variants +- type: entity + id: WallRockAndesite + parent: WallRock + components: + - type: Sprite + sprite: Structures/Walls/rock.rsi + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + +- type: entity + id: WallRockAndesiteGold + parent: WallRockAndesite + description: An ore vein rich with gold. + suffix: Gold + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreGold + - type: Sprite + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + - state: rock_andesite + +- type: entity + id: WallRockAndesitePlasma + parent: WallRockAndesite + description: An ore vein rich with plasma. + suffix: Plasma + components: + - type: OreVein + oreChance: 1.0 + currentOre: OrePlasma + - type: Sprite + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + - state: rock_phoron + +- type: entity + id: WallRockAndesiteQuartz + parent: WallRockAndesite + description: An ore vein rich with quartz. + suffix: Quartz + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreSpaceQuartz + - type: Sprite + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + - state: rock_quartz + +- type: entity + id: WallRockAndesiteSilver + parent: WallRockAndesite + description: An ore vein rich with silver. + suffix: Silver + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreSilver + - type: Sprite + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + - state: rock_silver + +- type: entity + id: WallRockAndesiteTin + parent: WallRockAndesite + description: An ore vein rich with steel. + suffix: Steel + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreSteel + - type: Sprite + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + - state: rock_tin + +- type: entity + id: WallRockAndesiteUranium + parent: WallRockAndesite + description: An ore vein rich with uranium. + suffix: Uranium + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreUranium + - type: Sprite + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + - state: rock_uranium + + +- type: entity + id: WallRockAndesiteBananium + parent: WallRockAndesite + description: An ore vein rich with bananium. + suffix: Bananium + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreBananium + - type: Sprite + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + - state: rock_bananium + +- type: entity + id: WallRockAndesiteArtifactFragment + parent: WallRockAndesite + description: A rock wall. What's that sticking out of it? + suffix: Artifact Fragment + components: + - type: OreVein + oreChance: 1.0 + currentOre: OreArtifactFragment + - type: Sprite + layers: + - state: rock_andesite + - map: [ "enum.EdgeLayer.South" ] + state: rock_andesite_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_andesite_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_andesite_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_andesite_west + - state: rock_artifact_fragment diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml index be2927fcb98e1a..51d611ba8d0201 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml @@ -1143,3 +1143,108 @@ - type: Icon sprite: Structures/Magic/forcewall.rsi state: forcewall + +- type: entity + parent: BaseWall + id: WallCobblebrick + name: cobblestone brick wall + description: Stone by stone, perfectly fitted together to form a wall. + components: + - type: Tag + tags: + - Wall + - RCDDeconstructWhitelist + - type: Sprite + sprite: Structures/Walls/cobblebrick.rsi + - type: Icon + sprite: Structures/Walls/cobblebrick.rsi + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: IconSmooth + key: walls + base: cobblebrick + +- type: entity + parent: WallCobblebrick + id: WallBasaltCobblebrick + name: basalt brick wall + components: + - type: Sprite + sprite: Structures/Walls/cobblebrick_basalt.rsi + - type: Icon + sprite: Structures/Walls/cobblebrick_basalt.rsi + - type: IconSmooth + key: walls + base: cobblebrick + +- type: entity + parent: WallCobblebrick + id: WallSnowCobblebrick + name: snow brick wall + description: A cold, not-so-impenetrable wall. + components: + - type: Sprite + sprite: Structures/Walls/cobblebrick_snow.rsi + - type: Icon + sprite: Structures/Walls/cobblebrick_snow.rsi + - type: IconSmooth + key: walls + base: cobblebrick + +- type: entity + parent: WallCobblebrick + id: WallAsteroidCobblebrick + name: asteroid stone brick wall + components: + - type: Sprite + sprite: Structures/Walls/cobblebrick_asteroid.rsi + - type: Icon + sprite: Structures/Walls/cobblebrick_asteroid.rsi + - type: IconSmooth + key: walls + base: cobblebrick + +- type: entity + parent: WallCobblebrick + id: WallSandCobblebrick + name: sandstone brick wall + components: + - type: Sprite + sprite: Structures/Walls/cobblebrick_sand.rsi + - type: Icon + sprite: Structures/Walls/cobblebrick_sand.rsi + - type: IconSmooth + key: walls + base: cobblebrick + +- type: entity + parent: WallCobblebrick + id: WallChromiteCobblebrick + name: chromite brick wall + components: + - type: Sprite + sprite: Structures/Walls/cobblebrick_chromite.rsi + - type: Icon + sprite: Structures/Walls/cobblebrick_chromite.rsi + - type: IconSmooth + key: walls + base: cobblebrick + +- type: entity + parent: WallCobblebrick + id: WallAndesiteCobblebrick + name: andesite brick wall + components: + - type: Sprite + sprite: Structures/Walls/cobblebrick_andesite.rsi + - type: Icon + sprite: Structures/Walls/cobblebrick_andesite.rsi + - type: IconSmooth + key: walls + base: cobblebrick diff --git a/Resources/Prototypes/Reagents/Materials/materials.yml b/Resources/Prototypes/Reagents/Materials/materials.yml index 4c94798dbf3399..e9a0cad37df8e7 100644 --- a/Resources/Prototypes/Reagents/Materials/materials.yml +++ b/Resources/Prototypes/Reagents/Materials/materials.yml @@ -98,4 +98,4 @@ unit: materials-unit-piece icon: { sprite: Objects/Materials/materials.rsi, state: bones } color: "#896f5e" - price: 0 + price: 0 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 3539cc2065617f..d1b711ec0a7552 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -1078,4 +1078,4 @@ sprite: Structures/Doors/secret_door.rsi state: closed conditions: - - !type:TileNotBlocked + - !type:TileNotBlocked \ No newline at end of file diff --git a/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick0.png b/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick0.png new file mode 100644 index 0000000000000000000000000000000000000000..d829c8fb0fdc54382448992339c3de827986f249 GIT binary patch literal 1237 zcmV;`1SPx(k4Z#9RCt`-Tit5gNEH5BR+42b6{B1^Cb|d>hTIfN-k>i~*yq@X+2<(q1@;Y= zg}qq_EqmdR1PU>xlCiAuh4;cf)3H2bw?5P8tUm}zeC!P8)0y+17Z8Hi7Z>%Abk?XK8AceZIS6o!vSCrt(n`?8v8O2>_Tc7U(C5_w!pP zfI!MWOeR+OTq(>QG7iKL0IZciOH->Q06@K5>g(Wo&yPY30c7f=SR961@=7T!bG_#n zh#=spD7JpLDHewzDy7if$b2Xd0584#6(-KoR4Zmf+KZ9)Vy!e;OWKRsXN#}^0O%)) z)ybv37`Nm5o!1{H6FhqGiDC#aQ7MHu47Kw8B(a)&r4;)taRk)MC88i$D>qxe=DP1E z;{;8RL+pkjrWUz*?~7T*K2ID0W{f9iM}un91qd=f<^irj$8&>i0i+nk^{s|R11FgWGzS@n!rb{LZ;%2u0XBsw@#%)4b(|&T z=>r}Juqo5+bk+oPI!sC%#9>y-~68B=UIj*2*gAJuVL`e{Jvf;@vtF53fKftse5RC zZ^|XXTNEH=UGsZi^L*c66F{?j;M;VECcFO!u&=zA;007qceWes`$M;qe zPOcx|+UYSNwIATk37WpZL@}#&dImpZ;qh2_xdLe~)`O9>7jKz7^$Mk!d=p*>AV+v} zb!nXr^^@du=K?oZmw5N~4FFh`A7q*6xd5Ahvaa!U6aR0=_dCN-@(WTEq1MY$+7^$3 zK-UT8hDdWwj(iGTx8FZ}Wa%KXA!4q?0NX1wqkISec$Fl29M6G>6&Vv|Tiv!`K}!Ge z*WX^w6Gwo#Cul=i*V_DTY50#q906u8Ar8Z>HMwF|A??K|>)OkbBp}EK*!BcnnWZn~ z0U;J}=>G+1dAj+U4~QVZwI^82Dva_WZpZh|9Rx1KTme^sL?jH1KH?zDFv^EIByu3a z0uI5fD2b?(bAl$C_xpSH4~~U63vlfhe9!*DF%U(-d6qfoEAd>J=yatJGft9 z%DHHrfX#q(b)Dzh%n$7sm~t*!FNXN{<9#FH00000NkvXXu0mjf%}Yel literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick1.png b/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick1.png new file mode 100644 index 0000000000000000000000000000000000000000..629682fae7730cfd91764c554ab8e99e1ba4064d GIT binary patch literal 941 zcmV;e15*5nP)Px&XGugsRCt{2Tfu7EKoET?wPc$}V3d<%qC;pf`~T|CApflXA62@Wa&wf_hokUW<5TEFy38U{NY@GKcAm)u7At9 zSO>0sA5T$)GuN#=r;fj$&sp~u7ht(s<=c_tl=v`?Yk4l@1<0~|y9|Qb^XmAv5EtOw z^YZuU%S#^acCS}Dw~229aRCOF1pr90EFTnYiQ9*7i#P1Qpb0dX;bvPLTod0G;sUs* z1GuLH0Ivy;w#3!(T!>GByV=9ek{q~*x88~1^041dV6>I@+fBn|+ImDnP2Tc9R zRwTq}x|Ow?cuBB*z<5*7$7!0s)ZtKzv%jtjN`6xt)l$!mA@IH8G`f|ewhC`;Sw{=U2< zv?M`by<|;WyVolXvWb@hTY$$xP5u-`wdXhS#|B$~^BsmJjAJab3`5JR{JM*HX|M&L z&{i?*_tyjL_ZxX>uuDM3 zzOM`8*a#O0bUvW-0i6#x#!WgO(D{JQ2N>%EL>D7~^@7T^@5Ao(@E8O*S0cte9pG;E zu+=6|}-b=hirU-S}Ts2ZOm2@{`7$*QdC62XX zY@7hTv`!e418A`7ZvoUM3d#q%yUL6Z;3oMN#zSWSw$TWgG%0%xv^{BY=v|2XsE5^8o-lAJF-L&IfF8NFVSQXvr%0?@oeI P00000NkvXXu0mjfIKRDj literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick2.png b/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick2.png new file mode 100644 index 0000000000000000000000000000000000000000..d829c8fb0fdc54382448992339c3de827986f249 GIT binary patch literal 1237 zcmV;`1SPx(k4Z#9RCt`-Tit5gNEH5BR+42b6{B1^Cb|d>hTIfN-k>i~*yq@X+2<(q1@;Y= zg}qq_EqmdR1PU>xlCiAuh4;cf)3H2bw?5P8tUm}zeC!P8)0y+17Z8Hi7Z>%Abk?XK8AceZIS6o!vSCrt(n`?8v8O2>_Tc7U(C5_w!pP zfI!MWOeR+OTq(>QG7iKL0IZciOH->Q06@K5>g(Wo&yPY30c7f=SR961@=7T!bG_#n zh#=spD7JpLDHewzDy7if$b2Xd0584#6(-KoR4Zmf+KZ9)Vy!e;OWKRsXN#}^0O%)) z)ybv37`Nm5o!1{H6FhqGiDC#aQ7MHu47Kw8B(a)&r4;)taRk)MC88i$D>qxe=DP1E z;{;8RL+pkjrWUz*?~7T*K2ID0W{f9iM}un91qd=f<^irj$8&>i0i+nk^{s|R11FgWGzS@n!rb{LZ;%2u0XBsw@#%)4b(|&T z=>r}Juqo5+bk+oPI!sC%#9>y-~68B=UIj*2*gAJuVL`e{Jvf;@vtF53fKftse5RC zZ^|XXTNEH=UGsZi^L*c66F{?j;M;VECcFO!u&=zA;007qceWes`$M;qe zPOcx|+UYSNwIATk37WpZL@}#&dImpZ;qh2_xdLe~)`O9>7jKz7^$Mk!d=p*>AV+v} zb!nXr^^@du=K?oZmw5N~4FFh`A7q*6xd5Ahvaa!U6aR0=_dCN-@(WTEq1MY$+7^$3 zK-UT8hDdWwj(iGTx8FZ}Wa%KXA!4q?0NX1wqkISec$Fl29M6G>6&Vv|Tiv!`K}!Ge z*WX^w6Gwo#Cul=i*V_DTY50#q906u8Ar8Z>HMwF|A??K|>)OkbBp}EK*!BcnnWZn~ z0U;J}=>G+1dAj+U4~QVZwI^82Dva_WZpZh|9Rx1KTme^sL?jH1KH?zDFv^EIByu3a z0uI5fD2b?(bAl$C_xpSH4~~U63vlfhe9!*DF%U(-d6qfoEAd>J=yatJGft9 z%DHHrfX#q(b)Dzh%n$7sm~t*!FNXN{<9#FH00000NkvXXu0mjf%}Yel literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick3.png b/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick3.png new file mode 100644 index 0000000000000000000000000000000000000000..629682fae7730cfd91764c554ab8e99e1ba4064d GIT binary patch literal 941 zcmV;e15*5nP)Px&XGugsRCt{2Tfu7EKoET?wPc$}V3d<%qC;pf`~T|CApflXA62@Wa&wf_hokUW<5TEFy38U{NY@GKcAm)u7At9 zSO>0sA5T$)GuN#=r;fj$&sp~u7ht(s<=c_tl=v`?Yk4l@1<0~|y9|Qb^XmAv5EtOw z^YZuU%S#^acCS}Dw~229aRCOF1pr90EFTnYiQ9*7i#P1Qpb0dX;bvPLTod0G;sUs* z1GuLH0Ivy;w#3!(T!>GByV=9ek{q~*x88~1^041dV6>I@+fBn|+ImDnP2Tc9R zRwTq}x|Ow?cuBB*z<5*7$7!0s)ZtKzv%jtjN`6xt)l$!mA@IH8G`f|ewhC`;Sw{=U2< zv?M`by<|;WyVolXvWb@hTY$$xP5u-`wdXhS#|B$~^BsmJjAJab3`5JR{JM*HX|M&L z&{i?*_tyjL_ZxX>uuDM3 zzOM`8*a#O0bUvW-0i6#x#!WgO(D{JQ2N>%EL>D7~^@7T^@5Ao(@E8O*S0cte9pG;E zu+=6|}-b=hirU-S}Ts2ZOm2@{`7$*QdC62XX zY@7hTv`!e418A`7ZvoUM3d#q%yUL6Z;3oMN#zSWSw$TWgG%0%xv^{BY=v|2XsE5^8o-lAJF-L&IfF8NFVSQXvr%0?@oeI P00000NkvXXu0mjfIKRDj literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick4.png b/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick4.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc8dab560e80297d4af4c3c3c84f7bcc1a83ecf GIT binary patch literal 965 zcmV;$13LVPP)Px&e@R3^RCt{2o6l<7KoG{ilzR1tNMMvx60Ac=2;`gxDfBt|Fnx|f?|p@w3!$M0 znKhzzJB|D#A*Kn^Z5@#DJ1|P|5E}$Ly+tA+-O@L zjeeT}s?`eKXoONq%!{JFA0Gz*fXMTVw&$DxFL@3C2sgj_p>a-tlQ@Pq8Ua9K1RM%y zd;oQpIv)su(a0=(oo78}P0G@TyMbc*-WN26^!F$GTI7>nhyA%e=h zC@?=z+fIxC02oJ6r|mRJ8dJg)&Iq6~!~sJbFvI}>hB#n|1BN(Y!y)4U)?OL_zI^`l z8hIY>e*NBRzfRBV;af_Hrz}G#1VZ1(&*>Bovl;stI2a!RG;iC>n94%RoxgV981(_y z>3KbGX&$S;J`oCmlQ=fn^xha1fPxef0a&N7sPolo1)w|Z?VDbl;JhfD8S-s<5nvoe z7-KyGDAIEUqf>x_6q@(I+9{GhpdiO3j0$i+eSG8e+D_3mj86f|+jlW93WUCIy6L?b z;sBFhHpBr#9I%}s4jAHqAr5dh4q)%aFDH{%&gcL8e85eb;w8^Jm$feY!)(TV1Qu)o z7RzP*zHNDIUy zpU~NDVQd+s&d`xoyK_3bE!YCY$3eZ;lf$ETvUS;Q!=3`WPHLXB49^`tPiOB7BYOe0 zkWqzl0$q077!ja-mIti&1A!2jYwWf$<^;XcfpvWW=kwhE3s|oZFX&+7XXj#F0HB#h-{+cx^(jzFi9m=qouZAB z&d$ZU0J<8$L)Hia4hTSXgzCQFG)dm<9Cz8dk)(A2XlRe4sLmaz_X(YSUz~7)rIK1# zum9D~!TJbj*AA$Em{8H#_r|Cr1Kto$4 n^!;@QeP3(mVtqSo`*{5?z!om`LE8!Q00000NkvXXu0mjf$%(jJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick5.png b/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick5.png new file mode 100644 index 0000000000000000000000000000000000000000..52860683ac4fc85afa50840812ca18846271035b GIT binary patch literal 1065 zcmV+^1lIeBP)Px&<4Ht8RCt`_TT71GKoETs1^+a*gv@F{VlmQ)3vh+(Bjp@9OwJK0`&?lzfFfmq zL|Bc5TAm+0RT*&9-)c?-@gC2yJr3mSN(bhWMzrK^WgS+`dVI=0DyFz13-n4 z$#}#%zc>K^kZm^lb+O$7*pWbY8`v2S0HN!$&i#?~+b%>_mdN(TzN9GtAlTn^+Yl#U z7{~f`vEAY&O)-cfxV;`$N?D&@+y#8c(LPRb!0q+mI}RQUaws0CqF|k0oB#rmU@m>~ zdow7`<_p$&#a)1mOxL+y@++m_8+U)D6jqkz7boD@9bF~~mis?}LwNuf#0dbZ2Aasr za<>|cJRrIsvARJg2rvyKr0X2M+!6=(_r0UN^_N(Fqp- zjt9d-<5UQ7K%9W-)8pBn;Y^0a3E*D#>Z?3Ov4J-tZ@f6ThQB@j{3MH*z*7iYE;V7vnmSxFt1Cal|+bY`D5=T z!5ReV?wSVXWeMML{xO?DTs0(1<5mH5g=-$_cFOx(YOgX?GW_jxxw4Mh5(E5KD&a$s=2@^ z{a+eZ_5*-sy}t|o4_GLNoAmude)xj16h=g--Q@g^_TK^>w z)#d^D{sQq1kxP0CZmLD*lAeN_YLWt)`v>ad)QiADf_R@`Q~yAHoEzc<0L}da=6h}u z#9g4Nf1o~obKT-i{R6i93&aU%>K{0EZjcM&F@Tmf?Hrr^18tle6kh?ro4;peiD18V z4xl2e-0ZnQGM+SpcXw{EE|QpPx&e@R3^RCt{2o6l<7KoG{ilzR1tNMMvx60Ac=2;`gxDfBt|Fnx|f?|p@w3!$M0 znKhzzJB|D#A*Kn^Z5@#DJ1|P|5E}$Ly+tA+-O@L zjeeT}s?`eKXoONq%!{JFA0Gz*fXMTVw&$DxFL@3C2sgj_p>a-tlQ@Pq8Ua9K1RM%y zd;oQpIv)su(a0=(oo78}P0G@TyMbc*-WN26^!F$GTI7>nhyA%e=h zC@?=z+fIxC02oJ6r|mRJ8dJg)&Iq6~!~sJbFvI}>hB#n|1BN(Y!y)4U)?OL_zI^`l z8hIY>e*NBRzfRBV;af_Hrz}G#1VZ1(&*>Bovl;stI2a!RG;iC>n94%RoxgV981(_y z>3KbGX&$S;J`oCmlQ=fn^xha1fPxef0a&N7sPolo1)w|Z?VDbl;JhfD8S-s<5nvoe z7-KyGDAIEUqf>x_6q@(I+9{GhpdiO3j0$i+eSG8e+D_3mj86f|+jlW93WUCIy6L?b z;sBFhHpBr#9I%}s4jAHqAr5dh4q)%aFDH{%&gcL8e85eb;w8^Jm$feY!)(TV1Qu)o z7RzP*zHNDIUy zpU~NDVQd+s&d`xoyK_3bE!YCY$3eZ;lf$ETvUS;Q!=3`WPHLXB49^`tPiOB7BYOe0 zkWqzl0$q077!ja-mIti&1A!2jYwWf$<^;XcfpvWW=kwhE3s|oZFX&+7XXj#F0HB#h-{+cx^(jzFi9m=qouZAB z&d$ZU0J<8$L)Hia4hTSXgzCQFG)dm<9Cz8dk)(A2XlRe4sLmaz_X(YSUz~7)rIK1# zum9D~!TJbj*AA$Em{8H#_r|Cr1Kto$4 n^!;@QeP3(mVtqSo`*{5?z!om`LE8!Q00000NkvXXu0mjf$%(jJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick7.png b/Resources/Textures/Structures/Walls/cobblebrick.rsi/cobblebrick7.png new file mode 100644 index 0000000000000000000000000000000000000000..057ca4de0019c4f2e858f716e33515e65afa41a7 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|c6+)whE&XX zd+Q+Q;Q*ck0n4SujNIE_%Cz>~;CXns*=?6}%ZHUo}(+SSkg`Tcoy&NKPh59=2& zL^%XA=q}J~5W67az@5RhfYpTc0@Ey}492ssrp^2K{m-=9`3{U*8kXT!=!;ug>X(`Q kX?xXMpqv*PnD-`v*j{9pf?yiUHx3vIVCg!0Me#e`Tzg` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick.rsi/full.png b/Resources/Textures/Structures/Walls/cobblebrick.rsi/full.png new file mode 100644 index 0000000000000000000000000000000000000000..ee90ee5784f92cbe1c743d257ed1d74bd00a6589 GIT binary patch literal 815 zcmV+~1JL}5P)Px%=}AOER9J<@SIcVSFcdv0i5vw>VBA$(nnjsXn05dE1G*k44P7L(fq@!>W$aj4 zbQbYdC0WX&?aZ7_$i0&8`&b&G$B*mlcl<*vR;v*JjLG=V`8>M#t*US?<#+4f7pv81 zY#UD|lfmXvDF8sT*&q|*TlC#_i{9q@m===p*P;kU(P)h(qB})@nde9*6Li}xfW8ET z*P_6=l)+4p=akOSnq%~@y%PlE0HumHa>ks^t=2{tT62ot#u>0{l16JI^o`rHS^w*= zIaVKZ;9N?xF$9@%$dsEyC|e|#DR<ikgtmZ>qyU$?rwgC zs%{7RQYp-)Q`Z3-t=1-r$K?w$A%ZDvwMMB_P~U2e$K^}ViAHNv@-zQX8jn_MvoTgb z9;tUo)>=I_W6TiKAOmkzWfqkIqjqiW$Vl!-Th*;GPQhhDgn0mfGsDzWz7dfmP+f<0 z-!n4hMkZ74I6-UdDYLPc2Y8;F0|+8X@bL8P$f!y0Z*QQwZeS!60vSGtYT$q`r25H} zV_keSr5)M*?TxeN;psVO{Gw;Q7!i$uUD}(?CYq*FDbo-3=#fE@Bmj1qunkfWRo#L! z<}{+?01)Q^(ot6YlK42Jr+|*)0e=j4taoKqm@+|L6csID{JPMNryUzsuVu`UYdA_APi1Dr9Zrd8cSrW~s4 zOk~t_WIV?GpW*=;LmMFjAsOK!&(Uff<$LEckG`-f*jpj2wNuHJv%-unPBtSkL* zB6UBc_hozU12z%)@~`OaHBlb8%=75Ogy4_Sse1cO;5a~@U*@?Xju~Uo=hj#B6g>cp tfbiq=FFi;Nel3?+tX88D3I5mf{14mSSqqdGg53ZB002ovPDHLkV1n>tf*b$< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick.rsi/meta.json b/Resources/Textures/Structures/Walls/cobblebrick.rsi/meta.json new file mode 100644 index 00000000000000..c5029fedebae1b --- /dev/null +++ b/Resources/Textures/Structures/Walls/cobblebrick.rsi/meta.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by TheShuEd for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "cobblebrick0", + "directions": 4 + }, + { + "name": "cobblebrick1", + "directions": 4 + }, + { + "name": "cobblebrick2", + "directions": 4 + }, + { + "name": "cobblebrick3", + "directions": 4 + }, + { + "name": "cobblebrick4", + "directions": 4 + }, + { + "name": "cobblebrick5", + "directions": 4 + }, + { + "name": "cobblebrick6", + "directions": 4 + }, + { + "name": "cobblebrick7", + "directions": 4 + } + ] + } + \ No newline at end of file diff --git a/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick0.png b/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick0.png new file mode 100644 index 0000000000000000000000000000000000000000..afbb79696634b9d0c58437dc15f43c87557d8181 GIT binary patch literal 1241 zcmV;~1Sb25P)Px(lSxEDRCt`-TRm?gNf3QLEs|whVg_a;3t^EA0saq6c*!Lf`a^Q&U$xmvx3}RX zmt2Vd!xEST8I6!;V1~P0%MyVvV5{8>J&aAYZ|Zmw0@L7Dy{@XRFAg9C7dN-hyL|7< zr;i7meLrx%Yzr4Rx6hqUr*J(>=WyJ{yX;*#0lM&hb5qD@8UX;7%O|u>Th{lloB#p| ze?J--*S~*zEL`J23<1DOc*kuRH30zP*<6`J(P!QYF$9pRlVFZpUt7=81^i|MSvoKL z%r5we{U0nKOXv9h?NR-05{%wEJ~=A<%q|c?fa5llU?zB;56|i#XDGqSl`i78a z?KXb<{j;@wMQA`#96%>d{vb(WJWM74fUqCp`tpjsw+Ibz+y<7*r!^9EMAJy~2P=&@ zYqu2{9I$d}0Qlq2zn-_LW!Mjuv&zy1?nfgWpB$l9JH&WAX6N%)*$-xgtRd z*d{>rd*CJA&DZuNr^D86fwKO+t$x03unC~vJ@C@qq0a9A0c;=${SJg4CKJ^Z9o!8znxW(uqy|Ejr=v72 z?l&7MPtYes@?&!3Q^?$Y{pDwt3?d66`bZ40J~E@58)+T~B1U9%=w)?N%S|^o8xTi; zJ|}3x!(^h=-v$Zd2+(T@`7ya9iQ#!Z9wrkjLy~|X0!(v)s~co}PSBR%1QAZK?Dqm? zy+#g1Xh6}NV3NcL`ymE*gTfgEE<|VmP@EtU2{elYtfI@XAF3;n0}&cf20f!BqHOsB zF&dyFZ{M$(KiC!GG@xj{;5G9HyFe5H-5|jIXtXtDE}K7iE5r~$C)*8z()j{?or}tS zz?V-S52(c+&*q3{b5${>`GWjIU+1FobeK@p&*%RI0fv)$MEaF$00000NkvXXu0mjf DXh%CC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick1.png b/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick1.png new file mode 100644 index 0000000000000000000000000000000000000000..ac003cb33f26907a49c20ad70e0d77c156da8fef GIT binary patch literal 973 zcmV;;12X)HP)Px&he}yZP!xvWR7FC7#796v77+^>%+jGV9=mkuQZ;R*Z22#p`UkpI z>c`lnOGlVHbiqSdq96+i8lX*3B!+aL$MHw(OMEWAH7A)v@n29&KuIR*%Xy(8P3Fs)ww9o0Yq>--}iY^v@l>Zo`Hi_%l-4dF48$@ zF$93F?ihKLHQ60TkLs z({ShR-q#6{t_mqhkj67DaRpWqa(SVy8nyvvXJ?Vx^3UJceMNd2 zunjnR^%4iIR^+UZ>I7huFi%G#6iWru!}~Aq@=PaN|!wyNyPyA#;L(UC!`Jm zTJ`Zxbh@S)YH-jAsRr~1{ZP^iCPm$lJ_NQ|=W`~G7F8gS)d5)@kktWc93-m)vN|BE z1GKFJly`_69iQB^+if)VYd9T^aMWsIq-{5>aX7?9p(IgdwqKBf% zYlzjeq#jE<1L#t@m@j=*B@HFn4H?RNgo4nrd0H#R+8N;eEkGJKRkaxcbh6&x0?@ny zxXlN$yUMhPfM9Xt?+vznJqEJ7O0+PbQmtXVzK$%HciCg0%@By2AQ?>qUDNap30Y`k vfS0TeKvoB2bpVjn0a+c8)dBz6WgYMj58frbXZC%V00000NkvXXu0mjf&*jE) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick2.png b/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick2.png new file mode 100644 index 0000000000000000000000000000000000000000..afbb79696634b9d0c58437dc15f43c87557d8181 GIT binary patch literal 1241 zcmV;~1Sb25P)Px(lSxEDRCt`-TRm?gNf3QLEs|whVg_a;3t^EA0saq6c*!Lf`a^Q&U$xmvx3}RX zmt2Vd!xEST8I6!;V1~P0%MyVvV5{8>J&aAYZ|Zmw0@L7Dy{@XRFAg9C7dN-hyL|7< zr;i7meLrx%Yzr4Rx6hqUr*J(>=WyJ{yX;*#0lM&hb5qD@8UX;7%O|u>Th{lloB#p| ze?J--*S~*zEL`J23<1DOc*kuRH30zP*<6`J(P!QYF$9pRlVFZpUt7=81^i|MSvoKL z%r5we{U0nKOXv9h?NR-05{%wEJ~=A<%q|c?fa5llU?zB;56|i#XDGqSl`i78a z?KXb<{j;@wMQA`#96%>d{vb(WJWM74fUqCp`tpjsw+Ibz+y<7*r!^9EMAJy~2P=&@ zYqu2{9I$d}0Qlq2zn-_LW!Mjuv&zy1?nfgWpB$l9JH&WAX6N%)*$-xgtRd z*d{>rd*CJA&DZuNr^D86fwKO+t$x03unC~vJ@C@qq0a9A0c;=${SJg4CKJ^Z9o!8znxW(uqy|Ejr=v72 z?l&7MPtYes@?&!3Q^?$Y{pDwt3?d66`bZ40J~E@58)+T~B1U9%=w)?N%S|^o8xTi; zJ|}3x!(^h=-v$Zd2+(T@`7ya9iQ#!Z9wrkjLy~|X0!(v)s~co}PSBR%1QAZK?Dqm? zy+#g1Xh6}NV3NcL`ymE*gTfgEE<|VmP@EtU2{elYtfI@XAF3;n0}&cf20f!BqHOsB zF&dyFZ{M$(KiC!GG@xj{;5G9HyFe5H-5|jIXtXtDE}K7iE5r~$C)*8z()j{?or}tS zz?V-S52(c+&*q3{b5${>`GWjIU+1FobeK@p&*%RI0fv)$MEaF$00000NkvXXu0mjf DXh%CC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick3.png b/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick3.png new file mode 100644 index 0000000000000000000000000000000000000000..ac003cb33f26907a49c20ad70e0d77c156da8fef GIT binary patch literal 973 zcmV;;12X)HP)Px&he}yZP!xvWR7FC7#796v77+^>%+jGV9=mkuQZ;R*Z22#p`UkpI z>c`lnOGlVHbiqSdq96+i8lX*3B!+aL$MHw(OMEWAH7A)v@n29&KuIR*%Xy(8P3Fs)ww9o0Yq>--}iY^v@l>Zo`Hi_%l-4dF48$@ zF$93F?ihKLHQ60TkLs z({ShR-q#6{t_mqhkj67DaRpWqa(SVy8nyvvXJ?Vx^3UJceMNd2 zunjnR^%4iIR^+UZ>I7huFi%G#6iWru!}~Aq@=PaN|!wyNyPyA#;L(UC!`Jm zTJ`Zxbh@S)YH-jAsRr~1{ZP^iCPm$lJ_NQ|=W`~G7F8gS)d5)@kktWc93-m)vN|BE z1GKFJly`_69iQB^+if)VYd9T^aMWsIq-{5>aX7?9p(IgdwqKBf% zYlzjeq#jE<1L#t@m@j=*B@HFn4H?RNgo4nrd0H#R+8N;eEkGJKRkaxcbh6&x0?@ny zxXlN$yUMhPfM9Xt?+vznJqEJ7O0+PbQmtXVzK$%HciCg0%@By2AQ?>qUDNap30Y`k vfS0TeKvoB2bpVjn0a+c8)dBz6WgYMj58frbXZC%V00000NkvXXu0mjf&*jE) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick4.png b/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick4.png new file mode 100644 index 0000000000000000000000000000000000000000..45b294e9f25cc2a492d3624664adf567890326c7 GIT binary patch literal 999 zcmVPx&p-DtRRCt{2o4;?`KorNnsfrW<5;g%TLPRWNFiVHdVeHZ+W7!C&CG=X>wo-92`|%*pB5 zL#x$7eXokk!2pNtHY~dW0I1dK=$-e_*l$GFF8X}{z`HkZaWxv@`1PwDmG+-0e*diy z_%i^&bUFcm1%q^tx?0;Z&H$5Z4?t)Hy4yh5c>p+QHnq0*Ts{- z0eK#f=K=rOW*(rlmIi?DKYl(OG@JPR^~*}Vd(@4FZ{W{xIT)Z+E}~G_#c(*pw@)9H zzk>?eM*#V4;Lj58T6m{d-|ei?8U(vX-DtihKNjykQ7RW<*;SoQZ;Vz0P?ADM0KzRS z>O3VmX=!iPWD*43v6~p+xXHu-bjK&x-qMuEjaC<+B!&DQ2!kTU14?pCLaPCK=e?z% z7Y~Z2q1^@6$<*Aji$Y;ncheh@=K(rDEYAb-JYY3>9+2k&c^+VF9-zDyKRG>nPwyLx7(XLTn+}QuS?UpP&U9}yB+;c z)10`sFCx=9P@V-WyRtORiF^Apof~b_Aa#b0wBntU>0BrqpjN9#b3Fw-dL%7P=SDdO z^v-)LuZQ~r$$JAbJu9@V1;j!|5!w?-)49=NfW@=Ckm+;+%dWs3yQw-i+Ja!*pC9|2 z3oQnqeZYfeGx`&+%XCh(?FS?U!*z8olviTEeqSi924BADJnhw>?uw19VYNOG))%O} zU-kC_>=h!q%ibOfy8)6aOR|F906=)4B94Ts(P&}Tkm)M08-R||;=#1zIJoHdrMfCc z)Cr2)=$kxOfqevsHGuK!>*%Vm8$ebAxXl_tzyJeK9iiyY9miQ(IVR~J-mA6GZU7qE zjr~TncOYITWcsEU5d_JfX^TDX-!feV_7M=T9hh8usP9#mIw{jPh1~%0!xH+zL=rOn zv9KFJJXj&9prTYRCLXtut_r&WXlRRs6=ZiP6n3S$D(nUr4u^@_?9boS_saBj_y;Vg VDY^L@TQ2|r002ovPDHLkV1gwE&Da0{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick5.png b/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick5.png new file mode 100644 index 0000000000000000000000000000000000000000..72c3f5d722249ad4d0d370c008b2687cc8ab681b GIT binary patch literal 1075 zcmV-31kC%1P)Px&?MXyIRCt`_TR(5wP!Rv6DpHh0;$M-FMK&|Q(xEdRyL9QA zrAtTi9l{VcEDH$-g9IoNLpr$kcs39>aP~bpKM4iD7kJ#ycjvoz_f8;;PoKX$0zj#B zidi^C+qO}umH_~7-ZbF$U06*^jol6g0DzmTYm7V(A3wZ5IcEJ=NBw#REEg-3N~dVl zYiev3&H(^HFadxVAx_U>U0<9409dad)ceW(6hK4*-EANe9sn*|E!MSPvwquwST0t$ z8x8>gvv7)8IK}zJSuSgf6VSG8^?q_6316w!(5TnokNwQo7dL@QwXAHM{6M2#L#0|q zx6@JoNB&^sd93S;6F?vmbk!%j*PWu{{(>X?P|m^MUlK!eo`jPL=vfb`PGX%66z1B@U5*a*1qIx84K0NM3r ztEFE0xIWJfBYXg`-x=|9L#-^T+1% z$AVP@vT#yagN=a8Rtw*M{^0t$+`vKr2~Q4f;&i3&5s$;%;{X7v{%-acXJ{}70>56Jfyh5mh0Ht0t$m86gxCX4( t52{>Fi0>f|VzEHs;s5}tHNq@ofxl6)F=Io+$gThY002ovPDHLkV1ifU>Bay6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick6.png b/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick6.png new file mode 100644 index 0000000000000000000000000000000000000000..45b294e9f25cc2a492d3624664adf567890326c7 GIT binary patch literal 999 zcmVPx&p-DtRRCt{2o4;?`KorNnsfrW<5;g%TLPRWNFiVHdVeHZ+W7!C&CG=X>wo-92`|%*pB5 zL#x$7eXokk!2pNtHY~dW0I1dK=$-e_*l$GFF8X}{z`HkZaWxv@`1PwDmG+-0e*diy z_%i^&bUFcm1%q^tx?0;Z&H$5Z4?t)Hy4yh5c>p+QHnq0*Ts{- z0eK#f=K=rOW*(rlmIi?DKYl(OG@JPR^~*}Vd(@4FZ{W{xIT)Z+E}~G_#c(*pw@)9H zzk>?eM*#V4;Lj58T6m{d-|ei?8U(vX-DtihKNjykQ7RW<*;SoQZ;Vz0P?ADM0KzRS z>O3VmX=!iPWD*43v6~p+xXHu-bjK&x-qMuEjaC<+B!&DQ2!kTU14?pCLaPCK=e?z% z7Y~Z2q1^@6$<*Aji$Y;ncheh@=K(rDEYAb-JYY3>9+2k&c^+VF9-zDyKRG>nPwyLx7(XLTn+}QuS?UpP&U9}yB+;c z)10`sFCx=9P@V-WyRtORiF^Apof~b_Aa#b0wBntU>0BrqpjN9#b3Fw-dL%7P=SDdO z^v-)LuZQ~r$$JAbJu9@V1;j!|5!w?-)49=NfW@=Ckm+;+%dWs3yQw-i+Ja!*pC9|2 z3oQnqeZYfeGx`&+%XCh(?FS?U!*z8olviTEeqSi924BADJnhw>?uw19VYNOG))%O} zU-kC_>=h!q%ibOfy8)6aOR|F906=)4B94Ts(P&}Tkm)M08-R||;=#1zIJoHdrMfCc z)Cr2)=$kxOfqevsHGuK!>*%Vm8$ebAxXl_tzyJeK9iiyY9miQ(IVR~J-mA6GZU7qE zjr~TncOYITWcsEU5d_JfX^TDX-!feV_7M=T9hh8usP9#mIw{jPh1~%0!xH+zL=rOn zv9KFJJXj&9prTYRCLXtut_r&WXlRRs6=ZiP6n3S$D(nUr4u^@_?9boS_saBj_y;Vg VDY^L@TQ2|r002ovPDHLkV1gwE&Da0{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick7.png b/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/cobblebrick7.png new file mode 100644 index 0000000000000000000000000000000000000000..16827d09ac3117491e21e0ddbd16a94dbf0b1efc GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|c6+)whE&XX zdut=_p#UC+!1jk3mkhLcc~4JNjIrsw^L3h^y7{&L#}n?&f1hvs-)jExw0|2V|FLr| zU^QXAz%+{~gVC39OT#jTD2HGM-36KrVi(rry_Bp!pTF}jn}`E<1|EfYq!;FYHvU(C i@U8g*B!kh^pJh!q;i+>=zZ(qn27{-opUXO@geCwMH&+(` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/full.png b/Resources/Textures/Structures/Walls/cobblebrick_andesite.rsi/full.png new file mode 100644 index 0000000000000000000000000000000000000000..2ad3175d89cdd4742fc5e7f705372992a1b8c62f GIT binary patch literal 828 zcmV-C1H=4@P)Px%_DMuRR9J<@SIth_KoI_dh=h_z`C%=|4sba%|?+>1St42j%zb{3!F`- zio|NQ!XbAq;~0bC$axa<5gn&%%|8BR94it4o(RZP0(dIJVA$6_E{iR^;}ObY<6QF+ zKgU7k+~Dr^UK!2c+}7=NoNM;=n>eVPBlV#RLU<6uQ=8CfkzEK+vk!)SWqS^)1pe4} zHlPq5!bND=ucHV+^467BYpPJp8~Eo3U4{<7F2 zT!c;%Rk^E@ADElcjF!b#eOOmNvN!b%Cq(G>I!c(V6DW&nl)Al+swoGrEzgYXX0~~r zso<2HKlat%76CrPCIJd^GMQkVB)eKycCrcKX(VV3pE8a{9T*JzY6HT_WP)!$zH2sW z($611VVxva5H7){4jcloj8wlW<483n&n%b+IGIcU0P7?{xCouW&u24KG2B9QSOpy6 z;o*1fG09Z2azyGRC?F9D7oirAlF0K6gJEB5M2!GYuLIOSBa zAF{c8+|GZ-UALr09mw+x!8|~?2x~i9*9aYaDqgJvL?X{K)eq;hnf0UO^3|2*SsieZ zAokSJ=H~v`hfHN{NjMts1Atvu`kzYlQom_yybo|8GVOok=WA+p;A}d@GLEfL(KE3} z=_P*tCeR2F^RwynU7lkcls(Y!IDL-?DTjKTlHq?n&;J0FQ*2uXtLHiZ0000Px(L`g(JRCt`-TRm^9Fcdv~LPB5(!N3A*va#}e`rG<@y0SGZT^O)X9fX9GH?-H! zA*S@jevhl1r4c5z?(y~g&J&p6a5!A<`QGVtdUDw}aQU(?91e#|Q537|!!RI866@OO zbaL8zcLGe|!!W#AS4sf@=6Qw?!u$Ta6F?y0yRNgYpU-EU&u8!ZvLOKY6h283t0n-z zG)?+CtiAKMU_$_@ItiAh>D9WFQm?JOa}Rzw{|65khT%%RZGzFWIF47}xd$vXAW0I; z^SpY;vn@*vW^4j#K|7?eUEV*0RYG25p`WV@6AF3w&DQt{Q$H^ zq-pBK3pnM{0Py_$d`Z)ERV}Nk(#A?kiLUDq$1#E+!2A2Vb3X41XALk3&GCcr%TD2f1l-qkcsp_IBJgg_eb@$uohy)(SnfU2srYg(dhTV2SQrU}4j*h`=H zhBEvA{ciqw}oC&ZAM1fBn$JTZhm(vG45MUFA zEPN0ItHN@~1OX4}@Lp|gUtm!Y+7r%KpeTxO`}e?VfB(Wk3!Dj<=UM-?89ZBmf0`zI z%>?XDf-?aW{A~5_X+6(#gki|W6L@ulTmAcKn$UF}t60EGO%T}b-<#{4;LQtc_3wT4 z^L@jafGo>&`b!4SSMUCR!1)S%*Sj|hA|@WH9st1Fzn4;?X&NgD4_6QPZl;I8wI1Nj z2%5IQMBn!}HG_XK@OUr0T!AdhbYmpTvMZIRS|KO3H{pc<)OC&H z@dyA`;mfjQ-52oE7$E_hrnzZ`l3m~$2<@JZ(zJLOhB{9$Cq$NGa%5BLx`vbzFE1}n zGO#R&m?JU3^~g+BRr;NW9FsH4>b8~}%^9RcQ?pbg_VYHwo;!~YiSu0WC` z$nzXR2t9j1per$sqn9B`fDr+y_dTkrLen&> zGYGC=p#i{pfk_Mj|FR8^&2q6=7Pz!uDml8AaZBWPlIzkf1+a4*Px&NJ&INRCt{2TQSe7FcdxC3kmsXLU3@A)sfXje~iD)KjY%c=&B0?gjkG;$@d1| z?JFYS<5t?2a1w)XsMuqBd)i*VU>VEh@`qFYcszb_%6pu`Ca_p6P?jaaFl@c2i$5NZ ztmj)7;C{cWqY$FOODQ{fF02bsRh2r@`?mYK_@S^azOzy9JoCq_)5o;BYvY_#W0^BnBi&qJ|~_xL&WdsNKig1ltG1aSY&5DSGMG`*_&^I;+Qc6@+g&+u8x4Ve94YmN(v}+&gdFt55+Xnj^oX_W0?sBOg`WbKIsE~0}OsEHXsH7RR91007*qoM6N<$f*vfVI{*Lx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick2.png b/Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick2.png new file mode 100644 index 0000000000000000000000000000000000000000..be4cb50141bfd9aaa715480993b7ce3c83c5cd33 GIT binary patch literal 1162 zcmV;51aPx(L`g(JRCt`-TRm^9Fcdv~LPB5(!N3A*va#}e`rG<@y0SGZT^O)X9fX9GH?-H! zA*S@jevhl1r4c5z?(y~g&J&p6a5!A<`QGVtdUDw}aQU(?91e#|Q537|!!RI866@OO zbaL8zcLGe|!!W#AS4sf@=6Qw?!u$Ta6F?y0yRNgYpU-EU&u8!ZvLOKY6h283t0n-z zG)?+CtiAKMU_$_@ItiAh>D9WFQm?JOa}Rzw{|65khT%%RZGzFWIF47}xd$vXAW0I; z^SpY;vn@*vW^4j#K|7?eUEV*0RYG25p`WV@6AF3w&DQt{Q$H^ zq-pBK3pnM{0Py_$d`Z)ERV}Nk(#A?kiLUDq$1#E+!2A2Vb3X41XALk3&GCcr%TD2f1l-qkcsp_IBJgg_eb@$uohy)(SnfU2srYg(dhTV2SQrU}4j*h`=H zhBEvA{ciqw}oC&ZAM1fBn$JTZhm(vG45MUFA zEPN0ItHN@~1OX4}@Lp|gUtm!Y+7r%KpeTxO`}e?VfB(Wk3!Dj<=UM-?89ZBmf0`zI z%>?XDf-?aW{A~5_X+6(#gki|W6L@ulTmAcKn$UF}t60EGO%T}b-<#{4;LQtc_3wT4 z^L@jafGo>&`b!4SSMUCR!1)S%*Sj|hA|@WH9st1Fzn4;?X&NgD4_6QPZl;I8wI1Nj z2%5IQMBn!}HG_XK@OUr0T!AdhbYmpTvMZIRS|KO3H{pc<)OC&H z@dyA`;mfjQ-52oE7$E_hrnzZ`l3m~$2<@JZ(zJLOhB{9$Cq$NGa%5BLx`vbzFE1}n zGO#R&m?JU3^~g+BRr;NW9FsH4>b8~}%^9RcQ?pbg_VYHwo;!~YiSu0WC` z$nzXR2t9j1per$sqn9B`fDr+y_dTkrLen&> zGYGC=p#i{pfk_Mj|FR8^&2q6=7Pz!uDml8AaZBWPlIzkf1+a4*Px&NJ&INRCt{2TQSe7FcdxC3kmsXLU3@A)sfXje~iD)KjY%c=&B0?gjkG;$@d1| z?JFYS<5t?2a1w)XsMuqBd)i*VU>VEh@`qFYcszb_%6pu`Ca_p6P?jaaFl@c2i$5NZ ztmj)7;C{cWqY$FOODQ{fF02bsRh2r@`?mYK_@S^azOzy9JoCq_)5o;BYvY_#W0^BnBi&qJ|~_xL&WdsNKig1ltG1aSY&5DSGMG`*_&^I;+Qc6@+g&+u8x4Ve94YmN(v}+&gdFt55+Xnj^oX_W0?sBOg`WbKIsE~0}OsEHXsH7RR91007*qoM6N<$f*vfVI{*Lx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick4.png b/Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick4.png new file mode 100644 index 0000000000000000000000000000000000000000..fb90090c088b2adc987213b222756f332108b69b GIT binary patch literal 935 zcmV;Y16cftP)Px&VM#i z{{9XC*lxE_N@2I#y>Qz9!@U28pp*gte0+QWKu?geEWNgsc>OjHbX|uuO`(*6*4mse ziUI(zSS-A@7o7l2(*OXnEPG0O(Fu^}Inp!*fZhmr6w$;0>MV6$N{RJ)ZR`{e+P3xD zZWIDEO@s6KY>w@q2lRttRaIWwj=}}4{*YwSJg8L?HkG2q8uV_^uA{MHDVD zWUd3|I$*8?0L*p3TnEf`z&{>Y2e6){0pRWJ?JA|j;c)oYUY4a9zDg<7b&V{`kR%CC zrxT9HBl{jWcpm}ex5G4MGxke|z-tUB%hLEQ`LX@$6Iqra&vTzm-;GxRs7N6ZfLrNG zo$tC1z^$~6g{K5Tt#wqx-sUL+2q7SZK-YDq(u)PJEwswM0QR%^X0y3+uK)G( z0jt#tP18)KwJH1Yc;wy!3$_54%f-BZm)@ut8ncInEdZsr^Z7iP>Rk3vumxBym*z92 zIeTv3#$^uyTL6mgN-5JRdv2d_*+bzi4N_-lNo&|Smpv400g9q9xt;+4b2Hm*+b(+fZWet~|L-1WPx&xk*GpRCt`_TQQESFc5wFg=7&+$P`puftF@3vuE4Oq}i4$P;G&Q1PBRff3X^W zLrC}uV{9c)iW2N3W*(mLjA#4?&v<`-{{es~iqN(#vMhsA3ILF%DXOZ1l+v`-bqxS0 z%Mw~^e13ku?HT{iuDfSI-}i{32to+crnLqDG))5lGeU}@U>!eV{kI1(O_L#D97hNt zptVNVb>=&1ngRggIA$F?2m<=PN8k4VfVOP`0H@RGkg>fJkY$n0ZJ*O>c2q>kH=ehYF*@IyiSjYEH0D(xbr#|VuZ4|4jVjb7J3XqUZ)0ipW zb)6xEu3f2vcLJ_G(Ymh9n!n};aKSqPz+6BZv=rKY069lo2!a4xKtj_rP)eDp@5&Dd z#t7QNuU)%B5Co83$8l_4cDvorjUZG2xNZ#B`Y90NfOi7Qvb_5@T*3nZ5Wp$SBiI#7 z1Hi|}$IqVM?~Uj8f^`P0t>vMEjR2(-zP`S={_Zfa5J19{K^ul)X0?l=m@Q$;exG3X z11MajP?p|@VK6Vd-8T+#geaE3cI^|aMv$JaEuhvKN~sH>eJ_6mRsyQ3GE<_F|?ev$Y9ezUiC=Q50dCChppm4UUTz+|M~*&@#rH<;Zv2!JW^BeR7Fz2cKyJzpK1{} zNbp`KxK%%}?B|Ae0)XxM0sESp1n(-aRX?!of4XY%t@;7i^#$Gu*s346c5aXh-faL) zZQ41u>jz%u+#u;Y9ip_$YY0z!ZjgkfoWaYT8(bzy?3}?%oEuD%1X-4u1C(~o;3dut tPSb>O9A{5^xrg}F=LUi8vKg1Yz+cM1I$}Hjz3c!0002ovPDHLkV1j)R-&6nq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick6.png b/Resources/Textures/Structures/Walls/cobblebrick_asteroid.rsi/cobblebrick6.png new file mode 100644 index 0000000000000000000000000000000000000000..fb90090c088b2adc987213b222756f332108b69b GIT binary patch literal 935 zcmV;Y16cftP)Px&VM#i z{{9XC*lxE_N@2I#y>Qz9!@U28pp*gte0+QWKu?geEWNgsc>OjHbX|uuO`(*6*4mse ziUI(zSS-A@7o7l2(*OXnEPG0O(Fu^}Inp!*fZhmr6w$;0>MV6$N{RJ)ZR`{e+P3xD zZWIDEO@s6KY>w@q2lRttRaIWwj=}}4{*YwSJg8L?HkG2q8uV_^uA{MHDVD zWUd3|I$*8?0L*p3TnEf`z&{>Y2e6){0pRWJ?JA|j;c)oYUY4a9zDg<7b&V{`kR%CC zrxT9HBl{jWcpm}ex5G4MGxke|z-tUB%hLEQ`LX@$6Iqra&vTzm-;GxRs7N6ZfLrNG zo$tC1z^$~6g{K5Tt#wqx-sUL+2q7SZK-YDq(u)PJEwswM0QR%^X0y3+uK)G( z0jt#tP18)KwJH1Yc;wy!3$_54%f-BZm)@ut8ncInEdZsr^Z7iP>Rk3vumxBym*z92 zIeTv3#$^uyTL6mgN-5JRdv2d_*+bzi4N_-lNo&|Smpv400g9q9xt;+4b2Hm*+b(+fZWet~|L-1WVbmKq#A`aXcTnkuD zST8WmV#;9jW!%!Rj3LS)m_c_zzopr09QpPx%)=5M`R9J<@SG#WGFc2IE1O$nIAQoz@HtE#n|34rtJF8V16(kJPf&c-&;=CJ@ zA{{#p?zT#HmfZJP+~F#(udf&ULm7r)2LOVc@Avzx@$q;>UDv;jUxs1W3Ez296r01& zIRL=Au8>mx3cf50u0Ah<49WR4P01|I=QGadb2iI+@wRPI6a|)L0dQ>r$uv!<>pEEp zik!-svbhJJrU`A^vW^3wQqjStX@bMnTE001DROa`Eog4TMYAIA~nI3_P8tnd3| z5Y9OWA;JKBvDR`HT5CutlO?p)!a0}3t+mivCxh@4eTgrn^|03R!Ce1He`{v^fJmyU zVq)4<;CMW;5%tuUxbLw(&ej;i&M7%5Wts;71UnoDKu*fC#5~VD14=2@#luH7xdFe) z15MLx2CXbhe0+QaIvUdV_jk)Fm`lpn_IF3A&er9iPZ)|6+#o=&B zI`6uUZBj&Z7Z1?x179U=nudEzfoQD*hm?ddCa~WG0OWaqFmjUHeUk5RO6V>gh}Tdl z#oRzPWDg+NdE$ta_=#=;Se6AvQDiSD%Mt)^I2^JVmE1WO1VmC*6@(BtolduTASLrW z^R(0S_kGW67|S@0!G{R&01w1#XpDhU3iCX3W;ArSEdK^SAW9bMOLew0#Jt~KBC zKq?4|o+diJTuKS&T(%{?-25H@wtc1l>ENSyth@O=;1f}-e+Kt$vOLhXZT4Y860gyt zxc?>y0-(s-wq@d|sw(^3dIqQL0YF?|sh9nJ|5X;6P$2?iKJ+9G0H2?q7=~fDBgOxE ap8o;J>Ue6VbP)Ie0000Px(uSrBfRCt`-ThD77M-={2B=%sWwXu*AA7q?{3S?A+YXSw+gCQXVa?BzBNa(4D zoJ#+Z9C8el(iTyIA&@E#ijhIViIESsBvvH5OAd$|?CFA?=zWu~`{`H%;S2)k7I1ih``i;`eHto(i0^fs`$>M6^T6q2So42gK zMGyc0_G)fsn>K)}g==%QofqF2dlLig&N+E$u;rwpVjVrLC|n7p(bX0y-aH zWwHo-Z{nH?x}O*yKwq{|uMN$-T$%bz^XPDbq|bo}0-{jOJPxID1}(cir!7?f`UCgw zKfuQi@6qWxXw+-i+}gpQAB56%dv_0megL=Upmp42Yk4l%7GP&bqD1GM3i+XFm&z5R z0>%{BKH%)MwNQKd`Z|w)8DJCe^2PJ;+;v?%ee!r}d-C!oc5)`bCg7*rcPFlq4>;Jb zPTVV%D?GRaH7g*J$1+k^qvfr5Qm?3VTZfTZU3tJ1%TZ zi1P!NErr<@K-xZ)wnA@D5gi>=e;~mzvI!XUgYYkzIYo8jkSHCX&TaatZSG4i5NrZk z$IXdr6x#k8ATA(s(O_Eu<@V$9_bOV)&9VDB>$zyK2~eHg%>4avGrTWF7qAJS<&Koz ztl*}};sz676F{3CLNwqJ6-cBPq<~ETrLv-+?XPO`5|>BzDnP0)dQcFQri8tk6QTT~ zFyaGriOWvcLEw8v>Uh2+j08l~yd5ot^tCA_AQfx^Hn(=d^G3af?cF^9!;qMBb|QN4 zfB^zj^KV4{_x;|O1z4G^xabg@fN0KsX?bO8q&RVTfu~O%$L8yGgG^jrVDHwQ@LbIj z0bfU6fUN`8itAHz_0hb5Bozpl2#9#zScW(X${UcmOOwJPYK7HOS;{A>(??e#vsPS( z>v{O)=ZCB@hzf|1WzhaY)fhTVv%GmBqDF|2N?Q|kf{mEAi`FH?_G#oTOw3y+2n=fw zXth!6g+3P|2$)qT7=>Dskcd**S#^R0Qkc_}=AsZmfLbT0nmlc(Pv4!4wKuuJ50raJ}clTn0E{X5~aTxT2a0{(7dlQOMln?@j4$(UgGC^Q05wh+mpA+p^#>xh f!<^^2HAepd?N6J+SYGP100000NkvXXu0mjf*8g0{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick1.png b/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick1.png new file mode 100644 index 0000000000000000000000000000000000000000..30b7e9a1d4a90c8910ccdb43b55fa31db959d021 GIT binary patch literal 1112 zcmV-e1gHCnP)Px(5=lfsRCt{2n@dX@Q547jmV{Y^yf9>ZK*R?IB2j7`$ijt45kEjbK{x#drK>Kw zD*Z&Ih`8uNNUf+SC^cdhnuLUCf{P&myRc`RXM~(P-m%FKg4a1SncOqyo_p@OXGS2I z#rfHL&h>|9=Odi!L!666Fg2G2092~i(AzC2(HO?mamRUH^24)p*8Qa`AU>Kh+7$p} z>bT{YnWyCa@JiS>^+_nKAQV=NPQ^!42!$1k%uP-oF0An*g2nmSdnFok9M{_|quopX z;(dS;jUk)MJC2{892sN2mz<0AA&|}GEhbH$Y%XtfzL%VfbPEWD6{u;aQ>)hM7J0Q+ zx12|EF4BE~_U5%E4j{Al!Y(iF?Z0dvu&}gZw9BOn06;W4ip%ZDW~JIVdn((b_=H` zN9cBR$A=P^z2vfChoQ8!)o*H>o7U#S9sqeWNDrIub$3tPoRnFbo;=)#dc^uz1 z>c(ID_Eoo|_msxeSE)fPQ)LKH%N^4~WNNxGGZxt{cPQ^3SP=KCtk8YfMe2gl=Vt=GpfK>FHOh*Ux=xSA^#T$^2;-#|{NQ zB6fB~AY1{IAZfQ7uAR*0@(&h(U?@Sj0S`Gz$b_ z0c6HEA3#vPfXtmj;-DaW7KkL0P}3=+lM72Lft>;YAE!ZD>7}x6P>HO$hR`phm&n*L*9WWV6pry&AnC`ZY9JIqL6KXgn0!aM1kW4;hd?NR zGR1Dup%RT5rLk%{CA=Ub5I%t31G2vtKoKN$UQ~6cnLsFj-UG6~0wby(xEFy?fEn{< zDp`P^`GY|C06U}vf~rjXm<0l50raHZ;sC#VK%guj6jp|DfSq9+FvxKLF|cvKa}Wpx em~o2({NykCgmHl3(@y>X0000Px(uSrBfRCt`-ThD77M-={2B=%sWwXu*AA7q?{3S?A+YXSw+gCQXVa?BzBNa(4D zoJ#+Z9C8el(iTyIA&@E#ijhIViIESsBvvH5OAd$|?CFA?=zWu~`{`H%;S2)k7I1ih``i;`eHto(i0^fs`$>M6^T6q2So42gK zMGyc0_G)fsn>K)}g==%QofqF2dlLig&N+E$u;rwpVjVrLC|n7p(bX0y-aH zWwHo-Z{nH?x}O*yKwq{|uMN$-T$%bz^XPDbq|bo}0-{jOJPxID1}(cir!7?f`UCgw zKfuQi@6qWxXw+-i+}gpQAB56%dv_0megL=Upmp42Yk4l%7GP&bqD1GM3i+XFm&z5R z0>%{BKH%)MwNQKd`Z|w)8DJCe^2PJ;+;v?%ee!r}d-C!oc5)`bCg7*rcPFlq4>;Jb zPTVV%D?GRaH7g*J$1+k^qvfr5Qm?3VTZfTZU3tJ1%TZ zi1P!NErr<@K-xZ)wnA@D5gi>=e;~mzvI!XUgYYkzIYo8jkSHCX&TaatZSG4i5NrZk z$IXdr6x#k8ATA(s(O_Eu<@V$9_bOV)&9VDB>$zyK2~eHg%>4avGrTWF7qAJS<&Koz ztl*}};sz676F{3CLNwqJ6-cBPq<~ETrLv-+?XPO`5|>BzDnP0)dQcFQri8tk6QTT~ zFyaGriOWvcLEw8v>Uh2+j08l~yd5ot^tCA_AQfx^Hn(=d^G3af?cF^9!;qMBb|QN4 zfB^zj^KV4{_x;|O1z4G^xabg@fN0KsX?bO8q&RVTfu~O%$L8yGgG^jrVDHwQ@LbIj z0bfU6fUN`8itAHz_0hb5Bozpl2#9#zScW(X${UcmOOwJPYK7HOS;{A>(??e#vsPS( z>v{O)=ZCB@hzf|1WzhaY)fhTVv%GmBqDF|2N?Q|kf{mEAi`FH?_G#oTOw3y+2n=fw zXth!6g+3P|2$)qT7=>Dskcd**S#^R0Qkc_}=AsZmfLbT0nmlc(Pv4!4wKuuJ50raJ}clTn0E{X5~aTxT2a0{(7dlQOMln?@j4$(UgGC^Q05wh+mpA+p^#>xh f!<^^2HAepd?N6J+SYGP100000NkvXXu0mjf*8g0{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick3.png b/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick3.png new file mode 100644 index 0000000000000000000000000000000000000000..30b7e9a1d4a90c8910ccdb43b55fa31db959d021 GIT binary patch literal 1112 zcmV-e1gHCnP)Px(5=lfsRCt{2n@dX@Q547jmV{Y^yf9>ZK*R?IB2j7`$ijt45kEjbK{x#drK>Kw zD*Z&Ih`8uNNUf+SC^cdhnuLUCf{P&myRc`RXM~(P-m%FKg4a1SncOqyo_p@OXGS2I z#rfHL&h>|9=Odi!L!666Fg2G2092~i(AzC2(HO?mamRUH^24)p*8Qa`AU>Kh+7$p} z>bT{YnWyCa@JiS>^+_nKAQV=NPQ^!42!$1k%uP-oF0An*g2nmSdnFok9M{_|quopX z;(dS;jUk)MJC2{892sN2mz<0AA&|}GEhbH$Y%XtfzL%VfbPEWD6{u;aQ>)hM7J0Q+ zx12|EF4BE~_U5%E4j{Al!Y(iF?Z0dvu&}gZw9BOn06;W4ip%ZDW~JIVdn((b_=H` zN9cBR$A=P^z2vfChoQ8!)o*H>o7U#S9sqeWNDrIub$3tPoRnFbo;=)#dc^uz1 z>c(ID_Eoo|_msxeSE)fPQ)LKH%N^4~WNNxGGZxt{cPQ^3SP=KCtk8YfMe2gl=Vt=GpfK>FHOh*Ux=xSA^#T$^2;-#|{NQ zB6fB~AY1{IAZfQ7uAR*0@(&h(U?@Sj0S`Gz$b_ z0c6HEA3#vPfXtmj;-DaW7KkL0P}3=+lM72Lft>;YAE!ZD>7}x6P>HO$hR`phm&n*L*9WWV6pry&AnC`ZY9JIqL6KXgn0!aM1kW4;hd?NR zGR1Dup%RT5rLk%{CA=Ub5I%t31G2vtKoKN$UQ~6cnLsFj-UG6~0wby(xEFy?fEn{< zDp`P^`GY|C06U}vf~rjXm<0l50raHZ;sC#VK%guj6jp|DfSq9+FvxKLF|cvKa}Wpx em~o2({NykCgmHl3(@y>X0000Px(5lKWrRCt{2ThB`yK@|Qh33~{M35KjcKxq{Nh8SwIkb?)2BK}3CryhDL{fkNw z@z8@1twf2S)JSr$CM2j?JS+BM^+m`PsXf zxhzJ<(uhPA{QR*A08ruy^PXIx2sM*NESbXAx9`wO8YZV_aMkVN)5i}Zoc3Swx*rad zcmmmlJaUC%=xs$pZ{d-k!AGJB)Jz&x0FBxy06-0)Jt+t{Z~g`VjE<%6*$ll40BF=K zB7%ez1Q>c3=dg&dLy0F4kB?#c&1MsPdu%+<4Ie!>j`cL#qRx0#XoQhnEfr6Rf>70DS)P^=>qg zz*(b?@^%?3>ub2ayg;+nMzykoT%m~D8v{p&2Qc(5mX=p>dt>0L(?OK2K;*Uay^;b-4JKH+wO1vUZpRQ5Tn{GJ#3*+qaY zgd$PJ5!vm@O|p5}=@N}VVt|*#wFkY2?9V<1P$|m|TK4+cMT0#BsE+5pX!Fz0E*fkP zpdzLlr2om@Y_%QtJw?v{U%;M!+Pk+79YAjH2e-YvyZ5|ffW3xKJ3uOC0=?}oMSCxM zd3TT71s2!@xZS@|vx=F`RvS}OQ@(Z?z$U<6u~pG~%T&o#``Bdwd;YDiyl3qNHn%pO zcMQ-<8teJZtqpD$SYQ({IXx3ZKZJozz*Segn&Uv|`~!OD3pmene=i{Xkkn{GtQ;0j zz*(a%w0+?O1byu7u@Fwc%K93BUO}b2U4~ZD93tuZ@&d7B%Gb_aMuih_eR%=E+8w$N zMbrO&b}obyKm%*kPNC}^M?r-)QdDYl+k=2`0;p~PSZT6qrQ>;TKl>mMP5@y2E|5UU z6Z=_1zoZLyJ1qqPUZ+B-q~>R*@3|0uRMvhp)_qap^dUPJ!lf{k)&@g$*$0Ji0%%ZxRX{!WxwoHv5J(dP d1_d_;`~hOXb$$5kZqWb$002ovPDHLkV1g+d0UZDU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick5.png b/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick5.png new file mode 100644 index 0000000000000000000000000000000000000000..a19dd1274ee0ed2a61339c0aae1ad600abd77a46 GIT binary patch literal 1160 zcmV;31b6$1P)Px(LP7Q!^zH(!u(hS7S-!r;;^4 zIi=Zh=-T4rCjfv{T0`|{U#NWL3eaVNPU|%QfFVG>as>dr&H{kz z*rD(2ZU+Pa>NTbauClp5aX>12JHGi20HkdpSDc2~vY?GmK-YELz4rh{A&-O4yIkcf zR{)*w6wkOktkQd{L%`0e_F4B0LIVcPx-`B=1V?%YL5d?(o?Bqytzhuu%fVL}O^8Ie0%&B1D#1H7WQ4rp z5FQishPT?yKX4tJy+(oLBOu@ipOZ6~Ez1|fPo*^!jY%}k2AXDrUAMc}*arxP`xKzg z5FrG1w*#Y)huN~A=kjQp4WB)59UGM&zj!xcAcQzVX3GLD<9i{2X>DYNKOjH>89mD! z9dfh}vt_Xkdxtz}TYY{lAK|M2^#%IP_miK;qQ%F;-4zZpzqG|Z9pV4zb`reABPY>pkG)Vh|mA4K$stp^d4DoRlqR0{+pi|xkPoI ze^|IEfRKP&8?{9inCBlBrMY<^qP}1N1>X4c0!eBMLL+Yolq+D^x&mG{N4WxqSrU0x zmMK@jvllM`MAr{^q4)4axdLb{!FB2fM0k(N6+k;4S3e+X@1R@(-Wr0a`hnoClEGmS zSFQly>RcdjH6myvNi-vIWX5%Dm@O;R`SRR?aM{X70F4gQj1fIFPx(5lKWrRCt{2ThB`yK@|Qh33~{M35KjcKxq{Nh8SwIkb?)2BK}3CryhDL{fkNw z@z8@1twf2S)JSr$CM2j?JS+BM^+m`PsXf zxhzJ<(uhPA{QR*A08ruy^PXIx2sM*NESbXAx9`wO8YZV_aMkVN)5i}Zoc3Swx*rad zcmmmlJaUC%=xs$pZ{d-k!AGJB)Jz&x0FBxy06-0)Jt+t{Z~g`VjE<%6*$ll40BF=K zB7%ez1Q>c3=dg&dLy0F4kB?#c&1MsPdu%+<4Ie!>j`cL#qRx0#XoQhnEfr6Rf>70DS)P^=>qg zz*(b?@^%?3>ub2ayg;+nMzykoT%m~D8v{p&2Qc(5mX=p>dt>0L(?OK2K;*Uay^;b-4JKH+wO1vUZpRQ5Tn{GJ#3*+qaY zgd$PJ5!vm@O|p5}=@N}VVt|*#wFkY2?9V<1P$|m|TK4+cMT0#BsE+5pX!Fz0E*fkP zpdzLlr2om@Y_%QtJw?v{U%;M!+Pk+79YAjH2e-YvyZ5|ffW3xKJ3uOC0=?}oMSCxM zd3TT71s2!@xZS@|vx=F`RvS}OQ@(Z?z$U<6u~pG~%T&o#``Bdwd;YDiyl3qNHn%pO zcMQ-<8teJZtqpD$SYQ({IXx3ZKZJozz*Segn&Uv|`~!OD3pmene=i{Xkkn{GtQ;0j zz*(a%w0+?O1byu7u@Fwc%K93BUO}b2U4~ZD93tuZ@&d7B%Gb_aMuih_eR%=E+8w$N zMbrO&b}obyKm%*kPNC}^M?r-)QdDYl+k=2`0;p~PSZT6qrQ>;TKl>mMP5@y2E|5UU z6Z=_1zoZLyJ1qqPUZ+B-q~>R*@3|0uRMvhp)_qap^dUPJ!lf{k)&@g$*$0Ji0%%ZxRX{!WxwoHv5J(dP d1_d_;`~hOXb$$5kZqWb$002ovPDHLkV1g+d0UZDU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick7.png b/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/cobblebrick7.png new file mode 100644 index 0000000000000000000000000000000000000000..52451993f5df416fa073a4ab8b3e3cedf0f66050 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|c6z!vhE&XX zd&`jPZ~)JNfaUFaGp$Or_LdZL@bgP$nsYon`lp`f+25c4%s#LGT$%Gse)hxq1q@LR z!3??!G#kV&h&XU(a4ldpVZFdKiz$Qg?5k<>K7Ri*?RLHc1mX`WuX8-uV h_?Xco{D44$rjF6*2UngF|2SXlr7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/full.png b/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/full.png new file mode 100644 index 0000000000000000000000000000000000000000..2f32cf44bb17113a067c30c8835c03aac5860a61 GIT binary patch literal 884 zcmV-)1B?8LP)Px&E=fc|R9J<@SI)Xvr z!$EwHJWJuY9+tzEf93(8-|a|zzuPGU0DxZ)szm@;4p*$URXn;K&a+VhU>boze9uMH z<{jf$zaC%^-*cPEIG1cy-Ud}%4FK{iML$b{ZU+G1xE}H>l?)x%0|0ccuRvo|&curx z04`nt-%_B40*x$`of=JM--7F8Yr z6>OC7fng&+JWLQaX%S6rRK&vsd6t&egHZt0gEQS$1j;3aoe;HKh?MbS4bcK- z7C_D@w3ip>2v#?+wz*Nd5)yNCdIkWvz3Cyj>y((HSX{!>wyQgp7bFd65@3TBMGd{0xbR1dR=sNLeu z0ceXfZbK4bf-T>wIKtlHi4*}9QUoYGv=#RbPpr-W!1p}(-bTyg1jmSM>pL zV)3&Iuj&J0$mvMEz3EAlR2?utaTw)Us`UX)P}wAOuq1aqWZ8%xwNblev=@(Ra&~!f zZoJ~nB!E_Wbb4mJbVThIZ`CSCC!t#TGYgoEbAE)H!cKj|#*4Qmx;3lNTCwALV51k+ zVry0(%BzhRA9@c^F?X=D^(@|sDQ5)R^;+aiyy;qBS%ef)TMMRDQ>PUFr~AH%SLdL5 z;C+BVVN#Dwm8V;?X<{2MLhA!Gh>FCPFH&uK!I*_NVeYM8&;J4$)nD#a$d%Us0000< KMNUMnLSTaDnUJ>t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/meta.json b/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/meta.json new file mode 100644 index 00000000000000..c5029fedebae1b --- /dev/null +++ b/Resources/Textures/Structures/Walls/cobblebrick_basalt.rsi/meta.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by TheShuEd for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "cobblebrick0", + "directions": 4 + }, + { + "name": "cobblebrick1", + "directions": 4 + }, + { + "name": "cobblebrick2", + "directions": 4 + }, + { + "name": "cobblebrick3", + "directions": 4 + }, + { + "name": "cobblebrick4", + "directions": 4 + }, + { + "name": "cobblebrick5", + "directions": 4 + }, + { + "name": "cobblebrick6", + "directions": 4 + }, + { + "name": "cobblebrick7", + "directions": 4 + } + ] + } + \ No newline at end of file diff --git a/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick0.png b/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick0.png new file mode 100644 index 0000000000000000000000000000000000000000..1564e62a88450636acb96515960bc0f7a3c2048c GIT binary patch literal 1472 zcmV;x1wZPx)dPzhe!z|3k%(Q)Hts*U?UnLDJ`^WWjl?96b3HDmv$U+x^d zdiwIR&z~GU*)W;EZ1QjsIC%B+Wqo54fNI5KIt!I7Ivb$NfEBqZ)=q#x6x0 z5V;Aguz=|-Oqu#ga7d%TM-AfmIfuuP#8N?9wQ^wCe5Db))P8sBsfm zMF6al;5aq>nwPqEoLXV?S@8-)X9H%lF@i33Vm$Em@5OfU&K*2Ya?1p$z_La_kZ1a%CfK8>==FzPdm`gGr!Z-8JC z0g$-6>>dE{qJN;rSiw)w}s4Y zeHcFEDiAE_dlOO;+EP@ljrYW(|vcye&;^NK6 z(b>TGJa3B6W&xtS4*gJL3yk*wF;7{2fxhxOnkAo*A=QdUG&N6Xn8KKVw$lVq$`68` z3Rqz2zOqEv0%HR7RUZUND0?~|)2g?*+uq|v|A0820Hk(#J+-w?7!!~UNoB?Fw)b-H z&x`cd31b5GJNJR*rZ0)X+ZDADh^mT3bTMXo}`q`Q~pZE0rJjg-JG~VNGCWX z4zLBr1Z?}egi%k0xp^sUT`sUC5HfxRrt_sg&r@FH*_^*EFt&if2DN}lre!Z0Tc9eSh2EweCD%On{#9%GUF;*J0Enq-Rw=z?cA4tN(Bq%GU1X zL?~(T={zJ@43YrJ0vHqE*F1trsPX{&Uw^A)$K$sIkUADu%ih(>2S_GJR$fn#WM#I! z|4@JhNc9#_>F~$hBuDVSs0&EN7M3*u;ESmX7{3DduHRO*da2z@U7&MgH?=A1F@h~| zfH496ctk%Qt&nhDRrkszL{#eAO{_sGMY{5iQ={e7u6AAEA`GKGUVRJ4saaJQSnE*~ zVEdaN&HzdqRW@t4sFpoWfr>S}qOkjlte5_Bfn+d1} zL61#;E7g}^0xJl}LtdYtTo=_Q3ziU&*C*Jjw==<1(rqHONRf4qem9!isyzUfkzyQA zlFo2#0~D8-C%Y`HumJg9z`0gReFqfB69V9c)@~^s>J6eNiXU@ aFu^~;6YJ%_yEOO!0000Px&x=BPqRCt{2o6Sz!Koo^fh@CjGjR^rNm58Wi(@p6Hl|De7b}+W*(+||C2oHd+XfRz1bxFl&Y@?-bU|Zef`k8&6sQ)15 zFT4@lRyUz58h^5;YvIg3f3Qx4Ye;?I* zU0VLa1F*NYOS=Aun7{A<41yb>`3ny~nhn}x5Z()jhTIE$c=w4kojNRu7wlVO4LP@niXbK zSJ5;Z$1l=FLk<9Yr=txUPmk?nT`=STZ0T)S&IPvg*|pPK&IJI#n|N7e`_DYttnknoK&x#)mKFH0bI}C?83%w( zc!Y<(RY`+hdBL~8iKg%YS^aV00}3Bd_<+I(FbW@l{Q3alyTsV{0_9Q_>&i=1B@KPE z1Ebai0K93w0swsJeM76!#@^a42Eh&Y7}Wg*!neo(ci#*Ifr}t;dEuXeTm%4^`2x0e zzHfF=msH+^WVwWvs~sY7PBG3=rb#YpK-d+omUX^8J_ua&B8Dn$a#aJujK((KA|JQ3 zmKM1P0CR<5lf()x%L-ps&w^Y8AWYOLE^?GhPP)Px)e@R3^RCt`_o6T<9Mi9q;jzoQtloHE!i&&^&1O`%|NH0mDVM9((M^Y@2G9^)hdSG_7q}FlcWvY$)Kbag->-q2O&g{%^gEiyer(gFE zUp;+!)%Q=2pKO?nUo?3+4;;RF`m(yQ2|&5zF`0%^7A^XyGGIk+inS9UAQV&;Eo_wK zb@n+SH-!}h2&KGIgL=US;LZFH&uLIDCNgm!U^ow89^*L;-Wra5!|?rFA(R}>1AvQ_ z{{SI3ffW`onT9D-KMjtk6(qD!ONOkLNCE`Ypm z0;>psRT3Phf?x4c*N#)kZ9FTMK(y#HosRHIjnsXi{I0uAKj?Bk8`1K&*mbw%Gk+P5 zZ3O|s*N0ITK$5?3fJKx~3422qb%(Pa?z7(_if@69(r zu!sOi++B7L0C>?mlz-QXE}QVVJ_oXL4XK^hVwv1eL`^nzv3~7dcacolhM0e z#||@^wtSu0uEaDf#s$*hEK?RbTKA(+JF+di6=_?rrtQ)ymKpc-#%IcKAmT`bs^I111+#sYA z93l>|1;zyI_-(?dE5lq}3R{&6*b)dCFM-Ky>Cbh_3wbu@Zwrhqpg(>?2^XdVt!W3- zzbWDJChDZ_Uzy;V_m?{)HPmk&4%jH=#$ ziURC>^TPt5uu*2Sa+`9|<1{#u)g@74d)#?O>sEWEL*&t)zkS)?3&65ZP}COkXo3B= zuz~>4_X!FQqL$d6pS?~tTvz)upA4%~V!B9C?KBbP_vdG?X*zY;n_vPfEZ}2(f}Ko2 z)epLC`dg{K1QS?6fDXDoL2;c|n=DvDfUZxlQEg^|sifOP)FOqfbNq+V*jDWUu#6Pr zc${>GD;uD2i8|R;VTA>V?**J2h17RIaXcmfUMTH$BJa>}Dl2VxSAi7-Wa9uem8NU3 z_}KkVg%t!q;t6h7TMXyH%EwS*)>Y(nytak_fqKEGe)Bs(-(QeT!FN`F;*(&-CMeQ!U_T){qdxlExN4#z!YmIU~m7y!^2lke+PYU f0bJgHV1j=Dr>*ayG$VL800000NkvXXu0mjfTtlmy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick3.png b/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick3.png new file mode 100644 index 0000000000000000000000000000000000000000..0b5b8915c0dfd4db4fc8bb843639b2b5a8cc3089 GIT binary patch literal 1024 zcmV+b1poVqP)Px&x=BPqRCt{2o6Sz!Koo^fh@CjGjR^rNm58Wi(@p6Hl|De7b}+W*(+||C2oHd+XfRz1bxFl&Y@?-bU|Zef`k8&6sQ)15 zFT4@lRyUz58h^5;YvIg3f3Qx4Ye;?I* zU0VLa1F*NYOS=Aun7{A<41yb>`3ny~nhn}x5Z()jhTIE$c=w4kojNRu7wlVO4LP@niXbK zSJ5;Z$1l=FLk<9Yr=txUPmk?nT`=STZ0T)S&IPvg*|pPK&IJI#n|N7e`_DYttnknoK&x#)mKFH0bI}C?83%w( zc!Y<(RY`+hdBL~8iKg%YS^aV00}3Bd_<+I(FbW@l{Q3alyTsV{0_9Q_>&i=1B@KPE z1Ebai0K93w0swsJeM76!#@^a42Eh&Y7}Wg*!neo(ci#*Ifr}t;dEuXeTm%4^`2x0e zzHfF=msH+^WVwWvs~sY7PBG3=rb#YpK-d+omUX^8J_ua&B8Dn$a#aJujK((KA|JQ3 zmKM1P0CR<5lf()x%L-ps&w^Y8AWYOLE^?GPx&*-1n}RCt{2o6(NiMihoW0tN&2I=kL%r3M96x#?AU6E%H+yh)#{Z;}T{tKKwH zrQAdnE7GbYkg&F~!60(M+G`A6TF%antNOdb9AIXCkI($$V`^yT;>q`GfO@UPnfW!X zhQ-Jm;Iv%;zIDF=;OF75^iKOcd-#-be8v0V0|2jo`>7^rzai@V9nr3x0T9O#aU7+C zzYj_w06?p0VKp59M&5uVGsUk~Uiw}#aKkXM zO{?guVoD)EmaGT>wrTOW`$$=PrN{x{dctB6U_7YPYHZGSvI3|aJd{L$$_G&S0HE># zK;;8cDj!h!fDNjBfM_ob@WXdMu3@uYyT%D`KEGr5X~2u#^E83Qal~vHaAEfW@E23& z3!iX3VRZS6xDOJP&47K`dta8t3>bNXw2+a-X}gTP!R9ju;yMuvkhQw` z>W$NO)16>Zd?@XJ5U~KM)xGxmS?l{x;<^zFV4D_R3kGqesO)EXKUgU3;vk%2}BX(iECofYcn4IMz_Qi*num0Okuy@+uIzHq4*3akT z!%JxoWQYZL_VB6b`>&-P5F!>}9ADi?Xcyo`?>TU@Yn+B-oVL4D zSSgARFJFn;FU=~D>>6QHPA}S37R8T6`wVzH{$uMnnc|LN;zd4hb0zkCT#9x960#3b zWRH{k2t{!z+673i>3m{KkFP7ug>fO;1-P*L_~FO&G1`5%&~J-NZ>nlfg7f9gb-Zuz zhvHJS&wxqvCr!GrnBp_tiF=E`Z;eaQF2HI%hgvr+n&ykBhvHJS3jo_y;&8rOF+LQR Z@CAc#4<&bVhy4Hm002ovPDHLkV1myK{w)9i literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick5.png b/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick5.png new file mode 100644 index 0000000000000000000000000000000000000000..2c48c6e55d75982967d0c8365efa29ffedc47166 GIT binary patch literal 1146 zcmV-=1cm#FP)Px(G)Y83RCt`_o84~WMij??G#Ctqkc5y6Kt-$E^eTH(wSAvHSKp)$uq*9NSFN-c zyQ)}0DkbX#$0jy$5WQf>vI(wmnZvNjPl{y1$MN}l=FG=AQ^GK3-~Y4#I4D&)vAa~u z4X*qlty&v^AKI?~csqJW|9HT~(K&8>$9Q@Tz?(mQD{W)Hyw%-npjJ9buH!f&j-$l+ zU0_@QMYYnPQE35ib>#w8b1oeY#SFqIp3}I zpS%~x5u?xrpk8)F>>C&0el`K%<7|>~^8RrOkaPtvbUEQvyM5yVD5sUf>VK;L12pXh z-q)6(8{+~bj(!zj)$yLw0bq1H6tVxE$gdWlX)j|yz3gOKLE3rAQNXwWJ*Pv{Zsb1s z@${O}?U4TQK*YZBF7S5rF1fCk9lX%R3*AhUmvSEVK!8=}{wva79Gz>oZ(M+)PNmlY zIxsGP8{ZZByzYQ#TmZ=kzX`@i0n==?mInCc^{`NdN5kPHhsB2g{+-**rket@W29 z!91p6wfINk1_~fL4^ZSyd#h#h-9c;^RFfdZ{o|C6lRuN!ty-HaUnb*Q1ku%?%KWOt zXT9tsf51+Qq4E$N2Gb%aEX&Shf=wg39PT+CdQOKAQIPBd^qZ%dS>j((H?SchEueoq zV01f7CPL}_zaIt0(_v}ET7VKEy)l}X|2K(t0WOZtlbzvpg$=9u|IugNcTfy%0*t5E z;6U3tER^$qqw5C#Ct6#865(4ydl%TJ0JjM*K09nQHxK6P3toH+FkT~6w4UJE6-gDY zCvfzNU|fJAwFDPO=S#sfieOxT)hY41`T;egd_Vc5y;{_`06+JC1oG<#q>H8ZW)w*8 z9mH{z>?ZY`PO`9)z<3Mz;QpO?t-3(VvNL-M&-TECLY)~*vx~h0<1Ik-`PIM|#}Srg zFGUcvZ(M-0=71pl!dY{WoEy9hvfbiYpBtP#<~x_JFnPA;25+KEDmd`q5#Z6S_17Mu zlR7tOJP6Jg%US_dFrlhP>Sc#kt&L^bPqx-|VqAbU>#9c9RhsDJU%C#~4z0l%iU0rr M07*qoM6N<$g1}fGP5=M^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick6.png b/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick6.png new file mode 100644 index 0000000000000000000000000000000000000000..31901ada5255fef5c22519c8dfd0bde09fff8e5e GIT binary patch literal 1055 zcmV+)1mOFLP)Px&*-1n}RCt{2o6(NiMihoW0tN&2I=kL%r3M96x#?AU6E%H+yh)#{Z;}T{tKKwH zrQAdnE7GbYkg&F~!60(M+G`A6TF%antNOdb9AIXCkI($$V`^yT;>q`GfO@UPnfW!X zhQ-Jm;Iv%;zIDF=;OF75^iKOcd-#-be8v0V0|2jo`>7^rzai@V9nr3x0T9O#aU7+C zzYj_w06?p0VKp59M&5uVGsUk~Uiw}#aKkXM zO{?guVoD)EmaGT>wrTOW`$$=PrN{x{dctB6U_7YPYHZGSvI3|aJd{L$$_G&S0HE># zK;;8cDj!h!fDNjBfM_ob@WXdMu3@uYyT%D`KEGr5X~2u#^E83Qal~vHaAEfW@E23& z3!iX3VRZS6xDOJP&47K`dta8t3>bNXw2+a-X}gTP!R9ju;yMuvkhQw` z>W$NO)16>Zd?@XJ5U~KM)xGxmS?l{x;<^zFV4D_R3kGqesO)EXKUgU3;vk%2}BX(iECofYcn4IMz_Qi*num0Okuy@+uIzHq4*3akT z!%JxoWQYZL_VB6b`>&-P5F!>}9ADi?Xcyo`?>TU@Yn+B-oVL4D zSSgARFJFn;FU=~D>>6QHPA}S37R8T6`wVzH{$uMnnc|LN;zd4hb0zkCT#9x960#3b zWRH{k2t{!z+673i>3m{KkFP7ug>fO;1-P*L_~FO&G1`5%&~J-NZ>nlfg7f9gb-Zuz zhvHJS&wxqvCr!GrnBp_tiF=E`Z;eaQF2HI%hgvr+n&ykBhvHJS3jo_y;&8rOF+LQR Z@CAc#4<&bVhy4Hm002ovPDHLkV1myK{w)9i literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick7.png b/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/cobblebrick7.png new file mode 100644 index 0000000000000000000000000000000000000000..242e9d8019402f73b8f770873faa10101650e473 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_ISEDhE&XX zdut=_p#UC+!1mUR&HTk1`E`XSD#qA!-uXJsPu=|5|Kkbgp1sw*u6{1-oD!M<=+an= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/full.png b/Resources/Textures/Structures/Walls/cobblebrick_chromite.rsi/full.png new file mode 100644 index 0000000000000000000000000000000000000000..f3dec960d6597786c245219b0258f016cd14ff8b GIT binary patch literal 980 zcmV;_11tQAP)Px&j!8s8R9J<@m)~mRMij<>jwMI3Bzv*FX=#=&p)72n^sc)PP}-O28}<#B_9|C_ z5<(zb*j>wwBFU018}Eg3#xv5`Zrs8iFnH!Wn)7GQ`DUi`_UGSzx%uml-}wS^@#?2v zJ7?d%+4!9i0H?i>#WGV0#b$<%0Y~FDonkY?X@a^^w{xn-wndJ?n}Is|M`3Tspc?`3 z_xgs=9dhc_n9Kt_tW#K52l26guI2=PSf^ymgwtL~v6yk9d!{P^yBC*84&cpo_5Vf& z7R$^?)yMRfz7y~?kP z-ol&XteBE9WwBnUIb#dN30+**Bl1FH?7H5;adUpY$_f1muIsTRr`XK487MY0mdl*5 zH?$f*51unir_5J5FQN(O!E>eaKL12oX7rta`6}n_*Wa5Ms4PKUH&O2^7R!uc^H_v_ zXGD*nPEj#6QYXeFnzYP#pMNs&$O{#I72oW{n)|OZ0Cg)$2BZjeks3&fn52lg`{%Z` znBed3VpSjWRc`1Ex)B-MHguYxt&Q}k`cA+onzVEPX6ZJ2Nf9f3pyh~>0lftW-AJ`f zRh7KE`_ouRjQ{xTJ7b~C`)fwgMAgdB9}{^YX_=`S(7Q}{pw$H;^Hr`|Yv_-euX4k9 zTs;^+aY%Hec$?D9ut7w+hkYkd#S?joIgavSM0C{}dkB z70FX2DPk)RoIuS3>GA`M)%GZr=>Lmx$&!r+Yk?z0asc($+8WFddhS=o}!T-v_KbpjWMJ0exOtwW((_evk*g@n7(;PSs_y8I>+-{8;f#T#8n{ z*PX~n+79RngJ(Yg+j_`~DQD43g^L`6>j5hw5+2agbLf6AxPE@@!<%mo5%o5-J)r>7 zKudX>vz8N^ZYZZ=%M{ZiK!_70000Px($Vo&&RCt`_TRm^vNDzHK3vdFHwqsdJ2)eO>G)4|cBd8BluL_ORl=o zh5v;L;o1YCCO`}|0q8~q6H-zvkwz>)f>Kb!Z&K3D-f2(w00T02sr5e24rk_#_poKW zfAeO+xxamPx5v4^!ns)#nrG_DIsNGZmghrP6`UVLdu}t=mVy8P(2n-YCrsu5g3Yg- zy8)yipg&yzlR31beH_^_K2>0uCIAxvpsP+ep7sYENJjt=IJ`!!g4Wd~ZVeN^wtmLUdt8pz6LW9= z;;khe0knBCe_eGj^B(h$fB;BA0L1~oC^Hs#`rxS_YOCH1n?ni$f=w#uyR*!gt}5vC z9H19Dy!XuuVQWi40LAy((LTC4B($#TP_!xzwG#|Kf59{5nXt8`Ab>W1TsvL+)pqt) zj1@>hKpb=&8ae(TjqhK-vDahg0)PJT+v54l7Z`lJ$CLkr>g!i{v>)KxLv(r$T32<9 z-4VL(43_8Px_ODQJAyr#!x(t%Se^^E1w4QGqI8^IU!p=+(O?rW_;|n3e0uu*DXS19 z3~U0P{HO49+qegeaze<Z zOBM(TgeX*vgNhhr0p|y*G@d^WAq0%w{HTqN2c7%8WM|u86R>XR8hC#BAjATQgzU8l z-o3ACLq-6*U|3>QT0M!I!1)G4@RbXQ#ufH2O}@iHRZ*(%&l*QuGSPTV+X4j31x87MZiR7x@15 z8{U2RowWz43L=ywMSX(hVe_iqgmoa*fjq9ALSI&u!w|cd-!rsnUqTV2uz>z_0edpf zO_S5F%C-@-;?NHlQdq#MKEX8NJqcV$LBOg$K>|gXWs&Blkb;1CpP*%$;Xh0G_7Ilm zqoQ6Uk}8o2mJ|dOAxNxD+;l#LDR$U8D+p2(Ku`L*d6`>u@$KR6wadpbc1K|fT{O;x zbOh+C5{j$#WM0~TQ06e#g>(euy%O{K52EWlNJRjdbTS04C&s(6ND-)`eRs!NQz`;T zE-O0Q>-HaP0%-_{*9nVs!+)axKneoVD)B1SSY-df4_+vVI$JEo_y7O^07*qoM6N<$ Ef+oOPr~m)} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick1.png b/Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick1.png new file mode 100644 index 0000000000000000000000000000000000000000..852bb8c0e420b7f00e71d57f15898849cc360298 GIT binary patch literal 1126 zcmV-s1eyDZP)Px(AW1|)RCt{2Tfa}+Kp1_LNCd?u5HJv>3zb+^5#GwRjq zkn{b<(a{{|`#H{+RiL(J0svaqL$qCiifQ2fLbOlg_y+U(+65>t&EFne-2k}loNV(W ziT^`r7ocdBMn_$=oB_&9^C(&+^qj7bi}I?#8b2yfuU3Z@(}=XUT_KMr@qhgsP%#bc zT5-2w$T2^O=R&&xyH+kXq<7H;U?lQfXcwSpm0*-t<4NaS^1|*!&vVY%*VjG=ynOOF z-~%Y^$05w`efs=&&jHVN*5z@|ETGXmMZLC#f!hawz|$a(-}}V7zIFlpVJ+;A>>P!C z<>B^NUInxZP$(}4K6}E0QC^kpNjw+Y1?Zf7i?n&dgEwmT5_m4O3y?SRTCcBNfVD?k zTCcBNfFEbywO*g?13tcg!&=Wjef>_W7hy-h;>L=K`_Klq02ha+D(*uY*aCRMQ*j^K zz!qS2dlLZAw=dxd4|yXWFe!ce5{2^eSY9{S0`%=m0JkynXc?iyJGrI6Q?XJgjbSqHkXYJOGXTwkz9)H6b4fK+W|sRny3@VlV@e(Rc*NKyvn5kTReGYhdinV&3p03d}3@PsE< zesP`LwQ{(>FgJ1kZ<;Pz3kZN+x7Xq8Z2nvbmm(gEc|fU-UQM2P<>&~vnB z;sZ!+4j@pzfQAEE;;bOG2%u~b`2bZVEvk`PJQl4I;GEBVKsfK0H6Nf{fUpk;r@{`L zfp1ZyA2T1I`Uht|Ai)PvmMAMo-IauWK-Qo=4(rwGu(oE(BIpmzuKVy3?glQpj0#N7uCA74kNE@*#kqH4>*F)G>H?eC3 z+E2`xg;Z)0G9f_Q6=+=#V|R)wrXj0C(TKF&*`QnM&<+ne4DAG;)Px($Vo&&RCt`_TRm^vNDzHK3vdFHwqsdJ2)eO>G)4|cBd8BluL_ORl=o zh5v;L;o1YCCO`}|0q8~q6H-zvkwz>)f>Kb!Z&K3D-f2(w00T02sr5e24rk_#_poKW zfAeO+xxamPx5v4^!ns)#nrG_DIsNGZmghrP6`UVLdu}t=mVy8P(2n-YCrsu5g3Yg- zy8)yipg&yzlR31beH_^_K2>0uCIAxvpsP+ep7sYENJjt=IJ`!!g4Wd~ZVeN^wtmLUdt8pz6LW9= z;;khe0knBCe_eGj^B(h$fB;BA0L1~oC^Hs#`rxS_YOCH1n?ni$f=w#uyR*!gt}5vC z9H19Dy!XuuVQWi40LAy((LTC4B($#TP_!xzwG#|Kf59{5nXt8`Ab>W1TsvL+)pqt) zj1@>hKpb=&8ae(TjqhK-vDahg0)PJT+v54l7Z`lJ$CLkr>g!i{v>)KxLv(r$T32<9 z-4VL(43_8Px_ODQJAyr#!x(t%Se^^E1w4QGqI8^IU!p=+(O?rW_;|n3e0uu*DXS19 z3~U0P{HO49+qegeaze<Z zOBM(TgeX*vgNhhr0p|y*G@d^WAq0%w{HTqN2c7%8WM|u86R>XR8hC#BAjATQgzU8l z-o3ACLq-6*U|3>QT0M!I!1)G4@RbXQ#ufH2O}@iHRZ*(%&l*QuGSPTV+X4j31x87MZiR7x@15 z8{U2RowWz43L=ywMSX(hVe_iqgmoa*fjq9ALSI&u!w|cd-!rsnUqTV2uz>z_0edpf zO_S5F%C-@-;?NHlQdq#MKEX8NJqcV$LBOg$K>|gXWs&Blkb;1CpP*%$;Xh0G_7Ilm zqoQ6Uk}8o2mJ|dOAxNxD+;l#LDR$U8D+p2(Ku`L*d6`>u@$KR6wadpbc1K|fT{O;x zbOh+C5{j$#WM0~TQ06e#g>(euy%O{K52EWlNJRjdbTS04C&s(6ND-)`eRs!NQz`;T zE-O0Q>-HaP0%-_{*9nVs!+)axKneoVD)B1SSY-df4_+vVI$JEo_y7O^07*qoM6N<$ Ef+oOPr~m)} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick3.png b/Resources/Textures/Structures/Walls/cobblebrick_sand.rsi/cobblebrick3.png new file mode 100644 index 0000000000000000000000000000000000000000..852bb8c0e420b7f00e71d57f15898849cc360298 GIT binary patch literal 1126 zcmV-s1eyDZP)Px(AW1|)RCt{2Tfa}+Kp1_LNCd?u5HJv>3zb+^5#GwRjq zkn{b<(a{{|`#H{+RiL(J0svaqL$qCiifQ2fLbOlg_y+U(+65>t&EFne-2k}loNV(W ziT^`r7ocdBMn_$=oB_&9^C(&+^qj7bi}I?#8b2yfuU3Z@(}=XUT_KMr@qhgsP%#bc zT5-2w$T2^O=R&&xyH+kXq<7H;U?lQfXcwSpm0*-t<4NaS^1|*!&vVY%*VjG=ynOOF z-~%Y^$05w`efs=&&jHVN*5z@|ETGXmMZLC#f!hawz|$a(-}}V7zIFlpVJ+;A>>P!C z<>B^NUInxZP$(}4K6}E0QC^kpNjw+Y1?Zf7i?n&dgEwmT5_m4O3y?SRTCcBNfVD?k zTCcBNfFEbywO*g?13tcg!&=Wjef>_W7hy-h;>L=K`_Klq02ha+D(*uY*aCRMQ*j^K zz!qS2dlLZAw=dxd4|yXWFe!ce5{2^eSY9{S0`%=m0JkynXc?iyJGrI6Q?XJgjbSqHkXYJOGXTwkz9)H6b4fK+W|sRny3@VlV@e(Rc*NKyvn5kTReGYhdinV&3p03d}3@PsE< zesP`LwQ{(>FgJ1kZ<;Pz3kZN+x7Xq8Z2nvbmm(gEc|fU-UQM2P<>&~vnB z;sZ!+4j@pzfQAEE;;bOG2%u~b`2bZVEvk`PJQl4I;GEBVKsfK0H6Nf{fUpk;r@{`L zfp1ZyA2T1I`Uht|Ai)PvmMAMo-IauWK-Qo=4(rwGu(oE(BIpmzuKVy3?glQpj0#N7uCA74kNE@*#kqH4>*F)G>H?eC3 z+E2`xg;Z)0G9f_Q6=+=#V|R)wrXj0C(TKF&*`QnM&<+ne4DAG;)Px(E=fc|RCt{2o4-%nKorNnDUk?@O=yAxQCL7?L8xLuY1fJ&{{=(GPW&aE7#aFs zWI(JmVnG#RK`Kik1C9g17vV^W(jh#@KjXsLIaBgki0)b3`J20U@7}wlAeid*_OP-n zqqI1OoRY`S`X2y5S(dD4_O^S9{{!FfMEWg_o85dxHD32XBy>?&zTJ5zN4K;P(E zPB3Z`A;8*v%Gw3&kPnEHboe9FrD-q#5_U262OX^)n;3}`02qq^?G6BtQ}Whwh?+z! z0fKe`zc}E(_5nmr$jUimv(qrs_Dpyu;pB5go0KGp&!N!LVQ1Ku2pseH@_PGElp?;2r}HvCjb7%0}O) zH2GlxOx*|2x8LXur`@$LkVN`;1*z<$ZVsb^{wP)M{B#1oKAaEh{Ol@ZFhF3 zH_86yeE^lRyhzrXpJW#ew*XYf^Rz!7e!}dciNps4*6y`C%g$8Y``mN+TO{1;@7tHp zjyQm(eGqQ@(dnQ@r%bzv_?MZ-J z0C&aKWTvB%8)g>`w*dOpji=3ICd}t{GsG?$ZUN%Bv@lJ$1z6r$k769c;1=NN_CAVn z2t#;Y>g4c%E1$sodja8fs)d!0Li-mkK65ztbaAb?)PIA_VZeF+wG^Ap4~Dmmpk#NmpaX^~7L1 zFTw=?Y(J6lZ4bBeAY6d`%7*oss>tI^a?xt1VvE~eySU)$U$_AFb*w%PY=7IH=O)=- zi*Nzxr2yEj&PdO-L?>bP*C1Sgddu*%H4TQQxA~v#FX1nfbal569BpR+0000Px(5lKWrRCt`-TQN`DKotH`ERiZUPMtWd6_y}%C}LoVvR4cl`w#j9I`x-y>e!+G zpd$n7T16}!Di$PI5*cC~NbCqBB}#{IhwV57;yXW!Z!%8s^L@E{_wIe~6+n#k-rlTL z)nILHKsOEi?3@7r>YB>GbFf>3YE@9O%5YCFP*jVk?l*9Id5w=>z7^8gSJJ(HdbFzA z!o5#BWdML~8aO)XOSMl;`pb61iuOrqE5mw_VgV742376K@RFst6~6oB+1o z8SK#%-MbkqX8_$a0Dup^WR($|UI?{MP5=Nt(D^lBIRhL!6Ev~7Bt(Op0PgJW;oB~B z(?An*5@ds%fTNQ>5ZdZ`o*#(;WP_Z5gWVdxR=8YCqLk8UTKO z|2j+a|7p+jX(40=yng#e#A8SxYzbWbJs0(;Od-?<$T+XdhHxiXREtZ4n7|K~eoh79 z1eC0DV#Ma#uGG}lx{$UF#s?Zc=;Vn6sc}F&qs#Jpc|s88K7BqleR z0+fgK4@e4xfQLB1w_QHi`IMh0LG960wCS}V-3hW-AZfjKt~}Z1S35j`Eb6<|+6Cc6Mz z_W;oAoaN$|XOK!jSo;T(_5T-}5J}SaDfItUkP-(xmiB&3|EGYIIAE2wpQZl43PK5> z*810hFaoG`{&gXQ0BVgt4M??lfWE$fyh0>RZGniHM^3=Hbp@h)4mknq)D(!^ZO93z zynhGaY4ro_J0d|&0IMZ=$4IUR6IJ>+C>Iz)`GJKB;~neyS7+asq&dzCd6x zlO!9tARsQ5gwtrUNgyYn=lN)wWljQXn&N3RM{eIBIRU_Z>s%;Jw!K;4IYj0c+O5XR z>>K>t+Tqu1>NC|ywJNAPx(E=fc|RCt{2o4-%nKorNnDUk?@O=yAxQCL7?L8xLuY1fJ&{{=(GPW&aE7#aFs zWI(JmVnG#RK`Kik1C9g17vV^W(jh#@KjXsLIaBgki0)b3`J20U@7}wlAeid*_OP-n zqqI1OoRY`S`X2y5S(dD4_O^S9{{!FfMEWg_o85dxHD32XBy>?&zTJ5zN4K;P(E zPB3Z`A;8*v%Gw3&kPnEHboe9FrD-q#5_U262OX^)n;3}`02qq^?G6BtQ}Whwh?+z! z0fKe`zc}E(_5nmr$jUimv(qrs_Dpyu;pB5go0KGp&!N!LVQ1Ku2pseH@_PGElp?;2r}HvCjb7%0}O) zH2GlxOx*|2x8LXur`@$LkVN`;1*z<$ZVsb^{wP)M{B#1oKAaEh{Ol@ZFhF3 zH_86yeE^lRyhzrXpJW#ew*XYf^Rz!7e!}dciNps4*6y`C%g$8Y``mN+TO{1;@7tHp zjyQm(eGqQ@(dnQ@r%bzv_?MZ-J z0C&aKWTvB%8)g>`w*dOpji=3ICd}t{GsG?$ZUN%Bv@lJ$1z6r$k769c;1=NN_CAVn z2t#;Y>g4c%E1$sodja8fs)d!0Li-mkK65ztbaAb?)PIA_VZeF+wG^Ap4~Dmmpk#NmpaX^~7L1 zFTw=?Y(J6lZ4bBeAY6d`%7*oss>tI^a?xt1VvE~eySU)$U$_AFb*w%PY=7IH=O)=- zi*Nzxr2yEj&PdO-L?>bP*C1Sgddu*%H4TQQxA~v#FX1nfbal569BpR+0000Y|eaHu9~Ws2F3@dFSgiKXvnK|Bol^n}0pu_`l8l<7xjkO8#T# zTEJ?;dVy&cQwF0isw*u6{1-oD!MPx&LPCK!K#S%m$=xqE_lA$`540KXk#O-^GHzV38lN z*i=HwrjprUxwVO##6}fTBD$E&;E8AKKo{Iiq}(?%cix+KXS{Lt`STNRh!#Nq$ZZU~ zdwe3w3w+n%cx&UuJV0=tYkY8@3jqM$?qHUz&(nOXA5ANfxE{im@V*j zH`!|+SQKR3rE?WCO|z9)oi`$!RK&FaqP!r=g+js!zUvU>g%;?$4glBb9MVMa;Y8yq z{0avs@tT1Ck*kysM+wJU8}!=ymP|-Es^-0R%gXC1cPde)kqxB~=#c?paZ{}1pXbU5 z!U@o679iA$8av)0MLfpw4y%D_qGC*l!jM7tw00vE0rEWfj}B270wDmtn<&0q*WoCE zQKF46pCP${wFQX9L}~}!Q!ay$?}IPQ^M@tdF%3~-&ii7=E%$_r;Z5!0MgekhnOfgX znCB1HG;0_oDz1pf_^zX6z;_*{X+}I-h}LJt2Oz7=DN-qRz2h}?hKPBHCszJCotNe< z`2aZFEy*%`*QwO`tbfudq`XKOy>?5rWRw>|fb?f?cT*`WW6itp?AeEI{aX7MzsN1=OY)fg) zwF36q2l(k+^8qXZY&CDffB68wRd8!iyHf_h=E@_|(xe)?#f{M+*Xhj>B}kGTxO zO3bT#KteiPozpdmZ}fpE4Ao<#h{r;ud!k(`O&1J6%iST$i;54d^&XHACphF{c%!aZ zWz7bZuWDK2%OEs9@zxR`cY5AGHQt6rJZ3mblvS^C@+O?78OK|$I{9l0n5LP!LT!Bc z*R}y!chey^z6a!!ES@cDt@*jG&DJfy0~!UGT2fiFG1knRp7l{)a2e?T8?AWIEuYkm z#$T75QgZSmrOcZjqaDo&l@CbBG}&q@`Pkr^a$*}_hPS(^`+yuIPpPe5QZ+bB>wXz; e!p2*Fp8o@}+%HbHA0J)-0000Px)hDk(0RCt`_Tgz_SMif0MESa=4gk+>L?mu%ivHZ^#I%jb4NpJWH%Z*nz#oLpy8!7x_2(`TaRD>UcG*E zGwx@9`T3_uI(tv)d^iofdj00+#~)q-0P>8%=UmXXcWRJn0EXzgn79B4#GuUR(qdVx zllKu_7e)wxn95F1AwOdQ09w3->c%Rv)6q|)>j2svE1?dw-+-4Jm?{^smEc zO%WT_clTR1phjWop!lY0syd_ zjmGh*SQFMOE82S+B>*6<;y}c_otZ-3vcx(~7-0jpcWQXQyEk;5n748a%yGay4|Zk> z#X?cMbYX-Bkgvb^=WhVOv$ZFJX5}K=z;ZUY=OO6zfi@S{bzy`6fXJeg%WJys(DQ!Y zya00?oHs90-Pafa0Fk>(+5iA(UA4q}<~S%7(m8#=5CO<8Fh64nx5wLoIC17U03eum zinFQgZG;h2q3OEdo(JYQm@m(PdtQwBZnuYSx2L_25gI^&kQ@h;OC{m*?9AY267yl3 zE5GY=VVnjeZ2-B!`+`<34FD%+XE#9PuCmz-yw)WSKYT=Wa|2Qz#KDybV5RB0n0x#!0N`!y51jqkOlxZ`XbV72Q~-#)JuEQc36glewTY*d#Z=1L zx=2j}WJdikR5Cv*+nXe`1<*J?#d>9B$j!+GOF6fvIKUKW3&5VX@ou*+o^MqN`{3|M z&coxW1FiGJCN(@Y73v^9X-na_EQDO#)O zrZ5krXQSx9|Mu5<8vEXQqY(l4lIhw>D$$ zagxv$fR$r0M&$xYl4jcT52TR{?d^;AR1T-Q;Qyj8u(rG)-cwHiz*o~3(0&A*;;iV^ zQ~R3w0&B|)F&iMq2&TjV+5(_HeNqUcy1EapATlU@GdRUr(J7LdXE__JvVwQJbpQ`6 z4*0KV9G@B)2TU{-1qS~WSXwNjy0MBpV+cBdm;$91TYYaIYs(8m6C$fiOJDc@1%N?K zq1_45?u2-;RsCXn8zBH7J|{?X!Q?^Y7Ms_){A6&`i6e|EiK!w*dD4X1?_TQ?*=$D4 zCg{Kj4Y+kq(DMKc+V1WZN2$PKa|t>yLI5f>T^D)FiXzFJ9g8fJGYL8{LIA2c!S%{Y zESREc6UsBv8lN-D1^|Odk+%Z`y?)F9l1o(4#)T0Yu)R}@#Q_A~4uG7EATcb>Jr68r z4~^lC10w{Gj05EV3#bMx{4i8r9|uMV0Ej%nY%vf2Ivh%!%cauLwY1V}V+26R&samP zba}qut`hv`!U!WMx=C`q;Ew)6T4}Wr8bEGPHDmC8ckkBu16>%Q0RWV<1*7H*RO@ju maSe!O1Zs`j?zzu#x_<#oh2UUf6CnWr0000ng= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick1.png b/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick1.png new file mode 100644 index 0000000000000000000000000000000000000000..98e733c198492e38bb84636f126b1942adfb6951 GIT binary patch literal 1024 zcmV+b1poVqP)Px&x=BPqRCt{2n=wz@KorOSR7tQ&&LRkshLS>56@ellRia~;ev(d|D|M^XsdK+T zKMV^aNR^NxP^2mZ3N9WJd-~I32Wd@RY|MAO} z$oIc}{X8S`{fx+$qu}kE*8qS5Apii2Qf}MX-3zsgBHaP(!A9E_rKqk{LhYhRcR+5| zzlFk_!p~X1UG(Vy^^LVqyC_eDe<1=!AC8~D?(HzU2+||K@fqSFD8CA%zht)WMmW^ zpPmXy;k9b@aZ6#XxFGfV(jCz2^`%~4x&xw2X!k+-C?Ff*Bq%$HiSpk^fN&0oQkBU- z*a5j*Hj4X@hOh(7ZYPTSkcO}Wew>^Qwb`U)5@Gg-MmPii>Res{H?y{L{Q}FCGSqBl z?5u9o{&Zpf-xvkhtPKFD?M$52O|r{E_!a10c8A(5#7SO-(;vVIvCAehDa@9x0Kjrx z-sUSh6YR1Pc0jY$#(HfPx?v2RXKfvrYL|_$1Jqd+`v(n_7ncBxU&0Qv%S1Q{21`}r z9xlu-8{r6O93A6jZ3R7VfR1PVwOuyC5peob2jKT~u(w$|%r2WqMuD&@Z4_19xDa;0 zrw{J{_(CU_%fjq-@Z;nR_00{g{;2IhHw>t={*c)72Cyhigkxe`4`2@;B$xz~LTqb- ztmmm|!g2!@-8lsv&x)k78wIgM04rcn(*)79TSd(z5laM6)8sQg772hq_OsU@2_pay zV-6Ud4l|M>fEcmmfZ)TEyb4lV#r{D90Faemj^I4loitl*loyv^QHsXVF&9X(iFH|= zEqDZ{z6C4q&7@0Lj$>(l<%5{|i)CDyVO)p+E>6 z&*8g3i}OVQ{%*1t&!0gnE}+-zbB*!nH%S3E{~5477q;hOd#nCn*G_~30AC@pt?|uP z8LzWNGS$$04uAPx)hDk(0RCt`_Tgz_SMif0MESa=4gk+>L?mu%ivHZ^#I%jb4NpJWH%Z*nz#oLpy8!7x_2(`TaRD>UcG*E zGwx@9`T3_uI(tv)d^iofdj00+#~)q-0P>8%=UmXXcWRJn0EXzgn79B4#GuUR(qdVx zllKu_7e)wxn95F1AwOdQ09w3->c%Rv)6q|)>j2svE1?dw-+-4Jm?{^smEc zO%WT_clTR1phjWop!lY0syd_ zjmGh*SQFMOE82S+B>*6<;y}c_otZ-3vcx(~7-0jpcWQXQyEk;5n748a%yGay4|Zk> z#X?cMbYX-Bkgvb^=WhVOv$ZFJX5}K=z;ZUY=OO6zfi@S{bzy`6fXJeg%WJys(DQ!Y zya00?oHs90-Pafa0Fk>(+5iA(UA4q}<~S%7(m8#=5CO<8Fh64nx5wLoIC17U03eum zinFQgZG;h2q3OEdo(JYQm@m(PdtQwBZnuYSx2L_25gI^&kQ@h;OC{m*?9AY267yl3 zE5GY=VVnjeZ2-B!`+`<34FD%+XE#9PuCmz-yw)WSKYT=Wa|2Qz#KDybV5RB0n0x#!0N`!y51jqkOlxZ`XbV72Q~-#)JuEQc36glewTY*d#Z=1L zx=2j}WJdikR5Cv*+nXe`1<*J?#d>9B$j!+GOF6fvIKUKW3&5VX@ou*+o^MqN`{3|M z&coxW1FiGJCN(@Y73v^9X-na_EQDO#)O zrZ5krXQSx9|Mu5<8vEXQqY(l4lIhw>D$$ zagxv$fR$r0M&$xYl4jcT52TR{?d^;AR1T-Q;Qyj8u(rG)-cwHiz*o~3(0&A*;;iV^ zQ~R3w0&B|)F&iMq2&TjV+5(_HeNqUcy1EapATlU@GdRUr(J7LdXE__JvVwQJbpQ`6 z4*0KV9G@B)2TU{-1qS~WSXwNjy0MBpV+cBdm;$91TYYaIYs(8m6C$fiOJDc@1%N?K zq1_45?u2-;RsCXn8zBH7J|{?X!Q?^Y7Ms_){A6&`i6e|EiK!w*dD4X1?_TQ?*=$D4 zCg{Kj4Y+kq(DMKc+V1WZN2$PKa|t>yLI5f>T^D)FiXzFJ9g8fJGYL8{LIA2c!S%{Y zESREc6UsBv8lN-D1^|Odk+%Z`y?)F9l1o(4#)T0Yu)R}@#Q_A~4uG7EATcb>Jr68r z4~^lC10w{Gj05EV3#bMx{4i8r9|uMV0Ej%nY%vf2Ivh%!%cauLwY1V}V+26R&samP zba}qut`hv`!U!WMx=C`q;Ew)6T4}Wr8bEGPHDmC8ckkBu16>%Q0RWV<1*7H*RO@ju maSe!O1Zs`j?zzu#x_<#oh2UUf6CnWr0000ng= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick3.png b/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick3.png new file mode 100644 index 0000000000000000000000000000000000000000..98e733c198492e38bb84636f126b1942adfb6951 GIT binary patch literal 1024 zcmV+b1poVqP)Px&x=BPqRCt{2n=wz@KorOSR7tQ&&LRkshLS>56@ellRia~;ev(d|D|M^XsdK+T zKMV^aNR^NxP^2mZ3N9WJd-~I32Wd@RY|MAO} z$oIc}{X8S`{fx+$qu}kE*8qS5Apii2Qf}MX-3zsgBHaP(!A9E_rKqk{LhYhRcR+5| zzlFk_!p~X1UG(Vy^^LVqyC_eDe<1=!AC8~D?(HzU2+||K@fqSFD8CA%zht)WMmW^ zpPmXy;k9b@aZ6#XxFGfV(jCz2^`%~4x&xw2X!k+-C?Ff*Bq%$HiSpk^fN&0oQkBU- z*a5j*Hj4X@hOh(7ZYPTSkcO}Wew>^Qwb`U)5@Gg-MmPii>Res{H?y{L{Q}FCGSqBl z?5u9o{&Zpf-xvkhtPKFD?M$52O|r{E_!a10c8A(5#7SO-(;vVIvCAehDa@9x0Kjrx z-sUSh6YR1Pc0jY$#(HfPx?v2RXKfvrYL|_$1Jqd+`v(n_7ncBxU&0Qv%S1Q{21`}r z9xlu-8{r6O93A6jZ3R7VfR1PVwOuyC5peob2jKT~u(w$|%r2WqMuD&@Z4_19xDa;0 zrw{J{_(CU_%fjq-@Z;nR_00{g{;2IhHw>t={*c)72Cyhigkxe`4`2@;B$xz~LTqb- ztmmm|!g2!@-8lsv&x)k78wIgM04rcn(*)79TSd(z5laM6)8sQg772hq_OsU@2_pay zV-6Ud4l|M>fEcmmfZ)TEyb4lV#r{D90Faemj^I4loitl*loyv^QHsXVF&9X(iFH|= zEqDZ{z6C4q&7@0Lj$>(l<%5{|i)CDyVO)p+E>6 z&*8g3i}OVQ{%*1t&!0gnE}+-zbB*!nH%S3E{~5477q;hOd#nCn*G_~30AC@pt?|uP z8LzWNGS$$04uAPx&%}GQ-RCt{2nn7#ZNEF9^U1GVIg1=0wqbajawg_qLCxXHe?U(C{k)gZN~D5u6`$tp3scmJiYmkp6+3o zUtj)y1+cc-ptZF@O$fZeW3#yqz|!Ip0PTZA9{=U2YC=$+9}nl~_>@Myj;LAy;cREY51HNh4%8MZU!3#% z5^p%ltj}CTKuw72I^1PwUB6n80M; zqtoqT&5vhv5R7o8WM_AezyJJAdki{c76Fs8_oOUun#^7VA`CmIIQq_suMCn#^)Q z^x;L-LNwQTv)=}wln?m<%uom&9iOst{{gO)v=2`>`?oWzu5Tq%A*6P3DhI$=_dnf! z5^jM_Q|N%KZd~YqLI)H&pwIz|LI;pv9iZ)iKmK}^V0o>3>zSbK03~SDvKCElJG*6EFC_0~b3IgnNp{m{J3tjLWTg^of34j#+73{9 zU)VO%ai}kfm=TqH5s{M|dfAU5qtfsiN5`jZHrMHNyRq}C-GN)}x)^tWHE;1|zs<`12f*Y{=xKHxj3>cpsch22rP*~c z9s%vc6Mk;4G6+WW0{5Hkx)_fDRVH_(jLo)cr`dHe9s!VECC;*n{2wH|HZ^6$D31UD N002ovPDHLkV1k4+^{@Z{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick5.png b/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick5.png new file mode 100644 index 0000000000000000000000000000000000000000..f2688e45ed3a184a2b7cabb9755b7b56e835d44b GIT binary patch literal 1196 zcmV;d1XKHoP)Px(W=TXrRCt`_o83<1RuIR3TM=Tfb1Z^NP*^^NifGa9-fS;>(}(E`^bz`cd&5f6 zqDTlREfxk56x-NNBJExz$FfU;62-$w;dg`WBtD+M&&QmZ;SGlQqHIXc{> zrWA1+bFjAqKz*eSK#Ov7eUc~uV0UZl%{=Wd&Gqyp@cVDSX2(&Q5Tyy9 zJ{&z;`^E*()RbbmI((e=*#*r;1LfEN+1r+2Aq1!?HT?V50w7M~?6V{ai2DPvwv7v* zjdw=I=Lw>it8Nzn<+>v68yDdE_9i>lL%>xvJm05gSt!>l`* z0G{vDY&5d#di(>}l_kO?5ozDJ0NT*NvI^%gG~9B^f9rXE5WV{p*p=ZsP_9cb8t?kL zHePZSFfM@QDD2A8#5bQr0mtoAJ|66gv~PR}w7#BX$I5kSpItoqj+F7R00Qi9zbl+S zHPgHG)zaHHF2Jlt<@W()U|fJ+uRqiG%bpO83m`eePlNGQz%+C1r2)<_FTc(6`+4{C z^YZF@KnYR?DGy(F)cRP1w-Bz5^hd|!=#dL2vD;u;{JdjiV3>iES}d5LI8T{fZN-9iKb^pL;&TwTzS{ov2tBJ-)Db& z3xG5o5Ix8QIcG&gfS}vWW_sNd@@V73-~~^Dj%dSJO`-x*gWho*;_3y}hTG4(O!=e%jkCq{U4l zCcvbuu1j7E>jV^f7%j2R@x&Ur{HH!?7D{PRc^qPm#1Q>SfVQxU8kU@%4dw>?<|3v9S zV38)cX?XS7VWYWuFkfHr>U)6k;M}ZU;fpJhn!TPty{t01S!xN~`szrq@5MxBy2#9|Du>2c(Oo7iJaERpT%Wq3MXS<)}v+t1>a(13LGe z!nqy-%CQSE1u2XRp!sk80E`MKMj}XIT!8l31qXXOc)nk_9z-$9u`>~*Fg^#^Rh!RW zTG&;awR)YkdOa(o(7fpX8+Px&%}GQ-RCt{2nn7#ZNEF9^U1GVIg1=0wqbajawg_qLCxXHe?U(C{k)gZN~D5u6`$tp3scmJiYmkp6+3o zUtj)y1+cc-ptZF@O$fZeW3#yqz|!Ip0PTZA9{=U2YC=$+9}nl~_>@Myj;LAy;cREY51HNh4%8MZU!3#% z5^p%ltj}CTKuw72I^1PwUB6n80M; zqtoqT&5vhv5R7o8WM_AezyJJAdki{c76Fs8_oOUun#^7VA`CmIIQq_suMCn#^)Q z^x;L-LNwQTv)=}wln?m<%uom&9iOst{{gO)v=2`>`?oWzu5Tq%A*6P3DhI$=_dnf! z5^jM_Q|N%KZd~YqLI)H&pwIz|LI;pv9iZ)iKmK}^V0o>3>zSbK03~SDvKCElJG*6EFC_0~b3IgnNp{m{J3tjLWTg^of34j#+73{9 zU)VO%ai}kfm=TqH5s{M|dfAU5qtfsiN5`jZHrMHNyRq}C-GN)}x)^tWHE;1|zs<`12f*Y{=xKHxj3>cpsch22rP*~c z9s%vc6Mk;4G6+WW0{5Hkx)_fDRVH_(jLo)cr`dHe9s!VECC;*n{2wH|HZ^6$D31UD N002ovPDHLkV1k4+^{@Z{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick7.png b/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/cobblebrick7.png new file mode 100644 index 0000000000000000000000000000000000000000..3caa75ca28da2f60c35ed174211504e6ebbbeefe GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|c6z!vhE&XX zd+Q+Q;Q*ck0n4jdHvJE2<+;T7@Nl!sF6ovJNB`9GJgdIH|LmXAdB@ZKZI-NKV!gmL ziz$QAmvKwOGKMIJU#y?!nS|u+5dd|o;qf(1*|4`6ylM-u>Ggx|NRfX hN(UerjHdn>|Cth=x~zZPKY^ZL@O1TaS?83{1OR;uTeScH literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/full.png b/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/full.png new file mode 100644 index 0000000000000000000000000000000000000000..8a721053bc46775a1f367b0fe6cd61ea319d8dfc GIT binary patch literal 1083 zcmV-B1jPG^P)Px&^+`lQR9J<@m)}ksM-;|?0spsWWm8z=l!}rFk_wfiYEYy~xuK8Km*|sm!zGc@ zBB2CV;6M|*-bA*wv&L(@MZK_RGPApegkI!GdolaX&iT%nbH16q_x#u2HlI9QZSocD z&p-az$~<|x+T44w3qVB(0x9)`{eweH47f9%KIgERiG${(@75Z6oVLha@OYpZ^P^lo zL#0#zpfCGuKmMLve#%k32M8`hCNjDef4=+UC#N$!xD2@(N80Ct#mtywWhJ(FB5QN- z__~%4GXsH?R;oth5sw}|pyPRZ9JgmX+caC}bMdtAi}|8OMiVgEn-dzY3xFsWX|~Sw zSlQObI&wH&yyJNZJU%`-J);X`4Yw8nMZz>uE>g^9s1yo%9LE9V9NZ*WUtS@QlH)gT z`TJc5nAO1k!6C1XUdOp;=Y_IBI1bYHDP}X&sx|!-v(p$99>?N@Dnjtn&JVgh7XbEN z?6SGBM)%_fx*tDSsVkI)71?MK5e}t=n~wT}{#-1+|6puEMF`zeY5UpkbPVZ(KG@u*5SotuR?HGxxG!teJ0Ea#$J zL~N|{^5_`&LLHbF$(LHQb$+`Jm`ACK{{J{vSyD9sNgc=ldN3S^496kQcDC>A)O0?Y zMAo~sE=$z`rTZ!i=6?JA-mKv4%;a)ez5jr&{@ZjQ^*Ejvi8qj%L@t-L9_3tVLA%q{ zT@)9!L3}zoxK&|At4tA8I#8?D=nwig>Oi6klyy9hN}(`SvU1T9q|=M{ zb0bnjYt>pR{@FUPwXtrspo&K6e7rr?Rw+Dg4cF!5^bD|dAfbecp&X79C!dNc4O1td z!WAiH>ON3kUg59SJN6F_0a*O`m%ZOx7i}&_AyubDE}tj*H$s%lTumYt78eP_P(Lgz zPK!%ah_0_KEV{ndxKqm8=fH4CHj@RwUH*n|SC?sBw9|Fq(ZdItxhWz#OJS(r>l=|V zF9<`+xw2bzV5wFixC|3VXTx<9@6@=%v|i%4y0EJ6O%lCvkR)JEh+of7PS2<>uV`FH zI>TQc9p8wX-l$HoO`~R(b$l9ld6AV=WZ}IDYf? zv+!Qu#u672Gm=0`{itJ8jpK9ff}8X1eeK`#{{VpD%n2Adc#Qx6002ovPDHLkV1mGg B1`GfI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/meta.json b/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/meta.json new file mode 100644 index 00000000000000..c5029fedebae1b --- /dev/null +++ b/Resources/Textures/Structures/Walls/cobblebrick_snow.rsi/meta.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by TheShuEd for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "cobblebrick0", + "directions": 4 + }, + { + "name": "cobblebrick1", + "directions": 4 + }, + { + "name": "cobblebrick2", + "directions": 4 + }, + { + "name": "cobblebrick3", + "directions": 4 + }, + { + "name": "cobblebrick4", + "directions": 4 + }, + { + "name": "cobblebrick5", + "directions": 4 + }, + { + "name": "cobblebrick6", + "directions": 4 + }, + { + "name": "cobblebrick7", + "directions": 4 + } + ] + } + \ No newline at end of file diff --git a/Resources/Textures/Structures/Walls/rock.rsi/meta.json b/Resources/Textures/Structures/Walls/rock.rsi/meta.json index 5c5277dad51fb5..d9e72a5055e6d2 100644 --- a/Resources/Textures/Structures/Walls/rock.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/rock.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/Citadel-Station-13/Citadel-Station-13-RP/blob/817e7c1f225876b45891e3f06908e6d032f0a8bc/icons/turf/walls.dmi, rock_bananium made by brainfood1183 (github) for ss14, rock_snow, rock_asteroid, & rock_wall and co from https://github.com/tgstation/tgstation/tree/e929cf39cded5207d63df1fa8521f41f2816b383. ironrock taken from /vg/station at commit https://github.com/vgstation-coders/vgstation13/commit/02b9f6894af4419c9f7e699a22c402b086d8067e", + "copyright": "https://github.com/Citadel-Station-13/Citadel-Station-13-RP/blob/817e7c1f225876b45891e3f06908e6d032f0a8bc/icons/turf/walls.dmi, rock_bananium made by brainfood1183 (github) for ss14, rock_snow, rock_asteroid, & rock_wall and co from https://github.com/tgstation/tgstation/tree/e929cf39cded5207d63df1fa8521f41f2816b383. ironrock taken from /vg/station at commit https://github.com/vgstation-coders/vgstation13/commit/02b9f6894af4419c9f7e699a22c402b086d8067e, sand rock made by TheShuEd for ss14", "size": { "x": 32, "y": 32 @@ -147,6 +147,51 @@ }, { "name": "rock_bananium" + }, + { + "name": "rock_sand" + }, + { + "name": "rock_sand_south" + }, + { + "name": "rock_sand_east" + }, + { + "name": "rock_sand_north" + }, + { + "name": "rock_sand_west" + }, + { + "name": "rock_chromite" + }, + { + "name": "rock_chromite_south" + }, + { + "name": "rock_chromite_east" + }, + { + "name": "rock_chromite_north" + }, + { + "name": "rock_chromite_west" + }, + { + "name": "rock_andesite" + }, + { + "name": "rock_andesite_south" + }, + { + "name": "rock_andesite_east" + }, + { + "name": "rock_andesite_north" + }, + { + "name": "rock_andesite_west" } ] } diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc964e4d88f29fd2b197667135166a8de9a65bc GIT binary patch literal 930 zcmV;T16}-yP)Px&TuDShR9J1;1gEVPU z%9oHqbt15!R8bdj3S-u@k4rnR5wxH8nVt9H?DwC)FPM=1(;kbPTg;0B0N}k(_CpA0 zk1eWIh4$Fu%cswA@6>e&A;5c&=feU0 zPDhk9>YOTA*L75)@5|@(-p74KhdLqxU%!1%>OjtW`vi79=PZROZO?GsRjVq=dsSSm zDtPa)+wB0n5soP3L{TC+X+xc&{uwKw!ZlU-m>nb_E1^YaUDu#a&9EFI@d>61MJ_TL zr&u(m$e9zTIXWdazg2REY?V~UtjvD={FRVU`7jlMuD_SUR`iL9sJq*25_07f@-i=K znbxWZASqC6UL>7GYgv}BrC3XE2q9h~gSG4eZzSt4=SiYckM};Fq0^cXPCaH5p{LrM z0O0v>h{oqdf&OwvuAOu3It*x!ZS0h}j_K?r07-SDQTBM&bBgVHwjTiF!A2#LFxNh{ ztXk2!@xLjj0aDyl-&UtcChhgMzFqw@Iqcp!LQ|819iNljJG3|b&`m%ZL5Q}+OaZDJ(<%> zYFwG$Y@1Pi;Jw^HnoCWN?-oTz?=^S(%Ngssj;W&xHI+0~?V3e{sEuYq_G%> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_east.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_east.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8b9b7b274caab5bd7c19907c365745bc21fdfd GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}J3L(+Ln2z= zPBY|dau9HxU)*q)>x9}3&nGn@V$;N;G9GSx!c@V;6jH&c)1w%7VE@r`tp84***EiP z(O&(t4|gbN-M((>I&E>2f$IzY1DjtufzxslW9B?}Oh7sw)m`PXzjb!PC{xWt~$(69A&j BXYl|4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_north.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_north.png new file mode 100644 index 0000000000000000000000000000000000000000..d9faf04c8affc4beded67cc23599c8017e127148 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Gd*1#Ln2z= zp4-URtRT|*@G$oYmX;&?QkL_{%DxF`x0~C0H_Pb?XS{=YN0896yyv$){+-^-AP5G5 z2fvox|Mzphhj?kOvRAkBWUq9u*z0CWdd6OhCkd_oZqIz#h?$}1((>|mH!eKcm7G20 z*p@Q_{m-*kFKO8-HhtHza+!y7y4z)@xAQT~DVDH1{PMz<%I~#v&X=zKeuFWj%d>RC TgiBsPM>2T2`njxgN@xNAioIG} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_south.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_south.png new file mode 100644 index 0000000000000000000000000000000000000000..14260cc8b66b2b223ce4096f522f051d35cbae71 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}<(@8%ArY-_ z&n*;fFyLXia9ZGkV8T8vmsC~`0iSR;hBl414^Ax1AKsmQqPN!Pb5!B&^UMqav&3TW zzm|yBym6lS^bA$Lm2JyvpVp>pKfQUo@9t~AM-%4pXGHMda-U|{{VeDB_dkDDGc!E$ iw#(@k5Cnt2mslsxuxF_&&2a-dfx*+&&t;ucLK6V4{6!rA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_west.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_andesite_west.png new file mode 100644 index 0000000000000000000000000000000000000000..2f9542b2100bc7352a2bcf8a7d0535a470925f8a GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}t36#DLn2z= zPBY|dHV|OBE?BxE=X7nr4~9w!QP$M1ke?|NbQUPdD@~OqdBE_4_fPT+*$34>*1p~$ z+9L2}*0Mhg=a1h#^LmlQVwIJrcqe?hXXaVJ6Rdsc3jgCi>xSt;I&GhKd1yTlU!e7f oBT)1qgVf>d+j4s*RlfehSTEywzMd_(8t7~WPgg&ebxsLQ0CW3ZF#rGn literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_chromite.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_chromite.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8f83f4b9665ea61f8c532e36fcb78653b0d912 GIT binary patch literal 724 zcmV;_0xSKAP)Px%j!8s8R9J^AuHe`h26$Zs*onl)hX^jdbxc5ZN|8WB=d&Vo^_-#|d z*5!adLyl8@>>aYbjO5|=xjig*`1tz7%llhzou@PujaaHe{|x|qe0`$0RLIhNwo>hF zYAOu?yu80f2{olt_#`+QNlNdruQ?ph(NTTJD{^c`Kt7yt?Q;HsMS9?cGO2|w8 z4xlgArtDHMC=%NV<3v9EqN2**uJ*{#DcvkGM<1%IWVd~4wJ-sImLhJXZ`|G04S;?) z`7(G^llAp|D{8k^0MUtj@uywKvAvbeZx?zDOjNOkb~|DW4(#ODgj4wVqHbX=gW!0U2Y z16=vt)eVYEC0@1udbM@$8J`8d6H>8`xg}f)Ji3VddtlB+)AFqytP+h_13soMm{7~{wap>kgpyESz?^XV_v2t4 zOZULktvH3APg1F~jAT`)mjU6%W7|>MqP8jB)a0^lQ{o%uQc73hc1FVh0000 zi;?Mu#aAOnrWsK!+f=j+(;DvfE&O}$6T1e3f~ktPlCjG1l6en5%Q)Yh_@(q?Y~0Zz z{}-o&=RD>O;W{$w!n4*#7Jt6&c-HFDa_W&Z!%TS&xux?0{_6)E=Qh2QrfVQjupa0g N22WQ%mvv4FO#l!oX`TQ8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_chromite_north.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_chromite_north.png new file mode 100644 index 0000000000000000000000000000000000000000..2d478f3b278e7fbaa7c00f25fdddeae41121fe4d GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}vproLLn2z= zp4a9-WFW%&;PR4fOb1y*8{1f}{$HQ|u|u_EE7QdX(?lHKT{7)yd{(n6^ZjEH1tkzz zRG*`Hx9N{=l)Kevoa5S-*FJ@P0as}IPqQ@_lhRo$d%C@E zSMxGH5M`P1t90VI(62RXXa0Rrwf{`pavOzyL8~RaFV;NRWB=%zM}G5)!_T(-_{Z|< XfOpddulz|sXEJ!Y`njxgN@xNAWwK!p literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_chromite_south.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_chromite_south.png new file mode 100644 index 0000000000000000000000000000000000000000..1730dcc34533069fbe9943e5f0d6d07a24d16106 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R})t)YnArY-_ z&n@I@P!MT-csNZ};z-(t=-U5hk}vEz7JYXEhp>9ombv+hH~fz?*imp;Cin4$n|Alt z?s72KwBo$Cq%LQ9R=L@>;ENs~mhE&C+9SwNRl~wiGWpMgSbl|N>31`k@#rM~({k}i`!TIAtT6*@mer<-d9ENP0 z?cbkTdwXZ}US|;be5L#rOUONDj!LFWd?y&VT256n7``oMxbU})VdeW0AZ9oyI_2B( zRg&@x-rTz>)ev6wN=Rc;Y@^5n@uXX`yfv=IH`FkEPB8UkG+A*3=nV!>S3j3^P6Px%n@L1LR9J2rb3ffufPy>)OcAS#q3vXUJ{5~o{|77>^csy}0Am$d zev21cbm%}*gjG{#!nEbs$xx1g4Wy1 zkDnrPp9fY3iwGK{QHe-cLcz7eLTm5rK|Nb7K&)zv40?wO*l*UN{Uk%%#mGh|_Hq^( z3-`<`Z@6I^MMQ$N#_Mfs1Y0=PreapCOEl(wO7{U2$UO8AF^1i2SJ*X{PW6VN?d0#T zKljzDu;;P*!01^FK;UAji4pMTxMf0+O4@JneC{V#7ORz{4ZVE;4Y9^}>lrF!xFI6< zVT6kQXWla-=6*_3Y@j`B!%}gvcaMzi{rTjs>>@A==;DCi3^r8{U_L6gwITwufDx(} z-Y90B;2EegZIK2hK$T|EAozeQSSc!OUIb4-L`e9cu(W8Pea29u4*kC!+K%V%`6-4f z^K2O^BDZ$bh1MDt4F@^V$VCQS%S-zpdjIzFDt4)53r(q`C=Pha7|q(wuqN*xJ|850 Tm0-Oo00000NkvXXu0mjf@cT}> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_sand_east.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_sand_east.png new file mode 100644 index 0000000000000000000000000000000000000000..3165be15af5fd5cd4ea7b57e32cf12ca71d02b78 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}%RF5iLn2z= zPSfT)krmqhonc6lm3*}5!TPw}E&Duh=*u231-t&FO zKiB zyFQmu;HxA<#;$A324@+sh_tM|!z6lO9^+ot(0y5aIZOv~n&-6?*3{pS=a+LRw_EwY iVSn2T8c%;4$j=d#Wzp$PzG3{-&t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_sand_north.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_sand_north.png new file mode 100644 index 0000000000000000000000000000000000000000..756e15367289c5741e8773f1df4448f4bdee0104 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}^E_P~Ln2z= zo>$~MWFW%!;QvXfLk%f?4abtISZee)afcMN-)%BJ^JoVn+xCnPJW6OIv-fRL=F?S{k?H%W0F6%H`94E){Rn{BE}V@f+v( Y2dwr#3Kf`N16|7C>FVdQ&MBb@03QZkUjP6A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_sand_south.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_sand_south.png new file mode 100644 index 0000000000000000000000000000000000000000..94c237ed23a461b3759eaff20f0aa62da152df59 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}vproLLn2z= zUeM(`7f1kke!<9`gf<)oghetre;ozopr0B)pPp#T5? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Walls/rock.rsi/rock_sand_west.png b/Resources/Textures/Structures/Walls/rock.rsi/rock_sand_west.png new file mode 100644 index 0000000000000000000000000000000000000000..a546d97b3c96cfbf00f3dd358ce1f5c5d75c84a9 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}D?D8sLn2z= zPTRwELvj{pDP zGiA4xn}ufyN{enRH(M?+(Q<;5%3k+g=6g5)RC|{zw4MlamC55TJHFSg;iZ({b#8@y zOb(A3&LlHD6q>c}BG(Ub#luRw9OPU+$xi5BkZ@PSl7V|ga;4Czf6Ryfp8WFb1Xk`zZgGBkGLi9fLn;wx^!XGS4p6o89ZJ6T-G@yGywoA*ItSM literal 0 HcmV?d00001 From 44bd12c8a5c49705cf6ed00079ddfc5f58140617 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 21 Oct 2023 09:37:02 +1100 Subject: [PATCH 188/245] Fix replay infinite loop (#21129) --- .../Replay/Spectator/ReplaySpectatorSystem.Position.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs index 427ed039e1726d..45a175e688458d 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs @@ -135,7 +135,9 @@ private bool TryFindFallbackSpawn(out EntityCoordinates coords) Entity? maxUid = null; float? maxSize = null; - while (EntityQueryEnumerator().MoveNext(out var uid, out var grid)) + var gridQuery = EntityQueryEnumerator(); + + while (gridQuery.MoveNext(out var uid, out var grid)) { var size = grid.LocalAABB.Size.LengthSquared(); if (maxSize == null || size > maxSize) From 77d9876a2f511e67e7066ada6300472e7862d4a4 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 20 Oct 2023 18:38:06 -0400 Subject: [PATCH 189/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2757000f83ca98..7d7ca577abe964 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: PJB3005 - changes: - - {message: 'Nanotrasen finally decided to give engineering departments something - to do, and has finalized the schematics for the thermo-electric generator (TEG).', - type: Add} - - {message: The TEG creates power by exchanging energy between a hot and cold gas - on its two sides., type: Add} - - {message: You can turn on gas heaters/freezers with alt-click now., type: Tweak} - - {message: You can open air alarm and pump menus with activate (E) now., type: Tweak} - id: 4531 - time: '2023-08-12T20:41:55.0000000+00:00' - author: EmoGarbage404 changes: - {message: Added cyborgs. These creations are assembled part by part and can be @@ -2921,3 +2910,8 @@ Entries: cook., type: Tweak} id: 5030 time: '2023-10-20T20:21:49.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Fix replays not starting., type: Fix} + id: 5031 + time: '2023-10-20T22:37:02.0000000+00:00' From 8f068561c3a45b12307f4143a8074b4f056e28d0 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sat, 21 Oct 2023 09:58:00 +1100 Subject: [PATCH 190/245] Fix rat king rummage audio (#21130) --- Content.Shared/RatKing/SharedRatKingSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/RatKing/SharedRatKingSystem.cs b/Content.Shared/RatKing/SharedRatKingSystem.cs index 761619dc4adea2..93293d09be2e37 100644 --- a/Content.Shared/RatKing/SharedRatKingSystem.cs +++ b/Content.Shared/RatKing/SharedRatKingSystem.cs @@ -130,7 +130,7 @@ private void OnDoAfterComplete(EntityUid uid, RatKingRummageableComponent compon component.Looted = true; Dirty(uid, component); - _audio.PlayPvs(component.Sound, uid); + _audio.PlayPredicted(component.Sound, uid, args.User); var spawn = PrototypeManager.Index(component.RummageLoot).Pick(Random); if (_net.IsServer) From 29ac3f35fa069f76caca9ad0b552bb5f64ca3e1e Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 21 Oct 2023 03:58:57 -0700 Subject: [PATCH 191/245] Update Robust to v169.0.1 (#21139) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 56d850f389c49a..ab47d4e00979de 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 56d850f389c49a09df87c3a48be1fbd24dac7fc4 +Subproject commit ab47d4e00979de4d3b184b8402124a40be4f87eb From db81050b4d5443fee2c6ab35fbeccdbe06907c30 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 21 Oct 2023 07:00:02 -0400 Subject: [PATCH 192/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7d7ca577abe964..2b02b4fdd4439b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,17 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - {message: Added cyborgs. These creations are assembled part by part and can be - loaded up with various modules to give them unique abilities. Make sure you - charge them at their dedicated charging stations., type: Add} - - {message: Added silicon laws. These are laws that all robotic crew must abide - by. This Asimov guy had the right idea., type: Add} - - {message: Added new Mechanized Treatment and Robotic Cleanliness technologies., - type: Add} - - {message: The EMAG is now able to force cyborgs to follow your orders. How devious!, - type: Add} - id: 4532 - time: '2023-08-12T21:39:58.0000000+00:00' - author: TemporalOroboros changes: - {message: Clicking on the screen now accounts for the distortion effect of nearby @@ -2915,3 +2902,10 @@ Entries: - {message: Fix replays not starting., type: Fix} id: 5031 time: '2023-10-20T22:37:02.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: Fixed not being able to run server commands without >., type: Fix} + - {message: Fixed not being able to use the help command to see another command's + help text., type: Fix} + id: 5032 + time: '2023-10-21T10:58:57.0000000+00:00' From e2227c6b0930a4525759d6fc0a1561aba75d0967 Mon Sep 17 00:00:00 2001 From: "Mr. 27" <45323883+27alaing@users.noreply.github.com> Date: Sat, 21 Oct 2023 15:43:11 -0400 Subject: [PATCH 193/245] Make common netspeak get replaced in the chat (#20180) * added more slang to the sanitization manager * idk why this file is here * Added new sanitization accent * No longer is an acccent, instead is a dictionary * Reverted back to a system similar to before, added the new netspeak from the dictionary * Added some new words to the chat san * Added (wdym --> what do you mean) to the chatsan * merge conflict * removed boolvalue * remove space * Upcoming * Added MF and ETC to chatsan :)) * upcoming * added FYI and WYD to speech-chatsan.ftl * Made the chatsan accent string a const string with [ValidatePrototypeId] * forgot the ';' :((( * fixed error throw [AccentPrototype] --> [ReplacementAccentPrototype] --- .../Chat/Managers/ChatSanitizationManager.cs | 4 +- Content.Server/Chat/Systems/ChatSystem.cs | 19 +++ .../Locale/en-US/speech/speech-chatsan.ftl | 116 ++++++++++++++++++ .../Prototypes/Accents/word_replacements.yml | 47 ++++++- 4 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 Resources/Locale/en-US/speech/speech-chatsan.ftl diff --git a/Content.Server/Chat/Managers/ChatSanitizationManager.cs b/Content.Server/Chat/Managers/ChatSanitizationManager.cs index d4a284b6cd0054..77119eefc07a44 100644 --- a/Content.Server/Chat/Managers/ChatSanitizationManager.cs +++ b/Content.Server/Chat/Managers/ChatSanitizationManager.cs @@ -54,6 +54,7 @@ public sealed class ChatSanitizationManager : IChatSanitizationManager { "._.", "chatsan-surprised" }, { ".-.", "chatsan-confused" }, { "-_-", "chatsan-unimpressed" }, + { "smh", "chatsan-unimpressed" }, { "o/", "chatsan-waves" }, { "^^/", "chatsan-waves" }, { ":/", "chatsan-uncertain" }, @@ -66,10 +67,11 @@ public sealed class ChatSanitizationManager : IChatSanitizationManager { "lel.", "chatsan-laughs" }, { "kek", "chatsan-laughs" }, { "kek.", "chatsan-laughs" }, + { "rofl", "chatsan-laughs" }, { "o7", "chatsan-salutes" }, { ";_;7", "chatsan-tearfully-salutes"}, { "idk", "chatsan-shrugs" }, - { "idk.", "chatsan-shrugs" } + { "idk.", "chatsan-shrugs" }, }; private bool _doSanitize; diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 24e13bcde2830a..455d34c907f565 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -1,6 +1,8 @@ using System.Globalization; using System.Linq; using System.Text; +using Content.Server.Speech.EntitySystems; +using Content.Server.Speech.Components; using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Server.Chat.Managers; @@ -53,6 +55,7 @@ public sealed partial class ChatSystem : SharedChatSystem [Dependency] private readonly MobStateSystem _mobStateSystem = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly ReplacementAccentSystem _wordreplacement = default!; public const int VoiceRange = 10; // how far voice goes in world units public const int WhisperClearRange = 2; // how far whisper goes while still being understandable, in world units @@ -690,6 +693,8 @@ private bool CanSendInGame(string message, IConsoleShell? shell = null, IPlayerS private string SanitizeInGameICMessage(EntityUid source, string message, out string? emoteStr, bool capitalize = true, bool punctuate = false, bool capitalizeTheWordI = true) { var newMessage = message.Trim(); + newMessage = SanitizeMessageReplaceWords(newMessage); + if (capitalize) newMessage = SanitizeMessageCapital(newMessage); if (capitalizeTheWordI) @@ -737,6 +742,20 @@ private string SanitizeMessagePeriod(string message) return message; } + [ValidatePrototypeId] + public const string ChatSanitize_Accent = "chatsanitize"; + + public string SanitizeMessageReplaceWords(string message) + { + if (string.IsNullOrEmpty(message)) return message; + + var msg = message; + + msg = _wordreplacement.ApplyReplacements(msg, ChatSanitize_Accent); + + return msg; + } + /// /// Returns list of players and ranges for all players withing some range. Also returns observers with a range of -1. /// diff --git a/Resources/Locale/en-US/speech/speech-chatsan.ftl b/Resources/Locale/en-US/speech/speech-chatsan.ftl new file mode 100644 index 00000000000000..756dfc3f99eea7 --- /dev/null +++ b/Resources/Locale/en-US/speech/speech-chatsan.ftl @@ -0,0 +1,116 @@ +chatsan-word-1 = omg +chatsan-replacement-1 = oh my god + +chatsan-word-2 = omfg +chatsan-replacement-2 = oh my fucking god + +chatsan-word-3 = ong +chatsan-replacement-3 = on god + +chatsan-word-4 = wtf +chatsan-replacement-4 = what the fuck + +chatsan-word-5 = ffs +chatsan-replacement-5 = for fuck's sake + +chatsan-word-6 = tf +chatsan-replacement-6 = the fuck + +chatsan-word-7 = afaik +chatsan-replacement-7 = as far as i know + +chatsan-word-8 = ik +chatsan-replacement-8 = i know + +chatsan-word-9 = ikr +chatsan-replacement-9 = i know, right + +chatsan-word-10 = idc +chatsan-replacement-10 = i don't care + +chatsan-word-12 = tbh +chatsan-replacement-12 = to be honest + +chatsan-word-13 = u +chatsan-replacement-13 = you + +chatsan-word-14 = ur +chatsan-replacement-14 = your + +chatsan-word-15 = mk +chatsan-replacement-15 = mmm, okay + +chatsan-word-16 = iirc +chatsan-replacement-16 = if i remember correctly + +chatsan-word-17 = np +chatsan-replacement-17 = no problem + +chatsan-word-18 = omw +chatsan-replacement-18 = on my way + +chatsan-word-19 = nvm +chatsan-replacement-19 = nevermind + +chatsan-word-20 = imo +chatsan-replacement-20 = in my opinion + +chatsan-word-21 = pls +chatsan-word-22 = plz +chatsan-word-23 = plox +chatsan-replacement-please = please + +chatsan-word-24 = fr +chatsan-replacement-24 = for real + +chatsan-word-25 = brb +chatsan-replacement-25 = be right back + +chatsan-word-26 = btw +chatsan-replacement-26 = by the way + +chatsan-word-27 = jk +chatsan-replacement-27 = just kidding + +chatsan-word-28 = thx +chatsan-replacement-28 = thanks + +chatsan-word-29 = ty +chatsan-replacement-29 = thank you + +chatsan-word-30 = afk +chatsan-replacement-30 = ssd + +chatsan-word-31 = stfu +chatsan-replacement-31 = shut the fuck up + +chatsan-word-32 = gtg +chatsan-replacement-32 = got to go + +chatsan-word-33 = gl +chatsan-replacement-33 = good luck + +chatsan-word-34 = hbu +chatsan-replacement-34 = how about you + +chatsan-word-35 = hmu +chatsan-replacement-35 = hit me up + +chatsan-word-36 = gtfo +chatsan-replacement-36 = get the fuck out + +chatsan-word-37 = wdym +chatsan-replacement-37 = what do you mean + +chatsan-word-38 = mf +chatsan-replacement-38 = motherfucker + +chatsan-word-39 = etc +chatsan-word-40 = etc. +chatsan-replacement-etcetera = etcetera + +chatsan-word-41 = fyi +chatsan-replacement-41 = for your information + +chatsan-word-42 = wyd +chatsan-replacement-42 = what you doing diff --git a/Resources/Prototypes/Accents/word_replacements.yml b/Resources/Prototypes/Accents/word_replacements.yml index befcfa6e6c7e7d..716196cbf4736d 100644 --- a/Resources/Prototypes/Accents/word_replacements.yml +++ b/Resources/Prototypes/Accents/word_replacements.yml @@ -490,4 +490,49 @@ accent-archaic-replaced-231: accent-archaic-replacement-231 accent-archaic-replaced-232: accent-archaic-replacement-232 - +# For the chat sanitization system +- type: accent + id: chatsanitize + wordReplacements: + chatsan-word-1: chatsan-replacement-1 + chatsan-word-2: chatsan-replacement-2 + chatsan-word-3: chatsan-replacement-3 + chatsan-word-4: chatsan-replacement-4 + chatsan-word-5: chatsan-replacement-5 + chatsan-word-6: chatsan-replacement-6 + chatsan-word-7: chatsan-replacement-7 + chatsan-word-8: chatsan-replacement-8 + chatsan-word-9: chatsan-replacement-9 + chatsan-word-10: chatsan-replacement-10 + chatsan-word-11: chatsan-replacement-11 + chatsan-word-12: chatsan-replacement-12 + chatsan-word-13: chatsan-replacement-13 + chatsan-word-14: chatsan-replacement-14 + chatsan-word-15: chatsan-replacement-15 + chatsan-word-16: chatsan-replacement-16 + chatsan-word-17: chatsan-replacement-17 + chatsan-word-18: chatsan-replacement-18 + chatsan-word-19: chatsan-replacement-19 + chatsan-word-20: chatsan-replacement-20 + chatsan-word-21: chatsan-replacement-please + chatsan-word-22: chatsan-replacement-please + chatsan-word-23: chatsan-replacement-please + chatsan-word-24: chatsan-replacement-24 + chatsan-word-25: chatsan-replacement-25 + chatsan-word-26: chatsan-replacement-26 + chatsan-word-27: chatsan-replacement-27 + chatsan-word-28: chatsan-replacement-28 + chatsan-word-29: chatsan-replacement-29 + chatsan-word-30: chatsan-replacement-30 + chatsan-word-31: chatsan-replacement-31 + chatsan-word-32: chatsan-replacement-32 + chatsan-word-33: chatsan-replacement-33 + chatsan-word-34: chatsan-replacement-34 + chatsan-word-35: chatsan-replacement-35 + chatsan-word-36: chatsan-replacement-36 + chatsan-word-37: chatsan-replacement-37 + chatsan-word-38: chatsan-replacement-38 + chatsan-word-39: chatsan-replacement-etcetera + chatsan-word-40: chatsan-replacement-etcetera + chatsan-word-41: chatsan-replacement-41 + chatsan-word-42: chatsan-replacement-42 From 93c345a1b9535e113d4f83d9019389626bda5e1c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 21 Oct 2023 15:44:15 -0400 Subject: [PATCH 194/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2b02b4fdd4439b..1268aa245cc5dd 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: TemporalOroboros - changes: - - {message: Clicking on the screen now accounts for the distortion effect of nearby - singularities., type: Fix} - id: 4533 - time: '2023-08-12T23:43:08.0000000+00:00' - author: deltanedas changes: - {message: Non-humanoids such as mice and pAIs can no longer be kill targets., @@ -2909,3 +2903,9 @@ Entries: help text., type: Fix} id: 5032 time: '2023-10-21T10:58:57.0000000+00:00' +- author: 27alaing + changes: + - {message: 'Common internet slang now gets replaced in IC chat. (example: brb --> + be right back)', type: Add} + id: 5033 + time: '2023-10-21T19:43:11.0000000+00:00' From 9ea8e03c23fd06d51a563ca029487dc7742e5ea9 Mon Sep 17 00:00:00 2001 From: Vasilis Date: Sat, 21 Oct 2023 22:09:54 +0200 Subject: [PATCH 195/245] Social a-anxiety/st-st-stuttering t-trait. (#20500) * This was supposed to be a challenge * Component magik * Add documentation --- .../Components/StutteringAccentComponent.cs | 27 +++++++++++++++++++ .../Speech/EntitySystems/StutteringSystem.cs | 12 ++++----- Resources/Locale/en-US/traits/traits.ftl | 3 +++ .../Prototypes/Traits/inconveniences.yml | 11 ++++++++ 4 files changed, 47 insertions(+), 6 deletions(-) diff --git a/Content.Server/Speech/Components/StutteringAccentComponent.cs b/Content.Server/Speech/Components/StutteringAccentComponent.cs index b283a8354b9f56..e82cd9b12b0f24 100644 --- a/Content.Server/Speech/Components/StutteringAccentComponent.cs +++ b/Content.Server/Speech/Components/StutteringAccentComponent.cs @@ -3,5 +3,32 @@ namespace Content.Server.Speech.Components [RegisterComponent] public sealed partial class StutteringAccentComponent : Component { + /// + /// Percentage chance that a stutter will occur if it matches. + /// + [DataField("matchRandomProb")] + [ViewVariables(VVAccess.ReadWrite)] + public float MatchRandomProb = 0.8f; + + /// + /// Percentage chance that a stutter occurs f-f-f-f-four times. + /// + [DataField("fourRandomProb")] + [ViewVariables(VVAccess.ReadWrite)] + public float FourRandomProb = 0.1f; + + /// + /// Percentage chance that a stutter occurs t-t-t-three times. + /// + [DataField("threeRandomProb")] + [ViewVariables(VVAccess.ReadWrite)] + public float ThreeRandomProb = 0.2f; + + /// + /// Percentage chance that a stutter cut off. + /// + [DataField("cutRandomProb")] + [ViewVariables(VVAccess.ReadWrite)] + public float CutRandomProb = 0.05f; } } diff --git a/Content.Server/Speech/EntitySystems/StutteringSystem.cs b/Content.Server/Speech/EntitySystems/StutteringSystem.cs index 8717d57ad0ee71..d6e3c0b749a83f 100644 --- a/Content.Server/Speech/EntitySystems/StutteringSystem.cs +++ b/Content.Server/Speech/EntitySystems/StutteringSystem.cs @@ -31,10 +31,10 @@ public override void DoStutter(EntityUid uid, TimeSpan time, bool refresh, Statu private void OnAccent(EntityUid uid, StutteringAccentComponent component, AccentGetEvent args) { - args.Message = Accentuate(args.Message); + args.Message = Accentuate(args.Message, component); } - public string Accentuate(string message) + public string Accentuate(string message, StutteringAccentComponent component) { var length = message.Length; @@ -45,17 +45,17 @@ public string Accentuate(string message) for (var i = 0; i < length; i++) { newLetter = message[i].ToString(); - if (Stutter.IsMatch(newLetter) && _random.Prob(0.8f)) + if (Stutter.IsMatch(newLetter) && _random.Prob(component.MatchRandomProb)) { - if (_random.Prob(0.1f)) + if (_random.Prob(component.FourRandomProb)) { newLetter = $"{newLetter}-{newLetter}-{newLetter}-{newLetter}"; } - else if (_random.Prob(0.2f)) + else if (_random.Prob(component.ThreeRandomProb)) { newLetter = $"{newLetter}-{newLetter}-{newLetter}"; } - else if (_random.Prob(0.05f)) + else if (_random.Prob(component.CutRandomProb)) { newLetter = ""; } diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index 28c0ecf79446f8..524d249e9284ed 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -34,3 +34,6 @@ trait-wheelchair-bound-desc = You cannot move without your wheelchair. Wheelchai trait-frontal-lisp-name = Frontal Lisp trait-frontal-lisp-desc = You thpeak with a lithp + +trait-socialanxiety-name = Social Anxiety +trait-socialanxiety-desc = You are anxious when you speak and stutter. diff --git a/Resources/Prototypes/Traits/inconveniences.yml b/Resources/Prototypes/Traits/inconveniences.yml index ad61b14971a3e8..f8e932c9b92b1b 100644 --- a/Resources/Prototypes/Traits/inconveniences.yml +++ b/Resources/Prototypes/Traits/inconveniences.yml @@ -5,3 +5,14 @@ components: - type: LightweightDrunk boozeStrengthMultiplier: 2 + +- type: trait + id: SocialAnxiety + name: trait-socialanxiety-name + description: trait-socialanxiety-desc + components: + - type: StutteringAccent + matchRandomProb: 0.2 + fourRandomProb: 0 + threeRandomProb: 0.3 + cutRandomProb: 0 From 498af4910a99942a36383bce64ea896503ca0056 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 21 Oct 2023 16:10:58 -0400 Subject: [PATCH 196/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 1268aa245cc5dd..5e5b37630456c6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: deltanedas - changes: - - {message: Non-humanoids such as mice and pAIs can no longer be kill targets., - type: Fix} - id: 4534 - time: '2023-08-13T01:01:21.0000000+00:00' - author: EmoGarbage404 changes: - {message: Lockers now once again inform you if you cannot access them., type: Fix} @@ -2909,3 +2903,9 @@ Entries: be right back)', type: Add} id: 5033 time: '2023-10-21T19:43:11.0000000+00:00' +- author: Vasilis + changes: + - {message: Added a s-social anxiety trait that m-makes you st-stutter your w-words + when you t-talk., type: Add} + id: 5034 + time: '2023-10-21T20:09:54.0000000+00:00' From 4fc45f34096f7bf0736ffc131e452e084410e913 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 21 Oct 2023 14:32:25 -0700 Subject: [PATCH 197/245] Update RobustToolbox to v170.0.0 (#21149) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index ab47d4e00979de..58e3a4eb4ada45 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit ab47d4e00979de4d3b184b8402124a40be4f87eb +Subproject commit 58e3a4eb4ada451395c7d961f4b6d724756a7c26 From b589a121d90795f7e915741a2485579018bc731d Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 21 Oct 2023 14:33:49 -0700 Subject: [PATCH 198/245] Fix thrusters starting disabled (#21147) --- Content.Server/Shuttles/Components/ThrusterComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Shuttles/Components/ThrusterComponent.cs b/Content.Server/Shuttles/Components/ThrusterComponent.cs index e7cfbf8f8e7ee2..d8350991154f6e 100644 --- a/Content.Server/Shuttles/Components/ThrusterComponent.cs +++ b/Content.Server/Shuttles/Components/ThrusterComponent.cs @@ -16,7 +16,7 @@ public sealed partial class ThrusterComponent : Component /// Whether the thruster has been force to be enabled / disabled (e.g. VV, interaction, etc.) /// [DataField, ViewVariables(VVAccess.ReadWrite)] - public bool Enabled { get; set; } + public bool Enabled { get; set; } = true; /// /// This determines whether the thruster is actually enabled for the purposes of thrust From 0109e7abc2a3fb4f1fee7a793048fbddb891bf02 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 21 Oct 2023 14:34:00 -0700 Subject: [PATCH 199/245] Fix expeditions console not having any expeditions (#21148) --- .../SalvageSystem.ExpeditionConsole.cs | 6 +++--- .../Salvage/SalvageSystem.Expeditions.cs | 21 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs b/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs index 237645dadf9947..f7f3718208ed38 100644 --- a/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs +++ b/Content.Server/Salvage/SalvageSystem.ExpeditionConsole.cs @@ -20,7 +20,7 @@ private void OnSalvageClaimMessage(EntityUid uid, SalvageExpeditionConsoleCompon data.ActiveMission = args.Index; var mission = GetMission(_prototypeManager.Index(missionparams.Difficulty), missionparams.Seed); data.NextOffer = _timing.CurTime + mission.Duration + TimeSpan.FromSeconds(1); - UpdateConsoles(data); + UpdateConsoles((station.Value, data)); } private void OnSalvageConsoleInit(Entity console, ref ComponentInit args) @@ -33,7 +33,7 @@ private void OnSalvageConsoleParent(Entity co UpdateConsole(console); } - private void UpdateConsoles(SalvageExpeditionDataComponent component) + private void UpdateConsoles(Entity component) { var state = GetState(component); @@ -42,7 +42,7 @@ private void UpdateConsoles(SalvageExpeditionDataComponent component) { var station = _station.GetOwningStation(uid, xform); - if (station != uid) + if (station != component.Owner) continue; _ui.TrySetUiState(uid, SalvageConsoleUiKey.Expedition, state, ui: uiComp); diff --git a/Content.Server/Salvage/SalvageSystem.Expeditions.cs b/Content.Server/Salvage/SalvageSystem.Expeditions.cs index 6021cb62360af0..f2be8cd5008ce3 100644 --- a/Content.Server/Salvage/SalvageSystem.Expeditions.cs +++ b/Content.Server/Salvage/SalvageSystem.Expeditions.cs @@ -1,15 +1,12 @@ -using Content.Server.Cargo.Components; +using System.Linq; +using System.Threading; using Content.Server.Salvage.Expeditions; using Content.Server.Salvage.Expeditions.Structure; using Content.Shared.CCVar; using Content.Shared.Examine; -using Content.Shared.Salvage; +using Content.Shared.Salvage.Expeditions; using Robust.Shared.CPUJob.JobQueues; using Robust.Shared.CPUJob.JobQueues.Queues; -using System.Linq; -using System.Threading; -using Content.Shared.Procedural; -using Content.Shared.Salvage.Expeditions; using Robust.Shared.GameStates; namespace Content.Server.Salvage; @@ -93,7 +90,7 @@ private void OnExpeditionShutdown(EntityUid uid, SalvageExpeditionComponent comp // Finish mission if (TryComp(component.Station, out var data)) { - FinishExpedition(data, uid); + FinishExpedition((component.Station, data), uid); } } @@ -122,7 +119,8 @@ private void UpdateExpeditions() } } - foreach (var comp in EntityQuery()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) { // Update offers if (comp.NextOffer > currentTime || comp.Claimed) @@ -131,17 +129,18 @@ private void UpdateExpeditions() comp.Cooldown = false; comp.NextOffer += TimeSpan.FromSeconds(_cooldown); GenerateMissions(comp); - UpdateConsoles(comp); + UpdateConsoles((uid, comp)); } } - private void FinishExpedition(SalvageExpeditionDataComponent component, EntityUid uid) + private void FinishExpedition(Entity expedition, EntityUid uid) { + var component = expedition.Comp; component.NextOffer = _timing.CurTime + TimeSpan.FromSeconds(_cooldown); Announce(uid, Loc.GetString("salvage-expedition-mission-completed")); component.ActiveMission = 0; component.Cooldown = true; - UpdateConsoles(component); + UpdateConsoles(expedition); } private void GenerateMissions(SalvageExpeditionDataComponent component) From 0b5fd38829df8e141991db72140bc900ad4692e7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 21 Oct 2023 17:35:04 -0400 Subject: [PATCH 200/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5e5b37630456c6..4b0c6ccb83b7a3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,16 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - {message: Lockers now once again inform you if you cannot access them., type: Fix} - id: 4535 - time: '2023-08-13T01:21:07.0000000+00:00' -- author: RiceMar - changes: - - {message: 'To satiate the salvage department''s rabid hunger for firepower, Nanotrasen - has started manufacturing proto-kinetic accelerators with bulky cannon-like - frames around the same internal machinery.', type: Add} - id: 4536 - time: '2023-08-13T04:50:42.0000000+00:00' - author: TaralGit changes: - {message: Added open bolt animations for most gun sprites. Use e and z (default @@ -2909,3 +2897,13 @@ Entries: when you t-talk., type: Add} id: 5034 time: '2023-10-21T20:09:54.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: Fixed shuttle thrusters and gyroscopes being disabled by default., type: Fix} + id: 5035 + time: '2023-10-21T21:33:49.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: Fixed the expeditions console not showing any expeditions., type: Fix} + id: 5036 + time: '2023-10-21T21:34:00.0000000+00:00' From b44281a5d4b69a6f154e3a6d9ee3908f60a2576d Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 21 Oct 2023 14:57:51 -0700 Subject: [PATCH 201/245] Fix whitelist commands not giving feedback with 0 arguments, trim names, add [player] completion hint (#21152) --- Content.Server/Whitelist/WhitelistCommands.cs | 80 +++++++++++++------ Resources/Changelog/Admin.yml | 9 +++ .../Locale/en-US/connection-messages.ftl | 26 +++--- Resources/Locale/en-US/shell.ftl | 2 + 4 files changed, 79 insertions(+), 38 deletions(-) diff --git a/Content.Server/Whitelist/WhitelistCommands.cs b/Content.Server/Whitelist/WhitelistCommands.cs index 59b576e7ca4f12..165b8dcae2208d 100644 --- a/Content.Server/Whitelist/WhitelistCommands.cs +++ b/Content.Server/Whitelist/WhitelistCommands.cs @@ -10,20 +10,23 @@ namespace Content.Server.Whitelist; [AdminCommand(AdminFlags.Ban)] -public sealed class AddWhitelistCommand : IConsoleCommand +public sealed class AddWhitelistCommand : LocalizedCommands { - public string Command => "whitelistadd"; - public string Description => Loc.GetString("command-whitelistadd-description"); - public string Help => Loc.GetString("command-whitelistadd-help"); - public async void Execute(IConsoleShell shell, string argStr, string[] args) + public override string Command => "whitelistadd"; + + public override async void Execute(IConsoleShell shell, string argStr, string[] args) { - if (args.Length != 1) + if (args.Length == 0) + { + shell.WriteError(Loc.GetString("shell-need-minimum-one-argument")); + shell.WriteLine(Help); return; + } var db = IoCManager.Resolve(); var loc = IoCManager.Resolve(); - var name = args[0]; + var name = string.Join(' ', args).Trim(); var data = await loc.LookupIdByNameAsync(name); if (data != null) @@ -32,34 +35,47 @@ public async void Execute(IConsoleShell shell, string argStr, string[] args) var isWhitelisted = await db.GetWhitelistStatusAsync(guid); if (isWhitelisted) { - shell.WriteLine(Loc.GetString("command-whitelistadd-existing", ("username", data.Username))); + shell.WriteLine(Loc.GetString("cmd-whitelistadd-existing", ("username", data.Username))); return; } await db.AddToWhitelistAsync(guid); - shell.WriteLine(Loc.GetString("command-whitelistadd-added", ("username", data.Username))); + shell.WriteLine(Loc.GetString("cmd-whitelistadd-added", ("username", data.Username))); return; } - shell.WriteError(Loc.GetString("command-whitelistadd-not-found", ("username", args[0]))); + shell.WriteError(Loc.GetString("cmd-whitelistadd-not-found", ("username", args[0]))); + } + + public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) + { + if (args.Length == 1) + { + return CompletionResult.FromHint(Loc.GetString("cmd-whitelistadd-arg-player")); + } + + return CompletionResult.Empty; } } [AdminCommand(AdminFlags.Ban)] -public sealed class RemoveWhitelistCommand : IConsoleCommand +public sealed class RemoveWhitelistCommand : LocalizedCommands { - public string Command => "whitelistremove"; - public string Description => Loc.GetString("command-whitelistremove-description"); - public string Help => Loc.GetString("command-whitelistremove-help"); - public async void Execute(IConsoleShell shell, string argStr, string[] args) + public override string Command => "whitelistremove"; + + public override async void Execute(IConsoleShell shell, string argStr, string[] args) { - if (args.Length != 1) + if (args.Length == 0) + { + shell.WriteError(Loc.GetString("shell-need-minimum-one-argument")); + shell.WriteLine(Help); return; + } var db = IoCManager.Resolve(); var loc = IoCManager.Resolve(); - var name = args[0]; + var name = string.Join(' ', args).Trim(); var data = await loc.LookupIdByNameAsync(name); if (data != null) @@ -68,29 +84,42 @@ public async void Execute(IConsoleShell shell, string argStr, string[] args) var isWhitelisted = await db.GetWhitelistStatusAsync(guid); if (!isWhitelisted) { - shell.WriteLine(Loc.GetString("command-whitelistremove-existing", ("username", data.Username))); + shell.WriteLine(Loc.GetString("cmd-whitelistremove-existing", ("username", data.Username))); return; } await db.RemoveFromWhitelistAsync(guid); - shell.WriteLine(Loc.GetString("command-whitelistremove-removed", ("username", data.Username))); + shell.WriteLine(Loc.GetString("cmd-whitelistremove-removed", ("username", data.Username))); return; } - shell.WriteError(Loc.GetString("command-whitelistremove-not-found", ("username", args[0]))); + shell.WriteError(Loc.GetString("cmd-whitelistremove-not-found", ("username", args[0]))); + } + + public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) + { + if (args.Length == 1) + { + return CompletionResult.FromHint(Loc.GetString("cmd-whitelistremove-arg-player")); + } + + return CompletionResult.Empty; } } [AdminCommand(AdminFlags.Ban)] -public sealed class KickNonWhitelistedCommand : IConsoleCommand +public sealed class KickNonWhitelistedCommand : LocalizedCommands { - public string Command => "kicknonwhitelisted"; - public string Description => Loc.GetString("command-kicknonwhitelisted-description"); - public string Help => Loc.GetString("command-kicknonwhitelisted-help"); - public async void Execute(IConsoleShell shell, string argStr, string[] args) + public override string Command => "kicknonwhitelisted"; + + public override async void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length != 0) + { + shell.WriteError(Loc.GetString("shell-wrong-arguments-number-need-specific", ("properAmount", 0), ("currentAmount", args.Length))); + shell.WriteLine(Help); return; + } var cfg = IoCManager.Resolve(); @@ -111,6 +140,5 @@ public async void Execute(IConsoleShell shell, string argStr, string[] args) net.DisconnectChannel(session.ConnectedClient, Loc.GetString("whitelist-not-whitelisted")); } } - } } diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 74156b9d1326a0..a5e13ab040b897 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -46,3 +46,12 @@ Entries: - {message: 'Fixed playtime being sorted incorrectly in the F7 players tab.', type: Fix} id: 7 time: '2023-10-16T04:23:00.0000000+00:00' +- author: DrSmugleaf + changes: + - {message: 'Fixed whitelist commands not giving feedback with 0 arguments.', type: Fix} + - {message: 'Fixed not trimming starting and trailing whitespaces within names + in whitelist commands.', type: Fix} + - {message: 'Added a \[player\] completion type hint to whitelist add and remove + commands.', type: Tweak} + id: 8 + time: '2023-10-21T09:53:00.0000000+00:00' diff --git a/Resources/Locale/en-US/connection-messages.ftl b/Resources/Locale/en-US/connection-messages.ftl index 2755cf789a5190..b9eccda3ec49ba 100644 --- a/Resources/Locale/en-US/connection-messages.ftl +++ b/Resources/Locale/en-US/connection-messages.ftl @@ -10,20 +10,22 @@ whitelist-playercount-invalid = {$min -> } whitelist-not-whitelisted-rp = You are not whitelisted. To become whitelisted, visit our Discord (which can be found at https://spacestation14.io) and check the #rp-whitelist channel. -command-whitelistadd-description = Adds the player with the given username to the server whitelist. -command-whitelistadd-help = whitelistadd -command-whitelistadd-existing = {$username} is already on the whitelist! -command-whitelistadd-added = {$username} added to the whitelist -command-whitelistadd-not-found = Unable to find '{$username}' +cmd-whitelistadd-desc = Adds the player with the given username to the server whitelist. +cmd-whitelistadd-help = Usage: whitelistadd +cmd-whitelistadd-existing = {$username} is already on the whitelist! +cmd-whitelistadd-added = {$username} added to the whitelist +cmd-whitelistadd-not-found = Unable to find '{$username}' +cmd-whitelistadd-arg-player = [player] -command-whitelistremove-description = Removes the player with the given username from the server whitelist. -command-whitelistremove-help = whitelistremove -command-whitelistremove-existing = {$username} is not on the whitelist! -command-whitelistremove-removed = {$username} removed from the whitelist -command-whitelistremove-not-found = Unable to find '{$username}' +cmd-whitelistremove-desc = Removes the player with the given username from the server whitelist. +cmd-whitelistremove-help = Usage: whitelistremove +cmd-whitelistremove-existing = {$username} is not on the whitelist! +cmd-whitelistremove-removed = {$username} removed from the whitelist +cmd-whitelistremove-not-found = Unable to find '{$username}' +cmd-whitelistremove-arg-player = [player] -command-kicknonwhitelisted-description = Kicks all non-whitelisted players from the server. -command-kicknonwhitelisted-help = kicknonwhitelisted +cmd-kicknonwhitelisted-desc = Kicks all non-whitelisted players from the server. +cmd-kicknonwhitelisted-help = Usage: kicknonwhitelisted ban-banned-permanent = This ban will only be removed via appeal. ban-banned-permanent-appeal = This ban will only be removed via appeal. You can appeal at {$link} diff --git a/Resources/Locale/en-US/shell.ftl b/Resources/Locale/en-US/shell.ftl index fe69bb0c4a3875..7a66fbc794d721 100644 --- a/Resources/Locale/en-US/shell.ftl +++ b/Resources/Locale/en-US/shell.ftl @@ -18,6 +18,8 @@ shell-argument-must-be-number = Argument must be a number. shell-argument-must-be-boolean = Argument must be a boolean. shell-wrong-arguments-number = Wrong number of arguments. shell-need-between-arguments = Need {$lower} to {$upper} arguments! +shell-need-minimum-arguments = Need at least {$minimum} arguments! +shell-need-minimum-one-argument = Need at least one argument! shell-argument-uid = EntityUid From d28208282a71ae4466b454577bafeccfddb79c4f Mon Sep 17 00:00:00 2001 From: nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com> Date: Sun, 22 Oct 2023 05:49:56 +0000 Subject: [PATCH 202/245] Telekinetic door prying fix (#21150) --- Content.Shared/Prying/Systems/PryingSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Shared/Prying/Systems/PryingSystem.cs b/Content.Shared/Prying/Systems/PryingSystem.cs index 40b77efe2287a0..19e63de29e093c 100644 --- a/Content.Shared/Prying/Systems/PryingSystem.cs +++ b/Content.Shared/Prying/Systems/PryingSystem.cs @@ -126,6 +126,7 @@ private bool StartPry(EntityUid target, EntityUid user, EntityUid? tool, float t { BreakOnDamage = true, BreakOnUserMove = true, + BreakOnWeightlessMove = true, }; if (tool != null) From 3f241b439c92a8e49c73777ad26ebb2bcaf3b425 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sun, 22 Oct 2023 06:51:01 +0100 Subject: [PATCH 203/245] emitter bolts can mine (#21135) Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index bf834983215e6f..b94191ef0278fa 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -300,6 +300,8 @@ damage: types: Heat: 14 + # mining laser real + - type: GatheringProjectile - type: Tag tags: - EmitterBolt From 082e3b9a46be1ee1da344f9e9df4f0a149aa1b0b Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Oct 2023 01:51:02 -0400 Subject: [PATCH 204/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4b0c6ccb83b7a3..8d4682c0239758 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: TaralGit - changes: - - {message: Added open bolt animations for most gun sprites. Use e and z (default - keybinds) to toggle bolt / cycling., type: Add} - id: 4537 - time: '2023-08-13T05:58:08.0000000+00:00' - author: metalgearsloth changes: - {message: Fix the lack of whitelist check for hand gathering., type: Fix} @@ -2907,3 +2901,9 @@ Entries: - {message: Fixed the expeditions console not showing any expeditions., type: Fix} id: 5036 time: '2023-10-21T21:34:00.0000000+00:00' +- author: nikthechampiongr + changes: + - {message: Players can no longer telekinetically pry open doors while they are + not under the effects of gravity., type: Fix} + id: 5037 + time: '2023-10-22T05:49:56.0000000+00:00' From 60bfdc49684f9ca57f00e2b165740a5bc9bb771c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Oct 2023 01:52:06 -0400 Subject: [PATCH 205/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8d4682c0239758..5e0e18b71bb347 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - {message: Fix the lack of whitelist check for hand gathering., type: Fix} - id: 4538 - time: '2023-08-13T07:07:34.0000000+00:00' - author: metalgearsloth changes: - {message: Nerf pickaxe raw damage slightly., type: Tweak} @@ -2907,3 +2902,9 @@ Entries: not under the effects of gravity., type: Fix} id: 5037 time: '2023-10-22T05:49:56.0000000+00:00' +- author: deltanedas + changes: + - {message: 'Emitters now destroy rocks in 1 hit like crushers and PKAs, you can + use them for laser mining.', type: Tweak} + id: 5038 + time: '2023-10-22T05:51:01.0000000+00:00' From e2352fc28eb865eb1d318c3bb363be9c602b9729 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 22 Oct 2023 16:53:15 +1100 Subject: [PATCH 206/245] Update buckle jointrelay (#21079) --- Content.Shared/Buckle/SharedBuckleSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Buckle/SharedBuckleSystem.cs b/Content.Shared/Buckle/SharedBuckleSystem.cs index 81d479ca34c1dc..7edf2448aed99b 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.cs @@ -75,7 +75,7 @@ private void ReAttach( return; _transform.SetLocalRotation(buckleUid, Angle.Zero, buckleTransform); - _joints.RefreshRelay(buckleUid, strapUid); + _joints.SetRelay(buckleUid, strapUid); switch (strapComp.Position) { From a5f1683f5451299f7b2d0c8972b551ebf258305b Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 22 Oct 2023 16:53:39 +1100 Subject: [PATCH 207/245] RCD and tile placement fixes (#21132) --- Content.Shared/RCD/Systems/RCDSystem.cs | 18 +++++++++++++---- Content.Shared/Tiles/FloorTileSystem.cs | 27 ++++++++++++++++++------- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index f94d155d9729d0..ccc47a2fdeb890 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -11,6 +11,7 @@ using Content.Shared.Popups; using Content.Shared.RCD.Components; using Content.Shared.Tag; +using Content.Shared.Tiles; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -22,17 +23,19 @@ namespace Content.Shared.RCD.Systems; public sealed class RCDSystem : EntitySystem { + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IMapManager _mapMan = default!; + [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly ITileDefinitionManager _tileDefMan = default!; + [Dependency] private readonly FloorTileSystem _floors = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedChargesSystem _charges = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly SharedInteractionSystem _interaction = default!; - [Dependency] private readonly IMapManager _mapMan = default!; - [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly SharedMapSystem _mapSystem = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly TagSystem _tag = default!; - [Dependency] private readonly ITileDefinitionManager _tileDefMan = default!; - [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly TurfSystem _turf = default!; private readonly int RcdModeCount = Enum.GetValues(typeof(RcdMode)).Length; @@ -156,10 +159,17 @@ private void OnDoAfter(EntityUid uid, RCDComponent comp, RCDDoAfterEvent args) var tile = mapGrid.GetTileRef(location); var snapPos = mapGrid.TileIndicesFor(location); + // I love that this uses entirely separate code to construction and tile placement!!! + switch (comp.Mode) { //Floor mode just needs the tile to be a space tile (subFloor) case RcdMode.Floors: + if (!_floors.CanPlaceTile(gridId.Value, mapGrid, out var reason)) + { + _popup.PopupClient(reason, user, user); + return; + } mapGrid.SetTile(snapPos, new Tile(_tileDefMan[comp.Floor].TileId)); _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(args.User):user} used RCD to set grid: {tile.GridUid} {snapPos} to {comp.Floor}"); diff --git a/Content.Shared/Tiles/FloorTileSystem.cs b/Content.Shared/Tiles/FloorTileSystem.cs index bf757eb49ea850..dcf914ccf86af3 100644 --- a/Content.Shared/Tiles/FloorTileSystem.cs +++ b/Content.Shared/Tiles/FloorTileSystem.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Numerics; using Content.Shared.Administration.Logs; @@ -123,14 +124,10 @@ private void OnAfterInteract(EntityUid uid, FloorTileComponent component, AfterI if (mapGrid != null) { var gridUid = mapGrid.Owner; - var ev = new FloorTileAttemptEvent(); - RaiseLocalEvent(mapGrid); - if (HasComp(gridUid) || ev.Cancelled) + if (!CanPlaceTile(gridUid, mapGrid, out var reason)) { - if (_netManager.IsClient && _timing.IsFirstTimePredicted) - _popup.PopupEntity(Loc.GetString("invalid-floor-placement"), args.User); - + _popup.PopupClient(reason, args.User, args.User); return; } @@ -177,9 +174,25 @@ private void PlaceAt(EntityUid user, EntityUid gridUid, MapGridComponent mapGrid { _adminLogger.Add(LogType.Tile, LogImpact.Low, $"{ToPrettyString(user):actor} placed tile {_tileDefinitionManager[tileId].Name} at {ToPrettyString(gridUid)} {location}"); - var variant = ((ContentTileDefinition) _tileDefinitionManager[tileId]).PickVariant(); + // TODO: Proper predicted RNG. + var variant = (byte) (_timing.CurTick.Value % ((ContentTileDefinition) _tileDefinitionManager[tileId]).Variants); mapGrid.SetTile(location.Offset(new Vector2(offset, offset)), new Tile(tileId, 0, variant)); _audio.PlayPredicted(placeSound, location, user, AudioHelpers.WithVariation(0.125f, _random)); } + + public bool CanPlaceTile(EntityUid gridUid, MapGridComponent component, [NotNullWhen(false)] out string? reason) + { + var ev = new FloorTileAttemptEvent(); + RaiseLocalEvent(gridUid, ref ev); + + if (HasComp(gridUid) || ev.Cancelled) + { + reason = Loc.GetString("invalid-floor-placement"); + return false; + } + + reason = null; + return true; + } } From e3eaba1ebb6406f168ad2841aa8a5737fc034ee0 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Sun, 22 Oct 2023 16:54:30 +1100 Subject: [PATCH 208/245] Fix inventory transform bug (#21144) --- .../Inventory/InventorySystem.Equip.cs | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index f3181a87b161dd..90c9f0e1e0fddf 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -27,6 +27,7 @@ public abstract partial class InventorySystem [Dependency] private readonly SharedHandsSystem _handsSystem = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly INetManager _netMan = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; private void InitializeEquip() { @@ -372,20 +373,10 @@ public bool TryUnequip(EntityUid actor, EntityUid target, string slot, [NotNullW } } - if (force) - { - slotContainer.ForceRemove(removedItem.Value); - } - else - { - if (!slotContainer.Remove(removedItem.Value)) - { - //should never happen bc of the canremove lets just keep in just in case - return false; - } - } + if (!slotContainer.Remove(removedItem.Value, force: force)) + return false; - Transform(removedItem.Value).Coordinates = Transform(target).Coordinates; + _transform.DropNextTo(removedItem.Value, target); if (!silent && Resolve(removedItem.Value, ref clothing, false) && clothing.UnequipSound != null && _gameTiming.IsFirstTimePredicted) { @@ -405,8 +396,7 @@ public bool TryUnequip(EntityUid actor, EntityUid target, string slot, [NotNullW SoundSystem.Play(clothing.UnequipSound.GetSound(), filter, target, clothing.UnequipSound.Params.WithVolume(-2f)); } - inventory.Dirty(); - + Dirty(target, inventory); _movementSpeed.RefreshMovementSpeedModifiers(target); return true; From fbf4333a03a701df698671b131c73ec485d46c2c Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Sun, 22 Oct 2023 16:55:10 +1100 Subject: [PATCH 209/245] Maybe fix hand test failures (#21157) --- Content.Client/Hands/Systems/HandsSystem.cs | 3 ++- Content.Shared/Hands/Components/HandsComponent.cs | 3 ++- Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Content.Client/Hands/Systems/HandsSystem.cs b/Content.Client/Hands/Systems/HandsSystem.cs index f44bc1ec97985d..ed40589f7fd4eb 100644 --- a/Content.Client/Hands/Systems/HandsSystem.cs +++ b/Content.Client/Hands/Systems/HandsSystem.cs @@ -95,7 +95,8 @@ private void HandleComponentState(EntityUid uid, HandsComponent component, ref C } } - component.SortedHands = new(state.HandNames); + component.SortedHands.Clear(); + component.SortedHands.AddRange(state.HandNames); var sorted = addedHands.OrderBy(hand => component.SortedHands.IndexOf(hand.Name)); foreach (var hand in sorted) diff --git a/Content.Shared/Hands/Components/HandsComponent.cs b/Content.Shared/Hands/Components/HandsComponent.cs index c1664289ce99d7..0bece1d141ab52 100644 --- a/Content.Shared/Hands/Components/HandsComponent.cs +++ b/Content.Shared/Hands/Components/HandsComponent.cs @@ -97,8 +97,9 @@ public sealed class HandsComponentState : ComponentState public HandsComponentState(HandsComponent handComp) { + // cloning lists because of test networking. Hands = new(handComp.Hands.Values); - HandNames = handComp.SortedHands; + HandNames = new(handComp.SortedHands); ActiveHand = handComp.ActiveHand?.Name; } } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs index e1de636969b833..6b786fdfaa8322 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs @@ -69,9 +69,9 @@ public virtual void RemoveHand(EntityUid uid, string handName, HandsComponent? h if (!handsComp.Hands.Remove(handName, out var hand)) return; + handsComp.SortedHands.Remove(hand.Name); TryDrop(uid, hand, null, false, true, handsComp); hand.Container?.Shutdown(); - handsComp.SortedHands.Remove(hand.Name); if (handsComp.ActiveHand == hand) TrySetActiveHand(uid, handsComp.SortedHands.FirstOrDefault(), handsComp); From 975a8e89e78757c4b6bb07dffce5fb177ff93cf1 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Oct 2023 01:55:34 -0400 Subject: [PATCH 210/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5e0e18b71bb347..259ff56d488b0f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - {message: Nerf pickaxe raw damage slightly., type: Tweak} - - {message: Nerf pickaxe and drill structural damage., type: Tweak} - id: 4539 - time: '2023-08-13T07:07:48.0000000+00:00' -- author: metalgearsloth - changes: - - {message: Fix bolt-less gun manual cycling (namely the wt550)., type: Fix} - id: 4540 - time: '2023-08-13T07:08:00.0000000+00:00' - author: LightVillet changes: - {message: Fixed spilling empty containers, type: Fix} @@ -2908,3 +2897,14 @@ Entries: use them for laser mining.', type: Tweak} id: 5038 time: '2023-10-22T05:51:01.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Fix tile placement mispredicting and flickering., type: Fix} + id: 5039 + time: '2023-10-22T05:53:39.0000000+00:00' +- author: ElectroJr + changes: + - {message: Fixed a bug that caused items to get stuck to vehicles when unequipping + clothing., type: Fix} + id: 5040 + time: '2023-10-22T05:54:30.0000000+00:00' From 7c2a00d36092820809f4176f1868ada4037079ee Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 22 Oct 2023 17:00:23 +1100 Subject: [PATCH 211/245] Update submodule to 171.0.0 (#21158) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 58e3a4eb4ada45..554e0777b1ba6b 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 58e3a4eb4ada451395c7d961f4b6d724756a7c26 +Subproject commit 554e0777b1ba6ba096d8f4407d5c35ecc7b0f22f From c1bc177d1e3a02467bd0538eaa8e2b86445725c6 Mon Sep 17 00:00:00 2001 From: iacore <74560659+iacore@users.noreply.github.com> Date: Sun, 22 Oct 2023 06:04:24 +0000 Subject: [PATCH 212/245] Make secure crates weldable, for real this time (#21037) --- .../Entities/Structures/Storage/Crates/base_structurecrates.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml index 44800a3e22c0ec..bf8003255f22d9 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml @@ -80,7 +80,7 @@ - type: ResistLocker - type: entity - parent: CrateGeneric + parent: CrateBaseWeldable id: CrateBaseSecure components: - type: Lock From dc9f9b55eed9107bc83c65d7d383711c47ee24a1 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sun, 22 Oct 2023 07:05:48 +0100 Subject: [PATCH 213/245] ignition source refactor (#21044) Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../IgnitionSource/IgniteOnTriggerSystem.cs | 16 +++++----- .../IgnitionSource/IgnitionSourceComponent.cs | 11 +++---- .../IgnitionSource/IgnitionSourceSystem.cs | 31 +++++++++---------- 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs b/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs index 1e4258869963b0..256a8578642ad4 100644 --- a/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs +++ b/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs @@ -35,21 +35,21 @@ public override void Update(float deltaTime) if (_timing.CurTime < comp.IgnitedUntil) continue; - _source.SetIgnited(uid, false, source); + _source.SetIgnited((uid, source), false); } } - private void OnTrigger(EntityUid uid, IgniteOnTriggerComponent comp, TriggerEvent args) + private void OnTrigger(Entity ent, ref TriggerEvent args) { // prevent spamming sound and ignition - TryComp(uid, out var delay); - if (_useDelay.ActiveDelay(uid, delay)) + TryComp(ent, out var delay); + if (_useDelay.ActiveDelay(ent, delay)) return; - _source.SetIgnited(uid); - _audio.PlayPvs(comp.IgniteSound, uid); + _source.SetIgnited(ent.Owner); + _audio.PlayPvs(ent.Comp.IgniteSound, ent); - _useDelay.BeginDelay(uid, delay); - comp.IgnitedUntil = _timing.CurTime + comp.IgnitedTime; + _useDelay.BeginDelay(ent, delay); + ent.Comp.IgnitedUntil = _timing.CurTime + ent.Comp.IgnitedTime; } } diff --git a/Content.Server/IgnitionSource/IgnitionSourceComponent.cs b/Content.Server/IgnitionSource/IgnitionSourceComponent.cs index d5a53c6ddb1cd4..6b6a16000f949d 100644 --- a/Content.Server/IgnitionSource/IgnitionSourceComponent.cs +++ b/Content.Server/IgnitionSource/IgnitionSourceComponent.cs @@ -1,15 +1,14 @@ namespace Content.Server.IgnitionSource; /// -/// This is used for... +/// This is used for creating atmosphere hotspots while ignited to start reactions such as fire. /// -[RegisterComponent] -[Access(typeof(IgnitionSourceSystem))] +[RegisterComponent, Access(typeof(IgnitionSourceSystem))] public sealed partial class IgnitionSourceComponent : Component { - [DataField("ignited")] - public bool Ignited = false; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Ignited; - [DataField("temperature", required: true)] + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] public int Temperature; } diff --git a/Content.Server/IgnitionSource/IgnitionSourceSystem.cs b/Content.Server/IgnitionSource/IgnitionSourceSystem.cs index b70cf7a9a7c8d0..0a714063f41376 100644 --- a/Content.Server/IgnitionSource/IgnitionSourceSystem.cs +++ b/Content.Server/IgnitionSource/IgnitionSourceSystem.cs @@ -7,34 +7,32 @@ namespace Content.Server.IgnitionSource; /// /// This handles ignition, Jez basically coded this. /// -/// public sealed class IgnitionSourceSystem : EntitySystem { - /// - /// - [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; - [Dependency] private readonly TransformSystem _transformSystem = default!; + [Dependency] private readonly AtmosphereSystem _atmosphere = default!; + [Dependency] private readonly TransformSystem _transform = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnIsHot); + + SubscribeLocalEvent(OnIsHot); } - private void OnIsHot(EntityUid uid, IgnitionSourceComponent component, IsHotEvent args) + private void OnIsHot(Entity ent, ref IsHotEvent args) { - SetIgnited(uid, args.IsHot, component); + SetIgnited((ent.Owner, ent.Comp), args.IsHot); } /// /// Simply sets the ignited field to the ignited param. /// - public void SetIgnited(EntityUid uid, bool ignited = true, IgnitionSourceComponent? comp = null) + public void SetIgnited(Entity ent, bool ignited = true) { - if (!Resolve(uid, ref comp)) + if (!Resolve(ent, ref ent.Comp)) return; - comp.Ignited = ignited; + ent.Comp.Ignited = ignited; } public override void Update(float frameTime) @@ -42,17 +40,16 @@ public override void Update(float frameTime) base.Update(frameTime); var query = EntityQueryEnumerator(); - while (query.MoveNext(out var source, out var component, out var transform)) + while (query.MoveNext(out var uid, out var comp, out var xform)) { - if (!component.Ignited) + if (!comp.Ignited) continue; - if (transform.GridUid is { } gridUid) + if (xform.GridUid is { } gridUid) { - var position = _transformSystem.GetGridOrMapTilePosition(source, transform); - _atmosphereSystem.HotspotExpose(gridUid, position, component.Temperature, 50, source, true); + var position = _transform.GetGridOrMapTilePosition(uid, xform); + _atmosphere.HotspotExpose(gridUid, position, comp.Temperature, 50, uid, true); } } - } } From 002d3be16b3fa2e3da383e4c6608f4efcfc90c37 Mon Sep 17 00:00:00 2001 From: EnDecc <33369477+Endecc@users.noreply.github.com> Date: Sun, 22 Oct 2023 03:34:06 -0400 Subject: [PATCH 214/245] The Quartermaster's Requisition Digi-board (#21023) * Added sprites * Added item in game * Ditched glowing light indicator to simplify implementation * Added clipboard to locker fill * Added traitor objective * forgor meta.json * forgor clip textures on front-facing in-hand sprites * lowered concussiveness of bureaucracy * added remote cargo ordering, paper sucking, and removed paper on spawn * slightly reduce storage capacity so it can fit in backpacks --- Resources/Locale/en-US/cargo/qm-clipboard.ftl | 1 + .../Catalog/Fills/Lockers/heads.yml | 1 + .../Entities/Objects/Misc/paper.yml | 70 ++++++++++++++++++ .../Prototypes/Objectives/objectiveGroups.yml | 1 + Resources/Prototypes/Objectives/traitor.yml | 13 ++++ .../Misc/qm_clipboard.rsi/equipped-BELT.png | Bin 0 -> 5427 bytes .../Misc/qm_clipboard.rsi/inhand-left.png | Bin 0 -> 6146 bytes .../Misc/qm_clipboard.rsi/inhand-right.png | Bin 0 -> 6077 bytes .../Objects/Misc/qm_clipboard.rsi/meta.json | 35 +++++++++ .../Misc/qm_clipboard.rsi/qm_clipboard.png | Bin 0 -> 5356 bytes .../qm_clipboard.rsi/qm_clipboard_over.png | Bin 0 -> 4883 bytes .../qm_clipboard.rsi/qm_clipboard_paper.png | Bin 0 -> 5374 bytes .../qm_clipboard.rsi/qm_clipboard_pen.png | Bin 0 -> 4830 bytes 13 files changed, 121 insertions(+) create mode 100644 Resources/Locale/en-US/cargo/qm-clipboard.ftl create mode 100644 Resources/Textures/Objects/Misc/qm_clipboard.rsi/equipped-BELT.png create mode 100644 Resources/Textures/Objects/Misc/qm_clipboard.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Misc/qm_clipboard.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Misc/qm_clipboard.rsi/meta.json create mode 100644 Resources/Textures/Objects/Misc/qm_clipboard.rsi/qm_clipboard.png create mode 100644 Resources/Textures/Objects/Misc/qm_clipboard.rsi/qm_clipboard_over.png create mode 100644 Resources/Textures/Objects/Misc/qm_clipboard.rsi/qm_clipboard_paper.png create mode 100644 Resources/Textures/Objects/Misc/qm_clipboard.rsi/qm_clipboard_pen.png diff --git a/Resources/Locale/en-US/cargo/qm-clipboard.ftl b/Resources/Locale/en-US/cargo/qm-clipboard.ftl new file mode 100644 index 00000000000000..1f77aa98f0d8ad --- /dev/null +++ b/Resources/Locale/en-US/cargo/qm-clipboard.ftl @@ -0,0 +1 @@ +qm-clipboard-computer-verb-text = Toggle Requests diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index bf1ca09eadb1b4..0d000cc5dc890f 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -6,6 +6,7 @@ - type: StorageFill contents: - id: ClothingNeckCloakQm + - id: BoxFolderQmClipboard - id: ClothingHeadsetCargo - id: ClothingUniformJumpsuitQMTurtleneck - id: ClothingUniformJumpskirtQMTurtleneck diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 5b4e5e24bac512..132d6b7aff91be 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -494,6 +494,76 @@ types: Blunt: 6 +- type: entity + id: BoxFolderQmClipboard + parent: BoxFolderBase + name: requisition digi-board + description: A bulky electric clipboard, filled with shipping orders and financing details. With so many compromising documents, you ought to keep this safe. + components: + - type: Sprite + sprite: Objects/Misc/qm_clipboard.rsi + layers: + - state: qm_clipboard + - state: qm_clipboard_paper + map: ["qm_clipboard_paper"] + visible: false + - state: qm_clipboard_pen + map: ["qm_clipboard_pen"] + visible: false + - state: qm_clipboard_over + - type: ContainerContainer + containers: + storagebase: !type:Container + ents: [] + pen_slot: !type:ContainerSlot {} + - type: ItemSlots + slots: + pen_slot: + name: Pen + whitelist: + tags: + - Write + insertOnInteract: true + - type: Item + sprite: Objects/Misc/qm_clipboard.rsi + size: 30 + - type: Clothing + slots: [belt] + quickEquip: false + sprite: Objects/Misc/qm_clipboard.rsi + - type: Storage + capacity: 90 + quickInsert: true + whitelist: + tags: + - Document + - type: StorageFill + contents: [] #to override base folder fill + - type: ItemMapper + mapLayers: + qm_clipboard_paper: + whitelist: + tags: + - Document + qm_clipboard_pen: + whitelist: + tags: + - Write + - type: CargoOrderConsole + - type: ActivatableUI + verbText: qm-clipboard-computer-verb-text + key: enum.CargoConsoleUiKey.Orders + - type: UserInterface + interfaces: + - key: enum.CargoConsoleUiKey.Orders + type: CargoOrderConsoleBoundUserInterface + - key: enum.StorageUiKey.Key + type: StorageBoundUserInterface + - type: MeleeWeapon + damage: + types: + Blunt: 10 + # Stamps - type: entity name: generic rubber stamp diff --git a/Resources/Prototypes/Objectives/objectiveGroups.yml b/Resources/Prototypes/Objectives/objectiveGroups.yml index 01f3dd41094660..2ddf78e032ba8a 100644 --- a/Resources/Prototypes/Objectives/objectiveGroups.yml +++ b/Resources/Prototypes/Objectives/objectiveGroups.yml @@ -16,6 +16,7 @@ NukeDiskStealObjective: 1 MagbootsStealObjective: 1 CorgiMeatStealObjective: 1 + ClipboardStealObjective: 1 CaptainGunStealObjective: 0.5 CaptainJetpackStealObjective: 0.5 HandTeleporterStealObjective: 0.5 diff --git a/Resources/Prototypes/Objectives/traitor.yml b/Resources/Prototypes/Objectives/traitor.yml index cc4324e729ca23..f0e8daad3d1cba 100644 --- a/Resources/Prototypes/Objectives/traitor.yml +++ b/Resources/Prototypes/Objectives/traitor.yml @@ -196,6 +196,19 @@ prototype: ClothingShoesBootsMagAdv owner: job-name-ce +## qm + +- type: entity + noSpawn: true + parent: BaseTraitorStealObjective + id: ClipboardStealObjective + components: + - type: NotJobRequirement + job: Quartermaster + - type: StealCondition + prototype: BoxFolderQmClipboard + owner: job-name-qm + ## hop - type: entity diff --git a/Resources/Textures/Objects/Misc/qm_clipboard.rsi/equipped-BELT.png b/Resources/Textures/Objects/Misc/qm_clipboard.rsi/equipped-BELT.png new file mode 100644 index 0000000000000000000000000000000000000000..463095e280554cc4a92f088d5683a06a6a612364 GIT binary patch literal 5427 zcmeHLc|25m8z0FMMU<_m)2Prj`(kG7jfuG$G+aw6&deMPW-&7w5=rI8C@GZ+b&(~l zL{VK8Qn$TyEw{QVA_`gR_IBkxGqio)`%jh>9}NMrcrgS(ar`g@BCh>a zfM8GG;^||zm()(xRWrQ)gib55?-@$CF-3|%N1cTqY zwnU#8w{jf`OWnaGrkdWq`hu9;lBs@X6m%xg46V-3ztKHhF;(rIwO7-opPm@)em^%6 zxj}8qbsPPe4qBBD|IqKscGgR3U67QsuPO1lRn1%annyKb4@)%V_7|ecfTAu*@AKc1 z=uO*q4A1iy>n52ER1BmCtNRZiI)_c&n;c8oZX>kYPEr$Hwz$ z%%B0;>+H2cao05+tX2o)@$8Xt`|$6MkATL8U3UnE*#^rRPR{!?X2X%IiKzGj`oO7_ z)iEf)oKri3y+@`1oo8aR<;kMAeN}K7a^yKidewyom#iy}5*&+dm>aRIDdWuz($07r zm#tWNDz3q$!`ee_iOeHo>1N83LB3Cs$Np9|wJvk3qZw&62=i@G!VH7QaFqQgr4?xYpn7kqth) zcK5JCpNFK~LiO?zf6Rk~l<9qCdmh%b<~~~9dN?7nwY2!|Jm1FRTyDBtk1X7@>UV2; z+f!sd?w1Aik4dQ01Jl^LVX^ipe#7<0x|`d}ZEtc)e=VM#e=L2ky3JyATSMQ=tLN5C zaoD&w(q4(FI#~5Yp?5NSg;Uq! zWlp-bhlys;$jdCj^b*?hjV_dptvN%(AMsAvWl3s{$_gVtb+cI6M9{l>swcdBez+E*S(6ka;YwFZfAgT-J_&3 z>;7J&bK9===wkbgPZ8Q1;%j!FFHEbQtyg_=>mSkPu>q$pRwb-b9GSAcxGOI&;>?ra zp=aSnAmgu9_E!!@hw#?621QvS5Nccabh;0dPXD-M!V6_?VwR&vy^DEcNbq6yN?NO{ z8@JzBo09MDcmK3hw%sr5)3 z_tZgg94P%w=Mpl{$&=3nLFso1YSu@}N@m3@*c)Q>_X%wvV`eIDF`n)jW?U(@2zfg= zIEubf`SA7_b*bc1XtFzy&)qLH6wSOHy?;)3;#2J(6!_QF*Jr&<7AAGpb`H+%-g$FP zzS-T%7x7QEPxW@lSb^K`q=$+kI-q% zBEV&-g^?eKTvq;L`bOfbrqzFMs&;0e(^eT_CANn&H40v7jc@w%(VWIIrj?DU*18be zKJL`PfhosQp~U&Y{(Vyi9n}LOn?j;Am!stb zv`7+;!BMGH3>J^U<592$N*XVefpI9I)KUpCf#C*8xe~ru#uo_zB__xb#mXF!NLUYi z9G^hUVts-aN+(%>`M|`1Vhj$A#RvqLFFm9(##$I;azOv+A@ze_1u$$#DvFhGA;wxr zD6{+$g2(;jFOHQ&tJ2|dF;FxlfK8=vRNPk~-I*+(PaaAN!ubNR$_pm@D@z$a>@!(k zjZLXhrSs)LVE0eBUs-?5U1bbgu~;-W5jR#jJf@o?QW>Ad6LI-Gn(7h@aVcR05Rc-J z2zV5ciU&~?D&7u-1vx~JN(Lc3p7#Y5Qz(^zLN26)g2B;z7{`tTl5qqs8AZf_5Q<2~ zlTlP6k%$VzQ|w4s5VEtQa=w7@mhj=O1f#zkl@f{vL-ELV5E)M(qIgsuj7Nb%DI5+D z#UX~-fg}QnOu&OGC?1!#Oe7J2a5?z`FdV{&h2biNl5m=<57QBeM`J%re4;^F80-Mg z0lttYl1o3U{P+UMR|YEi#F43X1S+0NAyMpbI1=Tvkv}An!o8?O#bMESqDrGI3=K{P zrWRCoDh!~K!`aa25(t!uBz_`Mv?EeEC_w3{YH+||qAVVKDQpq1?D@&A_l066?j|Nd zG+(6x09E7CK<-2kDYzDzs0r*hq2fk>!f*(l;gc=(QO^H|a*-i2k;?^nC?b&zmkT6u zP#~FrMe*=d5*7zhiDd3XxjvywMPV{ID1ltV;Y{Id;1*J416WUzX`@Q}lf66wQZj|b z6HquT3PY|=k&*H9WejHhl9%Ci$wtTn~=ea3%pigJ}p+0e8I8* z&26#{|7HjP_#Wh&`29}Tce=ibfp0SY-d*46`X&ax$@qJB{om-)`TV&93E?*&Is7pb zlykKf{t(jSc)GhG43xk7dtd$qOQwlEf}{w9UcGWxYZ8_6V4;?b$zo`A>*yP*Yh)D$ zIm4n>rkkrD{8wNbPUkXq_LbKs?%9}F7jeA-O2YiTUV15&9UaY$p0XjQ?Z)R_S|~<- zs}?e!+#MG!+2YjG=Q(9;A&jBi#wmH2CoNS*j2rd4MJWrbUU}_ojtyYmlb$tE@RQ$; zHeCSYczlj@*29PIMixLhTsEB%4nX-a8~_SLGw2XVbjOF2zDEu8 zb0WWqv9sa{liXxt?j| zEzO&*eacPsdu!SS)XpVbMJ&gi)JF_YS5>>JK{4UPk8lRkfL^di1l+DDZ8A}ALbJj zFFW_iMC!HwsYr^X$>-<@d32|=&9vRh8#j%o9$KzZdvdC(L3P%8h5E-6XG-yY*A5p{ zXU*Ve*I549H!R>+3+OSGL6g%nmH%``jAfkY*?wWBwB|{19B$xW&%oBg;g{F5q!DoW zoUHuJb>iJKN>3{8=xoP6;g;5WYCJXBxjk@2uK1Hj64hnq|MuPRu5mV*wW(8zQs_{i zC!a5~lY&2tCXAAzVwNqT=zHDDyrnj{3>i4%d*yUrewjhFsdke6$zVH9)bzSiwpgLx zy=@7tX=P3NFY+yySw9{=utcHkiE(4Y?I%M$4V;6}lZP|(#V5mF!Rj?;?xxncnp)b6 z(>u16#rVpLTurXTHhz*^;!T$M)Qyy~s%|)}yq%c1AwyRdI!f5PJ5{UB2XbEAKZDTy zkjNu5&$0D%iP1xxRweK5wF;0GSwd8$dr#j4VV_tho4xiTCbq8*GgeTrjihvJEUUpZT&T`8j?YJN=v7?T@!sG!gDJqjSS` zdSkd9Y4hz$bO*}gtp_yI!j)7z6)C*3Y^;2})~&GNup+PA>;V>5GcKnf^<>5EvF^1Q z6M=fX&A~t{A1G^`Jm(*^|JtYYxbCvKCf8wP^yD#b-n-7YsL1v~=o4E`|pW7@nr{_<7g{3K>f>w}Xreg&`SAOFt!qKJmA9WJ792dVh3 z)jfCHN#lvHJ*$Z9$&=x;<}&ZuQL6jzz03F287P?yxZs$k`Pi`jQ?1Gngg=0Ind3V6 zA+Bx1vY9ylKdXz}si#-h18$02Pz-L7BFXS`Rd(WSxMx|I-N*hu=|f zJJ)qxx$PiAmSVQt%cJ|uT|a+SPUic<3iDddbi|v9YZ|_GTI=k(w>$11ySm3>ldc)# zBJRRDgkYn(X6nbs_N4AAC+2=m;N@eXGQI)ZpPSCu>F`{~&zKIyw^xd)W-!-HswY0k zf?<2)4ru^nztW^7YgO@^{acnY;_ubZ(szA+l}-w!n)c`g;(Oa}JU=bb*shpuFY2$M zxa-4bE8Nu~O4=X0 z@=NsY>#H>Mmu#!tvSfzhnQI;5%nfCq*!FJBE$2GE?xUwZ^SX}YahbL$!bsreo$vih zm4P4uB}uJZHaxvz>CTE4BD{@>j@*6Veq);5zM4y7TJw=~Sn}n9ymy`rrt~9KxP9S8 zM^0UQpCF%_{zmQr_KcN6kNZ)CR-b;be&uD!cJEC|6aCqvM-9E%&l+quC3(NVVNN4h zwj6n#cK`k}t$Tv^Ne<$R+(T}X)`+a=dC`AAwEeiA`X#Yh@`GNYPh-WzO|r)Te-Je#O>R6Mw@iac#N)knXhwl1r=$ici zOVtLl*)fDOkFi5}c^%fin3-4U4qe%*Jnh`6|14Z#RZC9gBgM#wwUWnYrE~`Ad5(W{ z>=6Z;{r@ddUz%$I%^6*8bpxWLh&z8N+5OcYQNBl)JDE)HMwYP76q&V6r)OMIyX_-4 z(Y$4)s(9g;<{WjhzyFzc-azqlR~uK$V8ZQqPwKu~D6RBuf2zo=NY!jAw03ZA(#2`! zw^yMiLYN|q-f>Y%_~d-XLy|18gSZvGJ4<}*{i%ArLy#ogE?8~Bt%oi)A;9H~8N=sk zSc@+IaTcrG-K+YF{%F>G>Af-Upo_P>*C~c~#`PtM(zM#*?zN$2(rYi7WPOkl^t|#t zSj+YCxc@T5)Sy6JdkE2XRe5fo%e9~fMhUOyJX|VHch5mKZ(-h?@6mq*fr#v4SX;Z0 ztgXL(Qo#>tX50}ohgwVZx*-2Nw+$Kw>$_93qspP4cU_BoL}l_WG!-S?&kJhG)gnbi zC>yvuWZ=G48c`;?P= zPqni;UD;LFd|g)4VB+1w0cq;-Jponi53sed2&}WZu1ces!33)Kt@Ic!!p6&^ajIV< zmB5bh3SIX6+PVbt#e!1WwJkhZl7ZH4oTx*{*?p@W?}m7i&?(uoyY?rvOrF25bEH_> z?vPkZwq?can}pFD{y8{h!O=viv-5T3=Jg`;h$fcb^QlWfr8A@p%gKwHolrqdlVUFy z+aB7{WWeQDg*@@YmRxb#tFfJ+=7Cr2Wc%|wuCYzlygW^%wK5Cmds z5zQe}!vH>%0t7QyX0VYPH83cHW(M;%bV50Ctbq`QLo63?kKN)yjSZs`XfO+NY13#T z2*3pRWN0)qoW&zXo52=viQuzPjD$fKRQO?LFdruus5P4lKye5h0tL5?W<+6N=F(78 zE{#rfv$6XE0lt~RLil_R5s4HC1PB2Z!R7`d(F6hkiNYW;7&xc_=f$x27+YkW+OlhZeN7VirSARowRG6#u9ppZ-^@<$6E z-!=*a`4Z57wcvSxD@CLmz+*>pseo-1z~XEF2tlKMv*$!|!xz$_QISA6zywu!pjY%y zF6~K9F5fJK6a+JvoCPb8?4LCG4ElGneu_=lvXIV?fq>@UaDUSNn)`w>sO98Dv|&>t zh2fEG%wR(QL>imQpb-}yDFB9w#bI!83fc&OWNup=cl!hKiw4uw*b08j1>D3<0*h{d;0j0pZf24ux{|<+kT_+ty$wWB_mVw~gii6-0$uw7wqM8M}&F^#Q0XYlMe*+As_ z!3#b3!SV1DpJxqWusTnX6aJz>=k50;zx{hGsS5A?VuK};@B5F%g?maI$GJlOdyCgg gVwzk;Adr9mg78$64|Xw%J%s_2Y`55yZu}$hKXZ}7fB*mh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/qm_clipboard.rsi/inhand-right.png b/Resources/Textures/Objects/Misc/qm_clipboard.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..828ff7061f53169e7bd9d4f34c7c02fbb3fc0f5b GIT binary patch literal 6077 zcmeHLc{r3^8y{^-MF=fujMBpFGsX-;W1ARz$r8=-Oa`-<8D{VbiINst`6NloUR1JF z>P1ps36Z3{yp|G`wJiCb(SCj3KV8@N{nyO(Jae9N?)!J&_wT;XdCr+w2Ro~!a;xMZ z5Xe%BwYd}cYbw1KE&%V@?0^>#h^%6W%MOtfO$_A=cr3O*02KxE0Vp70vmg-3vw=jn zptW%M=$CF5NUg-RJLJ2Fx1zlEgu@zMrM>Z;d>fK`=(yQhnJs-@OD}lLd>jv&=~TwW z*|^2IB*fWgXT{tjmkin)io-L6CaEKms<-0l!H=+d6?WJ3)%%PooAPkE;^ceId$cnT zRmXk$WD%CT?18M=(dhH+<&s1Nvr(-LF_Y2Z3w_3m5Lp&4xoMZnQjmrl$6H!Cy*VD< zdzO6qV7Re4IVq67PCKEb`@Xr@u> zl-l$f(^$c{A?d|x=d%NsrZX!E-KV`4EF+9{Bs(NF*RNQiGms7C+ zYe2U*HgbhY6_#3jg4g5rXj{p_s9SUI_u@^nhdsmYOth^x2^(&^+$eA2fR0u6M=#FV?|y{XeP*2>qNGR1@fcIlv7n;`=i88bKHDOv zNXceXiS=VA&#a6m4%&Cou37FjdDro(9BXbZcZpBle$CL=B{nTyAp;!K)C5aSjA%LG zwGXz|AXeG=VjZU6{~6gSp+6b%;kbM2dMmeHoWCpPBAzS2KUYZ$f*Ql$u1I!S>xY9dv!Z*^J{}w9-{1t0g33U#kR|EXZxx!amh> zyS+5k?t^aMB@Pc&>{ru1Kz@FfAi+O&n_N{^eQQ_K*{kAc47vBYbBE(IS=X$xzB&$7 zBcLd|t!BQ8$j_^^|INGf#erMem0TZXMc4N~O~zX#T4zPRuU~%;-&1swDq4}>?_Tsy zz1B0iCJI<}Xti0>g1`MkU0)8AOco*B4yXfT8qpI%XS!*19xwT6OOfmdQ*4XuF z7`}tb>7iDPj6X+#5ODPsR*SwrK{9hd!CQ*mCQY zomTTzeqUt#Fm`7<5~**{*-!PCnR9g7tL$iGU7QF{mpT17k_F55BP6zzo(?vyqd;$ zE?tqLlVCR-=O ztU9g-qkzH4FUq4{!lZ`W>27A143awk>|qwfbp(w> zALw$MP#sXxQ+F6_s~tJCZLrMjaMLIv-7Sj}jXF6(MrYOOk4_ZXv$N#!;`JnzbrZIj zkJm!#j~o9%Y}MA;qDDV(y!5~XW`pIpMcqY*zNWRgHa#!W;hgv+N-9h9M#kp%OxSR`_RqgjIZJhe57Ld01ud#!N7mUY!JY8%%)2tT1Mc(Vs&2iEUM{$s zRu$>v0WY%QG-;nF7zjRk7DOH<#+8F^$HEjeNRGDfLq{2+Bmo9#Mt@l8N#vx(OzIpAuy z%hPo)ANEAO?pYq=)j2%Gb#e?~>g5uEuEr4sO7U&)e%sRAPZze5oUM#A^Aslz3~aEh z*&*ax-m^XB)hb`8u!5CsVmsXwZ*u0{(fI|2>M3_dy&<zciD$wRjIAq7)vLTcGMqMP=xykXPYWu9ZmV?6-Z5`+MqYh(R859={RJ&bK)`a( z#qxXfwrhBv2@K?`%)6_w%vEi@h1$mV;gmFsL$cM=67k!Bart*ezP9KI9T^M!s4Yh8 zpT#+QXH;bNp$-|GhheX|1fgYH-Uliuc)z6^J)C}?%5XreTJmmTrO>vK+PSndiR#>S z(_WpW;;6HE{n`3gdn=E6o>t$}x$-Tz~m~VG^Fy5na zipUGt?z^X zAOHst(V!BJKUYYS7{g|9Nnl&rjf6pGMMQqaupLwfD48b!pg05$fr48|*g+WBW;v*l zfXN~`nOlB=0H2IuJ|YpHghYzPVuTor;0bmk(L^E5m5ab?oZNRW1kfUrKnVrIgb%2 zb&q0h43pX?F?kF&lQi2jAQCWmA{qlHvRFho4vPg_M12Mv!$RTE1O|qNHlY6iMd1oX zG%f>>LV@52Hi&~`5cO$TCLKB;e3k0|Ewz z!D6rm--WgV0wGw7QdBewf%)u&G%+MF9FSU?v{FHUSq(565?KJyL_C2DkLPa;lR5>J zYR(oo)aY|stl2_PB3N4UU#i|22>AT;c@p@uXNREB*}^5!7@v&@X+Z#U))1)od5Gad zyw&w{g91RR)gCYW)+zyJ;aL^KM_B@Rvh9Nsr{A&(^z z(*%IoZZJ|X8nA?Bqk(StLgvPwy%GBWQl?NCEF6u3qwy|iA_ZmhySAm5c;=~U*h*SUBBu2B?f*; z_;+>vrt6m&_$A@r)%8E4OYZw|2jGG`ATfBD33G~;fCr%kbQ>#kh@$k{c>2u;uxAn9 z+D!<7$X7@&nQC4p6YP`~QK%NOy>bd_*d^#8l_>DE8%!}ba{>SJeO7K$VY*!Qoj5Iu zm1FaF;f_r%&*#Y8(91a9P^Bk7J=c?TAgV*pU_{~Fnq}(=h6jp8x(gBVh)$-%bKc=7 zFXDNQaxmItV%pTYc;A#{96`LVJqNT1fkb??dlZvUlE2seSk$UQm8z(7Z7(WzJN7^h zT#$)x`1n{e=5mHY#J20SkgyUpcp!wd=eWt-2Pb-R>KvHIWE933W-83b$86LgEyLPv zMHHmPlNUoDy!ZAPo$K4K-V99!4#o^{~M zEk3#uza_-*QycrmW`vt6(~W{aWROE*lb_UaFt2-#%a9a}6# zk9TP|dtv;P6ehiA!WvKAy&~H|Fso;TONKRd(hPT8Ox-CT2V?J z0L2Lr(IQX*6$BAc(Td=#R8$lY=Lz3Uz-hhyajn;Xo~(Ow?>>8fd++b;bIv{4oZtX6 zm>moPftaxZ{kY&iTz5f@!MiFs`6&cq^gKB%Le1rA;0mQ&B$fbhb&>*r16r{N0@3zf z3y<1($93|%ILm4yBWSa-d7!xGn8(WfO|0-8(YqgvZpLC`ZB5ITTIBrp{_WALF-Ls2 zJ^bGK6fthC`(I&cCC;M@>*7bm-EUys?zF~r^>1<^A%6B}OZ(#AvV%1f%R`>N%s|}l z&VBxx$u3-x#8IDdkTNeh7M3Kt<=pynTTsgM>Sg=6(M9L(id)ZoPpPS%b!q@;OhOG` zkL{Ss*i=vwFpW<&%}NZg{ww-n5jG!w(MHg-F4--OasA2ql~uD|WVIg+aBOq*&VJQ4 z&8YJC%|nmsmA6e^?Kmg3Zrnt9{-&d{Z}ajbLVscHLgt+hS#CuBb6D?|4f+I&B8o}=S?;OGS!Ot@3Kd>mmJO;@rxd8I9``3 zg?XIFueK|NKr8ImYJYq=e>(aEae~ivnU&41hG~|o@890|*j2X8*%;Sb-MuR>$Y5c5 zt!?ghsL`^MR@>$_q;s-v1{lnSF;m%7?cngcm;>$k{0>M!>Y3GY*rTeH6Bf=Q1LzuC zdln>r!rt^IZssfdnmaa|nucF;P_-AUP(7(zH%4%8tqXGFE)L0Fm+lf|v4qQv z-(_*EAb$UjITb%yuAfD4ZG2{c5_?l zWZQ&$Ws_!|Atc>hu(N}jkh0i){~_()KW*Gs_jHY2t>M6LBecb822xTciLEWooEKEP z8*ci8WRpQvJ~Ydk0ZBK{+-yC^jhxnrd1A>kuQJ;!G>pr4GB&zU)|5MV`JL~er3|&> z#&P7;e3kLFt=^rsYDf4Bs~Qc*KCxHrc+J176MwvaftuJuSpC2p~+igv5!4*l@a75*;wZ>Wow-Z?z9Ny%WuT&yQHqVGuT;q<>5%1Wr1m}OQHRtecXbX4@2@C9^1NKGxbS7UDI75 z>ciYvQd1qATkFC^-dlUR3Bx_!qwx=a-5&YE_432l2DMk~^>{)q5hNAsNLrsTehi6Y(#YY^ss`v z5rYS(BxX1iH<{&OpBS7kSrz8YOtA>655JtI&UmuHcc43P28^2d%e+`>?w+W? zhNX#V31SVm1rgyY&6q!JF6v$COfyzaZt2ZP#jv32!Oh$I_NMKHLszUiQb%^H3(S5W z1Vi#^|ol8K#(V+4t;suj~>UJMUE zL!GR?diEW~S9vUURRDa8ph)(;e9Bo#kzN1t+fesh++)h)Bf-`)R`k{N4cqsxI}^Rd z_I&mIq}$Lc&IA7L+yx85v&yqe50-EnNc{&ol5(rL71ht_uT0Y>Cb*nPC}IT0PGXh8 zy?v)yhVc;od*|e&5FWMu{5I_mFD5E`p(RG?vCVj5$s?2ZX*aIfwd`j7;AUfz9OE${ zFd813P>~5NcZ`}pU^GlO3}4(D6F;GPYZ-|e`4kG38(McyWA_@OG^~FNqa%ju8xe4^kd6o^ zvN3E016U*uOjZJ+$-!ZQ}qi%Tu7SC=6OEMSpIgQZo}lknw>2(Lxml?(AqTppqvj1pqSGJwVAe6-L}5GR%@^j09*UudeuqEBRf5u2_@ zpU&rjfaV`@ztH}WyIvX8Vza4!azTPFJeD6Fq4Q4_$^~K}RsTr9;IKkGMTF#Gh&&_# zgC`>?cp@1I05}0oh{aZPkESXBplL-JF6bOzIgE&Gw4oAcia7dw$fJG8WcpQ?) z$Mca`z!S$OU`axefcP22Jf#?{N}lBNsB}<59TWvC@WcuUND+=t1fwBQkUXI$7#tuH zlCXT9NGS5uLkR^`f4Nf11BX*A<;4MLg)C0rp(C8?!(q`8I27iSgd^dpMW6vV2gEX= zT%-Eb6(*Jfp=zFvPpl_}geQ~81U$wQLmE$9k2oJts=!**p<*#896@ic8yG5>4oEFe zSE(R?UJhnMWheojTCNO}%O!M#4g#*T)E79MHa0AQVil;7q^tSyst*O0jJ=Ib0*P4P z1&8Ykm&y~2IZ^Qv0ioUzXgAg+Sj3aX0pJWDFR2f5@jna~Sw!K9$T%X>6N48a30MLV zNg?tmNP@rG>ZToQy3f` ziNzqX#4s$5iYHNVcm#SpS+s6Wf5?`G{vSSQdWFvx0nlzt1}-k(T7~|&SdH_gqwrsB zc zl(b|d!)T)I7T)&Vy{?v1rp$0Nd+QBbvFwqrKi{kjIIaCpo&*B9Qs`wYcJQQv*+5v# LV88vov8n$B&iWzl literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/qm_clipboard.rsi/qm_clipboard_over.png b/Resources/Textures/Objects/Misc/qm_clipboard.rsi/qm_clipboard_over.png new file mode 100644 index 0000000000000000000000000000000000000000..bf3c772ec38ce643c1f4413a85aa751d5ced590f GIT binary patch literal 4883 zcmeHLc~}$I7LOoX5QA zuKVj3)?{uM3^U8WUg6>=YH2n}quQR$e(7`g#Wx{swgZ-~U-3ltr20+SITszbX!Wm#=J$$(}EczrJbny;qqLXav&Xalv`@Nf zch=X*G%uHYVorHLrR&1RK}Tk#Uvw(zzd^Em-Yd6;pWMoJ+%V3vj5=7We{s*Z(>Z9_ zq}+mQg4Lbc#^tiSrD+Aof|rHZ{rcM@bA#)Pzk^;MxbXAN3n57v4F64?Dd*9k0}e-v z%1%|ToIHfRAqC|(+~K&G%+`iTY#PaNpn4=< zY-7K85j<|q;=|Jxx<%QA+CxV-U$-X*1`M?XO+xUwo8{+7nF~( z-%fGm-kMZgGNks4pv}wmqa-rv%7EqyeM`XW>lqOfM%UbmFIkxq6HztdOiDsw;+~UJ zbo|ZbSv4tHoWjYrwaDJELtAHlP|0PW0 zdE}cB@v38Ml$F?nt>--BH781fw;eqB%am1Dwoc}&x)Wx9%gNh$Y;91|XkOOpl#{k| zyZDk8@4+{t(+~1(qccq{uGI@ukJK1i7MGx|8NLT&Vq2h$0RxUnDm<^WbvL!Sh7~;Y^oqwm@`9jfEZg<&E@5h>ZVWR$*KO@V&{u*vg^_^ zb(7nQ6%&v9KTnRTxUCCNr%ju6V1ew)cJHQ9gKXLRYODEGPZ8fe&AT2otxbGBVE3YW zS>5M#ZT?5+HU7K1^6cir&B8k!im$uRD_trtmOuYIAKe+6T48Yun#GCSy~(Bi;obZ9 zNv2R&uG)S=gA1+`=k1tuYlx|(L)V&j=}`64rSn#CXYnjs5{J&dxrN&mU696~(OI~0 z!RtlS_sFj2cAXj8O?r3W<7zFe%{Q*jZ|sM^IuktR&V~*Wso#8+SR5x2i{GwNur@35 zmx`jB#tk`|mRcR3BK$2ZoG$ioaNbB+9DkHDHBd7@(JzMDJ$HnQq@=X!T8hqs?s{cbA=+Ug>?d?tbnK$6av`>pE3T^D82=;h?#|P>rFHS! z>Yj@_oeS-<1DdkS#nI_bl1ZK|(DkF&+uLny zcX(5H^@`8Y8p+6@!47$8qaULEEq~Z-E5h=Jr6xY?ZxPuh&1g=`vZ?!a6Hl1()X@>Q z^}6UMy<|(xDVQ@-dOjlc@!6-Ir9Zv)&X*0n*Jx*x6^pm$SBxbkKbX;J&*%4#oVdK9 z<8jB29sm7PbgttMhmAh^{rBnK6G1y2tO9Lwsx(H3;uL1J8wL2N3UN{1uNDif13mJEgH6-r@zcw{dG zcoR`FjYgf2M$5^`q2{otxITl%5C{Y`I+Mm^!axHyz z*Fpp)BFD3hA_@hJLvQ2L=%mtj@LEGJ3xE%r8PU-gR60$gq4l*e7$Zyoq&J|ywJ;=r zZy#DbX27%cC>CMDv_}8F5DN62y)Ij?wx**%X_y+*096C<%J{%#ltdc$&VryIL#5GK ztpM2{Xc|?@_hfw#8!=){r*9y@{2lHG+HZ5WDg!O4R2Yt<*+h7fa1n*@FI3>DN+Gm9 zVl1T+rSn;^k}XicY?Q}^L%P z3}zroKFsDR6tG;u;lmgQMdT=xC15kSeIO?3RiG*nb>FB6C;n zbGdSuFXz!=Hisu?Ddc>GK*_U0DNtb~uGb)7I#n7Z1EcA*8P)-UaA8=SL_}dy>F*_R zYQ(4n24D@Svi0cz@TrHvyK|zG2wZNf}o@t3z8GuGEQS-f3FT-Z` zy!9*swaPjKLDs?*B502j17gAyR!6|DX9&$iv>6y!;k_mGR<8P+>0&8S0iR8$!^90{ zGx!V`L6{iK!Z11mRDzPFb(U~lm zL5CTf1O`*c<_PHm3avL;8nLF|W*b8LA3j2?3VoUYul0lc#lS}?f2yuebbS;9AEo@My8dr;k>783FfI56lmj+1sJl%B z*a+FnCq{*n1`@})RlmOk5+_}BvVlZ$b|=n$r1FZvKK!)_lAIBr@n5^bb>9h7%HD%7 nc8wNdnC*|9b4~(uus_z?P#qyJa`2Ql#H%DCHhlZ|^tpclk%2dP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/qm_clipboard.rsi/qm_clipboard_paper.png b/Resources/Textures/Objects/Misc/qm_clipboard.rsi/qm_clipboard_paper.png new file mode 100644 index 0000000000000000000000000000000000000000..073471721a39b03e50dc101d9f0c5cfe6d7c4fdd GIT binary patch literal 5374 zcmeHKX;>528V-UG0V}SEfW+VeO7=h|fw0ILG00YAvoOg_U;n_m6U@+4;9xlGHoFZNd^&QXfe_nz%uS9M+ZcKGP< zojEN%IrC<_kEH)yhIy5x$p`}y8r{x8_cy&TqyfEbhvsER&V~3dG=CZXX1Yb_rLm;+ z>zAx%yd1P^{c$W41VUdg-gCkE>7g;7;xpFDHv??K<9e@0!9*!iyQ7ZFbnEQwk=gIe z?X%Kb+3Z;VHC=D}9gUU|ahA%D;_V1_=(yF3)&Fxl!l>vV69QU&Q z!ph*ND1)ws+8#wy>a~Q2x8!->)NOcFS)Dv=6yIXuoVLx!{YT`f%ietWVMS0xNQJ?w z6{H}z|K!(eZ(=Ji+DdM~kE+(iZY*-^+4?N)d3<}H8^P3L%q_7fwd5c}@2L#G)5ySc zPf`tQ3bwB|-?gOBPugcv9_aJH`)1L80N7Xa@k z7cCdAL+;}{%Du0Zo!)p?(6uM+@Zb9L2dWf@#2LmjqZ6|abAWRAapm(>73Vuk4anr<)x>6$_?DK95H+_gHa!JkR#q={% zmhVdF4INI_Z38t(IfTZIMh#XS$oh7}qeW3!72C#EPAhu2I%W>*{IC0a7H;|>AsWdl z)_A!vg`zjIKZt*jyy}FHHs3D6rgMvwT+@+~r5hqF-%EolYeV$wAKZkZQiZ30n<1xm z-^^_@I!fdzA6x=PGOi*uI$=c>cGHd~VeLDuj@IrrG1Rvja4BocIkTPu@0{wx`KPteaO zJl-GJFmto;()He-++Qb->GHgqVsQ`Xc8hHEc5ui>c?+J{20gk`ZN6dLRvb@1;HdR8 z)}THWV~|}3dKHD`q+Je38;+0kzFo-7uIi{~U$i;BGq+^74zt{7PyO|4|2gkqcE3Zh zruU4YCrdciAG0@p$i6!M4)3DpfY0>-j@Rkt)616Bhh1qpu>94szA(4VMu`mb^KfD_jvjYY% zoZ6UmDmJM)2+p`l)37*Lc3}4UMR{R!UmwHbb{M2mmQtNP1@p?KreQCJho2G8m*2WP z&Ri*L3{P^$?c*1SXGsh$M;9zmCf>uY$fQ1DKB@6CT>NcsUGK25GW+5;`;4xZ_s8GE zp74IiE6WTDTD$!~ddbOR-!ly5@jv4;%YBcOKWC5WrA&=k(iBtR>=8bVQ;Kt3X*$;* z#Je3@m61#zxUlYZN|l2vF+FrHS!PwFJ+*j1=WWW}+Y6e@ILj>O>m-C(J>qK(4^26e z3MZO{1U%9jW^1k$UI>etQvOpZgB3i2#Y!{{ubXnaG>NfE$;-Iyt|3paj?Bw!cx9C6 zx3KT*)G1M3l7YlRdrZ(n;g~i6Xt{aj)DJ!#JTrLb4g0UbA)Vp{vbuh^=b?xFAhEc96=CgE{v6GapoAISB_ zIZI?Pj!vW#$pqIpWCIm%uZy#jK?0Vqi`ygw+GFD*6$&YfM2d}#CC1W-5?KU^!elZ@ zWGabDC7>1rdAwKw#u3DFa}~q{h6^m`%Mhsok%)0BOpqsuQLyoNRF8WXpGeB(zK0jf zCs{!GAjN@F5`{=6iA1E2J>&}44JgQDK>z3=_eT$Ok}oWm#K`!t>jqe?F#i|=;=lKo z#>k@8=|FrE91V+5Q#m>+<&z=ZIb84e9x4hV5Rp{vg_8Y=r2-LrAnTLZR2p?U9|wZE zzsLQ=`d#j7W7LYvWw}WBF{X#i935fn!(SAb$Ztb#(pi3o~AqcO-ZnE?{4>2!!dr&GuTrU0@g05ls4 z54HgSngI9+VvP(zs}hX5CfKLD*YaT?0s62>g zt%id5EH{Zv1ftW4h`W zWiY6a$owUeXf|FI6i(%-E^wUP#I$%Ia?~PTRr8Zo?+34+=uIqwXhf~T;nao80{Ihz z$iWRTq#g+Mn^5s1L2(3(uJFl{dM8KzVY+xW5RXg-(0QiwsRTN}XApRhHJJd>05X%o zqfi)>iS*v1%OwIuEGUDWBG63HY|s)?XM?ktB-8TKXksH_6;os?jeyny#oC`jWzo?u z4Nsa(mZVzK@3OTc{SO~@YJ-n90n~3ohHftCUPXGpSxxe#qVQjAlk@N|j(|dc8RWD0 z{X*9lx;~46&ocf}U0>+>ECxQy_)B&D-{{i)@VWzw(SJa(=*vvmakEF$D= zsrvkt_jnYQOp|&9$uStc*{VweQ&2b`73wHBTvr{X?hJ$FD|D;PVo=d-j*F9jU=u%l z{?wB2Ir`-A#Q`9)^T}pk{lR^*-4^9R9u&ImjU0;@KjprqU90E$rmPO#p>yo@A8W%r zs9BKCt-4pclhNkH4a)DicDq{tR^efNRcrIzq`&5;L|!-u79Y`U&)Ih3B)GH46Wg%q zazjJI@M!-s?I6Vd@K?nMw&<_kDcPpSUtCG7$ue^o|E)XvK#QuUt!fdru3fg68?*9< zT2JI3tnGgE;_k>A&Gzk^PnskV=oahsTfcI=qC9P$PkaV+Cb`Ag6}k*Q+Z4CXOZi54Ra;h*v_ntb+tIpu5ifD{n9bg+CY_s- zozTP|veH8=Yn!cKIlg?`2{-$Kr1J1cw%5~dUl*U~a1vd29Z*ypyQK+!=rL;C!i!9OHT89Aw?t$&T= zeag#arp2$81{a`Fqn9VgHK=o*gy&uorSGSQ6|P8M`yKBL5vi+B%Fc_5Sz?km53&R; zv=42SIK#hSez!Wyj1By^V^L3Lc7t!{@9%=C$1yE;?so3-57^~@{>J6CO$`e)k1E#@ zeNXi(I$P{7*M4r}z0$+( z!!#K;DAq8J(L*?pg$RUWfJKXbO)9r8zYsAbxxmkz)s60-0aULXnn77+2Tn{0M^7i|2-Xn^j zL$qqQQ>&mw8`ArZpTSjm=Z^AvEvM-{J+wJF^2}pXPhF^oPG>$o<*{{f(Yh#3voEw+ zFs)y5o;-1#u5xs?uTb%yoyoGxyLRjeOt)XRNA_o`Qv7u*ES!| zzj7i}Crmk0mscc9S<*m1<5n@zJw#jsTpfk#aP?^hgIjQT~Z=r;;UQt-K*G@wKc5iyBFfl^h*yGd5ntCgw=doE2~;Y zYrL{tdoIU)oZX$D2L%SUo$|%DpTxxn+4&AvJezs3$KU z?V|Cs;bA=EQMaeCWDFYeg%efp7tF7N!Ig;C-ov$kC;`F%e1{r#N|{dW(17k}eS@;YAG=mPjm zy$AWi?a%m#qPHgl8(Zcq=}Pw>@t(6?v~uCKWzMeEtL%0=FB*SW@*}o>W%=1hIXf@; zG!#G3E!Y^*d^skvz7hA`7HClkULBStyct(AwyhdVp%PUs15Y2OPIA?7LQ#G3PHtgj!s(`D`j3!8YD_r?{=RMqwKox))K@x+{PcoR{q z9Zb2LPb>DgZ@EL8n9peuwj7#1Y)tmu>buWJ+%Np^+)cwTR6WeRL#vE_q$tmii<|lH zvgKR%ZIK<}-`{&KGrvljIp&D#o~y>{*rBQV6c~)9A|`8OwC)weR_J% zyTw0G31u#y?S|@oOZz!&dFt4;_|^@Nx^l_53GR+r3BHeszR#c8?OsY+M$L+O-1oW2 zerC$)gjBn#AGh(b_;wnNvLANEOWJ79H03NBC%qIptMx+r(EMW^!!0vLJ~--NmpYw# zYAKlv#XU-S(@!Ai8y30t*XGvdBh5G8i!L@lbKK&guYQOQj|4N)T@7YotaKViP#Pw# zq!c96tkHp42|)o<%sQM%C5^CxOj2t_jAu1R8L(O@V$AfHqEelhOjbu^>B$*c)8#}~ zDj`%drc9;>m@xpLA&od})}(0-m|4WI;bP$4DrPZYn~5=1#E6wf!(vKL!dxboi6Wt9 z^*jz^G93=kD^-{*B&-JlJc$^|Mxzd6u}mft)8xmb^hqqXP$*=f92SRz01L#BsWswe zL~HQ2LUdz1q_AY9fy&SmWavCnYxM37p(H-~>oW9dwsMpNi%cUmz|;Vu zvOfzME|Erm^srKpq}J$cUV!Y+ERAZ_C$c`v&8o4L(>oF1{t@>x>kqZtjDeL@iiJ=_ zhBZA&h=^g0k0~iat;B4%0+Nez2sVlcP#%hKae)94@c2SR$ycyRo*&PjAQio!BwB+J z*Ak=^3V<`!0EbO-c{~n>izpRr9>Nu{6$sAeau5No@Z8 z0a#>Od%maZXOQXLPu-g!O>I-bu&r@1oahc>z~_-lTOi=qts;_fZ4wD~cuz}xkgNY@ zxs<3t<%jYGh#x^J5ia4cKm;7zAF%C*6R1+D#7W|FbOWU_ns7ZClmsdT)qobVRRfRj zA#=j#_NHXg$`s1+LqKD({pD;PhH^13m%-{OmSx@3AF2&t{e_PJn?bK30Q|aTV7P!; z#rim`dib(Z_z%8%*5MzF0HD7H`67P5()E?DFJj<}jK6l*SGvB4fiE)t+Fk!Qy6B&d zJERu;12TcbjO&7mPH+(Fr-%#>fd*OM7mJ>}29o}|h&TfTIk{S|K2ULqI}kb=CDKsG z`*i0aeSJ6FnCJsUlO!QQ^4Qv^=PL(7D9t`-!wSnUW7h~ZYcYCW`<27Tee8gd`}%{< sG3#DkzaeZZt}R^fO;*Z&&tv?d4+5MHB$VfZLmC80LZ^r92~N!YA3p0PEC2ui literal 0 HcmV?d00001 From ef0c0797246e7e20a72e21bf305b6464680b8412 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Oct 2023 03:35:12 -0400 Subject: [PATCH 215/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 259ff56d488b0f..46822fde57cba0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: LightVillet - changes: - - {message: Fixed spilling empty containers, type: Fix} - id: 4541 - time: '2023-08-13T07:08:54.0000000+00:00' - author: EmoGarbage404 changes: - {message: You can no longer keep a cyborg's UI open after closing the panel., @@ -2908,3 +2903,11 @@ Entries: clothing., type: Fix} id: 5040 time: '2023-10-22T05:54:30.0000000+00:00' +- author: Endecc + changes: + - {message: 'Added the Requisition Digi-board, a wireless cargo computer (and high-capacity + clipboard) for the Quartermaster''s Locker.', type: Add} + - {message: 'Added a new Steal objective for traitors, as this new fancy clipboard + has access to most of Nanotrasen''s accounting details!', type: Add} + id: 5041 + time: '2023-10-22T07:34:06.0000000+00:00' From 988bfa5c0961436256a5839ee0e0ca89742445e7 Mon Sep 17 00:00:00 2001 From: stopbreaking <126102320+stopbreaking@users.noreply.github.com> Date: Sun, 22 Oct 2023 09:53:13 -0400 Subject: [PATCH 216/245] Replaced Wieldable DoAfter with UseDelay (#18880) Co-authored-by: metalgearsloth --- .../Components/WieldableComponent.cs | 3 - Content.Shared/Wieldable/WieldableSystem.cs | 73 ++++++++----------- .../Objects/Weapons/Guns/Basic/base_pka.yml | 2 + .../Entities/Objects/Weapons/Guns/Bow/bow.yml | 3 +- .../Objects/Weapons/Guns/LMGs/lmgs.yml | 2 + .../Objects/Weapons/Melee/baseball_bat.yml | 2 + .../Objects/Weapons/Melee/chainsaw.yml | 3 +- .../Entities/Objects/Weapons/Melee/cult.yml | 2 + .../Objects/Weapons/Melee/e_sword.yml | 3 +- .../Objects/Weapons/Melee/fireaxe.yml | 2 + .../Objects/Weapons/Melee/pickaxe.yml | 2 + .../Entities/Objects/Weapons/Melee/spear.yml | 2 + .../Objects/Weapons/Melee/white_cane.yml | 3 + 13 files changed, 53 insertions(+), 49 deletions(-) diff --git a/Content.Shared/Wieldable/Components/WieldableComponent.cs b/Content.Shared/Wieldable/Components/WieldableComponent.cs index 050b6382150bd5..4a50b930722b3c 100644 --- a/Content.Shared/Wieldable/Components/WieldableComponent.cs +++ b/Content.Shared/Wieldable/Components/WieldableComponent.cs @@ -30,9 +30,6 @@ public sealed partial class WieldableComponent : Component public string? WieldedInhandPrefix = "wielded"; public string? OldInhandPrefix = null; - - [DataField("wieldTime")] - public float WieldTime = 1.5f; } [Serializable, NetSerializable] diff --git a/Content.Shared/Wieldable/WieldableSystem.cs b/Content.Shared/Wieldable/WieldableSystem.cs index bf5aa1b723099c..ba87d54aa2ac97 100644 --- a/Content.Shared/Wieldable/WieldableSystem.cs +++ b/Content.Shared/Wieldable/WieldableSystem.cs @@ -13,6 +13,7 @@ using Content.Shared.Weapons.Ranged.Systems; using Content.Shared.Wieldable.Components; using Robust.Shared.Player; +using Content.Shared.Timing; namespace Content.Shared.Wieldable; @@ -25,13 +26,13 @@ public sealed class WieldableSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly UseDelaySystem _delay = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnUseInHand, before: new [] { typeof(SharedGunSystem) }); - SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent(OnUseInHand); SubscribeLocalEvent(OnItemUnwielded); SubscribeLocalEvent(OnItemLeaveHand); SubscribeLocalEvent(OnVirtualItemDeleted); @@ -76,7 +77,7 @@ private void OnGunUnwielded(EntityUid uid, GunWieldBonusComponent component, Ite gun.MinAngle -= component.MinAngle; gun.MaxAngle -= component.MaxAngle; - Dirty(gun); + Dirty(uid, gun); } private void OnGunWielded(EntityUid uid, GunWieldBonusComponent component, ref ItemWieldedEvent args) @@ -86,7 +87,7 @@ private void OnGunWielded(EntityUid uid, GunWieldBonusComponent component, ref I gun.MinAngle += component.MinAngle; gun.MaxAngle += component.MaxAngle; - Dirty(gun); + Dirty(uid, gun); } private void AddToggleWieldVerb(EntityUid uid, WieldableComponent component, GetVerbsEvent args) @@ -157,7 +158,7 @@ public bool CanWield(EntityUid uid, WieldableComponent component, EntityUid user } /// - /// Attempts to wield an item, creating a DoAfter.. + /// Attempts to wield an item, starting a UseDelay after. /// /// True if the attempt wasn't blocked. public bool TryWield(EntityUid used, WieldableComponent component, EntityUid user) @@ -171,13 +172,31 @@ public bool TryWield(EntityUid used, WieldableComponent component, EntityUid use if (ev.Cancelled) return false; - var doargs = new DoAfterArgs(EntityManager, user, component.WieldTime, new WieldableDoAfterEvent(), used, used: used) + if (TryComp(used, out var item)) { - BreakOnUserMove = false, - BreakOnDamage = true - }; + component.OldInhandPrefix = item.HeldPrefix; + _itemSystem.SetHeldPrefix(used, component.WieldedInhandPrefix, item); + } + + component.Wielded = true; - _doAfter.TryStartDoAfter(doargs); + if (component.WieldSound != null) + _audioSystem.PlayPredicted(component.WieldSound, used, user); + + for (var i = 0; i < component.FreeHandsRequired; i++) + { + _virtualItemSystem.TrySpawnVirtualItemInHand(used, user); + } + + _delay.BeginDelay(used); + + _popupSystem.PopupClient(Loc.GetString("wieldable-component-successful-wield", ("item", used)), user, user); + _popupSystem.PopupEntity(Loc.GetString("wieldable-component-successful-wield-other", ("user", user),("item", used)), user, Filter.PvsExcept(user), true); + + var targEv = new ItemWieldedEvent(); + RaiseLocalEvent(used, ref targEv); + + Dirty(used, component); return true; } @@ -199,38 +218,6 @@ public bool TryUnwield(EntityUid used, WieldableComponent component, EntityUid u return true; } - private void OnDoAfter(EntityUid uid, WieldableComponent component, DoAfterEvent args) - { - if (args.Handled || args.Cancelled || !CanWield(uid, component, args.Args.User) || component.Wielded) - return; - - if (TryComp(uid, out var item)) - { - component.OldInhandPrefix = item.HeldPrefix; - _itemSystem.SetHeldPrefix(uid, component.WieldedInhandPrefix, item); - } - - component.Wielded = true; - - if (component.WieldSound != null) - _audioSystem.PlayPredicted(component.WieldSound, uid, args.User); - - for (var i = 0; i < component.FreeHandsRequired; i++) - { - _virtualItemSystem.TrySpawnVirtualItemInHand(uid, args.Args.User); - } - - _popupSystem.PopupClient(Loc.GetString("wieldable-component-successful-wield", ("item", uid)), args.Args.User, args.Args.User); - _popupSystem.PopupEntity(Loc.GetString("wieldable-component-successful-wield-other", ("user", args.Args.User),("item", uid)), args.Args.User, Filter.PvsExcept(args.Args.User), true); - - var ev = new ItemWieldedEvent(); - RaiseLocalEvent(uid, ref ev); - _appearance.SetData(uid, WieldableVisuals.Wielded, true); - - Dirty(component); - args.Handled = true; - } - private void OnItemUnwielded(EntityUid uid, WieldableComponent component, ItemUnwieldedEvent args) { if (args.User == null) @@ -258,7 +245,7 @@ private void OnItemUnwielded(EntityUid uid, WieldableComponent component, ItemUn _appearance.SetData(uid, WieldableVisuals.Wielded, false); - Dirty(component); + Dirty(uid, component); _virtualItemSystem.DeleteInHandsMatching(args.User.Value, uid); } diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_pka.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_pka.yml index 7a8b9180e674fe..041cf446c11090 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_pka.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_pka.yml @@ -45,3 +45,5 @@ slots: - suitStorage - Belt + - type: UseDelay + delay: 1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml index 95282ee63ab9df..88640f7812f5fb 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml @@ -14,9 +14,10 @@ slots: - Back - type: Wieldable - wieldTime: 0.5 wieldSound: path: /Audio/Items/bow_pull.ogg + - type: UseDelay + delay: 1 - type: GunRequiresWield - type: Gun minAngle: 0 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml index 1d16d308e41ebe..62142519bfa05f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml @@ -58,6 +58,8 @@ gun_chamber: !type:ContainerSlot - type: StaticPrice price: 500 + - type: UseDelay + delay: 1 - type: entity name: L6 SAW diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml index e244647a130840..c1fc668d592820 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml @@ -30,6 +30,8 @@ - type: Construction graph: WoodenBat node: bat + - type: UseDelay + delay: 1 - type: Tag tags: - BaseballBat diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml index b0874bfaef15ea..13f5191c103f22 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml @@ -5,7 +5,6 @@ description: A very large chainsaw. Usually you use this for cutting down trees... usually. components: - type: Wieldable - wieldTime: 1 wieldSound: !type:SoundPathSpecifier path: /Audio/Weapons/chainsawwield.ogg params: @@ -44,3 +43,5 @@ - ReagentId: WeldingFuel Quantity: 300 maxVol: 300 + - type: UseDelay + delay: 1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml index 833614105d93dd..661ee379b240d5 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml @@ -81,3 +81,5 @@ quickEquip: false slots: - back + - type: UseDelay + delay: 1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index 7cf02ad05cbb18..0dd5d7c47c2543 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -171,7 +171,6 @@ description: Syndicate Command Interns thought that having one blade on the energy sword was not enough. This can be stored in pockets. components: - type: Wieldable - wieldTime: 0 - type: EnergySword litDamageBonus: types: @@ -205,3 +204,5 @@ enabled: true reflectProb: .75 spread: 75 + - type: UseDelay + delay: 1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml index 62a983cd4dad1e..6d27e3e7d64b63 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml @@ -41,6 +41,8 @@ - type: TilePrying advanced: true - type: Prying + - type: UseDelay + delay: 1 - type: entity id: FireAxeFlaming diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml index 8d04fd316b47f0..a0f497bd2652e4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml @@ -28,6 +28,8 @@ - type: Item size: 80 sprite: Objects/Weapons/Melee/pickaxe.rsi + - type: UseDelay + delay: 1 - type: entity name: mining drill diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml index f19b76b3e81a14..d34d29d5ebe2d5 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml @@ -104,6 +104,8 @@ damage: types: Blunt: 5 + - type: UseDelay + delay: 1 - type: Appearance - type: SolutionContainerVisuals maxFillLevels: 1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml index 36ea58c11167d1..c76ebf4d7833b5 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml @@ -22,3 +22,6 @@ damage: types: Blunt: 3 + - type: UseDelay + delay: 1 + From c318cbac9f14577d68470bf940837efb8843f733 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Oct 2023 09:54:22 -0400 Subject: [PATCH 217/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 46822fde57cba0..5f4b71deaa6d24 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: EmoGarbage404 - changes: - - {message: You can no longer keep a cyborg's UI open after closing the panel., - type: Fix} - - {message: Cyborgs now retain their laws when off-station., type: Fix} - id: 4542 - time: '2023-08-13T07:09:30.0000000+00:00' - author: onoira changes: - {message: Spare pieces have been added to checkerboards allowing for more playable @@ -2911,3 +2904,8 @@ Entries: has access to most of Nanotrasen''s accounting details!', type: Add} id: 5041 time: '2023-10-22T07:34:06.0000000+00:00' +- author: stopbreaking + changes: + - {message: Replaced wielding do_after with an interaction cooldown., type: Tweak} + id: 5042 + time: '2023-10-22T13:53:14.0000000+00:00' From 190b1f61f22b54a10bab5a0aa7922c40445446eb Mon Sep 17 00:00:00 2001 From: TsjipTsjip <19798667+TsjipTsjip@users.noreply.github.com> Date: Sun, 22 Oct 2023 20:00:36 +0200 Subject: [PATCH 218/245] Kettle updates (#21164) --- Resources/Maps/kettle.yml | 9770 +++++++++++++++++++------------------ 1 file changed, 4915 insertions(+), 4855 deletions(-) diff --git a/Resources/Maps/kettle.yml b/Resources/Maps/kettle.yml index c8194474d0b642..92356aef08f084 100644 --- a/Resources/Maps/kettle.yml +++ b/Resources/Maps/kettle.yml @@ -539,3799 +539,3799 @@ entities: color: '#EFB34196' id: Arrows decals: - 1233: -56,47 - 1234: -56,38 + 1223: -56,47 + 1224: -56,38 - node: angle: 1.5707963267948966 rad color: '#52B4E996' id: ArrowsGreyscale decals: - 4928: -41,-43 + 4915: -41,-43 - node: angle: 4.71238898038469 rad color: '#52B4E996' id: ArrowsGreyscale decals: - 4927: -42,-41 + 4914: -42,-41 - node: color: '#52B4E996' id: Bot decals: - 3903: 26,61 + 3890: 26,61 - node: color: '#EFB34196' id: Bot decals: - 465: 35,0 - 466: 36,0 - 467: 37,0 - 468: 35,-1 - 469: 36,-1 - 470: 37,-1 - 1080: 35,11 - 1081: 35,10 - 1082: 36,11 - 1083: 36,10 - 1084: 37,11 - 1085: 37,10 - 1086: 38,11 - 1087: 38,10 - 1088: 39,11 - 1089: 39,10 - 3902: 28,61 + 455: 35,0 + 456: 36,0 + 457: 37,0 + 458: 35,-1 + 459: 36,-1 + 460: 37,-1 + 1070: 35,11 + 1071: 35,10 + 1072: 36,11 + 1073: 36,10 + 1074: 37,11 + 1075: 37,10 + 1076: 38,11 + 1077: 38,10 + 1078: 39,11 + 1079: 39,10 + 3889: 28,61 - node: color: '#FFA500FF' id: Bot decals: - 4842: 52,-19 - 4843: 52,-20 - 4844: 52,-21 - 4845: 48,-21 - 4846: 48,-20 - 4847: 48,-19 + 4829: 52,-19 + 4830: 52,-20 + 4831: 52,-21 + 4832: 48,-21 + 4833: 48,-20 + 4834: 48,-19 - node: color: '#FFFFFFFF' id: Bot decals: - 4654: 20,76 - 4655: 21,76 - 4656: 21,75 - 4657: 20,75 - 4658: 20,73 - 4659: 21,73 - 4660: 21,72 - 4661: 20,72 + 4641: 20,76 + 4642: 21,76 + 4643: 21,75 + 4644: 20,75 + 4645: 20,73 + 4646: 21,73 + 4647: 21,72 + 4648: 20,72 - node: color: '#52B4E996' id: BotGreyscale decals: - 1669: -15,39 - 1675: 29,10 - 1682: 42,-6 - 4746: -27,18 - 4747: -27,17 - 4748: -25,18 - 4749: -25,17 + 1658: -15,39 + 1664: 29,10 + 1671: 42,-6 + 4733: -27,18 + 4734: -27,17 + 4735: -25,18 + 4736: -25,17 - node: color: '#EFB34196' id: BotGreyscale decals: - 1634: -55,-33 - 1635: -49,-29 - 1636: -44,-25 - 1637: -24,-33 - 1638: -3,-23 - 1639: 6,-27 - 1640: 17,-23 - 1641: 19,-58 - 1642: 32,-32 - 1643: 17,-6 - 1644: 40,5 - 1645: 43,-12 - 1646: 62,-3 - 1647: 22,7 - 1648: 35,30 - 1649: 43,12 - 1650: 25,25 - 1651: 30,40 - 1652: 14,48 - 1653: 26,68 - 1654: 3,38 - 1655: -20,24 - 1656: -20,21 - 1657: -27,-17 - 1658: -31,1 - 1659: 5,-2 - 1660: -3,-6 - 1661: -26,-2 - 1662: -43,-3 - 1663: -32,-23 - 1667: -23,52 - 1668: -15,41 - 1670: -61,43 - 1671: -39,31 - 1672: -18,-44 - 1673: -4,-63 - 1674: 26,-10 + 1623: -55,-33 + 1624: -49,-29 + 1625: -44,-25 + 1626: -24,-33 + 1627: -3,-23 + 1628: 6,-27 + 1629: 17,-23 + 1630: 19,-58 + 1631: 32,-32 + 1632: 17,-6 + 1633: 40,5 + 1634: 43,-12 + 1635: 62,-3 + 1636: 22,7 + 1637: 35,30 + 1638: 43,12 + 1639: 25,25 + 1640: 30,40 + 1641: 14,48 + 1642: 26,68 + 1643: 3,38 + 1644: -20,24 + 1645: -20,21 + 1646: -27,-17 + 1647: -31,1 + 1648: 5,-2 + 1649: -3,-6 + 1650: -26,-2 + 1651: -43,-3 + 1652: -32,-23 + 1656: -23,52 + 1657: -15,41 + 1659: -61,43 + 1660: -39,31 + 1661: -18,-44 + 1662: -4,-63 + 1663: 26,-10 - node: color: '#EFB34196' id: BotLeft decals: - 1044: 37,27 - 1045: 37,28 + 1034: 37,27 + 1035: 37,28 - node: angle: 3.141592653589793 rad color: '#334E6DC8' id: BotLeftGreyscale decals: - 500: -9,-1 - 501: -8,-1 - 502: -7,-1 + 490: -9,-1 + 491: -8,-1 + 492: -7,-1 - node: zIndex: 1 color: '#FFFFFFFF' id: BotLeftGreyscale decals: - 4904: -44,-44 - 4905: -40,-44 - 4906: -42,-40 + 4891: -44,-44 + 4892: -40,-44 + 4893: -42,-40 - node: color: '#EFB34196' id: BotRight decals: - 701: 24,17 - 702: 24,16 - 703: 24,15 - 704: 25,17 - 705: 25,16 - 706: 25,15 - 707: 26,17 - 708: 26,16 - 709: 26,15 - 710: 27,17 - 711: 27,16 - 712: 27,15 - 713: 28,17 - 714: 28,16 - 715: 28,15 - 716: 29,17 - 717: 29,16 - 718: 29,15 - 1090: 35,15 - 1091: 35,16 - 1092: 36,15 - 1093: 37,15 - 1094: 37,16 - 1095: 38,15 - 1096: 38,16 - 1097: 39,15 - 1098: 39,16 - 1550: 36,16 + 691: 24,17 + 692: 24,16 + 693: 24,15 + 694: 25,17 + 695: 25,16 + 696: 25,15 + 697: 26,17 + 698: 26,16 + 699: 26,15 + 700: 27,17 + 701: 27,16 + 702: 27,15 + 703: 28,17 + 704: 28,16 + 705: 28,15 + 706: 29,17 + 707: 29,16 + 708: 29,15 + 1080: 35,15 + 1081: 35,16 + 1082: 36,15 + 1083: 37,15 + 1084: 37,16 + 1085: 38,15 + 1086: 38,16 + 1087: 39,15 + 1088: 39,16 + 1540: 36,16 - node: color: '#EFB34196' id: Box decals: - 1042: 37,26 + 1032: 37,26 - node: angle: 3.141592653589793 rad color: '#EFB34196' id: Box decals: - 493: 23,1 - 494: 23,0 - 495: 22,1 - 496: 22,0 + 483: 23,1 + 484: 23,0 + 485: 22,1 + 486: 22,0 - node: color: '#EFB34196' id: BoxGreyscale decals: - 1114: 42,23 - 1115: 43,23 - 1116: 42,21 - 1117: 43,21 - 1120: 42,19 - 1121: 43,19 + 1104: 42,23 + 1105: 43,23 + 1106: 42,21 + 1107: 43,21 + 1110: 42,19 + 1111: 43,19 - node: color: '#FFFFFFFF' id: BrickTileDarkCornerNe decals: - 3537: 14,-10 - 3679: 29,-15 - 3823: 2,61 - 3916: 46,36 - 3946: 38,21 - 3960: 37,20 - 4239: -59,54 - 4279: -5,-61 - 4386: 29,56 - 4614: 16,75 - 4615: 19,74 - 4696: -31,18 + 3524: 14,-10 + 3666: 29,-15 + 3810: 2,61 + 3903: 46,36 + 3933: 38,21 + 3947: 37,20 + 4226: -59,54 + 4266: -5,-61 + 4373: 29,56 + 4601: 16,75 + 4602: 19,74 + 4683: -31,18 - node: color: '#FFFFFFFF' id: BrickTileDarkCornerNw decals: - 3523: 0,-10 - 3680: 28,-15 - 3821: -2,61 - 3918: 43,36 - 3943: 35,21 - 3963: 36,20 - 4241: -61,54 - 4281: -7,-61 - 4319: 23,79 - 4383: 26,56 - 4612: 11,74 - 4613: 14,75 - 4693: -33,18 + 3510: 0,-10 + 3667: 28,-15 + 3808: -2,61 + 3905: 43,36 + 3930: 35,21 + 3950: 36,20 + 4228: -61,54 + 4268: -7,-61 + 4306: 23,79 + 4370: 26,56 + 4599: 11,74 + 4600: 14,75 + 4680: -33,18 - node: color: '#FFFFFFFF' id: BrickTileDarkCornerSe decals: - 3539: 14,-12 - 3557: 9,-14 - 3670: 29,-24 - 3789: -17,25 - 3822: 2,57 - 3917: 46,33 - 3949: 38,18 - 3961: 37,19 - 4280: -5,-62 - 4329: 31,73 - 4529: -30,-29 - 4616: 19,72 - 4694: -31,17 + 3526: 14,-12 + 3544: 9,-14 + 3657: 29,-24 + 3776: -17,25 + 3809: 2,57 + 3904: 46,33 + 3936: 38,18 + 3948: 37,19 + 4267: -5,-62 + 4316: 31,73 + 4516: -30,-29 + 4603: 19,72 + 4681: -31,17 - node: color: '#FFFFFFFF' id: BrickTileDarkCornerSw decals: - 3521: 0,-12 - 3553: 5,-14 - 3573: 22,-30 - 3669: 28,-24 - 3820: -2,57 - 3919: 43,33 - 3940: 35,18 - 3962: 36,19 - 4282: -7,-62 - 4313: 23,73 - 4617: 11,72 - 4695: -33,17 + 3508: 0,-12 + 3540: 5,-14 + 3560: 22,-30 + 3656: 28,-24 + 3807: -2,57 + 3906: 43,33 + 3927: 35,18 + 3949: 36,19 + 4269: -7,-62 + 4300: 23,73 + 4604: 11,72 + 4682: -33,17 - node: color: '#FFFFFFFF' id: BrickTileDarkInnerNe decals: - 3697: 28,-24 - 4631: 16,74 + 3684: 28,-24 + 4618: 16,74 - node: color: '#FFFFFFFF' id: BrickTileDarkInnerNw decals: - 3696: 29,-24 - 4632: 14,74 - 4753: -24,16 + 3683: 29,-24 + 4619: 14,74 + 4740: -24,16 - node: color: '#FFFFFFFF' id: BrickTileDarkInnerSe decals: - 3550: 9,-12 - 3715: 28,-15 - 3795: -17,26 + 3537: 9,-12 + 3702: 28,-15 + 3782: -17,26 - node: color: '#FFFFFFFF' id: BrickTileDarkInnerSw decals: - 3549: 5,-12 - 3714: 29,-15 - 4752: -24,19 + 3536: 5,-12 + 3701: 29,-15 + 4739: -24,19 - node: color: '#FFFFFFFF' id: BrickTileDarkLineE decals: - 3538: 14,-11 - 3551: 9,-13 - 3671: 29,-23 - 3672: 29,-22 - 3673: 29,-21 - 3674: 29,-20 - 3675: 29,-19 - 3676: 29,-18 - 3677: 29,-17 - 3678: 29,-16 - 3698: 28,-23 - 3699: 28,-22 - 3700: 28,-21 - 3701: 28,-20 - 3702: 28,-19 - 3703: 28,-18 - 3704: 28,-17 - 3705: 28,-16 - 3827: 2,58 - 3828: 2,59 - 3829: 2,60 - 3910: 46,34 - 3911: 46,35 - 3947: 38,20 - 3948: 38,19 - 3956: 35,19 - 3957: 35,20 - 4195: 41,0 - 4196: 41,-1 - 4238: -59,53 - 4330: 31,74 - 4331: 31,75 - 4387: 29,55 - 4388: 29,54 - 4389: 29,53 - 4390: 29,52 - 4530: -30,-28 - 4531: -30,-27 - 4532: -30,-26 - 4533: -30,-25 - 4618: 19,73 - 4703: -32,15 - 4704: -32,16 - 4705: -32,19 - 4706: -32,20 - 4716: -34,17 - 4717: -34,18 - 4718: -34,19 - 4719: -34,16 - 4728: -28,18 - 4729: -28,17 - 4736: -29,17 - 4737: -29,18 + 3525: 14,-11 + 3538: 9,-13 + 3658: 29,-23 + 3659: 29,-22 + 3660: 29,-21 + 3661: 29,-20 + 3662: 29,-19 + 3663: 29,-18 + 3664: 29,-17 + 3665: 29,-16 + 3685: 28,-23 + 3686: 28,-22 + 3687: 28,-21 + 3688: 28,-20 + 3689: 28,-19 + 3690: 28,-18 + 3691: 28,-17 + 3692: 28,-16 + 3814: 2,58 + 3815: 2,59 + 3816: 2,60 + 3897: 46,34 + 3898: 46,35 + 3934: 38,20 + 3935: 38,19 + 3943: 35,19 + 3944: 35,20 + 4182: 41,0 + 4183: 41,-1 + 4225: -59,53 + 4317: 31,74 + 4318: 31,75 + 4374: 29,55 + 4375: 29,54 + 4376: 29,53 + 4377: 29,52 + 4517: -30,-28 + 4518: -30,-27 + 4519: -30,-26 + 4520: -30,-25 + 4605: 19,73 + 4690: -32,15 + 4691: -32,16 + 4692: -32,19 + 4693: -32,20 + 4703: -34,17 + 4704: -34,18 + 4705: -34,19 + 4706: -34,16 + 4715: -28,18 + 4716: -28,17 + 4723: -29,17 + 4724: -29,18 - node: color: '#FFFFFFFF' id: BrickTileDarkLineN decals: - 3524: 1,-10 - 3525: 2,-10 - 3526: 3,-10 - 3527: 4,-10 - 3528: 5,-10 - 3529: 6,-10 - 3530: 7,-10 - 3531: 8,-10 - 3532: 9,-10 - 3533: 10,-10 - 3534: 11,-10 - 3535: 12,-10 - 3536: 13,-10 - 3830: 1,61 - 3831: 0,61 - 3832: -1,61 - 3914: 44,36 - 3915: 45,36 - 3944: 36,21 - 3945: 37,21 - 3958: 36,18 - 3959: 37,18 - 4240: -60,54 - 4278: -6,-61 - 4320: 24,79 - 4360: 26,79 - 4361: 27,79 - 4384: 27,56 - 4385: 28,56 - 4627: 12,74 - 4628: 13,74 - 4629: 15,75 - 4630: 17,74 - 4662: 18,74 - 4698: -32,18 + 3511: 1,-10 + 3512: 2,-10 + 3513: 3,-10 + 3514: 4,-10 + 3515: 5,-10 + 3516: 6,-10 + 3517: 7,-10 + 3518: 8,-10 + 3519: 9,-10 + 3520: 10,-10 + 3521: 11,-10 + 3522: 12,-10 + 3523: 13,-10 + 3817: 1,61 + 3818: 0,61 + 3819: -1,61 + 3901: 44,36 + 3902: 45,36 + 3931: 36,21 + 3932: 37,21 + 3945: 36,18 + 3946: 37,18 + 4227: -60,54 + 4265: -6,-61 + 4307: 24,79 + 4347: 26,79 + 4348: 27,79 + 4371: 27,56 + 4372: 28,56 + 4614: 12,74 + 4615: 13,74 + 4616: 15,75 + 4617: 17,74 + 4649: 18,74 + 4685: -32,18 - node: color: '#FFFFFFFF' id: BrickTileDarkLineS decals: - 3541: 13,-12 - 3542: 12,-12 - 3543: 11,-12 - 3544: 10,-12 - 3545: 1,-12 - 3546: 2,-12 - 3547: 3,-12 - 3548: 4,-12 - 3554: 6,-14 - 3555: 7,-14 - 3556: 8,-14 - 3576: 23,-30 - 3790: -18,25 - 3791: -19,25 - 3792: -20,25 - 3793: -21,25 - 3796: -16,26 - 3797: -15,26 - 3798: -14,26 - 3799: -13,26 - 3824: -1,57 - 3825: 0,57 - 3826: 1,57 - 3912: 44,33 - 3913: 45,33 - 3950: 37,18 - 3951: 36,18 - 3952: 36,21 - 3953: 37,21 - 4277: -6,-62 - 4321: 24,73 - 4322: 25,73 - 4323: 26,73 - 4324: 27,73 - 4325: 28,73 - 4326: 29,73 - 4327: 30,73 - 4328: 31,73 - 4358: 26,78 - 4359: 27,78 - 4521: -38,-29 - 4522: -37,-29 - 4523: -36,-29 - 4524: -35,-29 - 4525: -34,-29 - 4526: -33,-29 - 4527: -32,-29 - 4528: -31,-29 - 4620: 12,72 - 4621: 13,72 - 4622: 14,72 - 4623: 15,72 - 4624: 16,72 - 4625: 17,72 - 4626: 18,72 - 4697: -32,17 + 3528: 13,-12 + 3529: 12,-12 + 3530: 11,-12 + 3531: 10,-12 + 3532: 1,-12 + 3533: 2,-12 + 3534: 3,-12 + 3535: 4,-12 + 3541: 6,-14 + 3542: 7,-14 + 3543: 8,-14 + 3563: 23,-30 + 3777: -18,25 + 3778: -19,25 + 3779: -20,25 + 3780: -21,25 + 3783: -16,26 + 3784: -15,26 + 3785: -14,26 + 3786: -13,26 + 3811: -1,57 + 3812: 0,57 + 3813: 1,57 + 3899: 44,33 + 3900: 45,33 + 3937: 37,18 + 3938: 36,18 + 3939: 36,21 + 3940: 37,21 + 4264: -6,-62 + 4308: 24,73 + 4309: 25,73 + 4310: 26,73 + 4311: 27,73 + 4312: 28,73 + 4313: 29,73 + 4314: 30,73 + 4315: 31,73 + 4345: 26,78 + 4346: 27,78 + 4508: -38,-29 + 4509: -37,-29 + 4510: -36,-29 + 4511: -35,-29 + 4512: -34,-29 + 4513: -33,-29 + 4514: -32,-29 + 4515: -31,-29 + 4607: 12,72 + 4608: 13,72 + 4609: 14,72 + 4610: 15,72 + 4611: 16,72 + 4612: 17,72 + 4613: 18,72 + 4684: -32,17 - node: color: '#FFFFFFFF' id: BrickTileDarkLineW decals: - 3522: 0,-11 - 3552: 5,-13 - 3574: 22,-29 - 3575: 22,-28 - 3661: 28,-23 - 3662: 28,-22 - 3663: 28,-21 - 3664: 28,-20 - 3665: 28,-19 - 3666: 28,-18 - 3667: 28,-17 - 3668: 28,-16 - 3706: 29,-16 - 3707: 29,-17 - 3708: 29,-18 - 3709: 29,-19 - 3710: 29,-20 - 3711: 29,-21 - 3712: 29,-22 - 3713: 29,-23 - 3833: -2,60 - 3834: -2,59 - 3835: -2,58 - 3908: 43,34 - 3909: 43,35 - 3941: 35,19 - 3942: 35,20 - 3954: 38,20 - 3955: 38,19 - 4197: 39,0 - 4198: 39,-1 - 4242: -61,53 - 4314: 23,74 - 4315: 23,75 - 4316: 23,76 - 4317: 23,77 - 4318: 23,78 - 4381: 26,52 - 4382: 26,53 - 4411: 26,54 - 4412: 26,55 - 4619: 11,73 - 4699: -32,20 - 4700: -32,19 - 4701: -32,16 - 4702: -32,15 - 4732: -28,18 - 4733: -28,17 - 4750: -24,17 - 4751: -24,18 + 3509: 0,-11 + 3539: 5,-13 + 3561: 22,-29 + 3562: 22,-28 + 3648: 28,-23 + 3649: 28,-22 + 3650: 28,-21 + 3651: 28,-20 + 3652: 28,-19 + 3653: 28,-18 + 3654: 28,-17 + 3655: 28,-16 + 3693: 29,-16 + 3694: 29,-17 + 3695: 29,-18 + 3696: 29,-19 + 3697: 29,-20 + 3698: 29,-21 + 3699: 29,-22 + 3700: 29,-23 + 3820: -2,60 + 3821: -2,59 + 3822: -2,58 + 3895: 43,34 + 3896: 43,35 + 3928: 35,19 + 3929: 35,20 + 3941: 38,20 + 3942: 38,19 + 4184: 39,0 + 4185: 39,-1 + 4229: -61,53 + 4301: 23,74 + 4302: 23,75 + 4303: 23,76 + 4304: 23,77 + 4305: 23,78 + 4368: 26,52 + 4369: 26,53 + 4398: 26,54 + 4399: 26,55 + 4606: 11,73 + 4686: -32,20 + 4687: -32,19 + 4688: -32,16 + 4689: -32,15 + 4719: -28,18 + 4720: -28,17 + 4737: -24,17 + 4738: -24,18 - node: color: '#FFFFFFFF' id: BrickTileSteelBox decals: - 3990: -56,-32 + 3977: -56,-32 - node: color: '#FFFFFFFF' id: BrickTileSteelCornerNe decals: - 3583: 31,-31 - 3769: 28,-8 - 3803: -24,38 - 3904: 28,70 - 3928: 40,30 - 4094: 62,-5 - 4110: 58,-14 - 4208: -58,44 - 4284: -27,4 - 4303: 81,9 + 3570: 31,-31 + 3756: 28,-8 + 3790: -24,38 + 3891: 28,70 + 3915: 40,30 + 4081: 62,-5 + 4097: 58,-14 + 4195: -58,44 + 4271: -27,4 + 4290: 81,9 - node: color: '#FFFFFFFF' id: BrickTileSteelCornerNw decals: - 3577: 25,-31 - 3770: 23,-8 - 3801: -27,38 - 3907: 27,70 - 3929: 39,30 - 4079: 49,-5 - 4207: -62,44 - 4283: -30,4 - 4308: 77,9 + 3564: 25,-31 + 3757: 23,-8 + 3788: -27,38 + 3894: 27,70 + 3916: 39,30 + 4066: 49,-5 + 4194: -62,44 + 4270: -30,4 + 4295: 77,9 - node: color: '#FFFFFFFF' id: BrickTileSteelCornerSe decals: - 3588: 31,-36 - 3772: 28,-9 - 3802: -24,37 - 3905: 28,69 - 3927: 40,26 - 4095: 62,-6 - 4116: 58,-20 - 4209: -58,37 - 4285: -27,1 - 4302: 81,7 + 3575: 31,-36 + 3759: 28,-9 + 3789: -24,37 + 3892: 28,69 + 3914: 40,26 + 4082: 62,-6 + 4103: 58,-20 + 4196: -58,37 + 4272: -27,1 + 4289: 81,7 - node: color: '#FFFFFFFF' id: BrickTileSteelCornerSw decals: - 3594: 25,-36 - 3771: 23,-9 - 3800: -27,37 - 3906: 27,69 - 3926: 39,26 - 4080: 49,-6 - 4120: 54,-20 - 4206: -62,37 - 4286: -30,1 - 4309: 77,7 + 3581: 25,-36 + 3758: 23,-9 + 3787: -27,37 + 3893: 27,69 + 3913: 39,26 + 4067: 49,-6 + 4107: 54,-20 + 4193: -62,37 + 4273: -30,1 + 4296: 77,7 - node: color: '#FFFFFFFF' id: BrickTileSteelEndN decals: - 3991: -56,-26 + 3978: -56,-26 - node: color: '#FFFFFFFF' id: BrickTileSteelEndS decals: - 3992: -56,-28 + 3979: -56,-28 - node: color: '#FFFFFFFF' id: BrickTileSteelInnerNe decals: - 3617: 25,-36 - 4108: 56,-14 - 4228: -59,51 - 4234: -63,46 + 3604: 25,-36 + 4095: 56,-14 + 4215: -59,51 + 4221: -63,46 - node: color: '#FFFFFFFF' id: BrickTileSteelInnerNw decals: - 3618: 31,-36 - 4227: -57,51 - 4233: -61,46 + 3605: 31,-36 + 4214: -57,51 + 4220: -61,46 - node: color: '#FFFFFFFF' id: BrickTileSteelInnerSe decals: - 3620: 25,-31 - 4101: 56,-6 - 4398: 26,56 + 3607: 25,-31 + 4088: 56,-6 + 4385: 26,56 - node: color: '#FFFFFFFF' id: BrickTileSteelInnerSw decals: - 3619: 31,-31 - 4131: 54,-6 - 4132: 54,-6 - 4395: 29,56 + 3606: 31,-31 + 4118: 54,-6 + 4119: 54,-6 + 4382: 29,56 - node: color: '#FFFFFFFF' id: BrickTileSteelLineE decals: - 3584: 31,-32 - 3585: 31,-33 - 3586: 31,-34 - 3587: 31,-35 - 3599: 25,-34 - 3600: 25,-33 - 3601: 25,-32 - 3602: 25,-35 - 3923: 40,29 - 3924: 40,28 - 3925: 40,27 - 3993: -56,-27 - 4100: 56,-7 - 4102: 56,-9 - 4103: 56,-8 - 4104: 56,-10 - 4105: 56,-11 - 4106: 56,-12 - 4107: 56,-13 - 4111: 58,-15 - 4112: 58,-16 - 4113: 58,-17 - 4114: 58,-18 - 4115: 58,-19 - 4210: -58,38 - 4211: -58,39 - 4212: -58,40 - 4213: -58,41 - 4214: -58,39 - 4215: -58,42 - 4216: -58,43 - 4289: -27,2 - 4290: -27,3 - 4304: 81,8 - 4399: 26,53 - 4400: 26,52 - 4413: 26,55 - 4414: 26,54 + 3571: 31,-32 + 3572: 31,-33 + 3573: 31,-34 + 3574: 31,-35 + 3586: 25,-34 + 3587: 25,-33 + 3588: 25,-32 + 3589: 25,-35 + 3910: 40,29 + 3911: 40,28 + 3912: 40,27 + 3980: -56,-27 + 4087: 56,-7 + 4089: 56,-9 + 4090: 56,-8 + 4091: 56,-10 + 4092: 56,-11 + 4093: 56,-12 + 4094: 56,-13 + 4098: 58,-15 + 4099: 58,-16 + 4100: 58,-17 + 4101: 58,-18 + 4102: 58,-19 + 4197: -58,38 + 4198: -58,39 + 4199: -58,40 + 4200: -58,41 + 4201: -58,39 + 4202: -58,42 + 4203: -58,43 + 4276: -27,2 + 4277: -27,3 + 4291: 81,8 + 4386: 26,53 + 4387: 26,52 + 4400: 26,55 + 4401: 26,54 - node: color: '#FFFFFFFF' id: BrickTileSteelLineN decals: - 3578: 26,-31 - 3579: 27,-31 - 3580: 28,-31 - 3581: 29,-31 - 3582: 30,-31 - 3612: 30,-36 - 3613: 29,-36 - 3614: 28,-36 - 3615: 27,-36 - 3616: 26,-36 - 3751: 16,-3 - 3752: 15,-3 - 3753: 14,-3 - 3754: 13,-3 - 3755: 12,-3 - 3756: 11,-3 - 3757: 10,-3 - 3758: 9,-3 - 3759: 8,-3 - 3760: 7,-3 - 3761: 6,-3 - 3762: 5,-3 - 3763: 4,-3 - 3764: 3,-3 - 3765: 2,-3 - 3766: 1,-3 - 3767: 0,-3 - 3768: -1,-3 - 3777: 24,-8 - 3778: 25,-8 - 3779: 26,-8 - 3780: 27,-8 - 3781: -20,28 - 3782: -19,28 - 3783: -18,28 - 3784: -15,28 - 3785: -14,28 - 3786: -13,28 - 3804: -26,38 - 3805: -25,38 - 4081: 50,-5 - 4082: 51,-5 - 4083: 52,-5 - 4084: 53,-5 - 4085: 54,-5 - 4086: 55,-5 - 4087: 56,-5 - 4088: 57,-5 - 4089: 58,-5 - 4090: 58,-5 - 4091: 59,-5 - 4092: 60,-5 - 4093: 61,-5 - 4109: 57,-14 - 4217: -61,44 - 4218: -60,44 - 4219: -59,44 - 4226: -58,51 - 4232: -62,46 - 4260: 15,-24 - 4261: 14,-24 - 4262: 13,-24 - 4263: 12,-24 - 4264: 11,-24 - 4265: 10,-24 - 4266: 9,-24 - 4267: 8,-24 - 4268: 7,-24 - 4269: 6,-24 - 4270: 5,-24 - 4271: 4,-24 - 4272: 3,-24 - 4273: 2,-24 - 4274: 1,-24 - 4275: 0,-24 - 4276: -1,-24 - 4293: -29,4 - 4294: -28,4 - 4305: 80,9 - 4306: 79,9 - 4307: 78,9 + 3565: 26,-31 + 3566: 27,-31 + 3567: 28,-31 + 3568: 29,-31 + 3569: 30,-31 + 3599: 30,-36 + 3600: 29,-36 + 3601: 28,-36 + 3602: 27,-36 + 3603: 26,-36 + 3738: 16,-3 + 3739: 15,-3 + 3740: 14,-3 + 3741: 13,-3 + 3742: 12,-3 + 3743: 11,-3 + 3744: 10,-3 + 3745: 9,-3 + 3746: 8,-3 + 3747: 7,-3 + 3748: 6,-3 + 3749: 5,-3 + 3750: 4,-3 + 3751: 3,-3 + 3752: 2,-3 + 3753: 1,-3 + 3754: 0,-3 + 3755: -1,-3 + 3764: 24,-8 + 3765: 25,-8 + 3766: 26,-8 + 3767: 27,-8 + 3768: -20,28 + 3769: -19,28 + 3770: -18,28 + 3771: -15,28 + 3772: -14,28 + 3773: -13,28 + 3791: -26,38 + 3792: -25,38 + 4068: 50,-5 + 4069: 51,-5 + 4070: 52,-5 + 4071: 53,-5 + 4072: 54,-5 + 4073: 55,-5 + 4074: 56,-5 + 4075: 57,-5 + 4076: 58,-5 + 4077: 58,-5 + 4078: 59,-5 + 4079: 60,-5 + 4080: 61,-5 + 4096: 57,-14 + 4204: -61,44 + 4205: -60,44 + 4206: -59,44 + 4213: -58,51 + 4219: -62,46 + 4247: 15,-24 + 4248: 14,-24 + 4249: 13,-24 + 4250: 12,-24 + 4251: 11,-24 + 4252: 10,-24 + 4253: 9,-24 + 4254: 8,-24 + 4255: 7,-24 + 4256: 6,-24 + 4257: 5,-24 + 4258: 4,-24 + 4259: 3,-24 + 4260: 2,-24 + 4261: 1,-24 + 4262: 0,-24 + 4263: -1,-24 + 4280: -29,4 + 4281: -28,4 + 4292: 80,9 + 4293: 79,9 + 4294: 78,9 - node: color: '#FFFFFFFF' id: BrickTileSteelLineS decals: - 3589: 30,-36 - 3590: 29,-36 - 3591: 28,-36 - 3592: 27,-36 - 3593: 26,-36 - 3607: 30,-31 - 3608: 29,-31 - 3609: 28,-31 - 3610: 27,-31 - 3611: 26,-31 - 3733: -1,-5 - 3734: 0,-5 - 3735: 1,-5 - 3736: 16,-5 - 3737: 14,-5 - 3738: 15,-5 - 3739: 13,-5 - 3740: 12,-5 - 3741: 11,-5 - 3742: 10,-5 - 3743: 9,-5 - 3744: 8,-5 - 3745: 7,-5 - 3746: 6,-5 - 3747: 5,-5 - 3748: 4,-5 - 3749: 3,-5 - 3750: 2,-5 - 3773: 24,-9 - 3774: 25,-9 - 3775: 26,-9 - 3776: 27,-9 - 3806: -26,37 - 3807: -25,37 - 4096: 61,-6 - 4097: 60,-6 - 4098: 58,-6 - 4099: 57,-6 - 4117: 57,-20 - 4118: 56,-20 - 4119: 55,-20 - 4133: 53,-6 - 4134: 52,-6 - 4135: 50,-6 - 4136: 51,-6 - 4158: 59,-6 - 4203: -61,37 - 4204: -60,37 - 4205: -59,37 - 4243: -1,-26 - 4244: 0,-26 - 4245: 1,-26 - 4246: 2,-26 - 4247: 3,-26 - 4248: 4,-26 - 4249: 5,-26 - 4250: 6,-26 - 4251: 7,-26 - 4252: 8,-26 - 4253: 9,-26 - 4254: 10,-26 - 4255: 11,-26 - 4256: 12,-26 - 4257: 13,-26 - 4258: 14,-26 - 4259: 15,-26 - 4291: -29,1 - 4292: -28,1 - 4299: 78,7 - 4300: 79,7 - 4301: 80,7 - 4396: 28,56 - 4397: 27,56 + 3576: 30,-36 + 3577: 29,-36 + 3578: 28,-36 + 3579: 27,-36 + 3580: 26,-36 + 3594: 30,-31 + 3595: 29,-31 + 3596: 28,-31 + 3597: 27,-31 + 3598: 26,-31 + 3720: -1,-5 + 3721: 0,-5 + 3722: 1,-5 + 3723: 16,-5 + 3724: 14,-5 + 3725: 15,-5 + 3726: 13,-5 + 3727: 12,-5 + 3728: 11,-5 + 3729: 10,-5 + 3730: 9,-5 + 3731: 8,-5 + 3732: 7,-5 + 3733: 6,-5 + 3734: 5,-5 + 3735: 4,-5 + 3736: 3,-5 + 3737: 2,-5 + 3760: 24,-9 + 3761: 25,-9 + 3762: 26,-9 + 3763: 27,-9 + 3793: -26,37 + 3794: -25,37 + 4083: 61,-6 + 4084: 60,-6 + 4085: 58,-6 + 4086: 57,-6 + 4104: 57,-20 + 4105: 56,-20 + 4106: 55,-20 + 4120: 53,-6 + 4121: 52,-6 + 4122: 50,-6 + 4123: 51,-6 + 4145: 59,-6 + 4190: -61,37 + 4191: -60,37 + 4192: -59,37 + 4230: -1,-26 + 4231: 0,-26 + 4232: 1,-26 + 4233: 2,-26 + 4234: 3,-26 + 4235: 4,-26 + 4236: 5,-26 + 4237: 6,-26 + 4238: 7,-26 + 4239: 8,-26 + 4240: 9,-26 + 4241: 10,-26 + 4242: 11,-26 + 4243: 12,-26 + 4244: 13,-26 + 4245: 14,-26 + 4246: 15,-26 + 4278: -29,1 + 4279: -28,1 + 4286: 78,7 + 4287: 79,7 + 4288: 80,7 + 4383: 28,56 + 4384: 27,56 - node: color: '#FFFFFFFF' id: BrickTileSteelLineW decals: - 3595: 25,-35 - 3596: 25,-34 - 3597: 25,-33 - 3598: 25,-32 - 3603: 31,-35 - 3604: 31,-34 - 3605: 31,-33 - 3606: 31,-32 - 3787: -21,27 - 3788: -21,26 - 3794: -21,25 - 3920: 39,27 - 3921: 39,28 - 3922: 39,29 - 3994: -56,-27 - 4121: 54,-19 - 4122: 54,-18 - 4123: 54,-14 - 4124: 54,-13 - 4125: 54,-12 - 4126: 54,-11 - 4127: 54,-10 - 4128: 54,-9 - 4129: 54,-8 - 4130: 54,-7 - 4220: -62,43 - 4221: -62,42 - 4222: -62,41 - 4223: -62,40 - 4224: -62,39 - 4225: -62,38 - 4287: -30,2 - 4288: -30,3 - 4310: 77,8 - 4391: 29,52 - 4392: 29,53 - 4393: 29,54 - 4394: 29,55 + 3582: 25,-35 + 3583: 25,-34 + 3584: 25,-33 + 3585: 25,-32 + 3590: 31,-35 + 3591: 31,-34 + 3592: 31,-33 + 3593: 31,-32 + 3774: -21,27 + 3775: -21,26 + 3781: -21,25 + 3907: 39,27 + 3908: 39,28 + 3909: 39,29 + 3981: -56,-27 + 4108: 54,-19 + 4109: 54,-18 + 4110: 54,-14 + 4111: 54,-13 + 4112: 54,-12 + 4113: 54,-11 + 4114: 54,-10 + 4115: 54,-9 + 4116: 54,-8 + 4117: 54,-7 + 4207: -62,43 + 4208: -62,42 + 4209: -62,41 + 4210: -62,40 + 4211: -62,39 + 4212: -62,38 + 4274: -30,2 + 4275: -30,3 + 4297: 77,8 + 4378: 29,52 + 4379: 29,53 + 4380: 29,54 + 4381: 29,55 - node: color: '#334E6DC8' id: BrickTileWhiteCornerNe decals: - 3486: 5,-12 + 3473: 5,-12 - node: color: '#52B4E996' id: BrickTileWhiteCornerNe decals: - 4929: -30,-35 + 4916: -30,-35 - node: color: '#A4610696' id: BrickTileWhiteCornerNe decals: - 3939: 40,30 - 3973: 38,21 + 3926: 40,30 + 3960: 38,21 - node: color: '#D381C996' id: BrickTileWhiteCornerNe decals: - 4406: 29,56 - 4649: 16,75 - 4650: 19,74 + 4393: 29,56 + 4636: 16,75 + 4637: 19,74 - node: color: '#DE3A3A96' id: BrickTileWhiteCornerNe decals: - 4155: 62,-5 - 4173: 58,-14 + 4142: 62,-5 + 4160: 58,-14 - node: color: '#FFFFFFFF' id: BrickTileWhiteCornerNe decals: - 3873: 29,61 - 4058: -17,-29 - 4444: -29,-12 + 3860: 29,61 + 4045: -17,-29 + 4431: -29,-12 - node: color: '#334E6DC8' id: BrickTileWhiteCornerNw decals: - 3513: 9,-12 + 3500: 9,-12 - node: color: '#52B4E996' id: BrickTileWhiteCornerNw decals: - 4930: -40,-35 + 4917: -40,-35 - node: color: '#A4610696' id: BrickTileWhiteCornerNw decals: - 3934: 39,30 - 3970: 35,21 + 3921: 39,30 + 3957: 35,21 - node: color: '#D381C996' id: BrickTileWhiteCornerNw decals: - 4334: 23,79 - 4403: 26,56 - 4647: 14,75 - 4648: 11,74 + 4321: 23,79 + 4390: 26,56 + 4634: 14,75 + 4635: 11,74 - node: color: '#DE3A3A96' id: BrickTileWhiteCornerNw decals: - 4142: 49,-5 + 4129: 49,-5 - node: color: '#FFFFFFFF' id: BrickTileWhiteCornerNw decals: - 3871: 22,61 - 4056: -20,-29 - 4452: -37,-12 + 3858: 22,61 + 4043: -20,-29 + 4439: -37,-12 - node: color: '#52B4E996' id: BrickTileWhiteCornerSe decals: - 4931: -30,-40 - 4932: -37,-41 + 4918: -30,-40 + 4919: -37,-41 - node: color: '#A4610696' id: BrickTileWhiteCornerSe decals: - 3935: 40,26 - 3964: 38,18 + 3922: 40,26 + 3951: 38,18 - node: color: '#D381C996' id: BrickTileWhiteCornerSe decals: - 4332: 31,73 - 4646: 19,72 + 4319: 31,73 + 4633: 19,72 - node: color: '#DE3A3A96' id: BrickTileWhiteCornerSe decals: - 4156: 62,-6 - 4179: 58,-20 + 4143: 62,-6 + 4166: 58,-20 - node: color: '#F9801DFF' id: BrickTileWhiteCornerSe decals: - 4542: -30,-29 + 4529: -30,-29 - node: color: '#FFFFFFFF' id: BrickTileWhiteCornerSe decals: - 3870: 29,58 - 4057: -17,-31 - 4442: -29,-14 + 3857: 29,58 + 4044: -17,-31 + 4429: -29,-14 - node: color: '#52B4E996' id: BrickTileWhiteCornerSw decals: - 4933: -40,-41 + 4920: -40,-41 - node: color: '#A4610696' id: BrickTileWhiteCornerSw decals: - 3933: 39,26 - 3967: 35,18 + 3920: 39,26 + 3954: 35,18 - node: color: '#D381C996' id: BrickTileWhiteCornerSw decals: - 4333: 23,73 - 4651: 11,72 + 4320: 23,73 + 4638: 11,72 - node: color: '#DE3A3A96' id: BrickTileWhiteCornerSw decals: - 4141: 49,-6 - 4183: 54,-20 + 4128: 49,-6 + 4170: 54,-20 - node: color: '#FFFFFFFF' id: BrickTileWhiteCornerSw decals: - 3872: 22,58 - 4055: -20,-31 - 4453: -37,-13 + 3859: 22,58 + 4042: -20,-31 + 4440: -37,-13 - node: color: '#FFFFFFFF' id: BrickTileWhiteEndN decals: - 4066: 7,-39 + 4053: 7,-39 - node: color: '#FFFFFFFF' id: BrickTileWhiteEndS decals: - 4065: 7,-42 + 4052: 7,-42 - node: color: '#334E6DC8' id: BrickTileWhiteInnerNe decals: - 3491: 0,-12 - 3519: 5,-14 - 3569: -10,-3 - 4230: -59,51 + 3478: 0,-12 + 3506: 5,-14 + 3556: -10,-3 + 4217: -59,51 - node: color: '#52B4E996' id: BrickTileWhiteInnerNe decals: - 4924: -52,-37 + 4911: -52,-37 - node: color: '#D381C996' id: BrickTileWhiteInnerNe decals: - 4652: 16,74 + 4639: 16,74 - node: color: '#DE3A3A96' id: BrickTileWhiteInnerNe decals: - 4171: 56,-14 - 4235: -63,46 + 4158: 56,-14 + 4222: -63,46 - node: color: '#334E6DC8' id: BrickTileWhiteInnerNw decals: - 3515: 9,-14 - 3540: 14,-12 - 3570: -4,-3 - 4231: -57,51 - 4757: -24,16 + 3502: 9,-14 + 3527: 14,-12 + 3557: -4,-3 + 4218: -57,51 + 4744: -24,16 - node: color: '#52B4E996' id: BrickTileWhiteInnerNw decals: - 4923: -48,-37 + 4910: -48,-37 - node: color: '#D381C996' id: BrickTileWhiteInnerNw decals: - 4653: 14,74 + 4640: 14,74 - node: color: '#DE3A3A96' id: BrickTileWhiteInnerNw decals: - 4236: -61,46 + 4223: -61,46 - node: color: '#334E6DC8' id: BrickTileWhiteInnerSe decals: - 3493: 0,-10 + 3480: 0,-10 - node: color: '#52B4E996' id: BrickTileWhiteInnerSe decals: - 4916: -52,-35 - 4934: -37,-40 + 4903: -52,-35 + 4921: -37,-40 - node: color: '#DE3A3A96' id: BrickTileWhiteInnerSe decals: - 4163: 56,-6 + 4150: 56,-6 - node: color: '#334E6DC8' id: BrickTileWhiteInnerSw decals: - 3507: 14,-10 - 4756: -24,19 + 3494: 14,-10 + 4743: -24,19 - node: color: '#52B4E996' id: BrickTileWhiteInnerSw decals: - 4915: -48,-35 + 4902: -48,-35 - node: color: '#DE3A3A96' id: BrickTileWhiteInnerSw decals: - 4194: 54,-6 + 4181: 54,-6 - node: color: '#FFFFFFFF' id: BrickTileWhiteInnerSw decals: - 4456: -34,-13 + 4443: -34,-13 - node: color: '#334E6DC8' id: BrickTileWhiteLineE decals: - 3492: 0,-11 - 3520: 5,-13 + 3479: 0,-11 + 3507: 5,-13 - node: color: '#52B4E996' id: BrickTileWhiteLineE decals: - 4913: -52,-36 - 4952: -30,-36 - 4953: -30,-37 - 4954: -30,-38 - 4955: -30,-39 + 4900: -52,-36 + 4939: -30,-36 + 4940: -30,-37 + 4941: -30,-38 + 4942: -30,-39 - node: color: '#9FED5896' id: BrickTileWhiteLineE decals: - 4709: -32,16 + 4696: -32,16 - node: color: '#A4610696' id: BrickTileWhiteLineE decals: - 3936: 40,27 - 3937: 40,28 - 3938: 40,29 - 3974: 38,20 - 3975: 38,19 + 3923: 40,27 + 3924: 40,28 + 3925: 40,29 + 3961: 38,20 + 3962: 38,19 - node: color: '#D381C996' id: BrickTileWhiteLineE decals: - 4348: 31,74 - 4349: 31,75 - 4407: 29,55 - 4408: 29,54 - 4409: 29,53 - 4410: 29,52 - 4644: 19,73 + 4335: 31,74 + 4336: 31,75 + 4394: 29,55 + 4395: 29,54 + 4396: 29,53 + 4397: 29,52 + 4631: 19,73 - node: color: '#D4D4D405' id: BrickTileWhiteLineE decals: - 4738: -29,18 - 4739: -29,17 + 4725: -29,18 + 4726: -29,17 - node: color: '#D4D4D40C' id: BrickTileWhiteLineE decals: - 4726: -28,18 - 4727: -28,17 + 4713: -28,18 + 4714: -28,17 - node: color: '#D4D4D426' id: BrickTileWhiteLineE decals: - 4730: -28,18 - 4731: -28,17 + 4717: -28,18 + 4718: -28,17 - node: color: '#D4D4D428' id: BrickTileWhiteLineE decals: - 4714: -32,19 + 4701: -32,19 - node: color: '#DE3A3A96' id: BrickTileWhiteLineE decals: - 4164: 56,-7 - 4165: 56,-8 - 4166: 56,-9 - 4167: 56,-10 - 4168: 56,-11 - 4169: 56,-12 - 4170: 56,-13 - 4174: 58,-15 - 4175: 58,-16 - 4176: 58,-17 - 4177: 58,-18 - 4178: 58,-19 - 4201: 41,0 - 4202: 41,-1 - 4711: -32,15 + 4151: 56,-7 + 4152: 56,-8 + 4153: 56,-9 + 4154: 56,-10 + 4155: 56,-11 + 4156: 56,-12 + 4157: 56,-13 + 4161: 58,-15 + 4162: 58,-16 + 4163: 58,-17 + 4164: 58,-18 + 4165: 58,-19 + 4188: 41,0 + 4189: 41,-1 + 4698: -32,15 - node: color: '#EFB34196' id: BrickTileWhiteLineE decals: - 4710: -32,20 + 4697: -32,20 - node: color: '#F9801DFF' id: BrickTileWhiteLineE decals: - 4543: -30,-28 - 4544: -30,-27 - 4545: -30,-26 - 4546: -30,-25 + 4530: -30,-28 + 4531: -30,-27 + 4532: -30,-26 + 4533: -30,-25 - node: color: '#FFFFFFFF' id: BrickTileWhiteLineE decals: - 3888: 29,59 - 3889: 29,60 - 4064: -17,-30 - 4067: 7,-40 - 4068: 7,-41 - 4443: -29,-13 - 4715: -45,15 + 3875: 29,59 + 3876: 29,60 + 4051: -17,-30 + 4054: 7,-40 + 4055: 7,-41 + 4430: -29,-13 + 4702: -45,15 - node: color: '#334E6DC8' id: BrickTileWhiteLineN decals: - 3487: 4,-12 - 3488: 3,-12 - 3489: 2,-12 - 3490: 1,-12 - 3509: 13,-12 - 3510: 12,-12 - 3511: 11,-12 - 3512: 10,-12 - 3516: 8,-14 - 3517: 7,-14 - 3518: 6,-14 - 3566: -8,-3 - 3567: -7,-3 - 3568: -6,-3 - 4229: -58,51 + 3474: 4,-12 + 3475: 3,-12 + 3476: 2,-12 + 3477: 1,-12 + 3496: 13,-12 + 3497: 12,-12 + 3498: 11,-12 + 3499: 10,-12 + 3503: 8,-14 + 3504: 7,-14 + 3505: 6,-14 + 3553: -8,-3 + 3554: -7,-3 + 3555: -6,-3 + 4216: -58,51 - node: color: '#52B4E996' id: BrickTileWhiteLineN decals: - 4920: -51,-37 - 4921: -50,-37 - 4922: -49,-37 - 4943: -39,-35 - 4944: -38,-35 - 4945: -37,-35 - 4946: -36,-35 - 4947: -35,-35 - 4948: -34,-35 - 4949: -33,-35 - 4950: -32,-35 - 4951: -31,-35 + 4907: -51,-37 + 4908: -50,-37 + 4909: -49,-37 + 4930: -39,-35 + 4931: -38,-35 + 4932: -37,-35 + 4933: -36,-35 + 4934: -35,-35 + 4935: -34,-35 + 4936: -33,-35 + 4937: -32,-35 + 4938: -31,-35 - node: color: '#A4610696' id: BrickTileWhiteLineN decals: - 3971: 36,21 - 3972: 37,21 + 3958: 36,21 + 3959: 37,21 - node: color: '#D381C996' id: BrickTileWhiteLineN decals: - 4335: 24,79 - 4364: 26,79 - 4365: 27,79 - 4404: 27,56 - 4405: 28,56 - 4640: 12,74 - 4641: 13,74 - 4642: 15,75 - 4643: 17,74 - 4663: 18,74 + 4322: 24,79 + 4351: 26,79 + 4352: 27,79 + 4391: 27,56 + 4392: 28,56 + 4627: 12,74 + 4628: 13,74 + 4629: 15,75 + 4630: 17,74 + 4650: 18,74 - node: color: '#DE3A3A96' id: BrickTileWhiteLineN decals: - 4143: 50,-5 - 4144: 51,-5 - 4145: 52,-5 - 4146: 53,-5 - 4147: 54,-5 - 4148: 55,-5 - 4149: 56,-5 - 4150: 57,-5 - 4151: 58,-5 - 4152: 59,-5 - 4153: 60,-5 - 4154: 61,-5 - 4172: 57,-14 - 4237: -62,46 + 4130: 50,-5 + 4131: 51,-5 + 4132: 52,-5 + 4133: 53,-5 + 4134: 54,-5 + 4135: 55,-5 + 4136: 56,-5 + 4137: 57,-5 + 4138: 58,-5 + 4139: 59,-5 + 4140: 60,-5 + 4141: 61,-5 + 4159: 57,-14 + 4224: -62,46 - node: color: '#FFFFFFFF' id: BrickTileWhiteLineN decals: - 3874: 28,61 - 3875: 27,61 - 3876: 26,61 - 3877: 25,61 - 3878: 24,61 - 3879: 23,61 - 4019: -53,-31 - 4020: -52,-31 - 4021: -51,-31 - 4022: -50,-31 - 4023: -49,-31 - 4024: -48,-31 - 4025: -47,-31 - 4026: -46,-31 - 4027: -45,-31 - 4028: -44,-31 - 4029: -43,-31 - 4030: -42,-31 - 4031: -41,-31 - 4032: -40,-31 - 4033: -39,-31 - 4034: -38,-31 - 4035: -37,-31 - 4036: -36,-31 - 4037: -35,-31 - 4038: -34,-31 - 4039: -33,-31 - 4040: -32,-31 - 4041: -31,-31 - 4042: -30,-31 - 4059: -19,-29 - 4060: -18,-29 - 4445: -30,-12 - 4446: -31,-12 - 4447: -32,-12 - 4448: -33,-12 - 4449: -34,-12 - 4450: -35,-12 - 4451: -36,-12 + 3861: 28,61 + 3862: 27,61 + 3863: 26,61 + 3864: 25,61 + 3865: 24,61 + 3866: 23,61 + 4006: -53,-31 + 4007: -52,-31 + 4008: -51,-31 + 4009: -50,-31 + 4010: -49,-31 + 4011: -48,-31 + 4012: -47,-31 + 4013: -46,-31 + 4014: -45,-31 + 4015: -44,-31 + 4016: -43,-31 + 4017: -42,-31 + 4018: -41,-31 + 4019: -40,-31 + 4020: -39,-31 + 4021: -38,-31 + 4022: -37,-31 + 4023: -36,-31 + 4024: -35,-31 + 4025: -34,-31 + 4026: -33,-31 + 4027: -32,-31 + 4028: -31,-31 + 4029: -30,-31 + 4046: -19,-29 + 4047: -18,-29 + 4432: -30,-12 + 4433: -31,-12 + 4434: -32,-12 + 4435: -33,-12 + 4436: -34,-12 + 4437: -35,-12 + 4438: -36,-12 - node: color: '#334E6DC8' id: BrickTileWhiteLineS decals: - 3494: 1,-10 - 3495: 2,-10 - 3496: 3,-10 - 3497: 4,-10 - 3498: 5,-10 - 3499: 6,-10 - 3500: 7,-10 - 3501: 8,-10 - 3502: 9,-10 - 3503: 10,-10 - 3504: 11,-10 - 3505: 12,-10 - 3506: 13,-10 + 3481: 1,-10 + 3482: 2,-10 + 3483: 3,-10 + 3484: 4,-10 + 3485: 5,-10 + 3486: 6,-10 + 3487: 7,-10 + 3488: 8,-10 + 3489: 9,-10 + 3490: 10,-10 + 3491: 11,-10 + 3492: 12,-10 + 3493: 13,-10 - node: color: '#52B4E996' id: BrickTileWhiteLineS decals: - 4910: -51,-35 - 4911: -50,-35 - 4912: -49,-35 - 4935: -39,-41 - 4936: -38,-41 - 4937: -36,-40 - 4938: -35,-40 - 4939: -34,-40 - 4940: -33,-40 - 4941: -32,-40 - 4942: -31,-40 + 4897: -51,-35 + 4898: -50,-35 + 4899: -49,-35 + 4922: -39,-41 + 4923: -38,-41 + 4924: -36,-40 + 4925: -35,-40 + 4926: -34,-40 + 4927: -33,-40 + 4928: -32,-40 + 4929: -31,-40 - node: color: '#A4610696' id: BrickTileWhiteLineS decals: - 3965: 37,18 - 3966: 36,18 + 3952: 37,18 + 3953: 36,18 - node: color: '#D381C996' id: BrickTileWhiteLineS decals: - 4341: 24,73 - 4342: 25,73 - 4343: 26,73 - 4344: 27,73 - 4345: 28,73 - 4346: 29,73 - 4347: 30,73 - 4362: 26,78 - 4363: 27,78 - 4633: 12,72 - 4634: 13,72 - 4635: 14,72 - 4636: 15,72 - 4637: 16,72 - 4638: 17,72 - 4639: 18,72 + 4328: 24,73 + 4329: 25,73 + 4330: 26,73 + 4331: 27,73 + 4332: 28,73 + 4333: 29,73 + 4334: 30,73 + 4349: 26,78 + 4350: 27,78 + 4620: 12,72 + 4621: 13,72 + 4622: 14,72 + 4623: 15,72 + 4624: 16,72 + 4625: 17,72 + 4626: 18,72 - node: color: '#DE3A3A96' id: BrickTileWhiteLineS decals: - 4137: 51,-6 - 4138: 50,-6 - 4139: 52,-6 - 4140: 53,-6 - 4157: 61,-6 - 4159: 60,-6 - 4160: 59,-6 - 4161: 58,-6 - 4162: 57,-6 - 4180: 57,-20 - 4181: 56,-20 - 4182: 55,-20 + 4124: 51,-6 + 4125: 50,-6 + 4126: 52,-6 + 4127: 53,-6 + 4144: 61,-6 + 4146: 60,-6 + 4147: 59,-6 + 4148: 58,-6 + 4149: 57,-6 + 4167: 57,-20 + 4168: 56,-20 + 4169: 55,-20 - node: color: '#F9801DFF' id: BrickTileWhiteLineS decals: - 4534: -32,-29 - 4535: -33,-29 - 4536: -34,-29 - 4537: -35,-29 - 4538: -36,-29 - 4539: -37,-29 - 4540: -38,-29 - 4541: -31,-29 + 4521: -32,-29 + 4522: -33,-29 + 4523: -34,-29 + 4524: -35,-29 + 4525: -36,-29 + 4526: -37,-29 + 4527: -38,-29 + 4528: -31,-29 - node: color: '#FFFFFFFF' id: BrickTileWhiteLineS decals: - 3880: 23,58 - 3881: 24,58 - 3882: 25,58 - 3883: 26,58 - 3884: 27,58 - 3885: 28,58 - 3995: -30,-33 - 3996: -31,-33 - 3997: -32,-33 - 3998: -33,-33 - 3999: -34,-33 - 4000: -35,-33 - 4001: -36,-33 - 4002: -37,-33 - 4003: -38,-33 - 4004: -39,-33 - 4005: -40,-33 - 4006: -41,-33 - 4007: -42,-33 - 4008: -43,-33 - 4009: -44,-33 - 4010: -45,-33 - 4011: -46,-33 - 4012: -47,-33 - 4013: -48,-33 - 4014: -49,-33 - 4015: -50,-33 - 4016: -51,-33 - 4017: -52,-33 - 4018: -53,-33 - 4061: -19,-31 - 4062: -18,-31 - 4437: -34,-14 - 4438: -33,-14 - 4439: -32,-14 - 4440: -31,-14 - 4441: -30,-14 - 4454: -36,-13 - 4455: -35,-13 + 3867: 23,58 + 3868: 24,58 + 3869: 25,58 + 3870: 26,58 + 3871: 27,58 + 3872: 28,58 + 3982: -30,-33 + 3983: -31,-33 + 3984: -32,-33 + 3985: -33,-33 + 3986: -34,-33 + 3987: -35,-33 + 3988: -36,-33 + 3989: -37,-33 + 3990: -38,-33 + 3991: -39,-33 + 3992: -40,-33 + 3993: -41,-33 + 3994: -42,-33 + 3995: -43,-33 + 3996: -44,-33 + 3997: -45,-33 + 3998: -46,-33 + 3999: -47,-33 + 4000: -48,-33 + 4001: -49,-33 + 4002: -50,-33 + 4003: -51,-33 + 4004: -52,-33 + 4005: -53,-33 + 4048: -19,-31 + 4049: -18,-31 + 4424: -34,-14 + 4425: -33,-14 + 4426: -32,-14 + 4427: -31,-14 + 4428: -30,-14 + 4441: -36,-13 + 4442: -35,-13 - node: color: '#334E6DC8' id: BrickTileWhiteLineW decals: - 3508: 14,-11 - 3514: 9,-13 - 4707: -32,20 - 4754: -24,17 - 4755: -24,18 + 3495: 14,-11 + 3501: 9,-13 + 4694: -32,20 + 4741: -24,17 + 4742: -24,18 - node: color: '#52B4E996' id: BrickTileWhiteLineW decals: - 4708: -32,15 - 4914: -48,-36 - 4956: -40,-40 - 4957: -40,-39 - 4958: -40,-38 - 4959: -40,-37 - 4960: -40,-36 + 4695: -32,15 + 4901: -48,-36 + 4943: -40,-40 + 4944: -40,-39 + 4945: -40,-38 + 4946: -40,-37 + 4947: -40,-36 - node: color: '#A4610696' id: BrickTileWhiteLineW decals: - 3930: 39,28 - 3931: 39,29 - 3932: 39,27 - 3968: 35,19 - 3969: 35,20 - 4713: -32,19 + 3917: 39,28 + 3918: 39,29 + 3919: 39,27 + 3955: 35,19 + 3956: 35,20 + 4700: -32,19 - node: color: '#D381C996' id: BrickTileWhiteLineW decals: - 4336: 23,78 - 4337: 23,77 - 4338: 23,76 - 4339: 23,75 - 4340: 23,74 - 4401: 26,52 - 4402: 26,53 - 4645: 11,73 - 4712: -32,16 + 4323: 23,78 + 4324: 23,77 + 4325: 23,76 + 4326: 23,75 + 4327: 23,74 + 4388: 26,52 + 4389: 26,53 + 4632: 11,73 + 4699: -32,16 - node: color: '#D4D4D407' id: BrickTileWhiteLineW decals: - 4734: -28,17 - 4735: -28,18 + 4721: -28,17 + 4722: -28,18 - node: color: '#DE3A3A96' id: BrickTileWhiteLineW decals: - 4184: 54,-19 - 4185: 54,-18 - 4186: 54,-14 - 4187: 54,-13 - 4188: 54,-12 - 4189: 54,-11 - 4190: 54,-10 - 4191: 54,-9 - 4192: 54,-8 - 4193: 54,-7 - 4199: 39,0 - 4200: 39,-1 + 4171: 54,-19 + 4172: 54,-18 + 4173: 54,-14 + 4174: 54,-13 + 4175: 54,-12 + 4176: 54,-11 + 4177: 54,-10 + 4178: 54,-9 + 4179: 54,-8 + 4180: 54,-7 + 4186: 39,0 + 4187: 39,-1 - node: color: '#FFFFFFFF' id: BrickTileWhiteLineW decals: - 3732: -34,-14 - 3886: 22,59 - 3887: 22,60 - 4063: -20,-30 - 4069: 7,-40 - 4070: 7,-41 + 3719: -34,-14 + 3873: 22,59 + 3874: 22,60 + 4050: -20,-30 + 4056: 7,-40 + 4057: 7,-41 - node: color: '#9FED58B7' id: BushAThree decals: - 4779: -1.3686488,46.73154 + 4766: -1.3686488,46.73154 - node: color: '#9FED58B7' id: BushATwo decals: - 4776: -1.8939891,47.625587 + 4763: -1.8939891,47.625587 - node: color: '#9FED5888' id: Busha1 decals: - 4768: -3.0174823,45.91548 + 4755: -3.0174823,45.91548 - node: color: '#9FED5888' id: Busha2 decals: - 4758: -1.1858082,47.7461 - 4762: -2.0945249,48.15766 - 4763: -3.1452603,46.53989 - 4765: -1.0012178,48.11507 + 4745: -1.1858082,47.7461 + 4749: -2.0945249,48.15766 + 4750: -3.1452603,46.53989 + 4752: -1.0012178,48.11507 - node: color: '#FFFFFFC0' id: Busha2 decals: - 4464: -19.715633,-0.08040953 - 4465: -18.948898,1.7076702 - 4466: -19.360664,4.00663 + 4451: -19.715633,-0.08040953 + 4452: -18.948898,1.7076702 + 4453: -19.360664,4.00663 - node: color: '#60BC5DB1' id: Busha3 decals: - 4518: -19.190277,3.2119274 + 4505: -19.190277,3.2119274 - node: color: '#9FED5896' id: Busha3 decals: - 3231: -40.3527,-18.329292 - 3232: -43.1027,-18.48207 - 3233: -42.922146,-21.50985 - 3234: -41.408257,-22.968182 - 3235: -39.96381,-23.48207 - 3236: -39.99159,-21.829292 - 3237: -41.19992,-21.815403 - 3238: -40.86659,-18.565403 - 3239: -39.811035,-17.926516 - 3240: -41.11659,-17.75985 - 3241: -42.853085,-20.88498 + 3218: -40.3527,-18.329292 + 3219: -43.1027,-18.48207 + 3220: -42.922146,-21.50985 + 3221: -41.408257,-22.968182 + 3222: -39.96381,-23.48207 + 3223: -39.99159,-21.829292 + 3224: -41.19992,-21.815403 + 3225: -40.86659,-18.565403 + 3226: -39.811035,-17.926516 + 3227: -41.11659,-17.75985 + 3228: -42.853085,-20.88498 - node: color: '#A4DF8296' id: Busha3 decals: - 1686: -7.8109317,-1.9599552 + 1675: -7.8109317,-1.9599552 - node: color: '#9FED5888' id: Bushb1 decals: - 4761: -2.7476902,46.8379 + 4748: -2.7476902,46.8379 - node: color: '#60BC5DB1' id: Bushb2 decals: - 4517: -19.928616,2.0482564 - 4519: -19.786627,0.2601776 + 4504: -19.928616,2.0482564 + 4506: -19.786627,0.2601776 - node: color: '#60E25863' id: Bushb2 decals: - 3334: -17.64635,-37.739723 + 3321: -17.64635,-37.739723 - node: color: '#60E258BA' id: Bushb2 decals: - 3335: -16.049128,-37.545277 - 3336: -15.201906,-36.309166 - 3337: -15.313017,-37.7675 - 3338: -17.03524,-36.392498 - 3339: -17.868574,-36.281387 - 3340: -17.715796,-37.948055 - 3341: -16.118574,-38.059166 - 3342: -15.243574,-36.920277 - 3343: -16.826906,-36.850834 - 3344: -17.563017,-36.809166 - 3345: -16.701906,-37.670277 - 3346: -16.688017,-36.295277 - 3347: -15.729685,-36.670277 + 3322: -16.049128,-37.545277 + 3323: -15.201906,-36.309166 + 3324: -15.313017,-37.7675 + 3325: -17.03524,-36.392498 + 3326: -17.868574,-36.281387 + 3327: -17.715796,-37.948055 + 3328: -16.118574,-38.059166 + 3329: -15.243574,-36.920277 + 3330: -16.826906,-36.850834 + 3331: -17.563017,-36.809166 + 3332: -16.701906,-37.670277 + 3333: -16.688017,-36.295277 + 3334: -15.729685,-36.670277 - node: color: '#9FED5888' id: Bushb2 decals: - 4760: -2.932261,47.646793 - 4766: -0.98705816,45.801918 + 4747: -2.932261,47.646793 + 4753: -0.98705816,45.801918 - node: color: '#9FED5896' id: Bushb2 decals: - 3306: 78.083496,7.9973173 - 3307: 79.00016,7.900096 - 3308: 79.84738,7.8862066 + 3293: 78.083496,7.9973173 + 3294: 79.00016,7.900096 + 3295: 79.84738,7.8862066 - node: color: '#9FED58B7' id: Bushb2 decals: - 4775: -1.9508109,45.96523 - 4777: -0.9142871,46.774105 + 4762: -1.9508109,45.96523 + 4764: -0.9142871,46.774105 - node: color: '#A4DF8296' id: Bushb2 decals: - 1687: -6.2553773,-1.9043994 + 1676: -6.2553773,-1.9043994 - node: color: '#FFFFFFC0' id: Bushb2 decals: - 4467: -19.999609,3.2545013 - 4468: -19.85762,1.8637729 - 4469: -18.920502,0.8420129 - 4470: -20.184193,0.5156174 - 4471: -19.062489,3.4531765 - 4472: -20.212591,4.3046427 + 4454: -19.999609,3.2545013 + 4455: -19.85762,1.8637729 + 4456: -18.920502,0.8420129 + 4457: -20.184193,0.5156174 + 4458: -19.062489,3.4531765 + 4459: -20.212591,4.3046427 - node: color: '#60BC5DB1' id: Bushb3 decals: - 4514: -19.247074,3.6518526 - 4515: -19.871819,1.7928166 - 4516: -19.829224,0.13245726 - 4520: -18.948898,3.5241327 + 4501: -19.247074,3.6518526 + 4502: -19.871819,1.7928166 + 4503: -19.829224,0.13245726 + 4507: -18.948898,3.5241327 - node: color: '#9FED5888' id: Bushb3 decals: - 4759: -3.0174766,46.241875 - 4764: -3.1594381,47.859665 + 4746: -3.0174766,46.241875 + 4751: -3.1594381,47.859665 - node: color: '#9FED58B7' id: Bushb3 decals: - 4778: -1.666812,47.42691 + 4765: -1.666812,47.42691 - node: color: '#9FED5888' id: Bushc1 decals: - 4767: -2.8187013,45.81614 + 4754: -2.8187013,45.81614 - node: color: '#FFFFFFC0' id: Bushc1 decals: - 4462: -20.013807,2.6159015 - 4463: -20.042206,1.2393641 + 4449: -20.013807,2.6159015 + 4450: -20.042206,1.2393641 - node: color: '#9FED5896' id: Bushc3 decals: - 3242: -43.038807,-18.0765 + 3229: -43.038807,-18.0765 - node: color: '#FFFFFFFF' id: Bushg1 decals: - 4783: -16.08111,-40.251266 + 4770: -16.08111,-40.251266 - node: color: '#FFFFFFFF' id: Bushg2 decals: - 4782: -17.983753,-40.59182 + 4769: -17.983753,-40.59182 - node: color: '#FFFFFFFF' id: Bushg3 decals: - 4780: -14.888399,-39.371437 + 4767: -14.888399,-39.371437 - node: color: '#FFFFFFFF' id: Bushg4 decals: - 4781: -15.484749,-39.442383 + 4768: -15.484749,-39.442383 - node: color: '#A4DF8296' id: Bushj3 decals: - 1689: -7.4513307,-22.276455 - 1690: -9.062441,-22.720898 - 1691: -8.867998,-23.748676 - 1692: -7.340218,-23.748676 + 1678: -7.4513307,-22.276455 + 1679: -9.062441,-22.720898 + 1680: -8.867998,-23.748676 + 1681: -7.340218,-23.748676 - node: color: '#A4DF8296' id: Bushk1 decals: - 1688: -8.284664,-23.526455 - 1693: -7.340218,-22.970898 + 1677: -8.284664,-23.526455 + 1682: -7.340218,-22.970898 - node: color: '#FFFFFF6C' id: Bushk1 decals: - 4460: -18.991495,3.5808964 + 4447: -18.991495,3.5808964 - node: color: '#FFFFFFC0' id: Bushk1 decals: - 4461: -19.062489,2.7720032 + 4448: -19.062489,2.7720032 - node: color: '#60E25873' id: Bushm1 decals: - 3388: -59.97946,38.265724 - 3389: -60.02113,39.390724 - 3390: -59.99335,40.724056 - 3391: -59.91002,42.335167 - 3392: -60.090576,43.071278 - 3393: -60.10446,41.279613 - 3394: -60.04891,39.765724 + 3375: -59.97946,38.265724 + 3376: -60.02113,39.390724 + 3377: -59.99335,40.724056 + 3378: -59.91002,42.335167 + 3379: -60.090576,43.071278 + 3380: -60.10446,41.279613 + 3381: -60.04891,39.765724 - node: color: '#52B4E95A' id: CheckerNESW decals: - 4796: 73,-1 - 4797: 72,-1 - 4798: 72,0 - 4799: 73,0 - 4800: 85,-1 - 4801: 85,0 - 4802: 86,0 - 4803: 86,-1 + 4783: 73,-1 + 4784: 72,-1 + 4785: 72,0 + 4786: 73,0 + 4787: 85,-1 + 4788: 85,0 + 4789: 86,0 + 4790: 86,-1 - node: color: '#52B4E996' id: CheckerNESW decals: - 4881: -34,-43 - 4882: -34,-44 - 4917: -51,-36 - 4918: -50,-36 - 4919: -49,-36 + 4868: -34,-43 + 4869: -34,-44 + 4904: -51,-36 + 4905: -50,-36 + 4906: -49,-36 - node: color: '#52B4E996' id: CheckerNWSE decals: - 3274: -46,-35 - 3275: -46,-36 - 3276: -45,-35 - 3277: -45,-36 - 3278: -44,-35 - 3279: -44,-36 - 3280: -43,-35 - 3281: -43,-36 - 3282: -42,-35 - 3283: -42,-36 + 3261: -46,-35 + 3262: -46,-36 + 3263: -45,-35 + 3264: -45,-36 + 3265: -44,-35 + 3266: -44,-36 + 3267: -43,-35 + 3268: -43,-36 + 3269: -42,-35 + 3270: -42,-36 - node: color: '#D381C996' id: CheckerNWSE decals: - 962: 21,65 - 963: 21,64 - 964: 21,63 - 965: 22,65 - 966: 22,64 - 967: 22,63 - 968: 23,65 - 969: 23,64 - 970: 23,63 - 971: 24,65 - 972: 24,64 - 973: 24,63 + 952: 21,65 + 953: 21,64 + 954: 21,63 + 955: 22,65 + 956: 22,64 + 957: 22,63 + 958: 23,65 + 959: 23,64 + 960: 23,63 + 961: 24,65 + 962: 24,64 + 963: 24,63 - node: color: '#FED83D79' id: CheckerNWSE decals: - 4788: 85,-1 - 4789: 85,0 - 4790: 86,0 - 4791: 86,-1 - 4792: 72,-1 - 4793: 72,0 - 4794: 73,0 - 4795: 73,-1 + 4775: 85,-1 + 4776: 85,0 + 4777: 86,0 + 4778: 86,-1 + 4779: 72,-1 + 4780: 72,0 + 4781: 73,0 + 4782: 73,-1 - node: color: '#0E7F1BFF' id: Delivery decals: - 4993: 37,-12 + 4971: 37,-12 - node: color: '#1861D5FF' id: Delivery decals: - 4991: 34,-13 + 4969: 34,-13 - node: color: '#334E6DC8' id: Delivery decals: - 497: -6,-1 + 487: -6,-1 - node: color: '#79150096' id: Delivery decals: - 3297: 81,16 - 3298: 82,16 - 3299: 83,16 - 3300: 84,16 - 3301: 74,16 - 3302: 75,16 - 3303: 76,16 - 3304: 77,16 + 3284: 81,16 + 3285: 82,16 + 3286: 83,16 + 3287: 84,16 + 3288: 74,16 + 3289: 75,16 + 3290: 76,16 + 3291: 77,16 - node: color: '#951710FF' id: Delivery decals: - 4992: 34,-12 + 4970: 34,-12 - node: color: '#D58C18FF' id: Delivery decals: - 4994: 38,-12 + 4972: 38,-12 - node: color: '#EFB34196' id: Delivery decals: - 1046: 37,29 - 1207: -64,39 + 1036: 37,29 + 1197: -64,39 - node: color: '#EFB34196' id: DeliveryGreyscale decals: - 1111: 36,13 - 1112: 37,13 - 1113: 38,13 - 1118: 42,22 - 1119: 43,22 - 1122: 42,20 - 1123: 43,20 + 1101: 36,13 + 1102: 37,13 + 1103: 38,13 + 1108: 42,22 + 1109: 43,22 + 1112: 42,20 + 1113: 43,20 - node: color: '#52B4E996' id: DiagonalCheckerBOverlay decals: - 4043: -20,-29 - 4044: -20,-30 - 4045: -20,-31 - 4046: -19,-29 - 4047: -19,-30 - 4048: -19,-31 - 4049: -18,-29 - 4050: -18,-30 - 4051: -18,-31 - 4052: -17,-29 - 4053: -17,-30 - 4054: -17,-31 + 4030: -20,-29 + 4031: -20,-30 + 4032: -20,-31 + 4033: -19,-29 + 4034: -19,-30 + 4035: -19,-31 + 4036: -18,-29 + 4037: -18,-30 + 4038: -18,-31 + 4039: -17,-29 + 4040: -17,-30 + 4041: -17,-31 - node: color: '#D381C996' id: DiagonalCheckerBOverlay decals: - 3838: 22,58 - 3839: 22,59 - 3840: 22,61 - 3841: 22,60 - 3842: 23,61 - 3843: 23,60 - 3844: 23,59 - 3845: 23,58 - 3846: 24,58 - 3847: 24,59 - 3848: 24,60 - 3849: 24,61 - 3850: 25,61 - 3851: 25,60 - 3852: 25,59 - 3853: 25,58 - 3854: 26,58 - 3855: 26,59 - 3856: 26,60 - 3857: 26,61 - 3858: 27,61 - 3859: 27,60 - 3860: 27,59 - 3861: 27,58 - 3862: 28,58 - 3863: 28,59 - 3864: 28,60 - 3865: 28,61 - 3866: 29,61 - 3867: 29,60 - 3868: 29,59 - 3869: 29,58 + 3825: 22,58 + 3826: 22,59 + 3827: 22,61 + 3828: 22,60 + 3829: 23,61 + 3830: 23,60 + 3831: 23,59 + 3832: 23,58 + 3833: 24,58 + 3834: 24,59 + 3835: 24,60 + 3836: 24,61 + 3837: 25,61 + 3838: 25,60 + 3839: 25,59 + 3840: 25,58 + 3841: 26,58 + 3842: 26,59 + 3843: 26,60 + 3844: 26,61 + 3845: 27,61 + 3846: 27,60 + 3847: 27,59 + 3848: 27,58 + 3849: 28,58 + 3850: 28,59 + 3851: 28,60 + 3852: 28,61 + 3853: 29,61 + 3854: 29,60 + 3855: 29,59 + 3856: 29,58 - node: color: '#FFFFFFFF' id: DiagonalCheckerBOverlay decals: - 3716: -34,-14 - 3717: -33,-14 - 3718: -33,-13 - 3719: -29,-14 - 3720: -30,-14 - 3721: -31,-14 - 3722: -32,-14 - 3723: -32,-13 - 3724: -32,-12 - 3725: -33,-12 - 3726: -31,-12 - 3727: -31,-13 - 3728: -30,-12 - 3729: -30,-13 - 3730: -29,-13 - 3731: -29,-12 - 4429: -34,-13 - 4430: -34,-12 - 4431: -35,-12 - 4432: -35,-13 - 4433: -36,-13 - 4434: -36,-12 - 4435: -37,-13 - 4436: -37,-12 + 3703: -34,-14 + 3704: -33,-14 + 3705: -33,-13 + 3706: -29,-14 + 3707: -30,-14 + 3708: -31,-14 + 3709: -32,-14 + 3710: -32,-13 + 3711: -32,-12 + 3712: -33,-12 + 3713: -31,-12 + 3714: -31,-13 + 3715: -30,-12 + 3716: -30,-13 + 3717: -29,-13 + 3718: -29,-12 + 4416: -34,-13 + 4417: -34,-12 + 4418: -35,-12 + 4419: -35,-13 + 4420: -36,-13 + 4421: -36,-12 + 4422: -37,-13 + 4423: -37,-12 - node: cleanable: True color: '#8354328B' id: Dirt decals: - 4572: -38,-10 - 4573: -38,-13 - 4574: -32,-12 - 4575: -34,-13 - 4576: -34,-12 - 4577: -35,-12 - 4578: -36,-12 - 4579: -37,-13 - 4580: -35,-13 - 4581: -34,-13 - 4582: -33,-14 - 4583: -32,-14 - 4584: -31,-14 - 4585: -31,-12 - 4586: -30,-12 - 4587: -29,-14 - 4588: -29,-13 - 4589: -29,-12 - 4590: -31,-12 - 4591: -31,-14 - 4592: -29,-14 - 4593: -32,-16 - 4594: -33,-16 - 4595: -34,-16 - 4596: -37,-10 - 4597: -28,-12 - 4598: -32,-8 - 4599: -34,-9 - 4600: -31,-8 - 4601: -30,-7 - 4602: -33,-8 - 4603: -33,-8 - 4604: -34,-7 + 4559: -38,-10 + 4560: -38,-13 + 4561: -32,-12 + 4562: -34,-13 + 4563: -34,-12 + 4564: -35,-12 + 4565: -36,-12 + 4566: -37,-13 + 4567: -35,-13 + 4568: -34,-13 + 4569: -33,-14 + 4570: -32,-14 + 4571: -31,-14 + 4572: -31,-12 + 4573: -30,-12 + 4574: -29,-14 + 4575: -29,-13 + 4576: -29,-12 + 4577: -31,-12 + 4578: -31,-14 + 4579: -29,-14 + 4580: -32,-16 + 4581: -33,-16 + 4582: -34,-16 + 4583: -37,-10 + 4584: -28,-12 + 4585: -32,-8 + 4586: -34,-9 + 4587: -31,-8 + 4588: -30,-7 + 4589: -33,-8 + 4590: -33,-8 + 4591: -34,-7 - node: color: '#A4610696' id: Dirt decals: - 3395: -3,-35 - 3396: 1,-36 - 3397: -1,-36 - 3398: 2,-35 - 3399: 4,-36 - 3400: 8,-36 - 3401: 10,-35 - 3402: 11,-36 - 3403: 13,-36 - 3404: 15,-35 - 3405: 17,-36 - 3406: 7,-35 - 3407: 6,-35 - 3408: 4,-35 - 3409: 6,-36 - 3410: 2,-36 - 3411: 1,-35 - 3412: 3,-35 - 3413: 9,-36 - 3414: 11,-36 - 3415: 14,-36 + 3382: -3,-35 + 3383: 1,-36 + 3384: -1,-36 + 3385: 2,-35 + 3386: 4,-36 + 3387: 8,-36 + 3388: 10,-35 + 3389: 11,-36 + 3390: 13,-36 + 3391: 15,-35 + 3392: 17,-36 + 3393: 7,-35 + 3394: 6,-35 + 3395: 4,-35 + 3396: 6,-36 + 3397: 2,-36 + 3398: 1,-35 + 3399: 3,-35 + 3400: 9,-36 + 3401: 11,-36 + 3402: 14,-36 - node: cleanable: True color: '#A4610696' id: Dirt decals: - 1707: -5,50 - 1708: -6,46 - 1709: -7,44 - 1710: -4,48 - 1711: -1,50 - 1712: 2,49 - 1713: 5,49 - 1714: 6,51 - 1715: 7,49 - 1716: 9,50 - 1717: 13,49 - 1718: 16,51 - 1719: 19,49 - 1720: 23,50 - 1721: 23,49 - 1722: 29,51 - 1723: 31,51 - 1724: 32,49 - 1725: 33,47 - 1726: 31,48 - 1727: 34,53 - 1728: 33,49 - 1729: 30,49 - 1730: 32,42 - 1731: 33,40 - 1732: 33,36 - 1733: 32,34 - 1734: 32,32 - 1735: 33,33 - 1736: 32,29 - 1737: 31,27 - 1738: 32,28 - 1739: 33,24 - 1740: 32,22 - 1741: 33,23 - 1742: 31,21 - 1743: 33,19 - 1744: 32,17 - 1745: 31,16 - 1746: 32,15 - 1747: 33,14 - 1748: 31,12 - 1749: 31,11 - 1750: 33,9 - 1751: 32,8 - 1752: 31,7 - 1753: 33,4 - 1754: 30,3 - 1755: 30,2 - 1756: 30,2 - 1757: 28,1 - 1758: 28,0 - 1759: 29,0 - 1760: 27,-1 - 1761: 27,-2 - 1762: 28,-4 - 1763: 26,-4 - 1764: 25,-4 - 1765: 24,-5 - 1766: 22,-5 - 1767: 21,-4 - 1768: 20,-3 - 1769: 18,-4 - 1770: 12,-4 - 1771: 9,-4 - 1772: 7,-4 - 1773: 3,-4 - 1774: 0,-4 - 1775: 1,-4 - 1776: -5,-4 - 1777: -6,-5 - 1778: -7,-5 - 1779: -6,-4 - 1780: -10,-4 - 1781: -12,-5 - 1782: -14,-5 - 1783: -14,-4 - 1784: -16,-4 - 1785: -17,-5 - 1786: -18,-5 - 1787: -23,-5 - 1788: -24,-5 - 1789: -32,-4 - 1790: -38,-4 - 1791: -39,-4 - 1792: -40,-5 - 1793: -42,-5 - 1794: -42,-6 - 1795: -42,-7 - 1796: -42,-10 - 1797: -42,-12 - 1798: -42,-14 - 1799: -40,-16 - 1800: -42,-17 - 1801: -38,-7 - 1802: -38,-8 - 1803: -37,-7 - 1804: -33,-7 - 1805: -26,-4 - 1806: -24,-1 - 1807: -23,0 - 1808: -23,2 - 1809: -24,3 - 1810: -23,5 - 1811: -23,6 - 1812: -24,6 - 1813: -23,7 - 1814: -23,10 - 1815: -30,5 - 1816: -31,1 - 1817: -31,4 - 1818: -26,1 - 1819: -26,2 - 1820: -22,8 - 1821: -24,9 - 1822: -22,10 - 1823: -24,8 - 1824: -23,9 - 1825: -22,13 - 1826: -24,15 - 1827: -23,16 - 1828: -22,17 - 1829: -25,18 - 1830: -23,18 - 1831: -23,19 - 1832: -25,22 - 1833: -23,23 - 1834: -23,24 - 1835: -24,25 - 1836: -22,26 - 1837: -23,27 - 1838: -24,28 - 1839: -22,30 - 1840: -23,30 - 1841: -24,31 - 1842: -26,29 - 1843: -27,30 - 1844: -29,30 - 1845: -27,29 - 1846: -31,29 - 1847: -32,30 - 1848: -34,29 - 1849: -36,29 - 1850: -37,30 - 1851: -39,29 - 1852: -40,29 - 1853: -42,30 - 1854: -43,30 - 1855: -45,29 - 1856: -46,30 - 1857: -47,30 - 1858: -46,29 - 1859: -51,30 - 1860: -52,31 - 1861: -53,29 - 1862: -54,30 - 1863: -55,31 - 1864: -57,29 - 1865: -58,30 - 1866: -57,32 - 1867: -58,34 - 1868: -56,36 - 1869: -57,39 - 1870: -56,40 - 1871: -57,45 - 1872: -57,46 - 1873: -59,48 - 1874: -57,49 - 1875: -59,50 - 1876: -58,49 - 1877: -59,47 - 1878: -58,45 - 1879: -62,49 - 1880: -64,49 - 1881: -64,49 - 1882: -64,48 - 1883: -62,48 - 1884: -61,54 - 1885: -59,54 - 1886: -59,54 - 1887: -59,53 - 1888: -62,45 - 1889: -63,43 - 1890: -63,40 - 1891: -63,40 - 1892: -62,36 - 1893: -61,35 - 1894: -56,35 - 1895: -45,29 - 1896: -40,30 - 1897: -43,26 - 1898: -41,26 - 1899: -40,26 - 1900: -38,26 - 1901: -37,26 - 1902: -40,27 - 1903: -20,34 - 1904: -20,35 - 1905: -21,41 - 1906: -20,43 - 1907: -20,44 - 1908: -21,46 - 1909: -20,47 - 1910: -20,49 - 1911: -21,50 - 1912: -21,51 - 1913: -20,53 - 1914: -20,54 - 1915: -24,53 - 1916: -26,53 - 1917: -27,53 - 1918: -28,54 - 1919: -29,54 - 1920: -28,56 - 1921: -28,57 - 1922: -28,58 - 1923: -27,59 - 1924: -25,59 - 1925: -24,58 - 1926: -24,56 - 1927: -21,55 - 1928: -20,52 - 1929: -19,51 - 1930: -20,42 - 1931: -20,40 - 1932: -16,44 - 1933: -14,43 - 1934: -13,44 - 1935: -11,45 - 1936: -10,44 - 1937: -12,48 - 1938: -13,47 - 1939: -14,48 - 1940: -11,47 - 1941: -10,48 - 1942: -10,52 - 1943: -11,53 - 1944: -14,53 - 1945: -15,53 - 1946: -17,53 - 1947: -17,51 - 1948: -10,39 - 1949: -11,38 - 1950: -14,38 - 1951: -14,37 - 1952: -15,36 - 1953: -16,38 - 1954: -16,40 - 1955: -14,41 - 1956: -11,39 - 1957: -17,39 - 1958: -8,44 - 1959: -8,45 - 1960: -7,42 - 1961: -6,41 - 1962: -5,46 - 1963: -6,49 - 1964: -7,49 - 1965: 2,44 - 1966: -6,29 - 1967: -4,31 - 1968: -2,31 - 1969: 0,30 - 1970: 2,30 - 1971: 4,31 - 1972: 5,31 - 1973: 7,30 - 1974: 9,30 - 1975: 10,31 - 1976: 11,31 - 1977: 10,30 - 1978: 14,31 - 1979: 15,31 - 1980: 17,30 - 1981: 18,31 - 1982: 22,23 - 1983: 23,23 - 1984: 23,22 - 1985: 22,22 - 1986: 21,23 - 1987: 21,23 - 1988: 20,24 + 1696: -5,50 + 1697: -6,46 + 1698: -7,44 + 1699: -4,48 + 1700: -1,50 + 1701: 2,49 + 1702: 5,49 + 1703: 6,51 + 1704: 7,49 + 1705: 9,50 + 1706: 13,49 + 1707: 16,51 + 1708: 19,49 + 1709: 23,50 + 1710: 23,49 + 1711: 29,51 + 1712: 31,51 + 1713: 32,49 + 1714: 33,47 + 1715: 31,48 + 1716: 34,53 + 1717: 33,49 + 1718: 30,49 + 1719: 32,42 + 1720: 33,40 + 1721: 33,36 + 1722: 32,34 + 1723: 32,32 + 1724: 33,33 + 1725: 32,29 + 1726: 31,27 + 1727: 32,28 + 1728: 33,24 + 1729: 32,22 + 1730: 33,23 + 1731: 31,21 + 1732: 33,19 + 1733: 32,17 + 1734: 31,16 + 1735: 32,15 + 1736: 33,14 + 1737: 31,12 + 1738: 31,11 + 1739: 33,9 + 1740: 32,8 + 1741: 31,7 + 1742: 33,4 + 1743: 30,3 + 1744: 30,2 + 1745: 30,2 + 1746: 28,1 + 1747: 28,0 + 1748: 29,0 + 1749: 27,-1 + 1750: 27,-2 + 1751: 28,-4 + 1752: 26,-4 + 1753: 25,-4 + 1754: 24,-5 + 1755: 22,-5 + 1756: 21,-4 + 1757: 20,-3 + 1758: 18,-4 + 1759: 12,-4 + 1760: 9,-4 + 1761: 7,-4 + 1762: 3,-4 + 1763: 0,-4 + 1764: 1,-4 + 1765: -5,-4 + 1766: -6,-5 + 1767: -7,-5 + 1768: -6,-4 + 1769: -10,-4 + 1770: -12,-5 + 1771: -14,-5 + 1772: -14,-4 + 1773: -16,-4 + 1774: -17,-5 + 1775: -18,-5 + 1776: -23,-5 + 1777: -24,-5 + 1778: -32,-4 + 1779: -38,-4 + 1780: -39,-4 + 1781: -40,-5 + 1782: -42,-5 + 1783: -42,-6 + 1784: -42,-7 + 1785: -42,-10 + 1786: -42,-12 + 1787: -42,-14 + 1788: -40,-16 + 1789: -42,-17 + 1790: -38,-7 + 1791: -38,-8 + 1792: -37,-7 + 1793: -33,-7 + 1794: -26,-4 + 1795: -24,-1 + 1796: -23,0 + 1797: -23,2 + 1798: -24,3 + 1799: -23,5 + 1800: -23,6 + 1801: -24,6 + 1802: -23,7 + 1803: -23,10 + 1804: -30,5 + 1805: -31,1 + 1806: -31,4 + 1807: -26,1 + 1808: -26,2 + 1809: -22,8 + 1810: -24,9 + 1811: -22,10 + 1812: -24,8 + 1813: -23,9 + 1814: -22,13 + 1815: -24,15 + 1816: -23,16 + 1817: -22,17 + 1818: -25,18 + 1819: -23,18 + 1820: -23,19 + 1821: -25,22 + 1822: -23,23 + 1823: -23,24 + 1824: -24,25 + 1825: -22,26 + 1826: -23,27 + 1827: -24,28 + 1828: -22,30 + 1829: -23,30 + 1830: -24,31 + 1831: -26,29 + 1832: -27,30 + 1833: -29,30 + 1834: -27,29 + 1835: -31,29 + 1836: -32,30 + 1837: -34,29 + 1838: -36,29 + 1839: -37,30 + 1840: -39,29 + 1841: -40,29 + 1842: -42,30 + 1843: -43,30 + 1844: -45,29 + 1845: -46,30 + 1846: -47,30 + 1847: -46,29 + 1848: -51,30 + 1849: -52,31 + 1850: -53,29 + 1851: -54,30 + 1852: -55,31 + 1853: -57,29 + 1854: -58,30 + 1855: -57,32 + 1856: -58,34 + 1857: -56,36 + 1858: -57,39 + 1859: -56,40 + 1860: -57,45 + 1861: -57,46 + 1862: -59,48 + 1863: -57,49 + 1864: -59,50 + 1865: -58,49 + 1866: -59,47 + 1867: -58,45 + 1868: -62,49 + 1869: -64,49 + 1870: -64,49 + 1871: -64,48 + 1872: -62,48 + 1873: -61,54 + 1874: -59,54 + 1875: -59,54 + 1876: -59,53 + 1877: -62,45 + 1878: -63,43 + 1879: -63,40 + 1880: -63,40 + 1881: -62,36 + 1882: -61,35 + 1883: -56,35 + 1884: -45,29 + 1885: -40,30 + 1886: -43,26 + 1887: -41,26 + 1888: -40,26 + 1889: -38,26 + 1890: -37,26 + 1891: -40,27 + 1892: -20,34 + 1893: -20,35 + 1894: -21,41 + 1895: -20,43 + 1896: -20,44 + 1897: -21,46 + 1898: -20,47 + 1899: -20,49 + 1900: -21,50 + 1901: -21,51 + 1902: -20,53 + 1903: -20,54 + 1904: -24,53 + 1905: -26,53 + 1906: -27,53 + 1907: -28,54 + 1908: -29,54 + 1909: -28,56 + 1910: -28,57 + 1911: -28,58 + 1912: -27,59 + 1913: -25,59 + 1914: -24,58 + 1915: -24,56 + 1916: -21,55 + 1917: -20,52 + 1918: -19,51 + 1919: -20,42 + 1920: -20,40 + 1921: -16,44 + 1922: -14,43 + 1923: -13,44 + 1924: -11,45 + 1925: -10,44 + 1926: -12,48 + 1927: -13,47 + 1928: -14,48 + 1929: -11,47 + 1930: -10,48 + 1931: -10,52 + 1932: -11,53 + 1933: -14,53 + 1934: -15,53 + 1935: -17,53 + 1936: -17,51 + 1937: -10,39 + 1938: -11,38 + 1939: -14,38 + 1940: -14,37 + 1941: -15,36 + 1942: -16,38 + 1943: -16,40 + 1944: -14,41 + 1945: -11,39 + 1946: -17,39 + 1947: -8,44 + 1948: -8,45 + 1949: -7,42 + 1950: -6,41 + 1951: -5,46 + 1952: -6,49 + 1953: -7,49 + 1954: 2,44 + 1955: -6,29 + 1956: -4,31 + 1957: -2,31 + 1958: 0,30 + 1959: 2,30 + 1960: 4,31 + 1961: 5,31 + 1962: 7,30 + 1963: 9,30 + 1964: 10,31 + 1965: 11,31 + 1966: 10,30 + 1967: 14,31 + 1968: 15,31 + 1969: 17,30 + 1970: 18,31 + 1971: 22,23 + 1972: 23,23 + 1973: 23,22 + 1974: 22,22 + 1975: 21,23 + 1976: 21,23 + 1977: 20,24 + 1978: 20,23 + 1979: 21,21 + 1980: 20,20 + 1981: 20,19 + 1982: 22,19 + 1983: 24,19 + 1984: 27,19 + 1985: 29,19 + 1986: 29,19 + 1987: 24,19 + 1988: 22,21 1989: 20,23 - 1990: 21,21 - 1991: 20,20 - 1992: 20,19 - 1993: 22,19 - 1994: 24,19 - 1995: 27,19 - 1996: 29,19 - 1997: 29,19 - 1998: 24,19 - 1999: 22,21 - 2000: 20,23 - 2001: 20,26 - 2002: 20,29 - 2003: 20,31 - 2004: 23,31 - 2005: 27,31 - 2006: 29,31 - 2007: 29,30 - 2008: 27,30 - 2009: 24,30 - 2010: 21,31 - 2011: 20,33 - 2012: 21,35 - 2013: 22,35 - 2014: 26,37 - 2015: 25,35 - 2016: 25,36 - 2017: 26,34 - 2018: 27,34 - 2019: 28,36 - 2020: 28,37 - 2021: 27,34 - 2022: 28,35 - 2023: 26,34 - 2024: 25,33 - 2025: 24,34 - 2026: 24,36 - 2027: 25,38 - 2028: 27,38 - 2029: 29,37 - 2030: 29,35 - 2031: 20,38 - 2032: 21,40 - 2033: 22,41 - 2034: 23,40 - 2035: 21,41 - 2036: 21,43 - 2037: 21,43 - 2038: 20,45 - 2039: 17,45 - 2040: 20,46 - 2041: 14,45 - 2042: 12,45 - 2043: 11,41 - 2044: 10,41 - 2045: 8,41 - 2046: 6,41 - 2047: 5,39 - 2048: 5,38 - 2049: 4,43 - 2050: 5,45 - 2051: 5,47 - 2052: 6,47 - 2053: 9,47 - 2054: 25,47 - 2055: 25,46 - 2056: 26,45 - 2057: 26,45 - 2058: 22,8 - 2059: 21,8 - 2060: 22,9 - 2061: 21,10 - 2062: 20,10 - 2063: 21,13 - 2064: 20,14 - 2065: 21,15 - 2066: 19,14 - 2067: 18,16 - 2068: 18,16 - 2069: 17,15 - 2070: -4,11 - 2071: -4,10 - 2072: -5,10 - 2073: -6,10 - 2074: -7,10 - 2075: -7,8 - 2076: -7,7 - 2077: -9,8 - 2078: -6,12 - 2079: -6,16 - 2080: 29,7 - 2081: 29,8 - 2082: 29,9 - 2083: 28,10 - 2084: 26,9 - 2085: 25,8 - 2086: 25,7 - 2087: 29,8 - 2088: 27,8 - 2089: 47,29 - 2090: 45,29 - 2091: 43,29 - 2092: 42,29 - 2093: 42,28 - 2094: 44,28 - 2095: 46,27 - 2096: 46,27 - 2097: 44,27 - 2098: 43,27 - 2099: 45,26 - 2100: 44,25 - 2101: 43,25 - 2102: 44,24 - 2103: 41,23 - 2104: 43,22 - 2105: 43,22 - 2106: 42,21 - 2107: 43,20 - 2108: 42,19 - 2109: 43,19 - 2110: 41,18 - 2111: 43,17 - 2112: 42,17 - 2113: 43,20 - 2114: 42,21 - 2115: 43,21 - 2116: 45,20 - 2117: 43,20 - 2118: 45,21 - 2119: 46,21 - 2120: 45,22 - 2121: 44,22 - 2122: 44,21 - 2123: 45,21 - 2124: 44,23 - 2125: 44,23 - 2126: 47,23 - 2127: 48,23 - 2128: 48,23 - 2129: 48,23 - 2130: 47,23 - 2131: 48,22 - 2132: 48,21 - 2133: 47,21 - 2134: 47,21 - 2135: 47,21 - 2136: 48,21 - 2137: 45,22 - 2138: 45,23 - 2139: 44,23 - 2140: 45,24 - 2141: 43,18 - 2142: 41,17 - 2143: 42,16 - 2144: 43,15 - 2145: 43,15 - 2146: 42,14 - 2147: 41,13 - 2148: 42,12 - 2149: 43,14 - 2150: 43,13 - 2151: 39,14 - 2152: 39,12 - 2153: 37,12 - 2154: 36,13 - 2155: 35,14 - 2156: 34,13 - 2157: 38,33 - 2158: 39,33 - 2159: 41,33 - 2160: 42,33 - 2161: 44,33 - 2162: 45,36 - 2163: 46,36 - 2164: 46,35 - 2165: 46,33 - 2166: 44,32 - 2167: 43,33 - 2168: 40,33 - 2169: 43,34 - 2170: 45,37 - 2171: 46,36 - 2172: 47,33 - 2173: 47,33 - 2174: 39,33 - 2175: 43,33 - 2176: 37,33 - 2177: 35,33 - 2178: 34,34 - 2179: 32,37 - 2180: 32,42 - 2181: 33,44 - 2182: 32,47 - 2183: 33,48 - 2184: 33,50 - 2185: 13,55 - 2186: 14,55 - 2187: 15,55 - 2188: 15,54 - 2189: 15,54 - 2190: 14,54 - 2191: 13,54 - 2192: 14,53 - 2193: 15,53 - 2194: 14,53 - 2195: 13,53 - 2196: 16,53 - 2197: 16,53 - 2198: 16,55 - 2199: 16,56 - 2200: 14,56 - 2201: 14,56 - 2202: 16,57 - 2203: 14,57 - 2204: 13,57 - 2205: 12,57 - 2206: 11,55 - 2207: 12,54 - 2208: 11,53 - 2209: 19,60 - 2210: 19,57 - 2211: 18,60 - 2212: 18,64 - 2213: 20,65 - 2214: 22,66 - 2215: 21,66 - 2216: 22,64 - 2217: 21,64 - 2218: 23,65 - 2219: 24,66 - 2220: 23,67 - 2221: 23,69 - 2222: 24,71 - 2223: 26,71 - 2224: 26,69 - 2225: 27,68 - 2226: 29,69 - 2227: 11,72 - 2228: 20,74 - 2229: 20,73 - 2230: 23,47 - 2231: 23,47 - 2232: 23,47 - 2233: 23,46 - 2234: 23,46 - 2235: 22,47 - 2236: 35,57 - 2237: 36,56 - 2238: 36,56 - 2239: 37,56 - 2240: 36,56 - 2241: 36,55 - 2242: 36,54 - 2243: 36,53 - 2244: 38,53 - 2245: 40,53 - 2246: 40,55 - 2247: 40,56 - 2248: 41,57 - 2249: 41,56 - 2250: 39,56 - 2251: 40,55 - 2252: 41,53 - 2253: 41,53 - 2254: 43,54 - 2255: 43,55 - 2256: 43,57 - 2257: 43,55 - 2258: 43,53 - 2259: 43,52 - 2260: 43,50 - 2261: 45,50 - 2262: 46,50 - 2263: 47,50 - 2264: 47,49 - 2265: 47,47 - 2266: 47,46 - 2267: 47,46 - 2268: 46,44 - 2269: 46,44 - 2270: 46,45 - 2271: 46,46 - 2272: 46,47 - 2273: 40,50 - 2274: 40,48 - 2275: 40,46 - 2276: 39,45 - 2277: 37,46 - 2278: 35,46 - 2279: 40,50 - 2280: 40,52 - 2281: 40,51 - 2282: 40,50 - 2283: 40,43 - 2284: 40,43 - 2285: 40,44 - 2286: 39,44 - 2287: 39,44 - 2288: 39,43 - 2289: 39,42 - 2290: 39,40 - 2291: 39,39 - 2292: 40,39 - 2293: 43,39 - 2294: 45,39 - 2295: 46,39 - 2296: 47,39 - 2297: 47,40 - 2298: 46,41 - 2299: 47,42 - 2300: 47,44 - 2301: 47,46 - 2302: 47,48 - 2303: 43,44 - 2304: 44,44 - 2305: 42,43 - 2306: 42,42 - 2307: 43,41 - 2308: 44,41 - 2309: 44,43 - 2310: 43,45 - 2311: 43,47 - 2312: 44,48 - 2313: 44,48 - 2314: 49,33 - 2315: 49,34 - 2316: 50,35 - 2317: 50,36 - 2318: 50,36 - 2319: 35,7 - 2320: 35,8 - 2321: 36,8 - 2322: 37,8 - 2323: 40,8 - 2324: 40,8 - 2325: 40,7 - 2326: 38,7 - 2327: 38,7 - 2328: 41,9 - 2329: 44,9 - 2330: 42,9 - 2331: 46,9 - 2332: 47,9 - 2333: 49,9 - 2334: 49,9 - 2335: 50,9 - 2336: 38,4 - 2337: 35,4 - 2338: 39,2 - 2339: 43,3 - 2340: 45,3 - 2341: 44,0 - 2342: 44,-1 - 2343: 47,-1 - 2344: 44,-1 - 2345: 46,-1 - 2346: 46,-1 - 2347: 45,-1 - 2348: 46,0 - 2349: 45,0 - 2350: 46,3 - 2351: 47,3 - 2352: 45,3 - 2353: 46,4 - 2354: 49,3 - 2355: 51,3 - 2356: 48,2 - 2357: 53,3 - 2358: 55,3 - 2359: 57,2 - 2360: 59,3 - 2361: 61,2 - 2362: 63,4 - 2363: 64,2 - 2364: 65,3 - 2365: 66,3 - 2366: 69,3 - 2367: 69,3 - 2368: 72,4 - 2369: 73,3 - 2370: 75,3 - 2371: 76,3 - 2372: 78,3 - 2373: 79,3 - 2374: 81,3 - 2375: 83,4 - 2376: 84,2 - 2377: 85,3 - 2378: 86,4 - 2379: 83,7 - 2380: 80,7 - 2381: 78,6 - 2382: 76,8 - 2383: 77,9 - 2384: 80,9 - 2385: 83,9 - 2386: 82,12 - 2387: 82,13 - 2388: 83,14 - 2389: 83,14 - 2390: 83,13 - 2391: 75,13 - 2392: 75,15 - 2393: 76,15 - 2394: 76,14 - 2395: 76,9 - 2396: 76,6 - 2397: 77,6 - 2398: 83,6 - 2399: 83,8 - 2400: 84,3 - 2401: 67,2 - 2402: 66,4 - 2403: 61,2 - 2404: 58,4 - 2405: 57,3 - 2406: 56,2 - 2407: 52,4 - 2408: 51,3 - 2409: 53,-13 - 2410: 60,-20 - 2411: 62,-21 - 2412: 61,-22 - 2413: 60,-19 - 2415: 41,-16 - 2416: 38,-16 - 2417: 37,-16 - 2418: 37,-19 - 2419: 37,-20 - 2420: 37,-20 - 2421: 36,-20 - 2422: 37,-20 - 2423: 37,-20 - 2424: 40,-19 - 2425: 40,-19 - 2426: 39,-19 - 2427: 40,-20 - 2428: 43,-19 - 2429: 43,-20 - 2430: 42,-20 - 2431: 45,-19 - 2432: 45,-20 - 2433: 45,-20 - 2434: 46,-20 - 2435: 38,-16 - 2436: 36,-14 - 2437: 35,-13 - 2438: 35,-11 - 2439: 34,-9 - 2440: 35,-7 - 2441: 36,-6 - 2442: 36,-4 - 2443: 36,-3 - 2444: 38,-5 - 2445: 40,-3 - 2446: 39,-3 - 2447: 41,-3 - 2448: 39,2 - 2449: 41,2 - 2450: 31,2 - 2451: 30,3 - 2452: 28,1 - 2453: 28,3 - 2454: 29,0 - 2455: 23,-7 - 2456: 28,-7 - 2457: 7,-16 - 2458: 7,-16 - 2459: 7,-17 - 2460: -9,-2 - 2461: -9,-1 - 2462: -8,-1 - 2463: -7,-1 - 2464: -6,-1 - 2465: -5,-2 - 2466: -5,-6 - 2467: -5,-15 - 2468: -4,-15 - 2469: -6,-19 - 2470: -5,-17 - 2471: -6,-20 - 2472: -4,-22 - 2473: -4,-24 - 2474: -5,-26 - 2475: -8,-26 - 2476: -9,-26 - 2477: -10,-25 - 2478: -11,-27 - 2479: -10,-28 - 2480: -7,-28 - 2481: -13,-25 - 2482: -14,-26 - 2483: -17,-26 - 2484: -19,-25 - 2485: -20,-27 - 2486: -22,-26 - 2487: -25,-26 - 2488: -26,-29 - 2489: -27,-30 - 2490: -26,-31 - 2491: -27,-31 - 2492: -27,-33 - 2493: -25,-34 - 2494: -26,-35 - 2495: -24,-35 - 2496: -23,-35 - 2497: -23,-34 - 2498: -27,-26 - 2499: -28,-26 - 2500: -31,-28 - 2501: -33,-28 - 2502: -37,-28 - 2503: -31,-28 - 2504: -31,-27 - 2505: -37,-28 - 2506: -31,-31 - 2507: -33,-32 - 2508: -34,-33 - 2509: -36,-32 - 2510: -37,-32 - 2511: -39,-33 - 2512: -37,-32 - 2513: -41,-31 + 1990: 20,26 + 1991: 20,29 + 1992: 20,31 + 1993: 23,31 + 1994: 27,31 + 1995: 29,31 + 1996: 29,30 + 1997: 27,30 + 1998: 24,30 + 1999: 21,31 + 2000: 20,33 + 2001: 21,35 + 2002: 22,35 + 2003: 26,37 + 2004: 25,35 + 2005: 25,36 + 2006: 26,34 + 2007: 27,34 + 2008: 28,36 + 2009: 28,37 + 2010: 27,34 + 2011: 28,35 + 2012: 26,34 + 2013: 25,33 + 2014: 24,34 + 2015: 24,36 + 2016: 25,38 + 2017: 27,38 + 2018: 29,37 + 2019: 29,35 + 2020: 20,38 + 2021: 21,40 + 2022: 22,41 + 2023: 23,40 + 2024: 21,41 + 2025: 21,43 + 2026: 21,43 + 2027: 20,45 + 2028: 17,45 + 2029: 20,46 + 2030: 14,45 + 2031: 12,45 + 2032: 11,41 + 2033: 10,41 + 2034: 8,41 + 2035: 6,41 + 2036: 5,39 + 2037: 5,38 + 2038: 4,43 + 2039: 5,45 + 2040: 5,47 + 2041: 6,47 + 2042: 9,47 + 2043: 25,47 + 2044: 25,46 + 2045: 26,45 + 2046: 26,45 + 2047: 22,8 + 2048: 21,8 + 2049: 22,9 + 2050: 21,10 + 2051: 20,10 + 2052: 21,13 + 2053: 20,14 + 2054: 21,15 + 2055: 19,14 + 2056: 18,16 + 2057: 18,16 + 2058: 17,15 + 2059: -4,11 + 2060: -4,10 + 2061: -5,10 + 2062: -6,10 + 2063: -7,10 + 2064: -7,8 + 2065: -7,7 + 2066: -9,8 + 2067: -6,12 + 2068: -6,16 + 2069: 29,7 + 2070: 29,8 + 2071: 29,9 + 2072: 28,10 + 2073: 26,9 + 2074: 25,8 + 2075: 25,7 + 2076: 29,8 + 2077: 27,8 + 2078: 47,29 + 2079: 45,29 + 2080: 43,29 + 2081: 42,29 + 2082: 42,28 + 2083: 44,28 + 2084: 46,27 + 2085: 46,27 + 2086: 44,27 + 2087: 43,27 + 2088: 45,26 + 2089: 44,25 + 2090: 43,25 + 2091: 44,24 + 2092: 41,23 + 2093: 43,22 + 2094: 43,22 + 2095: 42,21 + 2096: 43,20 + 2097: 42,19 + 2098: 43,19 + 2099: 41,18 + 2100: 43,17 + 2101: 42,17 + 2102: 43,20 + 2103: 42,21 + 2104: 43,21 + 2105: 45,20 + 2106: 43,20 + 2107: 45,21 + 2108: 46,21 + 2109: 45,22 + 2110: 44,22 + 2111: 44,21 + 2112: 45,21 + 2113: 44,23 + 2114: 44,23 + 2115: 47,23 + 2116: 48,23 + 2117: 48,23 + 2118: 48,23 + 2119: 47,23 + 2120: 48,22 + 2121: 48,21 + 2122: 47,21 + 2123: 47,21 + 2124: 47,21 + 2125: 48,21 + 2126: 45,22 + 2127: 45,23 + 2128: 44,23 + 2129: 45,24 + 2130: 43,18 + 2131: 41,17 + 2132: 42,16 + 2133: 43,15 + 2134: 43,15 + 2135: 42,14 + 2136: 41,13 + 2137: 42,12 + 2138: 43,14 + 2139: 43,13 + 2140: 39,14 + 2141: 39,12 + 2142: 37,12 + 2143: 36,13 + 2144: 35,14 + 2145: 34,13 + 2146: 38,33 + 2147: 39,33 + 2148: 41,33 + 2149: 42,33 + 2150: 44,33 + 2151: 45,36 + 2152: 46,36 + 2153: 46,35 + 2154: 46,33 + 2155: 44,32 + 2156: 43,33 + 2157: 40,33 + 2158: 43,34 + 2159: 45,37 + 2160: 46,36 + 2161: 47,33 + 2162: 47,33 + 2163: 39,33 + 2164: 43,33 + 2165: 37,33 + 2166: 35,33 + 2167: 34,34 + 2168: 32,37 + 2169: 32,42 + 2170: 33,44 + 2171: 32,47 + 2172: 33,48 + 2173: 33,50 + 2174: 13,55 + 2175: 14,55 + 2176: 15,55 + 2177: 15,54 + 2178: 15,54 + 2179: 14,54 + 2180: 13,54 + 2181: 14,53 + 2182: 15,53 + 2183: 14,53 + 2184: 13,53 + 2185: 16,53 + 2186: 16,53 + 2187: 16,55 + 2188: 16,56 + 2189: 14,56 + 2190: 14,56 + 2191: 16,57 + 2192: 14,57 + 2193: 13,57 + 2194: 12,57 + 2195: 11,55 + 2196: 12,54 + 2197: 11,53 + 2198: 19,60 + 2199: 19,57 + 2200: 18,60 + 2201: 18,64 + 2202: 20,65 + 2203: 22,66 + 2204: 21,66 + 2205: 22,64 + 2206: 21,64 + 2207: 23,65 + 2208: 24,66 + 2209: 23,67 + 2210: 23,69 + 2211: 24,71 + 2212: 26,71 + 2213: 26,69 + 2214: 27,68 + 2215: 29,69 + 2216: 11,72 + 2217: 20,74 + 2218: 20,73 + 2219: 23,47 + 2220: 23,47 + 2221: 23,47 + 2222: 23,46 + 2223: 23,46 + 2224: 22,47 + 2225: 35,57 + 2226: 36,56 + 2227: 36,56 + 2228: 37,56 + 2229: 36,56 + 2230: 36,55 + 2231: 36,54 + 2232: 36,53 + 2233: 38,53 + 2234: 40,53 + 2235: 40,55 + 2236: 40,56 + 2237: 41,57 + 2238: 41,56 + 2239: 39,56 + 2240: 40,55 + 2241: 41,53 + 2242: 41,53 + 2243: 43,54 + 2244: 43,55 + 2245: 43,57 + 2246: 43,55 + 2247: 43,53 + 2248: 43,52 + 2249: 43,50 + 2250: 45,50 + 2251: 46,50 + 2252: 47,50 + 2253: 47,49 + 2254: 47,47 + 2255: 47,46 + 2256: 47,46 + 2257: 46,44 + 2258: 46,44 + 2259: 46,45 + 2260: 46,46 + 2261: 46,47 + 2262: 40,50 + 2263: 40,48 + 2264: 40,46 + 2265: 39,45 + 2266: 37,46 + 2267: 35,46 + 2268: 40,50 + 2269: 40,52 + 2270: 40,51 + 2271: 40,50 + 2272: 40,43 + 2273: 40,43 + 2274: 40,44 + 2275: 39,44 + 2276: 39,44 + 2277: 39,43 + 2278: 39,42 + 2279: 39,40 + 2280: 39,39 + 2281: 40,39 + 2282: 43,39 + 2283: 45,39 + 2284: 46,39 + 2285: 47,39 + 2286: 47,40 + 2287: 46,41 + 2288: 47,42 + 2289: 47,44 + 2290: 47,46 + 2291: 47,48 + 2292: 43,44 + 2293: 44,44 + 2294: 42,43 + 2295: 42,42 + 2296: 43,41 + 2297: 44,41 + 2298: 44,43 + 2299: 43,45 + 2300: 43,47 + 2301: 44,48 + 2302: 44,48 + 2303: 49,33 + 2304: 49,34 + 2305: 50,35 + 2306: 50,36 + 2307: 50,36 + 2308: 35,7 + 2309: 35,8 + 2310: 36,8 + 2311: 37,8 + 2312: 40,8 + 2313: 40,8 + 2314: 40,7 + 2315: 38,7 + 2316: 38,7 + 2317: 41,9 + 2318: 44,9 + 2319: 42,9 + 2320: 46,9 + 2321: 47,9 + 2322: 49,9 + 2323: 49,9 + 2324: 50,9 + 2325: 38,4 + 2326: 35,4 + 2327: 39,2 + 2328: 43,3 + 2329: 45,3 + 2330: 44,0 + 2331: 44,-1 + 2332: 47,-1 + 2333: 44,-1 + 2334: 46,-1 + 2335: 46,-1 + 2336: 45,-1 + 2337: 46,0 + 2338: 45,0 + 2339: 46,3 + 2340: 47,3 + 2341: 45,3 + 2342: 46,4 + 2343: 49,3 + 2344: 51,3 + 2345: 48,2 + 2346: 53,3 + 2347: 55,3 + 2348: 57,2 + 2349: 59,3 + 2350: 61,2 + 2351: 63,4 + 2352: 64,2 + 2353: 65,3 + 2354: 66,3 + 2355: 69,3 + 2356: 69,3 + 2357: 72,4 + 2358: 73,3 + 2359: 75,3 + 2360: 76,3 + 2361: 78,3 + 2362: 79,3 + 2363: 81,3 + 2364: 83,4 + 2365: 84,2 + 2366: 85,3 + 2367: 86,4 + 2368: 83,7 + 2369: 80,7 + 2370: 78,6 + 2371: 76,8 + 2372: 77,9 + 2373: 80,9 + 2374: 83,9 + 2375: 82,12 + 2376: 82,13 + 2377: 83,14 + 2378: 83,14 + 2379: 83,13 + 2380: 75,13 + 2381: 75,15 + 2382: 76,15 + 2383: 76,14 + 2384: 76,9 + 2385: 76,6 + 2386: 77,6 + 2387: 83,6 + 2388: 83,8 + 2389: 84,3 + 2390: 67,2 + 2391: 66,4 + 2392: 61,2 + 2393: 58,4 + 2394: 57,3 + 2395: 56,2 + 2396: 52,4 + 2397: 51,3 + 2398: 53,-13 + 2399: 60,-20 + 2400: 62,-21 + 2401: 61,-22 + 2402: 60,-19 + 2403: 41,-16 + 2404: 38,-16 + 2405: 37,-16 + 2406: 37,-19 + 2407: 37,-20 + 2408: 37,-20 + 2409: 36,-20 + 2410: 37,-20 + 2411: 37,-20 + 2412: 40,-19 + 2413: 40,-19 + 2414: 39,-19 + 2415: 40,-20 + 2416: 43,-19 + 2417: 43,-20 + 2418: 42,-20 + 2419: 45,-19 + 2420: 45,-20 + 2421: 45,-20 + 2422: 46,-20 + 2423: 38,-16 + 2424: 36,-14 + 2425: 35,-13 + 2426: 35,-11 + 2427: 34,-9 + 2428: 35,-7 + 2429: 36,-6 + 2430: 36,-4 + 2431: 36,-3 + 2432: 38,-5 + 2433: 40,-3 + 2434: 39,-3 + 2435: 41,-3 + 2436: 39,2 + 2437: 41,2 + 2438: 31,2 + 2439: 30,3 + 2440: 28,1 + 2441: 28,3 + 2442: 29,0 + 2443: 23,-7 + 2444: 28,-7 + 2445: 7,-16 + 2446: 7,-16 + 2447: 7,-17 + 2448: -9,-2 + 2449: -9,-1 + 2450: -8,-1 + 2451: -7,-1 + 2452: -6,-1 + 2453: -5,-2 + 2454: -5,-6 + 2455: -5,-15 + 2456: -4,-15 + 2457: -6,-19 + 2458: -5,-17 + 2459: -6,-20 + 2460: -4,-22 + 2461: -4,-24 + 2462: -5,-26 + 2463: -8,-26 + 2464: -9,-26 + 2465: -10,-25 + 2466: -11,-27 + 2467: -10,-28 + 2468: -7,-28 + 2469: -13,-25 + 2470: -14,-26 + 2471: -17,-26 + 2472: -19,-25 + 2473: -20,-27 + 2474: -22,-26 + 2475: -25,-26 + 2476: -26,-29 + 2477: -27,-30 + 2478: -26,-31 + 2479: -27,-31 + 2480: -27,-33 + 2481: -25,-34 + 2482: -26,-35 + 2483: -24,-35 + 2484: -23,-35 + 2485: -23,-34 + 2486: -27,-26 + 2487: -28,-26 + 2488: -31,-28 + 2489: -33,-28 + 2490: -37,-28 + 2491: -31,-28 + 2492: -31,-27 + 2493: -37,-28 + 2494: -31,-31 + 2495: -33,-32 + 2496: -34,-33 + 2497: -36,-32 + 2498: -37,-32 + 2499: -39,-33 + 2500: -37,-32 + 2501: -41,-31 + 2502: -42,-32 + 2503: -43,-32 + 2504: -45,-31 + 2505: -46,-32 + 2506: -46,-32 + 2507: -48,-31 + 2508: -49,-32 + 2509: -49,-32 + 2510: -50,-31 + 2511: -51,-32 + 2512: -52,-32 + 2513: -44,-33 2514: -42,-32 - 2515: -43,-32 - 2516: -45,-31 - 2517: -46,-32 - 2518: -46,-32 - 2519: -48,-31 - 2520: -49,-32 - 2521: -49,-32 - 2522: -50,-31 - 2523: -51,-32 - 2524: -52,-32 - 2525: -44,-33 - 2526: -42,-32 - 2527: -41,-31 - 2528: -39,-32 - 2529: -38,-33 - 2530: -37,-33 - 2531: -32,-33 - 2532: -39,-38 - 2533: -39,-39 - 2534: -41,-39 - 2535: -31,-37 - 2536: -31,-38 - 2537: -31,-39 - 2538: -27,-41 - 2539: -27,-39 - 2540: -26,-39 - 2541: -23,-40 - 2542: -24,-41 - 2543: -26,-39 - 2544: -23,-39 - 2545: -24,-39 - 2546: -25,-39 - 2547: -25,-38 - 2548: -35,-41 - 2549: -39,-39 - 2550: -39,-37 - 2551: -32,-36 - 2552: -32,-36 - 2553: -39,-36 - 2554: -49,-28 - 2555: -50,-27 - 2556: -52,-27 - 2557: -52,-28 - 2558: -51,-29 - 2559: -50,-29 - 2560: -50,-28 - 2561: -55,-32 - 2562: -56,-31 - 2563: -57,-31 - 2564: -57,-29 - 2565: -56,-29 - 2566: -55,-29 - 2567: -56,-25 - 2568: -55,-28 - 2569: -57,-27 - 2570: -57,-25 - 2571: -55,-26 - 2572: -55,-27 - 2573: -54,-22 - 2574: -55,-23 - 2575: -55,-23 - 2576: -56,-22 - 2577: -57,-23 - 2578: -59,-23 - 2579: -59,-23 - 2580: -60,-24 - 2581: -60,-25 - 2582: -61,-26 - 2583: -66,-26 - 2584: -64,-26 - 2585: -63,-26 - 2586: -61,-27 - 2587: -61,-29 - 2588: -60,-29 - 2589: -60,-31 - 2590: -60,-33 - 2591: -61,-33 - 2592: -61,-34 - 2593: -61,-36 - 2594: -61,-38 - 2595: -63,-36 - 2596: -64,-36 - 2597: -65,-36 - 2598: -65,-35 - 2599: -64,-34 - 2600: -63,-34 - 2601: -65,-34 - 2602: -65,-34 - 2603: -64,-35 - 2604: -64,-37 - 2605: -64,-37 - 2606: -64,-38 - 2607: -63,-37 - 2608: -63,-37 - 2609: -63,-38 - 2610: -64,-38 - 2611: -64,-37 - 2612: -65,-37 - 2613: -65,-36 - 2614: -64,-36 - 2615: -63,-36 + 2515: -41,-31 + 2516: -39,-32 + 2517: -38,-33 + 2518: -37,-33 + 2519: -32,-33 + 2520: -39,-38 + 2521: -39,-39 + 2522: -41,-39 + 2523: -31,-37 + 2524: -31,-38 + 2525: -31,-39 + 2526: -27,-41 + 2527: -27,-39 + 2528: -26,-39 + 2529: -23,-40 + 2530: -24,-41 + 2531: -26,-39 + 2532: -23,-39 + 2533: -24,-39 + 2534: -25,-39 + 2535: -25,-38 + 2536: -35,-41 + 2537: -39,-39 + 2538: -39,-37 + 2539: -32,-36 + 2540: -32,-36 + 2541: -39,-36 + 2542: -49,-28 + 2543: -50,-27 + 2544: -52,-27 + 2545: -52,-28 + 2546: -51,-29 + 2547: -50,-29 + 2548: -50,-28 + 2549: -55,-32 + 2550: -56,-31 + 2551: -57,-31 + 2552: -57,-29 + 2553: -56,-29 + 2554: -55,-29 + 2555: -56,-25 + 2556: -55,-28 + 2557: -57,-27 + 2558: -57,-25 + 2559: -55,-26 + 2560: -55,-27 + 2561: -54,-22 + 2562: -55,-23 + 2563: -55,-23 + 2564: -56,-22 + 2565: -57,-23 + 2566: -59,-23 + 2567: -59,-23 + 2568: -60,-24 + 2569: -60,-25 + 2570: -61,-26 + 2571: -66,-26 + 2572: -64,-26 + 2573: -63,-26 + 2574: -61,-27 + 2575: -61,-29 + 2576: -60,-29 + 2577: -60,-31 + 2578: -60,-33 + 2579: -61,-33 + 2580: -61,-34 + 2581: -61,-36 + 2582: -61,-38 + 2583: -63,-36 + 2584: -64,-36 + 2585: -65,-36 + 2586: -65,-35 + 2587: -64,-34 + 2588: -63,-34 + 2589: -65,-34 + 2590: -65,-34 + 2591: -64,-35 + 2592: -64,-37 + 2593: -64,-37 + 2594: -64,-38 + 2595: -63,-37 + 2596: -63,-37 + 2597: -63,-38 + 2598: -64,-38 + 2599: -64,-37 + 2600: -65,-37 + 2601: -65,-36 + 2602: -64,-36 + 2603: -63,-36 + 2604: -64,-35 + 2605: -63,-34 + 2606: -64,-34 + 2607: -63,-34 + 2608: -64,-34 + 2609: -65,-36 + 2610: -65,-37 + 2611: -63,-37 + 2612: -63,-38 + 2613: -65,-35 + 2614: -63,-35 + 2615: -64,-35 2616: -64,-35 - 2617: -63,-34 - 2618: -64,-34 - 2619: -63,-34 - 2620: -64,-34 - 2621: -65,-36 - 2622: -65,-37 - 2623: -63,-37 - 2624: -63,-38 - 2625: -65,-35 - 2626: -63,-35 - 2627: -64,-35 - 2628: -64,-35 - 2629: -63,-35 - 2630: -65,-35 - 2631: -61,-41 - 2632: -62,-41 - 2633: -63,-41 - 2634: -63,-43 - 2635: -63,-44 - 2636: -64,-45 - 2637: -66,-44 - 2638: -66,-44 - 2639: -66,-44 - 2640: -66,-43 - 2641: -59,-41 - 2642: -58,-41 - 2643: -58,-40 - 2644: -58,-39 - 2645: -57,-40 - 2646: -57,-43 - 2647: -59,-43 - 2648: -59,-43 - 2649: -60,-44 - 2650: -61,-44 - 2651: -36,-8 - 2652: -32,-12 - 2653: -37,-15 - 2654: -37,-16 - 2655: -38,-16 - 2656: -38,-16 - 2657: -36,-14 - 2658: -36,-16 - 2659: -37,-14 - 2660: -36,-15 - 2661: -32,-19 - 2662: -36,-19 - 2663: -37,-19 - 2664: -37,-21 - 2665: -35,-21 - 2666: -32,-22 - 2667: -33,-22 - 2668: -35,-23 - 2669: -36,-24 - 2670: -21,-8 - 2671: -20,-9 - 2672: -20,-10 - 2673: -24,-11 - 2674: -24,-13 - 2675: -21,-13 - 2676: -22,-16 - 2677: -24,-16 - 2678: -24,-17 - 2679: -23,-18 - 2680: -22,-18 - 2681: -24,-19 - 2682: -24,-20 - 2683: -23,-21 - 2684: -22,-21 - 2685: -26,-20 - 2686: -25,-18 - 2687: -25,-16 - 2688: -25,-15 - 2689: -21,-13 - 2690: -21,-15 - 2691: -21,-17 - 2692: -21,-18 - 2693: -22,-8 - 2694: -25,-10 - 2695: -25,-12 - 2696: -24,-12 - 2697: -24,-8 - 2698: -21,-10 - 2699: -22,-10 - 2700: -22,-13 - 2701: -8,-8 - 2702: -8,-10 - 2703: -8,-11 - 2704: -8,-13 - 2705: -8,-19 + 2617: -63,-35 + 2618: -65,-35 + 2619: -61,-41 + 2620: -62,-41 + 2621: -63,-41 + 2622: -63,-43 + 2623: -63,-44 + 2624: -64,-45 + 2625: -66,-44 + 2626: -66,-44 + 2627: -66,-44 + 2628: -66,-43 + 2629: -59,-41 + 2630: -58,-41 + 2631: -58,-40 + 2632: -58,-39 + 2633: -57,-40 + 2634: -57,-43 + 2635: -59,-43 + 2636: -59,-43 + 2637: -60,-44 + 2638: -61,-44 + 2639: -36,-8 + 2640: -32,-12 + 2641: -37,-15 + 2642: -37,-16 + 2643: -38,-16 + 2644: -38,-16 + 2645: -36,-14 + 2646: -36,-16 + 2647: -37,-14 + 2648: -36,-15 + 2649: -32,-19 + 2650: -36,-19 + 2651: -37,-19 + 2652: -37,-21 + 2653: -35,-21 + 2654: -32,-22 + 2655: -33,-22 + 2656: -35,-23 + 2657: -36,-24 + 2658: -21,-8 + 2659: -20,-9 + 2660: -20,-10 + 2661: -24,-11 + 2662: -24,-13 + 2663: -21,-13 + 2664: -22,-16 + 2665: -24,-16 + 2666: -24,-17 + 2667: -23,-18 + 2668: -22,-18 + 2669: -24,-19 + 2670: -24,-20 + 2671: -23,-21 + 2672: -22,-21 + 2673: -26,-20 + 2674: -25,-18 + 2675: -25,-16 + 2676: -25,-15 + 2677: -21,-13 + 2678: -21,-15 + 2679: -21,-17 + 2680: -21,-18 + 2681: -22,-8 + 2682: -25,-10 + 2683: -25,-12 + 2684: -24,-12 + 2685: -24,-8 + 2686: -21,-10 + 2687: -22,-10 + 2688: -22,-13 + 2689: -8,-8 + 2690: -8,-10 + 2691: -8,-11 + 2692: -8,-13 + 2693: -8,-19 + 2694: -9,-17 + 2695: -11,-18 + 2696: -11,-18 + 2697: -11,-17 + 2698: -10,-16 + 2699: -8,-16 + 2700: -8,-17 + 2701: -10,-17 + 2702: -9,-18 + 2703: -8,-19 + 2704: -9,-20 + 2705: -8,-18 2706: -9,-17 - 2707: -11,-18 - 2708: -11,-18 - 2709: -11,-17 - 2710: -10,-16 - 2711: -8,-16 - 2712: -8,-17 - 2713: -10,-17 - 2714: -9,-18 - 2715: -8,-19 - 2716: -9,-20 - 2717: -8,-18 - 2718: -9,-17 - 2719: -10,-17 - 2720: -10,-18 - 2721: -9,-17 - 2722: -8,-18 - 2723: -9,-19 - 2724: -9,-19 - 2725: -4,-9 - 2726: -5,-11 - 2727: -4,-10 - 2728: -5,-12 - 2729: -5,-14 - 2730: -7,-25 - 2731: -7,-26 - 2732: -6,-28 - 2733: 18,-35 - 2734: -2,-34 - 2735: 12,-32 - 2736: 11,-32 - 2737: 11,-33 - 2738: 12,-33 - 2739: 13,-32 - 2740: 16,-32 - 2741: 17,-32 - 2742: 16,-32 - 2743: 17,-32 - 2744: 16,-32 - 2745: 17,-32 - 2746: 6,-32 - 2747: 7,-33 - 2748: 8,-32 - 2749: -3,-39 - 2750: -3,-39 - 2751: -2,-40 - 2752: -1,-39 - 2753: -1,-38 - 2754: -2,-33 - 2755: -3,-33 - 2756: -3,-32 - 2757: -2,-32 - 2758: -2,-33 - 2759: -3,-33 - 2760: -3,-32 - 2761: -2,-32 - 2762: 7,-45 - 2763: 7,-46 - 2764: 8,-46 - 2765: 9,-46 - 2766: 9,-45 - 2767: 8,-45 - 2768: 8,-46 - 2769: 9,-45 - 2770: 8,-46 - 2771: 13,-43 - 2772: 12,-43 - 2773: 13,-43 - 2774: 12,-43 - 2775: 11,-45 - 2776: 11,-43 - 2777: 11,-46 - 2778: 13,-45 - 2779: 13,-46 - 2780: 13,-45 - 2781: 13,-46 - 2782: 13,-48 - 2783: 14,-49 - 2784: 14,-50 - 2785: 15,-51 - 2786: 16,-50 - 2787: 17,-49 - 2788: 17,-49 - 2789: 16,-48 - 2790: 14,-48 - 2791: 16,-51 - 2792: 16,-52 - 2793: 20,-58 - 2794: 21,-58 - 2795: 20,-57 - 2796: 19,-56 - 2797: 20,-56 - 2798: 20,-54 - 2799: 19,-54 - 2800: 20,-52 - 2801: 19,-51 - 2802: 20,-50 - 2803: 21,-49 - 2804: 19,-48 - 2805: 21,-46 - 2806: 21,-45 - 2807: 19,-44 - 2808: 21,-46 - 2809: 20,-42 - 2810: 19,-41 - 2811: 21,-40 - 2812: 19,-39 - 2813: 21,-38 - 2814: 20,-37 - 2815: 19,-36 - 2816: 21,-35 - 2817: 19,-34 - 2818: 20,-41 - 2819: 20,-38 - 2820: 20,-38 - 2821: 23,-28 - 2822: 21,-29 - 2823: 20,-29 - 2824: 19,-28 - 2825: 25,-28 - 2826: 28,-28 - 2827: 30,-26 - 2828: 31,-26 - 2829: 18,-25 - 2830: 20,-26 - 2831: 21,-24 - 2832: 20,-21 - 2833: 19,-20 - 2834: 21,-21 - 2835: 18,-22 - 2836: 19,-23 - 2837: 20,-24 - 2838: 17,-24 - 2839: 17,-26 - 2840: 12,-24 - 2841: 13,-26 - 2842: 14,-24 - 2843: 10,-24 - 2844: 9,-25 - 2845: 7,-25 - 2846: 8,-26 - 2847: 6,-24 - 2848: 5,-27 - 2849: 4,-25 - 2850: 2,-26 - 2851: 2,-27 - 2852: -2,-24 - 2853: -3,-26 - 2854: -4,-26 - 2855: -5,-24 - 2856: 2,-24 - 2857: 0,-24 - 2858: 0,-26 - 2859: 2,-26 - 2860: 9,-26 - 2861: 11,-26 - 2862: 15,-24 - 2863: 14,-25 - 2864: 21,-26 - 2865: 20,-21 - 2866: 19,-20 - 2867: 19,-19 - 2868: 19,-18 - 2869: 19,-17 - 2870: 19,-11 - 2871: 20,-11 - 2872: 19,-11 - 2873: 20,-12 - 2874: 19,-11 - 2875: 18,-10 - 2876: 19,-7 - 2877: 19,-6 - 2878: 18,-5 - 2879: 22,-15 - 2880: 23,-15 - 2881: 25,-15 - 2882: 25,-14 - 2883: 25,-13 - 2884: 23,-12 - 2885: 22,-12 - 2886: 25,-12 - 2887: 27,-12 - 2888: 28,-13 - 2889: 30,-13 - 2890: 31,-13 - 2891: 31,-12 - 2892: 31,-11 - 2893: 31,-10 - 2894: 31,-8 - 2895: 31,-8 - 2896: 31,-7 - 2897: 31,-4 - 2898: 33,-4 - 2899: 33,-4 - 2900: 32,-5 - 2901: 30,-16 - 2902: 30,-18 - 2903: 31,-15 - 2904: 31,-16 - 2905: 33,-16 - 2906: 33,-15 - 2907: 32,-16 - 2908: 32,-15 - 2909: 51,9 - 2910: 48,9 - 2911: 45,9 - 2912: 42,9 - 2913: 42,8 - 2914: 38,8 - 2915: 35,24 - 2916: 37,24 - 2917: 35,27 - 2918: 35,28 - 2919: 36,30 - 2920: 31,31 - 2921: 32,32 - 2922: 31,35 - 2923: 32,35 - 2924: 33,36 - 2925: 31,39 - 2926: 31,42 - 2927: 33,41 - 2928: 32,40 - 2929: 32,39 - 2930: 0,53 - 2931: 0,52 - 2932: 0,51 - 2933: 0,49 - 2934: 2,51 - 2935: 0,55 - 2936: 1,55 - 2937: 1,59 - 2938: 2,61 - 2939: 1,61 - 2940: -2,61 - 2941: -2,59 - 2942: -1,56 - 2943: -38,51 - 2944: -42,51 - 2945: -45,48 - 2946: -45,45 - 2947: -41,46 - 2948: -37,46 - 2949: -38,44 - 2950: -42,44 - 2951: -44,43 - 2952: -41,41 - 2953: -36,41 - 2954: -35,41 - 2955: -42,40 - 2956: -46,40 - 2957: -39,40 - 2958: -35,41 - 2959: -39,42 - 2960: -45,43 - 2961: -35,44 - 2962: -34,45 - 2963: -42,45 - 2964: -37,47 - 2965: -34,47 - 2966: -44,48 - 2967: -38,49 - 2968: -35,50 - 2969: -43,50 - 2970: -33,51 - 2971: -36,49 - 2972: -43,48 - 2973: -39,48 - 2974: -33,47 - 2975: -39,46 - 2976: -45,45 - 2977: -39,44 - 2978: -34,43 - 2979: -36,41 - 2980: -41,41 - 2981: -41,41 - 2982: -34,40 - 2983: -36,41 - 2984: -39,41 - 2985: -32,41 - 2986: -32,41 - 2987: -31,44 - 2988: -31,48 - 2989: -31,51 - 2990: -28,45 - 2991: -26,45 - 2992: -28,41 - 2993: -26,41 - 2994: -24,41 - 2995: -23,39 - 3137: 50,-37 - 3138: 53,-37 - 3139: 56,-38 - 3140: 55,-38 - 3141: 54,-39 - 3142: 53,-40 - 3143: 53,-42 - 3144: 51,-45 - 3145: 51,-46 - 3146: 46,-47 - 3147: 46,-46 - 3148: 48,-43 - 3149: 46,-45 - 3150: 45,-46 - 3151: 43,-46 - 3152: 47,-43 - 3153: 52,-46 - 3154: 52,-42 - 3155: 53,-42 - 3156: 50,-42 - 3157: 50,-40 - 3158: 50,-37 - 3159: 52,-36 - 3160: 55,-37 - 3161: 55,-38 - 3162: 53,-40 - 3163: 53,-42 - 3164: 52,-45 - 3165: 50,-45 - 3166: 54,-47 - 3167: 51,-47 - 3168: 46,-47 - 3169: 45,-47 - 3170: 44,-46 - 3171: 44,-44 - 3572: -5,-1 - 4417: 28,54 - 4418: 27,55 - 4419: 27,56 - 4420: 26,56 - 4421: 26,55 - 4422: 26,54 - 4423: 27,54 - 4424: 28,52 - 4425: 27,51 - 4426: 28,53 + 2707: -10,-17 + 2708: -10,-18 + 2709: -9,-17 + 2710: -8,-18 + 2711: -9,-19 + 2712: -9,-19 + 2713: -4,-9 + 2714: -5,-11 + 2715: -4,-10 + 2716: -5,-12 + 2717: -5,-14 + 2718: -7,-25 + 2719: -7,-26 + 2720: -6,-28 + 2721: 18,-35 + 2722: -2,-34 + 2723: 12,-32 + 2724: 11,-32 + 2725: 11,-33 + 2726: 12,-33 + 2727: 13,-32 + 2728: 16,-32 + 2729: 17,-32 + 2730: 16,-32 + 2731: 17,-32 + 2732: 16,-32 + 2733: 17,-32 + 2734: 6,-32 + 2735: 7,-33 + 2736: 8,-32 + 2737: -3,-39 + 2738: -3,-39 + 2739: -2,-40 + 2740: -1,-39 + 2741: -1,-38 + 2742: -2,-33 + 2743: -3,-33 + 2744: -3,-32 + 2745: -2,-32 + 2746: -2,-33 + 2747: -3,-33 + 2748: -3,-32 + 2749: -2,-32 + 2750: 7,-45 + 2751: 7,-46 + 2752: 8,-46 + 2753: 9,-46 + 2754: 9,-45 + 2755: 8,-45 + 2756: 8,-46 + 2757: 9,-45 + 2758: 8,-46 + 2759: 13,-43 + 2760: 12,-43 + 2761: 13,-43 + 2762: 12,-43 + 2763: 11,-45 + 2764: 11,-43 + 2765: 11,-46 + 2766: 13,-45 + 2767: 13,-46 + 2768: 13,-45 + 2769: 13,-46 + 2770: 13,-48 + 2771: 14,-49 + 2772: 14,-50 + 2773: 15,-51 + 2774: 16,-50 + 2775: 17,-49 + 2776: 17,-49 + 2777: 16,-48 + 2778: 14,-48 + 2779: 16,-51 + 2780: 16,-52 + 2781: 20,-58 + 2782: 21,-58 + 2783: 20,-57 + 2784: 19,-56 + 2785: 20,-56 + 2786: 20,-54 + 2787: 19,-54 + 2788: 20,-52 + 2789: 19,-51 + 2790: 20,-50 + 2791: 21,-49 + 2792: 19,-48 + 2793: 21,-46 + 2794: 21,-45 + 2795: 19,-44 + 2796: 21,-46 + 2797: 20,-42 + 2798: 19,-41 + 2799: 21,-40 + 2800: 19,-39 + 2801: 21,-38 + 2802: 20,-37 + 2803: 19,-36 + 2804: 21,-35 + 2805: 19,-34 + 2806: 20,-41 + 2807: 20,-38 + 2808: 20,-38 + 2809: 23,-28 + 2810: 21,-29 + 2811: 20,-29 + 2812: 19,-28 + 2813: 25,-28 + 2814: 28,-28 + 2815: 30,-26 + 2816: 31,-26 + 2817: 18,-25 + 2818: 20,-26 + 2819: 21,-24 + 2820: 20,-21 + 2821: 19,-20 + 2822: 21,-21 + 2823: 18,-22 + 2824: 19,-23 + 2825: 20,-24 + 2826: 17,-24 + 2827: 17,-26 + 2828: 12,-24 + 2829: 13,-26 + 2830: 14,-24 + 2831: 10,-24 + 2832: 9,-25 + 2833: 7,-25 + 2834: 8,-26 + 2835: 6,-24 + 2836: 5,-27 + 2837: 4,-25 + 2838: 2,-26 + 2839: 2,-27 + 2840: -2,-24 + 2841: -3,-26 + 2842: -4,-26 + 2843: -5,-24 + 2844: 2,-24 + 2845: 0,-24 + 2846: 0,-26 + 2847: 2,-26 + 2848: 9,-26 + 2849: 11,-26 + 2850: 15,-24 + 2851: 14,-25 + 2852: 21,-26 + 2853: 20,-21 + 2854: 19,-20 + 2855: 19,-19 + 2856: 19,-18 + 2857: 19,-17 + 2858: 19,-11 + 2859: 20,-11 + 2860: 19,-11 + 2861: 20,-12 + 2862: 19,-11 + 2863: 18,-10 + 2864: 19,-7 + 2865: 19,-6 + 2866: 18,-5 + 2867: 22,-15 + 2868: 23,-15 + 2869: 25,-15 + 2870: 25,-14 + 2871: 25,-13 + 2872: 23,-12 + 2873: 22,-12 + 2874: 25,-12 + 2875: 27,-12 + 2876: 28,-13 + 2877: 30,-13 + 2878: 31,-13 + 2879: 31,-12 + 2880: 31,-11 + 2881: 31,-10 + 2882: 31,-8 + 2883: 31,-8 + 2884: 31,-7 + 2885: 31,-4 + 2886: 33,-4 + 2887: 33,-4 + 2888: 32,-5 + 2889: 30,-16 + 2890: 30,-18 + 2891: 31,-15 + 2892: 31,-16 + 2893: 33,-16 + 2894: 33,-15 + 2895: 32,-16 + 2896: 32,-15 + 2897: 51,9 + 2898: 48,9 + 2899: 45,9 + 2900: 42,9 + 2901: 42,8 + 2902: 38,8 + 2903: 35,24 + 2904: 37,24 + 2905: 35,27 + 2906: 35,28 + 2907: 36,30 + 2908: 31,31 + 2909: 32,32 + 2910: 31,35 + 2911: 32,35 + 2912: 33,36 + 2913: 31,39 + 2914: 31,42 + 2915: 33,41 + 2916: 32,40 + 2917: 32,39 + 2918: 0,53 + 2919: 0,52 + 2920: 0,51 + 2921: 0,49 + 2922: 2,51 + 2923: 0,55 + 2924: 1,55 + 2925: 1,59 + 2926: 2,61 + 2927: 1,61 + 2928: -2,61 + 2929: -2,59 + 2930: -1,56 + 2931: -38,51 + 2932: -42,51 + 2933: -45,48 + 2934: -45,45 + 2935: -41,46 + 2936: -37,46 + 2937: -38,44 + 2938: -42,44 + 2939: -44,43 + 2940: -41,41 + 2941: -36,41 + 2942: -35,41 + 2943: -42,40 + 2944: -46,40 + 2945: -39,40 + 2946: -35,41 + 2947: -39,42 + 2948: -45,43 + 2949: -35,44 + 2950: -34,45 + 2951: -42,45 + 2952: -37,47 + 2953: -34,47 + 2954: -44,48 + 2955: -38,49 + 2956: -35,50 + 2957: -43,50 + 2958: -33,51 + 2959: -36,49 + 2960: -43,48 + 2961: -39,48 + 2962: -33,47 + 2963: -39,46 + 2964: -45,45 + 2965: -39,44 + 2966: -34,43 + 2967: -36,41 + 2968: -41,41 + 2969: -41,41 + 2970: -34,40 + 2971: -36,41 + 2972: -39,41 + 2973: -32,41 + 2974: -32,41 + 2975: -31,44 + 2976: -31,48 + 2977: -31,51 + 2978: -28,45 + 2979: -26,45 + 2980: -28,41 + 2981: -26,41 + 2982: -24,41 + 2983: -23,39 + 3124: 50,-37 + 3125: 53,-37 + 3126: 56,-38 + 3127: 55,-38 + 3128: 54,-39 + 3129: 53,-40 + 3130: 53,-42 + 3131: 51,-45 + 3132: 51,-46 + 3133: 46,-47 + 3134: 46,-46 + 3135: 48,-43 + 3136: 46,-45 + 3137: 45,-46 + 3138: 43,-46 + 3139: 47,-43 + 3140: 52,-46 + 3141: 52,-42 + 3142: 53,-42 + 3143: 50,-42 + 3144: 50,-40 + 3145: 50,-37 + 3146: 52,-36 + 3147: 55,-37 + 3148: 55,-38 + 3149: 53,-40 + 3150: 53,-42 + 3151: 52,-45 + 3152: 50,-45 + 3153: 54,-47 + 3154: 51,-47 + 3155: 46,-47 + 3156: 45,-47 + 3157: 44,-46 + 3158: 44,-44 + 3559: -5,-1 + 4404: 28,54 + 4405: 27,55 + 4406: 27,56 + 4407: 26,56 + 4408: 26,55 + 4409: 26,54 + 4410: 27,54 + 4411: 28,52 + 4412: 27,51 + 4413: 28,53 - node: cleanable: True color: '#FFFFFFFF' id: Dirt decals: - 3291: -65,-33 + 3278: -65,-33 - node: cleanable: True color: '#835432B7' id: DirtHeavy decals: - 4547: -28,-13 - 4548: -31,-11 - 4549: -30,-11 - 4550: -37,-10 - 4551: -37,-8 - 4552: -39,-8 - 4553: -38,-12 - 4554: -38,-11 - 4555: -36,-11 - 4556: -34,-15 - 4557: -34,-16 - 4558: -33,-15 - 4559: -32,-16 - 4560: -31,-16 - 4561: -31,-15 - 4562: -30,-15 + 4534: -28,-13 + 4535: -31,-11 + 4536: -30,-11 + 4537: -37,-10 + 4538: -37,-8 + 4539: -39,-8 + 4540: -38,-12 + 4541: -38,-11 + 4542: -36,-11 + 4543: -34,-15 + 4544: -34,-16 + 4545: -33,-15 + 4546: -32,-16 + 4547: -31,-16 + 4548: -31,-15 + 4549: -30,-15 - node: cleanable: True color: '#A4610696' id: DirtHeavy decals: - 2996: -20,45 - 2997: -20,52 - 2998: -21,35 - 2999: -19,37 - 3000: -19,35 - 3001: -20,35 - 3002: -11,40 - 3003: -10,44 - 3004: -10,48 - 3005: -15,48 - 3006: -5,43 - 3007: -2,50 - 3008: 5,50 - 3009: 12,50 - 3010: 15,55 - 3011: 18,58 - 3012: 19,63 - 3013: 23,67 - 3014: 33,47 - 3015: 31,40 - 3016: 26,35 - 3017: 33,31 - 3018: 32,25 - 3019: 31,22 - 3020: 36,23 - 3021: 37,27 - 3022: 42,30 - 3023: 43,27 - 3024: 44,21 - 3025: 42,16 - 3026: 41,13 - 3027: 43,15 - 3028: 44,19 - 3029: 32,8 - 3030: 27,7 - 3031: 40,3 - 3032: 46,3 - 3033: 56,3 - 3034: 64,3 - 3035: 70,3 - 3036: 73,3 - 3037: 83,3 - 3038: 83,10 - 3039: 76,9 - 3040: 80,6 - 3041: 53,-2 - 3042: 46,-16 - 3044: 35,-6 - 3045: 32,-4 - 3046: 26,-5 - 3047: 21,-4 - 3048: 12,-4 - 3049: -5,-4 - 3050: -34,-4 - 3051: -41,-5 - 3052: -46,-33 - 3053: -36,-33 - 3054: -32,-36 - 3055: -39,-39 - 3056: -29,-38 - 3057: -26,-39 - 3058: -24,-35 - 3059: -26,-30 - 3060: -23,-26 - 3061: -17,-26 - 3062: -8,-27 - 3063: -5,-31 - 3064: -6,-37 - 3065: -6,-43 - 3066: -6,-48 - 3067: -6,-53 - 3068: -5,-57 - 3069: 5,-53 - 3070: 3,-53 - 3071: 6,-52 - 3072: 5,-52 - 3073: 4,-52 - 3074: 5,-53 - 3075: 6,-53 - 3076: 28,-27 - 3077: -8,-1 - 3078: -31,-4 - 3079: -25,-17 - 3080: -26,1 - 3081: -23,13 - 3082: -21,19 - 3083: -17,20 - 3084: -13,20 - 3085: -18,14 - 3086: -13,14 - 3087: -23,26 - 3088: -23,30 - 3089: -31,30 - 3090: -42,29 - 3091: -50,30 - 3092: -50,29 - 3093: -56,29 - 3094: -58,35 - 3095: -57,44 - 3096: -58,49 - 3097: -64,43 - 3098: -63,38 - 3099: -52,31 - 3100: -40,29 - 3101: -29,30 - 3102: -22,30 - 3103: -21,32 - 3104: -20,37 - 3105: -20,42 - 3106: -19,51 - 3107: -25,54 - 3108: -27,53 - 3109: -11,47 - 3110: -9,45 - 3111: -5,47 - 3112: 4,50 - 3113: 7,49 - 3114: 16,49 - 3115: 23,50 - 3116: 26,50 - 3117: 19,54 - 3118: 19,63 - 3119: 23,68 - 3120: 32,43 - 3121: 32,36 - 3122: 32,29 - 3123: 32,22 - 3124: 32,19 - 3125: 33,9 - 3126: 33,20 - 3127: 31,26 - 3128: 33,35 - 3129: 15,30 - 3130: 8,30 - 3131: 0,30 - 3132: -8,9 - 3133: -4,10 - 3134: 20,15 - 3135: 21,9 - 3136: 29,4 - 3172: 52,-43 - 3173: 50,-47 - 3174: 45,-46 - 3175: 46,-43 - 3176: 52,-40 - 3177: 55,-37 - 3178: 55,-38 - 3179: 47,-45 - 3180: 44,-47 - 3181: 54,-47 - 3182: 53,-47 - 4427: 27,55 - 4428: 28,52 + 2984: -20,45 + 2985: -20,52 + 2986: -21,35 + 2987: -19,37 + 2988: -19,35 + 2989: -20,35 + 2990: -11,40 + 2991: -10,44 + 2992: -10,48 + 2993: -15,48 + 2994: -5,43 + 2995: -2,50 + 2996: 5,50 + 2997: 12,50 + 2998: 15,55 + 2999: 18,58 + 3000: 19,63 + 3001: 23,67 + 3002: 33,47 + 3003: 31,40 + 3004: 26,35 + 3005: 33,31 + 3006: 32,25 + 3007: 31,22 + 3008: 36,23 + 3009: 37,27 + 3010: 42,30 + 3011: 43,27 + 3012: 44,21 + 3013: 42,16 + 3014: 41,13 + 3015: 43,15 + 3016: 44,19 + 3017: 32,8 + 3018: 27,7 + 3019: 40,3 + 3020: 46,3 + 3021: 56,3 + 3022: 64,3 + 3023: 70,3 + 3024: 73,3 + 3025: 83,3 + 3026: 83,10 + 3027: 76,9 + 3028: 80,6 + 3029: 53,-2 + 3030: 46,-16 + 3031: 35,-6 + 3032: 32,-4 + 3033: 26,-5 + 3034: 21,-4 + 3035: 12,-4 + 3036: -5,-4 + 3037: -34,-4 + 3038: -41,-5 + 3039: -46,-33 + 3040: -36,-33 + 3041: -32,-36 + 3042: -39,-39 + 3043: -29,-38 + 3044: -26,-39 + 3045: -24,-35 + 3046: -26,-30 + 3047: -23,-26 + 3048: -17,-26 + 3049: -8,-27 + 3050: -5,-31 + 3051: -6,-37 + 3052: -6,-43 + 3053: -6,-48 + 3054: -6,-53 + 3055: -5,-57 + 3056: 5,-53 + 3057: 3,-53 + 3058: 6,-52 + 3059: 5,-52 + 3060: 4,-52 + 3061: 5,-53 + 3062: 6,-53 + 3063: 28,-27 + 3064: -8,-1 + 3065: -31,-4 + 3066: -25,-17 + 3067: -26,1 + 3068: -23,13 + 3069: -21,19 + 3070: -17,20 + 3071: -13,20 + 3072: -18,14 + 3073: -13,14 + 3074: -23,26 + 3075: -23,30 + 3076: -31,30 + 3077: -42,29 + 3078: -50,30 + 3079: -50,29 + 3080: -56,29 + 3081: -58,35 + 3082: -57,44 + 3083: -58,49 + 3084: -64,43 + 3085: -63,38 + 3086: -52,31 + 3087: -40,29 + 3088: -29,30 + 3089: -22,30 + 3090: -21,32 + 3091: -20,37 + 3092: -20,42 + 3093: -19,51 + 3094: -25,54 + 3095: -27,53 + 3096: -11,47 + 3097: -9,45 + 3098: -5,47 + 3099: 4,50 + 3100: 7,49 + 3101: 16,49 + 3102: 23,50 + 3103: 26,50 + 3104: 19,54 + 3105: 19,63 + 3106: 23,68 + 3107: 32,43 + 3108: 32,36 + 3109: 32,29 + 3110: 32,22 + 3111: 32,19 + 3112: 33,9 + 3113: 33,20 + 3114: 31,26 + 3115: 33,35 + 3116: 15,30 + 3117: 8,30 + 3118: 0,30 + 3119: -8,9 + 3120: -4,10 + 3121: 20,15 + 3122: 21,9 + 3123: 29,4 + 3159: 52,-43 + 3160: 50,-47 + 3161: 45,-46 + 3162: 46,-43 + 3163: 52,-40 + 3164: 55,-37 + 3165: 55,-38 + 3166: 47,-45 + 3167: 44,-47 + 3168: 54,-47 + 3169: 53,-47 + 4414: 27,55 + 4415: 28,52 - node: cleanable: True color: '#8354328B' id: DirtLight decals: - 4605: -33,-8 - 4606: -32,-8 - 4607: -30,-7 - 4608: -29,-8 + 4592: -33,-8 + 4593: -32,-8 + 4594: -30,-7 + 4595: -29,-8 - node: cleanable: True color: '#FFFFFFFF' id: DirtLight decals: - 3288: -65,-33 - 3289: -64,-33 - 3290: -63,-33 + 3275: -65,-33 + 3276: -64,-33 + 3277: -63,-33 - node: cleanable: True color: '#8354328B' id: DirtMedium decals: - 4609: -28,-8 - 4610: -28,-9 - 4611: -30,-9 + 4596: -28,-8 + 4597: -28,-9 + 4598: -30,-9 - node: cleanable: True color: '#835432B7' id: DirtMedium decals: - 4563: -31,-15 - 4564: -29,-15 - 4565: -28,-14 - 4566: -30,-11 - 4567: -32,-11 - 4568: -38,-13 - 4569: -38,-11 - 4570: -39,-8 - 4571: -28,-12 + 4550: -31,-15 + 4551: -29,-15 + 4552: -28,-14 + 4553: -30,-11 + 4554: -32,-11 + 4555: -38,-13 + 4556: -38,-11 + 4557: -39,-8 + 4558: -28,-12 - node: color: '#9FED58B7' id: FlowersBROne decals: - 4771: -2.6908832,47.53326 + 4758: -2.6908832,47.53326 - node: color: '#9FED5873' id: Flowersbr1 decals: - 3315: 78.72238,7.9556513 - 3316: 79.69461,7.9278736 + 3302: 78.72238,7.9556513 + 3303: 79.69461,7.9278736 - node: color: '#FFFFFFE3' id: Flowersbr1 decals: - 4486: -19.119284,3.6234694 - 4487: -19.829224,1.4664211 + 4473: -19.119284,3.6234694 + 4474: -19.829224,1.4664211 - node: color: '#FFFFFFFF' id: Flowersbr1 decals: - 3355: -17.368574,-37.531387 + 3342: -17.368574,-37.531387 - node: color: '#FFFFFFE3' id: Flowersbr2 decals: - 4488: -19.900217,3.027443 - 4489: -19.005693,2.0766392 + 4475: -19.900217,3.027443 + 4476: -19.005693,2.0766392 - node: color: '#FFFFFFFF' id: Flowersbr2 decals: - 3358: -15.424128,-36.586945 + 3345: -15.424128,-36.586945 - node: color: '#9FED58B7' id: Flowersbr3 decals: - 4770: -1.1716373,46.099934 + 4757: -1.1716373,46.099934 - node: color: '#FFFFFFE3' id: Flowersbr3 decals: - 4490: -19.886019,-0.0094537735 - 4491: -18.82111,0.8136306 + 4477: -19.886019,-0.0094537735 + 4478: -18.82111,0.8136306 - node: color: '#FFFFFFFF' id: Flowersbr3 decals: - 3359: -16.14635,-36.989723 - 3385: -60.04891,40.960167 - 3386: -60.00724,39.210167 - 3387: -60.02113,42.890724 + 3346: -16.14635,-36.989723 + 3372: -60.04891,40.960167 + 3373: -60.00724,39.210167 + 3374: -60.02113,42.890724 - node: color: '#9FED58B7' id: Flowerspv1 decals: - 4769: -2.7477016,46.156727 - 4772: -2.7050896,47.10753 - 4773: -1.4556177,45.858692 + 4756: -2.7477016,46.156727 + 4759: -2.7050896,47.10753 + 4760: -1.4556177,45.858692 - node: color: '#A4DF8296' id: Flowerspv1 decals: - 1702: -7.423552,-22.998676 - 1703: -8.506886,-23.19312 - 1704: -8.8402195,-23.776455 - 1705: -7.2846637,-23.80423 - 1706: -7.3957734,-22.05423 + 1691: -7.423552,-22.998676 + 1692: -8.506886,-23.19312 + 1693: -8.8402195,-23.776455 + 1694: -7.2846637,-23.80423 + 1695: -7.3957734,-22.05423 - node: color: '#FFFFFFE3' id: Flowerspv1 decals: - 4493: -19.928616,2.0766392 + 4480: -19.928616,2.0766392 - node: color: '#9FED5896' id: Flowerspv2 decals: - 3221: -40.505478,-22.24596 - 3222: -40.186035,-23.329292 - 3223: -41.505478,-22.968182 + 3208: -40.505478,-22.24596 + 3209: -40.186035,-23.329292 + 3210: -41.505478,-22.968182 - node: color: '#FFFFFFE3' id: Flowerspv2 decals: - 4492: -19.04829,0.0047369003 - 4494: -18.877905,2.8429594 - 4497: -18.82111,1.3387012 - 4502: -20.028008,-0.22232056 + 4479: -19.04829,0.0047369003 + 4481: -18.877905,2.8429594 + 4484: -18.82111,1.3387012 + 4489: -20.028008,-0.22232056 - node: color: '#FFFFFFFF' id: Flowerspv2 decals: - 3356: -15.688017,-37.836945 + 3343: -15.688017,-37.836945 - node: color: '#9FED5896' id: Flowerspv3 decals: - 3224: -43.172146,-21.537628 - 3225: -40.94992,-18.676516 - 3226: -40.061035,-18.162628 - 3227: -40.436035,-19.176516 - 3228: -43.061035,-17.85707 - 3229: -43.158257,-19.662628 - 3230: -40.99159,-23.49596 + 3211: -43.172146,-21.537628 + 3212: -40.94992,-18.676516 + 3213: -40.061035,-18.162628 + 3214: -40.436035,-19.176516 + 3215: -43.061035,-17.85707 + 3216: -43.158257,-19.662628 + 3217: -40.99159,-23.49596 - node: color: '#FFFFFFE3' id: Flowerspv3 decals: - 4495: -20.0848,3.8505278 - 4496: -19.786627,0.6575284 + 4482: -20.0848,3.8505278 + 4483: -19.786627,0.6575284 - node: color: '#FFFFFFFF' id: Flowerspv3 decals: - 3357: -17.27135,-36.48972 - 3382: -60.00724,38.321278 - 3383: -59.965576,40.001835 - 3384: -59.965576,41.821278 + 3344: -17.27135,-36.48972 + 3369: -60.00724,38.321278 + 3370: -59.965576,40.001835 + 3371: -59.965576,41.821278 - node: color: '#60E25873' id: Flowersy1 decals: - 3374: -60.062798,38.779613 - 3375: -59.965576,40.112946 - 3376: -59.97946,41.404613 + 3361: -60.062798,38.779613 + 3362: -59.965576,40.112946 + 3363: -59.97946,41.404613 - node: color: '#9FED5896' id: Flowersy1 decals: - 3217: -42.811035,-21.551517 - 3218: -42.99159,-18.176516 - 3219: -40.811035,-22.218182 - 3220: -42.894367,-22.87096 + 3204: -42.811035,-21.551517 + 3205: -42.99159,-18.176516 + 3206: -40.811035,-22.218182 + 3207: -42.894367,-22.87096 - node: color: '#A4DF8296' id: Flowersy1 decals: - 1699: -7.4791064,-22.526455 - 1700: -9.145773,-22.720898 - 1701: -8.673552,-23.748676 + 1688: -7.4791064,-22.526455 + 1689: -9.145773,-22.720898 + 1690: -8.673552,-23.748676 - node: color: '#FFFFFFE3' id: Flowersy1 decals: - 4498: -19.005693,3.8079538 + 4485: -19.005693,3.8079538 - node: color: '#FFFFFFE3' id: Flowersy2 decals: - 4499: -19.729832,2.999061 + 4486: -19.729832,2.999061 - node: color: '#9FED5896' id: Flowersy3 decals: - 3215: -41.672146,-22.10707 - 3216: -40.172146,-23.204292 + 3202: -41.672146,-22.10707 + 3203: -40.172146,-23.204292 - node: color: '#FFFFFFE3' id: Flowersy3 decals: - 4500: -19.332266,2.1475945 + 4487: -19.332266,2.1475945 - node: color: '#60E25873' id: Flowersy4 decals: - 3369: -59.937798,42.696278 - 3370: -59.99335,41.751835 - 3371: -60.00724,40.571278 - 3372: -60.062798,39.418503 - 3373: -59.965576,38.085167 + 3356: -59.937798,42.696278 + 3357: -59.99335,41.751835 + 3358: -60.00724,40.571278 + 3359: -60.062798,39.418503 + 3360: -59.965576,38.085167 - node: color: '#9FED5896' id: Flowersy4 decals: - 3212: -40.24159,-18.343182 - 3213: -41.172146,-18.63485 - 3214: -40.283257,-19.10707 + 3199: -40.24159,-18.343182 + 3200: -41.172146,-18.63485 + 3201: -40.283257,-19.10707 - node: color: '#FFFFFFE3' id: Flowersy4 decals: - 4501: -19.687237,1.0832615 + 4488: -19.687237,1.0832615 - node: color: '#D4D4D428' id: FullTileOverlayGreyscale decals: - 4804: 86,-2 - 4805: 85,-2 - 4806: 85,1 - 4807: 86,1 - 4808: 73,1 - 4809: 72,1 - 4810: 72,-2 - 4811: 73,-2 + 4791: 86,-2 + 4792: 85,-2 + 4793: 85,1 + 4794: 86,1 + 4795: 73,1 + 4796: 72,1 + 4797: 72,-2 + 4798: 73,-2 - node: color: '#A4DF8296' id: Grassa4 decals: - 1683: -7.8109317,-1.9877326 + 1672: -7.8109317,-1.9877326 - node: color: '#FFFFFF85' id: Grassd3 decals: - 4476: -19.488453,1.96311 - 4477: -18.70752,2.7436213 - 4478: -18.892103,0.898777 - 4479: -19.829224,-0.023644924 - 4480: -20.0848,2.4456081 - 4481: -20.311981,-0.37842274 + 4463: -19.488453,1.96311 + 4464: -18.70752,2.7436213 + 4465: -18.892103,0.898777 + 4466: -19.829224,-0.023644924 + 4467: -20.0848,2.4456081 + 4468: -20.311981,-0.37842274 - node: color: '#60E25873' id: Grasse1 decals: - 3360: -17.39635,-36.50361 - 3361: -15.813017,-36.434166 - 3362: -15.2157955,-36.545277 - 3363: -15.729685,-37.656387 - 3364: -17.590796,-37.531387 - 3365: -16.063017,-36.961945 - 3366: -15.674128,-37.948055 - 3367: -14.951906,-37.128613 - 3368: -15.229685,-38.073055 + 3347: -17.39635,-36.50361 + 3348: -15.813017,-36.434166 + 3349: -15.2157955,-36.545277 + 3350: -15.729685,-37.656387 + 3351: -17.590796,-37.531387 + 3352: -16.063017,-36.961945 + 3353: -15.674128,-37.948055 + 3354: -14.951906,-37.128613 + 3355: -15.229685,-38.073055 - node: color: '#FFFFFF85' id: Grasse1 decals: - 4482: -20.269386,0.16083956 - 4483: -18.792713,3.3112655 - 4484: -19.147682,2.431417 - 4485: -18.806911,4.205305 + 4469: -20.269386,0.16083956 + 4470: -18.792713,3.3112655 + 4471: -19.147682,2.431417 + 4472: -18.806911,4.205305 - node: color: '#60FF5D92' id: Grasse2 decals: - 4503: -20.0848,0.047310352 - 4504: -19.729832,0.99811506 - 4505: -18.906303,2.4172258 - 4506: -18.9347,3.7937632 - 4507: -19.985409,4.077585 - 4508: -20.028008,2.6726656 - 4509: -19.062489,1.1967907 - 4510: -19.957012,0.88458633 + 4490: -20.0848,0.047310352 + 4491: -19.729832,0.99811506 + 4492: -18.906303,2.4172258 + 4493: -18.9347,3.7937632 + 4494: -19.985409,4.077585 + 4495: -20.028008,2.6726656 + 4496: -19.062489,1.1967907 + 4497: -19.957012,0.88458633 - node: color: '#FFFFFF85' id: Grasse2 decals: - 4473: -19.034092,3.6092787 - 4474: -19.729832,3.0700169 - 4475: -20.0848,2.1475945 + 4460: -19.034092,3.6092787 + 4461: -19.729832,3.0700169 + 4462: -20.0848,2.1475945 - node: color: '#334E6DC8' id: HalfTileOverlayGreyscale decals: - 1224: -62,55 - 1225: -61,55 - 1226: -60,55 - 1227: -59,55 - 1228: -58,55 + 1214: -62,55 + 1215: -61,55 + 1216: -60,55 + 1217: -59,55 + 1218: -58,55 - node: color: '#52B4E996' id: HalfTileOverlayGreyscale @@ -4363,140 +4363,140 @@ entities: 297: -32,-42 298: -31,-42 299: -30,-42 - 503: -41,-38 - 4886: -35,-42 - 4887: -34,-42 - 4888: -33,-42 + 493: -41,-38 + 4873: -35,-42 + 4874: -34,-42 + 4875: -33,-42 - node: color: '#A4610696' id: HalfTileOverlayGreyscale decals: - 1039: 35,30 - 1040: 36,30 - 1041: 37,30 - 1048: 39,24 - 1049: 40,24 - 1050: 41,24 - 1051: 42,30 - 1052: 43,30 - 1053: 46,30 - 1054: 47,30 - 1061: 44,30 - 1062: 45,30 - 1507: 35,34 - 1508: 36,34 - 1509: 37,34 - 1510: 38,34 - 1511: 39,34 - 1512: 40,34 - 1513: 41,34 - 1514: 42,37 - 1515: 43,37 - 1516: 44,37 - 1517: 45,37 - 1518: 46,37 - 1519: 47,37 + 1029: 35,30 + 1030: 36,30 + 1031: 37,30 + 1038: 39,24 + 1039: 40,24 + 1040: 41,24 + 1041: 42,30 + 1042: 43,30 + 1043: 46,30 + 1044: 47,30 + 1051: 44,30 + 1052: 45,30 + 1497: 35,34 + 1498: 36,34 + 1499: 37,34 + 1500: 38,34 + 1501: 39,34 + 1502: 40,34 + 1503: 41,34 + 1504: 42,37 + 1505: 43,37 + 1506: 44,37 + 1507: 45,37 + 1508: 46,37 + 1509: 47,37 - node: color: '#D4D4D419' id: HalfTileOverlayGreyscale decals: - 1239: -54,31 - 1240: -53,31 - 1241: -52,31 - 1242: -51,31 - 1243: -50,31 - 1244: -49,31 - 1245: -48,31 - 1246: -47,31 - 1247: -46,31 - 1248: -45,31 - 1249: -44,31 - 1250: -43,31 - 1251: -42,31 - 1252: -41,31 - 1253: -40,31 - 1254: -39,31 - 1255: -38,31 - 1256: -37,31 - 1257: -36,31 - 1258: -35,31 - 1314: 17,31 - 1315: 16,31 - 1316: 15,31 - 1317: 14,31 - 1318: 13,31 - 1319: 12,31 - 1320: 11,31 - 1321: 9,31 - 1322: 8,31 - 1323: 7,31 - 1324: 5,31 - 1325: 4,31 - 1326: 3,31 - 1327: 2,31 - 1328: 1,31 - 1329: 0,31 - 1330: -1,31 - 1331: -2,31 - 1332: -3,31 + 1229: -54,31 + 1230: -53,31 + 1231: -52,31 + 1232: -51,31 + 1233: -50,31 + 1234: -49,31 + 1235: -48,31 + 1236: -47,31 + 1237: -46,31 + 1238: -45,31 + 1239: -44,31 + 1240: -43,31 + 1241: -42,31 + 1242: -41,31 + 1243: -40,31 + 1244: -39,31 + 1245: -38,31 + 1246: -37,31 + 1247: -36,31 + 1248: -35,31 + 1304: 17,31 + 1305: 16,31 + 1306: 15,31 + 1307: 14,31 + 1308: 13,31 + 1309: 12,31 + 1310: 11,31 + 1311: 9,31 + 1312: 8,31 + 1313: 7,31 + 1314: 5,31 + 1315: 4,31 + 1316: 3,31 + 1317: 2,31 + 1318: 1,31 + 1319: 0,31 + 1320: -1,31 + 1321: -2,31 + 1322: -3,31 - node: color: '#D4D4D433' id: HalfTileOverlayGreyscale decals: - 770: -11,-25 - 771: -10,-25 - 772: -9,-25 - 773: -8,-25 - 774: -7,-25 - 809: -16,-3 - 810: -14,-3 - 811: -12,-3 - 812: -11,-3 - 817: 17,-3 - 818: 18,-3 - 819: 20,-3 - 820: 21,-3 - 821: 23,-3 - 822: 24,-3 - 823: 25,-3 - 824: 26,-3 - 863: 22,-31 - 864: 23,-31 - 865: 24,-31 - 899: 35,4 - 900: 36,4 - 901: 37,4 - 902: 38,4 - 903: 39,4 - 904: 40,4 - 905: 41,4 - 906: 42,4 - 907: 43,4 - 908: 44,4 - 909: 45,4 - 910: 46,4 - 911: 47,4 - 912: 48,4 - 913: 49,4 - 914: 50,4 - 915: 51,4 - 916: 52,4 - 917: 53,4 - 918: 55,4 - 919: 56,4 - 920: 57,4 - 921: 58,4 - 922: 59,4 - 923: 60,4 - 924: 61,4 - 925: 62,4 - 926: 63,4 - 927: 64,4 - 928: 65,4 - 929: 66,4 - 930: 67,4 - 931: 68,4 - 932: 69,4 + 760: -11,-25 + 761: -10,-25 + 762: -9,-25 + 763: -8,-25 + 764: -7,-25 + 799: -16,-3 + 800: -14,-3 + 801: -12,-3 + 802: -11,-3 + 807: 17,-3 + 808: 18,-3 + 809: 20,-3 + 810: 21,-3 + 811: 23,-3 + 812: 24,-3 + 813: 25,-3 + 814: 26,-3 + 853: 22,-31 + 854: 23,-31 + 855: 24,-31 + 889: 35,4 + 890: 36,4 + 891: 37,4 + 892: 38,4 + 893: 39,4 + 894: 40,4 + 895: 41,4 + 896: 42,4 + 897: 43,4 + 898: 44,4 + 899: 45,4 + 900: 46,4 + 901: 47,4 + 902: 48,4 + 903: 49,4 + 904: 50,4 + 905: 51,4 + 906: 52,4 + 907: 53,4 + 908: 55,4 + 909: 56,4 + 910: 57,4 + 911: 58,4 + 912: 59,4 + 913: 60,4 + 914: 61,4 + 915: 62,4 + 916: 63,4 + 917: 64,4 + 918: 65,4 + 919: 66,4 + 920: 67,4 + 921: 68,4 + 922: 69,4 - node: color: '#DE3A3A96' id: HalfTileOverlayGreyscale @@ -4515,45 +4515,45 @@ entities: 344: 44,-3 345: 45,-3 346: 46,-3 - 391: 34,-7 - 504: -32,27 - 505: -31,27 - 506: -30,27 - 507: -28,27 - 508: -27,27 - 509: -26,27 - 519: -29,26 - 1208: -64,51 - 1209: -63,51 - 1210: -61,51 - 1463: 36,51 - 1464: 37,51 - 1602: 60,-19 - 1603: 61,-19 - 1604: 62,-19 + 383: 34,-7 + 494: -32,27 + 495: -31,27 + 496: -30,27 + 497: -28,27 + 498: -27,27 + 499: -26,27 + 509: -29,26 + 1198: -64,51 + 1199: -63,51 + 1200: -61,51 + 1453: 36,51 + 1454: 37,51 + 1592: 60,-19 + 1593: 61,-19 + 1594: 62,-19 - node: color: '#EFB34196' id: HalfTileOverlayGreyscale decals: - 603: -18,45 - 604: -17,45 - 605: -16,45 - 606: -15,45 - 607: -14,45 - 608: -13,45 - 609: -12,45 - 610: -11,45 - 611: -10,45 + 593: -18,45 + 594: -17,45 + 595: -16,45 + 596: -15,45 + 597: -14,45 + 598: -13,45 + 599: -12,45 + 600: -11,45 + 601: -10,45 - node: color: '#0E7F1BFF' id: HalfTileOverlayGreyscale180 decals: - 4983: 43,-17 + 4961: 43,-17 - node: color: '#1861D5FF' id: HalfTileOverlayGreyscale180 decals: - 4981: 37,-17 + 4959: 37,-17 - node: color: '#334E6DC8' id: HalfTileOverlayGreyscale180 @@ -4591,193 +4591,193 @@ entities: 305: -49,-33 306: -51,-33 307: -53,-33 - 1498: -43,-33 - 4883: -33,-45 - 4884: -34,-45 - 4885: -35,-45 + 1488: -43,-33 + 4870: -33,-45 + 4871: -34,-45 + 4872: -35,-45 - node: color: '#951710FF' id: HalfTileOverlayGreyscale180 decals: - 4982: 40,-17 + 4960: 40,-17 - node: color: '#A4610696' id: HalfTileOverlayGreyscale180 decals: - 1036: 35,23 - 1037: 36,23 - 1038: 37,23 - 1055: 47,26 - 1056: 46,26 - 1520: 44,32 - 1521: 45,32 - 1522: 43,32 - 1523: 42,32 - 1524: 41,32 - 1525: 40,32 - 1526: 39,32 - 1527: 38,32 - 1528: 37,32 - 1529: 36,32 - 1530: 35,32 - 1531: 46,32 - 1532: 47,32 + 1026: 35,23 + 1027: 36,23 + 1028: 37,23 + 1045: 47,26 + 1046: 46,26 + 1510: 44,32 + 1511: 45,32 + 1512: 43,32 + 1513: 42,32 + 1514: 41,32 + 1515: 40,32 + 1516: 39,32 + 1517: 38,32 + 1518: 37,32 + 1519: 36,32 + 1520: 35,32 + 1521: 46,32 + 1522: 47,32 - node: color: '#D381C996' id: HalfTileOverlayGreyscale180 decals: - 959: 21,66 - 960: 22,66 - 974: 23,66 - 975: 24,66 + 949: 21,66 + 950: 22,66 + 964: 23,66 + 965: 24,66 - node: color: '#D4D4D419' id: HalfTileOverlayGreyscale180 decals: - 1170: -25,29 - 1171: -26,29 - 1172: -27,29 - 1173: -28,29 - 1174: -29,29 - 1175: -30,29 - 1176: -31,29 - 1177: -32,29 - 1178: -33,29 - 1179: -36,29 - 1180: -37,29 - 1181: -38,29 - 1182: -39,29 - 1183: -42,29 - 1184: -43,29 - 1185: -44,29 - 1186: -45,29 - 1187: -46,29 - 1188: -48,29 - 1189: -49,29 - 1190: -50,29 - 1191: -51,29 - 1192: -52,29 - 1193: -53,29 - 1194: -54,29 - 1195: -56,29 - 1196: -57,29 - 1276: -21,29 - 1277: -20,29 - 1278: -19,29 - 1279: -18,29 - 1280: -17,29 - 1281: -16,29 - 1282: -15,29 - 1283: -14,29 - 1284: -13,29 - 1285: -12,29 - 1286: -11,29 - 1287: -10,29 - 1288: -9,29 - 1289: -8,29 - 1290: -5,29 - 1291: -3,30 - 1292: -2,30 - 1293: -1,30 - 1294: 0,30 - 1295: 1,30 - 1296: 2,30 - 1297: 3,30 - 1298: 4,30 - 1299: 5,30 - 1300: 6,30 - 1301: 7,30 - 1302: 8,30 - 1303: 9,30 - 1304: 10,30 - 1305: 11,30 - 1306: 12,30 - 1307: 13,30 - 1308: 14,30 - 1309: 15,30 - 1310: 16,30 - 1311: 17,30 - 1348: -3,49 - 1349: -2,49 - 1350: -1,49 - 1351: 0,49 - 1352: 1,49 - 1353: 2,49 - 1354: 4,49 - 1355: 5,49 - 1356: 6,49 - 1357: 7,49 - 1358: 8,49 - 1359: 9,49 - 1360: 10,49 - 1361: 11,49 - 1362: 12,49 - 1363: 13,49 - 1364: 11,49 - 1365: 13,49 - 1366: 14,49 - 1367: 15,49 - 1368: 16,49 - 1369: 17,49 - 1370: 18,49 - 1371: 19,49 - 1372: 21,49 - 1373: 22,49 - 1374: 23,49 - 1375: 25,49 - 1376: 26,49 - 1377: 24,49 - 1378: 27,49 - 1379: 29,49 - 1380: 28,49 - 1381: 20,49 + 1160: -25,29 + 1161: -26,29 + 1162: -27,29 + 1163: -28,29 + 1164: -29,29 + 1165: -30,29 + 1166: -31,29 + 1167: -32,29 + 1168: -33,29 + 1169: -36,29 + 1170: -37,29 + 1171: -38,29 + 1172: -39,29 + 1173: -42,29 + 1174: -43,29 + 1175: -44,29 + 1176: -45,29 + 1177: -46,29 + 1178: -48,29 + 1179: -49,29 + 1180: -50,29 + 1181: -51,29 + 1182: -52,29 + 1183: -53,29 + 1184: -54,29 + 1185: -56,29 + 1186: -57,29 + 1266: -21,29 + 1267: -20,29 + 1268: -19,29 + 1269: -18,29 + 1270: -17,29 + 1271: -16,29 + 1272: -15,29 + 1273: -14,29 + 1274: -13,29 + 1275: -12,29 + 1276: -11,29 + 1277: -10,29 + 1278: -9,29 + 1279: -8,29 + 1280: -5,29 + 1281: -3,30 + 1282: -2,30 + 1283: -1,30 + 1284: 0,30 + 1285: 1,30 + 1286: 2,30 + 1287: 3,30 + 1288: 4,30 + 1289: 5,30 + 1290: 6,30 + 1291: 7,30 + 1292: 8,30 + 1293: 9,30 + 1294: 10,30 + 1295: 11,30 + 1296: 12,30 + 1297: 13,30 + 1298: 14,30 + 1299: 15,30 + 1300: 16,30 + 1301: 17,30 + 1338: -3,49 + 1339: -2,49 + 1340: -1,49 + 1341: 0,49 + 1342: 1,49 + 1343: 2,49 + 1344: 4,49 + 1345: 5,49 + 1346: 6,49 + 1347: 7,49 + 1348: 8,49 + 1349: 9,49 + 1350: 10,49 + 1351: 11,49 + 1352: 12,49 + 1353: 13,49 + 1354: 11,49 + 1355: 13,49 + 1356: 14,49 + 1357: 15,49 + 1358: 16,49 + 1359: 17,49 + 1360: 18,49 + 1361: 19,49 + 1362: 21,49 + 1363: 22,49 + 1364: 23,49 + 1365: 25,49 + 1366: 26,49 + 1367: 24,49 + 1368: 27,49 + 1369: 29,49 + 1370: 28,49 + 1371: 20,49 - node: color: '#D4D4D433' id: HalfTileOverlayGreyscale180 decals: - 759: -4,-26 - 760: -3,-26 - 761: 17,-26 - 762: 18,-26 - 763: -8,-28 - 764: -9,-28 - 765: -10,-28 - 766: -11,-28 - 792: -7,-5 - 793: -9,-5 - 794: -10,-5 - 795: -11,-5 - 796: -13,-5 - 797: -14,-5 - 798: -15,-5 - 799: -16,-5 - 800: -17,-5 - 801: -19,-5 - 802: -22,-5 - 803: -23,-5 - 804: -24,-5 - 805: -40,-5 - 829: 28,-5 - 830: 27,-5 - 831: 26,-5 - 832: 25,-5 - 833: 24,-5 - 834: 23,-5 - 835: 22,-5 - 836: 21,-5 - 866: 24,-36 - 867: 23,-36 - 868: 22,-36 - 933: 65,2 - 934: 66,2 - 935: 67,2 - 936: 68,2 - 937: 69,2 + 749: -4,-26 + 750: -3,-26 + 751: 17,-26 + 752: 18,-26 + 753: -8,-28 + 754: -9,-28 + 755: -10,-28 + 756: -11,-28 + 782: -7,-5 + 783: -9,-5 + 784: -10,-5 + 785: -11,-5 + 786: -13,-5 + 787: -14,-5 + 788: -15,-5 + 789: -16,-5 + 790: -17,-5 + 791: -19,-5 + 792: -22,-5 + 793: -23,-5 + 794: -24,-5 + 795: -40,-5 + 819: 28,-5 + 820: 27,-5 + 821: 26,-5 + 822: 25,-5 + 823: 24,-5 + 824: 23,-5 + 825: 22,-5 + 826: 21,-5 + 856: 24,-36 + 857: 23,-36 + 858: 22,-36 + 923: 65,2 + 924: 66,2 + 925: 67,2 + 926: 68,2 + 927: 69,2 - node: color: '#D58C18FF' id: HalfTileOverlayGreyscale180 decals: - 4984: 46,-17 + 4962: 46,-17 - node: color: '#DE3A3A96' id: HalfTileOverlayGreyscale180 @@ -4788,179 +4788,179 @@ entities: 333: 44,-1 334: 45,-1 335: 46,-1 - 378: 45,-17 - 381: 42,-17 - 382: 41,-17 - 384: 39,-17 - 385: 38,-17 - 510: -32,25 - 511: -31,25 - 512: -30,25 - 513: -29,25 - 514: -28,25 - 515: -27,25 - 516: -26,25 - 1215: -63,48 - 1219: -62,48 - 1466: 36,48 - 1467: 37,48 - 1605: 60,-23 - 1606: 61,-23 - 1607: 62,-23 - 4980: 44,-17 - 4986: 34,-13 + 374: 45,-17 + 375: 42,-17 + 376: 41,-17 + 377: 39,-17 + 378: 38,-17 + 500: -32,25 + 501: -31,25 + 502: -30,25 + 503: -29,25 + 504: -28,25 + 505: -27,25 + 506: -26,25 + 1205: -63,48 + 1209: -62,48 + 1456: 36,48 + 1457: 37,48 + 1595: 60,-23 + 1596: 61,-23 + 1597: 62,-23 + 4958: 44,-17 + 4964: 34,-13 - node: color: '#EFB34196' id: HalfTileOverlayGreyscale180 decals: - 612: -10,43 - 613: -11,43 - 614: -12,43 - 615: -13,43 - 616: -14,43 - 617: -15,43 - 618: -16,43 - 619: -17,43 - 620: -18,43 + 602: -10,43 + 603: -11,43 + 604: -12,43 + 605: -13,43 + 606: -14,43 + 607: -15,43 + 608: -16,43 + 609: -17,43 + 610: -18,43 - node: color: '#334E6DC8' id: HalfTileOverlayGreyscale270 decals: - 1229: -63,54 - 1230: -63,53 - 1539: 18,-60 - 1540: 17,-61 - 1541: 17,-62 - 1542: 18,-63 + 1219: -63,54 + 1220: -63,53 + 1529: 18,-60 + 1530: 17,-61 + 1531: 17,-62 + 1532: 18,-63 - node: color: '#52B4E996' id: HalfTileOverlayGreyscale270 decals: 227: -26,-26 - 4961: -36,-37 - 4962: -35,-37 - 4963: -34,-37 - 4964: -35,-36 - 4965: -35,-38 + 4948: -36,-37 + 4949: -35,-37 + 4950: -34,-37 + 4951: -35,-36 + 4952: -35,-38 - node: color: '#9FED5896' id: HalfTileOverlayGreyscale270 decals: - 1499: -8,-60 - 1500: -9,-61 - 1501: -9,-62 - 1502: -8,-63 + 1489: -8,-60 + 1490: -9,-61 + 1491: -9,-62 + 1492: -8,-63 - node: color: '#A4610696' id: HalfTileOverlayGreyscale270 decals: - 1057: 40,21 - 1058: 40,18 - 1059: 40,19 - 1060: 40,20 - 1070: 41,17 - 1071: 41,16 - 1072: 41,15 - 1073: 41,14 - 1074: 41,13 - 1075: 41,12 + 1047: 40,21 + 1048: 40,18 + 1049: 40,19 + 1050: 40,20 + 1060: 41,17 + 1061: 41,16 + 1062: 41,15 + 1063: 41,14 + 1064: 41,13 + 1065: 41,12 - node: color: '#D381C996' id: HalfTileOverlayGreyscale270 decals: - 947: 18,54 - 948: 18,57 - 949: 18,58 - 950: 18,59 - 951: 18,60 - 952: 18,61 - 953: 18,62 - 954: 18,63 - 955: 18,64 - 956: 18,65 - 957: 18,66 + 937: 18,54 + 938: 18,57 + 939: 18,58 + 940: 18,59 + 941: 18,60 + 942: 18,61 + 943: 18,62 + 944: 18,63 + 945: 18,64 + 946: 18,65 + 947: 18,66 - node: color: '#D4D4D40F' id: HalfTileOverlayGreyscale270 decals: - 4722: -28,18 - 4723: -28,17 + 4709: -28,18 + 4710: -28,17 - node: color: '#D4D4D419' id: HalfTileOverlayGreyscale270 decals: - 1142: -24,-1 - 1143: -24,0 - 1144: -24,1 - 1145: -24,2 - 1146: -24,3 - 1147: -24,4 - 1148: -24,5 - 1149: -24,6 - 1150: -24,7 - 1151: -24,8 - 1152: -24,10 - 1153: -24,11 - 1154: -24,12 - 1155: -24,13 - 1156: -24,14 - 1157: -24,15 - 1158: -24,16 - 1159: -24,18 - 1160: -24,19 - 1161: -24,20 - 1162: -24,21 - 1163: -24,22 - 1164: -24,23 - 1165: -24,24 - 1166: -24,26 - 1167: -24,27 - 1198: -58,30 - 1199: -58,31 - 1200: -58,32 + 1132: -24,-1 + 1133: -24,0 + 1134: -24,1 + 1135: -24,2 + 1136: -24,3 + 1137: -24,4 + 1138: -24,5 + 1139: -24,6 + 1140: -24,7 + 1141: -24,8 + 1142: -24,10 + 1143: -24,11 + 1144: -24,12 + 1145: -24,13 + 1146: -24,14 + 1147: -24,15 + 1148: -24,16 + 1149: -24,18 + 1150: -24,19 + 1151: -24,20 + 1152: -24,21 + 1153: -24,22 + 1154: -24,23 + 1155: -24,24 + 1156: -24,26 + 1157: -24,27 + 1188: -58,30 + 1189: -58,31 + 1190: -58,32 - node: color: '#D4D4D433' id: HalfTileOverlayGreyscale270 decals: - 728: -7,-30 - 729: -7,-31 - 730: -7,-32 - 731: -7,-36 - 732: -7,-37 - 733: -7,-38 - 734: -7,-39 - 735: -7,-40 - 736: -7,-41 - 737: -7,-45 - 738: -7,-47 - 739: -7,-48 - 740: -7,-49 - 741: -7,-51 - 742: -7,-53 - 743: -7,-54 - 744: -7,-55 - 745: -7,-56 - 746: -7,-57 - 747: -7,-58 - 776: -6,-24 - 777: -6,-23 - 778: -6,-22 - 779: -6,-20 - 780: -6,-19 - 781: -6,-18 - 782: -6,-16 - 783: -6,-15 - 784: -6,-13 - 785: -6,-12 - 786: -6,-11 - 787: -6,-10 - 788: -6,-9 - 789: -6,-8 - 790: -6,-6 - 892: 19,-57 - 893: 19,-56 - 894: 19,-55 - 895: 19,-54 + 718: -7,-30 + 719: -7,-31 + 720: -7,-32 + 721: -7,-36 + 722: -7,-37 + 723: -7,-38 + 724: -7,-39 + 725: -7,-40 + 726: -7,-41 + 727: -7,-45 + 728: -7,-47 + 729: -7,-48 + 730: -7,-49 + 731: -7,-51 + 732: -7,-53 + 733: -7,-54 + 734: -7,-55 + 735: -7,-56 + 736: -7,-57 + 737: -7,-58 + 766: -6,-24 + 767: -6,-23 + 768: -6,-22 + 769: -6,-20 + 770: -6,-19 + 771: -6,-18 + 772: -6,-16 + 773: -6,-15 + 774: -6,-13 + 775: -6,-12 + 776: -6,-11 + 777: -6,-10 + 778: -6,-9 + 779: -6,-8 + 780: -6,-6 + 882: 19,-57 + 883: 19,-56 + 884: 19,-55 + 885: 19,-54 - node: color: '#DE3A3A96' id: HalfTileOverlayGreyscale270 @@ -4979,214 +4979,214 @@ entities: 354: 34,-9 355: 34,-10 356: 34,-11 - 359: 35,-14 - 360: 35,-15 - 361: 36,-16 - 362: 36,-17 - 518: -32,26 - 1216: -64,49 - 1217: -64,50 - 1461: 35,49 - 1462: 35,50 - 4987: 34,-13 - 4988: 34,-12 + 357: 35,-14 + 358: 35,-15 + 359: 36,-16 + 360: 36,-17 + 508: -32,26 + 1206: -64,49 + 1207: -64,50 + 1451: 35,49 + 1452: 35,50 + 4965: 34,-13 + 4966: 34,-12 - node: color: '#EFB34196' id: HalfTileOverlayGreyscale270 decals: - 583: -21,54 - 584: -21,53 - 585: -21,52 - 586: -21,51 - 587: -21,50 - 588: -21,49 - 589: -21,48 - 590: -21,47 - 591: -21,46 - 592: -21,45 - 593: -21,44 - 594: -21,43 - 595: -21,42 - 596: -21,41 - 597: -21,40 - 598: -21,39 - 599: -21,38 - 600: -21,37 - 601: -21,36 - 602: -21,35 + 573: -21,54 + 574: -21,53 + 575: -21,52 + 576: -21,51 + 577: -21,50 + 578: -21,49 + 579: -21,48 + 580: -21,47 + 581: -21,46 + 582: -21,45 + 583: -21,44 + 584: -21,43 + 585: -21,42 + 586: -21,41 + 587: -21,40 + 588: -21,39 + 589: -21,38 + 590: -21,37 + 591: -21,36 + 592: -21,35 - node: color: '#334E6DC8' id: HalfTileOverlayGreyscale90 decals: - 1231: -57,54 - 1232: -57,53 - 1535: 23,-61 - 1536: 23,-62 - 1537: 22,-63 - 1538: 22,-60 + 1221: -57,54 + 1222: -57,53 + 1525: 23,-61 + 1526: 23,-62 + 1527: 22,-63 + 1528: 22,-60 - node: color: '#52B4E996' id: HalfTileOverlayGreyscale90 decals: - 4966: -36,-37 - 4967: -35,-36 - 4968: -35,-37 - 4969: -35,-38 - 4970: -34,-37 + 4953: -36,-37 + 4954: -35,-36 + 4955: -35,-37 + 4956: -35,-38 + 4957: -34,-37 - node: color: '#9FED5896' id: HalfTileOverlayGreyscale90 decals: - 1503: -4,-60 - 1504: -3,-61 - 1505: -3,-62 - 1506: -4,-63 + 1493: -4,-60 + 1494: -3,-61 + 1495: -3,-62 + 1496: -4,-63 - node: color: '#A4610696' id: HalfTileOverlayGreyscale90 decals: - 1063: 45,25 - 1064: 45,24 - 1065: 45,21 - 1066: 45,20 - 1067: 45,19 - 1068: 44,17 - 1069: 44,16 - 1076: 43,12 - 1077: 43,14 - 1078: 43,13 - 1079: 43,15 - 1625: 45,22 - 1626: 45,23 + 1053: 45,25 + 1054: 45,24 + 1055: 45,21 + 1056: 45,20 + 1057: 45,19 + 1058: 44,17 + 1059: 44,16 + 1066: 43,12 + 1067: 43,14 + 1068: 43,13 + 1069: 43,15 + 1614: 45,22 + 1615: 45,23 - node: color: '#D381C996' id: HalfTileOverlayGreyscale90 decals: - 938: 20,56 - 939: 20,57 - 940: 20,58 - 941: 20,59 - 942: 20,61 - 943: 20,62 - 944: 20,63 - 945: 20,64 - 946: 20,65 - 977: 24,67 - 978: 24,68 - 979: 24,70 + 928: 20,56 + 929: 20,57 + 930: 20,58 + 931: 20,59 + 932: 20,61 + 933: 20,62 + 934: 20,63 + 935: 20,64 + 936: 20,65 + 967: 24,67 + 968: 24,68 + 969: 24,70 - node: color: '#D4D4D405' id: HalfTileOverlayGreyscale90 decals: - 4724: -29,18 - 4725: -29,17 + 4711: -29,18 + 4712: -29,17 - node: color: '#D4D4D419' id: HalfTileOverlayGreyscale90 decals: - 1124: -22,5 - 1125: -22,7 - 1126: -22,8 - 1127: -22,9 - 1128: -22,10 - 1129: -22,11 - 1130: -22,12 - 1131: -22,13 - 1132: -22,14 - 1133: -22,15 - 1134: -22,17 - 1135: -22,20 - 1136: -22,22 - 1137: -22,23 - 1138: -22,24 - 1139: -22,25 - 1140: -22,26 - 1141: -22,27 - 1202: -56,32 - 1203: -56,33 - 1333: -4,33 - 1334: -4,34 - 1335: -4,36 - 1336: -4,37 - 1337: -4,38 - 1338: -4,39 - 1339: -4,40 - 1340: -4,41 - 1341: -4,42 - 1342: -4,44 - 1343: -4,45 - 1344: -4,46 - 1345: -4,47 - 1346: -4,48 - 4720: -28,18 - 4721: -28,17 + 1114: -22,5 + 1115: -22,7 + 1116: -22,8 + 1117: -22,9 + 1118: -22,10 + 1119: -22,11 + 1120: -22,12 + 1121: -22,13 + 1122: -22,14 + 1123: -22,15 + 1124: -22,17 + 1125: -22,20 + 1126: -22,22 + 1127: -22,23 + 1128: -22,24 + 1129: -22,25 + 1130: -22,26 + 1131: -22,27 + 1192: -56,32 + 1193: -56,33 + 1323: -4,33 + 1324: -4,34 + 1325: -4,36 + 1326: -4,37 + 1327: -4,38 + 1328: -4,39 + 1329: -4,40 + 1330: -4,41 + 1331: -4,42 + 1332: -4,44 + 1333: -4,45 + 1334: -4,46 + 1335: -4,47 + 1336: -4,48 + 4707: -28,18 + 4708: -28,17 - node: color: '#D4D4D433' id: HalfTileOverlayGreyscale90 decals: - 748: -5,-58 - 749: -5,-57 - 750: -5,-56 - 751: -5,-55 - 752: -5,-54 - 753: -5,-53 - 754: -5,-51 - 755: -5,-50 - 756: -5,-28 - 757: -5,-27 - 807: -41,-11 - 826: 29,-3 - 827: 29,-4 - 838: 20,-6 - 839: 20,-8 - 840: 20,-9 - 841: 20,-10 - 842: 20,-11 - 843: 20,-12 - 844: 20,-14 - 845: 20,-15 - 846: 20,-16 - 849: 21,-18 - 850: 21,-19 - 851: 21,-20 - 852: 21,-21 - 853: 21,-22 - 854: 21,-23 - 855: 21,-24 - 856: 21,-25 - 857: 21,-26 - 858: 21,-27 - 859: 21,-28 - 860: 21,-29 - 861: 21,-30 - 870: 21,-38 - 871: 21,-39 - 872: 21,-40 - 873: 21,-41 - 874: 21,-42 - 875: 21,-43 - 876: 21,-44 - 877: 21,-45 - 878: 21,-46 - 879: 21,-47 - 880: 21,-48 - 881: 21,-49 - 882: 21,-50 - 883: 21,-51 - 884: 21,-52 - 885: 21,-53 - 886: 21,-54 - 887: 21,-55 - 888: 21,-56 - 889: 21,-57 - 896: 29,-1 - 897: 29,0 - 898: 29,1 + 738: -5,-58 + 739: -5,-57 + 740: -5,-56 + 741: -5,-55 + 742: -5,-54 + 743: -5,-53 + 744: -5,-51 + 745: -5,-50 + 746: -5,-28 + 747: -5,-27 + 797: -41,-11 + 816: 29,-3 + 817: 29,-4 + 828: 20,-6 + 829: 20,-8 + 830: 20,-9 + 831: 20,-10 + 832: 20,-11 + 833: 20,-12 + 834: 20,-14 + 835: 20,-15 + 836: 20,-16 + 839: 21,-18 + 840: 21,-19 + 841: 21,-20 + 842: 21,-21 + 843: 21,-22 + 844: 21,-23 + 845: 21,-24 + 846: 21,-25 + 847: 21,-26 + 848: 21,-27 + 849: 21,-28 + 850: 21,-29 + 851: 21,-30 + 860: 21,-38 + 861: 21,-39 + 862: 21,-40 + 863: 21,-41 + 864: 21,-42 + 865: 21,-43 + 866: 21,-44 + 867: 21,-45 + 868: 21,-46 + 869: 21,-47 + 870: 21,-48 + 871: 21,-49 + 872: 21,-50 + 873: 21,-51 + 874: 21,-52 + 875: 21,-53 + 876: 21,-54 + 877: 21,-55 + 878: 21,-56 + 879: 21,-57 + 886: 29,-1 + 887: 29,0 + 888: 29,1 - node: color: '#D58C18FF' id: HalfTileOverlayGreyscale90 decals: - 4985: 46,-17 + 4963: 46,-17 - node: color: '#DE3A3A96' id: HalfTileOverlayGreyscale90 @@ -5196,279 +5196,279 @@ entities: 327: 47,1 328: 47,0 329: 47,-1 - 363: 46,-11 - 364: 46,-10 - 365: 46,-9 - 366: 46,-8 - 367: 46,-7 - 368: 47,-6 - 369: 47,-5 - 370: 47,-4 - 517: -26,26 - 1212: -61,50 - 1213: -61,49 - 1455: 38,51 - 1456: 38,50 - 1457: 38,49 - 1608: 46,-16 - 1609: 46,-13 + 361: 46,-11 + 362: 46,-10 + 363: 46,-9 + 364: 46,-8 + 365: 46,-7 + 366: 47,-6 + 367: 47,-5 + 368: 47,-4 + 507: -26,26 + 1202: -61,50 + 1203: -61,49 + 1445: 38,51 + 1446: 38,50 + 1447: 38,49 + 1598: 46,-16 + 1599: 46,-13 - node: color: '#EFB34196' id: HalfTileOverlayGreyscale90 decals: - 566: -19,35 - 567: -19,36 - 568: -19,37 - 569: -19,38 - 570: -19,39 - 571: -19,40 - 572: -19,41 - 573: -19,42 - 574: -19,46 - 575: -19,47 - 576: -19,48 - 577: -19,49 - 578: -19,50 - 579: -19,51 - 580: -19,52 - 581: -19,53 - 582: -19,54 + 556: -19,35 + 557: -19,36 + 558: -19,37 + 559: -19,38 + 560: -19,39 + 561: -19,40 + 562: -19,41 + 563: -19,42 + 564: -19,46 + 565: -19,47 + 566: -19,48 + 567: -19,49 + 568: -19,50 + 569: -19,51 + 570: -19,52 + 571: -19,53 + 572: -19,54 - node: color: '#EFB34196' id: LoadingArea decals: - 489: 75,10 - 490: 76,10 + 479: 75,10 + 480: 76,10 - node: angle: 3.141592653589793 rad color: '#EFB34196' id: LoadingArea decals: - 491: 82,10 - 492: 83,10 + 481: 82,10 + 482: 83,10 - node: angle: 4.71238898038469 rad color: '#EFB34196' id: LoadingArea decals: - 1047: 36,29 - 1204: -64,46 - 1205: -64,40 - 1206: -64,38 - 1220: -64,48 + 1037: 36,29 + 1194: -64,46 + 1195: -64,40 + 1196: -64,38 + 1210: -64,48 - node: color: '#334E6DC8' id: LoadingAreaGreyscale decals: - 498: -5,-2 + 488: -5,-2 - node: angle: 3.141592653589793 rad color: '#334E6DC8' id: LoadingAreaGreyscale decals: - 499: -9,-2 + 489: -9,-2 - node: color: '#52B4E996' id: MiniTileCheckerAOverlay decals: - 3621: 26,-35 - 3622: 27,-35 - 3623: 28,-35 - 3624: 29,-35 - 3625: 30,-35 - 3626: 30,-34 - 3627: 29,-34 - 3628: 28,-34 - 3629: 27,-34 - 3630: 26,-34 - 3631: 26,-33 - 3632: 26,-32 - 3633: 27,-32 - 3634: 28,-32 - 3635: 29,-32 - 3636: 30,-32 - 3637: 30,-33 - 3638: 29,-33 - 3639: 28,-33 - 3640: 27,-33 + 3608: 26,-35 + 3609: 27,-35 + 3610: 28,-35 + 3611: 29,-35 + 3612: 30,-35 + 3613: 30,-34 + 3614: 29,-34 + 3615: 28,-34 + 3616: 27,-34 + 3617: 26,-34 + 3618: 26,-33 + 3619: 26,-32 + 3620: 27,-32 + 3621: 28,-32 + 3622: 29,-32 + 3623: 30,-32 + 3624: 30,-33 + 3625: 29,-33 + 3626: 28,-33 + 3627: 27,-33 - node: color: '#334E6DC8' id: MiniTileCheckerBOverlay decals: - 4687: -33,18 - 4688: -33,17 - 4689: -32,17 - 4690: -31,17 - 4691: -31,18 - 4692: -32,18 + 4674: -33,18 + 4675: -33,17 + 4676: -32,17 + 4677: -31,17 + 4678: -31,18 + 4679: -32,18 - node: color: '#FFFFFFFF' id: MiniTileCheckerBOverlay decals: - 3641: 26,-32 - 3642: 26,-33 - 3643: 26,-34 - 3644: 26,-35 - 3645: 27,-35 - 3646: 28,-35 - 3647: 29,-35 - 3648: 30,-35 - 3649: 30,-34 - 3650: 30,-33 - 3651: 30,-32 - 3652: 29,-32 - 3653: 28,-32 - 3654: 27,-32 - 3655: 27,-33 - 3656: 27,-34 - 3657: 28,-34 - 3658: 28,-33 - 3659: 29,-33 - 3660: 29,-34 + 3628: 26,-32 + 3629: 26,-33 + 3630: 26,-34 + 3631: 26,-35 + 3632: 27,-35 + 3633: 28,-35 + 3634: 29,-35 + 3635: 30,-35 + 3636: 30,-34 + 3637: 30,-33 + 3638: 30,-32 + 3639: 29,-32 + 3640: 28,-32 + 3641: 27,-32 + 3642: 27,-33 + 3643: 27,-34 + 3644: 28,-34 + 3645: 28,-33 + 3646: 29,-33 + 3647: 29,-34 - node: color: '#FFFFFFFF' id: MiniTileDarkCornerNe decals: - 3445: 46,36 + 3432: 46,36 - node: color: '#FFFFFFFF' id: MiniTileDarkCornerNw decals: - 3443: 43,36 + 3430: 43,36 - node: color: '#FFFFFFFF' id: MiniTileDarkCornerSe decals: - 3444: 46,33 + 3431: 46,33 - node: color: '#FFFFFFFF' id: MiniTileDarkCornerSw decals: - 3442: 43,33 + 3429: 43,33 - node: color: '#FFFFFFFF' id: MiniTileDarkInnerSw decals: - 3472: -24,-18 + 3459: -24,-18 - node: color: '#FFFFFFFF' id: MiniTileDarkLineE decals: - 3448: 46,35 - 3449: 46,34 + 3435: 46,35 + 3436: 46,34 - node: color: '#FFFFFFFF' id: MiniTileDarkLineN decals: - 3446: 44,36 - 3447: 45,36 + 3433: 44,36 + 3434: 45,36 - node: color: '#FFFFFFFF' id: MiniTileDarkLineS decals: - 3450: 44,33 - 3451: 45,33 - 3473: -25,-18 - 3474: -26,-18 - 3475: -27,-18 - 3483: 25,-1 - 3484: 25,-1 + 3437: 44,33 + 3438: 45,33 + 3460: -25,-18 + 3461: -26,-18 + 3462: -27,-18 + 3470: 25,-1 + 3471: 25,-1 - node: color: '#FFFFFFFF' id: MiniTileDarkLineW decals: - 3452: 43,34 - 3453: 43,35 - 3469: -24,-21 - 3470: -24,-20 - 3471: -24,-19 + 3439: 43,34 + 3440: 43,35 + 3456: -24,-21 + 3457: -24,-20 + 3458: -24,-19 - node: color: '#666C6CA4' id: MiniTileDiagonalCheckerBOverlay decals: - 4295: 58,-37 - 4296: 58,-38 - 4297: 59,-38 - 4298: 59,-37 + 4282: 58,-37 + 4283: 58,-38 + 4284: 59,-38 + 4285: 59,-37 - node: color: '#FFFFFFFF' id: MiniTileSteelEndE decals: - 3455: 41,-9 + 3442: 41,-9 - node: color: '#FFFFFFFF' id: MiniTileSteelEndW decals: - 3454: 39,-9 + 3441: 39,-9 - node: color: '#FFFFFFFF' id: MiniTileSteelLineN decals: - 3456: 40,-9 + 3443: 40,-9 - node: color: '#FFFFFFFF' id: MiniTileSteelLineS decals: - 3457: 40,-9 + 3444: 40,-9 - node: color: '#52B4E996' id: MiniTileWhiteCornerNe decals: - 4894: -40,-43 + 4881: -40,-43 - node: zIndex: 1 color: '#52B4E996' id: MiniTileWhiteCornerNe decals: - 4907: -42,-40 + 4894: -42,-40 - node: color: '#52B4E996' id: MiniTileWhiteCornerNw decals: - 4895: -44,-40 + 4882: -44,-40 - node: color: '#52B4E996' id: MiniTileWhiteCornerSe decals: - 4892: -40,-45 + 4879: -40,-45 - node: color: '#52B4E996' id: MiniTileWhiteCornerSw decals: - 4893: -44,-45 + 4880: -44,-45 - node: color: '#52B4E996' id: MiniTileWhiteInnerNe decals: - 4896: -42,-43 + 4883: -42,-43 - node: color: '#52B4E996' id: MiniTileWhiteLineE decals: - 4902: -42,-41 - 4903: -42,-42 - 4908: -40,-44 + 4889: -42,-41 + 4890: -42,-42 + 4895: -40,-44 - node: color: '#52B4E996' id: MiniTileWhiteLineN decals: - 4900: -43,-40 - 4901: -41,-43 + 4887: -43,-40 + 4888: -41,-43 - node: color: '#52B4E996' id: MiniTileWhiteLineS decals: - 4889: -43,-45 - 4890: -42,-45 - 4891: -41,-45 + 4876: -43,-45 + 4877: -42,-45 + 4878: -41,-45 - node: color: '#52B4E996' id: MiniTileWhiteLineW decals: - 4897: -44,-43 - 4898: -44,-42 - 4899: -44,-41 - 4909: -44,-44 + 4884: -44,-43 + 4885: -44,-42 + 4886: -44,-41 + 4896: -44,-44 - node: color: '#334E6DC8' id: QuarterTileOverlayGreyscale @@ -5525,13 +5525,13 @@ entities: 217: -23,-33 218: -24,-33 231: -26,-34 - 687: 25,10 - 688: 27,10 - 689: 29,10 - 694: 25,6 - 695: 24,7 - 696: 24,9 - 3284: -26,-27 + 677: 25,10 + 678: 27,10 + 679: 29,10 + 684: 25,6 + 685: 24,7 + 686: 24,9 + 3271: -26,-27 - node: color: '#9FED5896' id: QuarterTileOverlayGreyscale @@ -5584,18 +5584,18 @@ entities: color: '#D4D4D433' id: QuarterTileOverlayGreyscale decals: - 768: -11,-28 - 775: -6,-25 - 825: 27,-3 - 891: 19,-58 + 758: -11,-28 + 765: -6,-25 + 815: 27,-3 + 881: 19,-58 - node: color: '#DE3A3A96' id: QuarterTileOverlayGreyscale decals: - 392: 35,-7 - 520: -32,25 - 523: -28,26 - 1465: 38,51 + 384: 35,-7 + 510: -32,25 + 513: -28,26 + 1455: 38,51 - node: color: '#EFB34196' id: QuarterTileOverlayGreyscale @@ -5624,56 +5624,56 @@ entities: 44: 27,0 45: 27,-1 46: 27,-2 - 528: -33,31 - 529: -32,31 - 530: -31,31 - 531: -30,31 - 532: -29,31 - 533: -28,31 - 534: -27,31 - 535: -26,31 - 536: -25,31 - 537: -24,31 - 538: -23,31 - 539: -22,31 - 540: -21,31 - 541: -21,32 - 625: -19,54 - 642: -28,39 - 643: -27,39 - 644: -26,39 - 645: -25,39 - 646: -24,39 - 647: -23,39 - 648: -28,38 - 649: -28,37 - 652: -11,41 - 653: -12,41 - 654: -13,41 - 655: -14,41 - 656: -15,41 - 657: -16,41 - 658: -17,41 - 659: -17,40 - 660: -17,39 - 661: -17,38 - 662: -17,37 - 663: -17,36 - 664: -17,35 - 677: 24,10 - 678: 26,10 - 679: 28,10 - 686: 24,8 - 1404: -6,37 - 1405: -6,36 - 1406: -6,35 - 1407: -6,34 - 1408: -6,33 - 1431: -6,38 - 1432: -6,39 - 1433: -6,40 - 1434: -6,41 - 1435: -6,42 + 518: -33,31 + 519: -32,31 + 520: -31,31 + 521: -30,31 + 522: -29,31 + 523: -28,31 + 524: -27,31 + 525: -26,31 + 526: -25,31 + 527: -24,31 + 528: -23,31 + 529: -22,31 + 530: -21,31 + 531: -21,32 + 615: -19,54 + 632: -28,39 + 633: -27,39 + 634: -26,39 + 635: -25,39 + 636: -24,39 + 637: -23,39 + 638: -28,38 + 639: -28,37 + 642: -11,41 + 643: -12,41 + 644: -13,41 + 645: -14,41 + 646: -15,41 + 647: -16,41 + 648: -17,41 + 649: -17,40 + 650: -17,39 + 651: -17,38 + 652: -17,37 + 653: -17,36 + 654: -17,35 + 667: 24,10 + 668: 26,10 + 669: 28,10 + 676: 24,8 + 1394: -6,37 + 1395: -6,36 + 1396: -6,35 + 1397: -6,34 + 1398: -6,33 + 1421: -6,38 + 1422: -6,39 + 1423: -6,40 + 1424: -6,41 + 1425: -6,42 - node: color: '#52B4E996' id: QuarterTileOverlayGreyscale180 @@ -5698,76 +5698,76 @@ entities: 226: -22,-27 228: -26,-26 229: -27,-26 - 690: 29,9 - 691: 29,7 - 692: 28,6 - 693: 26,6 - 3285: -25,-27 + 680: 29,9 + 681: 29,7 + 682: 28,6 + 683: 26,6 + 3272: -25,-27 - node: color: '#A4610696' id: QuarterTileOverlayGreyscale180 decals: - 1627: 45,26 - 1628: 43,16 + 1616: 45,26 + 1617: 43,16 - node: color: '#D381C996' id: QuarterTileOverlayGreyscale180 decals: - 961: 20,66 - 980: 24,71 + 951: 20,66 + 970: 24,71 - node: color: '#D4D4D419' id: QuarterTileOverlayGreyscale180 decals: - 1169: -22,29 - 1347: -4,49 + 1159: -22,29 + 1337: -4,49 - node: color: '#D4D4D433' id: QuarterTileOverlayGreyscale180 decals: - 758: -5,-26 - 806: -41,-5 - 837: 20,-5 - 869: 21,-36 + 748: -5,-26 + 796: -41,-5 + 827: 20,-5 + 859: 21,-36 - node: color: '#DE3A3A96' id: QuarterTileOverlayGreyscale180 decals: 238: -27,-40 336: 43,-1 - 372: 35,-15 - 373: 36,-17 - 374: 33,-8 - 393: 46,-6 - 524: -26,27 - 525: -30,27 - 1211: -61,51 - 1610: 46,-12 + 369: 35,-15 + 370: 36,-17 + 371: 33,-8 + 385: 46,-6 + 514: -26,27 + 515: -30,27 + 1201: -61,51 + 1600: 46,-12 - node: color: '#EFB34196' id: QuarterTileOverlayGreyscale180 decals: - 622: -19,43 - 650: -24,36 - 651: -23,36 - 665: -17,35 - 666: -16,35 - 667: -15,35 - 668: -14,35 - 669: -13,35 - 670: -13,36 - 671: -13,37 - 672: -13,38 - 673: -12,38 - 674: -11,38 - 680: 29,10 - 681: 29,8 - 682: 29,6 - 683: 27,6 - 684: 25,6 - 685: 24,7 - 1436: -7,43 - 1437: -8,43 + 612: -19,43 + 640: -24,36 + 641: -23,36 + 655: -17,35 + 656: -16,35 + 657: -15,35 + 658: -14,35 + 659: -13,35 + 660: -13,36 + 661: -13,37 + 662: -13,38 + 663: -12,38 + 664: -11,38 + 670: 29,10 + 671: 29,8 + 672: 29,6 + 673: 27,6 + 674: 25,6 + 675: 24,7 + 1426: -7,43 + 1427: -8,43 - node: color: '#52B4E996' id: QuarterTileOverlayGreyscale270 @@ -5782,11 +5782,11 @@ entities: 186: -13,-27 230: -26,-33 232: -26,-34 - 425: 51,-13 - 426: 51,-12 - 1599: 53,-14 - 1600: 52,-14 - 1601: 51,-14 + 415: 51,-13 + 416: 51,-12 + 1589: 53,-14 + 1590: 52,-14 + 1591: 51,-14 - node: color: '#9FED5896' id: QuarterTileOverlayGreyscale270 @@ -5798,35 +5798,35 @@ entities: color: '#A4610696' id: QuarterTileOverlayGreyscale270 decals: - 1629: 44,16 + 1618: 44,16 - node: color: '#D381C996' id: QuarterTileOverlayGreyscale270 decals: - 958: 18,67 - 1013: 11,58 - 1014: 11,57 - 1015: 11,56 - 1016: 11,55 - 1017: 11,54 - 1018: 11,53 - 1019: 12,53 + 948: 18,67 + 1003: 11,58 + 1004: 11,57 + 1005: 11,56 + 1006: 11,55 + 1007: 11,54 + 1008: 11,53 + 1009: 12,53 - node: color: '#D4D4D419' id: QuarterTileOverlayGreyscale270 decals: - 1168: -24,29 - 1312: 18,30 + 1158: -24,29 + 1302: 18,30 - node: color: '#D4D4D433' id: QuarterTileOverlayGreyscale270 decals: - 767: -7,-28 - 769: -11,-27 - 791: -6,-5 - 815: 17,-5 - 816: 18,-6 - 828: 29,-5 + 757: -7,-28 + 759: -11,-27 + 781: -6,-5 + 805: 17,-5 + 806: 18,-6 + 818: 29,-5 - node: color: '#DE3A3A96' id: QuarterTileOverlayGreyscale270 @@ -5863,54 +5863,54 @@ entities: 89: 64,2 237: -25,-40 337: 47,-1 - 375: 47,-6 - 387: 35,-13 - 388: 36,-15 - 389: 34,-8 - 400: 37,-6 - 401: 38,-6 - 402: 39,-6 - 403: 40,-6 - 404: 41,-6 - 405: 42,-6 - 406: 43,-6 - 407: 44,-6 - 408: 44,-7 - 409: 44,-8 - 410: 44,-9 - 411: 44,-10 - 412: 44,-11 - 427: 49,-3 - 428: 50,-3 - 429: 51,-3 - 430: 52,-3 - 431: 53,-3 - 432: 54,-3 - 433: 55,-3 - 434: 56,-3 - 444: 49,-1 - 445: 49,-2 - 446: 58,0 - 447: 58,-1 - 448: 58,-2 - 449: 58,-3 - 450: 59,-3 - 451: 60,-3 - 452: 61,-3 - 453: 62,-3 - 526: -28,27 - 527: -32,27 - 1218: -64,51 + 372: 47,-6 + 379: 35,-13 + 380: 36,-15 + 381: 34,-8 + 392: 37,-6 + 393: 38,-6 + 394: 39,-6 + 395: 40,-6 + 396: 41,-6 + 397: 42,-6 + 398: 43,-6 + 399: 44,-6 + 400: 44,-7 + 401: 44,-8 + 402: 44,-9 + 403: 44,-10 + 404: 44,-11 + 417: 49,-3 + 418: 50,-3 + 419: 51,-3 + 420: 52,-3 + 421: 53,-3 + 422: 54,-3 + 423: 55,-3 + 424: 56,-3 + 434: 49,-1 + 435: 49,-2 + 436: 58,0 + 437: 58,-1 + 438: 58,-2 + 439: 58,-3 + 440: 59,-3 + 441: 60,-3 + 442: 61,-3 + 443: 62,-3 + 516: -28,27 + 517: -32,27 + 1208: -64,51 - node: color: '#EFB34196' id: QuarterTileOverlayGreyscale270 decals: - 1425: -6,51 - 1426: -6,50 - 1427: -6,49 - 1428: -6,48 - 1429: -6,47 - 1430: -6,46 + 1415: -6,51 + 1416: -6,50 + 1417: -6,49 + 1418: -6,48 + 1419: -6,47 + 1420: -6,46 - node: color: '#334E6DC8' id: QuarterTileOverlayGreyscale90 @@ -5934,11 +5934,11 @@ entities: decals: 233: -26,-34 234: -27,-34 - 420: 53,-12 - 421: 52,-12 - 422: 51,-12 - 423: 53,-13 - 424: 53,-14 + 410: 53,-12 + 411: 52,-12 + 412: 51,-12 + 413: 53,-13 + 414: 53,-14 - node: color: '#9FED5896' id: QuarterTileOverlayGreyscale90 @@ -5998,672 +5998,672 @@ entities: 21: 33,20 22: 33,19 90: 33,7 - 1440: 33,23 - 1441: 33,24 - 1442: 33,25 - 1443: 33,26 - 1444: 33,27 - 1445: 33,28 - 1446: 33,29 - 1447: 33,30 - 3984: 33,35 + 1430: 33,23 + 1431: 33,24 + 1432: 33,25 + 1433: 33,26 + 1434: 33,27 + 1435: 33,28 + 1436: 33,29 + 1437: 33,30 + 3971: 33,35 - node: color: '#D381C996' id: QuarterTileOverlayGreyscale90 decals: - 561: 25,51 - 562: 24,51 - 563: 23,51 - 564: 22,51 - 565: 21,51 - 976: 24,66 - 1006: 16,57 - 1007: 16,58 - 1008: 15,58 - 1009: 14,58 - 1010: 13,58 - 1011: 12,58 - 1012: 11,58 - 1382: 20,51 - 1383: 19,51 - 1384: 18,51 - 1385: 17,51 - 1386: 16,51 - 1387: 12,51 - 1388: 11,51 - 1389: 10,51 - 1390: 9,51 - 1391: 8,51 - 1392: 7,51 - 1393: 6,51 - 1394: 5,51 - 1395: 4,51 + 551: 25,51 + 552: 24,51 + 553: 23,51 + 554: 22,51 + 555: 21,51 + 966: 24,66 + 996: 16,57 + 997: 16,58 + 998: 15,58 + 999: 14,58 + 1000: 13,58 + 1001: 12,58 + 1002: 11,58 + 1372: 20,51 + 1373: 19,51 + 1374: 18,51 + 1375: 17,51 + 1376: 16,51 + 1377: 12,51 + 1378: 11,51 + 1379: 10,51 + 1380: 9,51 + 1381: 8,51 + 1382: 7,51 + 1383: 6,51 + 1384: 5,51 + 1385: 4,51 - node: color: '#D4D4D419' id: QuarterTileOverlayGreyscale90 decals: - 1201: -56,31 + 1191: -56,31 - node: color: '#D4D4D433' id: QuarterTileOverlayGreyscale90 decals: - 848: 20,-17 - 862: 21,-31 - 890: 21,-58 + 838: 20,-17 + 852: 21,-31 + 880: 21,-58 - node: color: '#DE3A3A96' id: QuarterTileOverlayGreyscale90 decals: 347: 37,-3 - 376: 46,-12 - 390: 33,-7 - 394: 36,-12 - 395: 36,-11 - 396: 36,-10 - 397: 36,-9 - 398: 36,-8 - 399: 36,-7 - 413: 43,-12 - 414: 42,-12 - 415: 41,-12 - 416: 40,-12 - 417: 39,-12 - 435: 56,-3 - 436: 56,-2 - 437: 56,-1 - 438: 54,-1 - 439: 53,-1 - 440: 52,-1 - 441: 51,-1 - 442: 50,-1 - 443: 49,-1 - 454: 62,-3 - 455: 62,-2 - 456: 62,-1 - 457: 62,0 - 458: 61,0 - 459: 60,0 - 460: 59,0 - 461: 58,0 - 521: -26,25 - 522: -30,26 - 4989: 37,-12 - 4990: 38,-12 + 373: 46,-12 + 382: 33,-7 + 386: 36,-12 + 387: 36,-11 + 388: 36,-10 + 389: 36,-9 + 390: 36,-8 + 391: 36,-7 + 405: 43,-12 + 406: 42,-12 + 407: 41,-12 + 408: 40,-12 + 409: 39,-12 + 425: 56,-3 + 426: 56,-2 + 427: 56,-1 + 428: 54,-1 + 429: 53,-1 + 430: 52,-1 + 431: 51,-1 + 432: 50,-1 + 433: 49,-1 + 444: 62,-3 + 445: 62,-2 + 446: 62,-1 + 447: 62,0 + 448: 61,0 + 449: 60,0 + 450: 59,0 + 451: 58,0 + 511: -26,25 + 512: -30,26 + 4967: 37,-12 + 4968: 38,-12 - node: color: '#EFB34196' id: QuarterTileOverlayGreyscale90 decals: - 542: -19,32 - 543: -19,31 - 544: -18,31 - 545: -17,31 - 546: -16,31 - 547: -15,31 - 548: -14,31 - 549: -13,31 - 550: -12,31 - 551: -11,31 - 552: -10,31 - 553: -9,31 - 554: -8,31 - 621: -19,45 - 626: -20,54 - 1396: 2,51 - 1397: 1,51 - 1398: -1,51 - 1399: -2,51 - 1400: -3,51 - 1401: -4,51 - 1402: -5,51 - 1403: -6,51 - 1438: -7,45 - 1439: -8,45 + 532: -19,32 + 533: -19,31 + 534: -18,31 + 535: -17,31 + 536: -16,31 + 537: -15,31 + 538: -14,31 + 539: -13,31 + 540: -12,31 + 541: -11,31 + 542: -10,31 + 543: -9,31 + 544: -8,31 + 611: -19,45 + 616: -20,54 + 1386: 2,51 + 1387: 1,51 + 1388: -1,51 + 1389: -2,51 + 1390: -3,51 + 1391: -4,51 + 1392: -5,51 + 1393: -6,51 + 1428: -7,45 + 1429: -8,45 - node: color: '#FFFFFFFF' id: Remains decals: - 3318: -29.994413,-49.927315 + 3305: -29.994413,-49.927315 - node: color: '#60E25873' id: Rock01 decals: - 3377: -59.92391,38.210167 - 3378: -59.99335,38.974056 - 3379: -59.99335,39.946278 - 3380: -59.965576,41.015724 - 3381: -59.965576,42.321278 + 3364: -59.92391,38.210167 + 3365: -59.99335,38.974056 + 3366: -59.99335,39.946278 + 3367: -59.965576,41.015724 + 3368: -59.965576,42.321278 - node: color: '#9FED5896' id: Rock01 decals: - 3462: 24.034931,-33.3361 - 3463: 23.951597,-33.863876 + 3449: 24.034931,-33.3361 + 3450: 23.951597,-33.863876 - node: color: '#9FED5873' id: Rock02 decals: - 3311: 78.26405,7.9695406 - 3312: 79.31961,7.983429 - 3313: 79.93072,7.941762 - 3314: 78.26405,7.9556513 + 3298: 78.26405,7.9695406 + 3299: 79.31961,7.983429 + 3300: 79.93072,7.941762 + 3301: 78.26405,7.9556513 - node: color: '#9FED5896' id: Rock02 decals: - 3197: -40.422146,-22.63485 - 3198: -41.797146,-22.468182 - 3199: -42.797146,-21.815403 - 3200: -42.297146,-22.87096 - 3201: -43.158257,-18.593182 - 3202: -43.047146,-19.73207 - 3203: -40.61659,-18.329292 - 3204: -39.922146,-18.940403 - 3205: -39.797146,-22.565403 - 3206: -39.86659,-23.50985 - 3207: -41.283257,-21.787628 - 3208: -42.797146,-20.87096 - 3209: -42.7277,-17.940403 - 3210: -41.061035,-18.12096 - 3211: -41.21381,-19.176516 + 3184: -40.422146,-22.63485 + 3185: -41.797146,-22.468182 + 3186: -42.797146,-21.815403 + 3187: -42.297146,-22.87096 + 3188: -43.158257,-18.593182 + 3189: -43.047146,-19.73207 + 3190: -40.61659,-18.329292 + 3191: -39.922146,-18.940403 + 3192: -39.797146,-22.565403 + 3193: -39.86659,-23.50985 + 3194: -41.283257,-21.787628 + 3195: -42.797146,-20.87096 + 3196: -42.7277,-17.940403 + 3197: -41.061035,-18.12096 + 3198: -41.21381,-19.176516 - node: color: '#9FED5896' id: Rock05 decals: - 3458: 23.909931,-33.22499 - 3459: 24.007153,-33.9611 + 3445: 23.909931,-33.22499 + 3446: 24.007153,-33.9611 - node: color: '#FFFFFFFF' id: Rock05 decals: - 4774: -1.8656068,46.688976 + 4761: -1.8656068,46.688976 - node: color: '#FFFFFFFF' id: Rock07 decals: - 3317: -16.459831,-40.314075 + 3304: -16.459831,-40.314075 - node: cleanable: True color: '#FFFFFFFF' id: Rust decals: - 3292: -64,-33 - 3293: -65,-33 - 3294: -63,-33 + 3279: -64,-33 + 3280: -65,-33 + 3281: -63,-33 - node: color: '#B78FB4FF' id: SpaceStationSign1 decals: - 1543: 4,-4 + 1533: 4,-4 - node: color: '#B78FB4FF' id: SpaceStationSign2 decals: - 1544: 5,-4 + 1534: 5,-4 - node: color: '#B78FB4FF' id: SpaceStationSign3 decals: - 1545: 6,-4 + 1535: 6,-4 - node: color: '#B78FB4FF' id: SpaceStationSign4 decals: - 1546: 7,-4 + 1536: 7,-4 - node: color: '#B78FB4FF' id: SpaceStationSign5 decals: - 1547: 8,-4 + 1537: 8,-4 - node: color: '#B78FB4FF' id: SpaceStationSign6 decals: - 1548: 9,-4 + 1538: 9,-4 - node: color: '#B78FB4FF' id: SpaceStationSign7 decals: - 1549: 10,-4 + 1539: 10,-4 - node: color: '#A4610696' id: StandClear decals: - 3976: 34,20 - 3977: 34,19 - 3978: 34,20 - 3979: 34,19 - 3980: 39,20 - 3981: 39,19 - 3982: 39,20 - 3983: 39,19 + 3963: 34,20 + 3964: 34,19 + 3965: 34,20 + 3966: 34,19 + 3967: 39,20 + 3968: 39,19 + 3969: 39,20 + 3970: 39,19 - node: color: '#EFB34196' id: StandClear decals: - 462: 35,-2 - 463: 36,-2 - 464: 37,-2 - 719: 23,14 - 720: 23,13 - 721: 23,12 - 1043: 37,26 - 1551: 34,14 - 1552: 34,13 - 1553: 34,12 - 1554: 53,-26 - 1555: 53,-27 - 1556: 53,-28 - 1557: 53,-29 - 1558: 53,-30 - 1559: 53,-31 - 1560: 56,-31 - 1561: 56,-30 - 1562: 56,-29 - 1563: 56,-28 - 1564: 56,-27 - 1565: 56,-26 - 1630: -22,50 - 1631: -22,49 - 1632: -22,48 - 1633: -22,47 + 452: 35,-2 + 453: 36,-2 + 454: 37,-2 + 709: 23,14 + 710: 23,13 + 711: 23,12 + 1033: 37,26 + 1541: 34,14 + 1542: 34,13 + 1543: 34,12 + 1544: 53,-26 + 1545: 53,-27 + 1546: 53,-28 + 1547: 53,-29 + 1548: 53,-30 + 1549: 53,-31 + 1550: 56,-31 + 1551: 56,-30 + 1552: 56,-29 + 1553: 56,-28 + 1554: 56,-27 + 1555: 56,-26 + 1619: -22,50 + 1620: -22,49 + 1621: -22,48 + 1622: -22,47 - node: angle: 1.5707963267948966 rad color: '#EFB34196' id: StandClear decals: - 1235: -56,39 - 1236: -56,37 - 1237: -56,46 - 1238: -56,48 + 1225: -56,39 + 1226: -56,37 + 1227: -56,46 + 1228: -56,48 - node: color: '#52B4E996' id: StandClearGreyscale decals: - 4071: -3,-11 - 4072: -3,-12 - 4073: -1,-11 - 4074: -1,-12 - 4075: 15,-11 - 4076: 15,-12 - 4077: 17,-11 - 4078: 17,-12 - 4742: -27,17 - 4743: -27,18 - 4744: -25,18 - 4745: -25,17 + 4058: -3,-11 + 4059: -3,-12 + 4060: -1,-11 + 4061: -1,-12 + 4062: 15,-11 + 4063: 15,-12 + 4064: 17,-11 + 4065: 17,-12 + 4729: -27,17 + 4730: -27,18 + 4731: -25,18 + 4732: -25,17 - node: color: '#D381C996' id: StandClearGreyscale decals: - 3890: 25,54 - 3891: 25,55 - 3892: 21,55 - 3893: 21,54 - 3985: 16,64 - 3986: 18,68 - 3987: 19,68 - 3988: 23,72 - 3989: 24,72 - 4374: 25,79 - 4375: 25,78 - 4376: 28,79 - 4377: 28,78 - 4378: 32,79 - 4379: 32,78 - 4380: 32,77 + 3877: 25,54 + 3878: 25,55 + 3879: 21,55 + 3880: 21,54 + 3972: 16,64 + 3973: 18,68 + 3974: 19,68 + 3975: 23,72 + 3976: 24,72 + 4361: 25,79 + 4362: 25,78 + 4363: 28,79 + 4364: 28,78 + 4365: 32,79 + 4366: 32,78 + 4367: 32,77 - node: color: '#DE3A3A96' id: StandClearGreyscale decals: - 1618: 47,-14 - 1619: 47,-15 - 1620: 50,-18 - 1676: 41,1 - 1677: 39,1 - 1678: 39,-2 - 1679: 41,-2 + 1607: 47,-14 + 1608: 47,-15 + 1609: 50,-18 + 1665: 41,1 + 1666: 39,1 + 1667: 39,-2 + 1668: 41,-2 - node: color: '#D4D4D433' id: ThreeQuarterTileOverlayGreyscale decals: - 808: -43,-3 + 798: -43,-3 - node: color: '#DE3A3A96' id: ThreeQuarterTileOverlayGreyscale decals: 243: -28,-38 - 1460: 35,51 + 1450: 35,51 - node: color: '#D4D4D433' id: ThreeQuarterTileOverlayGreyscale180 decals: - 813: -3,-6 + 803: -3,-6 - node: color: '#DE3A3A96' id: ThreeQuarterTileOverlayGreyscale180 decals: 235: -27,-41 241: -22,-41 - 1214: -61,48 - 1458: 38,48 + 1204: -61,48 + 1448: 38,48 - node: color: '#D4D4D419' id: ThreeQuarterTileOverlayGreyscale270 decals: - 1197: -58,29 + 1187: -58,29 - node: color: '#D4D4D433' id: ThreeQuarterTileOverlayGreyscale270 decals: - 814: 17,-6 + 804: 17,-6 - node: color: '#DE3A3A96' id: ThreeQuarterTileOverlayGreyscale270 decals: 236: -25,-41 242: -28,-41 - 1459: 35,48 + 1449: 35,48 - node: color: '#D4D4D419' id: ThreeQuarterTileOverlayGreyscale90 decals: - 1313: 18,31 + 1303: 18,31 - node: color: '#D4D4D433' id: ThreeQuarterTileOverlayGreyscale90 decals: - 847: 21,-17 + 837: 21,-17 - node: color: '#DE3A3A96' id: ThreeQuarterTileOverlayGreyscale90 decals: 244: -22,-38 - 3485: 47,-3 + 3472: 47,-3 - node: color: '#FFFFFFFF' id: VentSmall decals: - 3571: -5,-1 + 3558: -5,-1 - node: color: '#79150096' id: WarnBox decals: - 1494: -52,-24 - 1495: -52,-25 - 3261: -6,13 - 3262: -6,13 - 3263: -6,14 - 3264: -6,14 - 3265: -6,15 - 3266: -6,15 - 3270: 30,13 - 3271: 30,12 - 3272: 30,13 - 3273: 30,12 + 1484: -52,-24 + 1485: -52,-25 + 3248: -6,13 + 3249: -6,13 + 3250: -6,14 + 3251: -6,14 + 3252: -6,15 + 3253: -6,15 + 3257: 30,13 + 3258: 30,12 + 3259: 30,13 + 3260: 30,12 - node: color: '#52B4E996' id: WarnBoxGreyscale decals: - 1496: -49,-25 - 1497: -49,-24 - 3267: 22,17 - 3268: 22,16 - 3269: 22,15 - 4925: -51,-38 - 4926: -49,-38 + 1486: -49,-25 + 1487: -49,-24 + 3254: 22,17 + 3255: 22,16 + 3256: 22,15 + 4912: -51,-38 + 4913: -49,-38 - node: color: '#EFB34196' id: WarnCornerNE decals: - 1003: 16,56 - 1102: 39,14 - 1424: -7,42 + 993: 16,56 + 1092: 39,14 + 1414: -7,42 - node: color: '#FFFFFFFF' id: WarnCornerNE decals: - 4849: 27,12 - 4853: -25,36 - 4857: 54,-15 + 4836: 27,12 + 4840: -25,36 + 4844: 54,-15 - node: color: '#EFB34196' id: WarnCornerNW decals: - 727: 24,14 - 1099: 35,14 + 717: 24,14 + 1089: 35,14 - node: color: '#FFFFFFFF' id: WarnCornerNW decals: - 4681: -29,16 - 4848: 25,12 - 4854: -28,36 - 4855: -10,41 + 4668: -29,16 + 4835: 25,12 + 4841: -28,36 + 4842: -10,41 - node: color: '#EFB34196' id: WarnCornerSE decals: - 1100: 39,12 - 1259: -22,32 - 1418: -7,46 - 3259: -2,43 + 1090: 39,12 + 1249: -22,32 + 1408: -7,46 + 3246: -2,43 - node: color: '#FFFFFFFF' id: WarnCornerSE decals: - 4666: 10,72 - 4858: 54,-17 + 4653: 10,72 + 4845: 54,-17 - node: color: '#EFB34196' id: WarnCornerSW decals: - 1101: 35,12 - 1260: -18,32 + 1091: 35,12 + 1250: -18,32 - node: color: '#FFFFFFFF' id: WarnCornerSW decals: - 4684: -29,19 - 4856: -10,40 + 4671: -29,19 + 4843: -10,40 - node: color: '#EFB34196' id: WarnCornerSmallNE decals: - 1489: -2,57 + 1479: -2,57 - node: color: '#FFFFFFFF' id: WarnCornerSmallNE decals: - 4818: 73,-5 - 4819: 73,-12 - 4879: -40,26 + 4805: 73,-5 + 4806: 73,-12 + 4866: -40,26 - node: color: '#EFB34196' id: WarnCornerSmallNW decals: - 641: -23,48 - 1488: 2,57 + 631: -23,48 + 1478: 2,57 - node: color: '#FFFFFFFF' id: WarnCornerSmallNW decals: - 4820: 85,-5 - 4821: 85,-12 - 4880: -41,26 + 4807: 85,-5 + 4808: 85,-12 + 4867: -41,26 - node: color: '#EFB34196' id: WarnCornerSmallSE decals: - 1486: -2,61 - 3246: 49,-20 - 3260: -2,44 + 1476: -2,61 + 3233: 49,-20 + 3247: -2,44 - node: color: '#FFFFFFFF' id: WarnCornerSmallSE decals: - 4816: 73,-3 - 4817: 73,-10 + 4803: 73,-3 + 4804: 73,-10 - node: color: '#EFB34196' id: WarnCornerSmallSW decals: - 999: 16,56 - 1487: 2,61 - 3247: 51,-20 + 989: 16,56 + 1477: 2,61 + 3234: 51,-20 - node: color: '#FFFFFFFF' id: WarnCornerSmallSW decals: - 4822: 85,-10 - 4823: 85,-3 + 4809: 85,-10 + 4810: 85,-3 - node: color: '#EFB34196' id: WarnEndE decals: - 1681: -19,-23 + 1670: -19,-23 - node: color: '#FFFFFFFF' id: WarnEndE decals: - 4665: 21,74 + 4652: 21,74 - node: color: '#FFFFFFFF' id: WarnEndN decals: - 4860: 40,-10 + 4847: 40,-10 - node: color: '#EFB34196' id: WarnEndS decals: - 3243: 49,-21 - 3244: 51,-21 + 3230: 49,-21 + 3231: 51,-21 - node: color: '#EFB34196' id: WarnEndW decals: - 1000: 13,56 - 1680: -20,-23 + 990: 13,56 + 1669: -20,-23 - node: color: '#FFFFFFFF' id: WarnEndW decals: - 4664: 20,74 + 4651: 20,74 - node: color: '#334E6DC8' id: WarnFullGreyscale decals: - 4740: -26,17 - 4741: -26,18 + 4727: -26,17 + 4728: -26,18 - node: color: '#EFB34196' id: WarnLineE decals: - 474: 74,14 - 475: 74,13 - 476: 74,12 - 477: 81,15 - 478: 81,14 - 479: 81,13 - 480: 81,12 - 487: 74,15 - 637: -23,50 - 638: -23,49 - 639: -23,48 - 640: -23,47 - 675: -10,38 - 676: -10,39 - 722: 22,14 - 723: 22,13 - 724: 22,12 - 991: 24,69 - 992: 20,60 - 1004: 16,55 - 1020: 17,65 - 1021: 17,64 - 1022: 17,63 - 1028: 24,69 - 1031: 20,60 - 1032: 15,64 - 1110: 39,13 - 1264: -22,33 - 1409: -7,38 - 1410: -7,39 - 1411: -7,40 - 1412: -7,41 - 1413: -7,47 - 1414: -7,48 - 1415: -7,49 - 1416: -7,50 - 1417: -7,51 - 1468: 33,12 - 1469: 33,13 - 1470: 33,14 - 1471: 33,12 - 1472: 33,13 - 1473: 33,14 - 1477: -2,58 - 1478: -2,59 - 1479: -2,60 - 1533: 47,33 - 1534: 47,34 - 1598: 62,-21 - 1612: 46,-14 - 1613: 46,-15 - 1614: 46,-14 - 1615: 46,-15 - 1623: 51,-17 - 1624: 51,-16 - 3248: 51,-20 - 3249: 51,-19 - 3894: 24,54 - 3895: 24,55 - 3898: 20,54 - 3899: 20,55 - 3900: 20,54 - 3901: 20,55 - 4350: 24,79 - 4351: 24,79 - 4352: 24,78 - 4353: 24,78 - 4366: 27,79 - 4367: 27,79 - 4368: 27,78 - 4369: 27,78 + 464: 74,14 + 465: 74,13 + 466: 74,12 + 467: 81,15 + 468: 81,14 + 469: 81,13 + 470: 81,12 + 477: 74,15 + 627: -23,50 + 628: -23,49 + 629: -23,48 + 630: -23,47 + 665: -10,38 + 666: -10,39 + 712: 22,14 + 713: 22,13 + 714: 22,12 + 981: 24,69 + 982: 20,60 + 994: 16,55 + 1010: 17,65 + 1011: 17,64 + 1012: 17,63 + 1018: 24,69 + 1021: 20,60 + 1022: 15,64 + 1100: 39,13 + 1254: -22,33 + 1399: -7,38 + 1400: -7,39 + 1401: -7,40 + 1402: -7,41 + 1403: -7,47 + 1404: -7,48 + 1405: -7,49 + 1406: -7,50 + 1407: -7,51 + 1458: 33,12 + 1459: 33,13 + 1460: 33,14 + 1461: 33,12 + 1462: 33,13 + 1463: 33,14 + 1467: -2,58 + 1468: -2,59 + 1469: -2,60 + 1523: 47,33 + 1524: 47,34 + 1588: 62,-21 + 1601: 46,-14 + 1602: 46,-15 + 1603: 46,-14 + 1604: 46,-15 + 1612: 51,-17 + 1613: 51,-16 + 3235: 51,-20 + 3236: 51,-19 + 3881: 24,54 + 3882: 24,55 + 3885: 20,54 + 3886: 20,55 + 3887: 20,54 + 3888: 20,55 + 4337: 24,79 + 4338: 24,79 + 4339: 24,78 + 4340: 24,78 + 4353: 27,79 + 4354: 27,79 + 4355: 27,78 + 4356: 27,78 - node: color: '#FFFFFFFF' id: WarnLineE decals: - 4457: 19,15 - 4458: 19,16 - 4459: 19,17 - 4668: 10,73 - 4669: 10,74 - 4670: 10,75 - 4671: 10,76 - 4814: 73,-11 - 4815: 73,-4 - 4828: -54,47 - 4829: -54,46 - 4830: -54,39 - 4831: -54,38 - 4859: 54,-16 - 4864: -40,27 + 4444: 19,15 + 4445: 19,16 + 4446: 19,17 + 4655: 10,73 + 4656: 10,74 + 4657: 10,75 + 4658: 10,76 + 4801: 73,-11 + 4802: 73,-4 + 4815: -54,47 + 4816: -54,46 + 4817: -54,39 + 4818: -54,38 + 4846: 54,-16 + 4851: -40,27 - node: color: '#DE3A3A96' id: WarnLineGreyscaleN decals: - 1570: 64,-22 - 1571: 65,-22 - 1572: 66,-22 - 1573: 67,-22 - 1574: 64,-21 - 1575: 64,-21 - 1576: 65,-21 - 1577: 65,-21 - 1578: 66,-21 - 1579: 66,-21 - 1580: 67,-21 - 1581: 67,-21 + 1560: 64,-22 + 1561: 65,-22 + 1562: 66,-22 + 1563: 67,-22 + 1564: 64,-21 + 1565: 64,-21 + 1566: 65,-21 + 1567: 65,-21 + 1568: 66,-21 + 1569: 66,-21 + 1570: 67,-21 + 1571: 67,-21 - node: color: '#D381C996' id: WarnLineGreyscaleS @@ -6677,94 +6677,94 @@ entities: color: '#DE3A3A96' id: WarnLineGreyscaleS decals: - 1566: 64,-20 - 1567: 65,-20 - 1568: 66,-20 - 1569: 67,-20 - 1582: 64,-21 - 1583: 64,-21 - 1584: 65,-21 - 1585: 65,-21 - 1586: 66,-21 - 1587: 66,-21 - 1588: 67,-21 - 1589: 67,-21 + 1556: 64,-20 + 1557: 65,-20 + 1558: 66,-20 + 1559: 67,-20 + 1572: 64,-21 + 1573: 64,-21 + 1574: 65,-21 + 1575: 65,-21 + 1576: 66,-21 + 1577: 66,-21 + 1578: 67,-21 + 1579: 67,-21 - node: color: '#EFB34196' id: WarnLineN decals: 311: -41,-26 - 623: -21,55 - 624: -20,55 - 985: 18,69 - 986: 19,69 - 997: 15,56 - 998: 14,56 - 1106: 36,12 - 1107: 37,12 - 1108: 38,12 - 1222: -62,53 - 1223: -58,53 - 1266: -27,32 - 1267: -26,32 - 1268: -25,32 - 1269: -24,32 - 1270: -23,32 - 1271: -17,32 - 1272: -16,32 - 1273: -15,32 - 1274: -14,32 - 1275: -13,32 - 1419: -8,46 - 1448: -23,55 - 1449: -24,55 - 1450: -25,55 - 1451: -26,55 - 1452: -27,55 - 1453: -28,55 - 1454: -29,55 - 1475: 0,52 - 1480: -1,61 - 1481: 0,61 - 1482: 1,61 - 1492: 23,54 - 1493: 24,54 - 1590: 64,-22 - 1591: 65,-22 - 1592: 66,-22 - 1593: 67,-22 - 1621: 50,-17 - 1664: -43,-17 - 1665: -42,-17 - 1666: -41,-17 - 3245: 50,-20 - 3254: 2,44 - 3255: 3,44 - 3256: 1,44 - 3257: 0,44 - 3258: -1,44 - 3295: 22,54 + 613: -21,55 + 614: -20,55 + 975: 18,69 + 976: 19,69 + 987: 15,56 + 988: 14,56 + 1096: 36,12 + 1097: 37,12 + 1098: 38,12 + 1212: -62,53 + 1213: -58,53 + 1256: -27,32 + 1257: -26,32 + 1258: -25,32 + 1259: -24,32 + 1260: -23,32 + 1261: -17,32 + 1262: -16,32 + 1263: -15,32 + 1264: -14,32 + 1265: -13,32 + 1409: -8,46 + 1438: -23,55 + 1439: -24,55 + 1440: -25,55 + 1441: -26,55 + 1442: -27,55 + 1443: -28,55 + 1444: -29,55 + 1465: 0,52 + 1470: -1,61 + 1471: 0,61 + 1472: 1,61 + 1482: 23,54 + 1483: 24,54 + 1580: 64,-22 + 1581: 65,-22 + 1582: 66,-22 + 1583: 67,-22 + 1610: 50,-17 + 1653: -43,-17 + 1654: -42,-17 + 1655: -41,-17 + 3232: 50,-20 + 3241: 2,44 + 3242: 3,44 + 3243: 1,44 + 3244: 0,44 + 3245: -1,44 + 3282: 22,54 - node: color: '#FFFFFFFF' id: WarnLineN decals: - 4667: 9,72 - 4685: -28,19 - 4824: 88,3 - 4836: -47,-50 - 4837: -48,-50 - 4838: 10,-51 - 4839: 9,-51 - 4861: 55,0 - 4862: 56,0 - 4871: -44,26 - 4872: -43,26 - 4873: -42,26 - 4874: -41,26 - 4875: -40,26 - 4876: -39,26 - 4877: -38,26 - 4878: -37,26 + 4654: 9,72 + 4672: -28,19 + 4811: 88,3 + 4823: -47,-50 + 4824: -48,-50 + 4825: 10,-51 + 4826: 9,-51 + 4848: 55,0 + 4849: 56,0 + 4858: -44,26 + 4859: -43,26 + 4860: -42,26 + 4861: -41,26 + 4862: -40,26 + 4863: -39,26 + 4864: -38,26 + 4865: -37,26 - node: color: '#EFB34196' id: WarnLineS @@ -6772,391 +6772,391 @@ entities: 308: -40,-27 309: -40,-28 310: -40,-29 - 481: 77,14 - 482: 77,13 - 483: 77,12 - 484: 84,15 - 485: 84,13 - 486: 84,12 - 488: 77,15 - 558: -8,45 - 559: -8,44 - 560: -8,43 - 635: -23,49 - 636: -23,50 - 725: 24,13 - 726: 24,12 - 993: 18,55 - 994: 18,56 - 995: 16,53 - 996: 16,55 - 1005: 16,54 - 1023: 17,64 - 1029: 18,56 - 1030: 18,55 - 1033: 14,63 - 1034: 14,64 - 1035: 14,65 - 1109: 35,13 - 1265: -18,33 - 1420: -8,45 - 1421: -8,44 - 1422: -8,43 - 1483: 2,60 - 1484: 2,59 - 1485: 2,58 - 1616: 48,-15 - 1617: 48,-14 - 3250: 49,-20 - 3251: 49,-19 - 3252: 30,66 - 3253: 30,66 - 3305: 84,14 - 3896: 22,55 - 3897: 22,54 - 4354: 29,79 - 4355: 29,79 - 4356: 29,78 - 4357: 29,78 - 4370: 26,79 - 4371: 26,79 - 4372: 26,78 - 4373: 26,78 - 4415: 26,54 - 4416: 26,55 + 471: 77,14 + 472: 77,13 + 473: 77,12 + 474: 84,15 + 475: 84,13 + 476: 84,12 + 478: 77,15 + 548: -8,45 + 549: -8,44 + 550: -8,43 + 625: -23,49 + 626: -23,50 + 715: 24,13 + 716: 24,12 + 983: 18,55 + 984: 18,56 + 985: 16,53 + 986: 16,55 + 995: 16,54 + 1013: 17,64 + 1019: 18,56 + 1020: 18,55 + 1023: 14,63 + 1024: 14,64 + 1025: 14,65 + 1099: 35,13 + 1255: -18,33 + 1410: -8,45 + 1411: -8,44 + 1412: -8,43 + 1473: 2,60 + 1474: 2,59 + 1475: 2,58 + 1605: 48,-15 + 1606: 48,-14 + 3237: 49,-20 + 3238: 49,-19 + 3239: 30,66 + 3240: 30,66 + 3292: 84,14 + 3883: 22,55 + 3884: 22,54 + 4341: 29,79 + 4342: 29,79 + 4343: 29,78 + 4344: 29,78 + 4357: 26,79 + 4358: 26,79 + 4359: 26,78 + 4360: 26,78 + 4402: 26,54 + 4403: 26,55 - node: color: '#FFFFFFFF' id: WarnLineS decals: - 4682: -29,15 - 4683: -29,20 - 4812: 85,-11 - 4813: 85,-4 - 4826: -54,46 - 4827: -54,47 - 4832: -54,39 - 4833: -54,38 - 4863: -41,27 + 4669: -29,15 + 4670: -29,20 + 4799: 85,-11 + 4800: 85,-4 + 4813: -54,46 + 4814: -54,47 + 4819: -54,39 + 4820: -54,38 + 4850: -41,27 - node: color: '#EFB34196' id: WarnLineW decals: - 471: 35,-2 - 472: 36,-2 - 473: 37,-2 - 555: -21,33 - 556: -20,33 - 557: -19,33 - 627: -21,56 - 628: -20,56 - 629: -29,48 - 630: -28,48 - 631: -27,48 - 632: -26,48 - 633: -25,48 - 634: -24,48 - 697: 25,14 - 698: 26,14 - 699: 27,14 - 700: 28,14 - 981: 18,69 - 982: 19,69 - 983: 20,69 - 984: 21,69 - 987: 18,67 - 988: 19,67 - 989: 23,71 - 990: 24,71 - 1001: 14,56 - 1002: 15,56 - 1024: 18,67 - 1025: 19,67 - 1026: 23,71 - 1027: 24,71 - 1103: 36,14 - 1104: 37,14 - 1105: 38,14 - 1221: -62,51 - 1261: -21,33 - 1262: -20,33 - 1263: -19,33 - 1423: -8,42 - 1474: 0,53 - 1476: -1,57 - 1490: 23,55 - 1491: 24,55 - 1594: 64,-20 - 1595: 65,-20 - 1596: 66,-20 - 1597: 67,-20 - 1622: 50,-19 - 3296: 22,55 - 3836: 0,57 - 3837: 1,57 + 461: 35,-2 + 462: 36,-2 + 463: 37,-2 + 545: -21,33 + 546: -20,33 + 547: -19,33 + 617: -21,56 + 618: -20,56 + 619: -29,48 + 620: -28,48 + 621: -27,48 + 622: -26,48 + 623: -25,48 + 624: -24,48 + 687: 25,14 + 688: 26,14 + 689: 27,14 + 690: 28,14 + 971: 18,69 + 972: 19,69 + 973: 20,69 + 974: 21,69 + 977: 18,67 + 978: 19,67 + 979: 23,71 + 980: 24,71 + 991: 14,56 + 992: 15,56 + 1014: 18,67 + 1015: 19,67 + 1016: 23,71 + 1017: 24,71 + 1093: 36,14 + 1094: 37,14 + 1095: 38,14 + 1211: -62,51 + 1251: -21,33 + 1252: -20,33 + 1253: -19,33 + 1413: -8,42 + 1464: 0,53 + 1466: -1,57 + 1480: 23,55 + 1481: 24,55 + 1584: 64,-20 + 1585: 65,-20 + 1586: 66,-20 + 1587: 67,-20 + 1611: 50,-19 + 3283: 22,55 + 3823: 0,57 + 3824: 1,57 - node: color: '#FFFFFFFF' id: WarnLineW decals: - 4672: 18,71 - 4673: 19,71 - 4674: 20,71 - 4675: 21,71 - 4676: 18,69 - 4677: 19,69 - 4678: 20,69 - 4679: 21,69 - 4686: -28,16 - 4784: 86,-3 - 4785: 85,-3 - 4786: 73,-3 - 4787: 72,-3 - 4825: 88,3 - 4834: -47,-50 - 4835: -48,-50 - 4840: 10,-51 - 4841: 9,-51 - 4850: 26,12 - 4851: -27,36 - 4852: -26,36 - 4865: -44,26 - 4866: -43,26 - 4867: -42,26 - 4868: -39,26 - 4869: -38,26 - 4870: -37,26 + 4659: 18,71 + 4660: 19,71 + 4661: 20,71 + 4662: 21,71 + 4663: 18,69 + 4664: 19,69 + 4665: 20,69 + 4666: 21,69 + 4673: -28,16 + 4771: 86,-3 + 4772: 85,-3 + 4773: 73,-3 + 4774: 72,-3 + 4812: 88,3 + 4821: -47,-50 + 4822: -48,-50 + 4827: 10,-51 + 4828: 9,-51 + 4837: 26,12 + 4838: -27,36 + 4839: -26,36 + 4852: -44,26 + 4853: -43,26 + 4854: -42,26 + 4855: -39,26 + 4856: -38,26 + 4857: -37,26 - node: color: '#FFFFFFFF' id: WoodTrimThinCornerNe decals: - 3464: -25,-19 - 3559: 13,-18 + 3451: -25,-19 + 3546: 13,-18 - node: color: '#FFFFFFFF' id: WoodTrimThinCornerNw decals: - 3686: 30,-18 + 3673: 30,-18 - node: color: '#FFFFFFFF' id: WoodTrimThinCornerSe decals: - 3558: 13,-19 + 3545: 13,-19 - node: color: '#FFFFFFFF' id: WoodTrimThinCornerSw decals: - 3563: 9,-19 - 3691: 30,-23 + 3550: 9,-19 + 3678: 30,-23 - node: color: '#FFFFFFFF' id: WoodTrimThinEndN decals: - 3561: 9,-17 + 3548: 9,-17 - node: color: '#FFFFFFFF' id: WoodTrimThinInnerNe decals: - 3565: 9,-18 - 3819: -11,33 + 3552: 9,-18 + 3806: -11,33 - node: color: '#FFFFFFFF' id: WoodTrimThinInnerNw decals: - 3817: -8,33 + 3804: -8,33 - node: color: '#FFFFFFFF' id: WoodTrimThinInnerSe decals: - 3818: -11,36 - 4311: -18,-10 - 4312: -18,-9 + 3805: -11,36 + 4298: -18,-10 + 4299: -18,-9 - node: color: '#FFFFFFFF' id: WoodTrimThinInnerSw decals: - 3816: -8,36 + 3803: -8,36 - node: color: '#FFFFFFFF' id: WoodTrimThinLineE decals: - 3467: -25,-20 - 3468: -25,-21 - 3810: -11,34 - 3811: -11,35 + 3454: -25,-20 + 3455: -25,-21 + 3797: -11,34 + 3798: -11,35 - node: color: '#FFFFFFFF' id: WoodTrimThinLineN decals: - 3422: -2,-46 - 3423: -1,-46 - 3424: 0,-46 - 3425: 1,-46 - 3426: -3,-42 - 3427: -2,-42 - 3428: -1,-42 - 3429: 0,-42 - 3430: 1,-42 - 3465: -26,-19 - 3466: -27,-19 - 3482: -21,-13 - 3560: 12,-18 - 3687: 31,-18 - 3688: 32,-18 - 3689: 33,-18 - 3690: 34,-18 - 3808: -10,33 - 3809: -9,33 + 3409: -2,-46 + 3410: -1,-46 + 3411: 0,-46 + 3412: 1,-46 + 3413: -3,-42 + 3414: -2,-42 + 3415: -1,-42 + 3416: 0,-42 + 3417: 1,-42 + 3452: -26,-19 + 3453: -27,-19 + 3469: -21,-13 + 3547: 12,-18 + 3674: 31,-18 + 3675: 32,-18 + 3676: 33,-18 + 3677: 34,-18 + 3795: -10,33 + 3796: -9,33 - node: color: '#FFFFFFFF' id: WoodTrimThinLineS decals: - 3431: -3,-44 - 3432: -2,-44 - 3433: -1,-44 - 3434: 0,-44 - 3435: 1,-44 - 3436: -3,-48 - 3437: -2,-48 - 3438: -1,-48 - 3439: 0,-48 - 3440: 1,-48 - 3441: -12,-32 - 3564: 12,-19 - 3692: 31,-23 - 3693: 32,-23 - 3694: 33,-23 - 3695: 34,-23 - 3814: -10,36 - 3815: -9,36 + 3418: -3,-44 + 3419: -2,-44 + 3420: -1,-44 + 3421: 0,-44 + 3422: 1,-44 + 3423: -3,-48 + 3424: -2,-48 + 3425: -1,-48 + 3426: 0,-48 + 3427: 1,-48 + 3428: -12,-32 + 3551: 12,-19 + 3679: 31,-23 + 3680: 32,-23 + 3681: 33,-23 + 3682: 34,-23 + 3801: -10,36 + 3802: -9,36 - node: color: '#FFFFFFFF' id: WoodTrimThinLineW decals: - 3416: -3,-42 - 3417: -3,-43 - 3418: -3,-44 - 3419: -3,-46 - 3420: -3,-47 - 3421: -3,-48 - 3476: -21,-13 - 3477: -21,-14 - 3478: -21,-15 - 3479: -21,-16 - 3480: -21,-17 - 3481: -21,-18 - 3562: 9,-18 - 3681: 30,-22 - 3682: 30,-21 - 3683: 30,-20 - 3684: 30,-19 - 3685: 23,-21 - 3812: -8,34 - 3813: -8,35 + 3403: -3,-42 + 3404: -3,-43 + 3405: -3,-44 + 3406: -3,-46 + 3407: -3,-47 + 3408: -3,-48 + 3463: -21,-13 + 3464: -21,-14 + 3465: -21,-15 + 3466: -21,-16 + 3467: -21,-17 + 3468: -21,-18 + 3549: 9,-18 + 3668: 30,-22 + 3669: 30,-21 + 3670: 30,-20 + 3671: 30,-19 + 3672: 23,-21 + 3799: -8,34 + 3800: -8,35 - node: color: '#9FED5896' id: bushsnowa1 decals: - 3183: -41.436035,-22.25985 - 3184: -41.283257,-23.079292 - 3185: -40.255478,-23.398739 - 3186: -40.019367,-18.10707 - 3187: -41.005478,-18.926516 - 3188: -43.061035,-18.00985 - 3189: -43.130478,-18.718182 - 3190: -43.07492,-19.940405 - 3191: -43.1027,-21.551517 - 3192: -41.880478,-23.204292 - 3193: -40.172146,-23.787628 - 3194: -41.11659,-23.75985 - 3195: -39.880478,-22.273739 - 3196: -40.130478,-19.079292 + 3170: -41.436035,-22.25985 + 3171: -41.283257,-23.079292 + 3172: -40.255478,-23.398739 + 3173: -40.019367,-18.10707 + 3174: -41.005478,-18.926516 + 3175: -43.061035,-18.00985 + 3176: -43.130478,-18.718182 + 3177: -43.07492,-19.940405 + 3178: -43.1027,-21.551517 + 3179: -41.880478,-23.204292 + 3180: -40.172146,-23.787628 + 3181: -41.11659,-23.75985 + 3182: -39.880478,-22.273739 + 3183: -40.130478,-19.079292 - node: color: '#9FED5896' id: bushsnowb3 decals: - 3460: 24.076597,-33.183323 - 3461: 23.937708,-34.09999 + 3447: 24.076597,-33.183323 + 3448: 23.937708,-34.09999 - node: color: '#A4DF8296' id: bushsnowb3 decals: - 1694: -7.3679967,-22.387566 - 1695: -9.20133,-22.69312 - 1696: -9.062441,-23.859787 - 1697: -7.2291064,-23.637566 - 1698: -8.423552,-23.276455 + 1683: -7.3679967,-22.387566 + 1684: -9.20133,-22.69312 + 1685: -9.062441,-23.859787 + 1686: -7.2291064,-23.637566 + 1687: -8.423552,-23.276455 - node: color: '#9FED5896' id: grasssnow07 decals: - 3309: 78.19461,7.941762 - 3310: 79.52794,7.9139843 + 3296: 78.19461,7.941762 + 3297: 79.52794,7.9139843 - node: color: '#60AC5863' id: grasssnow09 decals: - 3328: -12.979685,-40.336945 - 3329: -11.368574,-40.225834 - 3330: -11.4657955,-39.059166 - 3331: -13.701906,-39.198055 - 3332: -12.507462,-39.503613 - 3333: -12.799128,-40.614723 + 3315: -12.979685,-40.336945 + 3316: -11.368574,-40.225834 + 3317: -11.4657955,-39.059166 + 3318: -13.701906,-39.198055 + 3319: -12.507462,-39.503613 + 3320: -12.799128,-40.614723 - node: color: '#9FED587C' id: grasssnow09 decals: - 3327: -13.604685,-40.086945 + 3314: -13.604685,-40.086945 - node: color: '#60FF5D92' id: grasssnow10 decals: - 4511: -19.105085,3.5241327 - 4512: -19.957012,2.1050215 - 4513: -19.829224,0.3878975 + 4498: -19.105085,3.5241327 + 4499: -19.957012,2.1050215 + 4500: -19.829224,0.3878975 - node: color: '#9FED587C' id: grasssnow10 decals: - 3319: -13.5907955,-40.670277 - 3320: -12.229685,-40.475834 - 3321: -11.354685,-39.475834 - 3322: -13.813017,-39.350834 - 3323: -12.826906,-39.614723 - 3324: -11.271351,-40.698055 - 3325: -11.41024,-38.989723 - 3326: -12.979685,-38.961945 + 3306: -13.5907955,-40.670277 + 3307: -12.229685,-40.475834 + 3308: -11.354685,-39.475834 + 3309: -13.813017,-39.350834 + 3310: -12.826906,-39.614723 + 3311: -11.271351,-40.698055 + 3312: -11.41024,-38.989723 + 3313: -12.979685,-38.961945 - node: color: '#A4DF8296' id: grasssnow10 decals: - 1684: -7.4220443,-1.9321766 + 1673: -7.4220443,-1.9321766 - node: color: '#A4DF8296' id: grasssnowc1 decals: - 1685: -6.4220433,-1.9599552 + 1674: -6.4220433,-1.9599552 - node: color: '#60E2588B' id: grasssnowc3 decals: - 3348: -15.396351,-36.573055 - 3349: -17.549128,-36.656387 - 3350: -17.604685,-37.795277 - 3351: -16.007462,-37.8925 - 3352: -16.354685,-36.698055 - 3353: -15.299128,-37.6425 - 3354: -16.118574,-37.031387 + 3335: -15.396351,-36.573055 + 3336: -17.549128,-36.656387 + 3337: -17.604685,-37.795277 + 3338: -16.007462,-37.8925 + 3339: -16.354685,-36.698055 + 3340: -15.299128,-37.6425 + 3341: -16.118574,-37.031387 - node: cleanable: True color: '#800080FF' id: prolizard decals: - 4680: 27.413673,-33.665314 + 4667: 27.413673,-33.665314 - node: color: '#9FED5896' id: shop decals: - 3286: -4,-42 - 3287: -4,-48 + 3273: -4,-42 + 3274: -4,-48 type: DecalGrid - version: 2 data: @@ -38285,6 +38285,16 @@ entities: - pos: 16.5,-18.5 parent: 82 type: Transform + - uid: 22707 + components: + - pos: 40.5,-19.5 + parent: 82 + type: Transform + - uid: 22712 + components: + - pos: 40.5,-20.5 + parent: 82 + type: Transform - uid: 22740 components: - pos: -36.5,37.5 @@ -46965,6 +46975,11 @@ entities: - pos: -3.5,-13.5 parent: 82 type: Transform + - uid: 22959 + components: + - pos: -25.5,45.5 + parent: 82 + type: Transform - uid: 22970 components: - pos: -2.5,-13.5 @@ -47359,6 +47374,51 @@ entities: - pos: -34.5,-25.5 parent: 82 type: Transform + - uid: 2731 + components: + - pos: -22.5,53.5 + parent: 82 + type: Transform + - uid: 2757 + components: + - pos: -27.5,56.5 + parent: 82 + type: Transform + - uid: 2819 + components: + - pos: -23.5,53.5 + parent: 82 + type: Transform + - uid: 2839 + components: + - pos: -24.5,53.5 + parent: 82 + type: Transform + - uid: 2846 + components: + - pos: -25.5,53.5 + parent: 82 + type: Transform + - uid: 2847 + components: + - pos: -26.5,53.5 + parent: 82 + type: Transform + - uid: 2869 + components: + - pos: -27.5,55.5 + parent: 82 + type: Transform + - uid: 3147 + components: + - pos: -27.5,53.5 + parent: 82 + type: Transform + - uid: 3148 + components: + - pos: -27.5,54.5 + parent: 82 + type: Transform - uid: 3869 components: - pos: -11.5,4.5 @@ -47494,6 +47554,11 @@ entities: - pos: -11.5,-5.5 parent: 82 type: Transform + - uid: 5620 + components: + - pos: -26.5,57.5 + parent: 82 + type: Transform - uid: 5644 components: - pos: -34.5,64.5 @@ -47754,6 +47819,11 @@ entities: - pos: -35.5,64.5 parent: 82 type: Transform + - uid: 5729 + components: + - pos: -27.5,57.5 + parent: 82 + type: Transform - uid: 5732 components: - pos: -22.5,56.5 @@ -47761,47 +47831,12 @@ entities: type: Transform - uid: 5733 components: - - pos: -22.5,55.5 + - pos: -27.5,59.5 parent: 82 type: Transform - uid: 5734 components: - - pos: -22.5,54.5 - parent: 82 - type: Transform - - uid: 5735 - components: - - pos: -21.5,54.5 - parent: 82 - type: Transform - - uid: 5736 - components: - - pos: -20.5,54.5 - parent: 82 - type: Transform - - uid: 5737 - components: - - pos: -20.5,55.5 - parent: 82 - type: Transform - - uid: 5738 - components: - - pos: -20.5,56.5 - parent: 82 - type: Transform - - uid: 5739 - components: - - pos: -20.5,57.5 - parent: 82 - type: Transform - - uid: 5740 - components: - - pos: -20.5,58.5 - parent: 82 - type: Transform - - uid: 5741 - components: - - pos: -20.5,59.5 + - pos: -27.5,58.5 parent: 82 type: Transform - uid: 5776 @@ -47909,16 +47944,6 @@ entities: - pos: -21.5,79.5 parent: 82 type: Transform - - uid: 6738 - components: - - pos: -23.5,55.5 - parent: 82 - type: Transform - - uid: 6739 - components: - - pos: -23.5,54.5 - parent: 82 - type: Transform - uid: 6740 components: - pos: -23.5,56.5 @@ -47929,16 +47954,6 @@ entities: - pos: -23.5,57.5 parent: 82 type: Transform - - uid: 6742 - components: - - pos: -23.5,58.5 - parent: 82 - type: Transform - - uid: 6743 - components: - - pos: -23.5,59.5 - parent: 82 - type: Transform - uid: 6744 components: - pos: -23.5,60.5 @@ -48054,6 +48069,11 @@ entities: - pos: -34.5,72.5 parent: 82 type: Transform + - uid: 11206 + components: + - pos: -20.5,53.5 + parent: 82 + type: Transform - uid: 11218 components: - pos: -30.5,80.5 @@ -51909,6 +51929,11 @@ entities: - pos: -17.5,76.5 parent: 82 type: Transform + - uid: 21689 + components: + - pos: -21.5,53.5 + parent: 82 + type: Transform - uid: 21843 components: - pos: 0.5,40.5 @@ -52309,6 +52334,36 @@ entities: - pos: 1.5,63.5 parent: 82 type: Transform + - uid: 22934 + components: + - pos: -20.5,54.5 + parent: 82 + type: Transform + - uid: 22935 + components: + - pos: -20.5,55.5 + parent: 82 + type: Transform + - uid: 22936 + components: + - pos: -20.5,56.5 + parent: 82 + type: Transform + - uid: 22937 + components: + - pos: -20.5,57.5 + parent: 82 + type: Transform + - uid: 22943 + components: + - pos: -20.5,58.5 + parent: 82 + type: Transform + - uid: 22958 + components: + - pos: -20.5,59.5 + parent: 82 + type: Transform - uid: 24163 components: - pos: -13.5,48.5 @@ -52710,6 +52765,13 @@ entities: - pos: 58.456696,-37.53437 parent: 82 type: Transform +- proto: CannedApplauseInstrument + entities: + - uid: 8618 + components: + - pos: -42.56837,12.580838 + parent: 82 + type: Transform - proto: CapacitorStockPart entities: - uid: 9432 @@ -61920,15 +61982,6 @@ entities: - pos: 13.647984,38.49309 parent: 82 type: Transform -- proto: Claymore - entities: - - uid: 25509 - components: - - name: Maintscalibur - type: MetaData - - pos: 33.46861,68.93209 - parent: 82 - type: Transform - proto: CloningConsoleComputerCircuitboard entities: - uid: 19831 @@ -64352,7 +64405,7 @@ entities: type: EntityStorage - uid: 22642 components: - - pos: -18.5,54.5 + - pos: -19.77381,54.505054 parent: 82 type: Transform - air: @@ -64375,9 +64428,11 @@ entities: type: EntityStorage - uid: 22643 components: - - pos: -18.5,53.5 + - pos: -18.250603,54.50595 parent: 82 type: Transform + - sleepTime: 0.049999803 + type: Physics - air: volume: 200 immutable: False @@ -65179,13 +65234,6 @@ entities: - pos: -9.140789,-47.293507 parent: 82 type: Transform -- proto: ClothingBackpackMerc - entities: - - uid: 19820 - components: - - pos: 20.916914,-91.30483 - parent: 82 - type: Transform - proto: ClothingBeltChampion entities: - uid: 4365 @@ -65201,13 +65249,6 @@ entities: pos: 46.357616,16.331951 parent: 82 type: Transform -- proto: ClothingBeltMercWebbing - entities: - - uid: 6372 - components: - - pos: 20.291391,-103.31173 - parent: 82 - type: Transform - proto: ClothingBeltUtilityFilled entities: - uid: 6412 @@ -65267,13 +65308,6 @@ entities: - pos: 39.829994,-14.370501 parent: 82 type: Transform -- proto: ClothingEyesGlassesMercenary - entities: - - uid: 5386 - components: - - pos: 20.651289,-91.50796 - parent: 82 - type: Transform - proto: ClothingEyesGlassesMeson entities: - uid: 6410 @@ -66020,13 +66054,6 @@ entities: - pos: 33.54575,56.683422 parent: 82 type: Transform -- proto: ClothingOuterVestWebMerc - entities: - - uid: 20497 - components: - - pos: 20.541391,-103.546104 - parent: 82 - type: Transform - proto: ClothingOuterWinterCargo entities: - uid: 19400 @@ -66279,13 +66306,6 @@ entities: - pos: 60.777298,-16.464449 parent: 82 type: Transform -- proto: ClothingUniformJumpsuitMercenary - entities: - - uid: 20144 - components: - - pos: 20.557539,-91.30483 - parent: 82 - type: Transform - proto: ClothingUniformJumpsuitNanotrasen entities: - uid: 8620 @@ -66873,6 +66893,11 @@ entities: - pos: -51.5,12.5 parent: 82 type: Transform + - uid: 22960 + components: + - pos: -25.5,45.5 + parent: 82 + type: Transform - proto: ComputerRadar entities: - uid: 2245 @@ -117601,13 +117626,6 @@ entities: - pos: -15.03525,21.629791 parent: 82 type: Transform -- proto: KukriKnife - entities: - - uid: 8825 - components: - - pos: 20.432016,-103.4957 - parent: 82 - type: Transform - proto: Lamp entities: - uid: 19045 @@ -120595,9 +120613,11 @@ entities: type: Transform - uid: 10013 components: - - pos: -21.5,59.5 + - pos: -21.601662,59.538593 parent: 82 type: Transform + - sleepTime: 0.0166666 + type: Physics - uid: 11881 components: - pos: -51.5,10.5 @@ -120898,6 +120918,13 @@ entities: type: Transform - proto: PaperOffice entities: + - uid: 5386 + components: + - pos: 33.503384,69.00901 + parent: 82 + type: Transform + - content: Made you look. + type: Paper - uid: 10996 components: - pos: -34.351803,-28.541927 @@ -127120,69 +127147,71 @@ entities: type: Transform - proto: RadiationCollector entities: - - uid: 5620 + - uid: 7097 components: - - pos: -33.5,73.5 + - pos: -28.5,52.5 parent: 82 type: Transform - - uid: 5729 +- proto: RadiationCollectorFullTank + entities: + - uid: 5735 components: - - pos: -33.5,75.5 + - pos: -17.5,71.5 parent: 82 type: Transform - - uid: 5847 + - uid: 5736 components: - - pos: -33.5,74.5 + - pos: -17.5,69.5 parent: 82 type: Transform - - uid: 5992 + - uid: 5737 components: - - pos: -33.5,70.5 + - pos: -17.5,70.5 parent: 82 type: Transform - - uid: 6175 + - uid: 5738 components: - - pos: -33.5,69.5 + - pos: -17.5,74.5 parent: 82 type: Transform - - uid: 7097 + - uid: 5739 components: - - pos: -28.5,52.5 + - pos: -17.5,75.5 parent: 82 type: Transform - - uid: 11225 + - uid: 5740 components: - - pos: -17.5,70.5 + - pos: -33.5,70.5 parent: 82 type: Transform - - uid: 11442 + - uid: 5741 components: - - pos: -33.5,71.5 + - pos: -17.5,73.5 parent: 82 type: Transform - - uid: 21689 + - uid: 5847 components: - - pos: -17.5,73.5 + - pos: -33.5,73.5 parent: 82 type: Transform - - uid: 21722 + - uid: 5992 components: - - pos: -17.5,69.5 + - pos: -33.5,69.5 parent: 82 type: Transform - - uid: 22707 + - uid: 6175 components: - - pos: -17.5,71.5 + - pos: -33.5,71.5 parent: 82 type: Transform - - uid: 22712 + - uid: 6738 components: - - pos: -17.5,75.5 + - pos: -33.5,75.5 parent: 82 type: Transform - - uid: 22736 + - uid: 6739 components: - - pos: -17.5,74.5 + - pos: -33.5,74.5 parent: 82 type: Transform - proto: RadioHandheld @@ -138657,7 +138686,7 @@ entities: type: Transform - uid: 6034 components: - - pos: -23.5,49.5 + - pos: -25.5,72.5 parent: 82 type: Transform - proto: Sink @@ -141973,6 +142002,8 @@ entities: type: Transform - setupAvailableNetworks: - SurveillanceCameraEngineering + nameSet: True + id: Reception type: SurveillanceCamera - uid: 3849 components: @@ -142382,6 +142413,28 @@ entities: nameSet: True id: 'Checkpoint: Evac' type: SurveillanceCamera + - uid: 6372 + components: + - rot: 3.141592653589793 rad + pos: 41.5,-21.5 + parent: 82 + type: Transform + - setupAvailableNetworks: + - SurveillanceCameraSecurity + nameSet: True + id: Brig Exterior + type: SurveillanceCamera + - uid: 8825 + components: + - rot: 1.5707963267948966 rad + pos: 52.5,-24.5 + parent: 82 + type: Transform + - setupAvailableNetworks: + - SurveillanceCameraSecurity + nameSet: True + id: Armory Exterior + type: SurveillanceCamera - uid: 11474 components: - rot: 3.141592653589793 rad @@ -142423,7 +142476,7 @@ entities: - setupAvailableNetworks: - SurveillanceCameraSecurity nameSet: True - id: Brig + id: Permabrig type: SurveillanceCamera - uid: 21766 components: @@ -142433,6 +142486,8 @@ entities: type: Transform - setupAvailableNetworks: - SurveillanceCameraSecurity + nameSet: True + id: Shooting range hallway type: SurveillanceCamera - uid: 21771 components: @@ -145615,7 +145670,7 @@ entities: type: Transform - uid: 9682 components: - - pos: 20.601238,-103.10646 + - pos: 20.478569,-103.253105 parent: 82 type: Transform - uid: 11932 @@ -145948,13 +146003,6 @@ entities: - pos: 42.55547,-8.463266 parent: 82 type: Transform -- proto: VehicleKeySyndicateSegway - entities: - - uid: 8618 - components: - - pos: -42.48091,12.587237 - parent: 82 - type: Transform - proto: VendingBarDrobe entities: - uid: 4252 @@ -166018,6 +166066,17 @@ entities: pos: -59.5,39.5 parent: 82 type: Transform + - uid: 6742 + components: + - rot: 3.141592653589793 rad + pos: -39.5,-39.5 + parent: 82 + type: Transform + - uid: 6743 + components: + - pos: -38.5,-35.5 + parent: 82 + type: Transform - uid: 7927 components: - pos: 79.5,8.5 @@ -166137,6 +166196,23 @@ entities: pos: -17.5,-35.5 parent: 82 type: Transform + - uid: 11205 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,-39.5 + parent: 82 + type: Transform + - uid: 11225 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,-38.5 + parent: 82 + type: Transform + - uid: 11442 + components: + - pos: -35.5,-37.5 + parent: 82 + type: Transform - uid: 12766 components: - pos: -6.5,-1.5 @@ -166184,6 +166260,17 @@ entities: pos: -59.5,39.5 parent: 82 type: Transform + - uid: 14895 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,-36.5 + parent: 82 + type: Transform + - uid: 14897 + components: + - pos: -39.5,-35.5 + parent: 82 + type: Transform - uid: 15512 components: - pos: -58.5,-41.5 @@ -166212,12 +166299,81 @@ entities: pos: 79.5,8.5 parent: 82 type: Transform + - uid: 18582 + components: + - pos: -30.5,-36.5 + parent: 82 + type: Transform + - uid: 18617 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,-39.5 + parent: 82 + type: Transform + - uid: 19812 + components: + - rot: 1.5707963267948966 rad + pos: -36.5,-38.5 + parent: 82 + type: Transform + - uid: 19820 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,-34.5 + parent: 82 + type: Transform + - uid: 20144 + components: + - pos: -31.5,-37.5 + parent: 82 + type: Transform + - uid: 20497 + components: + - pos: -33.5,-37.5 + parent: 82 + type: Transform - uid: 20681 components: - rot: 3.141592653589793 rad pos: 78.5,8.5 parent: 82 type: Transform + - uid: 21722 + components: + - rot: 3.141592653589793 rad + pos: -38.5,-39.5 + parent: 82 + type: Transform + - uid: 22463 + components: + - rot: -1.5707963267948966 rad + pos: -30.5,-35.5 + parent: 82 + type: Transform + - uid: 22736 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,-36.5 + parent: 82 + type: Transform + - uid: 22764 + components: + - rot: -1.5707963267948966 rad + pos: -37.5,-38.5 + parent: 82 + type: Transform + - uid: 22928 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,-38.5 + parent: 82 + type: Transform + - uid: 22933 + components: + - rot: 1.5707963267948966 rad + pos: -34.5,-39.5 + parent: 82 + type: Transform - uid: 24769 components: - rot: 1.5707963267948966 rad @@ -166389,23 +166545,6 @@ entities: type: Transform - proto: WindowReinforcedDirectional entities: - - uid: 2731 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,-39.5 - parent: 82 - type: Transform - - uid: 2757 - components: - - pos: -33.5,-37.5 - parent: 82 - type: Transform - - uid: 2819 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,-38.5 - parent: 82 - type: Transform - uid: 2828 components: - rot: 1.5707963267948966 rad @@ -166430,39 +166569,6 @@ entities: pos: -32.5,-44.5 parent: 82 type: Transform - - uid: 2839 - components: - - pos: -35.5,-37.5 - parent: 82 - type: Transform - - uid: 2846 - components: - - rot: 3.141592653589793 rad - pos: -38.5,-39.5 - parent: 82 - type: Transform - - uid: 2847 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,-39.5 - parent: 82 - type: Transform - - uid: 2869 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,-36.5 - parent: 82 - type: Transform - - uid: 3147 - components: - - pos: -31.5,-37.5 - parent: 82 - type: Transform - - uid: 3148 - components: - - pos: -30.5,-36.5 - parent: 82 - type: Transform - uid: 3346 components: - rot: -1.5707963267948966 rad @@ -166603,18 +166709,6 @@ entities: pos: 64.5,-10.5 parent: 82 type: Transform - - uid: 11205 - components: - - rot: 3.141592653589793 rad - pos: -39.5,-39.5 - parent: 82 - type: Transform - - uid: 11206 - components: - - rot: 1.5707963267948966 rad - pos: -34.5,-39.5 - parent: 82 - type: Transform - uid: 11450 components: - rot: 1.5707963267948966 rad @@ -166633,17 +166727,6 @@ entities: pos: 69.5,-20.5 parent: 82 type: Transform - - uid: 14895 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,-34.5 - parent: 82 - type: Transform - - uid: 14897 - components: - - pos: -38.5,-35.5 - parent: 82 - type: Transform - uid: 17772 components: - pos: 64.5,-16.5 @@ -166678,23 +166761,6 @@ entities: pos: 69.5,-22.5 parent: 82 type: Transform - - uid: 18582 - components: - - rot: 1.5707963267948966 rad - pos: -36.5,-38.5 - parent: 82 - type: Transform - - uid: 18617 - components: - - pos: -39.5,-35.5 - parent: 82 - type: Transform - - uid: 19812 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,-38.5 - parent: 82 - type: Transform - uid: 20488 components: - rot: 3.141592653589793 rad @@ -166719,12 +166785,6 @@ entities: pos: 64.5,-11.5 parent: 82 type: Transform - - uid: 22764 - components: - - rot: -1.5707963267948966 rad - pos: -30.5,-35.5 - parent: 82 - type: Transform - uid: 22886 components: - pos: 65.5,-16.5 From 43d5c006488a457fc32b2206756e6d81620960b8 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sun, 22 Oct 2023 21:01:48 -0700 Subject: [PATCH 219/245] Store round start date in the database (#21153) --- .../20231021071411_RoundStartDate.Designer.cs | 1775 +++++++++++++++++ .../Postgres/20231021071411_RoundStartDate.cs | 39 + .../PostgresServerDbContextModelSnapshot.cs | 8 + .../20231021071407_RoundStartDate.Designer.cs | 1705 ++++++++++++++++ .../Sqlite/20231021071407_RoundStartDate.cs | 39 + .../SqliteServerDbContextModelSnapshot.cs | 8 + Content.Server.Database/Model.cs | 9 + Content.Server/Database/ServerDbBase.cs | 1 + 8 files changed, 3584 insertions(+) create mode 100644 Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.cs diff --git a/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.Designer.cs b/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.Designer.cs new file mode 100644 index 00000000000000..bf3600ba39f6ed --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.Designer.cs @@ -0,0 +1,1775 @@ +// +using System; +using System.Net; +using System.Text.Json; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + [DbContext(typeof(PostgresServerDbContext))] + [Migration("20231021071411_RoundStartDate")] + partial class RoundStartDate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminId") + .HasColumnType("uuid") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("boolean") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("admin_log_id"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("smallint") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnName("type"); + + b.HasKey("Id", "RoundId") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Message") + .HasAnnotation("Npgsql:TsVectorConfig", "english"); + + NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_log_round_id"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => + { + b.Property("Uid") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("uid"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Uid")); + + b.Property("AdminLogId") + .HasColumnType("integer") + .HasColumnName("admin_log_id"); + + b.Property("AdminLogRoundId") + .HasColumnType("integer") + .HasColumnName("admin_log_round_id"); + + b.Property("Name") + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Uid") + .HasName("PK_admin_log_entity"); + + b.HasIndex("AdminLogId", "AdminLogRoundId") + .HasDatabaseName("IX_admin_log_entity_admin_log_id_admin_log_round_id"); + + b.ToTable("admin_log_entity", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("LogId") + .HasColumnType("integer") + .HasColumnName("log_id"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.HasKey("PlayerUserId", "LogId", "RoundId") + .HasName("PK_admin_log_player"); + + b.HasIndex("LogId", "RoundId"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_messages_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("boolean") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_notes_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("boolean") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_watchlists_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("antag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("assigned_user_id_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("smallint") + .HasColumnName("denied"); + + b.Property("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b.Property("Time") + .HasColumnType("timestamp with time zone") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("job_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("JobName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("integer") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("play_time_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("interval") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("text") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("player_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("FirstSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenHWId") + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + b.Property("LastSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", null, t => + { + t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("preference_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("integer") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Age") + .HasColumnType("integer") + .HasColumnName("age"); + + b.Property("Backpack") + .IsRequired() + .HasColumnType("text") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("text") + .HasColumnName("clothing"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("text") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("integer") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("integer") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("text") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("integer") + .HasColumnName("slot"); + + b.Property("Species") + .IsRequired() + .HasColumnType("text") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("round_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ServerId") + .HasColumnType("integer") + .HasColumnName("server_id"); + + b.Property("StartDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property?>("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("integer") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_hit_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("integer") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property?>("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("role_unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("trait_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("uploaded_resource_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("text") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("integer") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("integer") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => + { + b.HasOne("Content.Server.Database.AdminLog", null) + .WithMany("Entities") + .HasForeignKey("AdminLogId", "AdminLogRoundId") + .HasConstraintName("FK_admin_log_entity_admin_log_admin_log_id_admin_log_round_id"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("LogId", "RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_log_id_round_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Entities"); + + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.cs b/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.cs new file mode 100644 index 00000000000000..d98b4e45a8e424 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.cs @@ -0,0 +1,39 @@ +#nullable disable + +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Content.Server.Database.Migrations.Postgres +{ + /// + public partial class RoundStartDate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "start_date", + table: "round", + type: "timestamp with time zone", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.CreateIndex( + name: "IX_round_start_date", + table: "round", + column: "start_date"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_round_start_date", + table: "round"); + + migrationBuilder.DropColumn( + name: "start_date", + table: "round"); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index 7d86084261d830..b7fa1a884350be 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -856,12 +856,20 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("integer") .HasColumnName("server_id"); + b.Property("StartDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .HasColumnName("start_date"); + b.HasKey("Id") .HasName("PK_round"); b.HasIndex("ServerId") .HasDatabaseName("IX_round_server_id"); + b.HasIndex("StartDate"); + b.ToTable("round", (string)null); }); diff --git a/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.Designer.cs new file mode 100644 index 00000000000000..cf8294e5e80faf --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.Designer.cs @@ -0,0 +1,1705 @@ +// +using System; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteServerDbContext))] + [Migration("20231021071407_RoundStartDate")] + partial class RoundStartDate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.4"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_flag_id"); + + b.Property("AdminId") + .HasColumnType("TEXT") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("INTEGER") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("Id") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("INTEGER") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("Id", "RoundId") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_log_round_id"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => + { + b.Property("Uid") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("uid"); + + b.Property("AdminLogId") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_id"); + + b.Property("AdminLogRoundId") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_round_id"); + + b.Property("Name") + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Uid") + .HasName("PK_admin_log_entity"); + + b.HasIndex("AdminLogId", "AdminLogRoundId") + .HasDatabaseName("IX_admin_log_entity_admin_log_id_admin_log_round_id"); + + b.ToTable("admin_log_entity", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("LogId") + .HasColumnType("INTEGER") + .HasColumnName("log_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("PlayerUserId", "LogId", "RoundId") + .HasName("PK_admin_log_player"); + + b.HasIndex("LogId", "RoundId"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_messages_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("INTEGER") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_notes_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("INTEGER") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_flag_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_watchlists_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("antag_id"); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("assigned_user_id_id"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b.Property("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("INTEGER") + .HasColumnName("denied"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("job_id"); + + b.Property("JobName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("play_time_id"); + + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("TEXT") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b.Property("FirstSeenTime") + .HasColumnType("TEXT") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("TEXT") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenHWId") + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b.Property("LastSeenTime") + .HasColumnType("TEXT") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("INTEGER") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("Age") + .HasColumnType("INTEGER") + .HasColumnName("age"); + + b.Property("Backpack") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("clothing"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("ServerId") + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("StartDate") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("INTEGER") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_hit_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("INTEGER") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("role_unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("trait_id"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("uploaded_resource_log_id"); + + b.Property("Data") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("INTEGER") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("INTEGER") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => + { + b.HasOne("Content.Server.Database.AdminLog", null) + .WithMany("Entities") + .HasForeignKey("AdminLogId", "AdminLogRoundId") + .HasConstraintName("FK_admin_log_entity_admin_log_admin_log_id_admin_log_round_id"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("LogId", "RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_log_id_round_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Entities"); + + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.cs b/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.cs new file mode 100644 index 00000000000000..0948bd99f1f4f4 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.cs @@ -0,0 +1,39 @@ +#nullable disable + +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// + public partial class RoundStartDate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "start_date", + table: "round", + type: "TEXT", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.CreateIndex( + name: "IX_round_start_date", + table: "round", + column: "start_date"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_round_start_date", + table: "round"); + + migrationBuilder.DropColumn( + name: "start_date", + table: "round"); + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index 87b8de7fdad013..c20743b94dc9dd 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -806,12 +806,20 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("INTEGER") .HasColumnName("server_id"); + b.Property("StartDate") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .HasColumnName("start_date"); + b.HasKey("Id") .HasName("PK_round"); b.HasIndex("ServerId") .HasDatabaseName("IX_round_server_id"); + b.HasIndex("StartDate"); + b.ToTable("round", (string)null); }); diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index 489ce5d8312c89..c2d2ea98dc98ef 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -111,6 +111,13 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .HasForeignKey(player => player.PlayerUserId) .HasPrincipalKey(player => player.UserId); + modelBuilder.Entity() + .HasIndex(round => round.StartDate); + + modelBuilder.Entity() + .Property(round => round.StartDate) + .HasDefaultValue(default(DateTime)); + modelBuilder.Entity() .HasKey(logPlayer => new {logPlayer.PlayerUserId, logPlayer.LogId, logPlayer.RoundId}); @@ -468,6 +475,8 @@ public class Round [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } + public DateTime StartDate { get; set; } + public List Players { get; set; } = default!; public List AdminLogs { get; set; } = default!; diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index aeebc64f07b64d..235072603e0e43 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -677,6 +677,7 @@ public virtual async Task AddNewRound(Server server, params Guid[] playerId var round = new Round { + StartDate = DateTime.UtcNow, Players = players, ServerId = server.Id }; From 52e1d64ee2720f7226117e37ef1cb4a4488efd49 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sun, 22 Oct 2023 21:24:03 -0700 Subject: [PATCH 220/245] Stop all reads/writes to the admin_log_entity table (#21186) --- Content.Server.Database/Model.cs | 2 ++ .../Logs/AdminLogManager.Json.cs | 20 +++---------------- .../Administration/Logs/AdminLogManager.cs | 9 ++++----- 3 files changed, 9 insertions(+), 22 deletions(-) diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index c2d2ea98dc98ef..298f849b476f55 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -517,6 +517,7 @@ public class AdminLog public List Players { get; set; } = default!; + // Unused public List Entities { get; set; } = default!; } @@ -530,6 +531,7 @@ public class AdminLogPlayer [ForeignKey("LogId,RoundId")] public AdminLog Log { get; set; } = default!; } + // Unused public class AdminLogEntity { [Required, Key] public int Uid { get; set; } diff --git a/Content.Server/Administration/Logs/AdminLogManager.Json.cs b/Content.Server/Administration/Logs/AdminLogManager.Json.cs index 43a1e0b8b567d3..63f30c7a66d20d 100644 --- a/Content.Server/Administration/Logs/AdminLogManager.Json.cs +++ b/Content.Server/Administration/Logs/AdminLogManager.Json.cs @@ -2,7 +2,6 @@ using System.Text.Json; using System.Text.Json.Serialization; using Content.Server.Administration.Logs.Converters; -using Content.Server.Database; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Map; @@ -34,10 +33,9 @@ private void InitializeJson() _sawmill.Debug($"Admin log converters found: {string.Join(" ", converterNames)}"); } - private (JsonDocument Json, HashSet Players, List Entities) ToJson( + private (JsonDocument Json, HashSet Players) ToJson( Dictionary properties) { - var entities = new Dictionary(); var players = new HashSet(); var parsed = new Dictionary(); @@ -63,24 +61,12 @@ private void InitializeJson() _ => null }; - if (entityId is not { } uid) - { - continue; - } - - var entityName = _entityManager.TryGetComponent(uid, out MetaDataComponent? metadata) - ? metadata.EntityName - : null; - - // TODO set the id too whenever we feel like running a migration for 10 hours - entities.TryAdd(uid, new AdminLogEntity { Name = entityName }); - - if (_entityManager.TryGetComponent(uid, out ActorComponent? actor)) + if (_entityManager.TryGetComponent(entityId, out ActorComponent? actor)) { players.Add(actor.PlayerSession.UserId.UserId); } } - return (JsonSerializer.SerializeToDocument(parsed, _jsonOptions), players, entities.Values.ToList()); + return (JsonSerializer.SerializeToDocument(parsed, _jsonOptions), players); } } diff --git a/Content.Server/Administration/Logs/AdminLogManager.cs b/Content.Server/Administration/Logs/AdminLogManager.cs index 06f58f10b20cd3..e869d089dac73b 100644 --- a/Content.Server/Administration/Logs/AdminLogManager.cs +++ b/Content.Server/Administration/Logs/AdminLogManager.cs @@ -278,7 +278,7 @@ public void RunLevelChanged(GameRunLevel level) } } - private void Add(LogType type, LogImpact impact, string message, JsonDocument json, HashSet players, List entities) + private void Add(LogType type, LogImpact impact, string message, JsonDocument json, HashSet players) { var preRound = _runLevel == GameRunLevel.PreRoundLobby; var count = preRound ? _preRoundLogQueue.Count : _logQueue.Count; @@ -297,8 +297,7 @@ private void Add(LogType type, LogImpact impact, string message, JsonDocument js Date = DateTime.UtcNow, Message = message, Json = json, - Players = new List(players.Count), - Entities = entities + Players = new List(players.Count) }; foreach (var id in players) @@ -331,10 +330,10 @@ public override void Add(LogType type, LogImpact impact, ref LogStringHandler ha return; } - var (json, players, entities) = ToJson(handler.Values); + var (json, players) = ToJson(handler.Values); var message = handler.ToStringAndClear(); - Add(type, impact, message, json, players, entities); + Add(type, impact, message, json, players); } public override void Add(LogType type, ref LogStringHandler handler) From 33935c5ce893c18622bedcdf9ab8ba6e85754092 Mon Sep 17 00:00:00 2001 From: Nairod <110078045+Nairodian@users.noreply.github.com> Date: Mon, 23 Oct 2023 08:09:53 -0500 Subject: [PATCH 221/245] Increase Ninja Suit Weight (#21188) --- Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index 0a729ca0e2e972..16bef8c7b2668a 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -92,7 +92,7 @@ - type: GroupExamine - type: entity - parent: ClothingOuterBase + parent: ClothingOuterBaseLarge id: ClothingOuterSuitSpaceNinja name: space ninja suit description: This black technologically advanced, cybernetically-enhanced suit provides many abilities like invisibility or teleportation. From 46a3076ecb89359d7c642bed635af42350a44cd5 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 24 Oct 2023 00:20:33 +1100 Subject: [PATCH 222/245] Predict tile-prying (#21167) --- Content.Client/Tools/ToolSystem.cs | 1 + .../Commands/VariantizeCommand.cs | 12 ++-- .../Atmos/EntitySystems/AtmosphereSystem.cs | 1 + .../Construction/ConstructionSystem.cs | 1 + Content.Server/Construction/RefiningSystem.cs | 1 + Content.Server/Decals/DecalSystem.cs | 4 +- .../DeviceLinking/Systems/LogicGateSystem.cs | 1 + Content.Server/Interaction/TilePryCommand.cs | 3 +- Content.Server/Medical/CryoPodSystem.cs | 1 + .../Power/EntitySystems/CableSystem.cs | 2 + Content.Server/Repairable/RepairableSystem.cs | 1 + .../EntitySystems/RevenantSystem.Abilities.cs | 1 + Content.Server/Toilet/ToiletSystem.cs | 1 + .../Tools/Components/TilePryingComponent.cs | 25 --------- .../Tools/ToolSystem.LatticeCutting.cs | 6 +- Content.Server/Tools/ToolSystem.cs | 3 +- Content.Server/Wires/WiresSystem.cs | 1 + .../Debris/BlobFloorPlanBuilderSystem.cs | 5 +- .../Debris/DebrisFeaturePlacerSystem.cs | 2 +- .../EntitySystems/AnchorableSystem.cs | 1 + Content.Shared/Decals/SharedDecalSystem.cs | 13 +++++ .../Maps/TileSystem.cs | 56 ++++++++++++++----- Content.Shared/Maps/TurfHelpers.cs | 24 -------- .../EntitySystems/EncryptionKeySystem.cs | 1 + .../Tools/Components/TilePryingComponent.cs | 26 +++++++++ .../Systems/SharedToolSystem.MultipleTool.cs | 4 +- .../Systems/SharedToolSystem.TilePrying.cs | 36 ++++++------ .../Tools/Systems/SharedToolSystem.cs | 23 ++++++-- 28 files changed, 154 insertions(+), 102 deletions(-) delete mode 100644 Content.Server/Tools/Components/TilePryingComponent.cs rename {Content.Server => Content.Shared}/Maps/TileSystem.cs (68%) create mode 100644 Content.Shared/Tools/Components/TilePryingComponent.cs rename Content.Server/Tools/ToolSystem.TilePrying.cs => Content.Shared/Tools/Systems/SharedToolSystem.TilePrying.cs (66%) diff --git a/Content.Client/Tools/ToolSystem.cs b/Content.Client/Tools/ToolSystem.cs index f4dc480b41584b..966f37146e8469 100644 --- a/Content.Client/Tools/ToolSystem.cs +++ b/Content.Client/Tools/ToolSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Tools.Components; using Robust.Client.GameObjects; using Robust.Shared.GameStates; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Client.Tools { diff --git a/Content.Server/Administration/Commands/VariantizeCommand.cs b/Content.Server/Administration/Commands/VariantizeCommand.cs index 1b5cbbd4d505b7..7aabd76335e8f5 100644 --- a/Content.Server/Administration/Commands/VariantizeCommand.cs +++ b/Content.Server/Administration/Commands/VariantizeCommand.cs @@ -12,6 +12,7 @@ public sealed class VariantizeCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ITileDefinitionManager _tileDefManager = default!; public string Command => "variantize"; @@ -39,11 +40,14 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - foreach (var tile in gridComp.GetAllTiles()) + var mapsSystem = _entManager.System(); + var tileSystem = _entManager.System(); + + foreach (var tile in mapsSystem.GetAllTiles(euid.Value, gridComp)) { - var def = tile.GetContentTileDefinition(); - var newTile = new Tile(tile.Tile.TypeId, tile.Tile.Flags, def.PickVariant(_random)); - gridComp.SetTile(tile.GridIndices, newTile); + var def = tile.GetContentTileDefinition(_tileDefManager); + var newTile = new Tile(tile.Tile.TypeId, tile.Tile.Flags, tileSystem.PickVariant(def)); + mapsSystem.SetTile(euid.Value, gridComp, tile.GridIndices, newTile); } } } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs index 91634de8d7afc4..d8364b652b83a3 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs @@ -4,6 +4,7 @@ using Content.Server.Maps; using Content.Server.NodeContainer.EntitySystems; using Content.Shared.Atmos.EntitySystems; +using Content.Shared.Maps; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Containers; diff --git a/Content.Server/Construction/ConstructionSystem.cs b/Content.Server/Construction/ConstructionSystem.cs index 76d37432cb5674..6e40b7b856c37c 100644 --- a/Content.Server/Construction/ConstructionSystem.cs +++ b/Content.Server/Construction/ConstructionSystem.cs @@ -7,6 +7,7 @@ using Robust.Server.Containers; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Server.Construction { diff --git a/Content.Server/Construction/RefiningSystem.cs b/Content.Server/Construction/RefiningSystem.cs index 40f69c51f817f8..b9d80c7170a7e2 100644 --- a/Content.Server/Construction/RefiningSystem.cs +++ b/Content.Server/Construction/RefiningSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Stacks; using Content.Shared.Tools; using Robust.Shared.Serialization; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Server.Construction { diff --git a/Content.Server/Decals/DecalSystem.cs b/Content.Server/Decals/DecalSystem.cs index d5a5bf9affa8bc..ed281e05ba79be 100644 --- a/Content.Server/Decals/DecalSystem.cs +++ b/Content.Server/Decals/DecalSystem.cs @@ -305,10 +305,10 @@ public bool TryAddDecal(Decal decal, EntityCoordinates coordinates, out uint dec return true; } - public bool RemoveDecal(EntityUid gridId, uint decalId, DecalGridComponent? component = null) + public override bool RemoveDecal(EntityUid gridId, uint decalId, DecalGridComponent? component = null) => RemoveDecalInternal(gridId, decalId, out _, component); - public HashSet<(uint Index, Decal Decal)> GetDecalsInRange(EntityUid gridId, Vector2 position, float distance = 0.75f, Func? validDelegate = null) + public override HashSet<(uint Index, Decal Decal)> GetDecalsInRange(EntityUid gridId, Vector2 position, float distance = 0.75f, Func? validDelegate = null) { var decalIds = new HashSet<(uint, Decal)>(); var chunkCollection = ChunkCollection(gridId); diff --git a/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs b/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs index 360f86eebe914b..5641b0b4aee824 100644 --- a/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs +++ b/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Interaction; using Content.Shared.Tools; using Content.Shared.Popups; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; using SignalReceivedEvent = Content.Server.DeviceLinking.Events.SignalReceivedEvent; namespace Content.Server.DeviceLinking.Systems; diff --git a/Content.Server/Interaction/TilePryCommand.cs b/Content.Server/Interaction/TilePryCommand.cs index 157fa2cc80ce00..4fe3599df97e9e 100644 --- a/Content.Server/Interaction/TilePryCommand.cs +++ b/Content.Server/Interaction/TilePryCommand.cs @@ -3,6 +3,7 @@ using Content.Server.Tools.Components; using Content.Shared.Administration; using Content.Shared.Maps; +using Content.Shared.Tools.Components; using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; @@ -10,7 +11,7 @@ namespace Content.Server.Interaction { /// - /// + /// /// [AdminCommand(AdminFlags.Debug)] sealed class TilePryCommand : IConsoleCommand diff --git a/Content.Server/Medical/CryoPodSystem.cs b/Content.Server/Medical/CryoPodSystem.cs index b94d6de6de022a..82f7b9cb0a0069 100644 --- a/Content.Server/Medical/CryoPodSystem.cs +++ b/Content.Server/Medical/CryoPodSystem.cs @@ -32,6 +32,7 @@ using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.Timing; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Server.Medical; diff --git a/Content.Server/Power/EntitySystems/CableSystem.cs b/Content.Server/Power/EntitySystems/CableSystem.cs index 8dd09fab3531cb..a5c9591d9ad64e 100644 --- a/Content.Server/Power/EntitySystems/CableSystem.cs +++ b/Content.Server/Power/EntitySystems/CableSystem.cs @@ -8,6 +8,8 @@ using Content.Shared.Tools; using Content.Shared.Tools.Components; using Robust.Shared.Map; +using CableCuttingFinishedEvent = Content.Shared.Tools.Systems.CableCuttingFinishedEvent; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Server.Power.EntitySystems; diff --git a/Content.Server/Repairable/RepairableSystem.cs b/Content.Server/Repairable/RepairableSystem.cs index 486ac756e3adf8..5bd580756daeab 100644 --- a/Content.Server/Repairable/RepairableSystem.cs +++ b/Content.Server/Repairable/RepairableSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Popups; using Content.Shared.Repairable; using Content.Shared.Tools; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Server.Repairable { diff --git a/Content.Server/Revenant/EntitySystems/RevenantSystem.Abilities.cs b/Content.Server/Revenant/EntitySystems/RevenantSystem.Abilities.cs index b3caced0daf72c..cb20a1b86834cc 100644 --- a/Content.Server/Revenant/EntitySystems/RevenantSystem.Abilities.cs +++ b/Content.Server/Revenant/EntitySystems/RevenantSystem.Abilities.cs @@ -21,6 +21,7 @@ using Content.Shared.Emag.Systems; using Content.Shared.FixedPoint; using Content.Shared.Humanoid; +using Content.Shared.Maps; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; diff --git a/Content.Server/Toilet/ToiletSystem.cs b/Content.Server/Toilet/ToiletSystem.cs index 57467397c6dc9d..b10feae4533e04 100644 --- a/Content.Server/Toilet/ToiletSystem.cs +++ b/Content.Server/Toilet/ToiletSystem.cs @@ -19,6 +19,7 @@ using Robust.Shared.Audio; using Robust.Shared.Player; using Robust.Shared.Random; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Server.Toilet { diff --git a/Content.Server/Tools/Components/TilePryingComponent.cs b/Content.Server/Tools/Components/TilePryingComponent.cs deleted file mode 100644 index 99d7144b687f33..00000000000000 --- a/Content.Server/Tools/Components/TilePryingComponent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Threading; -using Content.Shared.Tools; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Server.Tools.Components -{ - [RegisterComponent] - public sealed partial class TilePryingComponent : Component - { - [DataField("toolComponentNeeded")] - public bool ToolComponentNeeded = true; - - [DataField("qualityNeeded", customTypeSerializer:typeof(PrototypeIdSerializer))] - public string QualityNeeded = "Prying"; - - /// - /// Whether this tool can pry tiles with CanAxe. - /// - [DataField("advanced")] - public bool Advanced = false; - - [DataField("delay")] - public float Delay = 1f; - } -} diff --git a/Content.Server/Tools/ToolSystem.LatticeCutting.cs b/Content.Server/Tools/ToolSystem.LatticeCutting.cs index 674a8102390a6a..ab289c1ae24358 100644 --- a/Content.Server/Tools/ToolSystem.LatticeCutting.cs +++ b/Content.Server/Tools/ToolSystem.LatticeCutting.cs @@ -62,14 +62,14 @@ private bool TryCut(EntityUid toolEntity, EntityUid user, LatticeCuttingComponen var coordinates = mapGrid.GridTileToLocal(tile.GridIndices); - if (!_interactionSystem.InRangeUnobstructed(user, coordinates, popup: false)) + if (!InteractionSystem.InRangeUnobstructed(user, coordinates, popup: false)) return false; if (_tileDefinitionManager[tile.Tile.TypeId] is not ContentTileDefinition tileDef || !tileDef.CanWirecutter || string.IsNullOrEmpty(tileDef.BaseTurf) - || _tileDefinitionManager[tileDef.BaseTurf] is not ContentTileDefinition newDef - || tile.IsBlockedTurf(true)) + || _tileDefinitionManager[tileDef.BaseTurf] is not ContentTileDefinition || + tile.IsBlockedTurf(true)) { return false; } diff --git a/Content.Server/Tools/ToolSystem.cs b/Content.Server/Tools/ToolSystem.cs index 63642338f38714..88a96dc1e8daaf 100644 --- a/Content.Server/Tools/ToolSystem.cs +++ b/Content.Server/Tools/ToolSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Tools; using Robust.Server.GameObjects; using Robust.Shared.Map; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Server.Tools { @@ -21,13 +22,11 @@ public sealed partial class ToolSystem : SharedToolSystem [Dependency] private readonly SharedPointLightSystem _light = default!; [Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly TransformSystem _transformSystem = default!; - [Dependency] private readonly TurfSystem _turf = default!; public override void Initialize() { base.Initialize(); - InitializeTilePrying(); InitializeLatticeCutting(); InitializeWelders(); } diff --git a/Content.Server/Wires/WiresSystem.cs b/Content.Server/Wires/WiresSystem.cs index df61e89d4dd5bf..e75ad0a9efb7e3 100644 --- a/Content.Server/Wires/WiresSystem.cs +++ b/Content.Server/Wires/WiresSystem.cs @@ -19,6 +19,7 @@ using Robust.Server.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Server.Wires; diff --git a/Content.Server/Worldgen/Systems/Debris/BlobFloorPlanBuilderSystem.cs b/Content.Server/Worldgen/Systems/Debris/BlobFloorPlanBuilderSystem.cs index a90faef9959eae..a09416e5937be2 100644 --- a/Content.Server/Worldgen/Systems/Debris/BlobFloorPlanBuilderSystem.cs +++ b/Content.Server/Worldgen/Systems/Debris/BlobFloorPlanBuilderSystem.cs @@ -14,6 +14,7 @@ public sealed class BlobFloorPlanBuilderSystem : BaseWorldSystem { [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly ITileDefinitionManager _tileDefinition = default!; + [Dependency] private readonly TileSystem _tiles = default!; /// public override void Initialize() @@ -30,6 +31,8 @@ private void OnBlobFloorPlanBuilderStartup(EntityUid uid, BlobFloorPlanBuilderCo private void PlaceFloorplanTiles(BlobFloorPlanBuilderComponent comp, MapGridComponent grid) { // NO MORE THAN TWO ALLOCATIONS THANK YOU VERY MUCH. + // TODO: Just put these on a field instead then? + // Also the end of the method has a big LINQ which is gonna blow this out the water. var spawnPoints = new HashSet(comp.FloorPlacements * 6); var taken = new Dictionary(comp.FloorPlacements * 5); @@ -56,7 +59,7 @@ void PlaceTile(Vector2i point) spawnPoints.Add(west); var tileDef = _tileDefinition[_random.Pick(comp.FloorTileset)]; - taken.Add(point, new Tile(tileDef.TileId, 0, ((ContentTileDefinition)tileDef).PickVariant(_random))); + taken.Add(point, new Tile(tileDef.TileId, 0, _tiles.PickVariant((ContentTileDefinition) tileDef))); } PlaceTile(Vector2i.Zero); diff --git a/Content.Server/Worldgen/Systems/Debris/DebrisFeaturePlacerSystem.cs b/Content.Server/Worldgen/Systems/Debris/DebrisFeaturePlacerSystem.cs index b2d8df4de92a61..65af0b68cb7618 100644 --- a/Content.Server/Worldgen/Systems/Debris/DebrisFeaturePlacerSystem.cs +++ b/Content.Server/Worldgen/Systems/Debris/DebrisFeaturePlacerSystem.cs @@ -46,7 +46,7 @@ private void OnDebrisMove(EntityUid uid, OwnedDebrisComponent component, ref Mov return; // Redundant logic, prolly needs it's own handler for your custom system. var placer = Comp(component.OwningController); - var xform = Transform(uid); + var xform = args.Component; var ownerXform = Transform(component.OwningController); if (xform.MapUid is null || ownerXform.MapUid is null) return; // not our problem diff --git a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs index 3e1cf5584c1bb0..b40c0495622821 100644 --- a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs +++ b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs @@ -18,6 +18,7 @@ using Robust.Shared.Player; using Robust.Shared.Serialization; using Robust.Shared.Utility; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Shared.Construction.EntitySystems; diff --git a/Content.Shared/Decals/SharedDecalSystem.cs b/Content.Shared/Decals/SharedDecalSystem.cs index 79bf826eedbd19..02f73bdacb3852 100644 --- a/Content.Shared/Decals/SharedDecalSystem.cs +++ b/Content.Shared/Decals/SharedDecalSystem.cs @@ -1,3 +1,4 @@ +using System.Collections; using System.Diagnostics.CodeAnalysis; using System.Numerics; using Robust.Shared.GameStates; @@ -107,6 +108,18 @@ protected virtual void OnDecalRemoved(EntityUid gridId, uint decalId, DecalGridC { // used by client-side overlay code } + + public virtual HashSet<(uint Index, Decal Decal)> GetDecalsInRange(EntityUid gridId, Vector2 position, float distance = 0.75f, Func? validDelegate = null) + { + // NOOP on client atm. + return new HashSet<(uint Index, Decal Decal)>(); + } + + public virtual bool RemoveDecal(EntityUid gridId, uint decalId, DecalGridComponent? component = null) + { + // NOOP on client atm. + return true; + } } // TODO: Pretty sure paul was moving this somewhere but just so people know diff --git a/Content.Server/Maps/TileSystem.cs b/Content.Shared/Maps/TileSystem.cs similarity index 68% rename from Content.Server/Maps/TileSystem.cs rename to Content.Shared/Maps/TileSystem.cs index 1423f76d9719cd..2c09375d593cb7 100644 --- a/Content.Server/Maps/TileSystem.cs +++ b/Content.Shared/Maps/TileSystem.cs @@ -1,13 +1,13 @@ +using System.Linq; using System.Numerics; -using Content.Server.Decals; using Content.Shared.Coordinates.Helpers; using Content.Shared.Decals; -using Content.Shared.Maps; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Random; +using Robust.Shared.Utility; -namespace Content.Server.Maps; +namespace Content.Shared.Maps; /// /// Handles server-side tile manipulation like prying/deconstructing tiles. @@ -15,15 +15,39 @@ namespace Content.Server.Maps; public sealed class TileSystem : EntitySystem { [Dependency] private readonly IMapManager _mapManager = default!; - [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!; [Dependency] private readonly IRobustRandom _robustRandom = default!; - [Dependency] private readonly DecalSystem _decal = 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!; + /// + /// Returns a weighted pick of a tile variant. + /// + public byte PickVariant(ContentTileDefinition tile) + { + var variants = tile.PlacementVariants; + + var sum = variants.Sum(); + var accumulated = 0f; + var rand = _robustRandom.NextFloat() * sum; + + for (byte i = 0; i < variants.Length; ++i) + { + accumulated += variants[i]; + + if (accumulated >= rand) + return i; + } + + // Shouldn't happen + throw new InvalidOperationException($"Invalid weighted variantize tile pick for {tile.ID}!"); + } + public bool PryTile(Vector2i indices, EntityUid gridId) { - var grid = _mapManager.GetGrid(gridId); - var tileRef = grid.GetTileRef(indices); + var grid = Comp(gridId); + var tileRef = _maps.GetTileRef(gridId, grid, indices); return PryTile(tileRef); } @@ -71,16 +95,20 @@ public bool ReplaceTile(TileRef tileref, ContentTileDefinition replacementTile) public bool ReplaceTile(TileRef tileref, ContentTileDefinition replacementTile, EntityUid grid, MapGridComponent? component = null) { + DebugTools.Assert(tileref.GridUid == grid); + if (!Resolve(grid, ref component)) return false; - var variant = replacementTile.PickVariant(); + + var 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); } - component.SetTile(tileref.GridIndices, new Tile(replacementTile.TileId, 0, variant)); + + _maps.SetTile(grid, component, tileref.GridIndices, new Tile(replacementTile.TileId, 0, variant)); return true; } @@ -94,12 +122,13 @@ private bool DeconstructTile(TileRef tileRef) if (string.IsNullOrEmpty(tileDef.BaseTurf)) return false; - var mapGrid = _mapManager.GetGrid(tileRef.GridUid); + var gridUid = tileRef.GridUid; + var mapGrid = Comp(gridUid); const float margin = 0.1f; var bounds = mapGrid.TileSize - margin * 2; var indices = tileRef.GridIndices; - var coordinates = mapGrid.GridTileToLocal(indices) + var coordinates = _maps.GridTileToLocal(gridUid, mapGrid, indices) .Offset(new Vector2( (_robustRandom.NextFloat() - 0.5f) * bounds, (_robustRandom.NextFloat() - 0.5f) * bounds)); @@ -109,15 +138,14 @@ private bool DeconstructTile(TileRef tileRef) Transform(tileItem).LocalRotation = _robustRandom.NextDouble() * Math.Tau; // Destroy any decals on the tile - var decals = _decal.GetDecalsInRange(tileRef.GridUid, coordinates.SnapToGrid(EntityManager, _mapManager).Position, 0.5f); + 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]; - - mapGrid.SetTile(tileRef.GridIndices, new Tile(plating.TileId)); + _maps.SetTile(gridUid, mapGrid, tileRef.GridIndices, new Tile(plating.TileId)); return true; } diff --git a/Content.Shared/Maps/TurfHelpers.cs b/Content.Shared/Maps/TurfHelpers.cs index 857244d658ced6..a87b8c97d15994 100644 --- a/Content.Shared/Maps/TurfHelpers.cs +++ b/Content.Shared/Maps/TurfHelpers.cs @@ -86,30 +86,6 @@ public static bool IsSpace(this TileRef tile, ITileDefinitionManager? tileDefini return tile.Tile.IsSpace(tileDefinitionManager); } - /// - /// Returns a weighted pick of a tile variant. - /// - public static byte PickVariant(this ContentTileDefinition tile, IRobustRandom? random = null) - { - IoCManager.Resolve(ref random); - var variants = tile.PlacementVariants; - - var sum = variants.Sum(); - var accumulated = 0f; - var rand = random.NextFloat() * sum; - - for (byte i = 0; i < variants.Length; ++i) - { - accumulated += variants[i]; - - if (accumulated >= rand) - return i; - } - - // Shouldn't happen - throw new InvalidOperationException($"Invalid weighted variantize tile pick for {tile.ID}!"); - } - /// /// Helper that returns all entities in a turf. /// diff --git a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs index 3d2ce2fd00ae14..eb97fe41133b5b 100644 --- a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs +++ b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs @@ -14,6 +14,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Timing; +using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; namespace Content.Shared.Radio.EntitySystems; diff --git a/Content.Shared/Tools/Components/TilePryingComponent.cs b/Content.Shared/Tools/Components/TilePryingComponent.cs new file mode 100644 index 00000000000000..4c123ca1edbf7a --- /dev/null +++ b/Content.Shared/Tools/Components/TilePryingComponent.cs @@ -0,0 +1,26 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Tools.Components; + +/// +/// Allows prying tiles up on a grid. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class TilePryingComponent : Component +{ + [DataField("toolComponentNeeded"), AutoNetworkedField] + public bool ToolComponentNeeded = true; + + [DataField("qualityNeeded", customTypeSerializer:typeof(PrototypeIdSerializer)), AutoNetworkedField] + public string QualityNeeded = "Prying"; + + /// + /// Whether this tool can pry tiles with CanAxe. + /// + [DataField("advanced"), AutoNetworkedField] + public bool Advanced = false; + + [DataField("delay"), AutoNetworkedField] + public float Delay = 1f; +} diff --git a/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs b/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs index 39a1dc50f32ae8..cb8830060a2d12 100644 --- a/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs +++ b/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs @@ -1,9 +1,9 @@ using System.Linq; using Content.Shared.Interaction; -using Content.Shared.Tools.Components; using Content.Shared.Prying.Components; +using Content.Shared.Tools.Components; -namespace Content.Shared.Tools; +namespace Content.Shared.Tools.Systems; public abstract partial class SharedToolSystem : EntitySystem { diff --git a/Content.Server/Tools/ToolSystem.TilePrying.cs b/Content.Shared/Tools/Systems/SharedToolSystem.TilePrying.cs similarity index 66% rename from Content.Server/Tools/ToolSystem.TilePrying.cs rename to Content.Shared/Tools/Systems/SharedToolSystem.TilePrying.cs index faaed6abb87e51..81592f5a98270c 100644 --- a/Content.Server/Tools/ToolSystem.TilePrying.cs +++ b/Content.Shared/Tools/Systems/SharedToolSystem.TilePrying.cs @@ -1,17 +1,15 @@ -using Content.Server.Tools.Components; using Content.Shared.Database; using Content.Shared.Fluids.Components; using Content.Shared.Interaction; using Content.Shared.Maps; using Content.Shared.Tools.Components; using Robust.Shared.Map; +using Robust.Shared.Map.Components; -namespace Content.Server.Tools; +namespace Content.Shared.Tools.Systems; -public sealed partial class ToolSystem +public abstract partial class SharedToolSystem { - [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; - private void InitializeTilePrying() { SubscribeLocalEvent(OnTilePryingAfterInteract); @@ -20,7 +18,8 @@ private void InitializeTilePrying() private void OnTilePryingAfterInteract(EntityUid uid, TilePryingComponent component, AfterInteractEvent args) { - if (args.Handled || !args.CanReach || (args.Target != null && !HasComp(args.Target))) return; + if (args.Handled || !args.CanReach || args.Target != null && !HasComp(args.Target)) + return; if (TryPryTile(uid, args.User, component, args.ClickLocation)) args.Handled = true; @@ -33,26 +32,28 @@ private void OnTilePryComplete(EntityUid uid, TilePryingComponent component, Til var coords = GetCoordinates(args.Coordinates); var gridUid = coords.GetGridUid(EntityManager); - if (!_mapManager.TryGetGrid(gridUid, out var grid)) + if (!TryComp(gridUid, out MapGridComponent? grid)) { Log.Error("Attempted to pry from a non-existent grid?"); return; } - var tile = grid.GetTileRef(coords); - var center = _turf.GetTileCenter(tile); + var tile = _maps.GetTileRef(gridUid.Value, grid, coords); + var center = _turfs.GetTileCenter(tile); + if (args.Used != null) { _adminLogger.Add(LogType.Tile, LogImpact.Low, - $"{ToPrettyString(args.User):actor} used {ToPrettyString(args.Used.Value):tool} to pry {_tileDefinitionManager[tile.Tile.TypeId].Name} at {center}"); + $"{ToPrettyString(args.User):actor} used {ToPrettyString(args.Used.Value):tool} to pry {_tileDefManager[tile.Tile.TypeId].Name} at {center}"); } else { _adminLogger.Add(LogType.Tile, LogImpact.Low, - $"{ToPrettyString(args.User):actor} pried {_tileDefinitionManager[tile.Tile.TypeId].Name} at {center}"); + $"{ToPrettyString(args.User):actor} pried {_tileDefManager[tile.Tile.TypeId].Name} at {center}"); } - _tile.PryTile(tile, component.Advanced); + if (_netManager.IsServer) + _tiles.PryTile(tile, component.Advanced); } private bool TryPryTile(EntityUid toolEntity, EntityUid user, TilePryingComponent component, EntityCoordinates clickLocation) @@ -60,17 +61,16 @@ private bool TryPryTile(EntityUid toolEntity, EntityUid user, TilePryingComponen if (!TryComp(toolEntity, out var tool) && component.ToolComponentNeeded) return false; - if (!_mapManager.TryFindGridAt(clickLocation.ToMap(EntityManager, _transformSystem), out _, out var mapGrid)) + if (!_mapManager.TryFindGridAt(clickLocation.ToMap(EntityManager, _transformSystem), out var gridUid, out var mapGrid)) return false; - var tile = mapGrid.GetTileRef(clickLocation); - - var coordinates = mapGrid.GridTileToLocal(tile.GridIndices); + var tile = _maps.GetTileRef(gridUid, mapGrid, clickLocation); + var coordinates = _maps.GridTileToLocal(gridUid, mapGrid, tile.GridIndices); - if (!_interactionSystem.InRangeUnobstructed(user, coordinates, popup: false)) + if (!InteractionSystem.InRangeUnobstructed(user, coordinates, popup: false)) return false; - var tileDef = (ContentTileDefinition)_tileDefinitionManager[tile.Tile.TypeId]; + var tileDef = (ContentTileDefinition) _tileDefManager[tile.Tile.TypeId]; if (!tileDef.CanCrowbar && !(tileDef.CanAxe && component.Advanced)) return false; diff --git a/Content.Shared/Tools/Systems/SharedToolSystem.cs b/Content.Shared/Tools/Systems/SharedToolSystem.cs index 716a9332d0ebf9..c1a2bdc2ddae35 100644 --- a/Content.Shared/Tools/Systems/SharedToolSystem.cs +++ b/Content.Shared/Tools/Systems/SharedToolSystem.cs @@ -1,22 +1,35 @@ +using Content.Shared.Administration.Logs; using Content.Shared.DoAfter; +using Content.Shared.Interaction; +using Content.Shared.Maps; using Content.Shared.Tools.Components; using Robust.Shared.Map; +using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; -using Robust.Shared.Timing; using Robust.Shared.Utility; -namespace Content.Shared.Tools; +namespace Content.Shared.Tools.Systems; public abstract partial class SharedToolSystem : EntitySystem { - [Dependency] private readonly IPrototypeManager _protoMan = default!; - [Dependency] private readonly SharedAudioSystem _audioSystem = default!; - [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly IMapManager _mapManager = default!; + [Dependency] private readonly INetManager _netManager = default!; + [Dependency] private readonly IPrototypeManager _protoMan = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly ITileDefinitionManager _tileDefManager = default!; + [Dependency] private readonly SharedAudioSystem _audioSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] protected readonly SharedInteractionSystem InteractionSystem = default!; + [Dependency] private readonly SharedMapSystem _maps = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; + [Dependency] private readonly TileSystem _tiles = default!; + [Dependency] private readonly TurfSystem _turfs = default!; public override void Initialize() { InitializeMultipleTool(); + InitializeTilePrying(); SubscribeLocalEvent(OnDoAfter); } From eae349d15e74c1107d5593a52aebb6b53f7dc245 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 23 Oct 2023 09:21:38 -0400 Subject: [PATCH 223/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5f4b71deaa6d24..199580f9bcc811 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: onoira - changes: - - {message: Spare pieces have been added to checkerboards allowing for more playable - variants., type: Tweak} - id: 4543 - time: '2023-08-13T07:10:10.0000000+00:00' - author: Doru991 changes: - {message: Composting high-potency plants refills tray nutrients much more effectively., @@ -2909,3 +2903,8 @@ Entries: - {message: Replaced wielding do_after with an interaction cooldown., type: Tweak} id: 5042 time: '2023-10-22T13:53:14.0000000+00:00' +- author: metalgearsloth + changes: + - {message: Tile-prying do_after is now predicted., type: Tweak} + id: 5043 + time: '2023-10-23T13:20:33.0000000+00:00' From 7073b292c0c407894fe7fe15fc0a86ef2b6c82cd Mon Sep 17 00:00:00 2001 From: Tryded <139474617+Tryded@users.noreply.github.com> Date: Mon, 23 Oct 2023 09:35:32 -0500 Subject: [PATCH 224/245] Buffs Double bladed energy swords (#21131) --- Resources/Locale/en-US/store/uplink-catalog.ftl | 2 +- Resources/Prototypes/Catalog/uplink_catalog.yml | 2 +- .../Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index a957c298bac66c..9254a2a8ad9ba9 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -15,7 +15,7 @@ uplink-esword-name = Energy Sword uplink-esword-desc = A very dangerous energy sword that can reflect shots. Can be stored in pockets when turned off. Makes a lot of noise when used or turned on. uplink-esword-double-name = Double Bladed Energy Sword -uplink-esword-double-desc = A much more expensive counter part to the normal energy sword: with a much higher reflection chance, larger attack angle, higher structural damage, and faster swing, all at the cost of lower heat and slash damage. Makes a lot of noise when used or turned on. +uplink-esword-double-desc = A much more expensive counter part to the normal energy sword: with a much higher reflection chance, larger attack angle, higher structural damage, and faster swing. Makes a lot of noise when used or turned on. uplink-edagger-name = Energy Dagger uplink-edagger-desc = A small energy blade conveniently disguised in the form of a pen. diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index cc42a9006296e9..d1be4e4d1b3105 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -92,7 +92,7 @@ icon: { sprite: /Textures/Objects/Weapons/Melee/e_sword_double.rsi, state: icon } productEntity: EnergySwordDouble cost: - Telecrystal: 16 + Telecrystal: 20 #(Originally 16) categories: - UplinkWeapons conditions: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index 0dd5d7c47c2543..47dfea9d867298 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -174,8 +174,8 @@ - type: EnergySword litDamageBonus: types: - Slash: 9 - Heat: 9 + Slash: 17 + Heat: 17 Structural: 20 Blunt: -4.5 litDisarmMalus: 0.7 From 60092e8b8a9f943c6d94a634648c8f0c981b5b16 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 23 Oct 2023 10:36:36 -0400 Subject: [PATCH 225/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 199580f9bcc811..653c12af922305 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,10 +1,4 @@ Entries: -- author: Doru991 - changes: - - {message: Composting high-potency plants refills tray nutrients much more effectively., - type: Tweak} - id: 4544 - time: '2023-08-13T07:10:22.0000000+00:00' - author: Nimfar11 changes: - {message: Adds a Secret Door for construction, type: Add} @@ -2908,3 +2902,10 @@ Entries: - {message: Tile-prying do_after is now predicted., type: Tweak} id: 5043 time: '2023-10-23T13:20:33.0000000+00:00' +- author: Tryded + changes: + - {message: Changed the damage of the double bladed energy sword to 17 heat + 17 + Slash (The Double Bladed energy sword use to deal as much damage as an energy + dagger.), type: Tweak} + id: 5044 + time: '2023-10-23T14:35:33.0000000+00:00' From 472381c0db6cd3088fe757975d96a70ac652f584 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Tue, 24 Oct 2023 11:53:27 +1100 Subject: [PATCH 226/245] Add GrantContainedActions() (#21206) --- Content.Shared/Actions/SharedActionsSystem.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 9ad155081acc84..00a17ace250988 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -494,6 +494,9 @@ public bool AddActionDirect(EntityUid performer, (TryComp(action.Container, out ActionsContainerComponent? containerComp) && containerComp.Container.Contains(actionId))); + if (action.AttachedEntity != null) + RemoveAction(action.AttachedEntity.Value, actionId, action: action); + DebugTools.AssertOwner(performer, comp); comp ??= EnsureComp(performer); action.AttachedEntity = performer; @@ -532,6 +535,26 @@ public void GrantActions(EntityUid performer, IEnumerable actions, En } } + /// + /// Grants all actions currently contained in some action-container. If the target entity has no action + /// component, this will give them one. + /// + /// Entity to receive the actions + /// The entity that contains thee actions. + public void GrantContainedActions(Entity performer, Entity container) + { + if (!Resolve(container, ref container.Comp)) + return; + + performer.Comp ??= EnsureComp(performer); + + foreach (var actionId in container.Comp.Container.ContainedEntities) + { + if (TryGetActionData(actionId, out var action)) + AddActionDirect(performer, actionId, performer.Comp, action); + } + } + public IEnumerable<(EntityUid Id, BaseActionComponent Comp)> GetActions(EntityUid holderId, ActionsComponent? actions = null) { if (!Resolve(holderId, ref actions, false)) From 0e0ac5fcc52d4c01dfc7f1707aff872de8ded3e6 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Mon, 23 Oct 2023 22:08:20 -0700 Subject: [PATCH 227/245] Drop admin log entity db table (#21216) --- ...31024041204_DropAdminLogEntity.Designer.cs | 1735 +++++++++++++++++ .../20231024041204_DropAdminLogEntity.cs | 47 + .../PostgresServerDbContextModelSnapshot.cs | 40 - ...31024041159_DropAdminLogEntity.Designer.cs | 1667 ++++++++++++++++ .../20231024041159_DropAdminLogEntity.cs | 46 + .../SqliteServerDbContextModelSnapshot.cs | 38 - Content.Server.Database/Model.cs | 10 - 7 files changed, 3495 insertions(+), 88 deletions(-) create mode 100644 Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.cs diff --git a/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.Designer.cs b/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.Designer.cs new file mode 100644 index 00000000000000..5c81f0468db7fa --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.Designer.cs @@ -0,0 +1,1735 @@ +// +using System; +using System.Net; +using System.Text.Json; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + [DbContext(typeof(PostgresServerDbContext))] + [Migration("20231024041204_DropAdminLogEntity")] + partial class DropAdminLogEntity + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminId") + .HasColumnType("uuid") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("boolean") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("admin_log_id"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("smallint") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnName("type"); + + b.HasKey("Id", "RoundId") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Message") + .HasAnnotation("Npgsql:TsVectorConfig", "english"); + + NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_log_round_id"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("LogId") + .HasColumnType("integer") + .HasColumnName("log_id"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.HasKey("PlayerUserId", "LogId", "RoundId") + .HasName("PK_admin_log_player"); + + b.HasIndex("LogId", "RoundId"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_messages_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("boolean") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_notes_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("boolean") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_watchlists_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("antag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("assigned_user_id_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("smallint") + .HasColumnName("denied"); + + b.Property("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b.Property("Time") + .HasColumnType("timestamp with time zone") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("job_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("JobName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("integer") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("play_time_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("interval") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("text") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("player_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("FirstSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenHWId") + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + b.Property("LastSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", null, t => + { + t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("preference_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("integer") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Age") + .HasColumnType("integer") + .HasColumnName("age"); + + b.Property("Backpack") + .IsRequired() + .HasColumnType("text") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("text") + .HasColumnName("clothing"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("text") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("integer") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("integer") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("text") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("integer") + .HasColumnName("slot"); + + b.Property("Species") + .IsRequired() + .HasColumnType("text") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("round_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ServerId") + .HasColumnType("integer") + .HasColumnName("server_id"); + + b.Property("StartDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property?>("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("integer") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_hit_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("integer") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property?>("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("role_unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("trait_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("uploaded_resource_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("text") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("integer") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("integer") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("LogId", "RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_log_id_round_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.cs b/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.cs new file mode 100644 index 00000000000000..ec9c2e9a6c3642 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.cs @@ -0,0 +1,47 @@ +#nullable disable + +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace Content.Server.Database.Migrations.Postgres +{ + /// + public partial class DropAdminLogEntity : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "admin_log_entity"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "admin_log_entity", + columns: table => new + { + uid = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + admin_log_id = table.Column(type: "integer", nullable: true), + admin_log_round_id = table.Column(type: "integer", nullable: true), + name = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_admin_log_entity", x => x.uid); + table.ForeignKey( + name: "FK_admin_log_entity_admin_log_admin_log_id_admin_log_round_id", + columns: x => new { x.admin_log_id, x.admin_log_round_id }, + principalTable: "admin_log", + principalColumns: new[] { "admin_log_id", "round_id" }); + }); + + migrationBuilder.CreateIndex( + name: "IX_admin_log_entity_admin_log_id_admin_log_round_id", + table: "admin_log_entity", + columns: new[] { "admin_log_id", "admin_log_round_id" }); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index b7fa1a884350be..e26527be9d9226 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -133,36 +133,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("admin_log", (string)null); }); - modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => - { - b.Property("Uid") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("uid"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Uid")); - - b.Property("AdminLogId") - .HasColumnType("integer") - .HasColumnName("admin_log_id"); - - b.Property("AdminLogRoundId") - .HasColumnType("integer") - .HasColumnName("admin_log_round_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Uid") - .HasName("PK_admin_log_entity"); - - b.HasIndex("AdminLogId", "AdminLogRoundId") - .HasDatabaseName("IX_admin_log_entity_admin_log_id_admin_log_round_id"); - - b.ToTable("admin_log_entity", (string)null); - }); - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => { b.Property("PlayerUserId") @@ -1312,14 +1282,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Round"); }); - modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => - { - b.HasOne("Content.Server.Database.AdminLog", null) - .WithMany("Entities") - .HasForeignKey("AdminLogId", "AdminLogRoundId") - .HasConstraintName("FK_admin_log_entity_admin_log_admin_log_id_admin_log_round_id"); - }); - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => { b.HasOne("Content.Server.Database.Player", "Player") @@ -1677,8 +1639,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) modelBuilder.Entity("Content.Server.Database.AdminLog", b => { - b.Navigation("Entities"); - b.Navigation("Players"); }); diff --git a/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.Designer.cs new file mode 100644 index 00000000000000..887e157ec34572 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.Designer.cs @@ -0,0 +1,1667 @@ +// +using System; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteServerDbContext))] + [Migration("20231024041159_DropAdminLogEntity")] + partial class DropAdminLogEntity + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.4"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_flag_id"); + + b.Property("AdminId") + .HasColumnType("TEXT") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("INTEGER") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("Id") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("INTEGER") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("Id", "RoundId") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_log_round_id"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("LogId") + .HasColumnType("INTEGER") + .HasColumnName("log_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("PlayerUserId", "LogId", "RoundId") + .HasName("PK_admin_log_player"); + + b.HasIndex("LogId", "RoundId"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_messages_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("INTEGER") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_notes_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("INTEGER") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_flag_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_watchlists_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("antag_id"); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("assigned_user_id_id"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b.Property("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("INTEGER") + .HasColumnName("denied"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("job_id"); + + b.Property("JobName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("play_time_id"); + + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("TEXT") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b.Property("FirstSeenTime") + .HasColumnType("TEXT") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("TEXT") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenHWId") + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b.Property("LastSeenTime") + .HasColumnType("TEXT") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("INTEGER") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("Age") + .HasColumnType("INTEGER") + .HasColumnName("age"); + + b.Property("Backpack") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("clothing"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("ServerId") + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("StartDate") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("INTEGER") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_hit_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("INTEGER") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("role_unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("trait_id"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("uploaded_resource_log_id"); + + b.Property("Data") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("INTEGER") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("INTEGER") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("LogId", "RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_log_id_round_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.cs b/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.cs new file mode 100644 index 00000000000000..59e9efce4ea263 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.cs @@ -0,0 +1,46 @@ +#nullable disable + +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// + public partial class DropAdminLogEntity : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "admin_log_entity"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "admin_log_entity", + columns: table => new + { + uid = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + admin_log_id = table.Column(type: "INTEGER", nullable: true), + admin_log_round_id = table.Column(type: "INTEGER", nullable: true), + name = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_admin_log_entity", x => x.uid); + table.ForeignKey( + name: "FK_admin_log_entity_admin_log_admin_log_id_admin_log_round_id", + columns: x => new { x.admin_log_id, x.admin_log_round_id }, + principalTable: "admin_log", + principalColumns: new[] { "admin_log_id", "round_id" }); + }); + + migrationBuilder.CreateIndex( + name: "IX_admin_log_entity_admin_log_id_admin_log_round_id", + table: "admin_log_entity", + columns: new[] { "admin_log_id", "admin_log_round_id" }); + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index c20743b94dc9dd..5afea5b58f5094 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -119,34 +119,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("admin_log", (string)null); }); - modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => - { - b.Property("Uid") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("uid"); - - b.Property("AdminLogId") - .HasColumnType("INTEGER") - .HasColumnName("admin_log_id"); - - b.Property("AdminLogRoundId") - .HasColumnType("INTEGER") - .HasColumnName("admin_log_round_id"); - - b.Property("Name") - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.HasKey("Uid") - .HasName("PK_admin_log_entity"); - - b.HasIndex("AdminLogId", "AdminLogRoundId") - .HasDatabaseName("IX_admin_log_entity_admin_log_id_admin_log_round_id"); - - b.ToTable("admin_log_entity", (string)null); - }); - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => { b.Property("PlayerUserId") @@ -1242,14 +1214,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Round"); }); - modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => - { - b.HasOne("Content.Server.Database.AdminLog", null) - .WithMany("Entities") - .HasForeignKey("AdminLogId", "AdminLogRoundId") - .HasConstraintName("FK_admin_log_entity_admin_log_admin_log_id_admin_log_round_id"); - }); - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => { b.HasOne("Content.Server.Database.Player", "Player") @@ -1607,8 +1571,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) modelBuilder.Entity("Content.Server.Database.AdminLog", b => { - b.Navigation("Entities"); - b.Navigation("Players"); }); diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index 298f849b476f55..c59d2d9255c955 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -516,9 +516,6 @@ public class AdminLog [Required, Column(TypeName = "jsonb")] public JsonDocument Json { get; set; } = default!; public List Players { get; set; } = default!; - - // Unused - public List Entities { get; set; } = default!; } public class AdminLogPlayer @@ -531,13 +528,6 @@ public class AdminLogPlayer [ForeignKey("LogId,RoundId")] public AdminLog Log { get; set; } = default!; } - // Unused - public class AdminLogEntity - { - [Required, Key] public int Uid { get; set; } - public string? Name { get; set; } = default!; - } - // Used by SS14.Admin public interface IBanCommon where TUnban : IUnbanCommon { From ddf1fd98ff4acfc433d5bc4f2cd2a917446782f3 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Tue, 24 Oct 2023 02:18:46 -0400 Subject: [PATCH 228/245] fix magnet trigger for artifacts (#21213) --- .../Triggers/Systems/ArtifactMagnetTriggerSystem.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs index 0220c2ce1aeb0b..f51d617df85aef 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs +++ b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs @@ -6,7 +6,7 @@ namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; /// -/// This handles... +/// This handles artifacts that are activated by magnets, both salvage and magboots. /// public sealed class ArtifactMagnetTriggerSystem : EntitySystem { @@ -22,20 +22,20 @@ public override void Update(float frameTime) { base.Update(frameTime); - var artifactQuery = EntityQuery().ToHashSet(); - if (!artifactQuery.Any()) + if (!EntityQuery().Any()) return; List toActivate = new(); //assume that there's more instruments than artifacts var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var magboot, out var magXform)) + while (query.MoveNext(out _, out var magboot, out var magXform)) { if (!magboot.On) continue; - foreach (var (trigger, xform) in artifactQuery) + var artiQuery = EntityQueryEnumerator(); + while (artiQuery.MoveNext(out var artifactUid, out var trigger, out var xform)) { if (!magXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) continue; @@ -43,7 +43,7 @@ public override void Update(float frameTime) if (distance > trigger.Range) continue; - toActivate.Add(uid); + toActivate.Add(artifactUid); } } From 51885f4b4aefd877d743d31fbf5d5a037f10493c Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 24 Oct 2023 02:19:50 -0400 Subject: [PATCH 229/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 653c12af922305..f1e19bf919674b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Nimfar11 - changes: - - {message: Adds a Secret Door for construction, type: Add} - id: 4545 - time: '2023-08-13T07:10:46.0000000+00:00' - author: Errant changes: - {message: Bolas are now easier to make and more durable., type: Tweak} @@ -2909,3 +2904,8 @@ Entries: dagger.), type: Tweak} id: 5044 time: '2023-10-23T14:35:33.0000000+00:00' +- author: EmoGarbage404 + changes: + - {message: Fixed activating artifacts with magboots., type: Fix} + id: 5045 + time: '2023-10-24T06:18:46.0000000+00:00' From 4bb355ab76e96ea64560beba65060327f1c2654b Mon Sep 17 00:00:00 2001 From: Stray-Pyramid Date: Tue, 24 Oct 2023 19:20:46 +1300 Subject: [PATCH 230/245] Fix ore bag not picking up artifact fragments (#21195) --- .../Storage/Components/MagnetPickupComponent.cs | 14 -------------- .../Storage/EntitySystems/MagnetPickupSystem.cs | 2 +- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/Content.Shared/Storage/Components/MagnetPickupComponent.cs b/Content.Shared/Storage/Components/MagnetPickupComponent.cs index 300055a62a64db..c57b7c4e85a357 100644 --- a/Content.Shared/Storage/Components/MagnetPickupComponent.cs +++ b/Content.Shared/Storage/Components/MagnetPickupComponent.cs @@ -1,6 +1,4 @@ using Content.Shared.Inventory; -using Content.Shared.Tag; -using Content.Shared.Whitelist; namespace Content.Server.Storage.Components; @@ -21,16 +19,4 @@ public sealed partial class MagnetPickupComponent : Component [ViewVariables(VVAccess.ReadWrite), DataField("range")] public float Range = 1f; - - [ValidatePrototypeId] - private const string DefaultTag = "Ore"; - - [ViewVariables(VVAccess.ReadWrite), DataField("whitelist")] - public EntityWhitelist? Whitelist = new() - { - Tags = new List() - { - DefaultTag, - } - }; } diff --git a/Content.Shared/Storage/EntitySystems/MagnetPickupSystem.cs b/Content.Shared/Storage/EntitySystems/MagnetPickupSystem.cs index 3bbc75732ec901..16657bdae4af7b 100644 --- a/Content.Shared/Storage/EntitySystems/MagnetPickupSystem.cs +++ b/Content.Shared/Storage/EntitySystems/MagnetPickupSystem.cs @@ -72,7 +72,7 @@ public override void Update(float frameTime) foreach (var near in _lookup.GetEntitiesInRange(uid, comp.Range, LookupFlags.Dynamic | LookupFlags.Sundries)) { - if (comp.Whitelist?.IsValid(near, EntityManager) == false) + if (storage.Whitelist?.IsValid(near, EntityManager) == false) continue; if (!_physicsQuery.TryGetComponent(near, out var physics) || physics.BodyStatus != BodyStatus.OnGround) From 29889f5ba75efab9f1e11592863c66a19014fdb9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 24 Oct 2023 02:21:50 -0400 Subject: [PATCH 231/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f1e19bf919674b..2d00c7a9ee1426 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,9 +1,4 @@ Entries: -- author: Errant - changes: - - {message: Bolas are now easier to make and more durable., type: Tweak} - id: 4546 - time: '2023-08-13T07:11:11.0000000+00:00' - author: Doru991 changes: - {message: 'Wheelchairs, unicycles and similar vehicles no longer act as a magical @@ -2909,3 +2904,8 @@ Entries: - {message: Fixed activating artifacts with magboots., type: Fix} id: 5045 time: '2023-10-24T06:18:46.0000000+00:00' +- author: Stray-Pyramid + changes: + - {message: Ore bags now pickup artifact fragments as well as ores, type: Fix} + id: 5046 + time: '2023-10-24T06:20:46.0000000+00:00' From 4e7bdc66582fa0a4418a7c4759d9b2f7062f6805 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Tue, 24 Oct 2023 17:22:05 +1100 Subject: [PATCH 232/245] Fix electrocution resolve error log (#21179) --- Content.Server/Electrocution/ElectrocutionSystem.cs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/Content.Server/Electrocution/ElectrocutionSystem.cs b/Content.Server/Electrocution/ElectrocutionSystem.cs index 6c962667404a4f..8ddc8540c04a0b 100644 --- a/Content.Server/Electrocution/ElectrocutionSystem.cs +++ b/Content.Server/Electrocution/ElectrocutionSystem.cs @@ -192,18 +192,13 @@ private void OnElectrifiedHandInteract(EntityUid uid, ElectrifiedComponent elect private void OnLightAttacked(EntityUid uid, PoweredLightComponent component, AttackedEvent args) { - - if (!_meleeWeapon.GetDamage(args.Used, args.User).Any()) - return; - - if (args.Used != args.User) + if (!component.CurrentLit || args.Used != args.User) return; - if (component.CurrentLit == false) + if (!_meleeWeapon.GetDamage(args.Used, args.User).Any()) return; DoCommonElectrocution(args.User, uid, component.UnarmedHitShock, component.UnarmedHitStun, false, 1); - } private void OnElectrifiedInteractUsing(EntityUid uid, ElectrifiedComponent electrified, InteractUsingEvent args) @@ -498,7 +493,7 @@ private void OnRandomInsulationMapInit(EntityUid uid, RandomInsulationComponent private void PlayElectrocutionSound(EntityUid targetUid, EntityUid sourceUid, ElectrifiedComponent? electrified = null) { - if (!Resolve(sourceUid, ref electrified) || !electrified.PlaySoundOnShock) + if (!Resolve(sourceUid, ref electrified, false) || !electrified.PlaySoundOnShock) { return; } From 94796ddeee5a228f3398719dbee968e32a56ec8d Mon Sep 17 00:00:00 2001 From: Vasilis Date: Tue, 24 Oct 2023 09:47:53 +0200 Subject: [PATCH 233/245] Slightly better locale for revs (#21168) --- .../en-US/game-ticking/game-presets/preset-revolutionary.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl index 8958802161896a..c6e925d0c46e24 100644 --- a/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl +++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-revolutionary.ftl @@ -54,8 +54,8 @@ rev-won = The Head Revs survived and killed all of Command. rev-lost = Command survived and killed all of the Head Revs. -rev-stalemate = All of the Head Revs died and so did all of Command. We'll call it a draw. +rev-stalemate = All of the Head Revs and Command died. It's a draw. -rev-reverse-stalemate = I think the Head Revs and Command forgot to fight because they are both still alive. +rev-reverse-stalemate = Both Command and Head Revs survived. From fe3bcda7f2f08f458a918854d119a9f22de3e20b Mon Sep 17 00:00:00 2001 From: Whisper <121047731+QuietlyWhisper@users.noreply.github.com> Date: Tue, 24 Oct 2023 03:52:57 -0400 Subject: [PATCH 234/245] Remove noRot from asteroids (#21219) --- Resources/Prototypes/Entities/Structures/Walls/asteroid.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml index e64af7cbaec4fa..b36ba51ee0e5a5 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml @@ -18,7 +18,6 @@ - type: SmoothEdge - type: Sprite sprite: Structures/Walls/rock.rsi - noRot: true layers: - state: rock_asteroid - map: [ "enum.EdgeLayer.South" ] @@ -77,7 +76,6 @@ components: - type: Sprite sprite: Structures/Walls/rock.rsi - noRot: true layers: - state: rock_asteroid_ore - map: [ "enum.EdgeLayer.South" ] @@ -98,7 +96,6 @@ components: - type: Sprite sprite: Structures/Walls/rock.rsi - noRot: true layers: - state: rock_asteroid_ore1 - map: [ "enum.EdgeLayer.South" ] From 47b244b191f5e0dcea2ef63c0ff273ac81c379aa Mon Sep 17 00:00:00 2001 From: Morb <14136326+Morb0@users.noreply.github.com> Date: Tue, 24 Oct 2023 10:55:46 +0300 Subject: [PATCH 235/245] Hijack shuttle objective (#19621) Co-authored-by: DrSmugleaf --- .../Components/HijackShuttleComponent.cs | 8 ++ .../Systems/HijackShuttleConditionSystem.cs | 104 ++++++++++++++++++ .../Systems/EmergencyShuttleSystem.Console.cs | 8 ++ .../conditions/hijack-shuttle-condition.ftl | 2 + .../Prototypes/Objectives/objectiveGroups.yml | 1 + 5 files changed, 123 insertions(+) create mode 100644 Content.Server/Objectives/Components/HijackShuttleComponent.cs create mode 100644 Content.Server/Objectives/Systems/HijackShuttleConditionSystem.cs create mode 100644 Resources/Locale/en-US/objectives/conditions/hijack-shuttle-condition.ftl diff --git a/Content.Server/Objectives/Components/HijackShuttleComponent.cs b/Content.Server/Objectives/Components/HijackShuttleComponent.cs new file mode 100644 index 00000000000000..010f6f1407ce87 --- /dev/null +++ b/Content.Server/Objectives/Components/HijackShuttleComponent.cs @@ -0,0 +1,8 @@ +using Content.Server.Objectives.Systems; + +namespace Content.Server.Objectives.Components; + +[RegisterComponent, Access(typeof(HijackShuttleConditionSystem))] +public sealed partial class HijackShuttleComponent : Component +{ +} diff --git a/Content.Server/Objectives/Systems/HijackShuttleConditionSystem.cs b/Content.Server/Objectives/Systems/HijackShuttleConditionSystem.cs new file mode 100644 index 00000000000000..5ea560297c50cc --- /dev/null +++ b/Content.Server/Objectives/Systems/HijackShuttleConditionSystem.cs @@ -0,0 +1,104 @@ +using Content.Server.Objectives.Components; +using Content.Server.Shuttles.Components; +using Content.Server.Shuttles.Systems; +using Content.Shared.Cuffs.Components; +using Content.Shared.Humanoid; +using Content.Shared.Mind; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.Objectives.Components; +using Content.Shared.Roles; +using Robust.Shared.Player; + +namespace Content.Server.Objectives.Systems; + +public sealed class HijackShuttleConditionSystem : EntitySystem +{ + [Dependency] private readonly EmergencyShuttleSystem _emergencyShuttle = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly SharedRoleSystem _role = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGetProgress); + } + + private void OnGetProgress(EntityUid uid, HijackShuttleComponent comp, ref ObjectiveGetProgressEvent args) + { + args.Progress = GetProgress(args.MindId, args.Mind); + } + + private float GetProgress(EntityUid mindId, MindComponent mind) + { + // not escaping alive if you're deleted/dead + if (mind.OwnedEntity == null || _mind.IsCharacterDeadIc(mind)) + return 0f; + + // You're not escaping if you're restrained! + if (TryComp(mind.OwnedEntity, out var cuffed) && cuffed.CuffedHandCount > 0) + return 0f; + + // There no emergency shuttles + if (!_emergencyShuttle.EmergencyShuttleArrived) + return 0f; + + // Check hijack for each emergency shuttle + foreach (var stationData in EntityQuery()) + { + if (stationData.EmergencyShuttle == null) + continue; + + if (IsShuttleHijacked(stationData.EmergencyShuttle.Value, mindId)) + return 1f; + } + + return 0f; + } + + private bool IsShuttleHijacked(EntityUid shuttleGridId, EntityUid mindId) + { + var gridPlayers = Filter.BroadcastGrid(shuttleGridId).Recipients; + var humanoids = GetEntityQuery(); + var cuffable = GetEntityQuery(); + EntityQuery(); + + var agentOnShuttle = false; + foreach (var player in gridPlayers) + { + if (player.AttachedEntity == null || + !_mind.TryGetMind(player.AttachedEntity.Value, out var crewMindId, out _)) + continue; + + if (mindId == crewMindId) + { + agentOnShuttle = true; + continue; + } + + var isHumanoid = humanoids.HasComponent(player.AttachedEntity.Value); + if (!isHumanoid) // Only humanoids count as enemies + continue; + + var isAntagonist = _role.MindIsAntagonist(mindId); + if (isAntagonist) // Allow antagonist + continue; + + var isPersonIncapacitated = _mobState.IsIncapacitated(player.AttachedEntity.Value); + if (isPersonIncapacitated) // Allow dead and crit + continue; + + var isPersonCuffed = + cuffable.TryGetComponent(player.AttachedEntity.Value, out var cuffed) + && cuffed.CuffedHandCount > 0; + if (isPersonCuffed) // Allow handcuffed + continue; + + return false; + } + + return agentOnShuttle; + } +} diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs index 62478082d88a4a..deb2ba256dd1c4 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs @@ -5,6 +5,7 @@ using Content.Shared.Access; using Content.Shared.CCVar; using Content.Shared.Database; +using Content.Shared.Emag.Systems; using Content.Shared.Popups; using Content.Shared.Shuttles.BUIStates; using Content.Shared.Shuttles.Events; @@ -89,6 +90,7 @@ private void InitializeEmergencyConsole() SubscribeLocalEvent(OnEmergencyRepeal); SubscribeLocalEvent(OnEmergencyRepealAll); SubscribeLocalEvent(OnEmergencyOpenAttempt); + SubscribeLocalEvent(OnEmagged); SubscribeLocalEvent(OnEscapeUnpaused); } @@ -103,6 +105,12 @@ private void OnEmergencyOpenAttempt(EntityUid uid, EmergencyShuttleConsoleCompon } } + private void OnEmagged(EntityUid uid, EmergencyShuttleConsoleComponent component, ref GotEmaggedEvent args) + { + _logger.Add(LogType.EmergencyShuttle, LogImpact.Extreme, $"{ToPrettyString(args.UserUid):player} emagged shuttle console for early launch"); + EarlyLaunch(); + } + private void SetAuthorizeTime(float obj) { _authorizeTime = obj; diff --git a/Resources/Locale/en-US/objectives/conditions/hijack-shuttle-condition.ftl b/Resources/Locale/en-US/objectives/conditions/hijack-shuttle-condition.ftl new file mode 100644 index 00000000000000..5a0c1fd88ba502 --- /dev/null +++ b/Resources/Locale/en-US/objectives/conditions/hijack-shuttle-condition.ftl @@ -0,0 +1,2 @@ +objective-condition-hijack-shuttle-title = Hijack emergency shuttle +objective-condition-hijack-shuttle-description = Leave on the shuttle free and clear of the loyal Nanotrasen crew on board. Use ANY methods available to you. Syndicate agents, Nanotrasen enemies, and handcuffed hostages may remain alive on the shuttle. Ignore assistance from anyone other than a support agent. diff --git a/Resources/Prototypes/Objectives/objectiveGroups.yml b/Resources/Prototypes/Objectives/objectiveGroups.yml index 2ddf78e032ba8a..7d6c9a48a344e8 100644 --- a/Resources/Prototypes/Objectives/objectiveGroups.yml +++ b/Resources/Prototypes/Objectives/objectiveGroups.yml @@ -33,6 +33,7 @@ weights: EscapeShuttleObjective: 1 DieObjective: 0.05 + HijackShuttleObjective: 0.02 - type: weightedRandom id: TraitorObjectiveGroupSocial From c09633fae313e17ae6a1e0bafd2b607df45a61bb Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 24 Oct 2023 03:56:50 -0400 Subject: [PATCH 236/245] Automatic changelog update --- Resources/Changelog/Changelog.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2d00c7a9ee1426..259437e311240c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Doru991 - changes: - - {message: 'Wheelchairs, unicycles and similar vehicles no longer act as a magical - barrier against stuns.', type: Fix} - - {message: Driving while asleep is no longer possible., type: Fix} - id: 4547 - time: '2023-08-13T07:13:19.0000000+00:00' - author: Potato1234_x changes: - {message: Vending machine sprites have been polished up., type: Tweak} @@ -2909,3 +2902,9 @@ Entries: - {message: Ore bags now pickup artifact fragments as well as ores, type: Fix} id: 5046 time: '2023-10-24T06:20:46.0000000+00:00' +- author: Morb0 + changes: + - {message: Syndicate have issued a new challenge objective for traitors with shuttle + hijacking, type: Add} + id: 5047 + time: '2023-10-24T07:55:47.0000000+00:00' From 41a9b8868077f2b7cb811b082273032c397088be Mon Sep 17 00:00:00 2001 From: Vasilis Date: Tue, 24 Oct 2023 10:35:39 +0200 Subject: [PATCH 237/245] Make it a lil easier to restrict what can go in a cannon (#21093) --- .../Entities/Objects/Weapons/Guns/Projectiles/arrows.yml | 1 + .../Entities/Objects/Weapons/Guns/pneumatic_cannon.yml | 2 +- Resources/Prototypes/tags.yml | 9 ++++++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml index 7dd6360a4059a2..32a2ea4623f3ad 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml @@ -35,6 +35,7 @@ - type: Tag tags: - Arrow + - CannonRestrict - type: Projectile deleteOnCollide: false onlyCollideWhenShot: true diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml index f9413d6c673ced..9f3aec5c39bcbb 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml @@ -35,7 +35,7 @@ capacity: 30 blacklist: tags: - - Arrow + - CannonRestrict - type: Appearance - type: ItemMapper containerWhitelist: [gas_tank] diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index d7397d483c0899..a74fde7710ea01 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -3,7 +3,7 @@ - type: Tag id: AirAlarmElectronics - + - type: Tag id: Airlock @@ -234,6 +234,9 @@ - type: Tag id: CanPilot + +- type: Tag + id: CannonRestrict - type: Tag id: CannotSuicide @@ -493,7 +496,7 @@ - type: Tag id: GeigerCounter - + - type: Tag id: GlassAirlock @@ -562,7 +565,7 @@ - type: Tag id: HighRiskItem - + - type: Tag id: HighSecDoor From c500a63ada2fc6ed8cd2e74b4692e687829da1b7 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 24 Oct 2023 19:40:30 +1100 Subject: [PATCH 238/245] Add placementreplacement to wallrocks (#21220) --- Resources/Prototypes/Entities/Structures/Walls/asteroid.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml index b36ba51ee0e5a5..9b513b2da19bee 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml @@ -149,6 +149,8 @@ parent: BaseStructure name: rock components: + - type: PlacementReplacement + key: walls - type: SoundOnGather - type: Gatherable whitelist: From 7ba0ea29263acab3bd641237945dd0e1319b2bc0 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Tue, 24 Oct 2023 20:19:08 +1100 Subject: [PATCH 239/245] IPlayerManager refactor (#21215) --- Content.Client/Actions/ActionsSystem.cs | 9 +- .../Managers/ClientAdminManager.cs | 2 +- .../UI/Tabs/AdminTab/TeleportWindow.xaml.cs | 1 - Content.Client/Alerts/ClientAlertsSystem.cs | 9 +- .../CharacterInfo/CharacterInfoSystem.cs | 12 -- .../Construction/ConstructionSystem.cs | 6 +- Content.Client/Drugs/DrugOverlaySystem.cs | 9 +- Content.Client/Drunk/DrunkSystem.cs | 9 +- Content.Client/Eye/Blinding/BlindingSystem.cs | 18 +- .../Eye/Blinding/BlurryVisionSystem.cs | 11 +- Content.Client/Eye/EyeLerpingSystem.cs | 4 +- Content.Client/Fullscreen/FullscreenHook.cs | 2 +- Content.Client/Gameplay/GameplayStateBase.cs | 2 +- Content.Client/Ghost/GhostSystem.cs | 12 +- Content.Client/Hands/Systems/HandsSystem.cs | 8 +- .../HealthOverlay/HealthOverlaySystem.cs | 13 +- .../Inventory/ClientInventorySystem.cs | 9 +- Content.Client/Mind/MindSystem.cs | 20 +++ Content.Client/Overlays/EquipmentHudSystem.cs | 9 +- .../Physics/Controllers/MoverController.cs | 17 +- Content.Client/Players/PlayerSystem.cs | 4 +- Content.Client/Popups/PopupSystem.cs | 1 - .../ReplaySpectatorSystem.Movement.cs | 2 +- .../ReplaySpectatorSystem.Position.cs | 12 +- .../ReplaySpectatorSystem.Spectate.cs | 14 +- .../Replay/Spectator/ReplaySpectatorSystem.cs | 3 +- Content.Client/Sandbox/SandboxSystem.cs | 2 +- Content.Client/Traits/ParacusiaSystem.cs | 6 +- .../Character/CharacterUIController.cs | 8 +- .../Systems/Chat/ChatUIController.cs | 29 +--- .../DamageOverlayUiController.cs | 10 +- .../Systems/Sandbox/SandboxUIController.cs | 2 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 3 +- Content.IntegrationTests/Pair/TestPair.cs | 8 +- .../Tests/Actions/ActionsAddedTest.cs | 4 +- .../Tests/Administration/Logs/AddTests.cs | 8 +- .../Tests/Administration/Logs/QueryTests.cs | 5 +- .../Tests/Cleanup/EuiManagerTest.cs | 2 +- .../Tests/Interaction/InteractionTest.cs | 5 +- .../Tests/Minds/GhostRoleTests.cs | 3 +- .../Tests/Minds/MindTests.EntityDeletion.cs | 13 +- .../Tests/Minds/MindTests.Helpers.cs | 20 ++- .../Tests/Minds/MindTests.ReconnectTests.cs | 9 +- .../Tests/Minds/MindTests.cs | 30 ++-- .../Tests/Toolshed/ToolshedTest.cs | 7 +- Content.MapRenderer/Painters/MapPainter.cs | 2 +- .../AdminPermsChangedEventArgs.cs | 6 +- .../Administration/Commands/AGhost.cs | 3 +- .../Commands/AdminWhoCommand.cs | 3 +- .../Commands/AnnounceUiCommand.cs | 3 +- .../Administration/Commands/BanCommand.cs | 11 +- .../Administration/Commands/BanListCommand.cs | 4 +- .../Commands/BanPanelCommand.cs | 8 +- .../Administration/Commands/ControlMob.cs | 14 +- .../Administration/Commands/DSay.cs | 4 +- .../Administration/Commands/DeAdminCommand.cs | 4 +- .../Commands/ExplosionCommand.cs | 3 +- .../Administration/Commands/FaxUiCommand.cs | 3 +- .../Commands/OpenAdminLogsCommand.cs | 3 +- .../Commands/OpenAdminNotesCommand.cs | 4 +- .../Commands/OpenPermissionsCommand.cs | 4 +- .../Commands/OpenUserVisibleNotesCommand.cs | 3 +- .../Administration/Commands/PardonCommand.cs | 3 +- .../Commands/PlayGlobalSoundCommand.cs | 1 - .../Administration/Commands/ReAdminCommand.cs | 4 +- .../Administration/Commands/SetAdminOOC.cs | 4 +- .../Administration/Commands/SetMindCommand.cs | 1 + .../Commands/SetOutfitCommand.cs | 3 +- .../Administration/Commands/WarpCommand.cs | 4 +- .../ContentNetworkResourceManager.cs | 4 +- .../Logs/AdminLogManager.Json.cs | 6 +- .../Logs/Converters/PlayerSessionConverter.cs | 6 +- .../Administration/Managers/AdminManager.cs | 52 +++--- .../Administration/Managers/BanManager.cs | 3 +- .../Administration/Managers/IAdminManager.cs | 15 +- .../Administration/Managers/IBanManager.cs | 4 +- .../Administration/Notes/AdminNotesManager.cs | 2 +- .../Administration/Notes/AdminNotesSystem.cs | 2 +- .../Notes/IAdminNotesManager.cs | 2 +- .../QuickDialogSystem.OpenDialog.cs | 10 +- .../Administration/QuickDialogSystem.cs | 7 +- .../Administration/Systems/AdminSystem.cs | 8 +- .../Systems/AdminTestArenaSystem.cs | 4 +- .../Administration/Systems/AdminVerbSystem.cs | 18 +- .../Administration/Systems/BwoinkSystem.cs | 5 +- .../Administration/Toolshed/AdminsCommand.cs | 6 +- Content.Server/Afk/AFKSystem.cs | 9 +- Content.Server/Afk/AfkManager.cs | 15 +- Content.Server/Afk/Events/AFKEvent.cs | 6 +- Content.Server/Afk/Events/UnAFKEvent.cs | 6 +- Content.Server/Alert/Commands/ClearAlert.cs | 3 +- Content.Server/Alert/Commands/ShowAlert.cs | 3 +- .../Commands/SetAlertLevelCommand.cs | 5 +- Content.Server/Antag/AntagSelectionSystem.cs | 9 +- .../Arcade/BlockGame/BlockGame.Ui.cs | 20 +-- .../BlockGame/BlockGameArcadeComponent.cs | 6 +- .../Arcade/BlockGame/BlockGameArcadeSystem.cs | 6 +- .../Atmos/Commands/DeleteGasCommand.cs | 3 +- .../Atmos/Commands/ShowAtmosCommand.cs | 3 +- .../EntitySystems/AtmosDebugOverlaySystem.cs | 11 +- .../Atmos/EntitySystems/GasTankSystem.cs | 7 - .../EntitySystems/GasTileOverlaySystem.cs | 7 +- .../Body/Commands/AddHandCommand.cs | 3 +- .../Body/Commands/AttachBodyPartCommand.cs | 4 +- .../Body/Commands/DestroyMechanismCommand.cs | 3 +- .../Body/Commands/RemoveHandCommand.cs | 3 +- Content.Server/Body/Systems/BodySystem.cs | 2 +- .../Cargo/Systems/CargoSystem.Orders.cs | 2 +- .../CartridgeLoader/CartridgeLoaderSystem.cs | 6 +- .../Chat/Commands/AdminChatCommand.cs | 3 +- Content.Server/Chat/Commands/LOOCCommand.cs | 3 +- Content.Server/Chat/Commands/MeCommand.cs | 3 +- Content.Server/Chat/Commands/OOCCommand.cs | 3 +- Content.Server/Chat/Commands/SayCommand.cs | 3 +- .../Chat/Commands/SuicideCommand.cs | 3 +- .../Chat/Commands/WhisperCommand.cs | 3 +- Content.Server/Chat/Managers/ChatManager.cs | 16 +- Content.Server/Chat/Managers/IChatManager.cs | 12 +- Content.Server/Chat/Systems/ChatSystem.cs | 21 ++- .../EntitySystems/ChemistryGuideDataSystem.cs | 1 + Content.Server/Chunking/ChunkingSystem.cs | 6 +- Content.Server/Commands/CommandUtils.cs | 7 +- .../Commands/FixRotationsCommand.cs | 3 +- .../Commands/TileReplaceCommand.cs | 3 +- .../Construction/Commands/TileWallsCommand.cs | 5 +- .../ConstructionSystem.Initial.cs | 2 +- .../CrewManifest/CrewManifestSystem.cs | 17 +- .../Damage/Commands/GodModeCommand.cs | 4 +- .../Damage/ForceSay/DamageForceSaySystem.cs | 1 - Content.Server/Database/UserDbDataManager.cs | 14 +- Content.Server/Decals/DecalSystem.cs | 13 +- .../Disposal/TubeConnectionsCommand.cs | 3 +- Content.Server/EUI/BaseEui.cs | 2 +- Content.Server/EUI/EuiManager.cs | 2 +- .../EntityList/SpawnEntityListCommand.cs | 3 +- Content.Server/Examine/ExamineSystem.cs | 3 +- .../PuddleDebugDebugOverlaySystem.cs | 8 +- Content.Server/Fluids/ShowFluidsCommand.cs | 3 +- .../GameTicking/Commands/JoinGameCommand.cs | 3 +- .../GameTicking/Commands/ObserveCommand.cs | 3 +- .../GameTicking/Commands/RespawnCommand.cs | 2 +- .../Commands/ToggleReadyCommand.cs | 3 +- .../GameTicking/GameTicker.GamePreset.cs | 6 +- .../GameTicking/GameTicker.Lobby.cs | 8 +- .../GameTicking/GameTicker.Player.cs | 19 +- .../GameTicking/GameTicker.RoundFlow.cs | 24 ++- .../GameTicking/GameTicker.Spawning.cs | 28 +-- .../Rules/Components/TraitorRuleComponent.cs | 4 +- .../Rules/InactivityTimeRestartRuleSystem.cs | 1 + .../GameTicking/Rules/NukeopsRuleSystem.cs | 18 +- .../GameTicking/Rules/PiratesRuleSystem.cs | 4 +- .../GameTicking/Rules/RespawnRuleSystem.cs | 1 + .../GameTicking/Rules/TraitorRuleSystem.cs | 13 +- .../GameTicking/Rules/ZombieRuleSystem.cs | 10 +- Content.Server/Ghost/Ghost.cs | 3 +- .../Roles/Components/TakeGhostRoleEvent.cs | 2 +- Content.Server/Ghost/Roles/GhostRoleSystem.cs | 10 +- .../Gravity/GravityGeneratorSystem.cs | 4 +- Content.Server/Hands/Systems/HandsSystem.cs | 9 +- .../HumanoidAppearanceSystem.Modifier.cs | 5 +- .../Instruments/InstrumentComponent.cs | 4 +- .../Instruments/InstrumentSystem.cs | 6 +- .../Interaction/InteractionSystem.cs | 1 - Content.Server/Interaction/TilePryCommand.cs | 5 +- .../MagicMirror/MagicMirrorSystem.cs | 5 +- Content.Server/Mapping/MappingCommand.cs | 2 +- Content.Server/Maps/GridDraggingSystem.cs | 9 +- Content.Server/Medical/DefibrillatorSystem.cs | 2 +- Content.Server/Mind/Commands/RenameCommand.cs | 1 + Content.Server/Mind/MindSystem.cs | 162 +++++++++++------- Content.Server/Mind/Toolshed/MindCommand.cs | 6 +- Content.Server/Motd/MOTDCommand.cs | 7 +- Content.Server/Motd/MOTDSystem.cs | 14 +- Content.Server/Motd/SetMOTDCommand.cs | 7 +- .../Movement/Systems/LagCompensationSystem.cs | 2 +- Content.Server/NPC/Commands/NPCCommand.cs | 3 +- Content.Server/NPC/HTN/HTNSystem.cs | 7 +- .../NPC/Pathfinding/PathfindingSystem.cs | 4 +- .../NPC/Systems/NPCSteeringSystem.cs | 4 +- .../EntitySystems/NodeGroupSystem.cs | 7 +- Content.Server/Nutrition/Hungry.cs | 4 +- .../Commands/ListObjectivesCommand.cs | 2 +- Content.Server/PDA/PdaSystem.cs | 8 +- Content.Server/PDA/Ringer/RingerSystem.cs | 3 +- Content.Server/Paper/PaperSystem.cs | 6 +- Content.Server/Parallax/BiomeSystem.cs | 3 +- .../ParticleAcceleratorSystem.ControlBox.cs | 17 +- .../ParticleAcceleratorSystem.Parts.cs | 4 +- .../PlayTimeTrackingManager.cs | 40 ++--- .../PlayTimeTrackingSystem.cs | 13 +- Content.Server/Players/PlayerData.cs | 30 ---- Content.Server/Players/PlayerSystem.cs | 4 +- .../Pointing/EntitySystems/PointingSystem.cs | 5 +- Content.Server/Popups/PopupSystem.cs | 1 - Content.Server/Prayer/PrayerSystem.cs | 7 +- .../Managers/IServerPreferencesManager.cs | 8 +- .../Managers/ServerPreferencesManager.cs | 8 +- Content.Server/Pulling/PullingSystem.cs | 2 +- .../Systems/RadiationSystem.Debug.cs | 2 +- .../Research/Systems/ResearchSystem.Client.cs | 3 +- Content.Server/Salvage/SalvageRulerCommand.cs | 3 +- .../Sandbox/Commands/ColorNetworkCommand.cs | 3 +- Content.Server/Sandbox/SandboxSystem.cs | 1 + .../SensorMonitoringConsoleComponent.cs | 2 +- .../SensorMonitoringConsoleSystem.UI.cs | 4 +- .../ServerUpdates/ServerUpdateManager.cs | 1 + .../Systems/EmergencyShuttleSystem.cs | 3 +- .../Silicons/Borgs/BorgSystem.Modules.cs | 2 +- Content.Server/Silicons/Borgs/BorgSystem.cs | 2 +- .../Silicons/Laws/SiliconLawSystem.cs | 5 +- .../Station/Systems/StationJobsSystem.cs | 2 +- .../Storage/EntitySystems/StorageSystem.cs | 3 +- Content.Server/Tabletop/TabletopSession.cs | 4 +- .../Tabletop/TabletopSystem.Session.cs | 8 +- Content.Server/Tabletop/TabletopSystem.cs | 7 +- .../Commands/AdminDebug/ACmdCommand.cs | 4 +- .../Toolshed/Commands/VisualizeCommand.cs | 3 +- .../Uplink/Commands/AddUplinkCommand.cs | 5 +- .../UserInterface/ActivatableUIComponent.cs | 4 +- .../UserInterface/ActivatableUISystem.cs | 8 +- .../UserInterface/StatValuesCommand.cs | 3 +- Content.Server/Verbs/VerbSystem.cs | 5 +- Content.Server/Voting/IVoteHandle.cs | 4 +- .../Voting/Managers/IVoteManager.cs | 6 +- .../Managers/VoteManager.DefaultVotes.cs | 12 +- Content.Server/Voting/Managers/VoteManager.cs | 31 ++-- Content.Server/Voting/VoteCommands.cs | 9 +- Content.Server/Voting/VoteOptions.cs | 8 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 4 +- Content.Server/Wires/WiresSystem.cs | 4 +- .../Systems/ArtifactAnalyzerSystem.cs | 3 +- .../Managers/ISharedAdminManager.cs | 2 +- Content.Shared/Buckle/SharedBuckleSystem.cs | 2 +- .../SharedHandsSystem.Interactions.cs | 2 +- .../Interaction/SharedInteractionSystem.cs | 2 +- .../Mind/Components/MindContainerComponent.cs | 65 +++++-- Content.Shared/Mind/MindComponent.cs | 49 +++--- Content.Shared/Mind/SharedMindSystem.cs | 91 +++++++--- .../Movement/Events/MoveInputEvent.cs | 2 - .../Systems/SharedContentEyeSystem.cs | 2 +- .../Systems/SharedMoverController.Input.cs | 2 +- .../{PlayerData.cs => ContentPlayerData.cs} | 21 +-- Content.Shared/Players/PlayerDataExt.cs | 30 ++++ Content.Shared/Players/SharedPlayerSystem.cs | 4 +- Content.Shared/Popups/SharedPopupSystem.cs | 1 - .../Pulling/Systems/SharedPullingSystem.cs | 2 +- Content.Shared/Roles/Jobs/SharedJobSystem.cs | 2 +- .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 2 +- 248 files changed, 965 insertions(+), 1047 deletions(-) delete mode 100644 Content.Server/Players/PlayerData.cs rename Content.Shared/Players/{PlayerData.cs => ContentPlayerData.cs} (73%) create mode 100644 Content.Shared/Players/PlayerDataExt.cs diff --git a/Content.Client/Actions/ActionsSystem.cs b/Content.Client/Actions/ActionsSystem.cs index 83d927c94bb357..a487e5d8d8ab96 100644 --- a/Content.Client/Actions/ActionsSystem.cs +++ b/Content.Client/Actions/ActionsSystem.cs @@ -2,7 +2,6 @@ using System.Linq; using Content.Shared.Actions; using JetBrains.Annotations; -using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.ContentPack; using Robust.Shared.GameStates; @@ -41,8 +40,8 @@ public sealed class ActionsSystem : SharedActionsSystem public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(HandleComponentState); SubscribeLocalEvent(OnInstantHandleState); @@ -196,12 +195,12 @@ protected override void ActionRemoved(EntityUid performer, EntityUid actionId, A return GetActions(user); } - private void OnPlayerAttached(EntityUid uid, ActionsComponent component, PlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, ActionsComponent component, LocalPlayerAttachedEvent args) { LinkAllActions(component); } - private void OnPlayerDetached(EntityUid uid, ActionsComponent component, PlayerDetachedEvent? args = null) + private void OnPlayerDetached(EntityUid uid, ActionsComponent component, LocalPlayerDetachedEvent? args = null) { UnlinkAllActions(); } diff --git a/Content.Client/Administration/Managers/ClientAdminManager.cs b/Content.Client/Administration/Managers/ClientAdminManager.cs index 8978e2fd6dd982..1a1366c6f2ebad 100644 --- a/Content.Client/Administration/Managers/ClientAdminManager.cs +++ b/Content.Client/Administration/Managers/ClientAdminManager.cs @@ -4,7 +4,7 @@ using Robust.Client.Player; using Robust.Shared.ContentPack; using Robust.Shared.Network; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Client.Administration.Managers diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs b/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs index c5a9bd036a4691..1978b5c3c06501 100644 --- a/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/AdminTab/TeleportWindow.xaml.cs @@ -5,7 +5,6 @@ using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.IoC; -using Robust.Shared.Players; namespace Content.Client.Administration.UI.Tabs.AdminTab { diff --git a/Content.Client/Alerts/ClientAlertsSystem.cs b/Content.Client/Alerts/ClientAlertsSystem.cs index bb6d2d4df4ed12..5089022415331a 100644 --- a/Content.Client/Alerts/ClientAlertsSystem.cs +++ b/Content.Client/Alerts/ClientAlertsSystem.cs @@ -1,7 +1,6 @@ using System.Linq; using Content.Shared.Alert; using JetBrains.Annotations; -using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.Prototypes; @@ -22,8 +21,8 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(ClientAlertsHandleState); } @@ -69,7 +68,7 @@ private void ClientAlertsHandleState(EntityUid uid, AlertsComponent component, r SyncAlerts?.Invoke(this, component.Alerts); } - private void OnPlayerAttached(EntityUid uid, AlertsComponent component, PlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, AlertsComponent component, LocalPlayerAttachedEvent args) { if (_playerManager.LocalPlayer?.ControlledEntity != uid) return; @@ -87,7 +86,7 @@ protected override void HandleComponentShutdown(EntityUid uid, AlertsComponent c ClearAlerts?.Invoke(this, EventArgs.Empty); } - private void OnPlayerDetached(EntityUid uid, AlertsComponent component, PlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, AlertsComponent component, LocalPlayerDetachedEvent args) { ClearAlerts?.Invoke(this, EventArgs.Empty); } diff --git a/Content.Client/CharacterInfo/CharacterInfoSystem.cs b/Content.Client/CharacterInfo/CharacterInfoSystem.cs index 93bd86d140bb27..844a352a184463 100644 --- a/Content.Client/CharacterInfo/CharacterInfoSystem.cs +++ b/Content.Client/CharacterInfo/CharacterInfoSystem.cs @@ -1,6 +1,5 @@ using Content.Shared.CharacterInfo; using Content.Shared.Objectives; -using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Client.UserInterface; @@ -11,14 +10,11 @@ public sealed class CharacterInfoSystem : EntitySystem [Dependency] private readonly IPlayerManager _players = default!; public event Action? OnCharacterUpdate; - public event Action? OnCharacterDetached; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeNetworkEvent(OnCharacterInfoEvent); } @@ -33,14 +29,6 @@ public void RequestCharacterInfo() RaiseNetworkEvent(new RequestCharacterInfoEvent(GetNetEntity(entity.Value))); } - private void OnPlayerAttached(PlayerAttachSysMessage msg) - { - if (msg.AttachedEntity == default) - { - OnCharacterDetached?.Invoke(); - } - } - private void OnCharacterInfoEvent(CharacterInfoEvent msg, EntitySessionEventArgs args) { var entity = GetEntity(msg.NetEntity); diff --git a/Content.Client/Construction/ConstructionSystem.cs b/Content.Client/Construction/ConstructionSystem.cs index 98d2dfd414d7f1..9fc638cea22b09 100644 --- a/Content.Client/Construction/ConstructionSystem.cs +++ b/Content.Client/Construction/ConstructionSystem.cs @@ -38,7 +38,7 @@ public override void Initialize() base.Initialize(); UpdatesOutsidePrediction = true; - SubscribeLocalEvent(HandlePlayerAttached); + SubscribeLocalEvent(HandlePlayerAttached); SubscribeNetworkEvent(HandleAckStructure); SubscribeNetworkEvent(OnConstructionGuideReceived); @@ -110,9 +110,9 @@ private void HandleAckStructure(AckStructureConstructionMessage msg) ClearGhost(msg.GhostId); } - private void HandlePlayerAttached(PlayerAttachSysMessage msg) + private void HandlePlayerAttached(LocalPlayerAttachedEvent msg) { - var available = IsCraftingAvailable(msg.AttachedEntity); + var available = IsCraftingAvailable(msg.Entity); UpdateCraftingAvailability(available); } diff --git a/Content.Client/Drugs/DrugOverlaySystem.cs b/Content.Client/Drugs/DrugOverlaySystem.cs index 7be63b4c50e154..ec0d0140720d43 100644 --- a/Content.Client/Drugs/DrugOverlaySystem.cs +++ b/Content.Client/Drugs/DrugOverlaySystem.cs @@ -1,5 +1,4 @@ using Content.Shared.Drugs; -using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; @@ -24,18 +23,18 @@ public override void Initialize() SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); _overlay = new(); } - private void OnPlayerAttached(EntityUid uid, SeeingRainbowsComponent component, PlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, SeeingRainbowsComponent component, LocalPlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } - private void OnPlayerDetached(EntityUid uid, SeeingRainbowsComponent component, PlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, SeeingRainbowsComponent component, LocalPlayerDetachedEvent args) { _overlay.Intoxication = 0; _overlayMan.RemoveOverlay(_overlay); diff --git a/Content.Client/Drunk/DrunkSystem.cs b/Content.Client/Drunk/DrunkSystem.cs index 0573b2ff3eb6cb..4f2ec70b56b92e 100644 --- a/Content.Client/Drunk/DrunkSystem.cs +++ b/Content.Client/Drunk/DrunkSystem.cs @@ -1,5 +1,4 @@ using Content.Shared.Drunk; -using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; @@ -19,18 +18,18 @@ public override void Initialize() SubscribeLocalEvent(OnDrunkInit); SubscribeLocalEvent(OnDrunkShutdown); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); _overlay = new(); } - private void OnPlayerAttached(EntityUid uid, DrunkComponent component, PlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, DrunkComponent component, LocalPlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } - private void OnPlayerDetached(EntityUid uid, DrunkComponent component, PlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, DrunkComponent component, LocalPlayerDetachedEvent args) { _overlay.CurrentBoozePower = 0; _overlayMan.RemoveOverlay(_overlay); diff --git a/Content.Client/Eye/Blinding/BlindingSystem.cs b/Content.Client/Eye/Blinding/BlindingSystem.cs index f0b760d838b53e..f255f7ef016a17 100644 --- a/Content.Client/Eye/Blinding/BlindingSystem.cs +++ b/Content.Client/Eye/Blinding/BlindingSystem.cs @@ -1,17 +1,7 @@ - -using Content.Shared.Eye.Blinding; -using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; -using System; -using System.Collections.Generic; -using System.Linq; -using Content.Shared.Administration; -using Content.Shared.Administration.Events; using Content.Shared.Eye.Blinding.Components; using Content.Shared.GameTicking; -using Robust.Shared.GameObjects; -using Robust.Shared.Network; namespace Content.Client.Eye.Blinding; @@ -31,20 +21,20 @@ public override void Initialize() SubscribeLocalEvent(OnBlindInit); SubscribeLocalEvent(OnBlindShutdown); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeNetworkEvent(RoundRestartCleanup); _overlay = new(); } - private void OnPlayerAttached(EntityUid uid, BlindableComponent component, PlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, BlindableComponent component, LocalPlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } - private void OnPlayerDetached(EntityUid uid, BlindableComponent component, PlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, BlindableComponent component, LocalPlayerDetachedEvent args) { _overlayMan.RemoveOverlay(_overlay); _lightManager.Enabled = true; diff --git a/Content.Client/Eye/Blinding/BlurryVisionSystem.cs b/Content.Client/Eye/Blinding/BlurryVisionSystem.cs index 1bac2a97bf45c0..8be5b4ed930028 100644 --- a/Content.Client/Eye/Blinding/BlurryVisionSystem.cs +++ b/Content.Client/Eye/Blinding/BlurryVisionSystem.cs @@ -1,9 +1,6 @@ -using Content.Shared.Eye.Blinding; using Content.Shared.Eye.Blinding.Components; -using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; -using Robust.Shared.GameStates; namespace Content.Client.Eye.Blinding; @@ -20,18 +17,18 @@ public override void Initialize() SubscribeLocalEvent(OnBlurryInit); SubscribeLocalEvent(OnBlurryShutdown); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); _overlay = new(); } - private void OnPlayerAttached(EntityUid uid, BlurryVisionComponent component, PlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, BlurryVisionComponent component, LocalPlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } - private void OnPlayerDetached(EntityUid uid, BlurryVisionComponent component, PlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, BlurryVisionComponent component, LocalPlayerDetachedEvent args) { _overlayMan.RemoveOverlay(_overlay); } diff --git a/Content.Client/Eye/EyeLerpingSystem.cs b/Content.Client/Eye/EyeLerpingSystem.cs index 8e54196b81d40d..b46921a9b48e6e 100644 --- a/Content.Client/Eye/EyeLerpingSystem.cs +++ b/Content.Client/Eye/EyeLerpingSystem.cs @@ -30,7 +30,7 @@ public override void Initialize() SubscribeLocalEvent(OnAttached); SubscribeLocalEvent(HandleMapChange); - SubscribeLocalEvent(OnDetached); + SubscribeLocalEvent(OnDetached); UpdatesAfter.Add(typeof(TransformSystem)); UpdatesAfter.Add(typeof(PhysicsSystem)); @@ -94,7 +94,7 @@ private void OnAttached(ref EyeAttachedEvent ev) AddEye(ev.Entity, ev.Component, true); } - private void OnDetached(EntityUid uid, LerpingEyeComponent component, PlayerDetachedEvent args) + private void OnDetached(EntityUid uid, LerpingEyeComponent component, LocalPlayerDetachedEvent args) { if (!component.ManuallyAdded) RemCompDeferred(uid, component); diff --git a/Content.Client/Fullscreen/FullscreenHook.cs b/Content.Client/Fullscreen/FullscreenHook.cs index 78a01517361bf3..7917fddfbb0c14 100644 --- a/Content.Client/Fullscreen/FullscreenHook.cs +++ b/Content.Client/Fullscreen/FullscreenHook.cs @@ -4,7 +4,7 @@ using Robust.Shared.Input.Binding; using Robust.Shared; using Robust.Shared.Configuration; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Client.Fullscreen; public sealed class FullscreenHook diff --git a/Content.Client/Gameplay/GameplayStateBase.cs b/Content.Client/Gameplay/GameplayStateBase.cs index 788a4e5dfff93a..454c063260510d 100644 --- a/Content.Client/Gameplay/GameplayStateBase.cs +++ b/Content.Client/Gameplay/GameplayStateBase.cs @@ -16,7 +16,7 @@ using Robust.Shared.Input; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Client.Gameplay diff --git a/Content.Client/Ghost/GhostSystem.cs b/Content.Client/Ghost/GhostSystem.cs index 5727534109efdd..a89d0858d9dd41 100644 --- a/Content.Client/Ghost/GhostSystem.cs +++ b/Content.Client/Ghost/GhostSystem.cs @@ -58,10 +58,10 @@ public override void Initialize() SubscribeLocalEvent(OnGhostRemove); SubscribeLocalEvent(OnGhostState); - SubscribeLocalEvent(OnGhostPlayerAttach); - SubscribeLocalEvent(OnGhostPlayerDetach); + SubscribeLocalEvent(OnGhostPlayerAttach); + SubscribeLocalEvent(OnGhostPlayerDetach); - SubscribeLocalEvent(OnPlayerAttach); + SubscribeLocalEvent(OnPlayerAttach); SubscribeNetworkEvent(OnGhostWarpsResponse); SubscribeNetworkEvent(OnUpdateGhostRoleCount); @@ -130,7 +130,7 @@ private void OnGhostRemove(EntityUid uid, GhostComponent component, ComponentRem PlayerRemoved?.Invoke(component); } - private void OnGhostPlayerAttach(EntityUid uid, GhostComponent component, PlayerAttachedEvent playerAttachedEvent) + private void OnGhostPlayerAttach(EntityUid uid, GhostComponent component, LocalPlayerAttachedEvent localPlayerAttachedEvent) { if (uid != _playerManager.LocalPlayer?.ControlledEntity) return; @@ -161,13 +161,13 @@ private bool PlayerDetach(EntityUid uid) return true; } - private void OnGhostPlayerDetach(EntityUid uid, GhostComponent component, PlayerDetachedEvent args) + private void OnGhostPlayerDetach(EntityUid uid, GhostComponent component, LocalPlayerDetachedEvent args) { if (PlayerDetach(uid)) component.IsAttached = false; } - private void OnPlayerAttach(PlayerAttachedEvent ev) + private void OnPlayerAttach(LocalPlayerAttachedEvent ev) { if (!HasComp(ev.Entity)) PlayerDetach(ev.Entity); diff --git a/Content.Client/Hands/Systems/HandsSystem.cs b/Content.Client/Hands/Systems/HandsSystem.cs index ed40589f7fd4eb..31de7ec14334ee 100644 --- a/Content.Client/Hands/Systems/HandsSystem.cs +++ b/Content.Client/Hands/Systems/HandsSystem.cs @@ -42,8 +42,8 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(HandlePlayerAttached); - SubscribeLocalEvent(HandlePlayerDetached); + SubscribeLocalEvent(HandlePlayerAttached); + SubscribeLocalEvent(HandlePlayerDetached); SubscribeLocalEvent(OnHandsStartup); SubscribeLocalEvent(OnHandsShutdown); SubscribeLocalEvent(HandleComponentState); @@ -361,12 +361,12 @@ private void OnVisualsChanged(EntityUid uid, HandsComponent component, VisualsCh #region Gui - private void HandlePlayerAttached(EntityUid uid, HandsComponent component, PlayerAttachedEvent args) + private void HandlePlayerAttached(EntityUid uid, HandsComponent component, LocalPlayerAttachedEvent args) { OnPlayerHandsAdded?.Invoke(component); } - private void HandlePlayerDetached(EntityUid uid, HandsComponent component, PlayerDetachedEvent args) + private void HandlePlayerDetached(EntityUid uid, HandsComponent component, LocalPlayerDetachedEvent args) { OnPlayerHandsRemoved?.Invoke(); } diff --git a/Content.Client/HealthOverlay/HealthOverlaySystem.cs b/Content.Client/HealthOverlay/HealthOverlaySystem.cs index baeb4fe0259e66..29ac937199de1a 100644 --- a/Content.Client/HealthOverlay/HealthOverlaySystem.cs +++ b/Content.Client/HealthOverlay/HealthOverlaySystem.cs @@ -3,8 +3,8 @@ using Content.Shared.GameTicking; using Content.Shared.Mobs.Components; using JetBrains.Annotations; -using Robust.Client.GameObjects; using Robust.Client.Graphics; +using Robust.Client.Player; namespace Content.Client.HealthOverlay { @@ -13,9 +13,9 @@ public sealed class HealthOverlaySystem : EntitySystem { [Dependency] private readonly IEyeManager _eyeManager = default!; [Dependency] private readonly IEntityManager _entities = default!; + [Dependency] private readonly IPlayerManager _player = default!; private readonly Dictionary _guis = new(); - private EntityUid? _attachedEntity; private bool _enabled; public bool Enabled @@ -42,7 +42,6 @@ public override void Initialize() base.Initialize(); SubscribeNetworkEvent(Reset); - SubscribeLocalEvent(HandlePlayerAttached); } public void Reset(RoundRestartCleanupEvent ev) @@ -53,12 +52,6 @@ public void Reset(RoundRestartCleanupEvent ev) } _guis.Clear(); - _attachedEntity = default; - } - - private void HandlePlayerAttached(PlayerAttachSysMessage message) - { - _attachedEntity = message.AttachedEntity; } public override void FrameUpdate(float frameTime) @@ -70,7 +63,7 @@ public override void FrameUpdate(float frameTime) return; } - if (_attachedEntity is not {} ent || Deleted(ent)) + if (_player.LocalEntity is not {} ent || Deleted(ent)) { return; } diff --git a/Content.Client/Inventory/ClientInventorySystem.cs b/Content.Client/Inventory/ClientInventorySystem.cs index ffff392aa4683a..f0a12b3b1f6d09 100644 --- a/Content.Client/Inventory/ClientInventorySystem.cs +++ b/Content.Client/Inventory/ClientInventorySystem.cs @@ -10,7 +10,6 @@ using Content.Shared.Inventory.Events; using Content.Shared.Storage; using JetBrains.Annotations; -using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Shared.Containers; @@ -43,8 +42,8 @@ public override void Initialize() UpdatesOutsidePrediction = true; base.Initialize(); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnShutdown); @@ -113,12 +112,12 @@ private void OnShutdown(EntityUid uid, InventoryComponent component, ComponentSh OnUnlinkInventory?.Invoke(); } - private void OnPlayerDetached(EntityUid uid, InventorySlotsComponent component, PlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, InventorySlotsComponent component, LocalPlayerDetachedEvent args) { OnUnlinkInventory?.Invoke(); } - private void OnPlayerAttached(EntityUid uid, InventorySlotsComponent component, PlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, InventorySlotsComponent component, LocalPlayerAttachedEvent args) { if (TryGetSlots(uid, out var definitions)) { diff --git a/Content.Client/Mind/MindSystem.cs b/Content.Client/Mind/MindSystem.cs index 87d9e9ddbe01c0..cc43c349e47e0d 100644 --- a/Content.Client/Mind/MindSystem.cs +++ b/Content.Client/Mind/MindSystem.cs @@ -4,4 +4,24 @@ namespace Content.Client.Mind; public sealed class MindSystem : SharedMindSystem { + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnHandleState); + } + + private void OnHandleState(EntityUid uid, MindComponent component, ref AfterAutoHandleStateEvent args) + { + // Because minds are generally not networked, there might be weird situations were a client thinks multiple + // users share a mind? E.g., if an admin periodical gets sent all minds via some PVS override, but doesn't get + // sent intermediate states? Not sure if this is actually possible, but better to be safe. + foreach (var (user, mind) in UserMinds) + { + if (mind == uid) + UserMinds.Remove(user); + } + + if (component.UserId != null) + UserMinds[component.UserId.Value] = uid; + } } diff --git a/Content.Client/Overlays/EquipmentHudSystem.cs b/Content.Client/Overlays/EquipmentHudSystem.cs index 1d5ec032918218..ac618691d8b6da 100644 --- a/Content.Client/Overlays/EquipmentHudSystem.cs +++ b/Content.Client/Overlays/EquipmentHudSystem.cs @@ -1,7 +1,6 @@ using Content.Shared.GameTicking; using Content.Shared.Inventory; using Content.Shared.Inventory.Events; -using Robust.Client.GameObjects; using Robust.Client.Player; namespace Content.Client.Overlays; @@ -24,8 +23,8 @@ public override void Initialize() SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnRemove); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnCompEquip); SubscribeLocalEvent(OnCompUnequip); @@ -65,12 +64,12 @@ private void OnRemove(EntityUid uid, T component, ComponentRemove args) RefreshOverlay(uid); } - private void OnPlayerAttached(PlayerAttachedEvent args) + private void OnPlayerAttached(LocalPlayerAttachedEvent args) { RefreshOverlay(args.Entity); } - private void OnPlayerDetached(PlayerDetachedEvent args) + private void OnPlayerDetached(LocalPlayerDetachedEvent args) { if (_player.LocalPlayer?.ControlledEntity == null) Deactivate(); diff --git a/Content.Client/Physics/Controllers/MoverController.cs b/Content.Client/Physics/Controllers/MoverController.cs index 54c5c3de15b2fc..52340b33918033 100644 --- a/Content.Client/Physics/Controllers/MoverController.cs +++ b/Content.Client/Physics/Controllers/MoverController.cs @@ -1,7 +1,6 @@ using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; using Content.Shared.Pulling.Components; -using Robust.Client.GameObjects; using Robust.Client.Physics; using Robust.Client.Player; using Robust.Shared.Physics.Components; @@ -17,10 +16,10 @@ public sealed class MoverController : SharedMoverController public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnRelayPlayerAttached); - SubscribeLocalEvent(OnRelayPlayerDetached); - SubscribeLocalEvent(OnPlayerAttached); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnRelayPlayerAttached); + SubscribeLocalEvent(OnRelayPlayerDetached); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnUpdatePredicted); SubscribeLocalEvent(OnUpdateRelayTargetPredicted); @@ -54,7 +53,7 @@ private void OnUpdatePullablePredicted(EntityUid uid, SharedPullableComponent co // What if the entity is being pulled by a vehicle controlled by the player? } - private void OnRelayPlayerAttached(EntityUid uid, RelayInputMoverComponent component, PlayerAttachedEvent args) + private void OnRelayPlayerAttached(EntityUid uid, RelayInputMoverComponent component, LocalPlayerAttachedEvent args) { Physics.UpdateIsPredicted(uid); Physics.UpdateIsPredicted(component.RelayEntity); @@ -62,7 +61,7 @@ private void OnRelayPlayerAttached(EntityUid uid, RelayInputMoverComponent compo SetMoveInput(inputMover, MoveButtons.None); } - private void OnRelayPlayerDetached(EntityUid uid, RelayInputMoverComponent component, PlayerDetachedEvent args) + private void OnRelayPlayerDetached(EntityUid uid, RelayInputMoverComponent component, LocalPlayerDetachedEvent args) { Physics.UpdateIsPredicted(uid); Physics.UpdateIsPredicted(component.RelayEntity); @@ -70,12 +69,12 @@ private void OnRelayPlayerDetached(EntityUid uid, RelayInputMoverComponent compo SetMoveInput(inputMover, MoveButtons.None); } - private void OnPlayerAttached(EntityUid uid, InputMoverComponent component, PlayerAttachedEvent args) + private void OnPlayerAttached(EntityUid uid, InputMoverComponent component, LocalPlayerAttachedEvent args) { SetMoveInput(component, MoveButtons.None); } - private void OnPlayerDetached(EntityUid uid, InputMoverComponent component, PlayerDetachedEvent args) + private void OnPlayerDetached(EntityUid uid, InputMoverComponent component, LocalPlayerDetachedEvent args) { SetMoveInput(component, MoveButtons.None); } diff --git a/Content.Client/Players/PlayerSystem.cs b/Content.Client/Players/PlayerSystem.cs index d5ce4ec197f725..dba95ef7a65f32 100644 --- a/Content.Client/Players/PlayerSystem.cs +++ b/Content.Client/Players/PlayerSystem.cs @@ -1,11 +1,11 @@ using Content.Shared.Players; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Client.Players; public sealed class PlayerSystem : SharedPlayerSystem { - public override PlayerData? ContentData(ICommonSession? session) + public override ContentPlayerData? ContentData(ICommonSession? session) { return null; } diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index 1d4ca19ce269d7..d68272a107e4f5 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -9,7 +9,6 @@ using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Player; -using Robust.Shared.Players; using Robust.Shared.Prototypes; using Robust.Shared.Replays; using Robust.Shared.Timing; diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Movement.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Movement.cs index 3bb2afe1221869..d48a1eab46676c 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Movement.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Movement.cs @@ -2,7 +2,7 @@ using Robust.Shared.Input; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Client.Replay.Spectator; diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs index 45a175e688458d..479e2eff976fb6 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Position.cs @@ -1,5 +1,5 @@ using Content.Shared.Movement.Components; -using Robust.Client.GameObjects; +using Robust.Client.Player; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Network; @@ -79,7 +79,7 @@ private void OnAfterSetTick() public void SetSpectatorPosition(SpectatorData data) { - if (_player.LocalPlayer == null) + if (_player.LocalSession == null) return; if (data.Controller != null @@ -87,13 +87,13 @@ public void SetSpectatorPosition(SpectatorData data) && Exists(session.AttachedEntity) && Transform(session.AttachedEntity.Value).MapID != MapId.Nullspace) { - _player.LocalPlayer.AttachEntity(session.AttachedEntity.Value, EntityManager, _client); + _player.SetAttachedEntity(_player.LocalSession, session.AttachedEntity); return; } if (Exists(data.Entity) && Transform(data.Entity).MapID != MapId.Nullspace) { - _player.LocalPlayer.AttachEntity(data.Entity, EntityManager, _client); + _player.SetAttachedEntity(_player.LocalSession, data.Entity); return; } @@ -118,7 +118,7 @@ public void SetSpectatorPosition(SpectatorData data) return; } - if (data.Eye != null && TryComp(_player.LocalPlayer.ControlledEntity, out InputMoverComponent? newMover)) + if (data.Eye != null && TryComp(_player.LocalSession.AttachedEntity, out InputMoverComponent? newMover)) { newMover.RelativeEntity = data.Eye.Value.Ent; newMover.TargetRelativeRotation = newMover.RelativeRotation = data.Eye.Value.Rot; @@ -177,7 +177,7 @@ private void OnParentChanged(EntityUid uid, ReplaySpectatorComponent component, SetSpectatorPosition(default); } - private void OnDetached(EntityUid uid, ReplaySpectatorComponent component, PlayerDetachedEvent args) + private void OnDetached(EntityUid uid, ReplaySpectatorComponent component, LocalPlayerDetachedEvent args) { if (IsClientSide(uid)) QueueDel(uid); diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Spectate.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Spectate.cs index f3475c5479c05f..80a8429055f449 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Spectate.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.Spectate.cs @@ -32,10 +32,10 @@ private void OnGetAlternativeVerbs(GetVerbsEvent ev) public void SpectateEntity(EntityUid target) { - if (_player.LocalPlayer == null) + if (_player.LocalSession == null) return; - var old = _player.LocalPlayer.ControlledEntity; + var old = _player.LocalSession.AttachedEntity; if (old == target) { @@ -44,7 +44,7 @@ public void SpectateEntity(EntityUid target) return; } - _player.LocalPlayer.AttachEntity(target, EntityManager, _client); + _player.SetAttachedEntity(_player.LocalSession, target); EnsureComp(target); _stateMan.RequestStateChange(); @@ -59,10 +59,10 @@ public void SpectateEntity(EntityUid target) public TransformComponent SpawnSpectatorGhost(EntityCoordinates coords, bool gridAttach) { - if (_player.LocalPlayer == null) + if (_player.LocalSession == null) throw new InvalidOperationException(); - var old = _player.LocalPlayer.ControlledEntity; + var old = _player.LocalSession.AttachedEntity; var ent = Spawn("ReplayObserver", coords); _eye.SetMaxZoom(ent, Vector2.One * 5); @@ -73,7 +73,7 @@ public TransformComponent SpawnSpectatorGhost(EntityCoordinates coords, bool gri if (gridAttach) _transform.AttachToGridOrMap(ent); - _player.LocalPlayer.AttachEntity(ent, EntityManager, _client); + _player.SetAttachedEntity(_player.LocalSession, ent); if (old != null) { @@ -93,7 +93,7 @@ private void SpectateCommand(IConsoleShell shell, string argStr, string[] args) { if (args.Length == 0) { - if (_player.LocalPlayer?.ControlledEntity is { } current) + if (_player.LocalSession?.AttachedEntity is { } current) SpawnSpectatorGhost(new EntityCoordinates(current, default), true); else SpawnSpectatorGhost(default, true); diff --git a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.cs b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.cs index c75529c037fcd4..3b9662ed8c674a 100644 --- a/Content.Client/Replay/Spectator/ReplaySpectatorSystem.cs +++ b/Content.Client/Replay/Spectator/ReplaySpectatorSystem.cs @@ -6,7 +6,6 @@ using Robust.Client.Replays.Playback; using Robust.Client.State; using Robust.Shared.Console; -using Robust.Shared.Network; using Robust.Shared.Serialization.Markdown.Mapping; namespace Content.Client.Replay.Spectator; @@ -40,7 +39,7 @@ public override void Initialize() SubscribeLocalEvent>(OnGetAlternativeVerbs); SubscribeLocalEvent(OnTerminating); - SubscribeLocalEvent(OnDetached); + SubscribeLocalEvent(OnDetached); SubscribeLocalEvent(OnParentChanged); InitializeBlockers(); diff --git a/Content.Client/Sandbox/SandboxSystem.cs b/Content.Client/Sandbox/SandboxSystem.cs index 7dcbfa0ee02ee3..d16751e3715d2b 100644 --- a/Content.Client/Sandbox/SandboxSystem.cs +++ b/Content.Client/Sandbox/SandboxSystem.cs @@ -5,7 +5,7 @@ using Robust.Client.Placement; using Robust.Client.Placement.Modes; using Robust.Shared.Map; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Client.Sandbox { diff --git a/Content.Client/Traits/ParacusiaSystem.cs b/Content.Client/Traits/ParacusiaSystem.cs index 34c7d6859e2ab1..87abec80bb9e94 100644 --- a/Content.Client/Traits/ParacusiaSystem.cs +++ b/Content.Client/Traits/ParacusiaSystem.cs @@ -1,8 +1,6 @@ using System.Numerics; using Content.Shared.Traits.Assorted; -using Content.Client.Camera; using Robust.Shared.Random; -using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.Timing; @@ -19,7 +17,7 @@ public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnComponentStartup); - SubscribeLocalEvent(OnPlayerDetach); + SubscribeLocalEvent(OnPlayerDetach); } public override void Update(float frameTime) @@ -40,7 +38,7 @@ private void OnComponentStartup(EntityUid uid, ParacusiaComponent component, Com component.NextIncidentTime = _timing.CurTime + TimeSpan.FromSeconds(_random.NextFloat(component.MinTimeBetweenIncidents, component.MaxTimeBetweenIncidents)); } - private void OnPlayerDetach(EntityUid uid, ParacusiaComponent component, PlayerDetachedEvent args) + private void OnPlayerDetach(EntityUid uid, ParacusiaComponent component, LocalPlayerDetachedEvent args) { component.Stream?.Stop(); } diff --git a/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs b/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs index 925b2dae4fd45d..45bdada6e7af32 100644 --- a/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs +++ b/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs @@ -8,6 +8,7 @@ using Content.Shared.Input; using JetBrains.Annotations; using Robust.Client.GameObjects; +using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controllers; using Robust.Client.UserInterface.Controls; @@ -21,6 +22,7 @@ namespace Content.Client.UserInterface.Systems.Character; [UsedImplicitly] public sealed class CharacterUIController : UIController, IOnStateEntered, IOnStateExited, IOnSystemChanged { + [Dependency] private readonly IPlayerManager _player = default!; [UISystemDependency] private readonly CharacterInfoSystem _characterInfo = default!; [UISystemDependency] private readonly SpriteSystem _sprite = default!; @@ -56,13 +58,13 @@ public void OnStateExited(GameplayState state) public void OnSystemLoaded(CharacterInfoSystem system) { system.OnCharacterUpdate += CharacterUpdated; - system.OnCharacterDetached += CharacterDetached; + _player.LocalPlayerDetached += CharacterDetached; } public void OnSystemUnloaded(CharacterInfoSystem system) { system.OnCharacterUpdate -= CharacterUpdated; - system.OnCharacterDetached -= CharacterDetached; + _player.LocalPlayerDetached -= CharacterDetached; } public void UnloadButton() @@ -160,7 +162,7 @@ private void CharacterUpdated(CharacterData data) _window.RolePlaceholder.Visible = briefing == null && !controls.Any() && !objectives.Any(); } - private void CharacterDetached() + private void CharacterDetached(EntityUid uid) { CloseWindow(); } diff --git a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs index 6d86e458c5c846..9334f85c00697e 100644 --- a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs +++ b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs @@ -162,7 +162,8 @@ public override void Initialize() _sawmill = Logger.GetSawmill("chat"); _sawmill.Level = LogLevel.Info; _admin.AdminStatusUpdated += UpdateChannelPermissions; - _player.LocalPlayerChanged += OnLocalPlayerChanged; + _player.LocalPlayerAttached += OnAttachedChanged; + _player.LocalPlayerDetached += OnAttachedChanged; _state.OnStateChanged += StateChanged; _net.RegisterNetMessage(OnChatMessage); _net.RegisterNetMessage(OnDeleteChatMessagesBy); @@ -170,7 +171,7 @@ public override void Initialize() _speechBubbleRoot = new LayoutContainer(); - OnLocalPlayerChanged(new LocalPlayerChangedEventArgs(null, _player.LocalPlayer)); + UpdateChannelPermissions(); _input.SetInputCommand(ContentKeyFunctions.FocusChat, InputCmdHandler.FromDelegate(_ => FocusChat())); @@ -363,29 +364,7 @@ public void SetSpeechBubbleRoot(LayoutContainer root) _speechBubbleRoot.SetPositionLast(); } - private void OnLocalPlayerChanged(LocalPlayerChangedEventArgs obj) - { - if (obj.OldPlayer != null) - { - obj.OldPlayer.EntityAttached -= OnLocalPlayerEntityAttached; - obj.OldPlayer.EntityDetached -= OnLocalPlayerEntityDetached; - } - - if (obj.NewPlayer != null) - { - obj.NewPlayer.EntityAttached += OnLocalPlayerEntityAttached; - obj.NewPlayer.EntityDetached += OnLocalPlayerEntityDetached; - } - - UpdateChannelPermissions(); - } - - private void OnLocalPlayerEntityAttached(EntityAttachedEventArgs obj) - { - UpdateChannelPermissions(); - } - - private void OnLocalPlayerEntityDetached(EntityDetachedEventArgs obj) + private void OnAttachedChanged(EntityUid uid) { UpdateChannelPermissions(); } diff --git a/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs b/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs index 0836314dbc46a1..ba4a871199ddd1 100644 --- a/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs +++ b/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs @@ -1,11 +1,9 @@ -using Content.Client.Alerts; using Content.Shared.Damage; using Content.Shared.FixedPoint; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using JetBrains.Annotations; -using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Player; using Robust.Client.UserInterface; @@ -25,13 +23,13 @@ public sealed class DamageOverlayUiController : UIController public override void Initialize() { _overlay = new Overlays.DamageOverlay(); - SubscribeLocalEvent(OnPlayerAttach); - SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnPlayerAttach); + SubscribeLocalEvent(OnPlayerDetached); SubscribeLocalEvent(OnMobStateChanged); SubscribeLocalEvent(OnThresholdCheck); } - private void OnPlayerAttach(PlayerAttachedEvent args) + private void OnPlayerAttach(LocalPlayerAttachedEvent args) { ClearOverlay(); if (!EntityManager.TryGetComponent(args.Entity, out var mobState)) @@ -41,7 +39,7 @@ private void OnPlayerAttach(PlayerAttachedEvent args) _overlayManager.AddOverlay(_overlay); } - private void OnPlayerDetached(PlayerDetachedEvent args) + private void OnPlayerDetached(LocalPlayerDetachedEvent args) { _overlayManager.RemoveOverlay(_overlay); ClearOverlay(); diff --git a/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs b/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs index d7ec9f3497c718..778de82210a8f3 100644 --- a/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs +++ b/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs @@ -17,7 +17,7 @@ using Robust.Client.UserInterface.Controllers.Implementations; using Robust.Shared.Input.Binding; using Robust.Shared.Map; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Utility; using static Robust.Client.UserInterface.Controls.BaseButton; diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs index 397032cd154555..2d2883d8b7698a 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs @@ -16,7 +16,8 @@ using Robust.Shared.Input; using Robust.Shared.Map; using Robust.Shared.Player; -using Robust.Shared.Players; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; namespace Content.Client.Weapons.Melee; diff --git a/Content.IntegrationTests/Pair/TestPair.cs b/Content.IntegrationTests/Pair/TestPair.cs index 2971573ff28eba..2672b4db56e454 100644 --- a/Content.IntegrationTests/Pair/TestPair.cs +++ b/Content.IntegrationTests/Pair/TestPair.cs @@ -3,13 +3,11 @@ using System.IO; using System.Linq; using Content.Server.GameTicking; -using Content.Server.Players; -using Content.Shared.Mind; using Content.Shared.Players; -using Robust.Server.Player; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.UnitTesting; @@ -30,8 +28,8 @@ public sealed partial class TestPair public RobustIntegrationTest.ServerIntegrationInstance Server { get; private set; } = default!; public RobustIntegrationTest.ClientIntegrationInstance Client { get; private set; } = default!; - public IPlayerSession? Player => (IPlayerSession?) Server.PlayerMan.Sessions.FirstOrDefault(); - public PlayerData? PlayerData => Player?.Data.ContentData(); + public ICommonSession? Player => Server.PlayerMan.Sessions.FirstOrDefault(); + public ContentPlayerData? PlayerData => Player?.Data.ContentData(); public PoolTestLogHandler ServerLogHandler { get; private set; } = default!; public PoolTestLogHandler ClientLogHandler { get; private set; } = default!; diff --git a/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs b/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs index 01f8bdd9387f2c..01daeea93c53a1 100644 --- a/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs +++ b/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs @@ -3,8 +3,6 @@ using Content.Shared.CombatMode; using Robust.Server.Player; using Robust.Shared.GameObjects; -using Robust.Shared.Players; -using PlayerManager = Robust.Client.Player.PlayerManager; namespace Content.IntegrationTests.Tests.Actions; @@ -26,7 +24,7 @@ public async Task TestCombatActionsAdded() var sEntMan = server.ResolveDependency(); var cEntMan = client.ResolveDependency(); var clientSession = client.ResolveDependency().LocalPlayer?.Session; - var serverSession = server.ResolveDependency().ServerSessions.Single(); + var serverSession = server.ResolveDependency().Sessions.Single(); var sActionSystem = server.System(); var cActionSystem = client.System(); diff --git a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs index 6562a26b5e10ad..98c7363a6c4977 100644 --- a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs +++ b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs @@ -7,8 +7,6 @@ using Content.Shared.Database; using Robust.Server.Player; using Robust.Shared.GameObjects; -using Robust.Shared.Map; -using Robust.Shared.Utility; namespace Content.IntegrationTests.Tests.Administration.Logs; @@ -177,7 +175,7 @@ public async Task AddPlayerSessionLog() await server.WaitPost(() => { - var player = sPlayers.ServerSessions.First(); + var player = sPlayers.Sessions.First(); playerGuid = player.UserId; Assert.DoesNotThrow(() => @@ -280,7 +278,7 @@ public async Task DuplicatePlayerDoesNotThrowTest() await server.WaitPost(() => { - var player = sPlayers.ServerSessions.Single(); + var player = sPlayers.Sessions.Single(); sAdminLogSystem.Add(LogType.Unknown, $"{player} {player} test log: {guid}"); }); @@ -318,7 +316,7 @@ public async Task DuplicatePlayerIdDoesNotThrowTest() await server.WaitPost(() => { - var player = sPlayers.ServerSessions.Single(); + var player = sPlayers.Sessions.Single(); sAdminLogSystem.Add(LogType.Unknown, $"{player:first} {player:second} test log: {guid}"); }); diff --git a/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs b/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs index 1155edfad2ddc4..5a58757d531531 100644 --- a/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs +++ b/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs @@ -5,6 +5,7 @@ using Content.Shared.Database; using Robust.Server.Player; using Robust.Shared.GameObjects; +using Robust.Shared.Player; namespace Content.IntegrationTests.Tests.Administration.Logs; @@ -27,11 +28,11 @@ public async Task QuerySingleLog() var date = DateTime.UtcNow; var guid = Guid.NewGuid(); - IPlayerSession player = default; + ICommonSession player = default; await server.WaitPost(() => { - player = sPlayers.ServerSessions.First(); + player = sPlayers.Sessions.First(); sAdminLogSystem.Add(LogType.Unknown, $"{player.AttachedEntity:Entity} test log: {guid}"); }); diff --git a/Content.IntegrationTests/Tests/Cleanup/EuiManagerTest.cs b/Content.IntegrationTests/Tests/Cleanup/EuiManagerTest.cs index 9aac4e2892a9a2..e2bff03501a230 100644 --- a/Content.IntegrationTests/Tests/Cleanup/EuiManagerTest.cs +++ b/Content.IntegrationTests/Tests/Cleanup/EuiManagerTest.cs @@ -25,7 +25,7 @@ public async Task EuiManagerRecycleWithOpenWindowTest() await server.WaitAssertion(() => { - var clientSession = sPlayerManager.ServerSessions.Single(); + var clientSession = sPlayerManager.Sessions.Single(); var ui = new AdminAnnounceEui(); eui.OpenEui(ui, clientSession); }); diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs index b4b6c2239fbec3..df77410e540c8e 100644 --- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs +++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.cs @@ -14,6 +14,7 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Mind; +using Content.Shared.Players; using Robust.Client.Input; using Robust.Client.UserInterface; using Robust.Server.GameObjects; @@ -21,7 +22,7 @@ using Robust.Shared.GameObjects; using Robust.Shared.Log; using Robust.Shared.Map; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Robust.UnitTesting; @@ -67,7 +68,7 @@ public abstract partial class InteractionTest protected NetEntity Player; protected ICommonSession ClientSession = default!; - protected IPlayerSession ServerSession = default!; + protected ICommonSession ServerSession = default!; public EntityUid? ClientTarget; diff --git a/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs b/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs index 28e49645c970ab..22a185798e97c7 100644 --- a/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs +++ b/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs @@ -5,6 +5,7 @@ using Content.Server.Players; using Content.Shared.Ghost; using Content.Shared.Mind; +using Content.Shared.Players; using Robust.Shared.Console; using Robust.Shared.GameObjects; using Robust.Shared.Map; @@ -43,7 +44,7 @@ public async Task TakeRoleAndReturn() var sPlayerMan = server.ResolveDependency(); var conHost = client.ResolveDependency(); var mindSystem = entMan.System(); - var session = sPlayerMan.ServerSessions.Single(); + var session = sPlayerMan.Sessions.Single(); var originalMindId = session.ContentData()!.Mind!.Value; // Spawn player entity & attach diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs b/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs index 9fc68ef93d45f0..a67a45ecb4c8ec 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs @@ -2,6 +2,7 @@ using Content.Server.Players; using Content.Shared.Ghost; using Content.Shared.Mind; +using Content.Shared.Players; using Robust.Server.Console; using Robust.Server.GameObjects; using Robust.Server.Player; @@ -35,7 +36,7 @@ public async Task TestDeleteVisiting() MindComponent mind = default!; await server.WaitAssertion(() => { - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); playerEnt = entMan.SpawnEntity(null, MapCoordinates.Nullspace); visitEnt = entMan.SpawnEntity(null, MapCoordinates.Nullspace); @@ -81,7 +82,7 @@ public async Task TestGhostOnDeleteMap() var entMan = server.ResolveDependency(); var mapManager = server.ResolveDependency(); var playerMan = server.ResolveDependency(); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); var mindSystem = entMan.EntitySysManager.GetEntitySystem(); @@ -128,7 +129,7 @@ public async Task TestGhostOnDelete() var entMan = server.ResolveDependency(); var playerMan = server.ResolveDependency(); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); Assert.That(!entMan.HasComponent(player.AttachedEntity), "Player was initially a ghost?"); @@ -162,7 +163,7 @@ public async Task TestOriginalDeletedWhileGhostingKeepsGhost() var mindSystem = entMan.EntitySysManager.GetEntitySystem(); var mind = GetMind(pair); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); #pragma warning disable NUnit2045 // Interdependent assertions. Assert.That(player.AttachedEntity, Is.Not.Null); Assert.That(entMan.EntityExists(player.AttachedEntity)); @@ -218,7 +219,7 @@ public async Task TestGhostToAghost() var playerMan = server.ResolveDependency(); var serverConsole = server.ResolveDependency(); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); var ghost = await BecomeGhost(pair); @@ -263,7 +264,7 @@ public async Task TestGhostDeletedSpawnsNewGhost() var playerMan = server.ResolveDependency(); var serverConsole = server.ResolveDependency(); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); EntityUid ghost = default!; diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs b/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs index f71a6ad5f98e34..bbc011acacbd1a 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs @@ -3,12 +3,14 @@ using Content.Server.Players; using Content.Shared.Ghost; using Content.Shared.Mind; +using Content.Shared.Players; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.GameObjects; using Robust.Shared.Map; using Robust.Shared.Network; +using Robust.Shared.Player; namespace Content.IntegrationTests.Tests.Minds; @@ -36,7 +38,7 @@ public sealed partial class MindTests var playerMan = pair.Server.ResolveDependency(); var mindSys = entMan.System(); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); EntityUid entity = default; EntityUid mindId = default!; @@ -71,7 +73,7 @@ private static async Task BecomeGhost(TestPair pair, bool visit = fal EntityUid mindId = default!; MindComponent mind = default!; - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); await pair.Server.WaitAssertion(() => { var oldUid = player.AttachedEntity; @@ -118,7 +120,7 @@ private static (EntityUid Id, MindComponent Comp) GetMind(Pair.TestPair pair) { var playerMan = pair.Server.ResolveDependency(); var entMan = pair.Server.ResolveDependency(); - var player = playerMan.ServerSessions.SingleOrDefault(); + var player = playerMan.Sessions.SingleOrDefault(); Assert.That(player, Is.Not.Null); var mindId = player.ContentData()!.Mind!.Value; @@ -139,7 +141,7 @@ private static async Task Disconnect(Pair.TestPair pair) var netManager = pair.Client.ResolveDependency(); var playerMan = pair.Server.ResolveDependency(); var entMan = pair.Server.ResolveDependency(); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); var mindId = player.ContentData()!.Mind!.Value; var mind = entMan.GetComponent(mindId); @@ -161,21 +163,21 @@ private static async Task Connect(Pair.TestPair pair, string username) { var netManager = pair.Client.ResolveDependency(); var playerMan = pair.Server.ResolveDependency(); - Assert.That(!playerMan.ServerSessions.Any()); + Assert.That(!playerMan.Sessions.Any()); await Task.WhenAll(pair.Client.WaitIdleAsync(), pair.Client.WaitIdleAsync()); pair.Client.SetConnectTarget(pair.Server); await pair.Client.WaitPost(() => netManager.ClientConnect(null!, 0, username)); await pair.RunTicksSync(5); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); Assert.That(player.Status, Is.EqualTo(SessionStatus.InGame)); } - private static async Task DisconnectReconnect(Pair.TestPair pair) + private static async Task DisconnectReconnect(Pair.TestPair pair) { var playerMan = pair.Server.ResolveDependency(); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); var name = player.Name; var id = player.UserId; @@ -183,7 +185,7 @@ private static async Task DisconnectReconnect(Pair.TestPair pair await Connect(pair, name); // Session has changed - var newSession = playerMan.ServerSessions.Single(); + var newSession = playerMan.Sessions.Single(); Assert.Multiple(() => { Assert.That(newSession, Is.Not.EqualTo(player)); diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs b/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs index ea2110c03a6ae3..9939ebc5455ea0 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs @@ -49,7 +49,7 @@ public async Task TestDeletedCanReconnect() var mind = GetMind(pair); var playerMan = pair.Server.ResolveDependency(); - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); var name = player.Name; var user = player.UserId; Assert.That(mind.Comp.OwnedEntity, Is.Not.Null); @@ -72,7 +72,7 @@ public async Task TestDeletedCanReconnect() // Reconnect await Connect(pair, name); - player = playerMan.ServerSessions.Single(); + player = playerMan.Sessions.Single(); Assert.Multiple(() => { Assert.That(user, Is.EqualTo(player.UserId)); @@ -127,8 +127,10 @@ public async Task TestVisitingReconnect() var mindSys = entMan.System(); var mind = GetMind(pair); + Assert.Null(mind.Comp.VisitingEntity); + // Make player visit a new mob - var original = mind.Comp.CurrentEntity; + var original = mind.Comp.OwnedEntity; EntityUid visiting = default; await pair.Server.WaitAssertion(() => { @@ -137,6 +139,7 @@ await pair.Server.WaitAssertion(() => }); await pair.RunTicksSync(5); + Assert.That(mind.Comp.VisitingEntity, Is.EqualTo(visiting)); await DisconnectReconnect(pair); // Player is back in control of the visited mob, mind was preserved diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.cs b/Content.IntegrationTests/Tests/Minds/MindTests.cs index fb2fef43edba27..c9788b80a6d75e 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.cs @@ -11,6 +11,7 @@ using Content.Shared.FixedPoint; using Content.Shared.Mind; using Content.Shared.Mind.Components; +using Content.Shared.Players; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; using Robust.Server.Console; @@ -67,13 +68,12 @@ await server.WaitAssertion(() => var entity = entMan.SpawnEntity(null, new MapCoordinates()); var mindComp = entMan.EnsureComponent(entity); - var mindId = mindSystem.CreateMind(null); - var mind = entMan.GetComponent(mindId); + var mind = mindSystem.CreateMind(null); - Assert.That(mind.UserId, Is.EqualTo(null)); + Assert.That(mind.Comp.UserId, Is.EqualTo(null)); - mindSystem.TransferTo(mindId, entity, mind: mind); - Assert.That(mindSystem.GetMind(entity, mindComp), Is.EqualTo(mindId)); + mindSystem.TransferTo(mind, entity, mind: mind); + Assert.That(mindSystem.GetMind(entity, mindComp), Is.EqualTo(mind.Owner)); }); await pair.CleanReturnAsync(); @@ -94,11 +94,11 @@ await server.WaitAssertion(() => var entity = entMan.SpawnEntity(null, new MapCoordinates()); var mindComp = entMan.EnsureComponent(entity); - var mindId = mindSystem.CreateMind(null); + var mindId = mindSystem.CreateMind(null).Owner; mindSystem.TransferTo(mindId, entity); Assert.That(mindSystem.GetMind(entity, mindComp), Is.EqualTo(mindId)); - var mind2 = mindSystem.CreateMind(null); + var mind2 = mindSystem.CreateMind(null).Owner; mindSystem.TransferTo(mind2, entity); Assert.Multiple(() => { @@ -184,7 +184,7 @@ await server.WaitAssertion(() => var mindComp = entMan.EnsureComponent(entity); entMan.EnsureComponent(targetEntity); - var mind = mindSystem.CreateMind(null); + var mind = mindSystem.CreateMind(null).Owner; mindSystem.TransferTo(mind, entity); @@ -276,7 +276,7 @@ await server.WaitAssertion(() => var entity = entMan.SpawnEntity(null, new MapCoordinates()); var mindComp = entMan.EnsureComponent(entity); - var mindId = mindSystem.CreateMind(null); + var mindId = mindSystem.CreateMind(null).Owner; var mind = entMan.EnsureComponent(mindId); Assert.That(mind.UserId, Is.EqualTo(null)); @@ -334,7 +334,7 @@ await server.WaitAssertion(() => public async Task TestPlayerCanGhost() { // Client is needed to spawn session - await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); + await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true, DummyTicker = false }); var server = pair.Server; var entMan = server.ResolveDependency(); @@ -346,7 +346,7 @@ public async Task TestPlayerCanGhost() EntityUid entity = default!; EntityUid mindId = default!; MindComponent mind = default!; - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); await server.WaitAssertion(() => { @@ -407,12 +407,6 @@ await server.WaitAssertion(() => await pair.CleanReturnAsync(); } - // TODO Implement - /*[Test] - public async Task TestPlayerCanReturnFromGhostWhenDead() - { - }*/ - [Test] public async Task TestGhostDoesNotInfiniteLoop() { @@ -433,7 +427,7 @@ public async Task TestGhostDoesNotInfiniteLoop() EntityUid ghost = default!; EntityUid mindId = default!; MindComponent mind = default!; - var player = playerMan.ServerSessions.Single(); + var player = playerMan.Sessions.Single(); await server.WaitAssertion(() => { diff --git a/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs b/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs index ca7eeac199d033..d6aec781a99e7b 100644 --- a/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs +++ b/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs @@ -2,8 +2,7 @@ using System.Collections.Generic; using Content.IntegrationTests.Pair; using Content.Server.Administration.Managers; -using Robust.Server.Player; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; using Robust.Shared.Toolshed.Syntax; @@ -60,7 +59,7 @@ public virtual async Task Setup() AdminManager = Server.ResolveDependency(); } - protected bool InvokeCommand(string command, out object? result, IPlayerSession? session = null) + protected bool InvokeCommand(string command, out object? result, ICommonSession? session = null) { return Toolshed.InvokeCommand(this, command, null, out result); } @@ -95,7 +94,7 @@ public bool CheckInvokable(CommandSpec command, out IConError? error) return true; } - protected IPlayerSession? InvocationSession { get; set; } + protected ICommonSession? InvocationSession { get; set; } public ICommonSession? Session { diff --git a/Content.MapRenderer/Painters/MapPainter.cs b/Content.MapRenderer/Painters/MapPainter.cs index b799db78a5f458..8f3dd59baf8f31 100644 --- a/Content.MapRenderer/Painters/MapPainter.cs +++ b/Content.MapRenderer/Painters/MapPainter.cs @@ -68,7 +68,7 @@ await client.WaitPost(() => await server.WaitPost(() => { - var playerEntity = sPlayerManager.ServerSessions.Single().AttachedEntity; + var playerEntity = sPlayerManager.Sessions.Single().AttachedEntity; if (playerEntity.HasValue) { diff --git a/Content.Server/Administration/AdminPermsChangedEventArgs.cs b/Content.Server/Administration/AdminPermsChangedEventArgs.cs index 24ca7aca6841cf..07eb416be64c3e 100644 --- a/Content.Server/Administration/AdminPermsChangedEventArgs.cs +++ b/Content.Server/Administration/AdminPermsChangedEventArgs.cs @@ -1,5 +1,5 @@ using Content.Shared.Administration; -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Administration { @@ -8,7 +8,7 @@ namespace Content.Server.Administration /// public sealed class AdminPermsChangedEventArgs : EventArgs { - public AdminPermsChangedEventArgs(IPlayerSession player, AdminFlags? flags) + public AdminPermsChangedEventArgs(ICommonSession player, AdminFlags? flags) { Player = player; Flags = flags; @@ -17,7 +17,7 @@ public AdminPermsChangedEventArgs(IPlayerSession player, AdminFlags? flags) /// /// The player that had their admin permissions changed. /// - public IPlayerSession Player { get; } + public ICommonSession Player { get; } /// /// The admin flags of the player. Null if the player is no longer an admin. diff --git a/Content.Server/Administration/Commands/AGhost.cs b/Content.Server/Administration/Commands/AGhost.cs index 42a8600ff17ff4..2d1a15a0bed00d 100644 --- a/Content.Server/Administration/Commands/AGhost.cs +++ b/Content.Server/Administration/Commands/AGhost.cs @@ -2,7 +2,6 @@ using Content.Shared.Administration; using Content.Shared.Ghost; using Content.Shared.Mind; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -18,7 +17,7 @@ public sealed class AGhost : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("Nah"); diff --git a/Content.Server/Administration/Commands/AdminWhoCommand.cs b/Content.Server/Administration/Commands/AdminWhoCommand.cs index 8e6c402c4e2e51..9765e8385f0240 100644 --- a/Content.Server/Administration/Commands/AdminWhoCommand.cs +++ b/Content.Server/Administration/Commands/AdminWhoCommand.cs @@ -2,7 +2,6 @@ using Content.Server.Administration.Managers; using Content.Server.Afk; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Utility; @@ -35,7 +34,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) if (adminData.Title is { } title) sb.Append($": [{title}]"); - if (shell.Player is IPlayerSession player && adminMgr.HasAdminFlag(player, AdminFlags.Admin)) + if (shell.Player is { } player && adminMgr.HasAdminFlag(player, AdminFlags.Admin)) { if (afk.IsAfk(admin)) sb.Append(" [AFK]"); diff --git a/Content.Server/Administration/Commands/AnnounceUiCommand.cs b/Content.Server/Administration/Commands/AnnounceUiCommand.cs index c4cd7f13e41721..d80db966863576 100644 --- a/Content.Server/Administration/Commands/AnnounceUiCommand.cs +++ b/Content.Server/Administration/Commands/AnnounceUiCommand.cs @@ -1,7 +1,6 @@ using Content.Server.Administration.UI; using Content.Server.EUI; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -17,7 +16,7 @@ public sealed class AnnounceUiCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("This does not work from the server console."); diff --git a/Content.Server/Administration/Commands/BanCommand.cs b/Content.Server/Administration/Commands/BanCommand.cs index 58a801e4105640..156fdf496a9a08 100644 --- a/Content.Server/Administration/Commands/BanCommand.cs +++ b/Content.Server/Administration/Commands/BanCommand.cs @@ -1,15 +1,8 @@ using System.Linq; -using System.Net; -using System.Net.Sockets; -using System.Text; using Content.Server.Administration.Managers; -using Content.Server.Administration.Notes; -using Content.Server.Database; -using Content.Server.GameTicking; using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.Database; -using Content.Shared.Players.PlayTimeTracking; using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; @@ -84,7 +77,7 @@ public override async void Execute(IConsoleShell shell, string argStr, string[] } var located = await _locator.LookupIdByNameOrIdAsync(target); - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (located == null) { @@ -102,7 +95,7 @@ public override CompletionResult GetCompletion(IConsoleShell shell, string[] arg { if (args.Length == 1) { - var options = _playerManager.ServerSessions.Select(c => c.Name).OrderBy(c => c).ToArray(); + var options = _playerManager.Sessions.Select(c => c.Name).OrderBy(c => c).ToArray(); return CompletionResult.FromHintOptions(options, LocalizationManager.GetString("cmd-ban-hint")); } diff --git a/Content.Server/Administration/Commands/BanListCommand.cs b/Content.Server/Administration/Commands/BanListCommand.cs index 1c2be523949f3b..a5bc97dce3edb2 100644 --- a/Content.Server/Administration/Commands/BanListCommand.cs +++ b/Content.Server/Administration/Commands/BanListCommand.cs @@ -36,7 +36,7 @@ public override async void Execute(IConsoleShell shell, string argStr, string[] return; } - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { var bans = await _dbManager.GetServerBansAsync(data.LastAddress, data.UserId, data.LastHWId, false); @@ -67,7 +67,7 @@ public override CompletionResult GetCompletion(IConsoleShell shell, string[] arg return CompletionResult.Empty; var playerMgr = IoCManager.Resolve(); - var options = playerMgr.ServerSessions.Select(c => c.Name).OrderBy(c => c).ToArray(); + var options = playerMgr.Sessions.Select(c => c.Name).OrderBy(c => c).ToArray(); return CompletionResult.FromHintOptions(options, Loc.GetString("cmd-banlist-hint")); } } diff --git a/Content.Server/Administration/Commands/BanPanelCommand.cs b/Content.Server/Administration/Commands/BanPanelCommand.cs index 6036e5aa6ea581..9f9ec9e89fa417 100644 --- a/Content.Server/Administration/Commands/BanPanelCommand.cs +++ b/Content.Server/Administration/Commands/BanPanelCommand.cs @@ -1,12 +1,6 @@ using Content.Shared.Administration; using Robust.Shared.Console; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Content.Server.EUI; -using Robust.Server.Player; namespace Content.Server.Administration.Commands; @@ -21,7 +15,7 @@ public sealed class BanPanelCommand : LocalizedCommands public override async void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError(Loc.GetString("cmd-banpanel-server")); return; diff --git a/Content.Server/Administration/Commands/ControlMob.cs b/Content.Server/Administration/Commands/ControlMob.cs index 2d205e44d3b911..317461a3736dfb 100644 --- a/Content.Server/Administration/Commands/ControlMob.cs +++ b/Content.Server/Administration/Commands/ControlMob.cs @@ -1,6 +1,5 @@ +using Content.Server.Mind; using Content.Shared.Administration; -using Content.Shared.Mind; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -16,7 +15,7 @@ public sealed class ControlMob : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteLine("shell-server-cannot"); return; @@ -42,14 +41,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - var mindSystem = _entities.System(); - if (!mindSystem.TryGetMind(target, out var mindId, out var mind)) - { - shell.WriteLine(Loc.GetString("shell-entity-is-not-mob")); - return; - } - - mindSystem.TransferTo(mindId, target, mind: mind); + _entities.System().ControlMob(player.UserId, target); } } } diff --git a/Content.Server/Administration/Commands/DSay.cs b/Content.Server/Administration/Commands/DSay.cs index 79b0e8db7d68d3..61b47d785674de 100644 --- a/Content.Server/Administration/Commands/DSay.cs +++ b/Content.Server/Administration/Commands/DSay.cs @@ -1,7 +1,5 @@ -using Content.Server.Chat; using Content.Server.Chat.Systems; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -17,7 +15,7 @@ sealed class DSay : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("shell-only-players-can-run-this-command"); diff --git a/Content.Server/Administration/Commands/DeAdminCommand.cs b/Content.Server/Administration/Commands/DeAdminCommand.cs index c2bbfa7a339667..cf659412008ecb 100644 --- a/Content.Server/Administration/Commands/DeAdminCommand.cs +++ b/Content.Server/Administration/Commands/DeAdminCommand.cs @@ -1,10 +1,8 @@ using Content.Server.Administration.Managers; using Content.Shared.Administration; using JetBrains.Annotations; -using Robust.Server.Player; using Robust.Shared.Console; - namespace Content.Server.Administration.Commands { [UsedImplicitly] @@ -17,7 +15,7 @@ public sealed class DeAdminCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("You cannot use this command from the server console."); diff --git a/Content.Server/Administration/Commands/ExplosionCommand.cs b/Content.Server/Administration/Commands/ExplosionCommand.cs index d48b69a5ad296a..56ed78b2e2e390 100644 --- a/Content.Server/Administration/Commands/ExplosionCommand.cs +++ b/Content.Server/Administration/Commands/ExplosionCommand.cs @@ -3,7 +3,6 @@ using Content.Server.Explosion.EntitySystems; using Content.Shared.Administration; using Content.Shared.Explosion; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; using Robust.Shared.Prototypes; @@ -21,7 +20,7 @@ public sealed class OpenExplosionEui : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteError("This does not work from the server console."); diff --git a/Content.Server/Administration/Commands/FaxUiCommand.cs b/Content.Server/Administration/Commands/FaxUiCommand.cs index b06d36d08b79d0..cf9e97e3997e62 100644 --- a/Content.Server/Administration/Commands/FaxUiCommand.cs +++ b/Content.Server/Administration/Commands/FaxUiCommand.cs @@ -1,7 +1,6 @@ using Content.Server.EUI; using Content.Server.Fax.AdminUI; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands; @@ -16,7 +15,7 @@ public sealed class FaxUiCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("shell-only-players-can-run-this-command"); diff --git a/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs b/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs index 9f28dc907c7959..47ff3e1a1c8937 100644 --- a/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs +++ b/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs @@ -1,7 +1,6 @@ using Content.Server.Administration.Logs; using Content.Server.EUI; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands; @@ -15,7 +14,7 @@ public sealed class OpenAdminLogsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteLine("This does not work from the server console."); return; diff --git a/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs b/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs index 147c0d6a82e27f..e6ae4f7616754d 100644 --- a/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs +++ b/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs @@ -1,7 +1,5 @@ using Content.Server.Administration.Notes; -using Content.Server.Database; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands; @@ -17,7 +15,7 @@ public sealed class OpenAdminNotesCommand : IConsoleCommand public async void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError("This does not work from the server console."); return; diff --git a/Content.Server/Administration/Commands/OpenPermissionsCommand.cs b/Content.Server/Administration/Commands/OpenPermissionsCommand.cs index 78d56cb4fbc34c..fd3227d4aafa7f 100644 --- a/Content.Server/Administration/Commands/OpenPermissionsCommand.cs +++ b/Content.Server/Administration/Commands/OpenPermissionsCommand.cs @@ -1,10 +1,8 @@ using Content.Server.Administration.UI; using Content.Server.EUI; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; - namespace Content.Server.Administration.Commands { [AdminCommand(AdminFlags.Permissions)] @@ -16,7 +14,7 @@ public sealed class OpenPermissionsCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("This does not work from the server console."); diff --git a/Content.Server/Administration/Commands/OpenUserVisibleNotesCommand.cs b/Content.Server/Administration/Commands/OpenUserVisibleNotesCommand.cs index d61114fcae8f3e..507c7ab2799f59 100644 --- a/Content.Server/Administration/Commands/OpenUserVisibleNotesCommand.cs +++ b/Content.Server/Administration/Commands/OpenUserVisibleNotesCommand.cs @@ -1,7 +1,6 @@ using Content.Server.Administration.Notes; using Content.Shared.Administration; using Content.Shared.CCVar; -using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; @@ -27,7 +26,7 @@ public async void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError("This does not work from the server console."); return; diff --git a/Content.Server/Administration/Commands/PardonCommand.cs b/Content.Server/Administration/Commands/PardonCommand.cs index 869024eb7c0c74..9cbaaece310fc4 100644 --- a/Content.Server/Administration/Commands/PardonCommand.cs +++ b/Content.Server/Administration/Commands/PardonCommand.cs @@ -1,7 +1,6 @@ using System.Text; using Content.Server.Database; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -15,7 +14,7 @@ public sealed class PardonCommand : IConsoleCommand public async void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; var dbMan = IoCManager.Resolve(); if (args.Length != 1) diff --git a/Content.Server/Administration/Commands/PlayGlobalSoundCommand.cs b/Content.Server/Administration/Commands/PlayGlobalSoundCommand.cs index ec5b21dcee8e84..fdf067181dba78 100644 --- a/Content.Server/Administration/Commands/PlayGlobalSoundCommand.cs +++ b/Content.Server/Administration/Commands/PlayGlobalSoundCommand.cs @@ -6,7 +6,6 @@ using Robust.Shared.Console; using Robust.Shared.ContentPack; using Robust.Shared.Player; -using Robust.Shared.Players; using Robust.Shared.Prototypes; namespace Content.Server.Administration.Commands; diff --git a/Content.Server/Administration/Commands/ReAdminCommand.cs b/Content.Server/Administration/Commands/ReAdminCommand.cs index 12ff13221a065f..a3f5993766370f 100644 --- a/Content.Server/Administration/Commands/ReAdminCommand.cs +++ b/Content.Server/Administration/Commands/ReAdminCommand.cs @@ -1,9 +1,7 @@ using Content.Server.Administration.Managers; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; - namespace Content.Server.Administration.Commands { [AnyCommand] @@ -15,7 +13,7 @@ public sealed class ReAdminCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("You cannot use this command from the server console."); diff --git a/Content.Server/Administration/Commands/SetAdminOOC.cs b/Content.Server/Administration/Commands/SetAdminOOC.cs index bb11b938d85e2c..27528e1940f9e2 100644 --- a/Content.Server/Administration/Commands/SetAdminOOC.cs +++ b/Content.Server/Administration/Commands/SetAdminOOC.cs @@ -1,8 +1,6 @@ - using Content.Server.Database; using Content.Server.Preferences.Managers; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands @@ -16,7 +14,7 @@ internal sealed class SetAdminOOC : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (!(shell.Player is IPlayerSession)) + if (shell.Player == null) { shell.WriteError(Loc.GetString("shell-only-players-can-run-this-command")); return; diff --git a/Content.Server/Administration/Commands/SetMindCommand.cs b/Content.Server/Administration/Commands/SetMindCommand.cs index b9ff329ed2e6a6..5310c2dd7f5c73 100644 --- a/Content.Server/Administration/Commands/SetMindCommand.cs +++ b/Content.Server/Administration/Commands/SetMindCommand.cs @@ -2,6 +2,7 @@ using Content.Shared.Administration; using Content.Shared.Mind; using Content.Shared.Mind.Components; +using Content.Shared.Players; using Robust.Server.Player; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/SetOutfitCommand.cs b/Content.Server/Administration/Commands/SetOutfitCommand.cs index 28172ee6c5c858..b2e7f4e6cc0443 100644 --- a/Content.Server/Administration/Commands/SetOutfitCommand.cs +++ b/Content.Server/Administration/Commands/SetOutfitCommand.cs @@ -10,7 +10,6 @@ using Content.Shared.Preferences; using Content.Shared.Roles; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -57,7 +56,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) if (args.Length == 1) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError(Loc.GetString("set-outfit-command-is-not-player-error")); return; diff --git a/Content.Server/Administration/Commands/WarpCommand.cs b/Content.Server/Administration/Commands/WarpCommand.cs index 30a6d127aa36bc..0d6da0d993735f 100644 --- a/Content.Server/Administration/Commands/WarpCommand.cs +++ b/Content.Server/Administration/Commands/WarpCommand.cs @@ -4,11 +4,9 @@ using Content.Shared.Administration; using Content.Shared.Follower; using Content.Shared.Ghost; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; using Robust.Shared.Map; -using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; @@ -28,7 +26,7 @@ public sealed class WarpCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("Only players can use this command"); diff --git a/Content.Server/Administration/ContentNetworkResourceManager.cs b/Content.Server/Administration/ContentNetworkResourceManager.cs index 0d3f3291e6b742..dd95a2d897134b 100644 --- a/Content.Server/Administration/ContentNetworkResourceManager.cs +++ b/Content.Server/Administration/ContentNetworkResourceManager.cs @@ -1,8 +1,8 @@ using Content.Server.Database; using Content.Shared.CCVar; -using Robust.Server.Player; using Robust.Server.Upload; using Robust.Shared.Configuration; +using Robust.Shared.Player; using Robust.Shared.Upload; namespace Content.Server.Administration; @@ -22,7 +22,7 @@ public void Initialize() _netRes.OnResourceUploaded += OnUploadResource; } - private async void OnUploadResource(IPlayerSession session, NetworkResourceUploadMessage msg) + private async void OnUploadResource(ICommonSession session, NetworkResourceUploadMessage msg) { if (StoreUploaded) await _serverDb.AddUploadedResourceLogAsync(session.UserId, DateTime.Now, msg.RelativePath.ToString(), msg.Data); diff --git a/Content.Server/Administration/Logs/AdminLogManager.Json.cs b/Content.Server/Administration/Logs/AdminLogManager.Json.cs index 63f30c7a66d20d..0a67d61cefe7fb 100644 --- a/Content.Server/Administration/Logs/AdminLogManager.Json.cs +++ b/Content.Server/Administration/Logs/AdminLogManager.Json.cs @@ -3,8 +3,8 @@ using System.Text.Json.Serialization; using Content.Server.Administration.Logs.Converters; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Map; +using Robust.Shared.Player; namespace Content.Server.Administration.Logs; @@ -44,7 +44,7 @@ private void InitializeJson() var value = properties[key]; value = value switch { - IPlayerSession player => new SerializablePlayer(player), + ICommonSession player => new SerializablePlayer(player), EntityCoordinates entityCoordinates => new SerializableEntityCoordinates(_entityManager, entityCoordinates), _ => value }; @@ -56,7 +56,7 @@ private void InitializeJson() { EntityUid id => id, EntityStringRepresentation rep => rep.Uid, - IPlayerSession {AttachedEntity: {Valid: true}} session => session.AttachedEntity, + ICommonSession {AttachedEntity: {Valid: true}} session => session.AttachedEntity, IComponent component => component.Owner, _ => null }; diff --git a/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs b/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs index 0605c2db2a3146..c1567448ccb842 100644 --- a/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs +++ b/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs @@ -1,5 +1,5 @@ using System.Text.Json; -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Administration.Logs.Converters; @@ -36,9 +36,9 @@ public override void Write(Utf8JsonWriter writer, SerializablePlayer value, Json public readonly struct SerializablePlayer { - public readonly IPlayerSession Player; + public readonly ICommonSession Player; - public SerializablePlayer(IPlayerSession player) + public SerializablePlayer(ICommonSession player) { Player = player; } diff --git a/Content.Server/Administration/Managers/AdminManager.cs b/Content.Server/Administration/Managers/AdminManager.cs index 4aa6074b1095b9..0895183215ed49 100644 --- a/Content.Server/Administration/Managers/AdminManager.cs +++ b/Content.Server/Administration/Managers/AdminManager.cs @@ -7,15 +7,15 @@ using Content.Server.Players; using Content.Shared.Administration; using Content.Shared.CCVar; +using Content.Shared.Players; using Robust.Server.Console; using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.ContentPack; using Robust.Shared.Enums; -using Robust.Shared.Map; using Robust.Shared.Network; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; using Robust.Shared.Utility; @@ -35,16 +35,16 @@ public sealed class AdminManager : IAdminManager, IPostInjectInit, IConGroupCont [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly ToolshedManager _toolshed = default!; - private readonly Dictionary _admins = new(); + private readonly Dictionary _admins = new(); private readonly HashSet _promotedPlayers = new(); public event Action? OnPermsChanged; - public IEnumerable ActiveAdmins => _admins + public IEnumerable ActiveAdmins => _admins .Where(p => p.Value.Data.Active) .Select(p => p.Key); - public IEnumerable AllAdmins => _admins.Select(p => p.Key); + public IEnumerable AllAdmins => _admins.Select(p => p.Key); private readonly AdminCommandPermissions _commandPermissions = new(); private readonly AdminCommandPermissions _toolshedCommandPermissions = new(); @@ -56,7 +56,7 @@ public bool IsAdmin(ICommonSession session, bool includeDeAdmin = false) public AdminData? GetAdminData(ICommonSession session, bool includeDeAdmin = false) { - if (_admins.TryGetValue((IPlayerSession)session, out var reg) && (reg.Data.Active || includeDeAdmin)) + if (_admins.TryGetValue(session, out var reg) && (reg.Data.Active || includeDeAdmin)) { return reg.Data; } @@ -66,13 +66,13 @@ public bool IsAdmin(ICommonSession session, bool includeDeAdmin = false) public AdminData? GetAdminData(EntityUid uid, bool includeDeAdmin = false) { - if (_playerManager.TryGetSessionByEntity(uid, out var session) && session is IPlayerSession playerSession) - return GetAdminData(playerSession, includeDeAdmin); + if (_playerManager.TryGetSessionByEntity(uid, out var session)) + return GetAdminData(session, includeDeAdmin); return null; } - public void DeAdmin(IPlayerSession session) + public void DeAdmin(ICommonSession session) { if (!_admins.TryGetValue(session, out var reg)) { @@ -95,7 +95,7 @@ public void DeAdmin(IPlayerSession session) UpdateAdminStatus(session); } - public void ReAdmin(IPlayerSession session) + public void ReAdmin(ICommonSession session) { if (!_admins.TryGetValue(session, out var reg)) { @@ -119,7 +119,7 @@ public void ReAdmin(IPlayerSession session) UpdateAdminStatus(session); } - public async void ReloadAdmin(IPlayerSession player) + public async void ReloadAdmin(ICommonSession player) { var data = await LoadAdminData(player); var curAdmin = _admins.GetValueOrDefault(player); @@ -236,7 +236,7 @@ public void Initialize() _toolshed.ActivePermissionController = this; } - public void PromoteHost(IPlayerSession player) + public void PromoteHost(ICommonSession player) { _promotedPlayers.Add(player.UserId); @@ -250,7 +250,7 @@ void IPostInjectInit.PostInject() } // NOTE: Also sends commands list for non admins.. - private void UpdateAdminStatus(IPlayerSession session) + private void UpdateAdminStatus(ICommonSession session) { var msg = new MsgUpdateAdminStatus(); @@ -290,7 +290,7 @@ private void PlayerStatusChanged(object? sender, SessionStatusEventArgs e) } } - private async void LoginAdminMaybe(IPlayerSession session) + private async void LoginAdminMaybe(ICommonSession session) { var adminDat = await LoadAdminData(session); if (adminDat == null) @@ -323,7 +323,7 @@ private async void LoginAdminMaybe(IPlayerSession session) UpdateAdminStatus(session); } - private async Task<(AdminData dat, int? rankId, bool specialLogin)?> LoadAdminData(IPlayerSession session) + private async Task<(AdminData dat, int? rankId, bool specialLogin)?> LoadAdminData(ICommonSession session) { var promoteHost = IsLocal(session) && _cfg.GetCVar(CCVars.ConsoleLoginLocal) || _promotedPlayers.Contains(session.UserId) @@ -387,7 +387,7 @@ private async void LoginAdminMaybe(IPlayerSession session) } } - private static bool IsLocal(IPlayerSession player) + private static bool IsLocal(ICommonSession player) { var ep = player.ConnectedClient.RemoteEndPoint; var addr = ep.Address; @@ -419,7 +419,7 @@ public bool TryGetCommandFlags(CommandSpec command, out AdminFlags[]? flags) return false; } - public bool CanCommand(IPlayerSession session, string cmdName) + public bool CanCommand(ICommonSession session, string cmdName) { if (_commandPermissions.AnyCommands.Contains(cmdName)) { @@ -474,7 +474,7 @@ public bool CheckInvokable(CommandSpec command, ICommonSession? user, out IConEr return true; } - var data = GetAdminData((IPlayerSession)user); + var data = GetAdminData(user); if (data == null) { // Player isn't an admin. @@ -520,32 +520,32 @@ private static (bool isAvail, AdminFlags[] flagsReq) GetRequiredFlag(object cmd) return (attribs.Length != 0, attribs); } - public bool CanViewVar(IPlayerSession session) + public bool CanViewVar(ICommonSession session) { return CanCommand(session, "vv"); } - public bool CanAdminPlace(IPlayerSession session) + public bool CanAdminPlace(ICommonSession session) { return GetAdminData(session)?.CanAdminPlace() ?? false; } - public bool CanScript(IPlayerSession session) + public bool CanScript(ICommonSession session) { return GetAdminData(session)?.CanScript() ?? false; } - public bool CanAdminMenu(IPlayerSession session) + public bool CanAdminMenu(ICommonSession session) { return GetAdminData(session)?.CanAdminMenu() ?? false; } - public bool CanAdminReloadPrototypes(IPlayerSession session) + public bool CanAdminReloadPrototypes(ICommonSession session) { return GetAdminData(session)?.CanAdminReloadPrototypes() ?? false; } - private void SendPermsChangedEvent(IPlayerSession session) + private void SendPermsChangedEvent(ICommonSession session) { var flags = GetAdminData(session)?.Flags; OnPermsChanged?.Invoke(new AdminPermsChangedEventArgs(session, flags)); @@ -553,7 +553,7 @@ private void SendPermsChangedEvent(IPlayerSession session) private sealed class AdminReg { - public readonly IPlayerSession Session; + public readonly ICommonSession Session; public AdminData Data; public int? RankId; @@ -561,7 +561,7 @@ private sealed class AdminReg // Such as console.loginlocal or promotehost public bool IsSpecialLogin; - public AdminReg(IPlayerSession session, AdminData data) + public AdminReg(ICommonSession session, AdminData data) { Data = data; Session = session; diff --git a/Content.Server/Administration/Managers/BanManager.cs b/Content.Server/Administration/Managers/BanManager.cs index 765df17b179fab..4d51d35576ac9f 100644 --- a/Content.Server/Administration/Managers/BanManager.cs +++ b/Content.Server/Administration/Managers/BanManager.cs @@ -15,6 +15,7 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -283,7 +284,7 @@ public void SendRoleBans(NetUserId userId) SendRoleBans(player); } - public void SendRoleBans(IPlayerSession pSession) + public void SendRoleBans(ICommonSession pSession) { var roleBans = _cachedRoleBans.GetValueOrDefault(pSession.UserId) ?? new HashSet(); var bans = new MsgRoleBans() diff --git a/Content.Server/Administration/Managers/IAdminManager.cs b/Content.Server/Administration/Managers/IAdminManager.cs index eeed5cc36e066f..a52ec7b099cd1f 100644 --- a/Content.Server/Administration/Managers/IAdminManager.cs +++ b/Content.Server/Administration/Managers/IAdminManager.cs @@ -1,9 +1,8 @@ using Content.Shared.Administration; using Content.Shared.Administration.Managers; -using Robust.Server.Player; +using Robust.Shared.Player; using Robust.Shared.Toolshed; - namespace Content.Server.Administration.Managers { /// @@ -22,12 +21,12 @@ public interface IAdminManager : ISharedAdminManager /// /// This does not include admins that are de-adminned. /// - IEnumerable ActiveAdmins { get; } + IEnumerable ActiveAdmins { get; } /// /// Gets all admins currently on the server, even de-adminned ones. /// - IEnumerable AllAdmins { get; } + IEnumerable AllAdmins { get; } /// /// De-admins an admin temporarily so they are effectively a normal player. @@ -35,18 +34,18 @@ public interface IAdminManager : ISharedAdminManager /// /// De-adminned admins are able to re-admin at any time if they so desire. /// - void DeAdmin(IPlayerSession session); + void DeAdmin(ICommonSession session); /// /// Re-admins a de-adminned admin. /// - void ReAdmin(IPlayerSession session); + void ReAdmin(ICommonSession session); /// /// Re-loads the permissions of an player in case their admin data changed DB-side. /// /// - void ReloadAdmin(IPlayerSession player); + void ReloadAdmin(ICommonSession player); /// /// Reloads admin permissions for all admins with a certain rank. @@ -57,7 +56,7 @@ public interface IAdminManager : ISharedAdminManager void Initialize(); - void PromoteHost(IPlayerSession player); + void PromoteHost(ICommonSession player); bool TryGetCommandFlags(CommandSpec command, out AdminFlags[]? flags); } diff --git a/Content.Server/Administration/Managers/IBanManager.cs b/Content.Server/Administration/Managers/IBanManager.cs index 8458feac8d0614..dafe3d35bdd49d 100644 --- a/Content.Server/Administration/Managers/IBanManager.cs +++ b/Content.Server/Administration/Managers/IBanManager.cs @@ -2,8 +2,8 @@ using System.Net; using System.Threading.Tasks; using Content.Shared.Database; -using Robust.Server.Player; using Robust.Shared.Network; +using Robust.Shared.Player; namespace Content.Server.Administration.Managers; @@ -55,5 +55,5 @@ public interface IBanManager /// Sends role bans to the target /// /// Player's session - public void SendRoleBans(IPlayerSession pSession); + public void SendRoleBans(ICommonSession pSession); } diff --git a/Content.Server/Administration/Notes/AdminNotesManager.cs b/Content.Server/Administration/Notes/AdminNotesManager.cs index 8a7846663f350e..0c1e7f3daade17 100644 --- a/Content.Server/Administration/Notes/AdminNotesManager.cs +++ b/Content.Server/Administration/Notes/AdminNotesManager.cs @@ -11,7 +11,7 @@ using Content.Shared.Players.PlayTimeTracking; using Robust.Shared.Configuration; using Robust.Shared.Network; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.Administration.Notes; diff --git a/Content.Server/Administration/Notes/AdminNotesSystem.cs b/Content.Server/Administration/Notes/AdminNotesSystem.cs index fd9f3f6bfae597..f2eb033dcaa7a3 100644 --- a/Content.Server/Administration/Notes/AdminNotesSystem.cs +++ b/Content.Server/Administration/Notes/AdminNotesSystem.cs @@ -1,13 +1,13 @@ using Content.Server.Administration.Commands; using Content.Server.Chat.Managers; using Content.Server.EUI; -using Content.Shared.Chat; using Content.Shared.Database; using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; +using Robust.Shared.Player; using Robust.Shared.Utility; namespace Content.Server.Administration.Notes; diff --git a/Content.Server/Administration/Notes/IAdminNotesManager.cs b/Content.Server/Administration/Notes/IAdminNotesManager.cs index ae7133c56d96d5..a726bd11c82b76 100644 --- a/Content.Server/Administration/Notes/IAdminNotesManager.cs +++ b/Content.Server/Administration/Notes/IAdminNotesManager.cs @@ -2,7 +2,7 @@ using Content.Server.Database; using Content.Shared.Administration.Notes; using Content.Shared.Database; -using Robust.Shared.Players; +using Robust.Shared.Player; namespace Content.Server.Administration.Notes; diff --git a/Content.Server/Administration/QuickDialogSystem.OpenDialog.cs b/Content.Server/Administration/QuickDialogSystem.OpenDialog.cs index 521bee776f03a7..fb013a88ad974e 100644 --- a/Content.Server/Administration/QuickDialogSystem.OpenDialog.cs +++ b/Content.Server/Administration/QuickDialogSystem.OpenDialog.cs @@ -1,6 +1,6 @@ using Content.Shared.Administration; using JetBrains.Annotations; -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Administration; @@ -16,7 +16,7 @@ public sealed partial class QuickDialogSystem /// The action to execute upon the dialog being cancelled. /// Type of the input. [PublicAPI] - public void OpenDialog(IPlayerSession session, string title, string prompt, Action okAction, + public void OpenDialog(ICommonSession session, string title, string prompt, Action okAction, Action? cancelAction = null) { OpenDialogInternal( @@ -53,7 +53,7 @@ public void OpenDialog(IPlayerSession session, string title, string prompt, /// Type of the first input. /// Type of the second input. [PublicAPI] - public void OpenDialog(IPlayerSession session, string title, string prompt1, string prompt2, + public void OpenDialog(ICommonSession session, string title, string prompt1, string prompt2, Action okAction, Action? cancelAction = null) { OpenDialogInternal( @@ -96,7 +96,7 @@ public void OpenDialog(IPlayerSession session, string title, string prom /// Type of the second input. /// Type of the third input. [PublicAPI] - public void OpenDialog(IPlayerSession session, string title, string prompt1, string prompt2, + public void OpenDialog(ICommonSession session, string title, string prompt1, string prompt2, string prompt3, Action okAction, Action? cancelAction = null) { OpenDialogInternal( @@ -142,7 +142,7 @@ public void OpenDialog(IPlayerSession session, string title, string /// Type of the third input. /// Type of the fourth input. [PublicAPI] - public void OpenDialog(IPlayerSession session, string title, string prompt1, string prompt2, + public void OpenDialog(ICommonSession session, string title, string prompt1, string prompt2, string prompt3, string prompt4, Action okAction, Action? cancelAction = null) { OpenDialogInternal( diff --git a/Content.Server/Administration/QuickDialogSystem.cs b/Content.Server/Administration/QuickDialogSystem.cs index 51b8cf79c2a1e4..96423e52238ca4 100644 --- a/Content.Server/Administration/QuickDialogSystem.cs +++ b/Content.Server/Administration/QuickDialogSystem.cs @@ -1,12 +1,9 @@ -using System.ComponentModel; -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Administration; -using Microsoft.CodeAnalysis.CSharp.Syntax; using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Network; using Robust.Shared.Player; -using Robust.Shared.Serialization.TypeSerializers.Interfaces; namespace Content.Server.Administration; @@ -87,7 +84,7 @@ private void PlayerManagerOnPlayerStatusChanged(object? sender, SessionStatusEve _openDialogsByUser.Remove(user); } - private void OpenDialogInternal(IPlayerSession session, string title, List entries, QuickDialogButtonFlag buttons, Action okAction, Action cancelAction) + private void OpenDialogInternal(ICommonSession session, string title, List entries, QuickDialogButtonFlag buttons, Action okAction, Action cancelAction) { var did = GetDialogId(); RaiseNetworkEvent( diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index 66f7a8999b33ca..feabaa2aad6e5d 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -109,7 +109,7 @@ private void OnRoundRestartCleanup(RoundRestartCleanupEvent ev) } } - public void UpdatePlayerList(IPlayerSession player) + public void UpdatePlayerList(ICommonSession player) { _playerList[player.UserId] = GetPlayerInfo(player.Data, player); @@ -203,7 +203,7 @@ private void OnPlayerStatusChanged(object? sender, SessionStatusEventArgs e) UpdatePanicBunker(); } - private void SendFullPlayerList(IPlayerSession playerSession) + private void SendFullPlayerList(ICommonSession playerSession) { var ev = new FullPlayerListEvent(); @@ -212,7 +212,7 @@ private void SendFullPlayerList(IPlayerSession playerSession) RaiseNetworkEvent(ev, playerSession.ConnectedClient); } - private PlayerInfo GetPlayerInfo(IPlayerData data, IPlayerSession? session) + private PlayerInfo GetPlayerInfo(SessionData data, ICommonSession? session) { var name = data.UserName; var entityName = string.Empty; @@ -326,7 +326,7 @@ private void SendPanicBunkerStatusAll() /// chat messages and showing a popup to other players. /// Their items are dropped on the ground. /// - public void Erase(IPlayerSession player) + public void Erase(ICommonSession player) { var entity = player.AttachedEntity; _chat.DeleteMessagesBy(player); diff --git a/Content.Server/Administration/Systems/AdminTestArenaSystem.cs b/Content.Server/Administration/Systems/AdminTestArenaSystem.cs index e65acf571cbeb0..e3671bcdfb348f 100644 --- a/Content.Server/Administration/Systems/AdminTestArenaSystem.cs +++ b/Content.Server/Administration/Systems/AdminTestArenaSystem.cs @@ -1,8 +1,8 @@ using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Network; +using Robust.Shared.Player; namespace Content.Server.Administration.Systems; @@ -20,7 +20,7 @@ public sealed class AdminTestArenaSystem : EntitySystem public Dictionary ArenaMap { get; private set; } = new(); public Dictionary ArenaGrid { get; private set; } = new(); - public (EntityUid Map, EntityUid? Grid) AssertArenaLoaded(IPlayerSession admin) + public (EntityUid Map, EntityUid? Grid) AssertArenaLoaded(ICommonSession admin) { if (ArenaMap.TryGetValue(admin.UserId, out var arenaMap) && !Deleted(arenaMap) && !Terminating(arenaMap)) { diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index c7e23374a3c8fb..bc065745f5ea0a 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -6,6 +6,7 @@ using Content.Server.Disposal.Tube.Components; using Content.Server.EUI; using Content.Server.Ghost.Roles; +using Content.Server.Mind; using Content.Server.Mind.Commands; using Content.Server.Prayer; using Content.Server.Xenoarchaeology.XenoArtifacts; @@ -18,17 +19,15 @@ using Content.Shared.Examine; using Content.Shared.GameTicking; using Content.Shared.Inventory; -using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Popups; using Content.Shared.Verbs; using Robust.Server.Console; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; using Robust.Shared.Map.Components; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Robust.Shared.Toolshed; @@ -56,7 +55,7 @@ public sealed partial class AdminVerbSystem : EntitySystem [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; [Dependency] private readonly PrayerSystem _prayerSystem = default!; [Dependency] private readonly EuiManager _eui = default!; - [Dependency] private readonly SharedMindSystem _mindSystem = default!; + [Dependency] private readonly MindSystem _mindSystem = default!; [Dependency] private readonly ToolshedManager _toolshed = default!; [Dependency] private readonly RejuvenateSystem _rejuvenate = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; @@ -277,12 +276,7 @@ private void AddDebugVerbs(GetVerbsEvent args) // TODO VERB ICON control mob icon Act = () => { - MakeSentientCommand.MakeSentient(args.Target, EntityManager); - - if (!_minds.TryGetMind(player, out var mindId, out var mind)) - return; - - _mindSystem.TransferTo(mindId, args.Target, ghostCheckOverride: true, mind: mind); + _mindSystem.ControlMob(args.User, args.Target); }, Impact = LogImpact.High, ConfirmationPopup = true @@ -358,7 +352,7 @@ private void AddDebugVerbs(GetVerbsEvent args) var message = ExamineSystemShared.InRangeUnOccluded(args.User, args.Target) ? Loc.GetString("in-range-unoccluded-verb-on-activate-not-occluded") : Loc.GetString("in-range-unoccluded-verb-on-activate-occluded"); - + _popup.PopupEntity(message, args.Target, args.User); } }; @@ -432,7 +426,7 @@ private void OnSolutionChanged(EntityUid uid, SolutionContainerManagerComponent } } - public void OpenEditSolutionsEui(IPlayerSession session, EntityUid uid) + public void OpenEditSolutionsEui(ICommonSession session, EntityUid uid) { if (session.AttachedEntity == null) return; diff --git a/Content.Server/Administration/Systems/BwoinkSystem.cs b/Content.Server/Administration/Systems/BwoinkSystem.cs index 98e5af1126b40b..31ef285a882165 100644 --- a/Content.Server/Administration/Systems/BwoinkSystem.cs +++ b/Content.Server/Administration/Systems/BwoinkSystem.cs @@ -17,6 +17,7 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -119,7 +120,7 @@ private void OnClientTypingUpdated(BwoinkClientTypingUpdated msg, EntitySessionE _typingUpdateTimestamps[args.SenderSession.UserId] = (_timing.RealTime, msg.Typing); // Non-admins can only ever type on their own ahelp, guard against fake messages - var isAdmin = _adminManager.GetAdminData((IPlayerSession) args.SenderSession)?.HasFlag(AdminFlags.Adminhelp) ?? false; + var isAdmin = _adminManager.GetAdminData(args.SenderSession)?.HasFlag(AdminFlags.Adminhelp) ?? false; var channel = isAdmin ? msg.Channel : args.SenderSession.UserId; var update = new BwoinkPlayerTypingUpdated(channel, args.SenderSession.Name, msg.Typing); @@ -376,7 +377,7 @@ public override void Update(float frameTime) protected override void OnBwoinkTextMessage(BwoinkTextMessage message, EntitySessionEventArgs eventArgs) { base.OnBwoinkTextMessage(message, eventArgs); - var senderSession = (IPlayerSession) eventArgs.SenderSession; + var senderSession = eventArgs.SenderSession; // TODO: Sanitize text? // Confirm that this person is actually allowed to send a message here. diff --git a/Content.Server/Administration/Toolshed/AdminsCommand.cs b/Content.Server/Administration/Toolshed/AdminsCommand.cs index aa82e0f1d93297..1d64f748fd261c 100644 --- a/Content.Server/Administration/Toolshed/AdminsCommand.cs +++ b/Content.Server/Administration/Toolshed/AdminsCommand.cs @@ -1,6 +1,6 @@ using Content.Server.Administration.Managers; using Content.Shared.Administration; -using Robust.Server.Player; +using Robust.Shared.Player; using Robust.Shared.Toolshed; namespace Content.Server.Administration.Toolshed; @@ -11,13 +11,13 @@ public sealed class AdminsCommand : ToolshedCommand [Dependency] private readonly IAdminManager _admin = default!; [CommandImplementation("active")] - public IEnumerable Active() + public IEnumerable Active() { return _admin.ActiveAdmins; } [CommandImplementation("all")] - public IEnumerable All() + public IEnumerable All() { return _admin.AllAdmins; } diff --git a/Content.Server/Afk/AFKSystem.cs b/Content.Server/Afk/AFKSystem.cs index 0938f45f73eb69..f634a415dc51a5 100644 --- a/Content.Server/Afk/AFKSystem.cs +++ b/Content.Server/Afk/AFKSystem.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Server.Afk.Events; using Content.Server.GameTicking; using Content.Shared.CCVar; @@ -24,7 +23,7 @@ public sealed class AFKSystem : EntitySystem private float _checkDelay; private TimeSpan _checkTime; - private readonly HashSet _afkPlayers = new(); + private readonly HashSet _afkPlayers = new(); public override void Initialize() { @@ -73,11 +72,9 @@ public override void Update(float frameTime) _checkTime = _timing.CurTime + TimeSpan.FromSeconds(_checkDelay); - foreach (var session in Filter.GetAllPlayers()) + foreach (var pSession in Filter.GetAllPlayers()) { - if (session.Status != SessionStatus.InGame) continue; - - var pSession = (IPlayerSession) session; + if (pSession.Status != SessionStatus.InGame) continue; var isAfk = _afkManager.IsAfk(pSession); if (isAfk && _afkPlayers.Add(pSession)) diff --git a/Content.Server/Afk/AfkManager.cs b/Content.Server/Afk/AfkManager.cs index 24cd1e28cecd11..52dc7715df384e 100644 --- a/Content.Server/Afk/AfkManager.cs +++ b/Content.Server/Afk/AfkManager.cs @@ -5,6 +5,7 @@ using Robust.Shared.Console; using Robust.Shared.Enums; using Robust.Shared.Input; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Server.Afk @@ -20,13 +21,13 @@ public interface IAfkManager /// /// The player to check. /// True if the player is AFK, false otherwise. - bool IsAfk(IPlayerSession player); + bool IsAfk(ICommonSession player); /// /// Resets AFK status for the player as if they just did an action and are definitely not AFK. /// /// The player to set AFK status for. - void PlayerDidAction(IPlayerSession player); + void PlayerDidAction(ICommonSession player); void Initialize(); } @@ -40,7 +41,7 @@ public sealed class AfkManager : IAfkManager, IEntityEventSubscriber [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IConsoleHost _consoleHost = default!; - private readonly Dictionary _lastActionTimes = new(); + private readonly Dictionary _lastActionTimes = new(); public void Initialize() { @@ -55,7 +56,7 @@ public void Initialize() HandleInputCmd); } - public void PlayerDidAction(IPlayerSession player) + public void PlayerDidAction(ICommonSession player) { if (player.Status == SessionStatus.Disconnected) // Make sure we don't re-add to the dictionary if the player is disconnected now. @@ -64,7 +65,7 @@ public void PlayerDidAction(IPlayerSession player) _lastActionTimes[player] = _gameTiming.RealTime; } - public bool IsAfk(IPlayerSession player) + public bool IsAfk(ICommonSession player) { if (!_lastActionTimes.TryGetValue(player, out var time)) // Some weird edge case like disconnected clients. Just say true I guess. @@ -87,13 +88,13 @@ private void PlayerStatusChanged(object? sender, SessionStatusEventArgs e) private void ConsoleHostOnAnyCommandExecuted(IConsoleShell shell, string commandname, string argstr, string[] args) { - if (shell.Player is IPlayerSession player) + if (shell.Player is { } player) PlayerDidAction(player); } private void HandleInputCmd(FullInputCmdMessage msg, EntitySessionEventArgs args) { - PlayerDidAction((IPlayerSession) args.SenderSession); + PlayerDidAction(args.SenderSession); } } } diff --git a/Content.Server/Afk/Events/AFKEvent.cs b/Content.Server/Afk/Events/AFKEvent.cs index 6adb950e47561a..ee9d548043fbd7 100644 --- a/Content.Server/Afk/Events/AFKEvent.cs +++ b/Content.Server/Afk/Events/AFKEvent.cs @@ -1,4 +1,4 @@ -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Afk.Events; @@ -8,9 +8,9 @@ namespace Content.Server.Afk.Events; [ByRefEvent] public readonly struct AFKEvent { - public readonly IPlayerSession Session; + public readonly ICommonSession Session; - public AFKEvent(IPlayerSession playerSession) + public AFKEvent(ICommonSession playerSession) { Session = playerSession; } diff --git a/Content.Server/Afk/Events/UnAFKEvent.cs b/Content.Server/Afk/Events/UnAFKEvent.cs index 3dd034583c533d..0983c256f0580e 100644 --- a/Content.Server/Afk/Events/UnAFKEvent.cs +++ b/Content.Server/Afk/Events/UnAFKEvent.cs @@ -1,4 +1,4 @@ -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Afk.Events; @@ -8,9 +8,9 @@ namespace Content.Server.Afk.Events; [ByRefEvent] public readonly struct UnAFKEvent { - public readonly IPlayerSession Session; + public readonly ICommonSession Session; - public UnAFKEvent(IPlayerSession playerSession) + public UnAFKEvent(ICommonSession playerSession) { Session = playerSession; } diff --git a/Content.Server/Alert/Commands/ClearAlert.cs b/Content.Server/Alert/Commands/ClearAlert.cs index e43f06413c3088..1759612702f789 100644 --- a/Content.Server/Alert/Commands/ClearAlert.cs +++ b/Content.Server/Alert/Commands/ClearAlert.cs @@ -2,7 +2,6 @@ using Content.Server.Commands; using Content.Shared.Administration; using Content.Shared.Alert; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Alert.Commands @@ -16,7 +15,7 @@ public sealed class ClearAlert : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player?.AttachedEntity == null) { shell.WriteLine("You don't have an entity."); diff --git a/Content.Server/Alert/Commands/ShowAlert.cs b/Content.Server/Alert/Commands/ShowAlert.cs index edb634b546c087..11901e9af0021f 100644 --- a/Content.Server/Alert/Commands/ShowAlert.cs +++ b/Content.Server/Alert/Commands/ShowAlert.cs @@ -2,7 +2,6 @@ using Content.Server.Commands; using Content.Shared.Administration; using Content.Shared.Alert; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Alert.Commands @@ -16,7 +15,7 @@ public sealed class ShowAlert : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player?.AttachedEntity == null) { shell.WriteLine("You cannot run this from the server or without an attached entity."); diff --git a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs index 009a8b5f236d7c..2c432a24190d8b 100644 --- a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs +++ b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs @@ -3,7 +3,6 @@ using Content.Server.Station.Systems; using Content.Shared.Administration; using JetBrains.Annotations; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.AlertLevel.Commands @@ -19,7 +18,7 @@ public sealed class SetAlertLevelCommand : IConsoleCommand public CompletionResult GetCompletion(IConsoleShell shell, string[] args) { var levelNames = new string[] {}; - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player?.AttachedEntity != null) { var stationUid = EntitySystem.Get().GetOwningStation(player.AttachedEntity.Value); @@ -54,7 +53,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player?.AttachedEntity == null) { shell.WriteLine(Loc.GetString("shell-only-players-can-run-this-command")); diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs index 5e323f5ab8eb2d..737b723d390abc 100644 --- a/Content.Server/Antag/AntagSelectionSystem.cs +++ b/Content.Server/Antag/AntagSelectionSystem.cs @@ -22,6 +22,7 @@ using Content.Server.Shuttles.Systems; using Content.Shared.Mobs; using Robust.Server.Containers; +using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Server.Antag; @@ -88,9 +89,9 @@ public void EligiblePlayers(string antagPrototype, out List chosen, bool includeHeads = false) { - var allPlayers = _playerSystem.ServerSessions.ToList(); - var playerList = new List(); - var prefList = new List(); + var allPlayers = _playerSystem.Sessions.ToList(); + var playerList = new List(); + var prefList = new List(); chosen = new List(); foreach (var player in allPlayers) { @@ -116,7 +117,7 @@ public void EligiblePlayers(string antagPrototype, var antags = Math.Clamp(allPlayers.Count / antagsPerPlayer, 1, maxAntags); for (var antag = 0; antag < antags; antag++) { - IPlayerSession chosenPlayer = null!; + ICommonSession? chosenPlayer = null; if (prefList.Count == 0) { if (playerList.Count == 0) diff --git a/Content.Server/Arcade/BlockGame/BlockGame.Ui.cs b/Content.Server/Arcade/BlockGame/BlockGame.Ui.cs index 92a96ea2266655..ef69600783b5c5 100644 --- a/Content.Server/Arcade/BlockGame/BlockGame.Ui.cs +++ b/Content.Server/Arcade/BlockGame/BlockGame.Ui.cs @@ -1,6 +1,6 @@ using Content.Shared.Arcade; -using Robust.Server.Player; using System.Linq; +using Robust.Shared.Player; namespace Content.Server.Arcade.BlockGame; @@ -166,7 +166,7 @@ private void SendMessage(BoundUserInterfaceMessage message) /// /// The message to send to a specific player/spectator. /// The target recipient. - private void SendMessage(BoundUserInterfaceMessage message, IPlayerSession session) + private void SendMessage(BoundUserInterfaceMessage message, ICommonSession session) { if (_uiSystem.TryGetUi(_owner, BlockGameUiKey.Key, out var bui)) _uiSystem.TrySendUiMessage(bui, message, session); @@ -176,7 +176,7 @@ private void SendMessage(BoundUserInterfaceMessage message, IPlayerSession sessi /// Handles sending the current state of the game to a player that has just opened the UI. /// /// The target recipient. - public void UpdateNewPlayerUI(IPlayerSession session) + public void UpdateNewPlayerUI(ICommonSession session) { if (_gameOver) { @@ -209,7 +209,7 @@ private void FullUpdate() /// Handles broadcasting the full player-visible game state to a specific player/spectator. /// /// The target recipient. - private void FullUpdate(IPlayerSession session) + private void FullUpdate(ICommonSession session) { UpdateFieldUI(session); SendNextPieceUpdate(session); @@ -235,7 +235,7 @@ public void UpdateFieldUI() /// Handles broadcasting the current location of all of the blocks in the playfield + the active piece to a specific player/spectator. /// /// The target recipient. - public void UpdateFieldUI(IPlayerSession session) + public void UpdateFieldUI(ICommonSession session) { if (!Started) return; @@ -283,7 +283,7 @@ private void SendNextPieceUpdate() /// Broadcasts the state of the next queued piece to a specific viewer. /// /// The target recipient. - private void SendNextPieceUpdate(IPlayerSession session) + private void SendNextPieceUpdate(ICommonSession session) { SendMessage(new BlockGameMessages.BlockGameVisualUpdateMessage(NextPiece.BlocksForPreview(), BlockGameMessages.BlockGameVisualType.NextBlock), session); } @@ -303,7 +303,7 @@ private void SendHoldPieceUpdate() /// Broadcasts the state of the currently held piece to a specific viewer. /// /// The target recipient. - private void SendHoldPieceUpdate(IPlayerSession session) + private void SendHoldPieceUpdate(ICommonSession session) { if (HeldPiece.HasValue) SendMessage(new BlockGameMessages.BlockGameVisualUpdateMessage(HeldPiece.Value.BlocksForPreview(), BlockGameMessages.BlockGameVisualType.HoldBlock), session); @@ -323,7 +323,7 @@ private void SendLevelUpdate() /// Broadcasts the current game level to a specific viewer. /// /// The target recipient. - private void SendLevelUpdate(IPlayerSession session) + private void SendLevelUpdate(ICommonSession session) { SendMessage(new BlockGameMessages.BlockGameLevelUpdateMessage(Level), session); } @@ -340,7 +340,7 @@ private void SendPointsUpdate() /// Broadcasts the current game score to a specific viewer. /// /// The target recipient. - private void SendPointsUpdate(IPlayerSession session) + private void SendPointsUpdate(ICommonSession session) { SendMessage(new BlockGameMessages.BlockGameScoreUpdateMessage(Points), session); } @@ -357,7 +357,7 @@ private void SendHighscoreUpdate() /// Broadcasts the current game high score positions to a specific viewer. /// /// The target recipient. - private void SendHighscoreUpdate(IPlayerSession session) + private void SendHighscoreUpdate(ICommonSession session) { SendMessage(new BlockGameMessages.BlockGameHighScoreUpdateMessage(_arcadeSystem.GetLocalHighscores(), _arcadeSystem.GetGlobalHighscores()), session); } diff --git a/Content.Server/Arcade/BlockGame/BlockGameArcadeComponent.cs b/Content.Server/Arcade/BlockGame/BlockGameArcadeComponent.cs index 268d5be4d2e881..5613d9154441a5 100644 --- a/Content.Server/Arcade/BlockGame/BlockGameArcadeComponent.cs +++ b/Content.Server/Arcade/BlockGame/BlockGameArcadeComponent.cs @@ -1,4 +1,4 @@ -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Arcade.BlockGame; @@ -13,10 +13,10 @@ public sealed partial class BlockGameArcadeComponent : Component /// /// The player currently playing the active session of NT-BG. /// - public IPlayerSession? Player = null; + public ICommonSession? Player = null; /// /// The players currently viewing (but not playing) the active session of NT-BG. /// - public readonly List Spectators = new(); + public readonly List Spectators = new(); } diff --git a/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs b/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs index dac29accc968c7..ecc5bfd3e2c786 100644 --- a/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs +++ b/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs @@ -2,7 +2,7 @@ using Content.Server.UserInterface; using Content.Shared.Arcade; using Robust.Server.GameObjects; -using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Arcade.BlockGame; @@ -30,7 +30,7 @@ public override void Update(float frameTime) } } - private void UpdatePlayerStatus(EntityUid uid, IPlayerSession session, PlayerBoundUserInterface? bui = null, BlockGameArcadeComponent? blockGame = null) + private void UpdatePlayerStatus(EntityUid uid, ICommonSession session, PlayerBoundUserInterface? bui = null, BlockGameArcadeComponent? blockGame = null) { if (!Resolve(uid, ref blockGame)) return; @@ -67,7 +67,7 @@ private void OnAfterUIOpen(EntityUid uid, BlockGameArcadeComponent component, Af private void OnAfterUiClose(EntityUid uid, BlockGameArcadeComponent component, BoundUIClosedEvent args) { - if (args.Session is not IPlayerSession session) + if (args.Session is not { } session) return; if (component.Player != session) diff --git a/Content.Server/Atmos/Commands/DeleteGasCommand.cs b/Content.Server/Atmos/Commands/DeleteGasCommand.cs index 0f0c399b11a4b8..9e7594c024b84c 100644 --- a/Content.Server/Atmos/Commands/DeleteGasCommand.cs +++ b/Content.Server/Atmos/Commands/DeleteGasCommand.cs @@ -2,7 +2,6 @@ using Content.Server.Atmos.EntitySystems; using Content.Shared.Administration; using Content.Shared.Atmos; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Map; @@ -20,7 +19,7 @@ public sealed class DeleteGasCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; EntityUid? gridId; Gas? gas = null; diff --git a/Content.Server/Atmos/Commands/ShowAtmosCommand.cs b/Content.Server/Atmos/Commands/ShowAtmosCommand.cs index 5ad73ec9063488..263ef947d0a08f 100644 --- a/Content.Server/Atmos/Commands/ShowAtmosCommand.cs +++ b/Content.Server/Atmos/Commands/ShowAtmosCommand.cs @@ -1,7 +1,6 @@ using Content.Server.Administration; using Content.Server.Atmos.EntitySystems; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Atmos.Commands @@ -15,7 +14,7 @@ public sealed class ShowAtmos : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("You must be a player to use this command."); diff --git a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs index 34f558a2521c55..90edd4caed52b0 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs @@ -10,6 +10,7 @@ using Robust.Shared.Enums; using Robust.Shared.Map; using Robust.Shared.Map.Components; +using Robust.Shared.Player; namespace Content.Server.Atmos.EntitySystems { @@ -27,7 +28,7 @@ public sealed class AtmosDebugOverlaySystem : SharedAtmosDebugOverlaySystem /// To modify it see and /// . ///
- private readonly HashSet _playerObservers = new(); + private readonly HashSet _playerObservers = new(); /// /// Overlay update ticks per second. @@ -48,17 +49,17 @@ public override void Shutdown() _playerManager.PlayerStatusChanged -= OnPlayerStatusChanged; } - public bool AddObserver(IPlayerSession observer) + public bool AddObserver(ICommonSession observer) { return _playerObservers.Add(observer); } - public bool HasObserver(IPlayerSession observer) + public bool HasObserver(ICommonSession observer) { return _playerObservers.Contains(observer); } - public bool RemoveObserver(IPlayerSession observer) + public bool RemoveObserver(ICommonSession observer) { if (!_playerObservers.Remove(observer)) { @@ -76,7 +77,7 @@ public bool RemoveObserver(IPlayerSession observer) /// /// The observer to toggle. /// true if added, false if removed. - public bool ToggleObserver(IPlayerSession observer) + public bool ToggleObserver(ICommonSession observer) { if (HasObserver(observer)) { diff --git a/Content.Server/Atmos/EntitySystems/GasTankSystem.cs b/Content.Server/Atmos/EntitySystems/GasTankSystem.cs index df867d351638ac..17715435b2fea4 100644 --- a/Content.Server/Atmos/EntitySystems/GasTankSystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTankSystem.cs @@ -12,7 +12,6 @@ using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.Physics.Systems; @@ -60,12 +59,6 @@ private void OnGasShutdown(Entity gasTank, ref ComponentShutdo private void OnGasTankToggleInternals(Entity ent, ref GasTankToggleInternalsMessage args) { - if (args.Session is not IPlayerSession playerSession || - playerSession.AttachedEntity == null) - { - return; - } - ToggleInternals(ent); } diff --git a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs index c229ef50c9adae..b0e8cf71c79403 100644 --- a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs @@ -16,6 +16,7 @@ using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; +using Robust.Shared.Player; using Robust.Shared.Threading; using Robust.Shared.Timing; using Robust.Shared.Utility; @@ -35,7 +36,7 @@ public sealed class GasTileOverlaySystem : SharedGasTileOverlaySystem [Robust.Shared.IoC.Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Robust.Shared.IoC.Dependency] private readonly ChunkingSystem _chunkingSys = default!; - private readonly Dictionary>> _lastSentChunks = new(); + private readonly Dictionary>> _lastSentChunks = new(); // Oh look its more duplicated decal system code! private ObjectPool> _chunkIndexPool = @@ -286,12 +287,12 @@ public override void Update(float frameTime) // Now we'll go through each player, then through each chunk in range of that player checking if the player is still in range // If they are, check if they need the new data to send (i.e. if there's an overlay for the gas). // Afterwards we reset all the chunk data for the next time we tick. - var players = _playerManager.ServerSessions.Where(x => x.Status == SessionStatus.InGame).ToArray(); + var players = _playerManager.Sessions.Where(x => x.Status == SessionStatus.InGame).ToArray(); var opts = new ParallelOptions { MaxDegreeOfParallelism = _parMan.ParallelProcessCount }; Parallel.ForEach(players, opts, p => UpdatePlayer(p, curTick)); } - private void UpdatePlayer(IPlayerSession playerSession, GameTick curTick) + private void UpdatePlayer(ICommonSession playerSession, GameTick curTick) { var chunksInRange = _chunkingSys.GetChunksForSession(playerSession, ChunkSize, _chunkIndexPool, _chunkViewerPool); var previouslySent = _lastSentChunks[playerSession]; diff --git a/Content.Server/Body/Commands/AddHandCommand.cs b/Content.Server/Body/Commands/AddHandCommand.cs index 308295c06ccf9d..655d0c88f9ba10 100644 --- a/Content.Server/Body/Commands/AddHandCommand.cs +++ b/Content.Server/Body/Commands/AddHandCommand.cs @@ -4,7 +4,6 @@ using Content.Shared.Administration; using Content.Shared.Body.Components; using Content.Shared.Body.Part; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -27,7 +26,7 @@ sealed class AddHandCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; EntityUid entity; EntityUid hand; diff --git a/Content.Server/Body/Commands/AttachBodyPartCommand.cs b/Content.Server/Body/Commands/AttachBodyPartCommand.cs index 267b5208086184..24604b88b7a959 100644 --- a/Content.Server/Body/Commands/AttachBodyPartCommand.cs +++ b/Content.Server/Body/Commands/AttachBodyPartCommand.cs @@ -1,10 +1,8 @@ -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.Server.Player; using Robust.Shared.Console; namespace Content.Server.Body.Commands @@ -20,7 +18,7 @@ public sealed class AttachBodyPartCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; EntityUid bodyId; EntityUid? partUid; diff --git a/Content.Server/Body/Commands/DestroyMechanismCommand.cs b/Content.Server/Body/Commands/DestroyMechanismCommand.cs index 6ad0631150a3d8..3aa28f40720b2f 100644 --- a/Content.Server/Body/Commands/DestroyMechanismCommand.cs +++ b/Content.Server/Body/Commands/DestroyMechanismCommand.cs @@ -2,7 +2,6 @@ using Content.Server.Body.Systems; using Content.Shared.Administration; using Content.Shared.Body.Components; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Random; @@ -17,7 +16,7 @@ sealed class DestroyMechanismCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("Only a player can run this command."); diff --git a/Content.Server/Body/Commands/RemoveHandCommand.cs b/Content.Server/Body/Commands/RemoveHandCommand.cs index 729db4bc44686e..4a2956ae7ab16b 100644 --- a/Content.Server/Body/Commands/RemoveHandCommand.cs +++ b/Content.Server/Body/Commands/RemoveHandCommand.cs @@ -4,7 +4,6 @@ using Content.Shared.Administration; using Content.Shared.Body.Components; using Content.Shared.Body.Part; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Random; @@ -22,7 +21,7 @@ public sealed class RemoveHandCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = shell.Player as IPlayerSession; + var player = shell.Player; if (player == null) { shell.WriteLine("Only a player can run this command."); diff --git a/Content.Server/Body/Systems/BodySystem.cs b/Content.Server/Body/Systems/BodySystem.cs index f2f848c488d7d9..242b02d78c1059 100644 --- a/Content.Server/Body/Systems/BodySystem.cs +++ b/Content.Server/Body/Systems/BodySystem.cs @@ -116,7 +116,7 @@ public override HashSet GibBody(EntityUid bodyId, bool gibOrgans = fa if (!Resolve(bodyId, ref body, false)) return new HashSet(); - if (LifeStage(bodyId) >= EntityLifeStage.Terminating || EntityManager.IsQueuedForDeletion(bodyId)) + if (TerminatingOrDeleted(bodyId) || EntityManager.IsQueuedForDeletion(bodyId)) return new HashSet(); var xform = Transform(bodyId); diff --git a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs index d9327b51505c15..f659357ad382ba 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs @@ -8,7 +8,7 @@ using Content.Shared.Cargo.Prototypes; using Content.Shared.Database; using Robust.Shared.Map; -using Robust.Shared.Players; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; diff --git a/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs b/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs index 9f7acce4fd2ac5..02b2eee7712cf9 100644 --- a/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs +++ b/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs @@ -6,9 +6,9 @@ using Content.Shared.Interaction; using Robust.Server.Containers; using Robust.Server.GameObjects; -using Robust.Server.Player; using Robust.Shared.Containers; using Robust.Shared.Map; +using Robust.Shared.Player; namespace Content.Server.CartridgeLoader; @@ -98,7 +98,7 @@ public bool HasProgram( /// and use this method to update its state so the cartridge loaders state can be added to it. /// /// - public void UpdateUiState(EntityUid loaderUid, IPlayerSession? session, CartridgeLoaderComponent? loader) + public void UpdateUiState(EntityUid loaderUid, ICommonSession? session, CartridgeLoaderComponent? loader) { if (!Resolve(loaderUid, ref loader)) return; @@ -122,7 +122,7 @@ public void UpdateUiState(EntityUid loaderUid, IPlayerSession? session, Cartridg /// This method is called "UpdateCartridgeUiState" but cartridges and a programs are the same. A cartridge is just a program as a visible item. /// /// - public void UpdateCartridgeUiState(EntityUid loaderUid, BoundUserInterfaceState state, IPlayerSession? session = default!, CartridgeLoaderComponent? loader = default!) + public void UpdateCartridgeUiState(EntityUid loaderUid, BoundUserInterfaceState state, ICommonSession? session = default!, CartridgeLoaderComponent? loader = default!) { if (!Resolve(loaderUid, ref loader)) return; diff --git a/Content.Server/Chat/Commands/AdminChatCommand.cs b/Content.Server/Chat/Commands/AdminChatCommand.cs index 8aa95ffee18c5e..979051e9d3eba4 100644 --- a/Content.Server/Chat/Commands/AdminChatCommand.cs +++ b/Content.Server/Chat/Commands/AdminChatCommand.cs @@ -1,7 +1,6 @@ using Content.Server.Administration; using Content.Server.Chat.Managers; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Chat.Commands @@ -15,7 +14,7 @@ internal sealed class AdminChatCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - var player = (IPlayerSession?) shell.Player; + var player = shell.Player; if (player == null) { diff --git a/Content.Server/Chat/Commands/LOOCCommand.cs b/Content.Server/Chat/Commands/LOOCCommand.cs index a897a0b2bfb871..9e16193fc38a4e 100644 --- a/Content.Server/Chat/Commands/LOOCCommand.cs +++ b/Content.Server/Chat/Commands/LOOCCommand.cs @@ -1,6 +1,5 @@ using Content.Server.Chat.Systems; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -15,7 +14,7 @@ internal sealed class LOOCCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Commands/MeCommand.cs b/Content.Server/Chat/Commands/MeCommand.cs index 36f86cf4d6b265..e763d5656e16da 100644 --- a/Content.Server/Chat/Commands/MeCommand.cs +++ b/Content.Server/Chat/Commands/MeCommand.cs @@ -1,6 +1,5 @@ using Content.Server.Chat.Systems; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -15,7 +14,7 @@ internal sealed class MeCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Commands/OOCCommand.cs b/Content.Server/Chat/Commands/OOCCommand.cs index bef2024608d53b..36f6303fbd145c 100644 --- a/Content.Server/Chat/Commands/OOCCommand.cs +++ b/Content.Server/Chat/Commands/OOCCommand.cs @@ -1,6 +1,5 @@ using Content.Server.Chat.Managers; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Chat.Commands @@ -14,7 +13,7 @@ internal sealed class OOCCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Commands/SayCommand.cs b/Content.Server/Chat/Commands/SayCommand.cs index 7c2125d8c1ce9f..273f908c9ab273 100644 --- a/Content.Server/Chat/Commands/SayCommand.cs +++ b/Content.Server/Chat/Commands/SayCommand.cs @@ -1,6 +1,5 @@ using Content.Server.Chat.Systems; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -15,7 +14,7 @@ internal sealed class SayCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Commands/SuicideCommand.cs b/Content.Server/Chat/Commands/SuicideCommand.cs index 389ff039bf0efd..c967ba78d7fa78 100644 --- a/Content.Server/Chat/Commands/SuicideCommand.cs +++ b/Content.Server/Chat/Commands/SuicideCommand.cs @@ -1,7 +1,6 @@ using Content.Server.GameTicking; using Content.Shared.Administration; using Content.Shared.Mind; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -18,7 +17,7 @@ internal sealed class SuicideCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteLine(Loc.GetString("shell-cannot-run-command-from-server")); return; diff --git a/Content.Server/Chat/Commands/WhisperCommand.cs b/Content.Server/Chat/Commands/WhisperCommand.cs index 41eba8b38428e1..c88e2519ee6ede 100644 --- a/Content.Server/Chat/Commands/WhisperCommand.cs +++ b/Content.Server/Chat/Commands/WhisperCommand.cs @@ -1,6 +1,5 @@ using Content.Server.Chat.Systems; using Content.Shared.Administration; -using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.Enums; @@ -15,7 +14,7 @@ internal sealed class WhisperCommand : IConsoleCommand public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (shell.Player is not IPlayerSession player) + if (shell.Player is not { } player) { shell.WriteError("This command cannot be run from the server."); return; diff --git a/Content.Server/Chat/Managers/ChatManager.cs b/Content.Server/Chat/Managers/ChatManager.cs index 88e143d24e37eb..59a9d305bd29c0 100644 --- a/Content.Server/Chat/Managers/ChatManager.cs +++ b/Content.Server/Chat/Managers/ChatManager.cs @@ -10,11 +10,9 @@ using Content.Shared.Chat; using Content.Shared.Database; using Content.Shared.Mind; -using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Network; using Robust.Shared.Player; -using Robust.Shared.Players; using Robust.Shared.Replays; using Robust.Shared.Utility; @@ -51,8 +49,8 @@ internal sealed class ChatManager : IChatManager private bool _oocEnabled = true; private bool _adminOocEnabled = true; - public Dictionary SenderKeys { get; } = new(); - public Dictionary> SenderEntities { get; } = new(); + public Dictionary SenderKeys { get; } = new(); + public Dictionary> SenderEntities { get; } = new(); public void Initialize() { @@ -79,7 +77,7 @@ private void OnAdminOocEnabledChanged(bool val) DispatchServerAnnouncement(Loc.GetString(val ? "chat-manager-admin-ooc-chat-enabled-message" : "chat-manager-admin-ooc-chat-disabled-message")); } - public void DeleteMessagesBy(IPlayerSession player) + public void DeleteMessagesBy(ICommonSession player) { var key = SenderKeys.GetValueOrDefault(player); var entities = SenderEntities.GetValueOrDefault(player) ?? new HashSet(); @@ -165,7 +163,7 @@ public void SendHookOOC(string sender, string message) /// The player sending the message. /// The message. /// The type of message. - public void TrySendOOCMessage(IPlayerSession player, string message, OOCChatType type) + public void TrySendOOCMessage(ICommonSession player, string message, OOCChatType type) { // Check if message exceeds the character limit if (message.Length > MaxMessageLength) @@ -189,7 +187,7 @@ public void TrySendOOCMessage(IPlayerSession player, string message, OOCChatType #region Private API - private void SendOOC(IPlayerSession player, string message) + private void SendOOC(ICommonSession player, string message) { if (_adminManager.IsAdmin(player)) { @@ -226,7 +224,7 @@ private void SendOOC(IPlayerSession player, string message) _adminLogger.Add(LogType.Chat, LogImpact.Low, $"OOC from {player:Player}: {message}"); } - private void SendAdminChat(IPlayerSession player, string message) + private void SendAdminChat(ICommonSession player, string message) { if (!_adminManager.IsAdmin(player)) { @@ -326,7 +324,7 @@ public void ChatMessageToAll(ChatChannel channel, string message, string wrapped } } - public bool MessageCharacterLimit(IPlayerSession? player, string message) + public bool MessageCharacterLimit(ICommonSession? player, string message) { var isOverLength = false; diff --git a/Content.Server/Chat/Managers/IChatManager.cs b/Content.Server/Chat/Managers/IChatManager.cs index 10103f011df2f7..5317b3054e4edd 100644 --- a/Content.Server/Chat/Managers/IChatManager.cs +++ b/Content.Server/Chat/Managers/IChatManager.cs @@ -1,8 +1,6 @@ using Content.Shared.Chat; -using Robust.Server.Player; using Robust.Shared.Network; using Robust.Shared.Player; -using Robust.Shared.Players; namespace Content.Server.Chat.Managers { @@ -12,12 +10,12 @@ public interface IChatManager /// Keys identifying messages sent by a specific player, used when sending /// ///